@mapples/dnd 1.1.2 → 1.2.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.
@@ -22,8 +22,15 @@ export class Monitor {
22
22
  dragElements = new Map();
23
23
  /** Tree structure of registered drop elements */
24
24
  dropElementsTree = new Map();
25
+ /** Registered frame coordinate spaces by key */
26
+ frames = new Map();
25
27
  /** ID of the currently active drag target */
26
28
  dragTargetId = null;
29
+ /** Active move-drag source (an existing canvas element being moved) */
30
+ moveSource = null;
31
+ /** Pointer coords at drag start / most recent drag tick (drop space) */
32
+ dragStartCoords = null;
33
+ lastDragCoords = null;
27
34
  /** Currently active drop target */
28
35
  dropTarget = null;
29
36
  /** Index position within the current drop target */
@@ -40,6 +47,42 @@ export class Monitor {
40
47
  this.trackOutside = true;
41
48
  }
42
49
  }
50
+ /**
51
+ * Registers (or replaces) a frame coordinate space. Drop elements whose
52
+ * config carries the same `frameKey` are stored and hit-tested in
53
+ * coordinates relative to this frame's origin.
54
+ */
55
+ registerFrame(frameKey, entry) {
56
+ this.frames.set(frameKey, entry);
57
+ }
58
+ /**
59
+ * Moves a frame's world origin. O(1): no element re-measures needed since
60
+ * frame content layouts are origin-relative.
61
+ */
62
+ updateFrameOrigin(frameKey, origin) {
63
+ const frame = this.frames.get(frameKey);
64
+ if (!frame)
65
+ return;
66
+ this.frames.set(frameKey, { ...frame, origin });
67
+ }
68
+ /** Removes a frame coordinate space. */
69
+ unregisterFrame(frameKey) {
70
+ this.frames.delete(frameKey);
71
+ }
72
+ /** Gets a registered frame space by key. */
73
+ getFrame(frameKey) {
74
+ return this.frames.get(frameKey);
75
+ }
76
+ /**
77
+ * Converts world coordinates into a frame's local space.
78
+ * Falls through unchanged when the frame isn't registered.
79
+ */
80
+ toFrameLocal(coords, frameKey) {
81
+ const frame = this.frames.get(frameKey);
82
+ if (!frame)
83
+ return coords;
84
+ return { x: coords.x - frame.origin.x, y: coords.y - frame.origin.y };
85
+ }
43
86
  /**
44
87
  * Gets the ID of the currently active drag target.
45
88
  * @returns The drag target ID or null if no drag is active
@@ -144,18 +187,63 @@ export class Monitor {
144
187
  }
145
188
  /**
146
189
  * Handles the start of a drag operation.
147
- * @param dragCoords - The coordinates where the drag started
190
+ * @param dragCoords - Coordinates in drop-target space (world space when a
191
+ * pointer transform is installed), or `null` when the press began outside
192
+ * that space entirely. A palette press is exactly that case — the palette
193
+ * lives beside the canvas, not on it — so a null here must never abort the
194
+ * drag; it only rules out grabbing an existing element to move.
195
+ * @param windowCoords - Raw window coordinates for drag-*source* hit
196
+ * testing (palette items live outside any frame); defaults to `dragCoords`
148
197
  */
149
- onDragStart(dragCoords) {
150
- const dragTargetId = this.getDragTarget(dragCoords);
151
- if (!dragTargetId)
198
+ onDragStart(dragCoords, windowCoords) {
199
+ this.dragStartCoords = dragCoords;
200
+ this.lastDragCoords = dragCoords;
201
+ const sourceCoords = windowCoords ?? dragCoords;
202
+ if (!sourceCoords)
203
+ return;
204
+ const dragTargetId = this.getDragTarget(sourceCoords);
205
+ if (dragTargetId) {
206
+ const dragTarget = this.dragElements.get(dragTargetId);
207
+ this.setDragTargetId(dragTargetId);
208
+ this.events.next({
209
+ type: DnDEventType.DragStart,
210
+ target: this.getDragTargetId(),
211
+ data: dragTarget?.item.data,
212
+ kind: 'palette',
213
+ });
214
+ return;
215
+ }
216
+ // No palette source under the pointer — a drag that starts on an
217
+ // existing canvas element moves it (Figma-style direct manipulation).
218
+ // A press outside the drop space can't be on such an element.
219
+ if (!dragCoords)
220
+ return;
221
+ const dropTargets = this.getDropTargets(dragCoords, this.dropElementsTree);
222
+ const shallowTarget = this.getShallowTarget(dropTargets, dragCoords);
223
+ const componentId = shallowTarget?.data
224
+ ?.id;
225
+ if (!shallowTarget || !componentId)
226
+ return;
227
+ // Root-level elements (page roots) are not movable.
228
+ if (this.dropElementsTree.has(shallowTarget.id))
152
229
  return;
153
- const dragTarget = this.dragElements.get(dragTargetId);
154
- this.setDragTargetId(dragTargetId);
230
+ const hit = shallowTarget.hitCoords ?? dragCoords;
231
+ this.moveSource = {
232
+ dropId: shallowTarget.id,
233
+ componentId,
234
+ frameKey: shallowTarget.frameKey ?? null,
235
+ grabOffset: {
236
+ x: hit.x - shallowTarget.layout.x,
237
+ y: hit.y - shallowTarget.layout.y,
238
+ },
239
+ };
155
240
  this.events.next({
156
241
  type: DnDEventType.DragStart,
157
- target: this.getDragTargetId(),
158
- data: dragTarget?.item.data,
242
+ dropTarget: shallowTarget,
243
+ data: shallowTarget.data,
244
+ kind: 'move',
245
+ moveSource: this.moveSource,
246
+ frameKey: shallowTarget.frameKey ?? null,
159
247
  });
160
248
  }
161
249
  /**
@@ -164,21 +252,124 @@ export class Monitor {
164
252
  */
165
253
  onDrag(dragCoords) {
166
254
  const dragTargetId = this.getDragTargetId();
167
- if (!dragTargetId)
255
+ if (!dragTargetId && !this.moveSource)
168
256
  return;
169
- const dropTargets = this.getDropTargets(dragCoords, this.dropElementsTree);
257
+ this.lastDragCoords = dragCoords;
258
+ // While moving an element, its own subtree is not a valid drop target.
259
+ const dropTargets = this.getDropTargets(dragCoords, this.dropElementsTree, null, this.moveSource?.dropId ?? null);
170
260
  const shallowTarget = this.getShallowTarget(dropTargets, dragCoords);
171
- if (!shallowTarget?.canDrop)
172
- return;
173
- this.setDropTarget(shallowTarget);
174
- const dropTargetIndex = this.getDropTargetIndexData(dragCoords, shallowTarget);
175
- this.setDropTargetIndex(dropTargetIndex);
261
+ // Leaving every droppable area clears the pending drop rather than
262
+ // keeping the last one: the pointer is the only thing that decides where
263
+ // a drop lands, so hovering out must be indistinguishable from never
264
+ // having hovered in. The Drag event still fires (with a null target) so
265
+ // overlays drop their highlight instead of stranding it on the element
266
+ // the pointer last passed over.
267
+ const target = shallowTarget?.canDrop ? shallowTarget : null;
268
+ this.setDropTarget(target);
269
+ this.setDropTargetIndex(target
270
+ ? this.getDropTargetIndexData(target.hitCoords ?? dragCoords, target)
271
+ : null);
176
272
  this.events.next({
177
273
  type: DnDEventType.Drag,
178
274
  target: dragTargetId,
179
275
  dropTarget: this.getDropTarget(),
180
276
  dropTargetIndex: this.getDropTargetIndex(),
181
277
  dragCoords: dragCoords,
278
+ frameKey: target?.frameKey ?? null,
279
+ kind: this.moveSource ? 'move' : 'palette',
280
+ moveSource: this.moveSource,
281
+ });
282
+ }
283
+ /**
284
+ * The pointer left the drop coordinate space entirely — reported by the
285
+ * host when its `pointerTransform` cannot place the pointer (e.g. it moved
286
+ * off the canvas viewport onto surrounding chrome). Equivalent to hovering
287
+ * empty space: the pending drop clears, so a release here cancels.
288
+ */
289
+ onDragOutside() {
290
+ const dragTargetId = this.getDragTargetId();
291
+ if (!dragTargetId && !this.moveSource)
292
+ return;
293
+ // Already cleared — don't republish on every pointer move outside.
294
+ if (!this.getDropTarget() && this.getDropTargetIndex() === null)
295
+ return;
296
+ this.setDropTarget(null);
297
+ this.setDropTargetIndex(null);
298
+ this.events.next({
299
+ type: DnDEventType.Drag,
300
+ target: dragTargetId,
301
+ dropTarget: null,
302
+ dropTargetIndex: null,
303
+ dragCoords: this.lastDragCoords,
304
+ frameKey: null,
305
+ kind: this.moveSource ? 'move' : 'palette',
306
+ moveSource: this.moveSource,
307
+ });
308
+ }
309
+ /**
310
+ * Hit-tests a point in drop space with no drag registered. Drags that start
311
+ * outside the app — files dragged in from the OS — never register a drag
312
+ * element, so they cannot go through {@link onDrag}; this gives them the
313
+ * same target and insert-index resolution the in-app drag path uses.
314
+ * @param dropCoords - The coordinates to hit-test, in drop space
315
+ */
316
+ hitTest(dropCoords) {
317
+ const dropTargets = this.getDropTargets(dropCoords, this.dropElementsTree);
318
+ const shallowTarget = this.getShallowTarget(dropTargets, dropCoords);
319
+ const dropTarget = shallowTarget?.canDrop ? shallowTarget : null;
320
+ return {
321
+ dropTarget,
322
+ dropTargetIndex: dropTarget
323
+ ? this.getDropTargetIndexData(dropTarget.hitCoords ?? dropCoords, dropTarget)
324
+ : null,
325
+ };
326
+ }
327
+ /**
328
+ * Publishes an external drag's current position, so the drop chrome
329
+ * (hover highlight, insert line) tracks a file dragged in from the OS
330
+ * exactly as it tracks an in-app drag. Pass `null` coordinates while the
331
+ * pointer sits outside the drop space — that clears the pending drop the
332
+ * same way hovering off a droppable area does mid-drag.
333
+ * @param dropCoords - The pointer position in drop space, or null
334
+ */
335
+ onExternalDrag(dropCoords) {
336
+ const { dropTarget, dropTargetIndex } = dropCoords
337
+ ? this.hitTest(dropCoords)
338
+ : { dropTarget: null, dropTargetIndex: null };
339
+ // Nothing to say when the drag is still over empty space it was already
340
+ // over — pointer moves arrive at input rate.
341
+ if (!dropTarget && !this.getDropTarget())
342
+ return;
343
+ this.lastDragCoords = dropCoords;
344
+ this.setDropTarget(dropTarget);
345
+ this.setDropTargetIndex(dropTargetIndex);
346
+ this.events.next({
347
+ type: DnDEventType.Drag,
348
+ target: null,
349
+ dropTarget,
350
+ dropTargetIndex,
351
+ dragCoords: dropCoords,
352
+ frameKey: dropTarget?.frameKey ?? null,
353
+ kind: 'external',
354
+ });
355
+ }
356
+ /**
357
+ * Ends an external drag — the files were dropped, or the drag left the
358
+ * window. Always `cancelled`: whatever the drop produces is inserted by
359
+ * the host once its uploads finish, never by the DnD path.
360
+ */
361
+ onExternalDragEnd() {
362
+ this.lastDragCoords = null;
363
+ this.setDropTarget(null);
364
+ this.setDropTargetIndex(null);
365
+ this.events.next({
366
+ type: DnDEventType.DragEnd,
367
+ target: null,
368
+ dropTarget: null,
369
+ dropTargetIndex: null,
370
+ frameKey: null,
371
+ kind: 'external',
372
+ cancelled: true,
182
373
  });
183
374
  }
184
375
  /**
@@ -186,30 +377,45 @@ export class Monitor {
186
377
  * @param dragCoords - The coordinates where the selection occurred
187
378
  */
188
379
  onSelect(dragCoords) {
189
- if (!this.isInsideFirstRootElement(dragCoords) && !this.trackOutside)
380
+ if (!this.isInsideAnyRootElement(dragCoords) && !this.trackOutside)
190
381
  return;
191
382
  const dropTargets = this.getDropTargets(dragCoords, this.dropElementsTree);
192
383
  const shallowTarget = this.getShallowTarget(dropTargets, dragCoords);
193
384
  this.events.next({
194
385
  type: DnDEventType.Select,
195
386
  dropTarget: shallowTarget,
387
+ frameKey: shallowTarget?.frameKey ?? null,
196
388
  });
197
389
  }
198
390
  /**
199
- * Checks if the given coordinates are inside the first root element.
200
- * @param dragCoords - The coordinates to check
201
- * @returns True if inside the first root element
391
+ * Checks if the given coordinates are inside any root drop element,
392
+ * converting into frame-local space for frame-rooted elements.
202
393
  * @private
203
394
  */
204
- isInsideFirstRootElement(dragCoords) {
205
- const firstRootElement = this.dropElementsTree.entries().next().value;
206
- if (!firstRootElement)
207
- return false;
208
- const [, firstRootTarget] = firstRootElement;
209
- return (firstRootTarget.layout.x <= dragCoords.x &&
210
- firstRootTarget.layout.y <= dragCoords.y &&
211
- firstRootTarget.layout.x + firstRootTarget.layout.width >= dragCoords.x &&
212
- firstRootTarget.layout.y + firstRootTarget.layout.height >= dragCoords.y);
395
+ isInsideAnyRootElement(dragCoords) {
396
+ for (const [, target] of this.dropElementsTree) {
397
+ const coords = target.frameKey
398
+ ? this.toFrameLocal(dragCoords, target.frameKey)
399
+ : dragCoords;
400
+ if (target.layout.x <= coords.x &&
401
+ target.layout.y <= coords.y &&
402
+ target.layout.x + target.layout.width >= coords.x &&
403
+ target.layout.y + target.layout.height >= coords.y) {
404
+ return true;
405
+ }
406
+ }
407
+ return false;
408
+ }
409
+ /**
410
+ * Looks up a registered drop target (with its current layout and frame
411
+ * key) by matching data properties — e.g. `{ id: componentId }`.
412
+ *
413
+ * @param frameKey - Restrict the search to one frame's subtree. Required
414
+ * whenever ids are only unique per frame (every page root shares the id
415
+ * `root`, so an unscoped lookup can return another frame's element).
416
+ */
417
+ getDropTargetByData(dataQuery, frameKey) {
418
+ return this.findDropTargetByData(dataQuery, this.dropElementsTree, null, frameKey ?? null);
213
419
  }
214
420
  /**
215
421
  * Handles external selection by data query.
@@ -220,21 +426,47 @@ export class Monitor {
220
426
  this.events.next({
221
427
  type: DnDEventType.Select,
222
428
  dropTarget: dropTarget,
429
+ frameKey: dropTarget?.frameKey ?? null,
223
430
  });
224
431
  }
225
432
  /**
226
- * Handles the end of a drag operation.
433
+ * Handles the end of a drag operation. Releasing the pointer outside every
434
+ * droppable area cancels the drag: `DragEnd` still fires — overlays, the
435
+ * drag ghost and `isDragging` all reset on it — but carries a null
436
+ * `dropTarget` and `cancelled: true`, so nothing is inserted or moved.
227
437
  */
228
438
  onDragEnd() {
439
+ const dragTargetId = this.getDragTargetId();
440
+ const moveSource = this.moveSource;
229
441
  const dropTarget = this.getDropTarget();
230
- if (!dropTarget)
442
+ // Idempotent: a pan that never became a drag (canvas panning, or a
443
+ // gesture cancelled before activation) must not emit a phantom DragEnd.
444
+ if (!dragTargetId && !moveSource) {
445
+ this.resetDragState();
231
446
  return;
447
+ }
232
448
  this.events.next({
233
449
  type: DnDEventType.DragEnd,
234
- target: this.getDragTargetId(),
450
+ target: dragTargetId,
235
451
  dropTarget: dropTarget,
236
- dropTargetIndex: this.getDropTargetIndex(),
452
+ dropTargetIndex: dropTarget ? this.getDropTargetIndex() : null,
453
+ frameKey: dropTarget?.frameKey ?? null,
454
+ kind: moveSource ? 'move' : 'palette',
455
+ moveSource,
456
+ dragCoords: this.lastDragCoords,
457
+ dragStartCoords: this.dragStartCoords,
458
+ cancelled: !dropTarget,
237
459
  });
460
+ this.resetDragState();
461
+ }
462
+ /**
463
+ * Clears every piece of per-drag state.
464
+ * @private
465
+ */
466
+ resetDragState() {
467
+ this.moveSource = null;
468
+ this.dragStartCoords = null;
469
+ this.lastDragCoords = null;
238
470
  this.setDragTargetId(null);
239
471
  this.setDropTarget(null);
240
472
  this.setDropTargetIndex(null);
@@ -259,6 +491,7 @@ export class Monitor {
259
491
  },
260
492
  canDrop: config?.canDrop,
261
493
  data,
494
+ frameKey: config?.frameKey,
262
495
  });
263
496
  }
264
497
  else {
@@ -322,6 +555,7 @@ export class Monitor {
322
555
  parent.children?.set(id, target);
323
556
  }
324
557
  }
558
+ const frameKey = this.findFrameKeyFor(id, this.dropElementsTree, null);
325
559
  this.events.next({
326
560
  type: DnDEventType.Layout,
327
561
  target: id,
@@ -331,10 +565,31 @@ export class Monitor {
331
565
  layout: target.layout,
332
566
  canDrop: target.canDrop,
333
567
  data: target.data,
568
+ frameKey,
334
569
  },
570
+ frameKey,
335
571
  });
336
572
  }
337
573
  }
574
+ /**
575
+ * Resolves the frame space an element (or any of its ancestors) belongs to.
576
+ * @private
577
+ */
578
+ findFrameKeyFor(id, tree, inherited) {
579
+ if (!tree)
580
+ return null;
581
+ for (const [key, value] of tree) {
582
+ const frameKey = value.frameKey ?? inherited;
583
+ if (key === id) {
584
+ return frameKey;
585
+ }
586
+ const childResult = this.findFrameKeyFor(id, value.children, frameKey);
587
+ if (childResult !== null) {
588
+ return childResult;
589
+ }
590
+ }
591
+ return null;
592
+ }
338
593
  /**
339
594
  * Finds a drop target by ID in the tree structure.
340
595
  * @param id - The ID to search for
@@ -366,14 +621,23 @@ export class Monitor {
366
621
  * @returns The drop target or null if not found
367
622
  * @private
368
623
  */
369
- findDropTargetByData(dataQuery, tree) {
624
+ findDropTargetByData(dataQuery, tree, frameKey, requiredFrameKey) {
370
625
  if (!tree) {
371
626
  return null;
372
627
  }
373
628
  let index = 0;
374
629
  for (const [id, target] of tree) {
375
630
  index++;
376
- if (target.data && this.partialMatch(target.data, dataQuery)) {
631
+ const targetFrameKey = target.frameKey ?? frameKey ?? null;
632
+ // Prune subtrees belonging to other frames when a frame is required.
633
+ if (requiredFrameKey &&
634
+ targetFrameKey &&
635
+ targetFrameKey !== requiredFrameKey) {
636
+ continue;
637
+ }
638
+ if (target.data &&
639
+ this.partialMatch(target.data, dataQuery) &&
640
+ (!requiredFrameKey || targetFrameKey === requiredFrameKey)) {
377
641
  return {
378
642
  id,
379
643
  layout: target.layout,
@@ -381,10 +645,11 @@ export class Monitor {
381
645
  canDrop: target.canDrop,
382
646
  children: target.children,
383
647
  data: target.data,
648
+ frameKey: targetFrameKey,
384
649
  };
385
650
  }
386
651
  if (target.children) {
387
- const childResult = this.findDropTargetByData(dataQuery, target.children);
652
+ const childResult = this.findDropTargetByData(dataQuery, target.children, targetFrameKey, requiredFrameKey);
388
653
  if (childResult) {
389
654
  return childResult;
390
655
  }
@@ -458,7 +723,7 @@ export class Monitor {
458
723
  * @returns Array of drop targets or null if none found
459
724
  * @private
460
725
  */
461
- getDropTargets(dropCoords, tree) {
726
+ getDropTargets(dropCoords, tree, frameKey, excludeId) {
462
727
  const targets = [];
463
728
  if (!tree) {
464
729
  return null;
@@ -466,10 +731,21 @@ export class Monitor {
466
731
  let index = 0;
467
732
  for (const [id, target] of tree) {
468
733
  index++;
469
- if (target.layout.x <= dropCoords.x &&
470
- target.layout.y <= dropCoords.y &&
471
- target.layout.x + target.layout.width >= dropCoords.x &&
472
- target.layout.y + target.layout.height >= dropCoords.y) {
734
+ // Skip the excluded subtree entirely (a moved element can't be its
735
+ // own drop target, nor can any of its descendants).
736
+ if (excludeId != null && id === excludeId) {
737
+ continue;
738
+ }
739
+ // Entering a frame-rooted subtree: convert the pointer into that
740
+ // frame's local space once; all descendant layouts share it.
741
+ const targetFrameKey = target.frameKey ?? frameKey ?? null;
742
+ const coords = target.frameKey
743
+ ? this.toFrameLocal(dropCoords, target.frameKey)
744
+ : dropCoords;
745
+ if (target.layout.x <= coords.x &&
746
+ target.layout.y <= coords.y &&
747
+ target.layout.x + target.layout.width >= coords.x &&
748
+ target.layout.y + target.layout.height >= coords.y) {
473
749
  targets.push({
474
750
  id,
475
751
  layout: target.layout,
@@ -477,9 +753,11 @@ export class Monitor {
477
753
  canDrop: target.canDrop,
478
754
  children: target.children,
479
755
  data: target.data,
756
+ frameKey: targetFrameKey,
757
+ hitCoords: coords,
480
758
  });
481
759
  }
482
- const childTargets = this.getDropTargets(dropCoords, target.children);
760
+ const childTargets = this.getDropTargets(coords, target.children, targetFrameKey, excludeId);
483
761
  if (childTargets) {
484
762
  targets.push(...childTargets);
485
763
  }
@@ -502,12 +780,14 @@ export class Monitor {
502
780
  if (!lastTarget) {
503
781
  return null;
504
782
  }
505
- if (lastTarget.layout.y + this.padding > dragCoords.y ||
783
+ // Compare in the target's own coordinate space (frame-local inside
784
+ // frames); `hitCoords` was attached during hit testing.
785
+ const coords = lastTarget.hitCoords ?? dragCoords;
786
+ if (lastTarget.layout.y + this.padding > coords.y ||
506
787
  lastTarget.layout.y + lastTarget.layout.height - this.padding <
507
- dragCoords.y ||
508
- lastTarget.layout.x + this.padding > dragCoords.x ||
509
- lastTarget.layout.x + lastTarget.layout.width - this.padding <
510
- dragCoords.x) {
788
+ coords.y ||
789
+ lastTarget.layout.x + this.padding > coords.x ||
790
+ lastTarget.layout.x + lastTarget.layout.width - this.padding < coords.x) {
511
791
  return sortedTargets[sortedTargets.length - 2] || lastTarget;
512
792
  }
513
793
  return lastTarget;
@@ -1 +1 @@
1
- {"version":3,"file":"Monitor.js","sourceRoot":"","sources":["../../src/monitor/Monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Monitor.js","sourceRoot":"","sources":["../../src/monitor/Monitor.ts"],"names":[],"mappings":"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"}