@mhamz.01/easyflow-whiteboard 2.151.0 → 2.152.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,wBA2qBG"}
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,wBAyrBG"}
@@ -19,6 +19,7 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
19
19
  const selectedIdsRef = useRef(selectedIds);
20
20
  const isHtmlSelectingRef = useRef(false);
21
21
  const isSelectionBoxActiveRef = useRef(false);
22
+ const htmlNodesSelectedByBoxRef = useRef(false);
22
23
  localTasksRef.current = localTasks;
23
24
  localDocumentsRef.current = localDocuments;
24
25
  selectedIdsRef.current = selectedIds;
@@ -157,6 +158,7 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
157
158
  return;
158
159
  if (isSelectionBoxActiveRef.current)
159
160
  return;
161
+ htmlNodesSelectedByBoxRef.current = false;
160
162
  setSelectedIds(new Set());
161
163
  };
162
164
  // const handleSelectionCleared = () => {
@@ -167,6 +169,8 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
167
169
  return; // ← skip if HTML node initiated this
168
170
  if (isSelectionBoxActiveRef.current)
169
171
  return; // ← add this
172
+ if (htmlNodesSelectedByBoxRef.current)
173
+ return;
170
174
  setSelectedIds(new Set());
171
175
  };
172
176
  const handleFabricSelectionUpdated = () => {
@@ -174,6 +178,8 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
174
178
  return; // ← skip if HTML node initiated this
175
179
  if (isSelectionBoxActiveRef.current)
176
180
  return; // ← add this
181
+ if (htmlNodesSelectedByBoxRef.current)
182
+ return;
177
183
  setSelectedIds(new Set());
178
184
  };
179
185
  canvas.on("object:moving", handleObjectMoving);
@@ -232,13 +238,17 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
232
238
  }
233
239
  // ── O(n) equality check: size first (fast path), then membership ──
234
240
  setSelectedIds((prev) => {
235
- if (prev.size !== newSelected.size)
241
+ if (prev.size !== newSelected.size) {
242
+ htmlNodesSelectedByBoxRef.current = newSelected.size > 0; // ← track if any HTML nodes selected
236
243
  return newSelected;
244
+ }
237
245
  for (const id of newSelected) {
238
- if (!prev.has(id))
239
- return newSelected; // found a difference, swap
246
+ if (!prev.has(id)) {
247
+ htmlNodesSelectedByBoxRef.current = newSelected.size > 0;
248
+ return newSelected;
249
+ }
240
250
  }
241
- return prev; // identical — return same reference, no re-render
251
+ return prev;
242
252
  });
243
253
  }, [selectionBox, localTasks, localDocuments, canvasZoom, canvasViewport]);
244
254
  // ── Drag start (HTML Node side) ──────────────────────────────────────────────
@@ -419,6 +429,7 @@ export default React.memo(function CanvasOverlayLayer({ tasks, documents, onTask
419
429
  canvas.requestRenderAll();
420
430
  isHtmlSelectingRef.current = false; // ← reset immediately
421
431
  }
432
+ htmlNodesSelectedByBoxRef.current = false;
422
433
  if (e?.shiftKey || e?.ctrlKey || e?.metaKey) {
423
434
  setSelectedIds((prev) => {
424
435
  const next = new Set(prev);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhamz.01/easyflow-whiteboard",
3
- "version": "2.151.0",
3
+ "version": "2.152.0",
4
4
  "description": "A feature-rich whiteboard component built with Fabric.js and React",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",