@mhamz.01/easyflow-whiteboard 2.155.0 → 2.157.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-node-overlay-layer.d.ts","sourceRoot":"","sources":["../../../src/components/node/custom-node-overlay-layer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI9C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE,qBAAqB,CAAC,EAAE,YAAY,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,CAAC;CAC5D;;AAaD,
|
|
1
|
+
{"version":3,"file":"custom-node-overlay-layer.d.ts","sourceRoot":"","sources":["../../../src/components/node/custom-node-overlay-layer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI9C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzE,qBAAqB,CAAC,EAAE,YAAY,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,CAAC;CAC5D;;AAaD,wBA2tBG"}
|
|
@@ -311,26 +311,21 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
|
|
|
311
311
|
const liveActiveObjects = canvas.getActiveObjects();
|
|
312
312
|
const activeSelection = canvas.getActiveObject();
|
|
313
313
|
const canvasObjectsStartPos = new Map();
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
// children, whose left/top are relative to the group's center. Writing
|
|
318
|
-
// world-space deltas into a child's left/top while it's still parented
|
|
319
|
-
// to the group double-transforms it on render, causing drift.
|
|
320
|
-
canvasObjectsStartPos.set(activeSelection, {
|
|
321
|
-
left: activeSelection.left || 0,
|
|
322
|
-
top: activeSelection.top || 0,
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
liveActiveObjects.forEach((obj) => {
|
|
327
|
-
// Single object — left/top IS world position
|
|
314
|
+
liveActiveObjects.forEach((obj) => {
|
|
315
|
+
if (activeSelection && activeSelection.type === "activeSelection") {
|
|
316
|
+
// Store group-relative left/top, NOT world transform
|
|
328
317
|
canvasObjectsStartPos.set(obj, {
|
|
329
318
|
left: obj.left || 0,
|
|
330
319
|
top: obj.top || 0,
|
|
331
320
|
});
|
|
332
|
-
}
|
|
333
|
-
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
canvasObjectsStartPos.set(obj, {
|
|
324
|
+
left: obj.left || 0,
|
|
325
|
+
top: obj.top || 0,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
});
|
|
334
329
|
// 10. Commit to the ref for the requestAnimationFrame loop
|
|
335
330
|
dragStateRef.current = {
|
|
336
331
|
isDragging: true,
|
|
@@ -414,6 +409,23 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
|
|
|
414
409
|
});
|
|
415
410
|
obj.setCoords(); // Required for selection/intersection accuracy
|
|
416
411
|
});
|
|
412
|
+
const activeObj = canvas.getActiveObject();
|
|
413
|
+
if (activeObj && activeObj.type === "activeSelection") {
|
|
414
|
+
// Snapshot the group's start position once
|
|
415
|
+
// Move the group as a whole — Fabric will keep members' relative offsets intact
|
|
416
|
+
const groupStart = dragStateRef.current.canvasObjectsStartPos.get(activeObj);
|
|
417
|
+
if (groupStart) {
|
|
418
|
+
activeObj.set({ left: groupStart.left + deltaX, top: groupStart.top + deltaY });
|
|
419
|
+
activeObj.setCoords();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
// Single objects — move individually as before
|
|
424
|
+
canvasObjectsStartPos.forEach((startPos, obj) => {
|
|
425
|
+
obj.set({ left: startPos.left + deltaX, top: startPos.top + deltaY });
|
|
426
|
+
obj.setCoords();
|
|
427
|
+
});
|
|
428
|
+
}
|
|
417
429
|
// 8. Single render call for all Fabric changes
|
|
418
430
|
canvas.requestRenderAll();
|
|
419
431
|
});
|