@plait/core 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +1 -0
  2. package/board/board.component.d.ts +37 -0
  3. package/core/base/detector.d.ts +7 -0
  4. package/core/element/element.component.d.ts +27 -0
  5. package/esm2020/board/board.component.mjs +211 -0
  6. package/esm2020/core/base/detector.mjs +2 -0
  7. package/esm2020/core/element/element.component.mjs +70 -0
  8. package/esm2020/interfaces/board.mjs +2 -0
  9. package/esm2020/interfaces/cursor.mjs +6 -0
  10. package/esm2020/interfaces/custom-types.mjs +5 -0
  11. package/esm2020/interfaces/element-context.mjs +2 -0
  12. package/esm2020/interfaces/element.mjs +2 -0
  13. package/esm2020/interfaces/graph.mjs +2 -0
  14. package/esm2020/interfaces/index.mjs +14 -0
  15. package/esm2020/interfaces/node.mjs +20 -0
  16. package/esm2020/interfaces/operation.mjs +7 -0
  17. package/esm2020/interfaces/path.mjs +139 -0
  18. package/esm2020/interfaces/plugin.mjs +2 -0
  19. package/esm2020/interfaces/point.mjs +2 -0
  20. package/esm2020/interfaces/selection.mjs +2 -0
  21. package/esm2020/interfaces/viewport.mjs +10 -0
  22. package/esm2020/plait-core.mjs +5 -0
  23. package/esm2020/plait.module.mjs +19 -0
  24. package/esm2020/plugins/create-board.mjs +42 -0
  25. package/esm2020/plugins/with-board.mjs +13 -0
  26. package/esm2020/plugins/with-selection.mjs +39 -0
  27. package/esm2020/public-api.mjs +11 -0
  28. package/esm2020/transfroms/general.mjs +139 -0
  29. package/esm2020/transfroms/index.mjs +11 -0
  30. package/esm2020/transfroms/node.mjs +36 -0
  31. package/esm2020/transfroms/selection.mjs +8 -0
  32. package/esm2020/transfroms/viewport.mjs +8 -0
  33. package/esm2020/utils/board.mjs +25 -0
  34. package/esm2020/utils/dom.mjs +22 -0
  35. package/esm2020/utils/environment.mjs +13 -0
  36. package/esm2020/utils/graph.mjs +11 -0
  37. package/esm2020/utils/helper.mjs +4 -0
  38. package/esm2020/utils/hotkeys.mjs +99 -0
  39. package/esm2020/utils/id-creator.mjs +11 -0
  40. package/esm2020/utils/index.mjs +10 -0
  41. package/esm2020/utils/math.mjs +37 -0
  42. package/esm2020/utils/weak-maps.mjs +6 -0
  43. package/fesm2015/plait-core.mjs +969 -0
  44. package/fesm2015/plait-core.mjs.map +1 -0
  45. package/fesm2020/plait-core.mjs +984 -0
  46. package/fesm2020/plait-core.mjs.map +1 -0
  47. package/interfaces/board.d.ts +32 -0
  48. package/interfaces/cursor.d.ts +5 -0
  49. package/interfaces/custom-types.d.ts +9 -0
  50. package/interfaces/element-context.d.ts +4 -0
  51. package/interfaces/element.d.ts +6 -0
  52. package/interfaces/graph.d.ts +6 -0
  53. package/interfaces/index.d.ts +13 -0
  54. package/interfaces/node.d.ts +13 -0
  55. package/interfaces/operation.d.ts +39 -0
  56. package/interfaces/path.d.ts +32 -0
  57. package/interfaces/plugin.d.ts +2 -0
  58. package/interfaces/point.d.ts +1 -0
  59. package/interfaces/selection.d.ts +5 -0
  60. package/interfaces/viewport.d.ts +13 -0
  61. package/package.json +31 -0
  62. package/plait-core.d.ts +5 -0
  63. package/plait.module.d.ts +9 -0
  64. package/plugins/create-board.d.ts +3 -0
  65. package/plugins/with-board.d.ts +2 -0
  66. package/plugins/with-selection.d.ts +2 -0
  67. package/public-api.d.ts +7 -0
  68. package/transfroms/general.d.ts +6 -0
  69. package/transfroms/index.d.ts +5 -0
  70. package/transfroms/node.d.ts +14 -0
  71. package/transfroms/selection.d.ts +7 -0
  72. package/transfroms/viewport.d.ts +7 -0
  73. package/utils/board.d.ts +10 -0
  74. package/utils/dom.d.ts +6 -0
  75. package/utils/environment.d.ts +7 -0
  76. package/utils/graph.d.ts +3 -0
  77. package/utils/helper.d.ts +1 -0
  78. package/utils/hotkeys.d.ts +32 -0
  79. package/utils/id-creator.d.ts +1 -0
  80. package/utils/index.d.ts +9 -0
  81. package/utils/math.d.ts +2 -0
  82. package/utils/weak-maps.d.ts +6 -0
@@ -0,0 +1,139 @@
1
+ import produce from 'immer';
2
+ export const Path = {
3
+ parent(path) {
4
+ if (path.length === 0) {
5
+ throw new Error(`Cannot get the parent path of the root path [${path}].`);
6
+ }
7
+ return path.slice(0, -1);
8
+ },
9
+ next(path) {
10
+ if (path.length === 0) {
11
+ throw new Error(`Cannot get the next path of a root path [${path}], because it has no next index.`);
12
+ }
13
+ const last = path[path.length - 1];
14
+ return path.slice(0, -1).concat(last + 1);
15
+ },
16
+ /**
17
+ * Check if a path is an ancestor of another.
18
+ */
19
+ isAncestor(path, another) {
20
+ return path.length < another.length && Path.compare(path, another) === 0;
21
+ },
22
+ /**
23
+ * Compare a path to another, returning an integer indicating whether the path
24
+ * was before, at, or after the other.
25
+ *
26
+ * Note: Two paths of unequal length can still receive a `0` result if one is
27
+ * directly above or below the other. If you want exact matching, use
28
+ * [[Path.equals]] instead.
29
+ */
30
+ compare(path, another) {
31
+ const min = Math.min(path.length, another.length);
32
+ for (let i = 0; i < min; i++) {
33
+ if (path[i] < another[i])
34
+ return -1;
35
+ if (path[i] > another[i])
36
+ return 1;
37
+ }
38
+ return 0;
39
+ },
40
+ /**
41
+ * Check if a path is exactly equal to another.
42
+ */
43
+ equals(path, another) {
44
+ return path.length === another.length && path.every((n, i) => n === another[i]);
45
+ },
46
+ /**
47
+ * Check if a path ends before one of the indexes in another.
48
+ */
49
+ endsBefore(path, another) {
50
+ const i = path.length - 1;
51
+ const as = path.slice(0, i);
52
+ const bs = another.slice(0, i);
53
+ const av = path[i];
54
+ const bv = another[i];
55
+ return Path.equals(as, bs) && av < bv;
56
+ },
57
+ /**
58
+ * Check if a path is a sibling of another.
59
+ */
60
+ isSibling(path, another) {
61
+ if (path.length !== another.length) {
62
+ return false;
63
+ }
64
+ const as = path.slice(0, -1);
65
+ const bs = another.slice(0, -1);
66
+ const al = path[path.length - 1];
67
+ const bl = another[another.length - 1];
68
+ return al !== bl && Path.equals(as, bs);
69
+ },
70
+ transform(path, operation) {
71
+ return produce(path, p => {
72
+ // PERF: Exit early if the operation is guaranteed not to have an effect.
73
+ if (!path || path?.length === 0) {
74
+ return;
75
+ }
76
+ if (p === null) {
77
+ return null;
78
+ }
79
+ switch (operation.type) {
80
+ case 'insert_node': {
81
+ const { path: op } = operation;
82
+ if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) {
83
+ p[op.length - 1] += 1;
84
+ }
85
+ break;
86
+ }
87
+ case 'remove_node': {
88
+ const { path: op } = operation;
89
+ if (Path.equals(op, p) || Path.isAncestor(op, p)) {
90
+ return null;
91
+ }
92
+ else if (Path.endsBefore(op, p)) {
93
+ p[op.length - 1] -= 1;
94
+ }
95
+ break;
96
+ }
97
+ case 'move_node': {
98
+ const { path: op, newPath: onp } = operation;
99
+ // If the old and new path are the same, it's a no-op.
100
+ if (Path.equals(op, onp)) {
101
+ return;
102
+ }
103
+ if (Path.isAncestor(op, p) || Path.equals(op, p)) {
104
+ const copy = onp.slice();
105
+ // op.length <= onp.length is different for slate
106
+ // resolve drag from [0, 0] to [0, 3] issue
107
+ if (Path.endsBefore(op, onp) && op.length <= onp.length) {
108
+ copy[op.length - 1] -= 1;
109
+ }
110
+ return copy.concat(p.slice(op.length));
111
+ }
112
+ else if (Path.isSibling(op, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) {
113
+ if (Path.endsBefore(op, p)) {
114
+ p[op.length - 1] -= 1;
115
+ }
116
+ else {
117
+ p[op.length - 1] += 1;
118
+ }
119
+ }
120
+ else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) {
121
+ if (Path.endsBefore(op, p)) {
122
+ p[op.length - 1] -= 1;
123
+ }
124
+ p[onp.length - 1] += 1;
125
+ }
126
+ else if (Path.endsBefore(op, p)) {
127
+ if (Path.equals(onp, p)) {
128
+ p[onp.length - 1] += 1;
129
+ }
130
+ p[op.length - 1] -= 1;
131
+ }
132
+ break;
133
+ }
134
+ }
135
+ return null;
136
+ });
137
+ }
138
+ };
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9pbnRlcmZhY2VzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sT0FBTyxDQUFDO0FBSzVCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNoQixNQUFNLENBQUMsSUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUM3RTtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQVU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLElBQUksa0NBQWtDLENBQUMsQ0FBQztTQUN2RztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRDs7T0FFRztJQUVILFVBQVUsQ0FBQyxJQUFVLEVBQUUsT0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsSUFBVSxFQUFFLE9BQWE7UUFDN0IsTUFBTSxHQUFHLEdB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QyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMxQjt5QkFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUNyQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzFCO3dCQUVELENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDekI7b0JBRUQsTUFBTTtpQkFDVDthQUNKO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9kdWNlIGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuXG5leHBvcnQgdHlwZSBQYXRoID0gbnVtYmVyW107XG5cbmV4cG9ydCBjb25zdCBQYXRoID0ge1xuICAgIHBhcmVudChwYXRoOiBQYXRoKTogUGF0aCB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBwYXJlbnQgcGF0aCBvZiB0aGUgcm9vdCBwYXRoIFske3BhdGh9XS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICB9LFxuICAgIG5leHQocGF0aDogUGF0aCk6IFBhdGgge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgbmV4dCBwYXRoIG9mIGEgcm9vdCBwYXRoIFske3BhdGh9XSwgYmVjYXVzZSBpdCBoYXMgbm8gbmV4dCBpbmRleC5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gcGF0aC5zbGljZSgwLCAtMSkuY29uY2F0KGxhc3QgKyAxKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBhbiBhbmNlc3RvciBvZiBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgaXNBbmNlc3RvcihwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA8IGFub3RoZXIubGVuZ3RoICYmIFBhdGguY29tcGFyZShwYXRoLCBhbm90aGVyKSA9PT0gMDtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENvbXBhcmUgYSBwYXRoIHRvIGFub3RoZXIsIHJldHVybmluZyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF0aFxuICAgICAqIHdhcyBiZWZvcmUsIGF0LCBvciBhZnRlciB0aGUgb3RoZXIuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUd28gcGF0aHMgb2YgdW5lcXVhbCBsZW5ndGggY2FuIHN0aWxsIHJlY2VpdmUgYSBgMGAgcmVzdWx0IGlmIG9uZSBpc1xuICAgICAqIGRpcmVjdGx5IGFib3ZlIG9yIGJlbG93IHRoZSBvdGhlci4gSWYgeW91IHdhbnQgZXhhY3QgbWF0Y2hpbmcsIHVzZVxuICAgICAqIFtbUGF0aC5lcXVhbHNdXSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGNvbXBhcmUocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IC0xIHwgMCB8IDEge1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihwYXRoLmxlbmd0aCwgYW5vdGhlci5sZW5ndGgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChwYXRoW2ldIDwgYW5vdGhlcltpXSkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKHBhdGhbaV0gPiBhbm90aGVyW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggaXMgZXhhY3RseSBlcXVhbCB0byBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgZXF1YWxzKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoID09PSBhbm90aGVyLmxlbmd0aCAmJiBwYXRoLmV2ZXJ5KChuLCBpKSA9PiBuID09PSBhbm90aGVyW2ldKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBlbmRzIGJlZm9yZSBvbmUgb2YgdGhlIGluZGV4ZXMgaW4gYW5vdGhlci5cbiAgICAgKi9cblxuICAgIGVuZHNCZWZvcmUocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpID0gcGF0aC5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBhcyA9IHBhdGguc2xpY2UoMCwgaSk7XG4gICAgICAgIGNvbnN0IGJzID0gYW5vdGhlci5zbGljZSgwLCBpKTtcbiAgICAgICAgY29uc3QgYXYgPSBwYXRoW2ldO1xuICAgICAgICBjb25zdCBidiA9IGFub3RoZXJbaV07XG4gICAgICAgIHJldHVybiBQYXRoLmVxdWFscyhhcywgYnMpICYmIGF2IDwgYnY7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggaXMgYSBzaWJsaW5nIG9mIGFub3RoZXIuXG4gICAgICovXG4gICAgaXNTaWJsaW5nKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoICE9PSBhbm90aGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXMgPSBwYXRoLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29uc3QgYnMgPSBhbm90aGVyLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29uc3QgYWwgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGJsID0gYW5vdGhlclthbm90aGVyLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gYWwgIT09IGJsICYmIFBhdGguZXF1YWxzKGFzLCBicyk7XG4gICAgfSxcbiAgICB0cmFuc2Zvcm0ocGF0aDogUGF0aCB8IG51bGwsIG9wZXJhdGlvbjogUGxhaXRPcGVyYXRpb24pOiBQYXRoIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBwcm9kdWNlKHBhdGgsIHAgPT4ge1xuICAgICAgICAgICAgLy8gUEVSRjogRXhpdCBlYXJseSBpZiB0aGUgb3BlcmF0aW9uIGlzIGd1YXJhbnRlZWQgbm90IHRvIGhhdmUgYW4gZWZmZWN0LlxuICAgICAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGg/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHAgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChvcGVyYXRpb24udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGg6IG9wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9wLCBwKSB8fCBQYXRoLmVuZHNCZWZvcmUob3AsIHApIHx8IFBhdGguaXNBbmNlc3RvcihvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGg6IG9wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9wLCBwKSB8fCBQYXRoLmlzQW5jZXN0b3Iob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AsIG5ld1BhdGg6IG9ucCB9ID0gb3BlcmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBvbGQgYW5kIG5ldyBwYXRoIGFyZSB0aGUgc2FtZSwgaXQncyBhIG5vLW9wLlxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIG9ucCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmlzQW5jZXN0b3Iob3AsIHApIHx8IFBhdGguZXF1YWxzKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29weSA9IG9ucC5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AubGVuZ3RoIDw9IG9ucC5sZW5ndGggaXMgZGlmZmVyZW50IGZvciBzbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2ZSBkcmFnIGZyb20gWzAsIDBdIHRvIFswLCAzXSBpc3N1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgb25wKSAmJiBvcC5sZW5ndGggPD0gb25wLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcHkuY29uY2F0KHAuc2xpY2Uob3AubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5pc1NpYmxpbmcob3AsIG9ucCkgJiYgKFBhdGguaXNBbmNlc3RvcihvbnAsIHApIHx8IFBhdGguZXF1YWxzKG9ucCwgcCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvbnAsIHApIHx8IFBhdGguZXF1YWxzKG9ucCwgcCkgfHwgUGF0aC5pc0FuY2VzdG9yKG9ucCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwW29ucC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvbnAsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvbnAubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi9ib2FyZCc7XG5cbmV4cG9ydCB0eXBlIFBsYWl0UGx1Z2luID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiBQbGFpdEJvYXJkO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy9wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUG9pbnQgPSBbbnVtYmVyLCBudW1iZXJdO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL2ludGVyZmFjZXMvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcG9pbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbiB7XG4gICAgYW5jaG9yOiBQb2ludDtcbiAgICBmb2N1czogUG9pbnQ7XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { isNullOrUndefined } from '../utils/helper';
2
+ export const Viewport = {
3
+ isViewport: (value) => {
4
+ return (!isNullOrUndefined(value.offsetX) &&
5
+ !isNullOrUndefined(value.offsetY) &&
6
+ !isNullOrUndefined(value.zoom) &&
7
+ !isNullOrUndefined(value.viewBackgroundColor));
8
+ }
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvaW50ZXJmYWNlcy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWlCcEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFzQjtJQUN2QyxVQUFVLEVBQUUsQ0FBQyxLQUFVLEVBQXFCLEVBQUU7UUFDMUMsT0FBTyxDQUNILENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNqQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQ2hELENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaGVscGVyJztcbmltcG9ydCB7IEV4dGVuZGVkVHlwZSB9IGZyb20gJy4vY3VzdG9tLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlVmlld3BvcnQge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBvZmZzZXRYOiBudW1iZXI7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIHpvb206IG51bWJlcjtcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFZpZXdwb3J0ID0gRXh0ZW5kZWRUeXBlPCdWaWV3cG9ydCcsIEJhc2VWaWV3cG9ydD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRJbnRlcmZhY2Uge1xuICAgIGlzVmlld3BvcnQ6ICh2YWx1ZTogYW55KSA9PiB2YWx1ZSBpcyBWaWV3cG9ydDtcbn1cblxuZXhwb3J0IGNvbnN0IFZpZXdwb3J0OiBWaWV3cG9ydEludGVyZmFjZSA9IHtcbiAgICBpc1ZpZXdwb3J0OiAodmFsdWU6IGFueSk6IHZhbHVlIGlzIFZpZXdwb3J0ID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICFpc051bGxPclVuZGVmaW5lZCh2YWx1ZS5vZmZzZXRYKSAmJlxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLm9mZnNldFkpICYmXG4gICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuem9vbSkgJiZcbiAgICAgICAgICAgICFpc051bGxPclVuZGVmaW5lZCh2YWx1ZS52aWV3QmFja2dyb3VuZENvbG9yKVxuICAgICAgICApO1xuICAgIH1cbn07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9wbGFpdC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { BrowserModule } from '@angular/platform-browser';
3
+ import { PlaitBoardComponent } from './board/board.component';
4
+ import { PlaitElementComponent } from './core/element/element.component';
5
+ import * as i0 from "@angular/core";
6
+ export class PlaitModule {
7
+ }
8
+ PlaitModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ PlaitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitModule, declarations: [PlaitBoardComponent, PlaitElementComponent], imports: [BrowserModule], exports: [PlaitBoardComponent, PlaitElementComponent] });
10
+ PlaitModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitModule, imports: [[BrowserModule]] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlaitModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [PlaitBoardComponent, PlaitElementComponent],
15
+ imports: [BrowserModule],
16
+ exports: [PlaitBoardComponent, PlaitElementComponent]
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3BsYWl0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLFdBQVc7O3lHQUFYLFdBQVc7MEdBQVgsV0FBVyxpQkFKTCxtQkFBbUIsRUFBRSxxQkFBcUIsYUFDL0MsYUFBYSxhQUNiLG1CQUFtQixFQUFFLHFCQUFxQjswR0FFM0MsV0FBVyxZQUhYLENBQUMsYUFBYSxDQUFDOzRGQUdmLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUM7b0JBQzFELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFBsYWl0Qm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvcmUvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbUGxhaXRCb2FyZENvbXBvbmVudCwgUGxhaXRFbGVtZW50Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZV0sXG4gICAgZXhwb3J0czogW1BsYWl0Qm9hcmRDb21wb25lbnQsIFBsYWl0RWxlbWVudENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhaXRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { FLUSHING } from '../utils/weak-maps';
2
+ import { Transforms } from '../transfroms';
3
+ import { BaseCursorStatus } from '../interfaces/cursor';
4
+ export function createBoard(host, children) {
5
+ const board = {
6
+ host,
7
+ viewport: {
8
+ offsetX: 0,
9
+ offsetY: 0,
10
+ zoom: 1,
11
+ viewBackgroundColor: '#000'
12
+ },
13
+ children,
14
+ operations: [],
15
+ selection: { anchor: [0, -1], focus: [-1, -1] },
16
+ cursor: BaseCursorStatus.select,
17
+ apply: (operation) => {
18
+ board.operations.push(operation);
19
+ Transforms.transform(board, operation);
20
+ if (!FLUSHING.get(board)) {
21
+ FLUSHING.set(board, true);
22
+ Promise.resolve().then(() => {
23
+ FLUSHING.set(board, false);
24
+ board.onChange();
25
+ board.operations = [];
26
+ });
27
+ }
28
+ },
29
+ onChange: () => { },
30
+ mousedown: (event) => { },
31
+ mouseup: (event) => { },
32
+ mousemove: (event) => { },
33
+ keydown: (event) => { },
34
+ keyup: (event) => { },
35
+ dblclick: (event) => { },
36
+ drawElement: (context) => [],
37
+ redrawElement: (context, changes) => [],
38
+ destroyElement: () => { }
39
+ };
40
+ return board;
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3BsdWdpbnMvY3JlYXRlLWJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBZ0IsRUFBRSxRQUF3QjtJQUNsRSxNQUFNLEtBQUssR0FBZTtRQUN0QixJQUFJO1FBQ0osUUFBUSxFQUFFO1lBQ04sT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDO1lBQ1AsbUJBQW1CLEVBQUUsTUFBTTtTQUM5QjtRQUNELFFBQVE7UUFDUixVQUFVLEVBQUUsRUFBRTtRQUNkLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDL0MsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU07UUFDL0IsS0FBSyxFQUFFLENBQUMsU0FBeUIsRUFBRSxFQUFFO1lBQ2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWpDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRXZDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFMUIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3hCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUMzQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pCLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQztRQUNELFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1FBQ2xCLFNBQVMsRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDcEMsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNsQyxTQUFTLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDckMsS0FBSyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUNuQyxRQUFRLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUUsR0FBRSxDQUFDO1FBQ25DLFdBQVcsRUFBRSxDQUFDLE9BQTRCLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDakQsYUFBYSxFQUFFLENBQUMsT0FBNEIsRUFBRSxPQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQzNFLGNBQWMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0tBQzNCLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50Q29udGV4dCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudC1jb250ZXh0JztcbmltcG9ydCB7IFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZMVVNISU5HIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zyb21zJztcbmltcG9ydCB7IEJhc2VDdXJzb3JTdGF0dXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2N1cnNvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb2FyZChob3N0OiBTVkdFbGVtZW50LCBjaGlsZHJlbjogUGxhaXRFbGVtZW50W10pOiBQbGFpdEJvYXJkIHtcbiAgICBjb25zdCBib2FyZDogUGxhaXRCb2FyZCA9IHtcbiAgICAgICAgaG9zdCxcbiAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgICAgem9vbTogMSxcbiAgICAgICAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6ICcjMDAwJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgb3BlcmF0aW9uczogW10sXG4gICAgICAgIHNlbGVjdGlvbjogeyBhbmNob3I6IFswLCAtMV0sIGZvY3VzOiBbLTEsIC0xXSB9LFxuICAgICAgICBjdXJzb3I6IEJhc2VDdXJzb3JTdGF0dXMuc2VsZWN0LFxuICAgICAgICBhcHBseTogKG9wZXJhdGlvbjogUGxhaXRPcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIGJvYXJkLm9wZXJhdGlvbnMucHVzaChvcGVyYXRpb24pO1xuXG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnRyYW5zZm9ybShib2FyZCwgb3BlcmF0aW9uKTtcblxuICAgICAgICAgICAgaWYgKCFGTFVTSElORy5nZXQoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgRkxVU0hJTkcuc2V0KGJvYXJkLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBGTFVTSElORy5zZXQoYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQub25DaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYm9hcmQub3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gICAgICAgIG1vdXNlZG93bjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgbW91c2V1cDogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7fSxcbiAgICAgICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHt9LFxuICAgICAgICBrZXlkb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHt9LFxuICAgICAgICBrZXl1cDogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7fSxcbiAgICAgICAgZGJsY2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4ge30sXG4gICAgICAgIGRyYXdFbGVtZW50OiAoY29udGV4dDogUGxhaXRFbGVtZW50Q29udGV4dCkgPT4gW10sXG4gICAgICAgIHJlZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdEVsZW1lbnRDb250ZXh0LCBjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSA9PiBbXSxcbiAgICAgICAgZGVzdHJveUVsZW1lbnQ6ICgpID0+IHt9XG4gICAgfTtcbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { BOARD_TO_ON_CHANGE } from '../utils/weak-maps';
2
+ export function withBoard(board) {
3
+ const { onChange, mouseup } = board;
4
+ board.onChange = () => {
5
+ const onContextChange = BOARD_TO_ON_CHANGE.get(board);
6
+ if (onContextChange) {
7
+ onContextChange();
8
+ }
9
+ onChange();
10
+ };
11
+ return board;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9wbHVnaW5zL3dpdGgtYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHeEQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFpQjtJQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVwQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEQsSUFBSSxlQUFlLEVBQUU7WUFDakIsZUFBZSxFQUFFLENBQUM7U0FDckI7UUFFRCxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCT0FSRF9UT19PTl9DSEFOR0UgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEJvYXJkKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgbW91c2V1cCB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb25Db250ZXh0Q2hhbmdlID0gQk9BUkRfVE9fT05fQ0hBTkdFLmdldChib2FyZCk7XG5cbiAgICAgICAgaWYgKG9uQ29udGV4dENoYW5nZSkge1xuICAgICAgICAgICAgb25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { BaseCursorStatus } from '../interfaces/cursor';
2
+ import { Transforms } from '../transfroms';
3
+ import { toPoint } from '../utils/dom';
4
+ import { toRectangleClient } from '../utils/graph';
5
+ export function withSelection(board) {
6
+ const { mousedown, mousemove, mouseup } = board;
7
+ let start = null;
8
+ let end = null;
9
+ board.mousedown = (event) => {
10
+ // avoid select text when double click svg
11
+ if (!(event.target instanceof HTMLElement && event.target.closest('.richtext'))) {
12
+ event.preventDefault();
13
+ }
14
+ if (board.cursor === BaseCursorStatus.select) {
15
+ start = toPoint(event.x, event.y, board.host);
16
+ }
17
+ mousedown(event);
18
+ };
19
+ board.mousemove = (event) => {
20
+ const movedTarget = toPoint(event.x, event.y, board.host);
21
+ if (start) {
22
+ const rectangleClient = toRectangleClient([start, movedTarget]);
23
+ if (start && Math.hypot(rectangleClient.width, rectangleClient.height) > 5) {
24
+ end = movedTarget;
25
+ }
26
+ }
27
+ mousemove(event);
28
+ };
29
+ board.mouseup = (event) => {
30
+ if (start) {
31
+ Transforms.setSelection(board, { anchor: start, focus: start });
32
+ }
33
+ start = null;
34
+ end = null;
35
+ mouseup(event);
36
+ };
37
+ return board;
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvcGx1Z2lucy93aXRoLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsTUFBTSxVQUFVLGFBQWEsQ0FBdUIsS0FBUTtJQUN4RCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFaEQsSUFBSSxLQUFLLEdBQWlCLElBQUksQ0FBQztJQUMvQixJQUFJLEdBQUcsR0FBaUIsSUFBSSxDQUFDO0lBRTdCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLFlBQVksV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDN0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUMxQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakQ7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hFLEdBQUcsR0FBRyxXQUFXLENBQUM7YUFDckI7U0FDSjtRQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO1FBQ2xDLElBQUksS0FBSyxFQUFFO1lBQ1AsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNiLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDdXJzb3JTdGF0dXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2N1cnNvcic7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZnJvbXMnO1xuaW1wb3J0IHsgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB0b1JlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL3V0aWxzL2dyYXBoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZWxlY3Rpb248VCBleHRlbmRzIFBsYWl0Qm9hcmQ+KGJvYXJkOiBUKSB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgbW91c2V1cCB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAvLyBhdm9pZCBzZWxlY3QgdGV4dCB3aGVuIGRvdWJsZSBjbGljayBzdmdcbiAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5yaWNodGV4dCcpKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9hcmQuY3Vyc29yID09PSBCYXNlQ3Vyc29yU3RhdHVzLnNlbGVjdCkge1xuICAgICAgICAgICAgc3RhcnQgPSB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIGJvYXJkLmhvc3QpO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZFRhcmdldCA9IHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgYm9hcmQuaG9zdCk7XG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlQ2xpZW50ID0gdG9SZWN0YW5nbGVDbGllbnQoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIE1hdGguaHlwb3QocmVjdGFuZ2xlQ2xpZW50LndpZHRoLCByZWN0YW5nbGVDbGllbnQuaGVpZ2h0KSA+IDUpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IHN0YXJ0IH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgICAgbW91c2V1cChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Public API Surface of plait
3
+ */
4
+ export * from './board/board.component';
5
+ export * from './plait.module';
6
+ export * from './utils';
7
+ export * from './transfroms';
8
+ export * from './interfaces';
9
+ export * from './core/base/detector';
10
+ export * from './core/element/element.component';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcGxhaXRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3BsYWl0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmcm9tcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2Jhc2UvZGV0ZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,139 @@
1
+ import { createDraft, finishDraft, isDraft } from 'immer';
2
+ import { Viewport } from '../interfaces/viewport';
3
+ import { PlaitNode } from '../interfaces/node';
4
+ import { Path } from '../interfaces/path';
5
+ const applyToDraft = (board, selection, viewport, op) => {
6
+ switch (op.type) {
7
+ case 'insert_node': {
8
+ const { path, node } = op;
9
+ const parent = PlaitNode.parent(board, path);
10
+ const index = path[path.length - 1];
11
+ if (!parent.children || index > parent.children.length) {
12
+ throw new Error(`Cannot apply an "insert_node" operation at path [${path}] because the destination is past the end of the node.`);
13
+ }
14
+ parent.children.splice(index, 0, node);
15
+ break;
16
+ }
17
+ case 'remove_node': {
18
+ const { path } = op;
19
+ const parent = PlaitNode.parent(board, path);
20
+ const index = path[path.length - 1];
21
+ if (!parent.children || index > parent.children.length) {
22
+ throw new Error(`Cannot apply an "insert_node" operation at path [${path}] because the destination is past the end of the node.`);
23
+ }
24
+ parent.children.splice(index, 1);
25
+ break;
26
+ }
27
+ case 'move_node': {
28
+ const { path, newPath } = op;
29
+ if (Path.isAncestor(path, newPath)) {
30
+ throw new Error(`Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`);
31
+ }
32
+ const node = PlaitNode.get(board, path);
33
+ const parent = PlaitNode.parent(board, path);
34
+ const index = path[path.length - 1];
35
+ // This is tricky, but since the `path` and `newPath` both refer to
36
+ // the same snapshot in time, there's a mismatch. After either
37
+ // removing the original position, the second step's path can be out
38
+ // of date. So instead of using the `op.newPath` directly, we
39
+ // transform `op.path` to ascertain what the `newPath` would be after
40
+ // the operation was applied.
41
+ parent.children?.splice(index, 1);
42
+ const truePath = Path.transform(path, op);
43
+ const newParent = PlaitNode.get(board, Path.parent(truePath));
44
+ const newIndex = truePath[truePath.length - 1];
45
+ newParent.children?.splice(newIndex, 0, node);
46
+ break;
47
+ }
48
+ case 'set_node': {
49
+ const { path, properties, newProperties } = op;
50
+ if (path.length === 0) {
51
+ throw new Error(`Cannot set properties on the root node!`);
52
+ }
53
+ const node = PlaitNode.get(board, path);
54
+ for (const key in newProperties) {
55
+ const value = newProperties[key];
56
+ if (value == null) {
57
+ delete node[key];
58
+ }
59
+ else {
60
+ node[key] = value;
61
+ }
62
+ }
63
+ // properties that were previously defined, but are now missing, must be deleted
64
+ for (const key in properties) {
65
+ if (!newProperties.hasOwnProperty(key)) {
66
+ delete node[key];
67
+ }
68
+ }
69
+ break;
70
+ }
71
+ case 'set_viewport': {
72
+ const { newProperties } = op;
73
+ if (newProperties == null) {
74
+ viewport = newProperties;
75
+ }
76
+ else {
77
+ if (viewport == null) {
78
+ if (!Viewport.isViewport(newProperties)) {
79
+ throw new Error(`Cannot apply an incomplete "set_viewport" operation properties ${JSON.stringify(newProperties)} when there is no current viewport.`);
80
+ }
81
+ viewport = { ...newProperties };
82
+ }
83
+ for (const key in newProperties) {
84
+ const value = newProperties[key];
85
+ if (value == null) {
86
+ delete viewport[key];
87
+ }
88
+ else {
89
+ viewport[key] = value;
90
+ }
91
+ }
92
+ }
93
+ break;
94
+ }
95
+ case 'set_selection': {
96
+ const { newProperties } = op;
97
+ if (newProperties == null) {
98
+ selection = newProperties;
99
+ }
100
+ else {
101
+ if (selection === null) {
102
+ selection = op.newProperties;
103
+ }
104
+ else {
105
+ selection.anchor = newProperties.anchor;
106
+ selection.focus = newProperties.focus;
107
+ }
108
+ }
109
+ break;
110
+ }
111
+ }
112
+ return { selection, viewport };
113
+ };
114
+ export const GeneralTransforms = {
115
+ /**
116
+ * Transform the board by an operation.
117
+ */
118
+ transform(board, op) {
119
+ board.children = createDraft(board.children);
120
+ let viewport = board.viewport && createDraft(board.viewport);
121
+ let selection = board.selection && createDraft(board.selection);
122
+ try {
123
+ const state = applyToDraft(board, selection, viewport, op);
124
+ viewport = state.viewport;
125
+ selection = state.selection;
126
+ }
127
+ finally {
128
+ board.children = finishDraft(board.children);
129
+ if (selection) {
130
+ board.selection = isDraft(selection) ? finishDraft(selection) : selection;
131
+ }
132
+ else {
133
+ board.selection = null;
134
+ }
135
+ board.viewport = isDraft(viewport) ? finishDraft(viewport) : viewport;
136
+ }
137
+ }
138
+ };
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy90cmFuc2Zyb21zL2dlbmVyYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTTFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBaUIsRUFBRSxTQUEyQixFQUFFLFFBQWtCLEVBQUUsRUFBa0IsRUFBRSxFQUFFO0lBQzVHLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtRQUNiLEtBQUssYUFBYSxDQUFDLENBQUM7WUFDaEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNYLG9EQUFvRCxJQUFJLHdEQUF3RCxDQUNuSCxDQUFDO2FBQ0w7WUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE1BQU07U0FDVDtRQUNELEtBQUssYUFBYSxDQUFDLENBQUM7WUFDaEIsTUFB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Q0FBRSxXQUFXLENBQUMsUUFBUSxDQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztTQUN2RjtJQUNMLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBjcmVhdGVEcmFmdCwgZmluaXNoRHJhZnQsIGlzRHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgQW5jZXN0b3IsIFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmFsVHJhbnNmb3JtcyB7XG4gICAgdHJhbnNmb3JtOiAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wOiBQbGFpdE9wZXJhdGlvbikgPT4gdm9pZDtcbn1cblxuY29uc3QgYXBwbHlUb0RyYWZ0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwsIHZpZXdwb3J0OiBWaWV3cG9ydCwgb3A6IFBsYWl0T3BlcmF0aW9uKSA9PiB7XG4gICAgc3dpdGNoIChvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2luc2VydF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBub2RlIH0gPSBvcDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuIHx8IGluZGV4ID4gcGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBhcHBseSBhbiBcImluc2VydF9ub2RlXCIgb3BlcmF0aW9uIGF0IHBhdGggWyR7cGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgbm9kZS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgbm9kZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZW1vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCB9ID0gb3A7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUucGFyZW50KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBpbmRleCA+IHBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gXCJpbnNlcnRfbm9kZVwiIG9wZXJhdGlvbiBhdCBwYXRoIFske3BhdGh9XSBiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIG5vZGUuYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0aCwgbmV3UGF0aCB9ID0gb3A7XG5cbiAgICAgICAgICAgIGlmIChQYXRoLmlzQW5jZXN0b3IocGF0aCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBtb3ZlIGEgcGF0aCBbJHtwYXRofV0gdG8gbmV3IHBhdGggWyR7bmV3UGF0aH1dIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGlzIGluc2lkZSBpdHNlbGYuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5LCBidXQgc2luY2UgdGhlIGBwYXRoYCBhbmQgYG5ld1BhdGhgIGJvdGggcmVmZXIgdG9cbiAgICAgICAgICAgIC8vIHRoZSBzYW1lIHNuYXBzaG90IGluIHRpbWUsIHRoZXJlJ3MgYSBtaXNtYXRjaC4gQWZ0ZXIgZWl0aGVyXG4gICAgICAgICAgICAvLyByZW1vdmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb24sIHRoZSBzZWNvbmQgc3RlcCdzIHBhdGggY2FuIGJlIG91dFxuICAgICAgICAgICAgLy8gb2YgZGF0ZS4gU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgYG9wLm5ld1BhdGhgIGRpcmVjdGx5LCB3ZVxuICAgICAgICAgICAgLy8gdHJhbnNmb3JtIGBvcC5wYXRoYCB0byBhc2NlcnRhaW4gd2hhdCB0aGUgYG5ld1BhdGhgIHdvdWxkIGJlIGFmdGVyXG4gICAgICAgICAgICAvLyB0aGUgb3BlcmF0aW9uIHdhcyBhcHBsaWVkLlxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuPy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgY29uc3QgdHJ1ZVBhdGggPSBQYXRoLnRyYW5zZm9ybShwYXRoLCBvcCkhO1xuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wYXJlbnQodHJ1ZVBhdGgpKSBhcyBBbmNlc3RvcjtcbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdHJ1ZVBhdGhbdHJ1ZVBhdGgubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIG5ld1BhcmVudC5jaGlsZHJlbj8uc3BsaWNlKG5ld0luZGV4LCAwLCBub2RlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3NldF9ub2RlJzoge1xuICAgICAgICAgICAgY29uc3QgeyBwYXRoLCBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcblxuICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IHByb3BlcnRpZXMgb24gdGhlIHJvb3Qgbm9kZSFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLCBidXQgYXJlIG5vdyBtaXNzaW5nLCBtdXN0IGJlIGRlbGV0ZWRcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3ZpZXdwb3J0Jzoge1xuICAgICAgICAgICAgY29uc3QgeyBuZXdQcm9wZXJ0aWVzIH0gPSBvcDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0aWVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IG5ld1Byb3BlcnRpZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVmlld3BvcnQuaXNWaWV3cG9ydChuZXdQcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYW5ub3QgYXBwbHkgYW4gaW5jb21wbGV0ZSBcInNldF92aWV3cG9ydFwiIG9wZXJhdGlvbiBwcm9wZXJ0aWVzICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSB3aGVuIHRoZXJlIGlzIG5vIGN1cnJlbnQgdmlld3BvcnQuYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydCA9IHsgLi4ubmV3UHJvcGVydGllcyB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXdQcm9wZXJ0aWVzW2tleV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2aWV3cG9ydFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2V0X3NlbGVjdGlvbic6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV3UHJvcGVydGllcyB9ID0gb3A7XG4gICAgICAgICAgICBpZiAobmV3UHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gbmV3UHJvcGVydGllcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBvcC5uZXdQcm9wZXJ0aWVzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3IgPSBuZXdQcm9wZXJ0aWVzLmFuY2hvcjtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLmZvY3VzID0gbmV3UHJvcGVydGllcy5mb2N1cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBzZWxlY3Rpb24sIHZpZXdwb3J0IH07XG59O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhbFRyYW5zZm9ybXM6IEdlbmVyYWxUcmFuc2Zvcm1zID0ge1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSB0aGUgYm9hcmQgYnkgYW4gb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybShib2FyZDogUGxhaXRCb2FyZCwgb3A6IFBsYWl0T3BlcmF0aW9uKTogdm9pZCB7XG4gICAgICAgIGJvYXJkLmNoaWxkcmVuID0gY3JlYXRlRHJhZnQoYm9hcmQuY2hpbGRyZW4pO1xuICAgICAgICBsZXQgdmlld3BvcnQgPSBib2FyZC52aWV3cG9ydCAmJiBjcmVhdGVEcmFmdChib2FyZC52aWV3cG9ydCk7XG4gICAgICAgIGxldCBzZWxlY3Rpb24gPSBib2FyZC5zZWxlY3Rpb24gJiYgY3JlYXRlRHJhZnQoYm9hcmQuc2VsZWN0aW9uKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBhcHBseVRvRHJhZnQoYm9hcmQsIHNlbGVjdGlvbiwgdmlld3BvcnQsIG9wKTtcbiAgICAgICAgICAgIHZpZXdwb3J0ID0gc3RhdGUudmlld3BvcnQ7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSBzdGF0ZS5zZWxlY3Rpb247XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBib2FyZC5jaGlsZHJlbiA9IGZpbmlzaERyYWZ0KGJvYXJkLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IGlzRHJhZnQoc2VsZWN0aW9uKSA/IChmaW5pc2hEcmFmdChzZWxlY3Rpb24pIGFzIFNlbGVjdGlvbikgOiBzZWxlY3Rpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJvYXJkLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib2FyZC52aWV3cG9ydCA9IGlzRHJhZnQodmlld3BvcnQpID8gKGZpbmlzaERyYWZ0KHZpZXdwb3J0KSBhcyBWaWV3cG9ydCkgOiB2aWV3cG9ydDtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { GeneralTransforms } from './general';
2
+ import { NodeTransforms } from './node';
3
+ import { SelectionTransforms } from './selection';
4
+ import { ViewportTransforms } from './viewport';
5
+ export const Transforms = {
6
+ ...GeneralTransforms,
7
+ ...ViewportTransforms,
8
+ ...SelectionTransforms,
9
+ ...NodeTransforms
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmcm9tcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBa0Y7SUFDckcsR0FBRyxpQkFBaUI7SUFDcEIsR0FBRyxrQkFBa0I7SUFDckIsR0FBRyxtQkFBbUI7SUFDdEIsR0FBRyxjQUFjO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsVHJhbnNmb3JtcyB9IGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgeyBOb2RlVHJhbnNmb3JtcyB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25UcmFuc2Zvcm1zIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmlld3BvcnRUcmFuc2Zvcm1zIH0gZnJvbSAnLi92aWV3cG9ydCc7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2Zvcm1zOiBHZW5lcmFsVHJhbnNmb3JtcyAmIFZpZXdwb3J0VHJhbnNmb3JtcyAmIFNlbGVjdGlvblRyYW5zZm9ybXMgJiBOb2RlVHJhbnNmb3JtcyA9IHtcbiAgICAuLi5HZW5lcmFsVHJhbnNmb3JtcyxcbiAgICAuLi5WaWV3cG9ydFRyYW5zZm9ybXMsXG4gICAgLi4uU2VsZWN0aW9uVHJhbnNmb3JtcyxcbiAgICAuLi5Ob2RlVHJhbnNmb3Jtc1xufTtcbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { PlaitNode } from '../interfaces/node';
2
+ export function insertNode(board, node, path) {
3
+ const operation = { type: 'insert_node', node, path };
4
+ board.apply(operation);
5
+ }
6
+ export function setNode(board, props, path) {
7
+ const properties = {};
8
+ const newProperties = {};
9
+ const node = PlaitNode.get(board, path);
10
+ for (const k in props) {
11
+ if (node[k] !== props[k]) {
12
+ if (node.hasOwnProperty(k)) {
13
+ properties[k] = node[k];
14
+ }
15
+ if (props[k] != null)
16
+ newProperties[k] = props[k];
17
+ }
18
+ }
19
+ const operation = { type: 'set_node', properties, newProperties, path };
20
+ board.apply(operation);
21
+ }
22
+ export function removeNode(board, path) {
23
+ const operation = { type: 'remove_node', path };
24
+ board.apply(operation);
25
+ }
26
+ export function moveNode(board, path, newPath) {
27
+ const operation = { type: 'move_node', path, newPath };
28
+ board.apply(operation);
29
+ }
30
+ export const NodeTransforms = {
31
+ insertNode,
32
+ setNode,
33
+ removeNode,
34
+ moveNode
35
+ };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy90cmFuc2Zyb21zL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRy9DLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBaUIsRUFBRSxJQUFlLEVBQUUsSUFBVTtJQUNyRSxNQUFNLFNBQVMsR0FBd0IsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMzRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQWlCLEVBQUUsS0FBeUIsRUFBRSxJQUFVO0lBQzVFLE1BQU0sVUFBVSxHQUF1QixFQUFFLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQXVCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN4QixVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtnQkFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO0tBQ0o7SUFDRCxNQUFNLFNBQVMsR0FBcUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUYsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFpQixFQUFFLElBQVU7SUFDcEQsTUFBTSxTQUFTLEdBQXdCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWlCLEVBQUUsSUFBVSxFQUFFLE9BQWE7SUFDakUsTUFBTSxTQUFTLEdBQXNCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDMUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBU0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUMxQyxVQUFVO0lBQ1YsT0FBTztJQUNQLFVBQVU7SUFDVixRQUFRO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluc2VydE5vZGVPcGVyYXRpb24sIE1vdmVOb2RlT3BlcmF0aW9uLCBSZW1vdmVOb2RlT3BlcmF0aW9uLCBTZXROb2RlT3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9vcGVyYXRpb24nO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BhdGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0Tm9kZShib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogUGxhaXROb2RlLCBwYXRoOiBQYXRoKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBJbnNlcnROb2RlT3BlcmF0aW9uID0geyB0eXBlOiAnaW5zZXJ0X25vZGUnLCBub2RlLCBwYXRoIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIHByb3BzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4sIHBhdGg6IFBhdGgpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4gPSB7fTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzOiBQYXJ0aWFsPFBsYWl0Tm9kZT4gPSB7fTtcbiAgICBjb25zdCBub2RlID0gUGxhaXROb2RlLmdldChib2FyZCwgcGF0aCk7XG4gICAgZm9yIChjb25zdCBrIGluIHByb3BzKSB7XG4gICAgICAgIGlmIChub2RlW2tdICE9PSBwcm9wc1trXSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2tdID0gbm9kZVtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wc1trXSAhPSBudWxsKSBuZXdQcm9wZXJ0aWVzW2tdID0gcHJvcHNba107XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgb3BlcmF0aW9uOiBTZXROb2RlT3BlcmF0aW9uID0geyB0eXBlOiAnc2V0X25vZGUnLCBwcm9wZXJ0aWVzLCBuZXdQcm9wZXJ0aWVzLCBwYXRoIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IFJlbW92ZU5vZGVPcGVyYXRpb24gPSB7IHR5cGU6ICdyZW1vdmVfbm9kZScsIHBhdGggfTtcbiAgICBib2FyZC5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZU5vZGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhdGg6IFBhdGgsIG5ld1BhdGg6IFBhdGgpIHtcbiAgICBjb25zdCBvcGVyYXRpb246IE1vdmVOb2RlT3BlcmF0aW9uID0geyB0eXBlOiAnbW92ZV9ub2RlJywgcGF0aCwgbmV3UGF0aCB9O1xuICAgIGJvYXJkLmFwcGx5KG9wZXJhdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVRyYW5zZm9ybXMge1xuICAgIGluc2VydE5vZGU6IChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogUGxhaXROb2RlLCBwYXRoOiBQYXRoKSA9PiB2b2lkO1xuICAgIHNldE5vZGU6IChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogUGFydGlhbDxQbGFpdE5vZGU+LCBwYXRoOiBQYXRoKSA9PiB2b2lkO1xuICAgIHJlbW92ZU5vZGU6IChib2FyZDogUGxhaXRCb2FyZCwgcGF0aDogUGF0aCkgPT4gdm9pZDtcbiAgICBtb3ZlTm9kZTogKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoLCBuZXdQYXRoOiBQYXRoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTm9kZVRyYW5zZm9ybXM6IE5vZGVUcmFuc2Zvcm1zID0ge1xuICAgIGluc2VydE5vZGUsXG4gICAgc2V0Tm9kZSxcbiAgICByZW1vdmVOb2RlLFxuICAgIG1vdmVOb2RlXG59O1xuIl19
@@ -0,0 +1,8 @@
1
+ export function setSelection(board, selection) {
2
+ const operation = { type: 'set_selection', properties: board.selection, newProperties: selection };
3
+ board.apply(operation);
4
+ }
5
+ export const SelectionTransforms = {
6
+ setSelection
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3RyYW5zZnJvbXMvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUIsRUFBRSxTQUEyQjtJQUN2RSxNQUFNLFNBQVMsR0FBMEIsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMxSCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFNRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBd0I7SUFDcEQsWUFBWTtDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXRTZWxlY3Rpb25PcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogU2V0U2VsZWN0aW9uT3BlcmF0aW9uID0geyB0eXBlOiAnc2V0X3NlbGVjdGlvbicsIHByb3BlcnRpZXM6IGJvYXJkLnNlbGVjdGlvbiwgbmV3UHJvcGVydGllczogc2VsZWN0aW9uIH07XG4gICAgYm9hcmQuYXBwbHkob3BlcmF0aW9uKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25UcmFuc2Zvcm1zIHtcbiAgICBzZXRTZWxlY3Rpb246IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgU2VsZWN0aW9uVHJhbnNmb3JtczogU2VsZWN0aW9uVHJhbnNmb3JtcyA9IHtcbiAgICBzZXRTZWxlY3Rpb25cbn07XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export function setViewport(board, viewport) {
2
+ const operation = { type: 'set_viewport', properties: board.viewport, newProperties: viewport };
3
+ board.apply(operation);
4
+ }
5
+ export const ViewportTransforms = {
6
+ setViewport
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFpdC9zcmMvdHJhbnNmcm9tcy92aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQWlCLEVBQUUsUUFBa0I7SUFDN0QsTUFBTSxTQUFTLEdBQXlCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDdEgsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBTUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXVCO0lBQ2xELFdBQVc7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2V0Vmlld3BvcnRPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL29wZXJhdGlvbic7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0Vmlld3BvcnQoYm9hcmQ6IFBsYWl0Qm9hcmQsIHZpZXdwb3J0OiBWaWV3cG9ydCkge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogU2V0Vmlld3BvcnRPcGVyYXRpb24gPSB7IHR5cGU6ICdzZXRfdmlld3BvcnQnLCBwcm9wZXJ0aWVzOiBib2FyZC52aWV3cG9ydCwgbmV3UHJvcGVydGllczogdmlld3BvcnQgfTtcbiAgICBib2FyZC5hcHBseShvcGVyYXRpb24pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0VHJhbnNmb3JtcyB7XG4gICAgc2V0Vmlld3BvcnQ6IChib2FyZDogUGxhaXRCb2FyZCwgdmlld3BvcnQ6IFZpZXdwb3J0KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgVmlld3BvcnRUcmFuc2Zvcm1zOiBWaWV3cG9ydFRyYW5zZm9ybXMgPSB7XG4gICAgc2V0Vmlld3BvcnRcbn07XG4iXX0=