@shopify/react-native-skia 2.4.1 → 2.4.3
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/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureView.java +30 -7
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureViewManager.java +3 -3
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java +2 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerInterface.java +1 -1
- package/apple/RNSkMetalCanvasProvider.mm +1 -1
- package/lib/commonjs/renderer/Canvas.d.ts +2 -2
- package/lib/commonjs/renderer/Canvas.js +2 -2
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +13 -13
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +1 -1
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.d.ts +1 -1
- package/lib/commonjs/views/SkiaPictureView.js +2 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/types.d.ts +1 -0
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/renderer/Canvas.d.ts +2 -2
- package/lib/module/renderer/Canvas.js +2 -2
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +13 -13
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +1 -1
- package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/module/views/SkiaPictureView.d.ts +1 -1
- package/lib/module/views/SkiaPictureView.js +2 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/types.d.ts +1 -0
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +2 -2
- package/lib/typescript/lib/module/renderer/Canvas.d.ts +2 -2
- package/lib/typescript/src/renderer/Canvas.d.ts +2 -2
- package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +1 -1
- package/lib/typescript/src/views/SkiaPictureView.d.ts +1 -1
- package/lib/typescript/src/views/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/renderer/Canvas.tsx +3 -3
- package/src/sksg/Recorder/Player.ts +18 -18
- package/src/specs/SkiaPictureViewNativeComponent.ts +1 -1
- package/src/views/SkiaPictureView.tsx +3 -3
- package/src/views/types.ts +1 -0
|
@@ -4,6 +4,9 @@ import android.content.Context;
|
|
|
4
4
|
import android.graphics.Bitmap;
|
|
5
5
|
import android.graphics.Canvas;
|
|
6
6
|
import android.graphics.Paint;
|
|
7
|
+
import android.graphics.PorterDuff;
|
|
8
|
+
import android.graphics.SurfaceTexture;
|
|
9
|
+
import android.view.Surface;
|
|
7
10
|
|
|
8
11
|
import com.facebook.jni.HybridData;
|
|
9
12
|
import com.facebook.jni.annotations.DoNotStrip;
|
|
@@ -14,7 +17,7 @@ public class SkiaPictureView extends SkiaBaseView {
|
|
|
14
17
|
private HybridData mHybridData;
|
|
15
18
|
private Paint paint = new Paint();
|
|
16
19
|
|
|
17
|
-
private boolean
|
|
20
|
+
private boolean androidWarmup = false;
|
|
18
21
|
|
|
19
22
|
public SkiaPictureView(Context context) {
|
|
20
23
|
super(context);
|
|
@@ -22,9 +25,9 @@ public class SkiaPictureView extends SkiaBaseView {
|
|
|
22
25
|
mHybridData = initHybrid(skiaModule.getSkiaManager());
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
public void
|
|
26
|
-
this.
|
|
27
|
-
setWillNotDraw(
|
|
28
|
+
public void setAndroidWarmup(boolean androidWarmup) {
|
|
29
|
+
this.androidWarmup = androidWarmup;
|
|
30
|
+
setWillNotDraw(!androidWarmup);
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
@Override
|
|
@@ -37,9 +40,9 @@ public class SkiaPictureView extends SkiaBaseView {
|
|
|
37
40
|
protected void onDraw(Canvas canvas) {
|
|
38
41
|
super.onDraw(canvas);
|
|
39
42
|
|
|
40
|
-
// Skip the warming up feature if
|
|
41
|
-
if (
|
|
42
|
-
return;
|
|
43
|
+
// Skip the warming up feature if it is disabled or already cleared.
|
|
44
|
+
if (!androidWarmup) {
|
|
45
|
+
return;
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
// Get the view dimensions
|
|
@@ -79,4 +82,24 @@ public class SkiaPictureView extends SkiaBaseView {
|
|
|
79
82
|
protected native void unregisterView();
|
|
80
83
|
|
|
81
84
|
protected native int[] getBitmap(int width, int height);
|
|
85
|
+
|
|
86
|
+
@Override
|
|
87
|
+
public void onSurfaceTextureCreated(SurfaceTexture surface, int width, int height) {
|
|
88
|
+
super.onSurfaceTextureCreated(surface, width, height);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@Override
|
|
92
|
+
public void onSurfaceTextureChanged(SurfaceTexture surface, int width, int height) {
|
|
93
|
+
super.onSurfaceTextureChanged(surface, width, height);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@Override
|
|
97
|
+
public void onSurfaceCreated(Surface surface, int width, int height) {
|
|
98
|
+
super.onSurfaceCreated(surface, width, height);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@Override
|
|
102
|
+
public void onSurfaceChanged(Surface surface, int width, int height) {
|
|
103
|
+
super.onSurfaceChanged(surface, width, height);
|
|
104
|
+
}
|
|
82
105
|
}
|
|
@@ -38,7 +38,7 @@ public class SkiaPictureViewManager extends SkiaBaseViewManager<SkiaPictureView>
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
@Override
|
|
41
|
-
public void
|
|
42
|
-
view.
|
|
41
|
+
public void setAndroidWarmup(SkiaPictureView view, boolean value) {
|
|
42
|
+
view.setAndroidWarmup(value);
|
|
43
43
|
}
|
|
44
|
-
}
|
|
44
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java
CHANGED
|
@@ -31,8 +31,8 @@ public class SkiaPictureViewManagerDelegate<T extends View, U extends BaseViewMa
|
|
|
31
31
|
case "colorSpace":
|
|
32
32
|
mViewManager.setColorSpace(view, value == null ? null : (String) value);
|
|
33
33
|
break;
|
|
34
|
-
case "
|
|
35
|
-
mViewManager.
|
|
34
|
+
case "androidWarmup":
|
|
35
|
+
mViewManager.setAndroidWarmup(view, value != null && (boolean) value);
|
|
36
36
|
break;
|
|
37
37
|
default:
|
|
38
38
|
super.setProperty(view, propName, value);
|
package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerInterface.java
CHANGED
|
@@ -18,5 +18,5 @@ public interface SkiaPictureViewManagerInterface<T extends View> {
|
|
|
18
18
|
void setDebug(T view, boolean value);
|
|
19
19
|
void setOpaque(T view, boolean value);
|
|
20
20
|
void setColorSpace(SkiaPictureView view, @Nullable String value);
|
|
21
|
-
void
|
|
21
|
+
void setAndroidWarmup(T view, boolean value);
|
|
22
22
|
}
|
|
@@ -68,7 +68,7 @@ bool RNSkMetalCanvasProvider::renderToCanvas(
|
|
|
68
68
|
auto state = UIApplication.sharedApplication.applicationState;
|
|
69
69
|
bool appIsBackgrounded = (state == UIApplicationStateBackground);
|
|
70
70
|
#else
|
|
71
|
-
bool appIsBackgrounded =
|
|
71
|
+
bool appIsBackgrounded = NSApplication.sharedApplication.isHidden;
|
|
72
72
|
#endif // !TARGET_OS_OSX
|
|
73
73
|
if (appIsBackgrounded) {
|
|
74
74
|
// Request a redraw in the next run loop callback
|
|
@@ -23,7 +23,7 @@ export interface CanvasProps extends Omit<ViewProps, "onLayout"> {
|
|
|
23
23
|
onSize?: SharedValue<SkSize>;
|
|
24
24
|
colorSpace?: "p3" | "srgb";
|
|
25
25
|
ref?: React.Ref<CanvasRef>;
|
|
26
|
-
|
|
26
|
+
androidWarmup?: boolean;
|
|
27
27
|
__destroyWebGLContextAfterRender?: boolean;
|
|
28
28
|
}
|
|
29
|
-
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace,
|
|
29
|
+
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: CanvasProps) => React.JSX.Element;
|
|
@@ -55,7 +55,7 @@ const Canvas = ({
|
|
|
55
55
|
children,
|
|
56
56
|
onSize,
|
|
57
57
|
colorSpace = "p3",
|
|
58
|
-
|
|
58
|
+
androidWarmup = false,
|
|
59
59
|
ref,
|
|
60
60
|
// Here know this is a type error but this is done on purpose to check it at runtime
|
|
61
61
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -149,7 +149,7 @@ const Canvas = ({
|
|
|
149
149
|
debug: debug,
|
|
150
150
|
opaque: opaque,
|
|
151
151
|
colorSpace: colorSpace,
|
|
152
|
-
|
|
152
|
+
androidWarmup: androidWarmup,
|
|
153
153
|
onLayout: _Platform.Platform.OS === "web" && (onSize || onLayout) ? onLayoutWeb : onLayout
|
|
154
154
|
}, viewProps));
|
|
155
155
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_ReanimatedProxy","_interopRequireDefault","_SkiaViewNativeId","_SkiaPictureViewNativeComponent","_Reconciler","_skia","_Platform","_external","_global","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","useCanvasRef","useRef","exports","useReanimatedFrame","HAS_REANIMATED_3","Rea","useFrameCallback","measure","useCanvasRefPriv","useAnimatedRef","useCanvasSize","userRef","ourRef","ref","size","setSize","useState","width","height","useLayoutEffect","current","_x","_y","isFabric","Boolean","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","coldStart","onLayout","viewProps","console","error","viewRef","nativeId","useMemo","SkiaViewNativeId","root","SkiaSGRoot","Skia","result","value","render","useEffect","unmount","useImperativeHandle","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","useCallback","Platform","OS","nativeEvent","layout","createElement","collapsable","nativeID"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { AnimatedRef, SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\nconst measure = !HAS_REANIMATED_3 ? null : Rea.measure;\n\nconst useCanvasRefPriv: typeof useRef<View> = !HAS_REANIMATED_3\n ? useRef\n : Rea.useAnimatedRef;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n coldStart?: boolean;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n coldStart = false,\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useCanvasRefPriv(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n if (onSize && measure) {\n const result = measure(viewRef as AnimatedRef<View>);\n if (result) {\n const { width, height } = result;\n if (onSize.value.width !== width || onSize.value.height !== height) {\n onSize.value = { width, height };\n }\n }\n }\n }, !!onSize);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n coldStart={coldStart}\n onLayout={\n Platform.OS === \"web\" && (onSize || onLayout) ? onLayoutWeb : onLayout\n }\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_ReanimatedProxy","_interopRequireDefault","_SkiaViewNativeId","_SkiaPictureViewNativeComponent","_Reconciler","_skia","_Platform","_external","_global","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","useCanvasRef","useRef","exports","useReanimatedFrame","HAS_REANIMATED_3","Rea","useFrameCallback","measure","useCanvasRefPriv","useAnimatedRef","useCanvasSize","userRef","ourRef","ref","size","setSize","useState","width","height","useLayoutEffect","current","_x","_y","isFabric","Boolean","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","androidWarmup","onLayout","viewProps","console","error","viewRef","nativeId","useMemo","SkiaViewNativeId","root","SkiaSGRoot","Skia","result","value","render","useEffect","unmount","useImperativeHandle","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","useCallback","Platform","OS","nativeEvent","layout","createElement","collapsable","nativeID"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { AnimatedRef, SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\nconst measure = !HAS_REANIMATED_3 ? null : Rea.measure;\n\nconst useCanvasRefPriv: typeof useRef<View> = !HAS_REANIMATED_3\n ? useRef\n : Rea.useAnimatedRef;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n androidWarmup?: boolean;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n androidWarmup = false,\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useCanvasRefPriv(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n if (onSize && measure) {\n const result = measure(viewRef as AnimatedRef<View>);\n if (result) {\n const { width, height } = result;\n if (onSize.value.width !== width || onSize.value.height !== height) {\n onSize.value = { width, height };\n }\n }\n }\n }, !!onSize);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n androidWarmup={androidWarmup}\n onLayout={\n Platform.OS === \"web\" && (onSize || onLayout) ? onLayoutWeb : onLayout\n }\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -26,20 +26,20 @@ const getZIndex = command => {
|
|
|
26
26
|
}
|
|
27
27
|
return zIndex;
|
|
28
28
|
};
|
|
29
|
-
const flushPendingGroups = (ctx, pendingGroups) => {
|
|
30
|
-
"worklet";
|
|
31
|
-
|
|
32
|
-
if (pendingGroups.length === 0) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
|
|
36
|
-
command
|
|
37
|
-
}) => {
|
|
38
|
-
play(ctx, command);
|
|
39
|
-
});
|
|
40
|
-
pendingGroups.length = 0;
|
|
41
|
-
};
|
|
42
29
|
const play = (ctx, _command) => {
|
|
30
|
+
const flushPendingGroups = (ctx, pendingGroups) => {
|
|
31
|
+
"worklet";
|
|
32
|
+
|
|
33
|
+
if (pendingGroups.length === 0) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
|
|
37
|
+
command
|
|
38
|
+
}) => {
|
|
39
|
+
play(ctx, command);
|
|
40
|
+
});
|
|
41
|
+
pendingGroups.length = 0;
|
|
42
|
+
};
|
|
43
43
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
44
44
|
const playGroup = (ctx, group) => {
|
|
45
45
|
"worklet";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","length","sort","a","b","order","forEach","play","_command","playGroup","group","pending","children","child","isGroup","push","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n (\"worklet\");\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_Drawing","require","_Box","_ColorFilters","_CTM","_ImageFilters","_Paint","_PathEffects","_Shaders","_Core","getZIndex","command","_materialized$props","materialized","materializeCommand","zIndex","props","Number","isNaN","play","ctx","_command","flushPendingGroups","pendingGroups","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","isGroup","push","isCommand","CommandType","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","isDrawCommand","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","setPaintProperties","RestorePaint","restorePaint","ComposeColorFilter","composeColorFilters","RestorePaintDeclaration","Error","MaterializePaint","isPushColorFilter","pushColorFilter","isPushShader","pushShader","isPushImageFilter","pushImageFilter","isPushPathEffect","pushPathEffect","ComposePathEffect","composePathEffects","ComposeImageFilter","composeImageFilters","PushBlurMaskFilter","setBlurMaskFilter","SaveCTM","saveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","isBoxCommand","drawBox","DrawPaint","drawPaint","DrawImage","drawImage","DrawCircle","drawCircle","DrawPoints","drawPoints","DrawPath","drawPath","DrawRect","drawRect","DrawRRect","drawRRect","DrawOval","drawOval","DrawLine","drawLine","DrawPatch","drawPatch","DrawVertices","drawVertices","DrawDiffRect","drawDiffRect","DrawText","drawText","DrawTextPath","drawTextPath","DrawTextBlob","drawTextBlob","DrawGlyphs","drawGlyphs","DrawPicture","drawPicture","DrawImageSVG","drawImageSVG","DrawParagraph","drawParagraph","DrawAtlas","drawAtlas","DrawSkottie","drawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n const flushPendingGroups = (\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n ) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n (\"worklet\");\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ export interface NativeProps extends ViewProps {
|
|
|
3
3
|
debug?: boolean;
|
|
4
4
|
opaque?: boolean;
|
|
5
5
|
colorSpace?: string;
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
|
|
9
9
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n
|
|
1
|
+
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n androidWarmup?: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAU7F;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GACe,IAAAG,+BAAsB,EAAc,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import type { SkRect } from "../skia/types";
|
|
|
3
3
|
import type { SkiaPictureViewNativeProps } from "./types";
|
|
4
4
|
interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {
|
|
5
5
|
mode?: "default" | "continuous";
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
9
9
|
private requestId;
|
|
@@ -86,7 +86,7 @@ class SkiaPictureView extends _react.default.Component {
|
|
|
86
86
|
mode,
|
|
87
87
|
debug = false,
|
|
88
88
|
opaque = false,
|
|
89
|
-
|
|
89
|
+
androidWarmup = false,
|
|
90
90
|
...viewProps
|
|
91
91
|
} = this.props;
|
|
92
92
|
return /*#__PURE__*/_react.default.createElement(NativeSkiaPictureView, _extends({
|
|
@@ -94,7 +94,7 @@ class SkiaPictureView extends _react.default.Component {
|
|
|
94
94
|
nativeID: `${this._nativeId}`,
|
|
95
95
|
debug: debug,
|
|
96
96
|
opaque: opaque,
|
|
97
|
-
|
|
97
|
+
androidWarmup: androidWarmup
|
|
98
98
|
}, viewProps));
|
|
99
99
|
}
|
|
100
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_SkiaPictureViewNativeComponent","_api","_SkiaViewNativeId","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NativeSkiaPictureView","SkiaPictureViewNativeComponent","SkiaPictureView","React","Component","constructor","props","_nativeId","SkiaViewNativeId","current","picture","onSize","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_SkiaPictureViewNativeComponent","_api","_SkiaViewNativeId","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NativeSkiaPictureView","SkiaPictureViewNativeComponent","SkiaPictureView","React","Component","constructor","props","_nativeId","SkiaViewNativeId","current","picture","onSize","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","androidWarmup","viewProps","createElement","collapsable","nativeID","exports","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n androidWarmup?: boolean;\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const {\n mode,\n debug = false,\n opaque = false,\n androidWarmup = false,\n ...viewProps\n } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n androidWarmup={androidWarmup}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,6 +30,7 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
30
30
|
}
|
|
31
31
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
|
32
32
|
picture?: SkPicture;
|
|
33
|
+
androidWarmup?: boolean;
|
|
33
34
|
}
|
|
34
35
|
export interface SkiaDomViewNativeProps extends SkiaBaseViewProps {
|
|
35
36
|
root?: Node<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n androidWarmup?: boolean;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -23,7 +23,7 @@ export interface CanvasProps extends Omit<ViewProps, "onLayout"> {
|
|
|
23
23
|
onSize?: SharedValue<SkSize>;
|
|
24
24
|
colorSpace?: "p3" | "srgb";
|
|
25
25
|
ref?: React.Ref<CanvasRef>;
|
|
26
|
-
|
|
26
|
+
androidWarmup?: boolean;
|
|
27
27
|
__destroyWebGLContextAfterRender?: boolean;
|
|
28
28
|
}
|
|
29
|
-
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace,
|
|
29
|
+
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: CanvasProps) => React.JSX.Element;
|
|
@@ -44,7 +44,7 @@ export const Canvas = ({
|
|
|
44
44
|
children,
|
|
45
45
|
onSize,
|
|
46
46
|
colorSpace = "p3",
|
|
47
|
-
|
|
47
|
+
androidWarmup = false,
|
|
48
48
|
ref,
|
|
49
49
|
// Here know this is a type error but this is done on purpose to check it at runtime
|
|
50
50
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -138,7 +138,7 @@ export const Canvas = ({
|
|
|
138
138
|
debug: debug,
|
|
139
139
|
opaque: opaque,
|
|
140
140
|
colorSpace: colorSpace,
|
|
141
|
-
|
|
141
|
+
androidWarmup: androidWarmup,
|
|
142
142
|
onLayout: Platform.OS === "web" && (onSize || onLayout) ? onLayoutWeb : onLayout
|
|
143
143
|
}, viewProps));
|
|
144
144
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Rea","SkiaViewNativeId","SkiaPictureViewNativeComponent","SkiaSGRoot","Skia","Platform","HAS_REANIMATED_3","useCanvasRef","useReanimatedFrame","useFrameCallback","measure","useCanvasRefPriv","useAnimatedRef","useCanvasSize","userRef","ourRef","ref","size","setSize","width","height","current","_x","_y","isFabric","Boolean","_global","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","coldStart","onLayout","viewProps","console","error","viewRef","nativeId","root","result","value","render","unmount","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","e","OS","nativeEvent","layout","createElement","_extends","collapsable","nativeID"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { AnimatedRef, SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\nconst measure = !HAS_REANIMATED_3 ? null : Rea.measure;\n\nconst useCanvasRefPriv: typeof useRef<View> = !HAS_REANIMATED_3\n ? useRef\n : Rea.useAnimatedRef;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n coldStart?: boolean;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n coldStart = false,\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useCanvasRefPriv(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n if (onSize && measure) {\n const result = measure(viewRef as AnimatedRef<View>);\n if (result) {\n const { width, height } = result;\n if (onSize.value.width !== width || onSize.value.height !== height) {\n onSize.value = { width, height };\n }\n }\n }\n }, !!onSize);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n coldStart={coldStart}\n onLayout={\n Platform.OS === \"web\" && (onSize || onLayout) ? onLayoutWeb : onLayout\n }\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Rea","SkiaViewNativeId","SkiaPictureViewNativeComponent","SkiaSGRoot","Skia","Platform","HAS_REANIMATED_3","useCanvasRef","useReanimatedFrame","useFrameCallback","measure","useCanvasRefPriv","useAnimatedRef","useCanvasSize","userRef","ourRef","ref","size","setSize","width","height","current","_x","_y","isFabric","Boolean","_global","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","androidWarmup","onLayout","viewProps","console","error","viewRef","nativeId","root","result","value","render","unmount","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","e","OS","nativeEvent","layout","createElement","_extends","collapsable","nativeID"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { AnimatedRef, SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\nconst measure = !HAS_REANIMATED_3 ? null : Rea.measure;\n\nconst useCanvasRefPriv: typeof useRef<View> = !HAS_REANIMATED_3\n ? useRef\n : Rea.useAnimatedRef;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n androidWarmup?: boolean;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n androidWarmup = false,\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useCanvasRefPriv(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n if (onSize && measure) {\n const result = measure(viewRef as AnimatedRef<View>);\n if (result) {\n const { width, height } = result;\n if (onSize.value.width !== width || onSize.value.height !== height) {\n onSize.value = { width, height };\n }\n }\n }\n }, !!onSize);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n androidWarmup={androidWarmup}\n onLayout={\n Platform.OS === \"web\" && (onSize || onLayout) ? onLayoutWeb : onLayout\n }\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,20 +20,20 @@ const getZIndex = command => {
|
|
|
20
20
|
}
|
|
21
21
|
return zIndex;
|
|
22
22
|
};
|
|
23
|
-
const flushPendingGroups = (ctx, pendingGroups) => {
|
|
24
|
-
"worklet";
|
|
25
|
-
|
|
26
|
-
if (pendingGroups.length === 0) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
|
|
30
|
-
command
|
|
31
|
-
}) => {
|
|
32
|
-
play(ctx, command);
|
|
33
|
-
});
|
|
34
|
-
pendingGroups.length = 0;
|
|
35
|
-
};
|
|
36
23
|
const play = (ctx, _command) => {
|
|
24
|
+
const flushPendingGroups = (ctx, pendingGroups) => {
|
|
25
|
+
"worklet";
|
|
26
|
+
|
|
27
|
+
if (pendingGroups.length === 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
pendingGroups.sort((a, b) => a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex).forEach(({
|
|
31
|
+
command
|
|
32
|
+
}) => {
|
|
33
|
+
play(ctx, command);
|
|
34
|
+
});
|
|
35
|
+
pendingGroups.length = 0;
|
|
36
|
+
};
|
|
37
37
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
38
38
|
const playGroup = (ctx, group) => {
|
|
39
39
|
"worklet";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["drawCircle","drawImage","drawOval","drawPath","drawPoints","drawRect","drawRRect","drawLine","drawAtlas","drawParagraph","drawImageSVG","drawPicture","drawGlyphs","drawTextBlob","drawTextPath","drawText","drawDiffRect","drawVertices","drawPatch","drawSkottie","drawBox","isBoxCommand","composeColorFilters","isPushColorFilter","pushColorFilter","saveCTM","setBlurMaskFilter","isPushImageFilter","pushImageFilter","composeImageFilters","setPaintProperties","composePathEffects","isPushPathEffect","pushPathEffect","isPushShader","pushShader","CommandType","isCommand","isDrawCommand","isGroup","materializeCommand","getZIndex","command","_materialized$props","materialized","zIndex","props","Number","isNaN","flushPendingGroups","ctx","pendingGroups","length","sort","a","b","order","forEach","play","_command","playGroup","group","pending","children","child","push","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","RestorePaint","restorePaint","ComposeColorFilter","RestorePaintDeclaration","Error","MaterializePaint","ComposePathEffect","ComposeImageFilter","PushBlurMaskFilter","SaveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","DrawPaint","drawPaint","DrawImage","DrawCircle","DrawPoints","DrawPath","DrawRect","DrawRRect","DrawOval","DrawLine","DrawPatch","DrawVertices","DrawDiffRect","DrawText","DrawTextPath","DrawTextBlob","DrawGlyphs","DrawPicture","DrawImageSVG","DrawParagraph","DrawAtlas","DrawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst flushPendingGroups = (\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n (\"worklet\");\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["drawCircle","drawImage","drawOval","drawPath","drawPoints","drawRect","drawRRect","drawLine","drawAtlas","drawParagraph","drawImageSVG","drawPicture","drawGlyphs","drawTextBlob","drawTextPath","drawText","drawDiffRect","drawVertices","drawPatch","drawSkottie","drawBox","isBoxCommand","composeColorFilters","isPushColorFilter","pushColorFilter","saveCTM","setBlurMaskFilter","isPushImageFilter","pushImageFilter","composeImageFilters","setPaintProperties","composePathEffects","isPushPathEffect","pushPathEffect","isPushShader","pushShader","CommandType","isCommand","isDrawCommand","isGroup","materializeCommand","getZIndex","command","_materialized$props","materialized","zIndex","props","Number","isNaN","play","ctx","_command","flushPendingGroups","pendingGroups","length","sort","a","b","order","forEach","playGroup","group","pending","children","child","push","SaveBackdropFilter","saveBackdropFilter","SaveLayer","materializePaint","paint","paintDeclarations","pop","canvas","saveLayer","SavePaint","paints","standalone","savePaint","freshPaint","Skia","Paint","assign","RestorePaint","restorePaint","ComposeColorFilter","RestorePaintDeclaration","Error","MaterializePaint","ComposePathEffect","ComposeImageFilter","PushBlurMaskFilter","SaveCTM","RestoreCTM","restore","copy","setAlphaf","getAlphaf","getOpacity","p","DrawPaint","drawPaint","DrawImage","DrawCircle","DrawPoints","DrawPath","DrawRect","DrawRRect","DrawOval","DrawLine","DrawPatch","DrawVertices","DrawDiffRect","DrawText","DrawTextPath","DrawTextBlob","DrawGlyphs","DrawPicture","DrawImageSVG","DrawParagraph","DrawAtlas","DrawSkottie","console","warn","type","replay","commands"],"sources":["Player.ts"],"sourcesContent":["import type { DrawingNodeProps } from \"../../dom/types\";\n\nimport {\n drawCircle,\n drawImage,\n drawOval,\n drawPath,\n drawPoints,\n drawRect,\n drawRRect,\n drawLine,\n drawAtlas,\n drawParagraph,\n drawImageSVG,\n drawPicture,\n drawGlyphs,\n drawTextBlob,\n drawTextPath,\n drawText,\n drawDiffRect,\n drawVertices,\n drawPatch,\n drawSkottie,\n} from \"./commands/Drawing\";\nimport { drawBox, isBoxCommand } from \"./commands/Box\";\nimport {\n composeColorFilters,\n isPushColorFilter,\n pushColorFilter,\n} from \"./commands/ColorFilters\";\nimport { saveCTM } from \"./commands/CTM\";\nimport {\n setBlurMaskFilter,\n isPushImageFilter,\n pushImageFilter,\n composeImageFilters,\n} from \"./commands/ImageFilters\";\nimport { setPaintProperties } from \"./commands/Paint\";\nimport {\n composePathEffects,\n isPushPathEffect,\n pushPathEffect,\n} from \"./commands/PathEffects\";\nimport { isPushShader, pushShader } from \"./commands/Shaders\";\nimport {\n CommandType,\n isCommand,\n isDrawCommand,\n isGroup,\n materializeCommand,\n} from \"./Core\";\nimport type { Command, GroupCommand } from \"./Core\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\ntype PendingGroup = {\n command: GroupCommand;\n zIndex: number;\n order: number;\n};\n\nconst getZIndex = (command: GroupCommand) => {\n \"worklet\";\n const materialized = materializeCommand(command);\n const { zIndex } = (materialized.props ?? {}) as DrawingNodeProps;\n if (typeof zIndex !== \"number\" || Number.isNaN(zIndex)) {\n return 0;\n }\n return zIndex;\n};\n\nconst play = (ctx: DrawingContext, _command: Command) => {\n const flushPendingGroups = (\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ctx: DrawingContext,\n pendingGroups: PendingGroup[]\n ) => {\n \"worklet\";\n if (pendingGroups.length === 0) {\n return;\n }\n pendingGroups\n .sort((a, b) =>\n a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex\n )\n .forEach(({ command }) => {\n play(ctx, command);\n });\n pendingGroups.length = 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const playGroup = (ctx: DrawingContext, group: GroupCommand) => {\n \"worklet\";\n const pending: PendingGroup[] = [];\n group.children.forEach((child) => {\n if (isGroup(child)) {\n pending.push({\n command: child,\n zIndex: getZIndex(child),\n order: pending.length,\n });\n return;\n }\n flushPendingGroups(ctx, pending);\n play(ctx, child);\n });\n flushPendingGroups(ctx, pending);\n };\n\n (\"worklet\");\n if (isGroup(_command)) {\n playGroup(ctx, _command);\n return;\n }\n const command = materializeCommand(_command);\n if (isCommand(command, CommandType.SaveBackdropFilter)) {\n ctx.saveBackdropFilter();\n } else if (isCommand(command, CommandType.SaveLayer)) {\n ctx.materializePaint();\n const paint = ctx.paintDeclarations.pop();\n ctx.canvas.saveLayer(paint);\n } else if (isDrawCommand(command, CommandType.SavePaint)) {\n if (command.props.paint) {\n ctx.paints.push(command.props.paint);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { standalone } = command as any;\n ctx.savePaint();\n if (standalone) {\n const freshPaint = ctx.Skia.Paint();\n ctx.paint.assign(freshPaint);\n }\n setPaintProperties(ctx.Skia, ctx, command.props, standalone);\n }\n } else if (isCommand(command, CommandType.RestorePaint)) {\n ctx.restorePaint();\n } else if (isCommand(command, CommandType.ComposeColorFilter)) {\n composeColorFilters(ctx);\n } else if (isCommand(command, CommandType.RestorePaintDeclaration)) {\n ctx.materializePaint();\n const paint = ctx.restorePaint();\n if (!paint) {\n throw new Error(\"No paint declaration to push\");\n }\n ctx.paintDeclarations.push(paint);\n } else if (isCommand(command, CommandType.MaterializePaint)) {\n ctx.materializePaint();\n } else if (isPushColorFilter(command)) {\n pushColorFilter(ctx, command);\n } else if (isPushShader(command)) {\n pushShader(ctx, command);\n } else if (isPushImageFilter(command)) {\n pushImageFilter(ctx, command);\n } else if (isPushPathEffect(command)) {\n pushPathEffect(ctx, command);\n } else if (isCommand(command, CommandType.ComposePathEffect)) {\n composePathEffects(ctx);\n } else if (isCommand(command, CommandType.ComposeImageFilter)) {\n composeImageFilters(ctx);\n } else if (isDrawCommand(command, CommandType.PushBlurMaskFilter)) {\n setBlurMaskFilter(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.SaveCTM)) {\n saveCTM(ctx, command.props);\n } else if (isCommand(command, CommandType.RestoreCTM)) {\n ctx.canvas.restore();\n } else {\n // TODO: is a copy needed here?\n // apply opacity to the current paint.\n const paint = ctx.paint.copy();\n paint.setAlphaf(paint.getAlphaf() * ctx.getOpacity());\n const paints = [paint, ...ctx.paintDeclarations];\n ctx.paintDeclarations = [];\n paints.forEach((p) => {\n ctx.paints.push(p);\n if (isBoxCommand(command)) {\n drawBox(ctx, command);\n } else if (isCommand(command, CommandType.DrawPaint)) {\n ctx.canvas.drawPaint(ctx.paint);\n } else if (isDrawCommand(command, CommandType.DrawImage)) {\n drawImage(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawCircle)) {\n drawCircle(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPoints)) {\n drawPoints(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPath)) {\n drawPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRect)) {\n drawRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawRRect)) {\n drawRRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawOval)) {\n drawOval(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawLine)) {\n drawLine(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPatch)) {\n drawPatch(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawVertices)) {\n drawVertices(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawDiffRect)) {\n drawDiffRect(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawText)) {\n drawText(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextPath)) {\n drawTextPath(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawTextBlob)) {\n drawTextBlob(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawGlyphs)) {\n drawGlyphs(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawPicture)) {\n drawPicture(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawImageSVG)) {\n drawImageSVG(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawParagraph)) {\n drawParagraph(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawAtlas)) {\n drawAtlas(ctx, command.props);\n } else if (isDrawCommand(command, CommandType.DrawSkottie)) {\n drawSkottie(ctx, command.props);\n } else {\n console.warn(`Unknown command: ${command.type}`);\n }\n ctx.paints.pop();\n });\n }\n};\nexport function replay(ctx: DrawingContext, commands: Command[]) {\n \"worklet\";\n //console.log(debugTree(commands));\n commands.forEach((command) => {\n play(ctx, command);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ export interface NativeProps extends ViewProps {
|
|
|
3
3
|
debug?: boolean;
|
|
4
4
|
opaque?: boolean;
|
|
5
5
|
colorSpace?: string;
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
|
|
9
9
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n
|
|
1
|
+
{"version":3,"names":["codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n androidWarmup?: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":"AAAA,OAAOA,sBAAsB,MAAM,yDAAyD;AAU5F;AACA,eAAeA,sBAAsB,CAAc,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import type { SkRect } from "../skia/types";
|
|
|
3
3
|
import type { SkiaPictureViewNativeProps } from "./types";
|
|
4
4
|
interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {
|
|
5
5
|
mode?: "default" | "continuous";
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
9
9
|
private requestId;
|
|
@@ -79,7 +79,7 @@ export class SkiaPictureView extends React.Component {
|
|
|
79
79
|
mode,
|
|
80
80
|
debug = false,
|
|
81
81
|
opaque = false,
|
|
82
|
-
|
|
82
|
+
androidWarmup = false,
|
|
83
83
|
...viewProps
|
|
84
84
|
} = this.props;
|
|
85
85
|
return /*#__PURE__*/React.createElement(NativeSkiaPictureView, _extends({
|
|
@@ -87,7 +87,7 @@ export class SkiaPictureView extends React.Component {
|
|
|
87
87
|
nativeID: `${this._nativeId}`,
|
|
88
88
|
debug: debug,
|
|
89
89
|
opaque: opaque,
|
|
90
|
-
|
|
90
|
+
androidWarmup: androidWarmup
|
|
91
91
|
}, viewProps));
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","SkiaPictureViewNativeComponent","SkiaViewApi","SkiaViewNativeId","NativeSkiaPictureView","SkiaPictureView","Component","constructor","props","_defineProperty","_nativeId","current","picture","onSize","assertSkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","bind","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","
|
|
1
|
+
{"version":3,"names":["React","SkiaPictureViewNativeComponent","SkiaViewApi","SkiaViewNativeId","NativeSkiaPictureView","SkiaPictureView","Component","constructor","props","_defineProperty","_nativeId","current","picture","onSize","assertSkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","bind","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","androidWarmup","viewProps","createElement","_extends","collapsable","nativeID","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n androidWarmup?: boolean;\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const {\n mode,\n debug = false,\n opaque = false,\n androidWarmup = false,\n ...viewProps\n } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n androidWarmup={androidWarmup}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,6 +30,7 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
30
30
|
}
|
|
31
31
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
|
32
32
|
picture?: SkPicture;
|
|
33
|
+
androidWarmup?: boolean;
|
|
33
34
|
}
|
|
34
35
|
export interface SkiaDomViewNativeProps extends SkiaBaseViewProps {
|
|
35
36
|
root?: Node<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n androidWarmup?: boolean;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -5,14 +5,14 @@ export function useCanvasSize(userRef: any): {
|
|
|
5
5
|
ref: any;
|
|
6
6
|
size: any;
|
|
7
7
|
};
|
|
8
|
-
export function Canvas({ debug, opaque, children, onSize, colorSpace,
|
|
8
|
+
export function Canvas({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
9
9
|
[x: string]: any;
|
|
10
10
|
debug: any;
|
|
11
11
|
opaque: any;
|
|
12
12
|
children: any;
|
|
13
13
|
onSize: any;
|
|
14
14
|
colorSpace?: string | undefined;
|
|
15
|
-
|
|
15
|
+
androidWarmup?: boolean | undefined;
|
|
16
16
|
ref: any;
|
|
17
17
|
onLayout: any;
|
|
18
18
|
}): any;
|
|
@@ -7,14 +7,14 @@ export function useCanvasSize(userRef: any): {
|
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
9
|
export const isFabric: boolean;
|
|
10
|
-
export function Canvas({ debug, opaque, children, onSize, colorSpace,
|
|
10
|
+
export function Canvas({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
debug: any;
|
|
13
13
|
opaque: any;
|
|
14
14
|
children: any;
|
|
15
15
|
onSize: any;
|
|
16
16
|
colorSpace?: string | undefined;
|
|
17
|
-
|
|
17
|
+
androidWarmup?: boolean | undefined;
|
|
18
18
|
ref: any;
|
|
19
19
|
onLayout: any;
|
|
20
20
|
}): React.CElement<object, React.Component<object, {}, any> & import("react-native").NativeMethods>;
|
|
@@ -23,7 +23,7 @@ export interface CanvasProps extends Omit<ViewProps, "onLayout"> {
|
|
|
23
23
|
onSize?: SharedValue<SkSize>;
|
|
24
24
|
colorSpace?: "p3" | "srgb";
|
|
25
25
|
ref?: React.Ref<CanvasRef>;
|
|
26
|
-
|
|
26
|
+
androidWarmup?: boolean;
|
|
27
27
|
__destroyWebGLContextAfterRender?: boolean;
|
|
28
28
|
}
|
|
29
|
-
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace,
|
|
29
|
+
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: CanvasProps) => React.JSX.Element;
|
|
@@ -3,7 +3,7 @@ export interface NativeProps extends ViewProps {
|
|
|
3
3
|
debug?: boolean;
|
|
4
4
|
opaque?: boolean;
|
|
5
5
|
colorSpace?: string;
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
|
|
9
9
|
export default _default;
|
|
@@ -3,7 +3,7 @@ import type { SkRect } from "../skia/types";
|
|
|
3
3
|
import type { SkiaPictureViewNativeProps } from "./types";
|
|
4
4
|
interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {
|
|
5
5
|
mode?: "default" | "continuous";
|
|
6
|
-
|
|
6
|
+
androidWarmup?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
9
9
|
private requestId;
|
|
@@ -30,6 +30,7 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
30
30
|
}
|
|
31
31
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
|
32
32
|
picture?: SkPicture;
|
|
33
|
+
androidWarmup?: boolean;
|
|
33
34
|
}
|
|
34
35
|
export interface SkiaDomViewNativeProps extends SkiaBaseViewProps {
|
|
35
36
|
root?: Node<unknown>;
|
package/package.json
CHANGED
package/src/renderer/Canvas.tsx
CHANGED
|
@@ -68,7 +68,7 @@ export interface CanvasProps extends Omit<ViewProps, "onLayout"> {
|
|
|
68
68
|
onSize?: SharedValue<SkSize>;
|
|
69
69
|
colorSpace?: "p3" | "srgb";
|
|
70
70
|
ref?: React.Ref<CanvasRef>;
|
|
71
|
-
|
|
71
|
+
androidWarmup?: boolean;
|
|
72
72
|
__destroyWebGLContextAfterRender?: boolean;
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -78,7 +78,7 @@ export const Canvas = ({
|
|
|
78
78
|
children,
|
|
79
79
|
onSize,
|
|
80
80
|
colorSpace = "p3",
|
|
81
|
-
|
|
81
|
+
androidWarmup = false,
|
|
82
82
|
ref,
|
|
83
83
|
// Here know this is a type error but this is done on purpose to check it at runtime
|
|
84
84
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -170,7 +170,7 @@ export const Canvas = ({
|
|
|
170
170
|
debug={debug}
|
|
171
171
|
opaque={opaque}
|
|
172
172
|
colorSpace={colorSpace}
|
|
173
|
-
|
|
173
|
+
androidWarmup={androidWarmup}
|
|
174
174
|
onLayout={
|
|
175
175
|
Platform.OS === "web" && (onSize || onLayout) ? onLayoutWeb : onLayout
|
|
176
176
|
}
|
|
@@ -68,25 +68,25 @@ const getZIndex = (command: GroupCommand) => {
|
|
|
68
68
|
return zIndex;
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
-
const flushPendingGroups = (
|
|
72
|
-
ctx: DrawingContext,
|
|
73
|
-
pendingGroups: PendingGroup[]
|
|
74
|
-
) => {
|
|
75
|
-
"worklet";
|
|
76
|
-
if (pendingGroups.length === 0) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
pendingGroups
|
|
80
|
-
.sort((a, b) =>
|
|
81
|
-
a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex
|
|
82
|
-
)
|
|
83
|
-
.forEach(({ command }) => {
|
|
84
|
-
play(ctx, command);
|
|
85
|
-
});
|
|
86
|
-
pendingGroups.length = 0;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
71
|
const play = (ctx: DrawingContext, _command: Command) => {
|
|
72
|
+
const flushPendingGroups = (
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
74
|
+
ctx: DrawingContext,
|
|
75
|
+
pendingGroups: PendingGroup[]
|
|
76
|
+
) => {
|
|
77
|
+
"worklet";
|
|
78
|
+
if (pendingGroups.length === 0) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
pendingGroups
|
|
82
|
+
.sort((a, b) =>
|
|
83
|
+
a.zIndex === b.zIndex ? a.order - b.order : a.zIndex - b.zIndex
|
|
84
|
+
)
|
|
85
|
+
.forEach(({ command }) => {
|
|
86
|
+
play(ctx, command);
|
|
87
|
+
});
|
|
88
|
+
pendingGroups.length = 0;
|
|
89
|
+
};
|
|
90
90
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
91
91
|
const playGroup = (ctx: DrawingContext, group: GroupCommand) => {
|
|
92
92
|
"worklet";
|
|
@@ -11,7 +11,7 @@ const NativeSkiaPictureView = SkiaPictureViewNativeComponent;
|
|
|
11
11
|
|
|
12
12
|
interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {
|
|
13
13
|
mode?: "default" | "continuous";
|
|
14
|
-
|
|
14
|
+
androidWarmup?: boolean;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
@@ -87,7 +87,7 @@ export class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
|
87
87
|
mode,
|
|
88
88
|
debug = false,
|
|
89
89
|
opaque = false,
|
|
90
|
-
|
|
90
|
+
androidWarmup = false,
|
|
91
91
|
...viewProps
|
|
92
92
|
} = this.props;
|
|
93
93
|
return (
|
|
@@ -96,7 +96,7 @@ export class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
|
|
|
96
96
|
nativeID={`${this._nativeId}`}
|
|
97
97
|
debug={debug}
|
|
98
98
|
opaque={opaque}
|
|
99
|
-
|
|
99
|
+
androidWarmup={androidWarmup}
|
|
100
100
|
{...viewProps}
|
|
101
101
|
/>
|
|
102
102
|
);
|
package/src/views/types.ts
CHANGED
|
@@ -39,6 +39,7 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
39
39
|
|
|
40
40
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
|
41
41
|
picture?: SkPicture;
|
|
42
|
+
androidWarmup?: boolean;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
export interface SkiaDomViewNativeProps extends SkiaBaseViewProps {
|