canvu-react 0.4.57 → 0.4.58

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/native.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import getStroke from 'perfect-freehand';
2
2
  import { Group, Canvas, Rect, Circle, Path, RoundedRect, Oval, DashPathEffect, Line, vec, matchFont, Text as Text$1, Image } from '@shopify/react-native-skia';
3
- import { memo, forwardRef, useState, useRef, useEffect, useCallback, useMemo, useImperativeHandle } from 'react';
3
+ import { memo, forwardRef, useState, useImperativeHandle, useRef, useEffect, useCallback, useMemo } from 'react';
4
4
  import { StyleSheet, PanResponder, View, Modal, Text, TextInput, Pressable, ScrollView, Image as Image$1 } from 'react-native';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
 
@@ -5541,6 +5541,58 @@ function NativeSelectionContextMenuButton({
5541
5541
  }
5542
5542
  );
5543
5543
  }
5544
+ var NativeCameraRenderLayer = forwardRef(function NativeCameraRenderLayer2({
5545
+ items,
5546
+ camera,
5547
+ width,
5548
+ height,
5549
+ interactive,
5550
+ selectedItems,
5551
+ showResizeHandles,
5552
+ placementPreview,
5553
+ laserTrail,
5554
+ eraserTrail,
5555
+ eraserPreviewItems,
5556
+ previewStrokeStyle,
5557
+ remotePresence
5558
+ }, ref) {
5559
+ const [cameraTick, setCameraTick] = useState(0);
5560
+ useImperativeHandle(
5561
+ ref,
5562
+ () => ({
5563
+ requestRender: () => setCameraTick((n) => n + 1)
5564
+ }),
5565
+ []
5566
+ );
5567
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5568
+ /* @__PURE__ */ jsx(
5569
+ NativeSceneRenderer,
5570
+ {
5571
+ items,
5572
+ camera,
5573
+ width,
5574
+ height,
5575
+ renderTick: cameraTick
5576
+ }
5577
+ ),
5578
+ interactive && /* @__PURE__ */ jsx(
5579
+ NativeInteractionOverlay,
5580
+ {
5581
+ camera,
5582
+ width,
5583
+ height,
5584
+ selectedItems,
5585
+ showResizeHandles,
5586
+ placementPreview,
5587
+ laserTrail,
5588
+ eraserTrail,
5589
+ eraserPreviewItems,
5590
+ previewStrokeStyle,
5591
+ remotePresence
5592
+ }
5593
+ )
5594
+ ] });
5595
+ });
5544
5596
  var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
5545
5597
  items,
5546
5598
  selectedIds = [],
@@ -5568,6 +5620,7 @@ var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
5568
5620
  }, ref) {
5569
5621
  const [size, setSize] = useState({ width: 0, height: 0 });
5570
5622
  const cameraRef = useRef(null);
5623
+ const cameraRenderLayerRef = useRef(null);
5571
5624
  const toolIdRef = useRef(toolId);
5572
5625
  toolIdRef.current = toolId;
5573
5626
  const toolLockedRef = useRef(toolLocked);
@@ -5762,7 +5815,6 @@ var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
5762
5815
  cameraRef.current = new Camera2D({ minZoom: 0.05, maxZoom: 32 });
5763
5816
  }
5764
5817
  const camera = cameraRef.current;
5765
- const [cameraTick, setCameraTick] = useState(0);
5766
5818
  const selectedItems = useMemo(
5767
5819
  () => activeItems.filter((item) => selectedIds.includes(item.id)),
5768
5820
  [activeItems, selectedIds]
@@ -5839,7 +5891,7 @@ var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
5839
5891
  onWorldPointerLeaveRef.current?.();
5840
5892
  }, []);
5841
5893
  const requestRender = useCallback(() => {
5842
- setCameraTick((n) => n + 1);
5894
+ cameraRenderLayerRef.current?.requestRender();
5843
5895
  onCameraChangeRef.current?.();
5844
5896
  }, []);
5845
5897
  const onLayout = useCallback((e) => {
@@ -6746,7 +6798,7 @@ var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
6746
6798
  const nativeLinkCanSubmit = pendingNativeLinkRequest !== null && normalizedNativeLinkHref !== null && onItemsChange != null;
6747
6799
  return /* @__PURE__ */ jsxs(View, { style: { flex: 1, overflow: "hidden" }, onLayout, children: [
6748
6800
  size.width > 0 && size.height > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
6749
- /* @__PURE__ */ jsxs(
6801
+ /* @__PURE__ */ jsx(
6750
6802
  View,
6751
6803
  {
6752
6804
  style: StyleSheet.absoluteFill,
@@ -6759,34 +6811,25 @@ var NativeVectorViewport = forwardRef(function NativeVectorViewport2({
6759
6811
  notifyWorldPointerLeave();
6760
6812
  },
6761
6813
  ...panResponder.panHandlers,
6762
- children: [
6763
- /* @__PURE__ */ jsx(
6764
- NativeSceneRenderer,
6765
- {
6766
- items: sceneItems,
6767
- camera,
6768
- width: size.width,
6769
- height: size.height,
6770
- renderTick: cameraTick
6771
- }
6772
- ),
6773
- interactive && /* @__PURE__ */ jsx(
6774
- NativeInteractionOverlay,
6775
- {
6776
- camera,
6777
- width: size.width,
6778
- height: size.height,
6779
- selectedItems,
6780
- showResizeHandles,
6781
- placementPreview,
6782
- laserTrail,
6783
- eraserTrail,
6784
- eraserPreviewItems,
6785
- previewStrokeStyle: strokeStyleState,
6786
- remotePresence
6787
- }
6788
- )
6789
- ]
6814
+ children: /* @__PURE__ */ jsx(
6815
+ NativeCameraRenderLayer,
6816
+ {
6817
+ ref: cameraRenderLayerRef,
6818
+ items: sceneItems,
6819
+ camera,
6820
+ width: size.width,
6821
+ height: size.height,
6822
+ interactive,
6823
+ selectedItems,
6824
+ showResizeHandles,
6825
+ placementPreview,
6826
+ laserTrail,
6827
+ eraserTrail,
6828
+ eraserPreviewItems,
6829
+ previewStrokeStyle: strokeStyleState,
6830
+ remotePresence
6831
+ }
6832
+ )
6790
6833
  }
6791
6834
  ),
6792
6835
  overlay ? /* @__PURE__ */ jsx(