@canvus/core 0.1.1 → 0.1.3

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -1
  3. package/dist/drop-zone.d.ts.map +1 -1
  4. package/dist/drop-zone.js +16 -0
  5. package/dist/drop-zone.js.map +1 -1
  6. package/dist/handlers/clipboard.handler.d.ts +22 -0
  7. package/dist/handlers/clipboard.handler.d.ts.map +1 -0
  8. package/dist/handlers/clipboard.handler.js +349 -0
  9. package/dist/handlers/clipboard.handler.js.map +1 -0
  10. package/dist/handlers/command.handler.d.ts +18 -0
  11. package/dist/handlers/command.handler.d.ts.map +1 -0
  12. package/dist/handlers/command.handler.js +430 -0
  13. package/dist/handlers/command.handler.js.map +1 -0
  14. package/dist/handlers/drag.handler.d.ts +22 -0
  15. package/dist/handlers/drag.handler.d.ts.map +1 -0
  16. package/dist/handlers/drag.handler.js +669 -0
  17. package/dist/handlers/drag.handler.js.map +1 -0
  18. package/dist/handlers/draw.handler.d.ts +37 -0
  19. package/dist/handlers/draw.handler.d.ts.map +1 -0
  20. package/dist/handlers/draw.handler.js +210 -0
  21. package/dist/handlers/draw.handler.js.map +1 -0
  22. package/dist/handlers/index.d.ts +10 -0
  23. package/dist/handlers/index.d.ts.map +1 -0
  24. package/dist/handlers/index.js +12 -0
  25. package/dist/handlers/index.js.map +1 -0
  26. package/dist/handlers/pan.handler.d.ts +34 -0
  27. package/dist/handlers/pan.handler.d.ts.map +1 -0
  28. package/dist/handlers/pan.handler.js +95 -0
  29. package/dist/handlers/pan.handler.js.map +1 -0
  30. package/dist/handlers/resize.handler.d.ts +26 -0
  31. package/dist/handlers/resize.handler.d.ts.map +1 -0
  32. package/dist/handlers/resize.handler.js +487 -0
  33. package/dist/handlers/resize.handler.js.map +1 -0
  34. package/dist/handlers/selection.handler.d.ts +22 -0
  35. package/dist/handlers/selection.handler.d.ts.map +1 -0
  36. package/dist/handlers/selection.handler.js +259 -0
  37. package/dist/handlers/selection.handler.js.map +1 -0
  38. package/dist/handlers/spacing.handler.d.ts +29 -0
  39. package/dist/handlers/spacing.handler.d.ts.map +1 -0
  40. package/dist/handlers/spacing.handler.js +326 -0
  41. package/dist/handlers/spacing.handler.js.map +1 -0
  42. package/dist/handlers/types.d.ts +204 -0
  43. package/dist/handlers/types.d.ts.map +1 -0
  44. package/dist/handlers/types.js +10 -0
  45. package/dist/handlers/types.js.map +1 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/shadow-mount.d.ts.map +1 -1
  49. package/dist/shadow-mount.js +51 -2
  50. package/dist/shadow-mount.js.map +1 -1
  51. package/dist/workspace.d.ts +149 -68
  52. package/dist/workspace.d.ts.map +1 -1
  53. package/dist/workspace.js +349 -2208
  54. package/dist/workspace.js.map +1 -1
  55. package/package.json +4 -1
@@ -0,0 +1,487 @@
1
+ // ─────────────────────────────────────────────────────────────
2
+ // canvus/src/handlers/resize.handler.ts
3
+ // Handles hit-testing and dragging for 8-anchor element resize handles.
4
+ // ─────────────────────────────────────────────────────────────
5
+ import { anchorCursor, computeAlignmentGuides } from "../renderer.js";
6
+ import { detectLayout, parseGridTracks } from "../layout.js";
7
+ /**
8
+ * Maps a resize anchor to the CSS properties it affects.
9
+ */
10
+ export function getLockedPropertiesForAnchor(anchor) {
11
+ const props = [];
12
+ const affectsWidth = anchor === "e" || anchor === "w" ||
13
+ anchor === "ne" || anchor === "nw" ||
14
+ anchor === "se" || anchor === "sw";
15
+ const affectsHeight = anchor === "n" || anchor === "s" ||
16
+ anchor === "ne" || anchor === "nw" ||
17
+ anchor === "se" || anchor === "sw";
18
+ if (affectsWidth)
19
+ props.push("width");
20
+ if (affectsHeight)
21
+ props.push("height");
22
+ return props;
23
+ }
24
+ /** Helper to compute resized bounds. */
25
+ function computeResizedRect(start, anchor, dx, dy, minSize, symmetrical) {
26
+ let { x, y, width, height } = start;
27
+ const affectsLeft = anchor === "nw" || anchor === "w" || anchor === "sw";
28
+ const affectsRight = anchor === "ne" || anchor === "e" || anchor === "se";
29
+ const affectsTop = anchor === "nw" || anchor === "n" || anchor === "ne";
30
+ const affectsBottom = anchor === "sw" || anchor === "s" || anchor === "se";
31
+ if (symmetrical) {
32
+ const centerX = start.x + start.width / 2;
33
+ const centerY = start.y + start.height / 2;
34
+ if (affectsRight) {
35
+ width = Math.max(minSize, start.width + 2 * dx);
36
+ }
37
+ else if (affectsLeft) {
38
+ width = Math.max(minSize, start.width - 2 * dx);
39
+ }
40
+ if (affectsBottom) {
41
+ height = Math.max(minSize, start.height + 2 * dy);
42
+ }
43
+ else if (affectsTop) {
44
+ height = Math.max(minSize, start.height - 2 * dy);
45
+ }
46
+ x = centerX - width / 2;
47
+ y = centerY - height / 2;
48
+ return { x, y, width, height };
49
+ }
50
+ if (affectsRight) {
51
+ width = Math.max(minSize, width + dx);
52
+ }
53
+ if (affectsLeft) {
54
+ const newWidth = Math.max(minSize, width - dx);
55
+ x = x + (width - newWidth); // Shift origin to compensate.
56
+ width = newWidth;
57
+ }
58
+ if (affectsBottom) {
59
+ height = Math.max(minSize, height + dy);
60
+ }
61
+ if (affectsTop) {
62
+ const newHeight = Math.max(minSize, height - dy);
63
+ y = y + (height - newHeight);
64
+ height = newHeight;
65
+ }
66
+ return { x, y, width, height };
67
+ }
68
+ // ── Layout Grid Helpers ─────────────────────────────────────
69
+ function getGridStart(element, dimension) {
70
+ const cs = getComputedStyle(element);
71
+ const startVal = cs.getPropertyValue(`grid-${dimension}-start`);
72
+ const val = cs.getPropertyValue(`grid-${dimension}`);
73
+ const startNum = parseInt(startVal, 10);
74
+ if (!isNaN(startNum))
75
+ return startNum;
76
+ if (val) {
77
+ const match = val.match(/^\s*(\d+)/);
78
+ if (match && match[1]) {
79
+ return parseInt(match[1], 10);
80
+ }
81
+ }
82
+ return getRealGridStart(element, dimension);
83
+ }
84
+ function getRealGridStart(element, dimension) {
85
+ const parent = element.parentElement;
86
+ if (!parent)
87
+ return 1;
88
+ let current = parent;
89
+ let offset = 0;
90
+ let gap = 0;
91
+ let tracks = [];
92
+ let definingGrid = null;
93
+ while (current) {
94
+ const cs = getComputedStyle(current);
95
+ const display = cs.display;
96
+ if (display.includes("grid")) {
97
+ const template = cs.getPropertyValue(`grid-template-${dimension}s`);
98
+ if (template && !template.includes("subgrid")) {
99
+ definingGrid = current;
100
+ gap = parseFloat(cs.getPropertyValue(`${dimension}-gap`)) || 0;
101
+ tracks = parseGridTracks(template, gap);
102
+ break;
103
+ }
104
+ }
105
+ const nextParent = current.parentElement;
106
+ if (!nextParent)
107
+ break;
108
+ const currentRect = current.getBoundingClientRect();
109
+ const parentRect = nextParent.getBoundingClientRect();
110
+ const pcs = getComputedStyle(nextParent);
111
+ const padLeft = parseFloat(pcs.paddingLeft) || 0;
112
+ const padTop = parseFloat(pcs.paddingTop) || 0;
113
+ offset += (dimension === "column")
114
+ ? (currentRect.left - parentRect.left - padLeft)
115
+ : (currentRect.top - parentRect.top - padTop);
116
+ current = nextParent;
117
+ }
118
+ if (!definingGrid || tracks.length === 0)
119
+ return 1;
120
+ const elRect = element.getBoundingClientRect();
121
+ const defRect = definingGrid.getBoundingClientRect();
122
+ const defStyle = getComputedStyle(definingGrid);
123
+ const defPadLeft = parseFloat(defStyle.paddingLeft) || 0;
124
+ const defPadTop = parseFloat(defStyle.paddingTop) || 0;
125
+ const elOffset = (dimension === "column")
126
+ ? (elRect.left - defRect.left - defPadLeft)
127
+ : (elRect.top - defRect.top - defPadTop);
128
+ const cellIndex = getCellIndexAtOffset(elOffset, tracks, gap);
129
+ if (parent !== definingGrid) {
130
+ const parentRect = parent.getBoundingClientRect();
131
+ const parentOffset = (dimension === "column")
132
+ ? (parentRect.left - defRect.left - defPadLeft)
133
+ : (parentRect.top - defRect.top - defPadTop);
134
+ const parentCellIndex = getCellIndexAtOffset(parentOffset, tracks, gap);
135
+ return Math.max(1, cellIndex - parentCellIndex + 1);
136
+ }
137
+ return cellIndex;
138
+ }
139
+ function getCellIndexAtOffset(offset, tracks, gap) {
140
+ for (let i = 0; i < tracks.length; i++) {
141
+ const t = tracks[i];
142
+ if (offset <= t.start + t.size + gap / 2) {
143
+ return i + 1;
144
+ }
145
+ }
146
+ return tracks.length;
147
+ }
148
+ function getGridSpan(element, dimension) {
149
+ const cs = getComputedStyle(element);
150
+ const startVal = cs.getPropertyValue(`grid-${dimension}-start`);
151
+ const endVal = cs.getPropertyValue(`grid-${dimension}-end`);
152
+ const val = cs.getPropertyValue(`grid-${dimension}`);
153
+ const spanMatch = (startVal + " " + endVal + " " + val).match(/span\s+(\d+)/i);
154
+ if (spanMatch && spanMatch[1]) {
155
+ return parseInt(spanMatch[1], 10);
156
+ }
157
+ const startNum = parseInt(startVal, 10);
158
+ const endNum = parseInt(endVal, 10);
159
+ if (!isNaN(startNum) && !isNaN(endNum) && endNum > startNum) {
160
+ return endNum - startNum;
161
+ }
162
+ return 1;
163
+ }
164
+ /**
165
+ * Manages the element resizing gesture.
166
+ */
167
+ export class ResizeHandler {
168
+ id = "resize";
169
+ ctx;
170
+ _isResizing = false;
171
+ _activeAnchor = null;
172
+ _resizeStartRect = null;
173
+ _dragStartCanvas = null;
174
+ _dragStartStyles = null;
175
+ constructor(ctx) {
176
+ this.ctx = ctx;
177
+ }
178
+ get isResizing() {
179
+ return this._isResizing;
180
+ }
181
+ get activeAnchor() {
182
+ return this._activeAnchor;
183
+ }
184
+ // ── InteractionHandler Interface ────────────────
185
+ claim(e, canvasPos, hitNodeId, containerRect) {
186
+ if (e.button !== 0 || this.ctx.previewMode)
187
+ return false;
188
+ // Calculate isDoubleClick early to prevent handles/adjusters from intercepting double-clicks on small/nested nodes
189
+ const now = Date.now();
190
+ const targetEl = e.composedPath()[0];
191
+ const isSameTarget = targetEl !== null && this.ctx.lastPointerDownTarget !== null &&
192
+ (targetEl === this.ctx.lastPointerDownTarget || this.ctx.lastPointerDownTarget.contains(targetEl) || targetEl.contains(this.ctx.lastPointerDownTarget));
193
+ const isDoubleClick = (now - this.ctx.lastPointerDownTime < 350) && (hitNodeId !== null &&
194
+ this.ctx.lastPointerDownId !== null &&
195
+ (hitNodeId === this.ctx.lastPointerDownId || isSameTarget || this.ctx.tree.isAncestor(this.ctx.lastPointerDownId, hitNodeId)));
196
+ if (isDoubleClick)
197
+ return false;
198
+ if (this.ctx.selectedIds.size === 1) {
199
+ const selId = this.ctx.selectedIds.values().next().value;
200
+ const selNode = this.ctx.tree.get(selId);
201
+ if (selNode?.currentRect) {
202
+ const localX = e.clientX - containerRect.x;
203
+ const localY = e.clientY - containerRect.y;
204
+ const anchor = this.ctx.renderer.hitTestHandle(localX, localY, selNode.currentRect, this.ctx.viewport);
205
+ if (anchor) {
206
+ // Property lock check for resize
207
+ const affectedProps = getLockedPropertiesForAnchor(anchor);
208
+ const lockedProps = affectedProps.filter(p => this.ctx.isPropertyLocked(selId, p));
209
+ if (lockedProps.length > 0) {
210
+ for (const prop of lockedProps) {
211
+ this.ctx.notifyPropertyLockInteraction(selId, prop);
212
+ }
213
+ return true; // Claim and block
214
+ }
215
+ this._isResizing = true;
216
+ this._activeAnchor = anchor;
217
+ this._dragStartCanvas = canvasPos;
218
+ this._resizeStartRect = { ...selNode.currentRect };
219
+ const contentRoot = this.ctx.mount.getContentRoot(selId);
220
+ if (contentRoot) {
221
+ this._dragStartStyles = {
222
+ "grid-column-start": contentRoot.style.gridColumnStart || null,
223
+ "grid-column-end": contentRoot.style.gridColumnEnd || null,
224
+ "grid-row-start": contentRoot.style.gridRowStart || null,
225
+ "grid-row-end": contentRoot.style.gridRowEnd || null,
226
+ "position": contentRoot.style.position || null,
227
+ "left": contentRoot.style.left || null,
228
+ "top": contentRoot.style.top || null,
229
+ "width": contentRoot.style.width || null,
230
+ "height": contentRoot.style.height || null,
231
+ };
232
+ }
233
+ this.ctx.render();
234
+ return true;
235
+ }
236
+ }
237
+ }
238
+ return false;
239
+ }
240
+ onPointerMove(e, canvasPos, _containerRect) {
241
+ if (!this._isResizing || !this._activeAnchor || !this._dragStartCanvas || !this._resizeStartRect)
242
+ return;
243
+ const selId = this.ctx.selectedIds.values().next().value;
244
+ const node = this.ctx.tree.get(selId);
245
+ if (!node)
246
+ return;
247
+ this.ctx.safeSetPointerCapture(e.pointerId);
248
+ this.ctx.container.style.cursor = anchorCursor(this._activeAnchor);
249
+ this.ctx.canvas.style.pointerEvents = "auto";
250
+ this.ctx.emitInteraction("resize-node", { handler: this.id });
251
+ const dx = canvasPos.x - this._dragStartCanvas.x;
252
+ const dy = canvasPos.y - this._dragStartCanvas.y;
253
+ const wrapper = this.ctx.mount.getWrapper(selId);
254
+ let parentIsGrid = false;
255
+ let gridInfo = null;
256
+ let parentRect = null;
257
+ let padLeft = 0;
258
+ let padTop = 0;
259
+ if (node.parentId !== null) {
260
+ const parentContent = this.ctx.mount.getContentRoot(node.parentId);
261
+ if (parentContent) {
262
+ gridInfo = detectLayout(parentContent);
263
+ if (gridInfo.mode === "grid" || gridInfo.mode === "inline-grid") {
264
+ parentIsGrid = true;
265
+ const parentNode = this.ctx.tree.get(node.parentId);
266
+ parentRect = parentNode?.currentRect ?? null;
267
+ const cs = getComputedStyle(parentContent);
268
+ padLeft = parseFloat(cs.paddingLeft) || 0;
269
+ padTop = parseFloat(cs.paddingTop) || 0;
270
+ }
271
+ }
272
+ }
273
+ if (parentIsGrid && gridInfo && parentRect && wrapper) {
274
+ const colTracks = parseGridTracks(gridInfo.gridTemplateColumns || "", gridInfo.gap.column);
275
+ const rowTracks = parseGridTracks(gridInfo.gridTemplateRows || "", gridInfo.gap.row);
276
+ const contentRoot = this.ctx.mount.getContentRoot(selId);
277
+ if (contentRoot) {
278
+ const colStart = getGridStart(contentRoot, "column");
279
+ const rowStart = getGridStart(contentRoot, "row");
280
+ const colSpan = getGridSpan(contentRoot, "column");
281
+ const rowSpan = getGridSpan(contentRoot, "row");
282
+ const cx = canvasPos.x - parentRect.x - padLeft;
283
+ const cy = canvasPos.y - parentRect.y - padTop;
284
+ let newColStart = colStart;
285
+ let newColSpan = colSpan;
286
+ let newRowStart = rowStart;
287
+ let newRowSpan = rowSpan;
288
+ const anchor = this._activeAnchor;
289
+ // West / East column resizing
290
+ if (anchor.includes("w")) {
291
+ const colEndIndex = colStart + colSpan;
292
+ for (let i = 0; i < colTracks.length; i++) {
293
+ const c = colTracks[i];
294
+ if (cx <= c.start + c.size + gridInfo.gap.column / 2) {
295
+ newColStart = Math.min(i + 1, colEndIndex - 1);
296
+ newColSpan = colEndIndex - newColStart;
297
+ break;
298
+ }
299
+ }
300
+ }
301
+ else if (anchor.includes("e")) {
302
+ for (let i = 0; i < colTracks.length; i++) {
303
+ const c = colTracks[i];
304
+ if (cx <= c.start + c.size + gridInfo.gap.column / 2) {
305
+ newColSpan = Math.max(1, (i + 1) - colStart + 1);
306
+ break;
307
+ }
308
+ newColSpan = Math.max(1, (i + 1) - colStart + 1);
309
+ }
310
+ }
311
+ // North / South row resizing
312
+ if (anchor.includes("n")) {
313
+ const rowEndIndex = rowStart + rowSpan;
314
+ for (let i = 0; i < rowTracks.length; i++) {
315
+ const r = rowTracks[i];
316
+ if (cy <= r.start + r.size + gridInfo.gap.row / 2) {
317
+ newRowStart = Math.min(i + 1, rowEndIndex - 1);
318
+ newRowSpan = rowEndIndex - newRowStart;
319
+ break;
320
+ }
321
+ }
322
+ }
323
+ else if (anchor.includes("s")) {
324
+ for (let i = 0; i < rowTracks.length; i++) {
325
+ const r = rowTracks[i];
326
+ if (cy <= r.start + r.size + gridInfo.gap.row / 2) {
327
+ newRowSpan = Math.max(1, (i + 1) - rowStart + 1);
328
+ break;
329
+ }
330
+ newRowSpan = Math.max(1, (i + 1) - rowStart + 1);
331
+ }
332
+ }
333
+ this.ctx.mount.setNodeStyles(selId, {
334
+ "grid-column-start": `${newColStart}`,
335
+ "grid-column-end": `span ${newColSpan}`,
336
+ "grid-row-start": `${newRowStart}`,
337
+ "grid-row-end": `span ${newRowSpan}`,
338
+ });
339
+ this.ctx.remeasureSubtree(selId);
340
+ if (node.parentId) {
341
+ this.ctx.remeasureSubtree(node.parentId);
342
+ }
343
+ }
344
+ }
345
+ else {
346
+ // 1. Compute new rect from anchor delta.
347
+ const newRect = computeResizedRect(this._resizeStartRect, this._activeAnchor, dx, dy, this.ctx.minResizeSize, e.altKey);
348
+ // 2. Style surgery — direct DOM mutation.
349
+ this.ctx.mount.setNodeRect(selId, newRect);
350
+ // 3. Synchronous reflow + measurement.
351
+ this.ctx.remeasureSubtree(selId);
352
+ }
353
+ // 4. Compute alignment guides.
354
+ if (this.ctx.enableSnapGuides && node.currentRect) {
355
+ const otherRects = this.ctx.getOtherRects(selId);
356
+ this.ctx.guides = computeAlignmentGuides(node.currentRect, otherRects, this.ctx.snapThreshold);
357
+ }
358
+ // 5. Notify.
359
+ if (node.currentRect) {
360
+ this.ctx.callbacks.onNodeRectChange?.(selId, node.currentRect);
361
+ }
362
+ // 6. Render overlay.
363
+ this.ctx.container.style.cursor = anchorCursor(this._activeAnchor);
364
+ this.ctx.canvas.style.pointerEvents = "auto";
365
+ this.ctx.render();
366
+ }
367
+ onPointerUp(e, _canvasPos, _containerRect) {
368
+ if (!this._isResizing || !this._activeAnchor)
369
+ return;
370
+ this._isResizing = false;
371
+ this._activeAnchor = null;
372
+ this._dragStartCanvas = null;
373
+ const operations = [];
374
+ let commitId = null;
375
+ if (this.ctx.selectedIds.size === 1) {
376
+ commitId = this.ctx.selectedIds.values().next().value;
377
+ }
378
+ if (commitId && this._resizeStartRect) {
379
+ const node = this.ctx.tree.get(commitId);
380
+ if (node?.currentRect) {
381
+ let parentIsGrid = false;
382
+ if (node.parentId !== null) {
383
+ const parentContent = this.ctx.mount.getContentRoot(node.parentId);
384
+ if (parentContent) {
385
+ const info = detectLayout(parentContent);
386
+ parentIsGrid = info.mode === "grid" || info.mode === "inline-grid";
387
+ }
388
+ }
389
+ if (parentIsGrid) {
390
+ const contentRoot = this.ctx.mount.getContentRoot(commitId);
391
+ if (contentRoot && this._dragStartStyles) {
392
+ const payload = {};
393
+ const undoPayload = {};
394
+ let styleChanged = false;
395
+ const styleProps = [
396
+ "grid-column-start",
397
+ "grid-column-end",
398
+ "grid-row-start",
399
+ "grid-row-end",
400
+ ];
401
+ for (const prop of styleProps) {
402
+ const val = contentRoot.style.getPropertyValue(prop) || null;
403
+ const origVal = this._dragStartStyles[prop] || null;
404
+ if (val !== origVal) {
405
+ payload[prop] = val;
406
+ undoPayload[prop] = origVal;
407
+ styleChanged = true;
408
+ }
409
+ }
410
+ if (styleChanged) {
411
+ operations.push({
412
+ type: "update-style",
413
+ nodeId: commitId,
414
+ payload,
415
+ undoPayload
416
+ });
417
+ }
418
+ }
419
+ }
420
+ else {
421
+ const finalRect = node.currentRect;
422
+ const startRect = this._resizeStartRect;
423
+ if (finalRect.width !== startRect.width || finalRect.height !== startRect.height ||
424
+ finalRect.x !== startRect.x || finalRect.y !== startRect.y) {
425
+ const payload = {
426
+ width: `${finalRect.width}px`,
427
+ height: `${finalRect.height}px`
428
+ };
429
+ const undoPayload = {
430
+ width: `${startRect.width}px`,
431
+ height: `${startRect.height}px`
432
+ };
433
+ if (node.parentId === null) {
434
+ payload.left = `${finalRect.x}px`;
435
+ payload.top = `${finalRect.y}px`;
436
+ undoPayload.left = `${startRect.x}px`;
437
+ undoPayload.top = `${startRect.y}px`;
438
+ }
439
+ operations.push({
440
+ type: "update-style",
441
+ nodeId: commitId,
442
+ payload,
443
+ undoPayload
444
+ });
445
+ }
446
+ }
447
+ this.ctx.callbacks.onNodeRectChange?.(commitId, node.currentRect);
448
+ }
449
+ }
450
+ this._resizeStartRect = null;
451
+ this._dragStartStyles = null;
452
+ // Clear guides.
453
+ this.ctx.guides = [];
454
+ // Release pointer capture.
455
+ try {
456
+ this.ctx.container.releasePointerCapture(e.pointerId);
457
+ }
458
+ catch { }
459
+ if (operations.length > 0) {
460
+ this.ctx.callbacks.onOperationsGenerated?.(operations);
461
+ }
462
+ this.ctx.canvas.style.pointerEvents = "none";
463
+ this.ctx.emitInteraction(null);
464
+ this.ctx.render();
465
+ // ── Flat String Bridge ────────────────────────
466
+ if (commitId) {
467
+ const node = this.ctx.tree.get(commitId);
468
+ const commitTarget = (node && node.parentId !== null) ? node.parentId : commitId;
469
+ const html = this.ctx.mount.extractHTML(commitTarget);
470
+ if (html) {
471
+ this.ctx.callbacks.onHTMLCommit?.(commitTarget, html);
472
+ }
473
+ }
474
+ }
475
+ onCancel() {
476
+ this._isResizing = false;
477
+ this._activeAnchor = null;
478
+ this._resizeStartRect = null;
479
+ this._dragStartCanvas = null;
480
+ this._dragStartStyles = null;
481
+ this.ctx.guides = [];
482
+ this.ctx.container.style.cursor = "default";
483
+ this.ctx.emitInteraction(null);
484
+ this.ctx.render();
485
+ }
486
+ }
487
+ //# sourceMappingURL=resize.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.handler.js","sourceRoot":"","sources":["../../src/handlers/resize.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Rect, Vec2 } from "../types.js";
2
+ import type { InteractionHandler, WorkspaceContext } from "./types.js";
3
+ /**
4
+ * Fallback interaction handler managing marquee selection, click selections, and container drill-down scoping.
5
+ */
6
+ export declare class SelectionHandler implements InteractionHandler {
7
+ readonly id = "selection";
8
+ private ctx;
9
+ private _isMarqueeSelecting;
10
+ private _marqueeStartCanvas;
11
+ private _marqueeCurrentCanvas;
12
+ private readonly _preMarqueeSelectedIds;
13
+ private _marqueeEnteredContainerId;
14
+ constructor(ctx: WorkspaceContext);
15
+ get isMarqueeSelecting(): boolean;
16
+ getMarqueeRect(): Rect | null;
17
+ claim(e: PointerEvent, canvasPos: Vec2, hitNodeId: string | null, _containerRect: Rect): boolean;
18
+ onPointerMove(e: PointerEvent, canvasPos: Vec2, _containerRect: Rect): void;
19
+ onPointerUp(e: PointerEvent, _canvasPos: Vec2, _containerRect: Rect): void;
20
+ onCancel(): void;
21
+ }
22
+ //# sourceMappingURL=selection.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/selection.handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGvE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,kBAAkB;IACzD,QAAQ,CAAC,EAAE,eAAe;IAE1B,OAAO,CAAC,GAAG,CAAmB;IAE9B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAC5D,OAAO,CAAC,0BAA0B,CAAuB;gBAE7C,GAAG,EAAE,gBAAgB;IAIjC,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,cAAc,IAAI,IAAI,GAAG,IAAI;IAc7B,KAAK,CACH,CAAC,EAAE,YAAY,EACf,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,EAAE,IAAI,GACnB,OAAO;IAmJV,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,GAAG,IAAI;IAsD3E,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,GAAG,IAAI;IAwB1E,QAAQ,IAAI,IAAI;CAOjB"}