canvu-react 0.3.27 → 0.3.28

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.
package/dist/react.js CHANGED
@@ -7463,7 +7463,14 @@ var VectorViewport = forwardRef(
7463
7463
  onPlacementPreviewChangeRef.current = onPlacementPreviewChange;
7464
7464
  const directRemoteStrokePreviewRef = useRef(false);
7465
7465
  const remoteStrokePreviewFrameRef = useRef(null);
7466
+ const remoteStrokePreviewClearTimerRef = useRef(null);
7466
7467
  const pendingRemoteStrokePreviewRef = useRef(null);
7468
+ const cancelPendingRemoteStrokePreviewClear = useCallback(() => {
7469
+ if (remoteStrokePreviewClearTimerRef.current != null) {
7470
+ clearTimeout(remoteStrokePreviewClearTimerRef.current);
7471
+ remoteStrokePreviewClearTimerRef.current = null;
7472
+ }
7473
+ }, []);
7467
7474
  const flushRemoteStrokePreviewWithStyle = useCallback(() => {
7468
7475
  remoteStrokePreviewFrameRef.current = null;
7469
7476
  const pending = pendingRemoteStrokePreviewRef.current;
@@ -7478,6 +7485,7 @@ var VectorViewport = forwardRef(
7478
7485
  const emitRemoteStrokePreview = useCallback(
7479
7486
  (tool, points) => {
7480
7487
  if (tool === "laser") return;
7488
+ cancelPendingRemoteStrokePreviewClear();
7481
7489
  directRemoteStrokePreviewRef.current = true;
7482
7490
  pendingRemoteStrokePreviewRef.current = { tool, points };
7483
7491
  if (remoteStrokePreviewFrameRef.current != null) return;
@@ -7485,17 +7493,22 @@ var VectorViewport = forwardRef(
7485
7493
  flushRemoteStrokePreviewWithStyle
7486
7494
  );
7487
7495
  },
7488
- [flushRemoteStrokePreviewWithStyle]
7496
+ [cancelPendingRemoteStrokePreviewClear, flushRemoteStrokePreviewWithStyle]
7489
7497
  );
7498
+ const REMOTE_STROKE_PREVIEW_HOLD_MS = 350;
7490
7499
  const emitRemoteStrokePreviewClear = useCallback(() => {
7491
7500
  if (remoteStrokePreviewFrameRef.current != null) {
7492
7501
  cancelAnimationFrame(remoteStrokePreviewFrameRef.current);
7493
7502
  remoteStrokePreviewFrameRef.current = null;
7494
7503
  }
7495
- pendingRemoteStrokePreviewRef.current = null;
7496
- directRemoteStrokePreviewRef.current = false;
7497
- onPlacementPreviewChangeRef.current?.(null);
7498
- }, []);
7504
+ cancelPendingRemoteStrokePreviewClear();
7505
+ remoteStrokePreviewClearTimerRef.current = window.setTimeout(() => {
7506
+ remoteStrokePreviewClearTimerRef.current = null;
7507
+ pendingRemoteStrokePreviewRef.current = null;
7508
+ directRemoteStrokePreviewRef.current = false;
7509
+ onPlacementPreviewChangeRef.current?.(null);
7510
+ }, REMOTE_STROKE_PREVIEW_HOLD_MS);
7511
+ }, [cancelPendingRemoteStrokePreviewClear]);
7499
7512
  const overlayCameraTickRef = useRef(false);
7500
7513
  overlayCameraTickRef.current = interactive || remotePresence != null && remotePresence.length > 0 || presenceOverlay != null;
7501
7514
  const pruneEraserTrail = useCallback(
@@ -7748,6 +7761,9 @@ var VectorViewport = forwardRef(
7748
7761
  if (remoteStrokePreviewFrameRef.current != null) {
7749
7762
  cancelAnimationFrame(remoteStrokePreviewFrameRef.current);
7750
7763
  }
7764
+ if (remoteStrokePreviewClearTimerRef.current != null) {
7765
+ clearTimeout(remoteStrokePreviewClearTimerRef.current);
7766
+ }
7751
7767
  };
7752
7768
  }, []);
7753
7769
  useEffect(() => {