@shopify/react-native-skia 0.1.142 → 0.1.146
Sign up to get free protection for your applications and to get access to all the features.
- package/cpp/api/JsiSkContourMeasure.h +4 -4
- package/cpp/api/JsiSkDataFactory.h +3 -3
- package/cpp/api/JsiSkFont.h +1 -1
- package/cpp/api/JsiSkPaint.h +6 -0
- package/cpp/api/JsiSkPathFactory.h +2 -2
- package/cpp/api/JsiSkPicture.h +7 -1
- package/cpp/api/JsiSkPictureFactory.h +1 -1
- package/cpp/api/JsiSkRuntimeEffect.h +6 -6
- package/cpp/api/JsiSkRuntimeEffectFactory.h +1 -1
- package/cpp/jsi/JsiSimpleValueWrapper.h +27 -27
- package/cpp/jsi/JsiValueWrapper.h +127 -0
- package/cpp/rnskia/RNSkDrawView.cpp +44 -20
- package/cpp/rnskia/RNSkDrawView.h +18 -20
- package/cpp/rnskia/RNSkJsiViewApi.h +180 -166
- package/cpp/rnskia/values/RNSkComputedValue.h +11 -11
- package/cpp/rnskia/values/RNSkReadonlyValue.h +19 -19
- package/cpp/rnskia/values/RNSkValue.h +13 -13
- package/cpp/utils/RNSkLog.h +4 -4
- package/lib/commonjs/renderer/Canvas.js +17 -7
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +144 -36
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostConfig.js +18 -2
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/renderer/components/Blend.js +20 -5
- package/lib/commonjs/renderer/components/Blend.js.map +1 -1
- package/lib/commonjs/renderer/components/backdrop/BackdropFilter.js.map +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Morphology.js +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Morphology.js.map +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Shadow.js +1 -1
- package/lib/commonjs/renderer/components/imageFilters/Shadow.js.map +1 -1
- package/lib/commonjs/renderer/nodes/Declaration.js +2 -3
- package/lib/commonjs/renderer/nodes/Declaration.js.map +1 -1
- package/lib/commonjs/renderer/nodes/Drawing.js +3 -7
- package/lib/commonjs/renderer/nodes/Drawing.js.map +1 -1
- package/lib/commonjs/renderer/nodes/Node.js +9 -7
- package/lib/commonjs/renderer/nodes/Node.js.map +1 -1
- package/lib/commonjs/renderer/processors/Animations/Animations.js +3 -22
- package/lib/commonjs/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/commonjs/skia/types/Paint/Paint.js.map +1 -1
- package/lib/commonjs/skia/web/Host.js +12 -21
- package/lib/commonjs/skia/web/Host.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.js +46 -26
- package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkColorFilterFactory.js +4 -4
- package/lib/commonjs/skia/web/JsiSkColorFilterFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkFont.js +7 -3
- package/lib/commonjs/skia/web/JsiSkFont.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImage.js +4 -2
- package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImageFactory.js +4 -2
- package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImageFilterFactory.js +61 -19
- package/lib/commonjs/skia/web/JsiSkImageFilterFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkMatrix.js +1 -1
- package/lib/commonjs/skia/web/JsiSkMatrix.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPaint.js +19 -6
- package/lib/commonjs/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.js +9 -55
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPathEffectFactory.js +7 -3
- package/lib/commonjs/skia/web/JsiSkPathEffectFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPathFactory.js +1 -1
- package/lib/commonjs/skia/web/JsiSkPathFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPicture.js +5 -1
- package/lib/commonjs/skia/web/JsiSkPicture.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPictureRecorder.js +3 -1
- package/lib/commonjs/skia/web/JsiSkPictureRecorder.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPoint.js +9 -1
- package/lib/commonjs/skia/web/JsiSkPoint.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRRect.js +1 -1
- package/lib/commonjs/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRSXform.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRect.js +1 -1
- package/lib/commonjs/skia/web/JsiSkRect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRuntimeEffect.js +4 -2
- package/lib/commonjs/skia/web/JsiSkRuntimeEffect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkShaderFactory.js +10 -6
- package/lib/commonjs/skia/web/JsiSkShaderFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkSurface.js +3 -1
- package/lib/commonjs/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js +8 -4
- package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkTypefaceFactory.js +1 -1
- package/lib/commonjs/skia/web/JsiSkTypefaceFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +12 -6
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +11 -27
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/renderer/Canvas.js +17 -6
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +140 -33
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostConfig.js +18 -2
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/renderer/components/Blend.js +21 -5
- package/lib/module/renderer/components/Blend.js.map +1 -1
- package/lib/module/renderer/components/backdrop/BackdropFilter.js.map +1 -1
- package/lib/module/renderer/components/imageFilters/Morphology.js +1 -1
- package/lib/module/renderer/components/imageFilters/Morphology.js.map +1 -1
- package/lib/module/renderer/components/imageFilters/Shadow.js +1 -1
- package/lib/module/renderer/components/imageFilters/Shadow.js.map +1 -1
- package/lib/module/renderer/nodes/Declaration.js +3 -4
- package/lib/module/renderer/nodes/Declaration.js.map +1 -1
- package/lib/module/renderer/nodes/Drawing.js +3 -6
- package/lib/module/renderer/nodes/Drawing.js.map +1 -1
- package/lib/module/renderer/nodes/Node.js +9 -7
- package/lib/module/renderer/nodes/Node.js.map +1 -1
- package/lib/module/renderer/processors/Animations/Animations.js +1 -16
- package/lib/module/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/module/skia/types/Paint/Paint.js.map +1 -1
- package/lib/module/skia/web/Host.js +9 -9
- package/lib/module/skia/web/Host.js.map +1 -1
- package/lib/module/skia/web/JsiSkCanvas.js +37 -27
- package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/module/skia/web/JsiSkColorFilterFactory.js +5 -5
- package/lib/module/skia/web/JsiSkColorFilterFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkFont.js +6 -4
- package/lib/module/skia/web/JsiSkFont.js.map +1 -1
- package/lib/module/skia/web/JsiSkImage.js +4 -3
- package/lib/module/skia/web/JsiSkImage.js.map +1 -1
- package/lib/module/skia/web/JsiSkImageFactory.js +4 -3
- package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkImageFilterFactory.js +61 -20
- package/lib/module/skia/web/JsiSkImageFilterFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkMatrix.js +2 -2
- package/lib/module/skia/web/JsiSkMatrix.js.map +1 -1
- package/lib/module/skia/web/JsiSkPaint.js +15 -7
- package/lib/module/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.js +9 -57
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/skia/web/JsiSkPathEffectFactory.js +6 -4
- package/lib/module/skia/web/JsiSkPathEffectFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkPathFactory.js +2 -2
- package/lib/module/skia/web/JsiSkPathFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkPicture.js +4 -2
- package/lib/module/skia/web/JsiSkPicture.js.map +1 -1
- package/lib/module/skia/web/JsiSkPictureRecorder.js +3 -2
- package/lib/module/skia/web/JsiSkPictureRecorder.js.map +1 -1
- package/lib/module/skia/web/JsiSkPoint.js +10 -2
- package/lib/module/skia/web/JsiSkPoint.js.map +1 -1
- package/lib/module/skia/web/JsiSkRRect.js +2 -2
- package/lib/module/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/module/skia/web/JsiSkRSXform.js.map +1 -1
- package/lib/module/skia/web/JsiSkRect.js +2 -2
- package/lib/module/skia/web/JsiSkRect.js.map +1 -1
- package/lib/module/skia/web/JsiSkRuntimeEffect.js +4 -3
- package/lib/module/skia/web/JsiSkRuntimeEffect.js.map +1 -1
- package/lib/module/skia/web/JsiSkShaderFactory.js +9 -7
- package/lib/module/skia/web/JsiSkShaderFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkSurface.js +3 -2
- package/lib/module/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/module/skia/web/JsiSkTextBlobFactory.js +7 -5
- package/lib/module/skia/web/JsiSkTextBlobFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkTypefaceFactory.js +2 -2
- package/lib/module/skia/web/JsiSkTypefaceFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +10 -5
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/views/SkiaView.js +11 -26
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/renderer/Canvas.d.ts +1 -1
- package/lib/typescript/src/renderer/DependencyManager.d.ts +40 -14
- package/lib/typescript/src/renderer/nodes/Declaration.d.ts +2 -2
- package/lib/typescript/src/renderer/nodes/Drawing.d.ts +2 -2
- package/lib/typescript/src/renderer/nodes/Node.d.ts +3 -2
- package/lib/typescript/src/renderer/processors/Animations/Animations.d.ts +0 -1
- package/lib/typescript/src/skia/types/Paint/Paint.d.ts +5 -0
- package/lib/typescript/src/skia/types/Picture/Picture.d.ts +2 -1
- package/lib/typescript/src/skia/web/Host.d.ts +6 -8
- package/lib/typescript/src/skia/web/JsiSkImageFilterFactory.d.ts +8 -8
- package/lib/typescript/src/skia/web/JsiSkPaint.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkPoint.d.ts +3 -2
- package/lib/typescript/src/skia/web/JsiSkRRect.d.ts +2 -2
- package/lib/typescript/src/skia/web/JsiSkRSXform.d.ts +1 -2
- package/lib/typescript/src/skia/web/JsiSkRect.d.ts +2 -2
- package/lib/typescript/src/skia/web/JsiSkTextBlobFactory.d.ts +2 -1
- package/lib/typescript/src/views/SkiaView.d.ts +1 -11
- package/lib/typescript/src/views/types.d.ts +5 -5
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +2 -2
- package/src/renderer/Canvas.tsx +19 -7
- package/src/renderer/DependencyManager.tsx +170 -39
- package/src/renderer/HostConfig.ts +12 -2
- package/src/renderer/components/Blend.tsx +25 -5
- package/src/renderer/components/backdrop/BackdropFilter.tsx +1 -1
- package/src/renderer/components/imageFilters/Morphology.tsx +2 -2
- package/src/renderer/components/imageFilters/Shadow.tsx +2 -2
- package/src/renderer/nodes/Declaration.tsx +6 -8
- package/src/renderer/nodes/Drawing.tsx +5 -7
- package/src/renderer/nodes/Node.ts +11 -9
- package/src/renderer/processors/Animations/Animations.ts +2 -15
- package/src/skia/types/Paint/Paint.ts +6 -0
- package/src/skia/types/Picture/Picture.ts +2 -1
- package/src/skia/web/Host.ts +12 -22
- package/src/skia/web/JsiSkCanvas.ts +78 -47
- package/src/skia/web/JsiSkColorFilterFactory.ts +15 -5
- package/src/skia/web/JsiSkFont.ts +11 -4
- package/src/skia/web/JsiSkImage.ts +4 -3
- package/src/skia/web/JsiSkImageFactory.ts +6 -3
- package/src/skia/web/JsiSkImageFilterFactory.ts +124 -52
- package/src/skia/web/JsiSkMatrix.ts +4 -2
- package/src/skia/web/JsiSkPaint.ts +15 -7
- package/src/skia/web/JsiSkPath.ts +16 -51
- package/src/skia/web/JsiSkPathEffectFactory.ts +10 -5
- package/src/skia/web/JsiSkPathFactory.ts +3 -3
- package/src/skia/web/JsiSkPicture.ts +5 -3
- package/src/skia/web/JsiSkPictureRecorder.ts +3 -2
- package/src/skia/web/JsiSkPoint.ts +12 -2
- package/src/skia/web/JsiSkRRect.ts +5 -2
- package/src/skia/web/JsiSkRSXform.ts +1 -1
- package/src/skia/web/JsiSkRect.ts +2 -2
- package/src/skia/web/JsiSkRuntimeEffect.ts +9 -4
- package/src/skia/web/JsiSkShaderFactory.ts +24 -15
- package/src/skia/web/JsiSkSurface.ts +7 -2
- package/src/skia/web/JsiSkTextBlobFactory.ts +14 -8
- package/src/skia/web/JsiSkTypefaceFactory.tsx +4 -2
- package/src/skia/web/JsiSkia.ts +17 -5
- package/src/views/SkiaView.tsx +17 -28
- package/src/views/types.ts +7 -6
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["types.ts"],"names":["TouchType"],"mappings":"AAYA,WAAYA,SAAZ;;WAAYA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nimport type { SkImage, SkRect
|
1
|
+
{"version":3,"sources":["types.ts"],"names":["TouchType"],"mappings":"AAYA,WAAYA,SAAZ;;WAAYA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;AAAAA,EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S","sourcesContent":["import type { ViewProps } from \"react-native\";\n\nimport type { SkCanvas, SkImage, SkRect } from \"../skia/types\";\nimport type { SkiaValue } from \"../values\";\n\nexport type DrawMode = \"continuous\" | \"default\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n mode?: DrawMode;\n debug?: boolean;\n};\n\nexport enum TouchType {\n Start,\n Active,\n End,\n Cancelled,\n}\n\nexport interface TouchInfo {\n x: number;\n y: number;\n force: number;\n type: TouchType;\n id: number;\n timestamp: number;\n}\n\nexport interface DrawingInfo {\n width: number;\n height: number;\n timestamp: number;\n touches: Array<Array<TouchInfo>>;\n}\n\nexport type ExtendedTouchInfo = TouchInfo & {\n // points per second\n velocityX: number;\n velocityY: number;\n};\n\nexport type TouchHandlers = {\n onStart?: (touchInfo: TouchInfo) => void;\n onActive?: (touchInfo: ExtendedTouchInfo) => void;\n onEnd?: (touchInfo: ExtendedTouchInfo) => void;\n};\n\nexport type TouchHandler = (touchInfo: Array<Array<TouchInfo>>) => void;\n\nexport type RNSkiaDrawCallback = (canvas: SkCanvas, info: DrawingInfo) => void;\n\n/**\n * Listener interface for value changes\n */\nexport interface ValueListener {\n addListener: (callback: () => void) => number;\n removeListener: (id: number) => void;\n}\n\nexport interface ISkiaViewApi {\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n callJsiMethod: <T extends Array<unknown>>(\n nativeId: number,\n name: string,\n ...args: T\n ) => void;\n registerValuesInView: (\n nativeId: number,\n values: SkiaValue<unknown>[]\n ) => () => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n}\n\nexport interface SkiaViewProps extends ViewProps {\n /**\n * Sets the drawing mode for the skia view. There are two drawing\n * modes, \"continuous\" and \"default\", where the continuous mode will\n * continuously redraw the view, and the default mode will only\n * redraw when any of the regular react properties are changed like\n * sizes and margins.\n */\n mode?: DrawMode;\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 * Draw callback. Will be called whenever the view is invalidated and\n * needs to redraw. This is either caused by a change in a react\n * property, a touch event, or a call to redraw. If the view is in\n * continuous mode the callback will be called 60 frames per second\n * by the native view.\n */\n onDraw?: RNSkiaDrawCallback;\n}\n"]}
|
@@ -11,4 +11,4 @@ export interface CanvasProps extends ComponentProps<typeof SkiaView> {
|
|
11
11
|
children: ReactNode;
|
12
12
|
onTouch?: TouchHandler;
|
13
13
|
}
|
14
|
-
export declare const Canvas: React.ForwardRefExoticComponent<Pick<CanvasProps, "
|
14
|
+
export declare const Canvas: React.ForwardRefExoticComponent<Pick<CanvasProps, "mode" | "debug" | "onDraw" | "children" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "onTouch"> & React.RefAttributes<SkiaView>>;
|
@@ -1,21 +1,47 @@
|
|
1
|
-
import type { RefObject } from "react";
|
2
|
-
import type { SkiaView } from "../views";
|
3
1
|
import type { SkiaValue } from "../values";
|
4
2
|
import type { Node } from "./nodes";
|
3
|
+
import type { AnimatedProps } from "./processors";
|
5
4
|
declare type Unsubscribe = () => void;
|
6
|
-
declare type
|
7
|
-
|
5
|
+
declare type Mutator = (value: unknown) => void;
|
6
|
+
declare type SubscriptionState = {
|
7
|
+
nodes: Map<Node, Mutator[]>;
|
8
|
+
unsubscribe: null | Unsubscribe;
|
8
9
|
};
|
9
10
|
export declare class DependencyManager {
|
10
|
-
|
11
|
-
subscriptions: Map<
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
11
|
+
registerValues: (values: Array<SkiaValue<unknown>>) => () => void;
|
12
|
+
subscriptions: Map<SkiaValue<unknown>, SubscriptionState>;
|
13
|
+
unregisterDependantValues: null | Unsubscribe;
|
14
|
+
constructor(registerValues: (values: Array<SkiaValue<unknown>>) => () => void);
|
15
|
+
/**
|
16
|
+
* Call to unsubscribe all value listeners from the given node based
|
17
|
+
* on the current list of subscriptions for the node. This function
|
18
|
+
* is typically called when the node is unmounted or when one or more
|
19
|
+
* properties have changed.
|
20
|
+
* @param node Node to unsubscribe value listeners from
|
21
|
+
*/
|
22
|
+
unsubscribeNode(node: Node): void;
|
23
|
+
/**
|
24
|
+
* Adds listeners to the provided values so that the node is notified
|
25
|
+
* when a value changes. This is done in an optimized way so that this
|
26
|
+
* class only needs to listen to the value once and then forwards the
|
27
|
+
* change to the node and its listener. This method is typically called
|
28
|
+
* when the node is mounted and when one or more props on the node changes.
|
29
|
+
* @param node Node to subscribe to value changes for
|
30
|
+
* @param props Node's properties
|
31
|
+
* @param onResolveProp Callback when a property value changes
|
32
|
+
*/
|
33
|
+
subscribeNode<P extends Record<string, unknown>>(node: Node, props: AnimatedProps<P>): void;
|
34
|
+
/**
|
35
|
+
* Called when the hosting container is mounted or updated. This ensures that we have
|
36
|
+
* a ref to the underlying SkiaView so that we can registers redraw listeners
|
37
|
+
* on values used in the current View automatically.
|
38
|
+
*/
|
39
|
+
update(): void;
|
40
|
+
/**
|
41
|
+
* Called when the hosting container is unmounted or recreated. This ensures that we remove
|
42
|
+
* all subscriptions to Skia values so that we don't have any listeners left after
|
43
|
+
* the component is removed.
|
44
|
+
*/
|
45
|
+
remove(): void;
|
20
46
|
}
|
21
47
|
export {};
|
@@ -8,7 +8,7 @@ export declare type DeclarationResult = SkJSIInstance<string> | null;
|
|
8
8
|
declare type DeclarationCallback<T> = (props: T, children: DeclarationResult[], ctx: DrawingContext) => DeclarationResult;
|
9
9
|
export declare const createDeclaration: <T>(cb: DeclarationCallback<T>) => DeclarationCallback<T>;
|
10
10
|
export declare const useDeclaration: <P>(cb: DeclarationCallback<P>, deps?: DependencyList | undefined) => DeclarationCallback<P>;
|
11
|
-
export declare const isDeclarationNode: (node: Node) => node is DeclarationNode<
|
11
|
+
export declare const isDeclarationNode: <P>(node: Node) => node is DeclarationNode<P>;
|
12
12
|
export interface DeclarationProps<P> {
|
13
13
|
onDeclare: DeclarationCallback<P>;
|
14
14
|
}
|
@@ -16,7 +16,7 @@ export declare class DeclarationNode<P> extends Node<P> {
|
|
16
16
|
private onDeclare;
|
17
17
|
constructor(depMgr: DependencyManager, onDeclare: DeclarationCallback<P>, props: AnimatedProps<P>);
|
18
18
|
set props(props: AnimatedProps<P>);
|
19
|
-
get props():
|
19
|
+
get props(): P;
|
20
20
|
draw(ctx: DrawingContext): DeclarationResult;
|
21
21
|
}
|
22
22
|
export {};
|
@@ -7,8 +7,8 @@ declare type DrawingCallback<P> = (ctx: DrawingContext, props: P, node: Node<P>)
|
|
7
7
|
declare type OnDrawCallback<P> = (ctx: DrawingContext, props: P, node: Node<P>) => void;
|
8
8
|
export declare const createDrawing: <P>(cb: OnDrawCallback<P>) => DrawingCallback<P>;
|
9
9
|
export declare const useDrawing: <P>(cb: OnDrawCallback<P>, deps?: DependencyList | undefined) => OnDrawCallback<P>;
|
10
|
-
export declare type DrawingProps<
|
11
|
-
onDraw: DrawingCallback<
|
10
|
+
export declare type DrawingProps<P> = {
|
11
|
+
onDraw: DrawingCallback<P>;
|
12
12
|
skipProcessing?: boolean;
|
13
13
|
children?: ReactNode | ReactNode[];
|
14
14
|
};
|
@@ -9,15 +9,16 @@ export declare enum NodeType {
|
|
9
9
|
declare type DeclarationResult = SkJSIInstance<string> | null;
|
10
10
|
export declare abstract class Node<P = unknown> {
|
11
11
|
readonly children: Node[];
|
12
|
-
|
12
|
+
resolvedProps: P;
|
13
13
|
memoizable: boolean;
|
14
14
|
memoized: DeclarationResult | null;
|
15
15
|
parent?: Node;
|
16
16
|
depMgr: DependencyManager;
|
17
17
|
constructor(depMgr: DependencyManager, props: AnimatedProps<P>);
|
18
18
|
abstract draw(ctx: DrawingContext): void | DeclarationResult;
|
19
|
+
updatePropSubscriptions(props: AnimatedProps<P>): void;
|
19
20
|
set props(props: AnimatedProps<P>);
|
20
|
-
get props():
|
21
|
+
get props(): P;
|
21
22
|
visit(ctx: DrawingContext, children?: Node[]): SkJSIInstance<string>[];
|
22
23
|
}
|
23
24
|
export {};
|
@@ -5,7 +5,6 @@ export declare const isSelector: <T, R>(value: unknown) => value is {
|
|
5
5
|
value: SkiaValue<T>;
|
6
6
|
};
|
7
7
|
export declare const isAnimated: <T>(props: AnimatedProps<T>) => boolean;
|
8
|
-
export declare const materialize: <T>(props: AnimatedProps<T>) => T;
|
9
8
|
export declare type AnimatedProp<T, P = any> = T | SkiaValue<T> | SkiaSelector<T, P>;
|
10
9
|
export declare type AnimatedProps<T> = {
|
11
10
|
[K in keyof T]: AnimatedProp<T[K]>;
|
@@ -26,6 +26,11 @@ export interface SkPaint extends SkJSIInstance<"Paint"> {
|
|
26
26
|
* Returns a copy of this paint.
|
27
27
|
*/
|
28
28
|
copy(): SkPaint;
|
29
|
+
/**
|
30
|
+
* Sets all SkPaint contents to their initial values. This is equivalent to replacing
|
31
|
+
SkPaint with the result of SkPaint().
|
32
|
+
*/
|
33
|
+
reset(): void;
|
29
34
|
/**
|
30
35
|
* Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values
|
31
36
|
* (sRGB gamut, and encoded with the sRGB transfer function).
|
@@ -3,7 +3,8 @@ import type { TileMode } from "../ImageFilter";
|
|
3
3
|
import type { SkRect } from "../Rect";
|
4
4
|
import type { SkShader } from "../Shader";
|
5
5
|
import type { SkMatrix } from "../Matrix";
|
6
|
-
|
6
|
+
import type { SkJSIInstance } from "../JsiInstance";
|
7
|
+
export interface SkPicture extends SkJSIInstance<"Picture"> {
|
7
8
|
/**
|
8
9
|
* Returns a new shader that will draw with this picture.
|
9
10
|
*
|
@@ -1,21 +1,19 @@
|
|
1
1
|
import type { CanvasKit, EmbindEnumEntity } from "canvaskit-wasm";
|
2
2
|
import type { SkJSIInstance } from "../types";
|
3
3
|
export declare class NotImplementedOnRNWeb extends Error {
|
4
|
-
constructor();
|
4
|
+
constructor(msg?: string);
|
5
5
|
}
|
6
6
|
export declare abstract class Host {
|
7
7
|
readonly CanvasKit: CanvasKit;
|
8
8
|
constructor(CanvasKit: CanvasKit);
|
9
9
|
}
|
10
|
-
export declare abstract class
|
10
|
+
export declare abstract class BaseHostObject<T, N extends string> extends Host implements SkJSIInstance<N> {
|
11
11
|
readonly __typename__: N;
|
12
|
-
|
12
|
+
ref: T;
|
13
13
|
constructor(CanvasKit: CanvasKit, ref: T, typename: N);
|
14
14
|
}
|
15
|
-
export declare
|
16
|
-
|
17
|
-
|
18
|
-
export declare const toNullableValue: <T>(value: NonNullish | null) => T | null;
|
19
|
-
export declare const toValue: <T>(value: NonNullish) => T;
|
15
|
+
export declare abstract class HostObject<T, N extends string> extends BaseHostObject<T, N> {
|
16
|
+
static fromValue<T>(value: SkJSIInstance<string>): T;
|
17
|
+
}
|
20
18
|
export declare const ckEnum: (value: number) => EmbindEnumEntity;
|
21
19
|
export declare const optEnum: (value: number | undefined) => EmbindEnumEntity | undefined;
|
@@ -4,16 +4,16 @@ import { Host } from "./Host";
|
|
4
4
|
import { JsiSkImageFilter } from "./JsiSkImageFilter";
|
5
5
|
export declare class JsiSkImageFilterFactory extends Host implements ImageFilterFactory {
|
6
6
|
constructor(CanvasKit: CanvasKit);
|
7
|
-
MakeOffset(
|
8
|
-
MakeDisplacementMap(
|
9
|
-
MakeShader(
|
7
|
+
MakeOffset(dx: number, dy: number, input: SkImageFilter | null): JsiSkImageFilter;
|
8
|
+
MakeDisplacementMap(channelX: ColorChannel, channelY: ColorChannel, scale: number, in1: SkImageFilter, input: SkImageFilter | null): SkImageFilter;
|
9
|
+
MakeShader(shader: SkShader, _input: SkImageFilter | null): SkImageFilter;
|
10
10
|
MakeBlur(sigmaX: number, sigmaY: number, mode: TileMode, input: SkImageFilter | null): JsiSkImageFilter;
|
11
11
|
MakeColorFilter(cf: SkColorFilter, input: SkImageFilter | null): JsiSkImageFilter;
|
12
12
|
MakeCompose(outer: SkImageFilter | null, inner: SkImageFilter | null): JsiSkImageFilter;
|
13
|
-
MakeDropShadow(
|
14
|
-
MakeDropShadowOnly(
|
15
|
-
MakeErode(
|
16
|
-
MakeDilate(
|
17
|
-
MakeBlend(
|
13
|
+
MakeDropShadow(dx: number, dy: number, sigmaX: number, sigmaY: number, color: SkColor, input: SkImageFilter | null, cropRect?: SkRect): SkImageFilter;
|
14
|
+
MakeDropShadowOnly(dx: number, dy: number, sigmaX: number, sigmaY: number, color: SkColor, input: SkImageFilter | null, cropRect?: SkRect): SkImageFilter;
|
15
|
+
MakeErode(rx: number, ry: number, input: SkImageFilter | null, cropRect?: SkRect): SkImageFilter;
|
16
|
+
MakeDilate(rx: number, ry: number, input: SkImageFilter | null, cropRect?: SkRect): SkImageFilter;
|
17
|
+
MakeBlend(mode: BlendMode, background: SkImageFilter, foreground: SkImageFilter | null, cropRect?: SkRect): SkImageFilter;
|
18
18
|
MakeRuntimeShader(_builder: SkRuntimeShaderBuilder, _childShaderName: string | null, _input: SkImageFilter | null): SkImageFilter;
|
19
19
|
}
|
@@ -4,6 +4,7 @@ import { HostObject } from "./Host";
|
|
4
4
|
export declare class JsiSkPaint extends HostObject<Paint, "Paint"> implements SkPaint {
|
5
5
|
constructor(CanvasKit: CanvasKit, ref: Paint);
|
6
6
|
copy(): JsiSkPaint;
|
7
|
+
reset(): void;
|
7
8
|
getColor(): Float32Array;
|
8
9
|
getStrokeCap(): number;
|
9
10
|
getStrokeJoin(): number;
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import type { CanvasKit, Point } from "canvaskit-wasm";
|
2
2
|
import type { SkPoint } from "../types";
|
3
|
-
import {
|
4
|
-
export declare class JsiSkPoint extends
|
3
|
+
import { BaseHostObject } from "./Host";
|
4
|
+
export declare class JsiSkPoint extends BaseHostObject<Point, "Point"> implements SkPoint {
|
5
|
+
static fromValue(point: SkPoint): Float32Array;
|
5
6
|
constructor(CanvasKit: CanvasKit, ref: Point);
|
6
7
|
get x(): number;
|
7
8
|
get y(): number;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import type { CanvasKit, RRect } from "canvaskit-wasm";
|
2
2
|
import type { SkRRect } from "../types";
|
3
|
-
import {
|
3
|
+
import { BaseHostObject } from "./Host";
|
4
4
|
import { JsiSkRect } from "./JsiSkRect";
|
5
|
-
export declare class JsiSkRRect extends
|
5
|
+
export declare class JsiSkRRect extends BaseHostObject<RRect, "RRect"> implements SkRRect {
|
6
6
|
static fromValue(CanvasKit: CanvasKit, rect: SkRRect): Float32Array;
|
7
7
|
constructor(CanvasKit: CanvasKit, ref: RRect);
|
8
8
|
get rx(): number;
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import type { CanvasKit } from "canvaskit-wasm";
|
2
2
|
import type { SkRSXform } from "../types";
|
3
3
|
import { HostObject } from "./Host";
|
4
|
-
declare type RSXform = Float32Array;
|
4
|
+
export declare type RSXform = Float32Array;
|
5
5
|
export declare class JsiSkRSXform extends HostObject<RSXform, "RSXform"> implements SkRSXform {
|
6
6
|
constructor(CanvasKit: CanvasKit, ref: RSXform);
|
7
7
|
}
|
8
|
-
export {};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { CanvasKit, Rect } from "canvaskit-wasm";
|
2
2
|
import type { SkRect } from "../types";
|
3
|
-
import {
|
4
|
-
export declare class JsiSkRect extends
|
3
|
+
import { BaseHostObject } from "./Host";
|
4
|
+
export declare class JsiSkRect extends BaseHostObject<Rect, "Rect"> implements SkRect {
|
5
5
|
static fromValue(CanvasKit: CanvasKit, rect: SkRect): Float32Array;
|
6
6
|
constructor(CanvasKit: CanvasKit, ref: Rect);
|
7
7
|
get x(): number;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import type { CanvasKit } from "canvaskit-wasm";
|
2
|
-
import type { SkFont
|
2
|
+
import type { SkFont } from "../types";
|
3
3
|
import type { TextBlobFactory } from "../types/TextBlob";
|
4
|
+
import type { SkRSXform } from "../types/RSXform";
|
4
5
|
import { Host } from "./Host";
|
5
6
|
import { JsiSkTextBlob } from "./JsiSkTextBlob";
|
6
7
|
export declare class JsiSkTextBlobFactory extends Host implements TextBlobFactory {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import type { SkRect } from "../skia/types";
|
3
3
|
import type { SkiaValue } from "../values";
|
4
|
-
import type {
|
4
|
+
import type { SkiaViewProps } from "./types";
|
5
5
|
export declare class SkiaView extends React.Component<SkiaViewProps> {
|
6
6
|
constructor(props: SkiaViewProps);
|
7
7
|
private _nativeId;
|
@@ -17,16 +17,6 @@ export declare class SkiaView extends React.Component<SkiaViewProps> {
|
|
17
17
|
* Sends a redraw request to the native SkiaView.
|
18
18
|
*/
|
19
19
|
redraw(): void;
|
20
|
-
/**
|
21
|
-
* Updates the drawing mode for the skia view. This is the same
|
22
|
-
* as declaratively setting the mode property on the SkiaView.
|
23
|
-
* There are two drawing modes, "continuous" and "default",
|
24
|
-
* where the continuous mode will continuously redraw the view and
|
25
|
-
* the default mode will only redraw when any of the regular react
|
26
|
-
* properties are changed like size and margins.
|
27
|
-
* @param mode Drawing mode to use.
|
28
|
-
*/
|
29
|
-
setDrawMode(mode: DrawMode): void;
|
30
20
|
/**
|
31
21
|
* Registers one or move values as a dependant value of the Skia View. The view will
|
32
22
|
* The view will redraw itself when any of the values change.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { ViewProps } from "react-native";
|
2
|
-
import type { SkImage, SkRect
|
2
|
+
import type { SkCanvas, SkImage, SkRect } from "../skia/types";
|
3
3
|
import type { SkiaValue } from "../values";
|
4
4
|
export declare type DrawMode = "continuous" | "default";
|
5
5
|
export declare type NativeSkiaViewProps = ViewProps & {
|
@@ -45,11 +45,11 @@ export interface ValueListener {
|
|
45
45
|
removeListener: (id: number) => void;
|
46
46
|
}
|
47
47
|
export interface ISkiaViewApi {
|
48
|
-
|
49
|
-
|
50
|
-
setDrawCallback: (nativeId: number, callback: RNSkiaDrawCallback | undefined) => void;
|
51
|
-
setDrawMode: (nativeId: number, mode: DrawMode) => void;
|
48
|
+
setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;
|
49
|
+
callJsiMethod: <T extends Array<unknown>>(nativeId: number, name: string, ...args: T) => void;
|
52
50
|
registerValuesInView: (nativeId: number, values: SkiaValue<unknown>[]) => () => void;
|
51
|
+
requestRedraw: (nativeId: number) => void;
|
52
|
+
makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;
|
53
53
|
}
|
54
54
|
export interface SkiaViewProps extends ViewProps {
|
55
55
|
/**
|
@@ -6,32 +6,32 @@
|
|
6
6
|
<array>
|
7
7
|
<dict>
|
8
8
|
<key>LibraryIdentifier</key>
|
9
|
-
<string>ios-
|
9
|
+
<string>ios-arm64_arm64e</string>
|
10
10
|
<key>LibraryPath</key>
|
11
11
|
<string>libskia.a</string>
|
12
12
|
<key>SupportedArchitectures</key>
|
13
13
|
<array>
|
14
14
|
<string>arm64</string>
|
15
15
|
<string>arm64e</string>
|
16
|
-
<string>x86_64</string>
|
17
16
|
</array>
|
18
17
|
<key>SupportedPlatform</key>
|
19
18
|
<string>ios</string>
|
20
|
-
<key>SupportedPlatformVariant</key>
|
21
|
-
<string>simulator</string>
|
22
19
|
</dict>
|
23
20
|
<dict>
|
24
21
|
<key>LibraryIdentifier</key>
|
25
|
-
<string>ios-
|
22
|
+
<string>ios-arm64_arm64e_x86_64-simulator</string>
|
26
23
|
<key>LibraryPath</key>
|
27
24
|
<string>libskia.a</string>
|
28
25
|
<key>SupportedArchitectures</key>
|
29
26
|
<array>
|
30
27
|
<string>arm64</string>
|
31
28
|
<string>arm64e</string>
|
29
|
+
<string>x86_64</string>
|
32
30
|
</array>
|
33
31
|
<key>SupportedPlatform</key>
|
34
32
|
<string>ios</string>
|
33
|
+
<key>SupportedPlatformVariant</key>
|
34
|
+
<string>simulator</string>
|
35
35
|
</dict>
|
36
36
|
</array>
|
37
37
|
<key>CFBundlePackageType</key>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
package/package.json
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
"setup-skia-web": "./scripts/setup-canvaskit.js"
|
8
8
|
},
|
9
9
|
"title": "React Native Skia",
|
10
|
-
"version": "0.1.
|
10
|
+
"version": "0.1.146",
|
11
11
|
"description": "High-performance React Native Graphics using Skia",
|
12
12
|
"main": "lib/module/index.js",
|
13
13
|
"files": [
|
@@ -89,7 +89,7 @@
|
|
89
89
|
"typescript": "^4.6.4"
|
90
90
|
},
|
91
91
|
"dependencies": {
|
92
|
-
"canvaskit-wasm": "^0.
|
92
|
+
"canvaskit-wasm": "^0.36.0",
|
93
93
|
"react-reconciler": "^0.26.2"
|
94
94
|
},
|
95
95
|
"eslintIgnore": [
|
package/src/renderer/Canvas.tsx
CHANGED
@@ -20,6 +20,7 @@ import { SkiaView, useDrawCallback } from "../views";
|
|
20
20
|
import type { TouchHandler } from "../views";
|
21
21
|
import { useValue } from "../values/hooks/useValue";
|
22
22
|
import { Skia } from "../skia/Skia";
|
23
|
+
import type { SkiaValue } from "../values";
|
23
24
|
|
24
25
|
import { debug as hostDebug, skHostConfig } from "./HostConfig";
|
25
26
|
// import { debugTree } from "./nodes";
|
@@ -38,8 +39,7 @@ skiaReconciler.injectIntoDevTools({
|
|
38
39
|
const render = (element: ReactNode, root: OpaqueRoot, container: Container) => {
|
39
40
|
skiaReconciler.updateContainer(element, root, null, () => {
|
40
41
|
hostDebug("updateContainer");
|
41
|
-
|
42
|
-
container.depMgr.subscribe();
|
42
|
+
container.depMgr.update();
|
43
43
|
});
|
44
44
|
};
|
45
45
|
|
@@ -60,9 +60,19 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
60
60
|
const [tick, setTick] = useState(0);
|
61
61
|
const redraw = useCallback(() => setTick((t) => t + 1), []);
|
62
62
|
|
63
|
+
const registerValues = useCallback(
|
64
|
+
(values: Array<SkiaValue<unknown>>) => {
|
65
|
+
if (ref.current === null) {
|
66
|
+
throw new Error("Canvas ref is not set");
|
67
|
+
}
|
68
|
+
return ref.current.registerValues(values);
|
69
|
+
},
|
70
|
+
[ref]
|
71
|
+
);
|
72
|
+
|
63
73
|
const container = useMemo(
|
64
|
-
() => new Container(new DependencyManager(
|
65
|
-
[redraw,
|
74
|
+
() => new Container(new DependencyManager(registerValues), redraw),
|
75
|
+
[redraw, registerValues]
|
66
76
|
);
|
67
77
|
|
68
78
|
const root = useMemo(
|
@@ -78,6 +88,8 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
78
88
|
);
|
79
89
|
}, [children, root, redraw, container, canvasCtx]);
|
80
90
|
|
91
|
+
const paint = useMemo(() => Skia.Paint(), []);
|
92
|
+
|
81
93
|
// Draw callback
|
82
94
|
const onDraw = useDrawCallback(
|
83
95
|
(canvas, info) => {
|
@@ -92,7 +104,7 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
92
104
|
) {
|
93
105
|
canvasCtx.size.current = { width, height };
|
94
106
|
}
|
95
|
-
|
107
|
+
paint.reset();
|
96
108
|
const ctx = {
|
97
109
|
width,
|
98
110
|
height,
|
@@ -101,7 +113,7 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
101
113
|
paint,
|
102
114
|
opacity: 1,
|
103
115
|
ref,
|
104
|
-
center:
|
116
|
+
center: { x: width / 2, y: height / 2 },
|
105
117
|
Skia,
|
106
118
|
};
|
107
119
|
container.draw(ctx);
|
@@ -112,7 +124,7 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
112
124
|
useEffect(() => {
|
113
125
|
return () => {
|
114
126
|
skiaReconciler.updateContainer(null, root, null, () => {
|
115
|
-
container.depMgr.
|
127
|
+
container.depMgr.remove();
|
116
128
|
});
|
117
129
|
};
|
118
130
|
}, [container, root]);
|