@pixerate/editor 0.254.0 → 0.254.1

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.
@@ -39,6 +39,12 @@ export interface CanvasChange<TNode extends CanvasNode = CanvasNode, TEdge exten
39
39
  };
40
40
  /** A node is being dragged or resized: more changes of the same gesture will follow. */
41
41
  inGesture: boolean;
42
+ /**
43
+ * The drag or resize that earlier changes reported (`inGesture`) has ended. Set on the first
44
+ * change after it, which the feed reports even when nothing else changed: a drop often only
45
+ * clears the runtime `dragging` flag, and followers need to know the gesture is over.
46
+ */
47
+ gestureEnded?: true;
42
48
  /** Milliseconds since the epoch. */
43
49
  at: number;
44
50
  }
@@ -39,6 +39,12 @@ export interface CanvasChange<TNode extends CanvasNode = CanvasNode, TEdge exten
39
39
  };
40
40
  /** A node is being dragged or resized: more changes of the same gesture will follow. */
41
41
  inGesture: boolean;
42
+ /**
43
+ * The drag or resize that earlier changes reported (`inGesture`) has ended. Set on the first
44
+ * change after it, which the feed reports even when nothing else changed: a drop often only
45
+ * clears the runtime `dragging` flag, and followers need to know the gesture is over.
46
+ */
47
+ gestureEnded?: true;
42
48
  /** Milliseconds since the epoch. */
43
49
  at: number;
44
50
  }
@@ -12440,6 +12440,8 @@ function createCanvasChangeFeed(options) {
12440
12440
  let edges = options.getEdges();
12441
12441
  let seq = 0;
12442
12442
  let pending;
12443
+ const gesturing = (list) => list.some((n3) => n3.dragging || n3.resizing);
12444
+ let wasInGesture = gesturing(nodes);
12443
12445
  const check = () => {
12444
12446
  const nextNodes = options.getNodes();
12445
12447
  const nextEdges = options.getEdges();
@@ -12471,8 +12473,11 @@ function createCanvasChangeFeed(options) {
12471
12473
  const selectionChanged = selBefore.length !== selAfter.length || selBefore.some((id, i) => id !== selAfter[i]);
12472
12474
  nodes = nextNodes;
12473
12475
  edges = nextEdges;
12476
+ const inGesture = gesturing(nextNodes);
12477
+ const gestureEnded = wasInGesture && !inGesture;
12478
+ wasInGesture = inGesture;
12474
12479
  const edited = addedNodes.length + removedNodes.length + changedNodes.length + addedEdges.length + removedEdges.length + changedEdges.length > 0;
12475
- if (!edited && !selectionChanged) return null;
12480
+ if (!edited && !selectionChanged && !gestureEnded) return null;
12476
12481
  const commit = edited ? pending : void 0;
12477
12482
  if (edited) pending = void 0;
12478
12483
  const change = {
@@ -12486,7 +12491,8 @@ function createCanvasChangeFeed(options) {
12486
12491
  removedEdges,
12487
12492
  changedEdges,
12488
12493
  ...selectionChanged ? { selection: { before: selBefore, after: selAfter } } : {},
12489
- inGesture: nextNodes.some((n3) => n3.dragging || n3.resizing),
12494
+ inGesture,
12495
+ ...gestureEnded ? { gestureEnded: true } : {},
12490
12496
  at: now()
12491
12497
  };
12492
12498
  listeners.forEach((l) => l(change));
@@ -12511,6 +12517,7 @@ function createCanvasChangeFeed(options) {
12511
12517
  nodes = options.getNodes();
12512
12518
  edges = options.getEdges();
12513
12519
  pending = void 0;
12520
+ wasInGesture = gesturing(nodes);
12514
12521
  },
12515
12522
  noteCommit,
12516
12523
  dispose: () => {
@@ -12440,6 +12440,8 @@ function createCanvasChangeFeed(options) {
12440
12440
  let edges = options.getEdges();
12441
12441
  let seq = 0;
12442
12442
  let pending;
12443
+ const gesturing = (list) => list.some((n3) => n3.dragging || n3.resizing);
12444
+ let wasInGesture = gesturing(nodes);
12443
12445
  const check = () => {
12444
12446
  const nextNodes = options.getNodes();
12445
12447
  const nextEdges = options.getEdges();
@@ -12471,8 +12473,11 @@ function createCanvasChangeFeed(options) {
12471
12473
  const selectionChanged = selBefore.length !== selAfter.length || selBefore.some((id, i) => id !== selAfter[i]);
12472
12474
  nodes = nextNodes;
12473
12475
  edges = nextEdges;
12476
+ const inGesture = gesturing(nextNodes);
12477
+ const gestureEnded = wasInGesture && !inGesture;
12478
+ wasInGesture = inGesture;
12474
12479
  const edited = addedNodes.length + removedNodes.length + changedNodes.length + addedEdges.length + removedEdges.length + changedEdges.length > 0;
12475
- if (!edited && !selectionChanged) return null;
12480
+ if (!edited && !selectionChanged && !gestureEnded) return null;
12476
12481
  const commit = edited ? pending : void 0;
12477
12482
  if (edited) pending = void 0;
12478
12483
  const change = {
@@ -12486,7 +12491,8 @@ function createCanvasChangeFeed(options) {
12486
12491
  removedEdges,
12487
12492
  changedEdges,
12488
12493
  ...selectionChanged ? { selection: { before: selBefore, after: selAfter } } : {},
12489
- inGesture: nextNodes.some((n3) => n3.dragging || n3.resizing),
12494
+ inGesture,
12495
+ ...gestureEnded ? { gestureEnded: true } : {},
12490
12496
  at: now()
12491
12497
  };
12492
12498
  listeners.forEach((l) => l(change));
@@ -12511,6 +12517,7 @@ function createCanvasChangeFeed(options) {
12511
12517
  nodes = options.getNodes();
12512
12518
  edges = options.getEdges();
12513
12519
  pending = void 0;
12520
+ wasInGesture = gesturing(nodes);
12514
12521
  },
12515
12522
  noteCommit,
12516
12523
  dispose: () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor",
3
- "version": "0.254.0",
3
+ "version": "0.254.1",
4
4
  "description": "UI-agnostic rich text and media editing core library",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",