@oh-just-another/state 0.62.0 → 0.63.0

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 (259) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/actions/registry.js +1 -1
  4. package/dist/actions/registry.js.map +1 -1
  5. package/dist/constants.d.ts +162 -8
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +132 -8
  8. package/dist/constants.js.map +1 -1
  9. package/dist/editor/animation-scene.d.ts.map +1 -1
  10. package/dist/editor/animation-scene.js +27 -39
  11. package/dist/editor/animation-scene.js.map +1 -1
  12. package/dist/editor/animation.js +1 -1
  13. package/dist/editor/animation.js.map +1 -1
  14. package/dist/editor/applies/arrange-units.d.ts +24 -0
  15. package/dist/editor/applies/arrange-units.d.ts.map +1 -0
  16. package/dist/editor/applies/arrange-units.js +56 -0
  17. package/dist/editor/applies/arrange-units.js.map +1 -0
  18. package/dist/editor/applies/arrange.d.ts +16 -15
  19. package/dist/editor/applies/arrange.d.ts.map +1 -1
  20. package/dist/editor/applies/arrange.js +33 -48
  21. package/dist/editor/applies/arrange.js.map +1 -1
  22. package/dist/editor/applies/create.d.ts +16 -10
  23. package/dist/editor/applies/create.d.ts.map +1 -1
  24. package/dist/editor/applies/create.js +32 -12
  25. package/dist/editor/applies/create.js.map +1 -1
  26. package/dist/editor/applies/edge.d.ts +1 -1
  27. package/dist/editor/applies/edge.d.ts.map +1 -1
  28. package/dist/editor/applies/object-snap.d.ts +87 -0
  29. package/dist/editor/applies/object-snap.d.ts.map +1 -0
  30. package/dist/editor/applies/object-snap.js +198 -0
  31. package/dist/editor/applies/object-snap.js.map +1 -0
  32. package/dist/editor/applies/resize.d.ts +1 -1
  33. package/dist/editor/applies/resize.d.ts.map +1 -1
  34. package/dist/editor/applies/resize.js +6 -4
  35. package/dist/editor/applies/resize.js.map +1 -1
  36. package/dist/editor/applies/selection.d.ts +5 -5
  37. package/dist/editor/applies/selection.d.ts.map +1 -1
  38. package/dist/editor/applies/selection.js +15 -7
  39. package/dist/editor/applies/selection.js.map +1 -1
  40. package/dist/editor/applies/snap-grid.d.ts +1 -1
  41. package/dist/editor/applies/snap-grid.d.ts.map +1 -1
  42. package/dist/editor/container-ops.d.ts +1 -1
  43. package/dist/editor/container-ops.d.ts.map +1 -1
  44. package/dist/{editor-events.d.ts → editor/editor-events.d.ts} +2 -2
  45. package/dist/editor/editor-events.d.ts.map +1 -0
  46. package/dist/{editor-events.js.map → editor/editor-events.js.map} +1 -1
  47. package/dist/editor/event-fanout.d.ts +3 -3
  48. package/dist/editor/event-fanout.d.ts.map +1 -1
  49. package/dist/editor/gesture-tx.d.ts +1 -1
  50. package/dist/editor/gesture-tx.d.ts.map +1 -1
  51. package/dist/editor/hit-test.d.ts +5 -3
  52. package/dist/editor/hit-test.d.ts.map +1 -1
  53. package/dist/editor/hit-test.js +18 -10
  54. package/dist/editor/hit-test.js.map +1 -1
  55. package/dist/editor/interaction-state.d.ts +29 -2
  56. package/dist/editor/interaction-state.d.ts.map +1 -1
  57. package/dist/editor/interaction-state.js +34 -0
  58. package/dist/editor/interaction-state.js.map +1 -1
  59. package/dist/editor/link-handle-drag.d.ts +1 -1
  60. package/dist/editor/link-handle-drag.d.ts.map +1 -1
  61. package/dist/editor/link-handle-drag.js +1 -1
  62. package/dist/editor/link-handle-drag.js.map +1 -1
  63. package/dist/editor/pointer-binding.d.ts.map +1 -1
  64. package/dist/editor/pointer-binding.js +86 -24
  65. package/dist/editor/pointer-binding.js.map +1 -1
  66. package/dist/editor/public/arrange-group.d.ts +6 -5
  67. package/dist/editor/public/arrange-group.d.ts.map +1 -1
  68. package/dist/editor/public/arrange-group.js +39 -23
  69. package/dist/editor/public/arrange-group.js.map +1 -1
  70. package/dist/editor/public/clipboard.d.ts +1 -1
  71. package/dist/editor/public/clipboard.d.ts.map +1 -1
  72. package/dist/editor/public/clipboard.js +2 -2
  73. package/dist/editor/public/clipboard.js.map +1 -1
  74. package/dist/editor/public/cursor.js +1 -1
  75. package/dist/editor/public/cursor.js.map +1 -1
  76. package/dist/editor/public/eraser.js +1 -1
  77. package/dist/editor/public/eraser.js.map +1 -1
  78. package/dist/editor/public/image-insert.d.ts.map +1 -1
  79. package/dist/editor/public/image-insert.js +4 -1
  80. package/dist/editor/public/image-insert.js.map +1 -1
  81. package/dist/editor/public/label-seed.d.ts +12 -0
  82. package/dist/editor/public/label-seed.d.ts.map +1 -0
  83. package/dist/editor/public/label-seed.js +20 -0
  84. package/dist/editor/public/label-seed.js.map +1 -0
  85. package/dist/editor/public/layers.d.ts +1 -1
  86. package/dist/editor/public/layers.d.ts.map +1 -1
  87. package/dist/editor/public/placement.d.ts +6 -1
  88. package/dist/editor/public/placement.d.ts.map +1 -1
  89. package/dist/editor/public/placement.js +47 -17
  90. package/dist/editor/public/placement.js.map +1 -1
  91. package/dist/editor/public/selection-ops.d.ts +1 -1
  92. package/dist/editor/public/selection-ops.d.ts.map +1 -1
  93. package/dist/editor/public/selection-ops.js +31 -2
  94. package/dist/editor/public/selection-ops.js.map +1 -1
  95. package/dist/editor/public/stroke-eraser-coverage.js +1 -1
  96. package/dist/editor/public/stroke-eraser-coverage.js.map +1 -1
  97. package/dist/editor/public/stroke-eraser.js +1 -1
  98. package/dist/editor/public/stroke-eraser.js.map +1 -1
  99. package/dist/editor/public/text-edit.d.ts +4 -2
  100. package/dist/editor/public/text-edit.d.ts.map +1 -1
  101. package/dist/editor/public/text-edit.js +8 -4
  102. package/dist/editor/public/text-edit.js.map +1 -1
  103. package/dist/editor/public/tool-ops.d.ts +10 -7
  104. package/dist/editor/public/tool-ops.d.ts.map +1 -1
  105. package/dist/editor/public/tool-ops.js +141 -14
  106. package/dist/editor/public/tool-ops.js.map +1 -1
  107. package/dist/editor/public/zoom-pan.d.ts +10 -1
  108. package/dist/editor/public/zoom-pan.d.ts.map +1 -1
  109. package/dist/editor/public/zoom-pan.js +49 -0
  110. package/dist/editor/public/zoom-pan.js.map +1 -1
  111. package/dist/editor/render-orchestrator.d.ts +17 -11
  112. package/dist/editor/render-orchestrator.d.ts.map +1 -1
  113. package/dist/editor/render-orchestrator.js +45 -31
  114. package/dist/editor/render-orchestrator.js.map +1 -1
  115. package/dist/editor/resize-helpers.d.ts +1 -1
  116. package/dist/editor/resize-helpers.d.ts.map +1 -1
  117. package/dist/editor/shape-traits.d.ts +1 -1
  118. package/dist/editor/shape-traits.d.ts.map +1 -1
  119. package/dist/editor/shape-traits.js +1 -1
  120. package/dist/editor/shape-traits.js.map +1 -1
  121. package/dist/editor/text-edit.d.ts +24 -11
  122. package/dist/editor/text-edit.d.ts.map +1 -1
  123. package/dist/editor/text-edit.js +225 -45
  124. package/dist/editor/text-edit.js.map +1 -1
  125. package/dist/editor.d.ts +306 -18
  126. package/dist/editor.d.ts.map +1 -1
  127. package/dist/editor.js +1233 -67
  128. package/dist/editor.js.map +1 -1
  129. package/dist/features/built-in-handlers.d.ts.map +1 -0
  130. package/dist/{built-in-handlers.js → features/built-in-handlers.js} +7 -1
  131. package/dist/features/built-in-handlers.js.map +1 -0
  132. package/dist/{clipboard.d.ts → features/clipboard.d.ts} +14 -0
  133. package/dist/features/clipboard.d.ts.map +1 -0
  134. package/dist/{clipboard.js → features/clipboard.js} +1 -1
  135. package/dist/features/clipboard.js.map +1 -0
  136. package/dist/{file-drop.d.ts → features/file-drop.d.ts} +20 -1
  137. package/dist/features/file-drop.d.ts.map +1 -0
  138. package/dist/{file-drop.js → features/file-drop.js} +47 -19
  139. package/dist/features/file-drop.js.map +1 -0
  140. package/dist/features/insert-scene.d.ts +19 -0
  141. package/dist/features/insert-scene.d.ts.map +1 -0
  142. package/dist/features/insert-scene.js +145 -0
  143. package/dist/features/insert-scene.js.map +1 -0
  144. package/dist/features/search.d.ts.map +1 -0
  145. package/dist/features/search.js.map +1 -0
  146. package/dist/helpers/auto-compact.d.ts.map +1 -0
  147. package/dist/{auto-compact.js → helpers/auto-compact.js} +1 -1
  148. package/dist/helpers/auto-compact.js.map +1 -0
  149. package/dist/helpers/auto-layout-scheduler.d.ts.map +1 -0
  150. package/dist/helpers/auto-layout-scheduler.js.map +1 -0
  151. package/dist/helpers/frame-helpers.d.ts.map +1 -0
  152. package/dist/helpers/frame-helpers.js.map +1 -0
  153. package/dist/helpers/group-helpers.d.ts.map +1 -0
  154. package/dist/helpers/group-helpers.js.map +1 -0
  155. package/dist/helpers/util.d.ts.map +1 -0
  156. package/dist/helpers/util.js.map +1 -0
  157. package/dist/index.d.ts +23 -21
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +12 -12
  160. package/dist/index.js.map +1 -1
  161. package/dist/input/dom-events.d.ts.map +1 -0
  162. package/dist/input/dom-events.js.map +1 -0
  163. package/dist/{hotkeys-binding.d.ts → input/hotkeys-binding.d.ts} +2 -2
  164. package/dist/input/hotkeys-binding.d.ts.map +1 -0
  165. package/dist/{hotkeys-binding.js → input/hotkeys-binding.js} +1 -1
  166. package/dist/input/hotkeys-binding.js.map +1 -0
  167. package/dist/input/platform.d.ts.map +1 -0
  168. package/dist/input/platform.js.map +1 -0
  169. package/dist/{handle.d.ts → interaction/handle.d.ts} +1 -1
  170. package/dist/interaction/handle.d.ts.map +1 -0
  171. package/dist/{handle.js → interaction/handle.js} +1 -1
  172. package/dist/interaction/handle.js.map +1 -0
  173. package/dist/interaction/interactive.d.ts.map +1 -0
  174. package/dist/interaction/interactive.js.map +1 -0
  175. package/dist/interaction/machine.d.ts.map +1 -0
  176. package/dist/interaction/machine.js.map +1 -0
  177. package/dist/interaction/modes.d.ts.map +1 -0
  178. package/dist/interaction/modes.js.map +1 -0
  179. package/dist/render/animation-tick.d.ts.map +1 -0
  180. package/dist/render/animation-tick.js.map +1 -0
  181. package/dist/{overlay.d.ts → render/overlay.d.ts} +42 -38
  182. package/dist/render/overlay.d.ts.map +1 -0
  183. package/dist/{overlay.js → render/overlay.js} +174 -59
  184. package/dist/render/overlay.js.map +1 -0
  185. package/dist/selection/link-selection.d.ts.map +1 -0
  186. package/dist/{link-selection.js → selection/link-selection.js} +1 -1
  187. package/dist/selection/link-selection.js.map +1 -0
  188. package/dist/selection/selection.d.ts.map +1 -0
  189. package/dist/{selection.js → selection/selection.js} +1 -1
  190. package/dist/selection/selection.js.map +1 -0
  191. package/package.json +5 -5
  192. package/dist/animation-tick.d.ts.map +0 -1
  193. package/dist/animation-tick.js.map +0 -1
  194. package/dist/auto-compact.d.ts.map +0 -1
  195. package/dist/auto-compact.js.map +0 -1
  196. package/dist/auto-layout-scheduler.d.ts.map +0 -1
  197. package/dist/auto-layout-scheduler.js.map +0 -1
  198. package/dist/built-in-handlers.d.ts.map +0 -1
  199. package/dist/built-in-handlers.js.map +0 -1
  200. package/dist/clipboard.d.ts.map +0 -1
  201. package/dist/clipboard.js.map +0 -1
  202. package/dist/dom-events.d.ts.map +0 -1
  203. package/dist/dom-events.js.map +0 -1
  204. package/dist/editor-events.d.ts.map +0 -1
  205. package/dist/file-drop.d.ts.map +0 -1
  206. package/dist/file-drop.js.map +0 -1
  207. package/dist/frame-helpers.d.ts.map +0 -1
  208. package/dist/frame-helpers.js.map +0 -1
  209. package/dist/group-helpers.d.ts.map +0 -1
  210. package/dist/group-helpers.js.map +0 -1
  211. package/dist/handle.d.ts.map +0 -1
  212. package/dist/handle.js.map +0 -1
  213. package/dist/hotkeys-binding.d.ts.map +0 -1
  214. package/dist/hotkeys-binding.js.map +0 -1
  215. package/dist/interactive.d.ts.map +0 -1
  216. package/dist/interactive.js.map +0 -1
  217. package/dist/link-selection.d.ts.map +0 -1
  218. package/dist/link-selection.js.map +0 -1
  219. package/dist/machine.d.ts.map +0 -1
  220. package/dist/machine.js.map +0 -1
  221. package/dist/modes.d.ts.map +0 -1
  222. package/dist/modes.js.map +0 -1
  223. package/dist/overlay.d.ts.map +0 -1
  224. package/dist/overlay.js.map +0 -1
  225. package/dist/platform.d.ts.map +0 -1
  226. package/dist/platform.js.map +0 -1
  227. package/dist/search.d.ts.map +0 -1
  228. package/dist/search.js.map +0 -1
  229. package/dist/selection.d.ts.map +0 -1
  230. package/dist/selection.js.map +0 -1
  231. package/dist/util.d.ts.map +0 -1
  232. package/dist/util.js.map +0 -1
  233. /package/dist/{editor-events.js → editor/editor-events.js} +0 -0
  234. /package/dist/{built-in-handlers.d.ts → features/built-in-handlers.d.ts} +0 -0
  235. /package/dist/{search.d.ts → features/search.d.ts} +0 -0
  236. /package/dist/{search.js → features/search.js} +0 -0
  237. /package/dist/{auto-compact.d.ts → helpers/auto-compact.d.ts} +0 -0
  238. /package/dist/{auto-layout-scheduler.d.ts → helpers/auto-layout-scheduler.d.ts} +0 -0
  239. /package/dist/{auto-layout-scheduler.js → helpers/auto-layout-scheduler.js} +0 -0
  240. /package/dist/{frame-helpers.d.ts → helpers/frame-helpers.d.ts} +0 -0
  241. /package/dist/{frame-helpers.js → helpers/frame-helpers.js} +0 -0
  242. /package/dist/{group-helpers.d.ts → helpers/group-helpers.d.ts} +0 -0
  243. /package/dist/{group-helpers.js → helpers/group-helpers.js} +0 -0
  244. /package/dist/{util.d.ts → helpers/util.d.ts} +0 -0
  245. /package/dist/{util.js → helpers/util.js} +0 -0
  246. /package/dist/{dom-events.d.ts → input/dom-events.d.ts} +0 -0
  247. /package/dist/{dom-events.js → input/dom-events.js} +0 -0
  248. /package/dist/{platform.d.ts → input/platform.d.ts} +0 -0
  249. /package/dist/{platform.js → input/platform.js} +0 -0
  250. /package/dist/{interactive.d.ts → interaction/interactive.d.ts} +0 -0
  251. /package/dist/{interactive.js → interaction/interactive.js} +0 -0
  252. /package/dist/{machine.d.ts → interaction/machine.d.ts} +0 -0
  253. /package/dist/{machine.js → interaction/machine.js} +0 -0
  254. /package/dist/{modes.d.ts → interaction/modes.d.ts} +0 -0
  255. /package/dist/{modes.js → interaction/modes.js} +0 -0
  256. /package/dist/{animation-tick.d.ts → render/animation-tick.d.ts} +0 -0
  257. /package/dist/{animation-tick.js → render/animation-tick.js} +0 -0
  258. /package/dist/{link-selection.d.ts → selection/link-selection.d.ts} +0 -0
  259. /package/dist/{selection.d.ts → selection/selection.d.ts} +0 -0
@@ -0,0 +1,198 @@
1
+ // Edges first, centre last: on an exact tie the earlier candidate wins, so
2
+ // edge-to-edge alignment beats edge-to-centre.
3
+ const linesX = (b) => [b.x, b.x + b.width, b.x + b.width / 2];
4
+ const linesY = (b) => [b.y, b.y + b.height, b.y + b.height / 2];
5
+ /** Closest (own line, other line) pair within `threshold`, or `null`. */
6
+ const bestAxisSnap = (own, others, lines, threshold, sameKindOnly = false) => {
7
+ let best = null;
8
+ let bestDist = Infinity;
9
+ own.forEach((mine, mineIndex) => {
10
+ for (const other of others) {
11
+ lines(other).forEach((cand, candIndex) => {
12
+ // Move pairing rule (reference): an edge meets an edge, a centre
13
+ // meets a centre — never edge-to-centre.
14
+ if (sameKindOnly && (mineIndex === 2) !== (candIndex === 2))
15
+ return;
16
+ const dist = Math.abs(cand - mine);
17
+ if (dist <= threshold && dist < bestDist) {
18
+ bestDist = dist;
19
+ // Index 2 is the centre line on both sides (see `linesX`).
20
+ best = {
21
+ correction: cand - mine,
22
+ guideAt: cand,
23
+ other,
24
+ center: mineIndex === 2 || candIndex === 2,
25
+ };
26
+ }
27
+ });
28
+ }
29
+ });
30
+ return best;
31
+ };
32
+ const guideFor = (axis, snap, moving, kindOverride) => {
33
+ const other = snap.other;
34
+ const kind = kindOverride ?? (snap.center ? "center" : "edge");
35
+ return axis === "x"
36
+ ? {
37
+ axis,
38
+ at: snap.guideAt,
39
+ from: Math.min(moving.y, other.y),
40
+ to: Math.max(moving.y + moving.height, other.y + other.height),
41
+ kind,
42
+ moving,
43
+ other,
44
+ }
45
+ : {
46
+ axis,
47
+ at: snap.guideAt,
48
+ from: Math.min(moving.x, other.x),
49
+ to: Math.max(moving.x + moving.width, other.x + other.width),
50
+ kind,
51
+ moving,
52
+ other,
53
+ };
54
+ };
55
+ const shifted = (b, d) => ({ ...b, x: b.x + d.x, y: b.y + d.y });
56
+ /**
57
+ * Correct a move delta so the moved shape's edges / centres coincide with
58
+ * a nearby shape's — edge to edge, centre to centre. `moving` is the
59
+ * press-time world AABB; `others` are the candidate AABBs (not the moving
60
+ * shapes themselves).
61
+ */
62
+ export const snapMoveDeltaToObjects = (moving, delta, others, threshold, opts = {}) => {
63
+ if (others.length === 0)
64
+ return { delta, guides: [] };
65
+ const target = shifted(moving, delta);
66
+ const own = (lines) => opts.centerLines === false ? lines.slice(0, 2) : lines;
67
+ const sx = bestAxisSnap(own(linesX(target)), others, linesX, threshold, true);
68
+ const sy = bestAxisSnap(own(linesY(target)), others, linesY, threshold, true);
69
+ const out = { x: delta.x + (sx?.correction ?? 0), y: delta.y + (sy?.correction ?? 0) };
70
+ const landed = shifted(moving, out);
71
+ const guides = [];
72
+ if (sx)
73
+ guides.push(guideFor("x", sx, landed));
74
+ if (sy)
75
+ guides.push(guideFor("y", sy, landed));
76
+ return { delta: out, guides };
77
+ };
78
+ const MOVES_WEST = new Set(["nw", "w", "sw"]);
79
+ const MOVES_EAST = new Set(["ne", "e", "se"]);
80
+ const MOVES_NORTH = new Set(["nw", "n", "ne"]);
81
+ const MOVES_SOUTH = new Set(["sw", "s", "se"]);
82
+ /** Bounds after applying a raw resize delta to the handle's edges (may be inverted). */
83
+ const resized = (b, handle, d) => {
84
+ let x = b.x;
85
+ let w = b.width;
86
+ let y = b.y;
87
+ let h = b.height;
88
+ if (MOVES_WEST.has(handle)) {
89
+ x += d.x;
90
+ w -= d.x;
91
+ }
92
+ else if (MOVES_EAST.has(handle))
93
+ w += d.x;
94
+ if (MOVES_NORTH.has(handle)) {
95
+ y += d.y;
96
+ h -= d.y;
97
+ }
98
+ else if (MOVES_SOUTH.has(handle))
99
+ h += d.y;
100
+ return { x, y, width: w, height: h };
101
+ };
102
+ /**
103
+ * Correct a resize delta so the dragged edge(s) align with nearby shapes'
104
+ * edges / centres (`alignEdges`) or so the width / height matches a nearby
105
+ * shape's (`matchSizes`). Per axis the smaller correction wins; the
106
+ * stationary edges never move. `original` is the press-time world AABB.
107
+ */
108
+ export const snapResizeDeltaToObjects = (original, handle, delta, others, threshold, opts) => {
109
+ if (others.length === 0 || (!opts.alignEdges && !opts.matchSizes)) {
110
+ return { delta, guides: [], sizeMatch: null };
111
+ }
112
+ const raw = resized(original, handle, delta);
113
+ let dx = delta.x;
114
+ let dy = delta.y;
115
+ const guides = [];
116
+ let sizeMatch = null;
117
+ const movesX = MOVES_WEST.has(handle) || MOVES_EAST.has(handle);
118
+ const movesY = MOVES_NORTH.has(handle) || MOVES_SOUTH.has(handle);
119
+ if (movesX) {
120
+ // Edge alignment: only the dragged vertical edge is a candidate line.
121
+ const edge = MOVES_WEST.has(handle) ? raw.x : raw.x + raw.width;
122
+ const align = opts.alignEdges ? bestAxisSnap([edge], others, linesX, threshold) : null;
123
+ // Size match: the dragged edge lands where width == other.width.
124
+ let size = null;
125
+ if (opts.matchSizes) {
126
+ let bestDist = Infinity;
127
+ for (const other of others) {
128
+ const dist = Math.abs(other.width - Math.abs(raw.width));
129
+ if (dist <= threshold && dist < bestDist) {
130
+ bestDist = dist;
131
+ const sign = raw.width < 0 ? -1 : 1;
132
+ const targetEdge = MOVES_WEST.has(handle)
133
+ ? raw.x + raw.width - sign * other.width
134
+ : raw.x + sign * other.width;
135
+ size = { correction: targetEdge - edge, guideAt: targetEdge, other, center: false };
136
+ }
137
+ }
138
+ }
139
+ const pick = align && (!size || Math.abs(align.correction) <= Math.abs(size.correction)) ? align : size;
140
+ if (pick) {
141
+ dx += pick.correction;
142
+ if (pick === align)
143
+ guides.push(guideFor("x", pick, resized(original, handle, { x: dx, y: dy }), "edge"));
144
+ else
145
+ sizeMatch = { bounds: pick.other, axis: "width" };
146
+ }
147
+ }
148
+ if (movesY) {
149
+ const edge = MOVES_NORTH.has(handle) ? raw.y : raw.y + raw.height;
150
+ const align = opts.alignEdges ? bestAxisSnap([edge], others, linesY, threshold) : null;
151
+ let size = null;
152
+ if (opts.matchSizes) {
153
+ let bestDist = Infinity;
154
+ for (const other of others) {
155
+ const dist = Math.abs(other.height - Math.abs(raw.height));
156
+ if (dist <= threshold && dist < bestDist) {
157
+ bestDist = dist;
158
+ const sign = raw.height < 0 ? -1 : 1;
159
+ const targetEdge = MOVES_NORTH.has(handle)
160
+ ? raw.y + raw.height - sign * other.height
161
+ : raw.y + sign * other.height;
162
+ size = { correction: targetEdge - edge, guideAt: targetEdge, other, center: false };
163
+ }
164
+ }
165
+ }
166
+ const pick = align && (!size || Math.abs(align.correction) <= Math.abs(size.correction)) ? align : size;
167
+ if (pick) {
168
+ dy += pick.correction;
169
+ if (pick === align)
170
+ guides.push(guideFor("y", pick, resized(original, handle, { x: dx, y: dy }), "edge"));
171
+ else if (sizeMatch?.bounds === pick.other)
172
+ sizeMatch = { bounds: pick.other, axis: "both" };
173
+ else
174
+ sizeMatch ??= { bounds: pick.other, axis: "height" };
175
+ }
176
+ }
177
+ return { delta: { x: dx, y: dy }, guides, sizeMatch };
178
+ };
179
+ /**
180
+ * Gaps between two extents along a guide (reference "distance" intervals):
181
+ * `[a1, a2]` is the aligned-with shape's extent, `[b1, b2]` the moved
182
+ * shape's. Disjoint extents yield the single gap between them; partially
183
+ * overlapping ones yield the two non-shared stretches; identical or nested
184
+ * extents yield nothing.
185
+ */
186
+ export const gapIntervals = (a1, a2, b1, b2) => {
187
+ if (a2 < b1)
188
+ return [{ start: a2, end: b1 }];
189
+ if (b2 < a1)
190
+ return [{ start: b2, end: a1 }];
191
+ if ((a1 <= b1 && a2 >= b2) || (b1 <= a1 && b2 >= a2))
192
+ return [];
193
+ return [
194
+ { start: Math.min(a1, b1), end: Math.max(a1, b1) },
195
+ { start: Math.min(a2, b2), end: Math.max(a2, b2) },
196
+ ].filter((g) => g.end > g.start);
197
+ };
198
+ //# sourceMappingURL=object-snap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-snap.js","sourceRoot":"","sources":["../../../src/editor/applies/object-snap.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type Scene, type Element, type Link, type Patch, type TextElement } from "@oh-just-another/scene";
2
2
  import type { Bounds, ElementId, LinkId, Vec2 } from "@oh-just-another/types";
3
- import { type HandleId } from "../../handle.js";
3
+ import { type HandleId } from "../../interaction/handle.js";
4
4
  /**
5
5
  * Pure: compute the patch + new scene for a single-shape resize.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWnF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,IAAI,SAAS,EACb,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,MAAM,EACzE,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAgCrD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,KAAK,EACZ,UAAU,OAAO,EACjB,QAAQ,QAAQ,EAChB,YAAY,IAAI,EAChB,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IA2CrD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,KAAK,EACZ,UAAU,WAAW,EACrB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAgDrD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAC5B,SAAS,EACT;QACE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CACF,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,yBAAyB,GACpC,OAAO,KAAK,EACZ,QAAQ,iBAAiB,EACzB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,OAAO,EACvB,oBAAkB,KACjB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,EAAE,CAAA;CAwGlC,CAAC"}
1
+ {"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAW/F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,IAAI,SAAS,EACb,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,MAAM,EACzE,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAkCrD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,KAAK,EACZ,UAAU,OAAO,EACjB,QAAQ,QAAQ,EAChB,YAAY,IAAI,EAChB,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IA4CrD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,KAAK,EACZ,UAAU,WAAW,EACrB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAgDrD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAC5B,SAAS,EACT;QACE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CACF,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,yBAAyB,GACpC,OAAO,KAAK,EACZ,QAAQ,iBAAiB,EACzB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,OAAO,EACvB,oBAAkB,KACjB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,EAAE,CAAA;CAwGlC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { apply, getAutoLayoutSpec, getElement, getLink, } from "@oh-just-another/scene";
2
- import { frameCorners, shapeSelectionFrame } from "../../handle.js";
1
+ import { apply, getAutoLayoutSpec, getElement, getLink, isImage, } from "@oh-just-another/scene";
2
+ import { frameCorners, shapeSelectionFrame } from "../../interaction/handle.js";
3
3
  import { applyResizeConstraints, lockAspectRatio, resizeFromCenter, resizeFromHandle, } from "../resize-helpers.js";
4
4
  import { hasWidthHeight } from "../shape-traits.js";
5
5
  import { scaleLinkAround } from "./link-move.js";
@@ -30,7 +30,9 @@ export const computeElementResize = (scene, id, handle, delta, originalBounds, c
30
30
  // edge would otherwise hand control to that opposite edge ("flip through
31
31
  // the face"). Force `noFlip` regardless of the element's stored flag so
32
32
  // instances that lack it behave the same.
33
- const noFlip = shape.noFlip === true || getAutoLayoutSpec(shape) !== null;
33
+ // Images never mirror by overshooting a handle a flipped bitmap reads
34
+ // as a glitch, not an intent (flip lives in the Actions menu).
35
+ const noFlip = shape.noFlip === true || isImage(shape) || getAutoLayoutSpec(shape) !== null;
34
36
  const constraints = noFlip ? { ...shape, noFlip: true } : shape;
35
37
  const intermediate = applyResizeConstraints(originalBounds, raw, handle, constraints, fromCenter);
36
38
  const constrained = clampContainer(shape, intermediate, handle);
@@ -89,7 +91,7 @@ export const computeRotatedElementResize = (scene, original, handle, worldDelta,
89
91
  const free = resizeFromHandle(base, handle, localDelta);
90
92
  const shaped = lockAspect ? lockAspectRatio(base, free) : free;
91
93
  const raw = fromCenter ? resizeFromCenter(base, shaped) : shaped;
92
- const noFlip = original.noFlip === true || getAutoLayoutSpec(original) !== null;
94
+ const noFlip = original.noFlip === true || isImage(original) || getAutoLayoutSpec(original) !== null;
93
95
  const constraints = noFlip ? { ...original, noFlip: true } : original;
94
96
  const constrained = applyResizeConstraints(base, raw, handle, constraints, fromCenter);
95
97
  // Map the new local box back to world through the basis. The new NW corner is
@@ -1 +1 @@
1
- {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { type Scene } from "@oh-just-another/scene";
1
+ import { type Element, type Scene } from "@oh-just-another/scene";
2
2
  import type { Bounds, LayerId } from "@oh-just-another/types";
3
- import * as Selection from "../../selection.js";
4
- import * as LinkSelection from "../../link-selection.js";
3
+ import * as Selection from "../../selection/selection.js";
4
+ import * as LinkSelection from "../../selection/link-selection.js";
5
5
  /**
6
6
  * Compute the selection that results from a lasso rectangle.
7
7
  *
@@ -13,7 +13,7 @@ import * as LinkSelection from "../../link-selection.js";
13
13
  * caller (Editor) writes it back, clears `_selectedLink`, and
14
14
  * fires `notify()`.
15
15
  */
16
- export declare const selectByBounds: (scene: Scene, current: Selection.Selection, isLayerLocked: (id: LayerId) => boolean, bounds: Bounds, mode: "replace" | "add") => Selection.Selection;
16
+ export declare const selectByBounds: (scene: Scene, current: Selection.Selection, isLayerLocked: (id: LayerId) => boolean, bounds: Bounds, mode: "replace" | "add", rootOf?: (shape: Element) => Element) => Selection.Selection;
17
17
  /**
18
18
  * Live-preview variant — bases the next selection on the captured
19
19
  * `lassoBaseSelection` snapshot so `"replace"` mode shrinks back to
@@ -22,7 +22,7 @@ export declare const selectByBounds: (scene: Scene, current: Selection.Selection
22
22
  * picks intact. Caller still owns the equality short-circuit and
23
23
  * the `_selectedLink` clearing.
24
24
  */
25
- export declare const selectByBoundsLive: (scene: Scene, base: Selection.Selection, isLayerLocked: (id: LayerId) => boolean, bounds: Bounds, mode: "replace" | "add") => Selection.Selection;
25
+ export declare const selectByBoundsLive: (scene: Scene, base: Selection.Selection, isLayerLocked: (id: LayerId) => boolean, bounds: Bounds, mode: "replace" | "add", rootOf?: (shape: Element) => Element) => Selection.Selection;
26
26
  /**
27
27
  * Link half of the marquee. A connector is captured when its ENTIRE drawn
28
28
  * path lies inside `bounds` (fully-enclosed rule), so dragging a box across
@@ -1 +1 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AAGzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,SAAS,SAAS,CAAC,SAAS,EAC5B,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,KACtB,SAAS,CAAC,SAQZ,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,MAAM,SAAS,CAAC,SAAS,EACzB,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,KACtB,SAAS,CAAC,SAQZ,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,MAAM,aAAa,CAAC,aAAa,EACjC,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,KACtB,aAAa,CAAC,aAShB,CAAC"}
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKZ,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,aAAa,MAAM,mCAAmC,CAAC;AAGnE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,SAAS,SAAS,CAAC,SAAS,EAC5B,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,EACvB,SAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,OAA0B,KACrD,SAAS,CAAC,SAaZ,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,MAAM,SAAS,CAAC,SAAS,EACzB,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,EACvB,SAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,OAA0B,KACrD,SAAS,CAAC,SASZ,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,MAAM,aAAa,CAAC,aAAa,EACjC,eAAe,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,EACvC,QAAQ,MAAM,EACd,MAAM,SAAS,GAAG,KAAK,KACtB,aAAa,CAAC,aAShB,CAAC"}
@@ -1,6 +1,6 @@
1
- import { getElementsCoveredByBounds, getLinkPath } from "@oh-just-another/scene";
2
- import * as Selection from "../../selection.js";
3
- import * as LinkSelection from "../../link-selection.js";
1
+ import { getElementsCoveredByBounds, getLinkPath, isElementHidden, isElementLocked, } from "@oh-just-another/scene";
2
+ import * as Selection from "../../selection/selection.js";
3
+ import * as LinkSelection from "../../selection/link-selection.js";
4
4
  import { LASSO_COVERAGE_THRESHOLD } from "../../constants.js";
5
5
  /**
6
6
  * Compute the selection that results from a lasso rectangle.
@@ -13,13 +13,19 @@ import { LASSO_COVERAGE_THRESHOLD } from "../../constants.js";
13
13
  * caller (Editor) writes it back, clears `_selectedLink`, and
14
14
  * fires `notify()`.
15
15
  */
16
- export const selectByBounds = (scene, current, isLayerLocked, bounds, mode) => {
16
+ export const selectByBounds = (scene, current, isLayerLocked, bounds, mode, rootOf = (shape) => shape) => {
17
17
  const hits = getElementsCoveredByBounds(scene, bounds, LASSO_COVERAGE_THRESHOLD);
18
18
  let next = mode === "replace" ? Selection.EMPTY : current;
19
19
  for (const shape of hits) {
20
20
  if (isLayerLocked(shape.layerId))
21
21
  continue;
22
- next = Selection.add(next, shape.id);
22
+ // Locked / hidden shapes are click-through and must not be lassoed
23
+ // either — the marquee skips them like the pointer does.
24
+ if (isElementLocked(scene, shape) || isElementHidden(scene, shape))
25
+ continue;
26
+ // A grouped child selects its group (like a click), so the lasso picks
27
+ // whole groups — never a loose subset of a group's children.
28
+ next = Selection.add(next, rootOf(shape).id);
23
29
  }
24
30
  return next;
25
31
  };
@@ -31,13 +37,15 @@ export const selectByBounds = (scene, current, isLayerLocked, bounds, mode) => {
31
37
  * picks intact. Caller still owns the equality short-circuit and
32
38
  * the `_selectedLink` clearing.
33
39
  */
34
- export const selectByBoundsLive = (scene, base, isLayerLocked, bounds, mode) => {
40
+ export const selectByBoundsLive = (scene, base, isLayerLocked, bounds, mode, rootOf = (shape) => shape) => {
35
41
  let next = mode === "replace" ? Selection.EMPTY : base;
36
42
  const hits = getElementsCoveredByBounds(scene, bounds, LASSO_COVERAGE_THRESHOLD);
37
43
  for (const shape of hits) {
38
44
  if (isLayerLocked(shape.layerId))
39
45
  continue;
40
- next = Selection.add(next, shape.id);
46
+ if (isElementLocked(scene, shape) || isElementHidden(scene, shape))
47
+ continue;
48
+ next = Selection.add(next, rootOf(shape).id);
41
49
  }
42
50
  return next;
43
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/editor/applies/selection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/editor/applies/selection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Bounds, Vec2 } from "@oh-just-another/types";
2
2
  import type { ElementId } from "@oh-just-another/types";
3
- import type { HandleId } from "../../handle.js";
3
+ import type { HandleId } from "../../interaction/handle.js";
4
4
  /**
5
5
  * Snap-to-grid math. Pure functions that round gesture deltas / bounds
6
6
  * onto a grid of `spacing` world units. The editor wrappers call these
@@ -1 +1 @@
1
- {"version":3,"file":"snap-grid.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/snap-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;;;;GAUG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,eAAe,GAAI,GAAG,IAAI,EAAE,SAAS,MAAM,KAAG,IAGzD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,gBAAgB,MAAM,EAAE,OAAO,IAAI,EAAE,SAAS,MAAM,KAAG,IAMpF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EACrC,OAAO,IAAI,EACX,SAAS,MAAM,KACd,IAUF,CAAC;AAOF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,EACtB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,SAAS,MAAM,KACd,IAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MASlE,CAAC"}
1
+ {"version":3,"file":"snap-grid.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/snap-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;;;;;GAUG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,eAAe,GAAI,GAAG,IAAI,EAAE,SAAS,MAAM,KAAG,IAGzD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,gBAAgB,MAAM,EAAE,OAAO,IAAI,EAAE,SAAS,MAAM,KAAG,IAMpF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EACrC,OAAO,IAAI,EACX,SAAS,MAAM,KACd,IAUF,CAAC;AAOF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,EACtB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,SAAS,MAAM,KACd,IAgBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MASlE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Scene, type Element, type Patch } from "@oh-just-another/scene";
2
2
  import type { Bounds, ElementId } from "@oh-just-another/types";
3
- import type { HandleId } from "../handle.js";
3
+ import type { HandleId } from "../interaction/handle.js";
4
4
  /**
5
5
  * Pure: fraction of `child`'s area that lies inside `zone`.
6
6
  * Returns 0 when either bbox is degenerate or they don't
@@ -1 +1 @@
1
- {"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/editor/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAW3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,EAAE,aAAa,SAAS,KAAG,MAAM,GAAG,IAQlF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,KAAK,EACZ,OAAO,OAAO,EACd,KAAK,MAAM,EACX,QAAQ,QAAQ,KACf,MAmDF,CAAC;AAsCF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,+EAA+E;IAC/E,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,eAAe,EAAE,aAAa,OAAO,KAAG,IA0D/E,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,eAAe,EACpB,aAAa,SAAS,EACtB,SAAS,SAAS,KACjB,IA+CF,CAAC"}
1
+ {"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/editor/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAW3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,KAAK,EAAE,aAAa,SAAS,KAAG,MAAM,GAAG,IAQlF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,KAAK,EACZ,OAAO,OAAO,EACd,KAAK,MAAM,EACX,QAAQ,QAAQ,KACf,MAmDF,CAAC;AAsCF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,+EAA+E;IAC/E,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,eAAe,EAAE,aAAa,OAAO,KAAG,IA0D/E,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,eAAe,EACpB,aAAa,SAAS,EACtB,SAAS,SAAS,KACjB,IA+CF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { Scene } from "@oh-just-another/scene";
2
- import type * as Selection from "./selection.js";
3
- import type { ActiveTool } from "./modes.js";
2
+ import type * as Selection from "../selection/selection.js";
3
+ import type { ActiveTool } from "../interaction/modes.js";
4
4
  /**
5
5
  * Typed event surface for `Editor`. Each event has a focused payload so
6
6
  * subscribers listen only to what they care about — `useActiveTool` re-renders
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-events.d.ts","sourceRoot":"","sources":["../../src/editor/editor-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,KAAK,SAAS,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,4EAA4E;IAC5E,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjC,wDAAwD;IACxD,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,gEAAgE;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor-events.js","sourceRoot":"","sources":["../src/editor-events.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"editor-events.js","sourceRoot":"","sources":["../../src/editor/editor-events.ts"],"names":[],"mappings":""}
@@ -1,8 +1,8 @@
1
1
  import type { Scene } from "@oh-just-another/scene";
2
2
  import type { Emitter } from "@oh-just-another/events";
3
- import type * as Selection from "../selection.js";
4
- import type { ActiveTool } from "../modes.js";
5
- import type { EditorEvents } from "../editor-events.js";
3
+ import type * as Selection from "../selection/selection.js";
4
+ import type { ActiveTool } from "../interaction/modes.js";
5
+ import type { EditorEvents } from "./editor-events.js";
6
6
  /**
7
7
  * Holds the last-emitted snapshot of every observable Editor slice
8
8
  * so `fanOutEvents` can decide which typed events to fire on the
@@ -1 +1 @@
1
- {"version":3,"file":"event-fanout.d.ts","sourceRoot":"","sources":["../../src/editor/event-fanout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,QAAO,gBAOlC,CAAC;AAEH;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,gBAAgB,EACvB,QAAQ,OAAO,CAAC,YAAY,CAAC,EAC7B,UAAU,wBAAwB,KACjC,IAuBF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,eAAe,GAC1B,OAAO,gBAAgB,EACvB,UAAU,wBAAwB,KACjC,IAOF,CAAC"}
1
+ {"version":3,"file":"event-fanout.d.ts","sourceRoot":"","sources":["../../src/editor/event-fanout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,KAAK,SAAS,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,QAAO,gBAOlC,CAAC;AAEH;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,gBAAgB,EACvB,QAAQ,OAAO,CAAC,YAAY,CAAC,EAC7B,UAAU,wBAAwB,KACjC,IAuBF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,eAAe,GAC1B,OAAO,gBAAgB,EACvB,UAAU,wBAAwB,KACjC,IAOF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { Link, Patch } from "@oh-just-another/scene";
2
2
  import type { Bounds, ElementId, LinkId, Vec2 } from "@oh-just-another/types";
3
3
  import type { HistoryProvider, TransactionHandle } from "@oh-just-another/history";
4
- import type { Mode } from "../modes.js";
4
+ import type { Mode } from "../interaction/modes.js";
5
5
  /**
6
6
  * Narrow editor surface that `GestureController` needs. Editor
7
7
  * implements this implicitly by exposing the listed fields and
@@ -1 +1 @@
1
- {"version":3,"file":"gesture-tx.d.ts","sourceRoot":"","sources":["../../src/editor/gesture-tx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,eAAe,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,iBAAiB,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAC5B,SAAS,EACT;YAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAC3E,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C,GAAG,IAAI,CAAC;IACT,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,UAAU;IAE5C;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK1B,MAAM,IAAI,IAAI;IA4Bd,MAAM,IAAI,IAAI;IASd;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI;IAUhB;;;;OAIG;IACH,0BAA0B,IAAI,IAAI;CAKnC"}
1
+ {"version":3,"file":"gesture-tx.d.ts","sourceRoot":"","sources":["../../src/editor/gesture-tx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,eAAe,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,iBAAiB,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAC5B,SAAS,EACT;YAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;SAAE,CAC3E,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C,GAAG,IAAI,CAAC;IACT,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,UAAU;IAE5C;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK1B,MAAM,IAAI,IAAI;IA4Bd,MAAM,IAAI,IAAI;IASd;;;;;;;OAOG;IACH,QAAQ,IAAI,IAAI;IAUhB;;;;OAIG;IACH,0BAA0B,IAAI,IAAI;CAKnC"}
@@ -1,8 +1,8 @@
1
1
  import { type Scene, type Element } from "@oh-just-another/scene";
2
2
  import type { AnnotationId, Bounds, LayerId, LinkId, ElementId, Transform, Vec2 } from "@oh-just-another/types";
3
3
  import type { RenderTarget } from "@oh-just-another/renderer-core";
4
- import type { PressTarget } from "../machine.js";
5
- import type * as Selection from "../selection.js";
4
+ import type { PressTarget } from "../interaction/machine.js";
5
+ import type * as Selection from "../selection/selection.js";
6
6
  /**
7
7
  * Bundle of everything `pickPressTarget` needs from the host
8
8
  * editor. Kept narrow so this module doesn't import `Editor` and
@@ -31,8 +31,10 @@ export interface HitTestContext {
31
31
  readonly hitAnnotation: (worldPoint: Vec2) => AnnotationId | null;
32
32
  readonly selectionIsAspectLocked: () => boolean;
33
33
  readonly combinedSelectionBounds: () => Bounds | null;
34
- readonly acceleratedElementAt: (worldPoint: Vec2) => Element | undefined;
34
+ readonly acceleratedElementAt: (worldPoint: Vec2, accept?: (shape: Element) => boolean) => Element | undefined;
35
35
  readonly isElementInteractable: (shape: Element) => boolean;
36
+ /** Can the shape be moved / resized (not locked, layer unlocked, visible)? */
37
+ readonly isElementManipulable: (shape: Element) => boolean;
36
38
  readonly isLayerLocked: (layerId: LayerId) => boolean;
37
39
  readonly promoteToGroupRoot: (shape: Element) => Element;
38
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hit-test.d.ts","sourceRoot":"","sources":["../../src/editor/hit-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hit-test.d.ts","sourceRoot":"","sources":["../../src/editor/hit-test.ts"],"names":[],"mappings":"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"}