@shopify/react-native-skia 1.9.1 → 1.10.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.
Files changed (80) hide show
  1. package/lib/commonjs/index.d.ts +1 -1
  2. package/lib/commonjs/index.js +8 -8
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/renderer/Canvas.d.ts +9 -10
  5. package/lib/commonjs/renderer/Canvas.js +67 -59
  6. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  7. package/lib/commonjs/renderer/CanvasOld.d.ts +11 -0
  8. package/lib/commonjs/renderer/CanvasOld.js +96 -0
  9. package/lib/commonjs/renderer/CanvasOld.js.map +1 -0
  10. package/lib/commonjs/sksg/Container.js +11 -6
  11. package/lib/commonjs/sksg/Container.js.map +1 -1
  12. package/lib/commonjs/sksg/HostConfig2.d.ts +19 -0
  13. package/lib/commonjs/sksg/HostConfig2.js +159 -0
  14. package/lib/commonjs/sksg/HostConfig2.js.map +1 -0
  15. package/lib/commonjs/sksg/Recorder/Core.js +1 -0
  16. package/lib/commonjs/sksg/Recorder/Core.js.map +1 -1
  17. package/lib/commonjs/sksg/Recorder/Player.js +2 -2
  18. package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
  19. package/lib/commonjs/sksg/Recorder/Recorder.js +0 -1
  20. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  21. package/lib/module/index.d.ts +1 -1
  22. package/lib/module/index.js +1 -1
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/renderer/Canvas.d.ts +9 -10
  25. package/lib/module/renderer/Canvas.js +65 -55
  26. package/lib/module/renderer/Canvas.js.map +1 -1
  27. package/lib/module/renderer/CanvasOld.d.ts +11 -0
  28. package/lib/module/renderer/CanvasOld.js +87 -0
  29. package/lib/module/renderer/CanvasOld.js.map +1 -0
  30. package/lib/module/sksg/Container.js +11 -6
  31. package/lib/module/sksg/Container.js.map +1 -1
  32. package/lib/module/sksg/HostConfig2.d.ts +19 -0
  33. package/lib/module/sksg/HostConfig2.js +152 -0
  34. package/lib/module/sksg/HostConfig2.js.map +1 -0
  35. package/lib/module/sksg/Recorder/Core.js +1 -0
  36. package/lib/module/sksg/Recorder/Core.js.map +1 -1
  37. package/lib/module/sksg/Recorder/Player.js +2 -2
  38. package/lib/module/sksg/Recorder/Player.js.map +1 -1
  39. package/lib/module/sksg/Recorder/Recorder.js +0 -1
  40. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  41. package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +2 -2
  42. package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +3 -0
  43. package/lib/typescript/lib/commonjs/sksg/HostConfig2.d.ts +44 -0
  44. package/lib/typescript/lib/module/index.d.ts +1 -1
  45. package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -3
  46. package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +3 -0
  47. package/lib/typescript/lib/module/sksg/HostConfig2.d.ts +43 -0
  48. package/lib/typescript/src/index.d.ts +1 -1
  49. package/lib/typescript/src/renderer/Canvas.d.ts +9 -10
  50. package/lib/typescript/src/renderer/CanvasOld.d.ts +11 -0
  51. package/lib/typescript/src/sksg/HostConfig2.d.ts +19 -0
  52. package/package.json +1 -1
  53. package/src/index.ts +1 -1
  54. package/src/renderer/Canvas.tsx +80 -78
  55. package/src/renderer/CanvasOld.tsx +126 -0
  56. package/src/sksg/Container.ts +6 -2
  57. package/src/sksg/HostConfig2.ts +247 -0
  58. package/src/sksg/Recorder/Core.ts +1 -0
  59. package/src/sksg/Recorder/Player.ts +2 -2
  60. package/src/sksg/Recorder/Recorder.ts +0 -1
  61. package/lib/commonjs/renderer/Canvas2.d.ts +0 -10
  62. package/lib/commonjs/renderer/Canvas2.js +0 -104
  63. package/lib/commonjs/renderer/Canvas2.js.map +0 -1
  64. package/lib/commonjs/renderer/Canvas2.web.d.ts +0 -3
  65. package/lib/commonjs/renderer/Canvas2.web.js +0 -9
  66. package/lib/commonjs/renderer/Canvas2.web.js.map +0 -1
  67. package/lib/module/renderer/Canvas2.d.ts +0 -10
  68. package/lib/module/renderer/Canvas2.js +0 -97
  69. package/lib/module/renderer/Canvas2.js.map +0 -1
  70. package/lib/module/renderer/Canvas2.web.d.ts +0 -3
  71. package/lib/module/renderer/Canvas2.web.js +0 -3
  72. package/lib/module/renderer/Canvas2.web.js.map +0 -1
  73. package/lib/typescript/lib/commonjs/renderer/Canvas2.d.ts +0 -3
  74. package/lib/typescript/lib/commonjs/renderer/Canvas2.web.d.ts +0 -2
  75. package/lib/typescript/lib/module/renderer/Canvas2.d.ts +0 -1
  76. package/lib/typescript/lib/module/renderer/Canvas2.web.d.ts +0 -1
  77. package/lib/typescript/src/renderer/Canvas2.d.ts +0 -10
  78. package/lib/typescript/src/renderer/Canvas2.web.d.ts +0 -3
  79. package/src/renderer/Canvas2.tsx +0 -128
  80. package/src/renderer/Canvas2.web.tsx +0 -6
@@ -1,128 +0,0 @@
1
- import {
2
- forwardRef,
3
- useCallback,
4
- useEffect,
5
- useImperativeHandle,
6
- useMemo,
7
- useRef,
8
- } from "react";
9
- import type { LayoutChangeEvent, ViewProps } from "react-native";
10
- import type { SharedValue } from "react-native-reanimated";
11
-
12
- import { SkiaViewNativeId } from "../views/SkiaViewNativeId";
13
- import SkiaPictureViewNativeComponent from "../specs/SkiaPictureViewNativeComponent";
14
- import type { SkRect, SkSize } from "../skia/types";
15
- import { SkiaSGRoot } from "../sksg/Reconciler";
16
- import { Skia } from "../skia";
17
- import type { SkiaBaseViewProps } from "../views";
18
-
19
- const NativeSkiaPictureView = SkiaPictureViewNativeComponent;
20
-
21
- // TODO: no need to go through the JS thread for this
22
- const useOnSizeEvent = (
23
- resultValue: SkiaBaseViewProps["onSize"],
24
- onLayout?: (event: LayoutChangeEvent) => void
25
- ) => {
26
- return useCallback(
27
- (event: LayoutChangeEvent) => {
28
- if (onLayout) {
29
- onLayout(event);
30
- }
31
- const { width, height } = event.nativeEvent.layout;
32
-
33
- if (resultValue) {
34
- resultValue.value = { width, height };
35
- }
36
- },
37
- [onLayout, resultValue]
38
- );
39
- };
40
-
41
- export interface Canvas2Props extends ViewProps {
42
- debug?: boolean;
43
- opaque?: boolean;
44
- onSize?: SharedValue<SkSize>;
45
- mode?: "continuous" | "default";
46
- }
47
-
48
- export const Canvas2 = forwardRef(
49
- (
50
- {
51
- mode,
52
- debug,
53
- opaque,
54
- children,
55
- onSize,
56
- onLayout: _onLayout,
57
- ...viewProps
58
- }: Canvas2Props,
59
- ref
60
- ) => {
61
- const rafId = useRef<number | null>(null);
62
- const onLayout = useOnSizeEvent(onSize, _onLayout);
63
- // Native ID
64
- const nativeId = useMemo(() => {
65
- return SkiaViewNativeId.current++;
66
- }, []);
67
-
68
- // Root
69
- const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);
70
-
71
- // Render effects
72
- useEffect(() => {
73
- root.render(children);
74
- }, [children, root]);
75
-
76
- useEffect(() => {
77
- return () => {
78
- root.unmount();
79
- };
80
- }, [root]);
81
-
82
- const requestRedraw = useCallback(() => {
83
- rafId.current = requestAnimationFrame(() => {
84
- root.render(children);
85
- if (mode === "continuous") {
86
- requestRedraw();
87
- }
88
- });
89
- }, [children, mode, root]);
90
-
91
- useEffect(() => {
92
- if (mode === "continuous") {
93
- requestRedraw();
94
- }
95
- return () => {
96
- if (rafId.current !== null) {
97
- cancelAnimationFrame(rafId.current);
98
- }
99
- };
100
- }, [mode, requestRedraw]);
101
-
102
- // Component methods
103
- useImperativeHandle(ref, () => ({
104
- makeImageSnapshot: (rect?: SkRect) => {
105
- return SkiaViewApi.makeImageSnapshot(nativeId, rect);
106
- },
107
- makeImageSnapshotAsync: (rect?: SkRect) => {
108
- return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);
109
- },
110
- redraw: () => {
111
- SkiaViewApi.requestRedraw(nativeId);
112
- },
113
- getNativeId: () => {
114
- return nativeId;
115
- },
116
- }));
117
- return (
118
- <NativeSkiaPictureView
119
- collapsable={false}
120
- nativeID={`${nativeId}`}
121
- debug={debug}
122
- opaque={opaque}
123
- onLayout={onLayout}
124
- {...viewProps}
125
- />
126
- );
127
- }
128
- );
@@ -1,6 +0,0 @@
1
- import type { CanvasProps } from "./Canvas";
2
- import { Canvas } from "./Canvas";
3
-
4
- export type Canvas2Props = CanvasProps;
5
-
6
- export const Canvas2 = Canvas;