@mhamz.01/easyflow-whiteboard 1.11.0 → 1.13.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":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAM9C,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;CAC/C;AAaD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,KAAK,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAc,EACd,cAA+B,EAC/B,YAAmB,EACnB,qBAA0B,EAC1B,YAAY,GACb,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"custom-node-overlay-layer.d.ts","sourceRoot":"","sources":["../../../src/components/node/custom-node-overlay-layer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAM9C,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;CAC/C;AAaD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,KAAK,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,UAAc,EACd,cAA+B,EAC/B,YAAmB,EACnB,qBAA0B,EAC1B,YAAY,GACb,EAAE,uBAAuB,2CA+czB"}
|
|
@@ -22,57 +22,6 @@ export default function CanvasOverlayLayer({ tasks, documents, onTasksUpdate, on
|
|
|
22
22
|
// ── Sync props → local state ────────────────────────────────────────────────
|
|
23
23
|
useEffect(() => { setLocalTasks(tasks); }, [tasks]);
|
|
24
24
|
useEffect(() => { setLocalDocuments(documents); }, [documents]);
|
|
25
|
-
// ----Sync with Fabric canvas-------------------------------------------------
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
const canvas = fabricCanvas?.current;
|
|
28
|
-
if (!canvas)
|
|
29
|
-
return;
|
|
30
|
-
const handleSelectionCleared = () => {
|
|
31
|
-
setSelectedIds(new Set());
|
|
32
|
-
};
|
|
33
|
-
const handleMouseDown = (e) => {
|
|
34
|
-
if (!e.target) {
|
|
35
|
-
setSelectedIds(new Set());
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
canvas.on("selection:cleared", handleSelectionCleared);
|
|
39
|
-
canvas.on("mouse:down", handleMouseDown);
|
|
40
|
-
return () => {
|
|
41
|
-
canvas.off("selection:cleared", handleSelectionCleared);
|
|
42
|
-
canvas.off("mouse:down", handleMouseDown);
|
|
43
|
-
};
|
|
44
|
-
}, [fabricCanvas]);
|
|
45
|
-
// 3. Update your existing keyboard handler to include clearing on click outside
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
const handleKeyDown = (e) => {
|
|
48
|
-
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement)
|
|
49
|
-
return;
|
|
50
|
-
// Clear selection on Escape
|
|
51
|
-
if (e.key === "Escape") {
|
|
52
|
-
setSelectedIds(new Set());
|
|
53
|
-
fabricCanvas?.current?.discardActiveObject();
|
|
54
|
-
fabricCanvas?.current?.renderAll();
|
|
55
|
-
}
|
|
56
|
-
// Select All
|
|
57
|
-
if ((e.ctrlKey || e.metaKey) && e.key === "a") {
|
|
58
|
-
e.preventDefault();
|
|
59
|
-
setSelectedIds(new Set([...localTasks.map((t) => t.id), ...localDocuments.map((d) => d.id)]));
|
|
60
|
-
}
|
|
61
|
-
// Delete
|
|
62
|
-
if ((e.key === "Delete" || e.key === "Backspace") && selectedIds.size > 0) {
|
|
63
|
-
e.preventDefault();
|
|
64
|
-
const updatedTasks = localTasks.filter((t) => !selectedIds.has(t.id));
|
|
65
|
-
const updatedDocs = localDocuments.filter((d) => !selectedIds.has(d.id));
|
|
66
|
-
setLocalTasks(updatedTasks);
|
|
67
|
-
setLocalDocuments(updatedDocs);
|
|
68
|
-
setSelectedIds(new Set());
|
|
69
|
-
onTasksUpdate?.(updatedTasks);
|
|
70
|
-
onDocumentsUpdate?.(updatedDocs);
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
74
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
75
|
-
}, [localTasks, localDocuments, selectedIds, fabricCanvas, onTasksUpdate, onDocumentsUpdate]);
|
|
76
25
|
// ── Event Forwarding (Fixes Zooming on Nodes) ───────────────────────────────
|
|
77
26
|
const handleOverlayWheel = (e) => {
|
|
78
27
|
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
@@ -395,13 +344,8 @@ export default function CanvasOverlayLayer({ tasks, documents, onTasksUpdate, on
|
|
|
395
344
|
}, children: children }, id));
|
|
396
345
|
};
|
|
397
346
|
return (_jsx("div", { ref: overlayRef, className: "absolute inset-0 pointer-events-none", style: { zIndex: 50 }, onWheel: handleOverlayWheel, onClick: (e) => {
|
|
398
|
-
|
|
399
|
-
if (e.target === e.currentTarget) {
|
|
347
|
+
if (e.target === e.currentTarget)
|
|
400
348
|
setSelectedIds(new Set());
|
|
401
|
-
// Also clear Fabric selection
|
|
402
|
-
fabricCanvas?.current?.discardActiveObject();
|
|
403
|
-
fabricCanvas?.current?.renderAll();
|
|
404
|
-
}
|
|
405
349
|
}, children: _jsxs("div", { className: "absolute top-0 left-0 pointer-events-none", style: {
|
|
406
350
|
transform: `translate(${canvasViewport.x}px, ${canvasViewport.y}px)`,
|
|
407
351
|
transformOrigin: "top left",
|