@shopify/react-native-skia 0.1.178 → 0.1.180
Sign up to get free protection for your applications and to get access to all the features.
- package/cpp/rnskia/RNSkView.h +5 -3
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +10 -9
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js +10 -2
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/commonjs/external/reanimated/moduleWrapper.d.ts +2 -2
- package/lib/commonjs/external/reanimated/moduleWrapper.js +33 -37
- package/lib/commonjs/external/reanimated/moduleWrapper.js.map +1 -1
- package/lib/commonjs/external/reanimated/renderHelpers.js +2 -6
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/external/reanimated/useSharedValueEffect.js +1 -1
- package/lib/commonjs/external/reanimated/useSharedValueEffect.js.map +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js +10 -2
- package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/module/external/reanimated/moduleWrapper.d.ts +2 -2
- package/lib/module/external/reanimated/moduleWrapper.js +31 -32
- package/lib/module/external/reanimated/moduleWrapper.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.js +3 -7
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/external/reanimated/useSharedValueEffect.js +2 -2
- package/lib/module/external/reanimated/useSharedValueEffect.js.map +1 -1
- package/lib/typescript/src/external/reanimated/moduleWrapper.d.ts +2 -2
- package/package.json +1 -1
- package/src/dom/nodes/paint/ImageFilters.ts +8 -2
- package/src/external/reanimated/moduleWrapper.ts +36 -38
- package/src/external/reanimated/renderHelpers.ts +3 -7
- package/src/external/reanimated/useSharedValueEffect.ts +2 -2
package/cpp/rnskia/RNSkView.h
CHANGED
@@ -88,10 +88,11 @@ protected:
|
|
88
88
|
|
89
89
|
class RNSkImageCanvasProvider : public RNSkCanvasProvider {
|
90
90
|
public:
|
91
|
-
RNSkImageCanvasProvider(std::
|
91
|
+
RNSkImageCanvasProvider(std::shared_ptr<RNSkPlatformContext> context,
|
92
|
+
std::function<void()> requestRedraw, float width,
|
92
93
|
float height)
|
93
94
|
: RNSkCanvasProvider(requestRedraw), _width(width), _height(height) {
|
94
|
-
_surface =
|
95
|
+
_surface = context->makeOffscreenSurface(_width, _height);
|
95
96
|
}
|
96
97
|
|
97
98
|
/**
|
@@ -261,8 +262,9 @@ public:
|
|
261
262
|
Renders the view into an SkImage instead of the screen.
|
262
263
|
*/
|
263
264
|
sk_sp<SkImage> makeImageSnapshot(std::shared_ptr<SkRect> bounds) {
|
265
|
+
|
264
266
|
auto provider = std::make_shared<RNSkImageCanvasProvider>(
|
265
|
-
std::bind(&RNSkView::requestRedraw, this),
|
267
|
+
getPlatformContext(), std::bind(&RNSkView::requestRedraw, this),
|
266
268
|
_canvasProvider->getScaledWidth(), _canvasProvider->getScaledHeight());
|
267
269
|
|
268
270
|
_renderer->renderImmediate(provider);
|
@@ -158,20 +158,21 @@ public:
|
|
158
158
|
: JsiBaseImageFilterNode(context, "skDisplacementMapImageFilter") {}
|
159
159
|
|
160
160
|
void decorate(DeclarationContext *context) override {
|
161
|
-
|
161
|
+
decorateChildren(context);
|
162
162
|
auto channelX =
|
163
163
|
getColorChannelFromStringValue(_channelXProp->value().getAsString());
|
164
164
|
auto channelY =
|
165
165
|
getColorChannelFromStringValue(_channelYProp->value().getAsString());
|
166
166
|
auto scale = _scaleProp->value().getAsNumber();
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
167
|
+
auto shader = context->getShaders()->pop();
|
168
|
+
if (!shader) {
|
169
|
+
throw std::runtime_error("DisplacementMap expects a shader as child");
|
170
|
+
}
|
171
|
+
auto map = SkImageFilters::Shader(shader);
|
172
|
+
auto input = context->getImageFilters()->pop();
|
173
|
+
auto imgf = SkImageFilters::DisplacementMap(channelX, channelY, scale, map,
|
174
|
+
input ? input : nullptr);
|
175
|
+
context->getImageFilters()->push(imgf);
|
175
176
|
}
|
176
177
|
|
177
178
|
protected:
|
@@ -83,13 +83,21 @@ class DisplacementMapImageFilterNode extends ImageFilterDeclaration {
|
|
83
83
|
}
|
84
84
|
|
85
85
|
decorate(ctx) {
|
86
|
+
this.decorateChildren(ctx);
|
86
87
|
const {
|
87
88
|
channelX,
|
88
89
|
channelY,
|
89
90
|
scale
|
90
91
|
} = this.props;
|
91
|
-
const
|
92
|
-
|
92
|
+
const shader = ctx.shaders.pop();
|
93
|
+
|
94
|
+
if (!shader) {
|
95
|
+
throw new Error("DisplacementMap expects a shader as child");
|
96
|
+
}
|
97
|
+
|
98
|
+
const map = this.Skia.ImageFilter.MakeShader(shader, null);
|
99
|
+
const imgf = this.Skia.ImageFilter.MakeDisplacementMap(_types.ColorChannel[(0, _datatypes.enumKey)(channelX)], _types.ColorChannel[(0, _datatypes.enumKey)(channelY)], scale, map, this.input(ctx));
|
100
|
+
ctx.imageFilters.push(imgf);
|
93
101
|
}
|
94
102
|
|
95
103
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","imageFilters","pop","composeAndPush","imgf1","save","decorateChildren","imgf2","popAllAsOne","cf","colorFilters","restore","imgf","push","OffsetImageFilterNode","NodeType","OffsetImageFilter","decorate","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","ColorChannel","enumKey","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","processRadius","DropShadowImageFilterNode","DropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","Error","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DeclarationContext,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<P> extends JsiDeclarationNode<P> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n protected input(ctx: DeclarationContext) {\n return ctx.imageFilters.pop() ?? null;\n }\n\n protected composeAndPush(ctx: DeclarationContext, imgf1: SkImageFilter) {\n ctx.save();\n this.decorateChildren(ctx);\n let imgf2 = ctx.imageFilters.popAllAsOne();\n const cf = ctx.colorFilters.popAllAsOne();\n ctx.restore();\n if (cf) {\n imgf2 = this.Skia.ImageFilter.MakeCompose(\n imgf2 ?? null,\n this.Skia.ImageFilter.MakeColorFilter(cf, null)\n );\n }\n const imgf = imgf2\n ? this.Skia.ImageFilter.MakeCompose(imgf1, imgf2)\n : imgf1;\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { x, y } = this.props;\n const imgf = this.Skia.ImageFilter.MakeOffset(x, y, null);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { channelX, channelY, scale } = this.props;\n const imgf = this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n ctx.imageFilters.pop()!,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n const imgf = this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, this.input(ctx));\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = this.Skia.ImageFilter.MakeErode(r.x, r.y, this.input(ctx));\n } else {\n imgf = this.Skia.ImageFilter.MakeDilate(r.x, r.y, this.input(ctx));\n }\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode } = this.props;\n const a = ctx.imageFilters.pop();\n const b = ctx.imageFilters.pop();\n if (!a || !b) {\n throw new Error(\"BlendImageFilter requires two image filters\");\n }\n const imgf = this.Skia.ImageFilter.MakeBlend(mode, a, b);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = this.Skia.ImageFilter.MakeRuntimeShader(\n rtb,\n null,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","imageFilters","pop","composeAndPush","imgf1","save","decorateChildren","imgf2","popAllAsOne","cf","colorFilters","restore","imgf","push","OffsetImageFilterNode","NodeType","OffsetImageFilter","decorate","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","enumKey","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","processRadius","DropShadowImageFilterNode","DropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DeclarationContext,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<P> extends JsiDeclarationNode<P> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n protected input(ctx: DeclarationContext) {\n return ctx.imageFilters.pop() ?? null;\n }\n\n protected composeAndPush(ctx: DeclarationContext, imgf1: SkImageFilter) {\n ctx.save();\n this.decorateChildren(ctx);\n let imgf2 = ctx.imageFilters.popAllAsOne();\n const cf = ctx.colorFilters.popAllAsOne();\n ctx.restore();\n if (cf) {\n imgf2 = this.Skia.ImageFilter.MakeCompose(\n imgf2 ?? null,\n this.Skia.ImageFilter.MakeColorFilter(cf, null)\n );\n }\n const imgf = imgf2\n ? this.Skia.ImageFilter.MakeCompose(imgf1, imgf2)\n : imgf1;\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { x, y } = this.props;\n const imgf = this.Skia.ImageFilter.MakeOffset(x, y, null);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { channelX, channelY, scale } = this.props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = this.Skia.ImageFilter.MakeShader(shader, null);\n const imgf = this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n this.input(ctx)\n );\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n const imgf = this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, this.input(ctx));\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = this.Skia.ImageFilter.MakeErode(r.x, r.y, this.input(ctx));\n } else {\n imgf = this.Skia.ImageFilter.MakeDilate(r.x, r.y, this.input(ctx));\n }\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode } = this.props;\n const a = ctx.imageFilters.pop();\n const b = ctx.imageFilters.pop();\n if (!a || !b) {\n throw new Error(\"BlendImageFilter requires two image filters\");\n }\n const imgf = this.Skia.ImageFilter.MakeBlend(mode, a, b);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = this.Skia.ImageFilter.MakeRuntimeShader(\n rtb,\n null,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { SharedValueType } from "../../renderer/processors/Animations";
|
2
|
-
export declare const
|
3
|
-
export declare
|
2
|
+
export declare const HAS_REANIMATED2: boolean;
|
3
|
+
export declare const HAS_REANIMATED3: boolean;
|
4
4
|
export declare const useSharedValue: any;
|
5
5
|
export declare const startMapper: any;
|
6
6
|
export declare const stopMapper: any;
|
@@ -3,69 +3,65 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.stopMapper = exports.startMapper = exports.runOnJS = exports.isSharedValue = exports.
|
7
|
-
exports.throwOnIncompatibleReanimatedVersion = throwOnIncompatibleReanimatedVersion;
|
8
|
-
exports.useSharedValue = void 0;
|
6
|
+
exports.useSharedValue = exports.stopMapper = exports.startMapper = exports.runOnJS = exports.isSharedValue = exports.HAS_REANIMATED3 = exports.HAS_REANIMATED2 = void 0;
|
9
7
|
|
10
8
|
var _react = require("react");
|
11
9
|
|
12
10
|
var _Reanimated, _Reanimated2, _Reanimated3, _Reanimated4;
|
13
11
|
|
12
|
+
// This one is needed for the deprecated useSharedValue function
|
13
|
+
// We can remove it once we remove the deprecation
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
15
|
-
let
|
15
|
+
let Reanimated2; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
} catch (e) {// Ignore
|
20
|
-
}
|
21
|
-
|
22
|
-
const HAS_REANIMATED = !!Reanimated;
|
23
|
-
exports.HAS_REANIMATED = HAS_REANIMATED;
|
17
|
+
let Reanimated3;
|
18
|
+
let reanimatedVersion;
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
let ReanimatedVersionTested = false;
|
20
|
+
try {
|
21
|
+
Reanimated2 = require("react-native-reanimated");
|
22
|
+
reanimatedVersion = // eslint-disable-next-line import/extensions
|
23
|
+
require("react-native-reanimated/package.json").version;
|
31
24
|
|
32
|
-
|
33
|
-
|
34
|
-
// we avoid testing version more than once as it won't change and we throw
|
35
|
-
// an error when version is incompatible
|
36
|
-
return;
|
25
|
+
if (reanimatedVersion && (reanimatedVersion >= "3.0.0" || reanimatedVersion.includes("3.0.0-"))) {
|
26
|
+
Reanimated3 = Reanimated2;
|
37
27
|
}
|
28
|
+
} catch (e) {}
|
38
29
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
// as they have limited support for the used API.
|
30
|
+
const HAS_REANIMATED2 = !!Reanimated2;
|
31
|
+
exports.HAS_REANIMATED2 = HAS_REANIMATED2;
|
32
|
+
const HAS_REANIMATED3 = !!Reanimated3;
|
33
|
+
exports.HAS_REANIMATED3 = HAS_REANIMATED3;
|
44
34
|
|
35
|
+
function throwOnMissingReanimated2() {
|
36
|
+
if (!HAS_REANIMATED2) {
|
37
|
+
throw new Error("Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \
|
38
|
+
react-naitve-skia's integration layer API.");
|
39
|
+
}
|
40
|
+
}
|
45
41
|
|
46
|
-
|
42
|
+
function throwOnMissingReanimated3() {
|
43
|
+
if (!HAS_REANIMATED3) {
|
47
44
|
throw new Error(`Reanimated version ${reanimatedVersion} is not supported, please upgrade to 3.0.0 or newer.`);
|
48
45
|
}
|
46
|
+
|
47
|
+
throwOnMissingReanimated2();
|
49
48
|
}
|
50
49
|
|
51
|
-
const useSharedValue = ((_Reanimated =
|
50
|
+
const useSharedValue = ((_Reanimated = Reanimated2) === null || _Reanimated === void 0 ? void 0 : _Reanimated.useSharedValue) || (value => (0, _react.useMemo)(() => ({
|
52
51
|
value
|
53
52
|
}), [value]));
|
54
53
|
|
55
54
|
exports.useSharedValue = useSharedValue;
|
56
|
-
const startMapper = ((_Reanimated2 =
|
55
|
+
const startMapper = ((_Reanimated2 = Reanimated2) === null || _Reanimated2 === void 0 ? void 0 : _Reanimated2.startMapper) || throwOnMissingReanimated2;
|
57
56
|
exports.startMapper = startMapper;
|
58
|
-
const stopMapper = ((_Reanimated3 =
|
57
|
+
const stopMapper = ((_Reanimated3 = Reanimated2) === null || _Reanimated3 === void 0 ? void 0 : _Reanimated3.stopMapper) || throwOnMissingReanimated2;
|
59
58
|
exports.stopMapper = stopMapper;
|
60
|
-
const runOnJS = ((_Reanimated4 =
|
59
|
+
const runOnJS = ((_Reanimated4 = Reanimated2) === null || _Reanimated4 === void 0 ? void 0 : _Reanimated4.runOnJS) || throwOnMissingReanimated2;
|
61
60
|
exports.runOnJS = runOnJS;
|
62
61
|
|
63
62
|
const isSharedValue = value => {
|
64
|
-
|
65
|
-
|
66
|
-
}
|
67
|
-
|
68
|
-
return !!value && Reanimated.isSharedValue(value);
|
63
|
+
throwOnMissingReanimated3();
|
64
|
+
return !!value && Reanimated3.isSharedValue(value);
|
69
65
|
};
|
70
66
|
|
71
67
|
exports.isSharedValue = isSharedValue;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["Reanimated2","Reanimated3","reanimatedVersion","require","version","includes","e","HAS_REANIMATED2","HAS_REANIMATED3","throwOnMissingReanimated2","Error","throwOnMissingReanimated3","useSharedValue","value","useMemo","startMapper","stopMapper","runOnJS","isSharedValue"],"sources":["moduleWrapper.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\n// This one is needed for the deprecated useSharedValue function\n// We can remove it once we remove the deprecation\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated2: any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated3: any;\nlet reanimatedVersion: string;\n\ntry {\n Reanimated2 = require(\"react-native-reanimated\");\n reanimatedVersion =\n // eslint-disable-next-line import/extensions\n require(\"react-native-reanimated/package.json\").version;\n if (\n reanimatedVersion &&\n (reanimatedVersion >= \"3.0.0\" || reanimatedVersion.includes(\"3.0.0-\"))\n ) {\n Reanimated3 = Reanimated2;\n }\n} catch (e) {}\n\nexport const HAS_REANIMATED2 = !!Reanimated2;\nexport const HAS_REANIMATED3 = !!Reanimated3;\n\nfunction throwOnMissingReanimated2() {\n if (!HAS_REANIMATED2) {\n throw new Error(\n \"Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \\\n react-naitve-skia's integration layer API.\"\n );\n }\n}\n\nfunction throwOnMissingReanimated3() {\n if (!HAS_REANIMATED3) {\n throw new Error(\n `Reanimated version ${reanimatedVersion} is not supported, please upgrade to 3.0.0 or newer.`\n );\n }\n throwOnMissingReanimated2();\n}\n\nexport const useSharedValue =\n Reanimated2?.useSharedValue ||\n ((value: number) => useMemo(() => ({ value }), [value]));\n\nexport const startMapper =\n Reanimated2?.startMapper || throwOnMissingReanimated2;\nexport const stopMapper = Reanimated2?.stopMapper || throwOnMissingReanimated2;\nexport const runOnJS = Reanimated2?.runOnJS || throwOnMissingReanimated2;\nexport const isSharedValue = <T>(\n value: unknown\n): value is SharedValueType<T> => {\n throwOnMissingReanimated3();\n return !!value && Reanimated3.isSharedValue(value);\n};\n"],"mappings":";;;;;;;AAAA;;;;AAIA;AACA;AACA;AACA,IAAIA,WAAJ,C,CACA;;AACA,IAAIC,WAAJ;AACA,IAAIC,iBAAJ;;AAEA,IAAI;EACFF,WAAW,GAAGG,OAAO,CAAC,yBAAD,CAArB;EACAD,iBAAiB,GACf;EACAC,OAAO,CAAC,sCAAD,CAAP,CAAgDC,OAFlD;;EAGA,IACEF,iBAAiB,KAChBA,iBAAiB,IAAI,OAArB,IAAgCA,iBAAiB,CAACG,QAAlB,CAA2B,QAA3B,CADhB,CADnB,EAGE;IACAJ,WAAW,GAAGD,WAAd;EACD;AACF,CAXD,CAWE,OAAOM,CAAP,EAAU,CAAE;;AAEP,MAAMC,eAAe,GAAG,CAAC,CAACP,WAA1B;;AACA,MAAMQ,eAAe,GAAG,CAAC,CAACP,WAA1B;;;AAEP,SAASQ,yBAAT,GAAqC;EACnC,IAAI,CAACF,eAAL,EAAsB;IACpB,MAAM,IAAIG,KAAJ,CACJ;AACN,iDAFU,CAAN;EAID;AACF;;AAED,SAASC,yBAAT,GAAqC;EACnC,IAAI,CAACH,eAAL,EAAsB;IACpB,MAAM,IAAIE,KAAJ,CACH,sBAAqBR,iBAAkB,sDADpC,CAAN;EAGD;;EACDO,yBAAyB;AAC1B;;AAEM,MAAMG,cAAc,GACzB,gBAAAZ,WAAW,UAAX,kDAAaY,cAAb,MACEC,KAAD,IAAmB,IAAAC,cAAA,EAAQ,OAAO;EAAED;AAAF,CAAP,CAAR,EAA2B,CAACA,KAAD,CAA3B,CADpB,CADK;;;AAIA,MAAME,WAAW,GACtB,iBAAAf,WAAW,UAAX,oDAAae,WAAb,KAA4BN,yBADvB;;AAEA,MAAMO,UAAU,GAAG,iBAAAhB,WAAW,UAAX,oDAAagB,UAAb,KAA2BP,yBAA9C;;AACA,MAAMQ,OAAO,GAAG,iBAAAjB,WAAW,UAAX,oDAAaiB,OAAb,KAAwBR,yBAAxC;;;AACA,MAAMS,aAAa,GACxBL,KAD2B,IAEK;EAChCF,yBAAyB;EACzB,OAAO,CAAC,CAACE,KAAF,IAAWZ,WAAW,CAACiB,aAAZ,CAA0BL,KAA1B,CAAlB;AACD,CALM"}
|
@@ -14,7 +14,7 @@ var _moduleWrapper = require("./moduleWrapper");
|
|
14
14
|
const _bindings = new WeakMap();
|
15
15
|
|
16
16
|
function extractReanimatedProps(props) {
|
17
|
-
if (!_moduleWrapper.
|
17
|
+
if (!_moduleWrapper.HAS_REANIMATED3) {
|
18
18
|
return [props, {}];
|
19
19
|
}
|
20
20
|
|
@@ -40,14 +40,10 @@ function extractReanimatedProps(props) {
|
|
40
40
|
}
|
41
41
|
|
42
42
|
function bindReanimatedProps(container, node, reanimatedProps) {
|
43
|
-
if (!_moduleWrapper.
|
43
|
+
if (!_moduleWrapper.HAS_REANIMATED3) {
|
44
44
|
return;
|
45
45
|
}
|
46
46
|
|
47
|
-
if (__DEV__) {
|
48
|
-
(0, _moduleWrapper.throwOnIncompatibleReanimatedVersion)();
|
49
|
-
}
|
50
|
-
|
51
47
|
const sharedValues = Object.values(reanimatedProps);
|
52
48
|
|
53
49
|
const previousMapperId = _bindings.get(node);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_bindings","WeakMap","extractReanimatedProps","props","
|
1
|
+
{"version":3,"names":["_bindings","WeakMap","extractReanimatedProps","props","HAS_REANIMATED3","reanimatedProps","otherProps","propName","propValue","isSharedValue","value","bindReanimatedProps","container","node","sharedValues","Object","values","previousMapperId","get","undefined","stopMapper","length","viewId","getNativeId","SkiaViewApi","global","mapperId","startMapper","setProp","requestRedraw","redraw","set"],"sources":["renderHelpers.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable reanimated/js-function-in-worklet */\nimport type { Container } from \"../../renderer/Container\";\nimport type { AnimatedProps } from \"../../renderer/processors\";\nimport type { Node } from \"../../dom/types\";\n\nimport {\n startMapper,\n stopMapper,\n isSharedValue,\n HAS_REANIMATED3,\n} from \"./moduleWrapper\";\n\nconst _bindings = new WeakMap<Node<unknown>, unknown>();\n\nexport function extractReanimatedProps(props: AnimatedProps<any>) {\n if (!HAS_REANIMATED3) {\n return [props, {}];\n }\n const reanimatedProps = {} as AnimatedProps<any>;\n const otherProps = {} as AnimatedProps<any>;\n for (const propName in props) {\n if (propName === \"children\") {\n continue;\n }\n const propValue = props[propName];\n if (isSharedValue(propValue)) {\n reanimatedProps[propName] = propValue;\n otherProps[propName] = propValue.value;\n } else {\n otherProps[propName] = propValue;\n }\n }\n return [otherProps, reanimatedProps];\n}\n\nexport function bindReanimatedProps(\n container: Container,\n node: Node<any>,\n reanimatedProps: AnimatedProps<any>\n) {\n if (!HAS_REANIMATED3) {\n return;\n }\n const sharedValues = Object.values(reanimatedProps);\n const previousMapperId = _bindings.get(node);\n if (previousMapperId !== undefined) {\n stopMapper(previousMapperId);\n }\n if (sharedValues.length > 0) {\n const viewId = container.getNativeId();\n const { SkiaViewApi } = global;\n const mapperId = startMapper(() => {\n \"worklet\";\n for (const propName in reanimatedProps) {\n node && node.setProp(propName, reanimatedProps[propName].value);\n }\n // On React Native we use the SkiaViewApi to redraw because it can\n // run on the worklet thread (container.redraw can't)\n // if SkiaViewApi is undefined, we are on web and container.redraw()\n // can safely be invoked\n if (SkiaViewApi) {\n SkiaViewApi.requestRedraw(viewId);\n } else {\n container.redraw();\n }\n }, sharedValues);\n _bindings.set(node, mapperId);\n }\n}\n"],"mappings":";;;;;;;;AAMA;;AANA;;AACA;AAYA,MAAMA,SAAS,GAAG,IAAIC,OAAJ,EAAlB;;AAEO,SAASC,sBAAT,CAAgCC,KAAhC,EAA2D;EAChE,IAAI,CAACC,8BAAL,EAAsB;IACpB,OAAO,CAACD,KAAD,EAAQ,EAAR,CAAP;EACD;;EACD,MAAME,eAAe,GAAG,EAAxB;EACA,MAAMC,UAAU,GAAG,EAAnB;;EACA,KAAK,MAAMC,QAAX,IAAuBJ,KAAvB,EAA8B;IAC5B,IAAII,QAAQ,KAAK,UAAjB,EAA6B;MAC3B;IACD;;IACD,MAAMC,SAAS,GAAGL,KAAK,CAACI,QAAD,CAAvB;;IACA,IAAI,IAAAE,4BAAA,EAAcD,SAAd,CAAJ,EAA8B;MAC5BH,eAAe,CAACE,QAAD,CAAf,GAA4BC,SAA5B;MACAF,UAAU,CAACC,QAAD,CAAV,GAAuBC,SAAS,CAACE,KAAjC;IACD,CAHD,MAGO;MACLJ,UAAU,CAACC,QAAD,CAAV,GAAuBC,SAAvB;IACD;EACF;;EACD,OAAO,CAACF,UAAD,EAAaD,eAAb,CAAP;AACD;;AAEM,SAASM,mBAAT,CACLC,SADK,EAELC,IAFK,EAGLR,eAHK,EAIL;EACA,IAAI,CAACD,8BAAL,EAAsB;IACpB;EACD;;EACD,MAAMU,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAcX,eAAd,CAArB;;EACA,MAAMY,gBAAgB,GAAGjB,SAAS,CAACkB,GAAV,CAAcL,IAAd,CAAzB;;EACA,IAAII,gBAAgB,KAAKE,SAAzB,EAAoC;IAClC,IAAAC,yBAAA,EAAWH,gBAAX;EACD;;EACD,IAAIH,YAAY,CAACO,MAAb,GAAsB,CAA1B,EAA6B;IAC3B,MAAMC,MAAM,GAAGV,SAAS,CAACW,WAAV,EAAf;IACA,MAAM;MAAEC;IAAF,IAAkBC,MAAxB;IACA,MAAMC,QAAQ,GAAG,IAAAC,0BAAA,EAAY,MAAM;MACjC;;MACA,KAAK,MAAMpB,QAAX,IAAuBF,eAAvB,EAAwC;QACtCQ,IAAI,IAAIA,IAAI,CAACe,OAAL,CAAarB,QAAb,EAAuBF,eAAe,CAACE,QAAD,CAAf,CAA0BG,KAAjD,CAAR;MACD,CAJgC,CAKjC;MACA;MACA;MACA;;;MACA,IAAIc,WAAJ,EAAiB;QACfA,WAAW,CAACK,aAAZ,CAA0BP,MAA1B;MACD,CAFD,MAEO;QACLV,SAAS,CAACkB,MAAV;MACD;IACF,CAdgB,EAcdhB,YAdc,CAAjB;;IAeAd,SAAS,CAAC+B,GAAV,CAAclB,IAAd,EAAoBa,QAApB;EACD;AACF"}
|
@@ -24,7 +24,7 @@ const useSharedValueEffect = function (cb, value) {
|
|
24
24
|
Learn more at https://shopify.github.io/react-native-skia/.`);
|
25
25
|
const input = (0, _moduleWrapper.useSharedValue)(0);
|
26
26
|
(0, _react.useEffect)(() => {
|
27
|
-
if (!_moduleWrapper.
|
27
|
+
if (!_moduleWrapper.HAS_REANIMATED2) {
|
28
28
|
console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
|
29
29
|
} else {
|
30
30
|
// Start a mapper in Reanimated
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["useSharedValueEffect","cb","value","values","console","warn","input","useSharedValue","useEffect","
|
1
|
+
{"version":3,"names":["useSharedValueEffect","cb","value","values","console","warn","input","useSharedValue","useEffect","HAS_REANIMATED2","mapperId","startMapper","runOnJS","stopMapper","undefined"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\nimport {\n HAS_REANIMATED2,\n useSharedValue,\n runOnJS,\n startMapper,\n stopMapper,\n} from \"./moduleWrapper\";\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueType<T>,\n ...values: SharedValueType<T>[]\n) => {\n console.warn(\n `useSharedValueEffect() is now deprecated, you can use Reanimated values directly.\nLearn more at https://shopify.github.io/react-native-skia/.`\n );\n const input = useSharedValue(0);\n\n useEffect(() => {\n if (!HAS_REANIMATED2) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":";;;;;;;AAAA;;AAIA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,oBAAoB,GAAG,UAClCC,EADkC,EAElCC,KAFkC,EAI/B;EAAA,kCADAC,MACA;IADAA,MACA;EAAA;;EACHC,OAAO,CAACC,IAAR,CACG;AACL,4DAFE;EAIA,MAAMC,KAAK,GAAG,IAAAC,6BAAA,EAAe,CAAf,CAAd;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACd,IAAI,CAACC,8BAAL,EAAsB;MACpBL,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL;MACA,MAAMK,QAAQ,GAAG,IAAAC,0BAAA,EACf,MAAM;QACJ;;QACA,IAAAC,sBAAA,EAAQX,EAAR;MACD,CAJc,EAKf,CAACC,KAAD,EAAQ,GAAGC,MAAX,CALe,EAMf,CAACG,KAAD,CANe,CAAjB,CAFK,CAUL;;MACA,OAAO,MAAM;QACX,IAAIO,yBAAA,IAAcH,QAAQ,KAAKI,SAA/B,EAA0C;UACxC,IAAAD,yBAAA,EAAWH,QAAX;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBD,EAwBG,CAACJ,KAAD,EAAQJ,KAAR,EAAe,GAAGC,MAAlB,CAxBH;AAyBD,CApCM"}
|
@@ -70,13 +70,21 @@ export class DisplacementMapImageFilterNode extends ImageFilterDeclaration {
|
|
70
70
|
}
|
71
71
|
|
72
72
|
decorate(ctx) {
|
73
|
+
this.decorateChildren(ctx);
|
73
74
|
const {
|
74
75
|
channelX,
|
75
76
|
channelY,
|
76
77
|
scale
|
77
78
|
} = this.props;
|
78
|
-
const
|
79
|
-
|
79
|
+
const shader = ctx.shaders.pop();
|
80
|
+
|
81
|
+
if (!shader) {
|
82
|
+
throw new Error("DisplacementMap expects a shader as child");
|
83
|
+
}
|
84
|
+
|
85
|
+
const map = this.Skia.ImageFilter.MakeShader(shader, null);
|
86
|
+
const imgf = this.Skia.ImageFilter.MakeDisplacementMap(ColorChannel[enumKey(channelX)], ColorChannel[enumKey(channelY)], scale, map, this.input(ctx));
|
87
|
+
ctx.imageFilters.push(imgf);
|
80
88
|
}
|
81
89
|
|
82
90
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["BlendMode","ColorChannel","processUniforms","TileMode","DeclarationType","NodeType","processRadius","enumKey","JsiDeclarationNode","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","constructor","ctx","type","props","imageFilters","pop","composeAndPush","imgf1","save","decorateChildren","imgf2","popAllAsOne","cf","colorFilters","restore","imgf","push","OffsetImageFilterNode","OffsetImageFilter","decorate","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","DropShadowImageFilterNode","DropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","Error","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DeclarationContext,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<P> extends JsiDeclarationNode<P> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n protected input(ctx: DeclarationContext) {\n return ctx.imageFilters.pop() ?? null;\n }\n\n protected composeAndPush(ctx: DeclarationContext, imgf1: SkImageFilter) {\n ctx.save();\n this.decorateChildren(ctx);\n let imgf2 = ctx.imageFilters.popAllAsOne();\n const cf = ctx.colorFilters.popAllAsOne();\n ctx.restore();\n if (cf) {\n imgf2 = this.Skia.ImageFilter.MakeCompose(\n imgf2 ?? null,\n this.Skia.ImageFilter.MakeColorFilter(cf, null)\n );\n }\n const imgf = imgf2\n ? this.Skia.ImageFilter.MakeCompose(imgf1, imgf2)\n : imgf1;\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { x, y } = this.props;\n const imgf = this.Skia.ImageFilter.MakeOffset(x, y, null);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { channelX, channelY, scale } = this.props;\n const imgf = this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n ctx.imageFilters.pop()!,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n const imgf = this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, this.input(ctx));\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = this.Skia.ImageFilter.MakeErode(r.x, r.y, this.input(ctx));\n } else {\n imgf = this.Skia.ImageFilter.MakeDilate(r.x, r.y, this.input(ctx));\n }\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode } = this.props;\n const a = ctx.imageFilters.pop();\n const b = ctx.imageFilters.pop();\n if (!a || !b) {\n throw new Error(\"BlendImageFilter requires two image filters\");\n }\n const imgf = this.Skia.ImageFilter.MakeBlend(mode, a, b);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = this.Skia.ImageFilter.MakeRuntimeShader(\n rtb,\n null,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["BlendMode","ColorChannel","processUniforms","TileMode","DeclarationType","NodeType","processRadius","enumKey","JsiDeclarationNode","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","constructor","ctx","type","props","imageFilters","pop","composeAndPush","imgf1","save","decorateChildren","imgf2","popAllAsOne","cf","colorFilters","restore","imgf","push","OffsetImageFilterNode","OffsetImageFilter","decorate","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","Error","map","MakeShader","MakeDisplacementMap","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","DropShadowImageFilterNode","DropShadowImageFilter","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DeclarationContext,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nexport abstract class ImageFilterDeclaration<P> extends JsiDeclarationNode<P> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n protected input(ctx: DeclarationContext) {\n return ctx.imageFilters.pop() ?? null;\n }\n\n protected composeAndPush(ctx: DeclarationContext, imgf1: SkImageFilter) {\n ctx.save();\n this.decorateChildren(ctx);\n let imgf2 = ctx.imageFilters.popAllAsOne();\n const cf = ctx.colorFilters.popAllAsOne();\n ctx.restore();\n if (cf) {\n imgf2 = this.Skia.ImageFilter.MakeCompose(\n imgf2 ?? null,\n this.Skia.ImageFilter.MakeColorFilter(cf, null)\n );\n }\n const imgf = imgf2\n ? this.Skia.ImageFilter.MakeCompose(imgf1, imgf2)\n : imgf1;\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { x, y } = this.props;\n const imgf = this.Skia.ImageFilter.MakeOffset(x, y, null);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { channelX, channelY, scale } = this.props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = this.Skia.ImageFilter.MakeShader(shader, null);\n const imgf = this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n this.input(ctx)\n );\n ctx.imageFilters.push(imgf);\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n const imgf = this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, this.input(ctx));\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = this.Skia.ImageFilter.MakeErode(r.x, r.y, this.input(ctx));\n } else {\n imgf = this.Skia.ImageFilter.MakeDilate(r.x, r.y, this.input(ctx));\n }\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { mode } = this.props;\n const a = ctx.imageFilters.pop();\n const b = ctx.imageFilters.pop();\n if (!a || !b) {\n throw new Error(\"BlendImageFilter requires two image filters\");\n }\n const imgf = this.Skia.ImageFilter.MakeBlend(mode, a, b);\n this.composeAndPush(ctx, imgf);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = this.Skia.ImageFilter.MakeRuntimeShader(\n rtb,\n null,\n this.input(ctx)\n );\n this.composeAndPush(ctx, imgf);\n }\n}\n"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { SharedValueType } from "../../renderer/processors/Animations";
|
2
|
-
export declare const
|
3
|
-
export declare
|
2
|
+
export declare const HAS_REANIMATED2: boolean;
|
3
|
+
export declare const HAS_REANIMATED3: boolean;
|
4
4
|
export declare const useSharedValue: any;
|
5
5
|
export declare const startMapper: any;
|
6
6
|
export declare const stopMapper: any;
|
@@ -1,51 +1,50 @@
|
|
1
1
|
var _Reanimated, _Reanimated2, _Reanimated3, _Reanimated4;
|
2
2
|
|
3
3
|
import { useMemo } from "react";
|
4
|
+
// This one is needed for the deprecated useSharedValue function
|
5
|
+
// We can remove it once we remove the deprecation
|
4
6
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
5
|
-
let
|
7
|
+
let Reanimated2; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
} catch (e) {// Ignore
|
10
|
-
}
|
11
|
-
|
12
|
-
export const HAS_REANIMATED = !!Reanimated;
|
9
|
+
let Reanimated3;
|
10
|
+
let reanimatedVersion;
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
try {
|
13
|
+
Reanimated2 = require("react-native-reanimated");
|
14
|
+
reanimatedVersion = // eslint-disable-next-line import/extensions
|
15
|
+
require("react-native-reanimated/package.json").version;
|
18
16
|
|
19
|
-
|
20
|
-
|
21
|
-
if (ReanimatedVersionTested) {
|
22
|
-
// we avoid testing version more than once as it won't change and we throw
|
23
|
-
// an error when version is incompatible
|
24
|
-
return;
|
17
|
+
if (reanimatedVersion && (reanimatedVersion >= "3.0.0" || reanimatedVersion.includes("3.0.0-"))) {
|
18
|
+
Reanimated3 = Reanimated2;
|
25
19
|
}
|
20
|
+
} catch (e) {}
|
26
21
|
|
27
|
-
|
28
|
-
|
29
|
-
const reanimatedVersion = // eslint-disable-next-line import/extensions
|
30
|
-
require("react-native-reanimated/package.json").version; // The first compatible version is 3.0.0 but we need to exclude 3.0.0 pre-releases
|
31
|
-
// as they have limited support for the used API.
|
22
|
+
export const HAS_REANIMATED2 = !!Reanimated2;
|
23
|
+
export const HAS_REANIMATED3 = !!Reanimated3;
|
32
24
|
|
25
|
+
function throwOnMissingReanimated2() {
|
26
|
+
if (!HAS_REANIMATED2) {
|
27
|
+
throw new Error("Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \
|
28
|
+
react-naitve-skia's integration layer API.");
|
29
|
+
}
|
30
|
+
}
|
33
31
|
|
34
|
-
|
32
|
+
function throwOnMissingReanimated3() {
|
33
|
+
if (!HAS_REANIMATED3) {
|
35
34
|
throw new Error(`Reanimated version ${reanimatedVersion} is not supported, please upgrade to 3.0.0 or newer.`);
|
36
35
|
}
|
36
|
+
|
37
|
+
throwOnMissingReanimated2();
|
37
38
|
}
|
38
|
-
|
39
|
+
|
40
|
+
export const useSharedValue = ((_Reanimated = Reanimated2) === null || _Reanimated === void 0 ? void 0 : _Reanimated.useSharedValue) || (value => useMemo(() => ({
|
39
41
|
value
|
40
42
|
}), [value]));
|
41
|
-
export const startMapper = ((_Reanimated2 =
|
42
|
-
export const stopMapper = ((_Reanimated3 =
|
43
|
-
export const runOnJS = ((_Reanimated4 =
|
43
|
+
export const startMapper = ((_Reanimated2 = Reanimated2) === null || _Reanimated2 === void 0 ? void 0 : _Reanimated2.startMapper) || throwOnMissingReanimated2;
|
44
|
+
export const stopMapper = ((_Reanimated3 = Reanimated2) === null || _Reanimated3 === void 0 ? void 0 : _Reanimated3.stopMapper) || throwOnMissingReanimated2;
|
45
|
+
export const runOnJS = ((_Reanimated4 = Reanimated2) === null || _Reanimated4 === void 0 ? void 0 : _Reanimated4.runOnJS) || throwOnMissingReanimated2;
|
44
46
|
export const isSharedValue = value => {
|
45
|
-
|
46
|
-
|
47
|
-
}
|
48
|
-
|
49
|
-
return !!value && Reanimated.isSharedValue(value);
|
47
|
+
throwOnMissingReanimated3();
|
48
|
+
return !!value && Reanimated3.isSharedValue(value);
|
50
49
|
};
|
51
50
|
//# sourceMappingURL=moduleWrapper.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["useMemo","
|
1
|
+
{"version":3,"names":["useMemo","Reanimated2","Reanimated3","reanimatedVersion","require","version","includes","e","HAS_REANIMATED2","HAS_REANIMATED3","throwOnMissingReanimated2","Error","throwOnMissingReanimated3","useSharedValue","value","startMapper","stopMapper","runOnJS","isSharedValue"],"sources":["moduleWrapper.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\n// This one is needed for the deprecated useSharedValue function\n// We can remove it once we remove the deprecation\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated2: any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated3: any;\nlet reanimatedVersion: string;\n\ntry {\n Reanimated2 = require(\"react-native-reanimated\");\n reanimatedVersion =\n // eslint-disable-next-line import/extensions\n require(\"react-native-reanimated/package.json\").version;\n if (\n reanimatedVersion &&\n (reanimatedVersion >= \"3.0.0\" || reanimatedVersion.includes(\"3.0.0-\"))\n ) {\n Reanimated3 = Reanimated2;\n }\n} catch (e) {}\n\nexport const HAS_REANIMATED2 = !!Reanimated2;\nexport const HAS_REANIMATED3 = !!Reanimated3;\n\nfunction throwOnMissingReanimated2() {\n if (!HAS_REANIMATED2) {\n throw new Error(\n \"Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \\\n react-naitve-skia's integration layer API.\"\n );\n }\n}\n\nfunction throwOnMissingReanimated3() {\n if (!HAS_REANIMATED3) {\n throw new Error(\n `Reanimated version ${reanimatedVersion} is not supported, please upgrade to 3.0.0 or newer.`\n );\n }\n throwOnMissingReanimated2();\n}\n\nexport const useSharedValue =\n Reanimated2?.useSharedValue ||\n ((value: number) => useMemo(() => ({ value }), [value]));\n\nexport const startMapper =\n Reanimated2?.startMapper || throwOnMissingReanimated2;\nexport const stopMapper = Reanimated2?.stopMapper || throwOnMissingReanimated2;\nexport const runOnJS = Reanimated2?.runOnJS || throwOnMissingReanimated2;\nexport const isSharedValue = <T>(\n value: unknown\n): value is SharedValueType<T> => {\n throwOnMissingReanimated3();\n return !!value && Reanimated3.isSharedValue(value);\n};\n"],"mappings":";;AAAA,SAASA,OAAT,QAAwB,OAAxB;AAIA;AACA;AACA;AACA,IAAIC,WAAJ,C,CACA;;AACA,IAAIC,WAAJ;AACA,IAAIC,iBAAJ;;AAEA,IAAI;EACFF,WAAW,GAAGG,OAAO,CAAC,yBAAD,CAArB;EACAD,iBAAiB,GACf;EACAC,OAAO,CAAC,sCAAD,CAAP,CAAgDC,OAFlD;;EAGA,IACEF,iBAAiB,KAChBA,iBAAiB,IAAI,OAArB,IAAgCA,iBAAiB,CAACG,QAAlB,CAA2B,QAA3B,CADhB,CADnB,EAGE;IACAJ,WAAW,GAAGD,WAAd;EACD;AACF,CAXD,CAWE,OAAOM,CAAP,EAAU,CAAE;;AAEd,OAAO,MAAMC,eAAe,GAAG,CAAC,CAACP,WAA1B;AACP,OAAO,MAAMQ,eAAe,GAAG,CAAC,CAACP,WAA1B;;AAEP,SAASQ,yBAAT,GAAqC;EACnC,IAAI,CAACF,eAAL,EAAsB;IACpB,MAAM,IAAIG,KAAJ,CACJ;AACN,iDAFU,CAAN;EAID;AACF;;AAED,SAASC,yBAAT,GAAqC;EACnC,IAAI,CAACH,eAAL,EAAsB;IACpB,MAAM,IAAIE,KAAJ,CACH,sBAAqBR,iBAAkB,sDADpC,CAAN;EAGD;;EACDO,yBAAyB;AAC1B;;AAED,OAAO,MAAMG,cAAc,GACzB,gBAAAZ,WAAW,UAAX,kDAAaY,cAAb,MACEC,KAAD,IAAmBd,OAAO,CAAC,OAAO;EAAEc;AAAF,CAAP,CAAD,EAAoB,CAACA,KAAD,CAApB,CAD3B,CADK;AAIP,OAAO,MAAMC,WAAW,GACtB,iBAAAd,WAAW,UAAX,oDAAac,WAAb,KAA4BL,yBADvB;AAEP,OAAO,MAAMM,UAAU,GAAG,iBAAAf,WAAW,UAAX,oDAAae,UAAb,KAA2BN,yBAA9C;AACP,OAAO,MAAMO,OAAO,GAAG,iBAAAhB,WAAW,UAAX,oDAAagB,OAAb,KAAwBP,yBAAxC;AACP,OAAO,MAAMQ,aAAa,GACxBJ,KAD2B,IAEK;EAChCF,yBAAyB;EACzB,OAAO,CAAC,CAACE,KAAF,IAAWZ,WAAW,CAACgB,aAAZ,CAA0BJ,KAA1B,CAAlB;AACD,CALM"}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
2
|
|
3
3
|
/* eslint-disable reanimated/js-function-in-worklet */
|
4
|
-
import { startMapper, stopMapper, isSharedValue,
|
4
|
+
import { startMapper, stopMapper, isSharedValue, HAS_REANIMATED3 } from "./moduleWrapper";
|
5
5
|
|
6
6
|
const _bindings = new WeakMap();
|
7
7
|
|
8
8
|
export function extractReanimatedProps(props) {
|
9
|
-
if (!
|
9
|
+
if (!HAS_REANIMATED3) {
|
10
10
|
return [props, {}];
|
11
11
|
}
|
12
12
|
|
@@ -31,14 +31,10 @@ export function extractReanimatedProps(props) {
|
|
31
31
|
return [otherProps, reanimatedProps];
|
32
32
|
}
|
33
33
|
export function bindReanimatedProps(container, node, reanimatedProps) {
|
34
|
-
if (!
|
34
|
+
if (!HAS_REANIMATED3) {
|
35
35
|
return;
|
36
36
|
}
|
37
37
|
|
38
|
-
if (__DEV__) {
|
39
|
-
throwOnIncompatibleReanimatedVersion();
|
40
|
-
}
|
41
|
-
|
42
38
|
const sharedValues = Object.values(reanimatedProps);
|
43
39
|
|
44
40
|
const previousMapperId = _bindings.get(node);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["startMapper","stopMapper","isSharedValue","
|
1
|
+
{"version":3,"names":["startMapper","stopMapper","isSharedValue","HAS_REANIMATED3","_bindings","WeakMap","extractReanimatedProps","props","reanimatedProps","otherProps","propName","propValue","value","bindReanimatedProps","container","node","sharedValues","Object","values","previousMapperId","get","undefined","length","viewId","getNativeId","SkiaViewApi","global","mapperId","setProp","requestRedraw","redraw","set"],"sources":["renderHelpers.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable reanimated/js-function-in-worklet */\nimport type { Container } from \"../../renderer/Container\";\nimport type { AnimatedProps } from \"../../renderer/processors\";\nimport type { Node } from \"../../dom/types\";\n\nimport {\n startMapper,\n stopMapper,\n isSharedValue,\n HAS_REANIMATED3,\n} from \"./moduleWrapper\";\n\nconst _bindings = new WeakMap<Node<unknown>, unknown>();\n\nexport function extractReanimatedProps(props: AnimatedProps<any>) {\n if (!HAS_REANIMATED3) {\n return [props, {}];\n }\n const reanimatedProps = {} as AnimatedProps<any>;\n const otherProps = {} as AnimatedProps<any>;\n for (const propName in props) {\n if (propName === \"children\") {\n continue;\n }\n const propValue = props[propName];\n if (isSharedValue(propValue)) {\n reanimatedProps[propName] = propValue;\n otherProps[propName] = propValue.value;\n } else {\n otherProps[propName] = propValue;\n }\n }\n return [otherProps, reanimatedProps];\n}\n\nexport function bindReanimatedProps(\n container: Container,\n node: Node<any>,\n reanimatedProps: AnimatedProps<any>\n) {\n if (!HAS_REANIMATED3) {\n return;\n }\n const sharedValues = Object.values(reanimatedProps);\n const previousMapperId = _bindings.get(node);\n if (previousMapperId !== undefined) {\n stopMapper(previousMapperId);\n }\n if (sharedValues.length > 0) {\n const viewId = container.getNativeId();\n const { SkiaViewApi } = global;\n const mapperId = startMapper(() => {\n \"worklet\";\n for (const propName in reanimatedProps) {\n node && node.setProp(propName, reanimatedProps[propName].value);\n }\n // On React Native we use the SkiaViewApi to redraw because it can\n // run on the worklet thread (container.redraw can't)\n // if SkiaViewApi is undefined, we are on web and container.redraw()\n // can safely be invoked\n if (SkiaViewApi) {\n SkiaViewApi.requestRedraw(viewId);\n } else {\n container.redraw();\n }\n }, sharedValues);\n _bindings.set(node, mapperId);\n }\n}\n"],"mappings":"AAAA;;AACA;AAKA,SACEA,WADF,EAEEC,UAFF,EAGEC,aAHF,EAIEC,eAJF,QAKO,iBALP;;AAOA,MAAMC,SAAS,GAAG,IAAIC,OAAJ,EAAlB;;AAEA,OAAO,SAASC,sBAAT,CAAgCC,KAAhC,EAA2D;EAChE,IAAI,CAACJ,eAAL,EAAsB;IACpB,OAAO,CAACI,KAAD,EAAQ,EAAR,CAAP;EACD;;EACD,MAAMC,eAAe,GAAG,EAAxB;EACA,MAAMC,UAAU,GAAG,EAAnB;;EACA,KAAK,MAAMC,QAAX,IAAuBH,KAAvB,EAA8B;IAC5B,IAAIG,QAAQ,KAAK,UAAjB,EAA6B;MAC3B;IACD;;IACD,MAAMC,SAAS,GAAGJ,KAAK,CAACG,QAAD,CAAvB;;IACA,IAAIR,aAAa,CAACS,SAAD,CAAjB,EAA8B;MAC5BH,eAAe,CAACE,QAAD,CAAf,GAA4BC,SAA5B;MACAF,UAAU,CAACC,QAAD,CAAV,GAAuBC,SAAS,CAACC,KAAjC;IACD,CAHD,MAGO;MACLH,UAAU,CAACC,QAAD,CAAV,GAAuBC,SAAvB;IACD;EACF;;EACD,OAAO,CAACF,UAAD,EAAaD,eAAb,CAAP;AACD;AAED,OAAO,SAASK,mBAAT,CACLC,SADK,EAELC,IAFK,EAGLP,eAHK,EAIL;EACA,IAAI,CAACL,eAAL,EAAsB;IACpB;EACD;;EACD,MAAMa,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAcV,eAAd,CAArB;;EACA,MAAMW,gBAAgB,GAAGf,SAAS,CAACgB,GAAV,CAAcL,IAAd,CAAzB;;EACA,IAAII,gBAAgB,KAAKE,SAAzB,EAAoC;IAClCpB,UAAU,CAACkB,gBAAD,CAAV;EACD;;EACD,IAAIH,YAAY,CAACM,MAAb,GAAsB,CAA1B,EAA6B;IAC3B,MAAMC,MAAM,GAAGT,SAAS,CAACU,WAAV,EAAf;IACA,MAAM;MAAEC;IAAF,IAAkBC,MAAxB;IACA,MAAMC,QAAQ,GAAG3B,WAAW,CAAC,MAAM;MACjC;;MACA,KAAK,MAAMU,QAAX,IAAuBF,eAAvB,EAAwC;QACtCO,IAAI,IAAIA,IAAI,CAACa,OAAL,CAAalB,QAAb,EAAuBF,eAAe,CAACE,QAAD,CAAf,CAA0BE,KAAjD,CAAR;MACD,CAJgC,CAKjC;MACA;MACA;MACA;;;MACA,IAAIa,WAAJ,EAAiB;QACfA,WAAW,CAACI,aAAZ,CAA0BN,MAA1B;MACD,CAFD,MAEO;QACLT,SAAS,CAACgB,MAAV;MACD;IACF,CAd2B,EAczBd,YAdyB,CAA5B;;IAeAZ,SAAS,CAAC2B,GAAV,CAAchB,IAAd,EAAoBY,QAApB;EACD;AACF"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { useEffect } from "react";
|
2
|
-
import {
|
2
|
+
import { HAS_REANIMATED2, useSharedValue, runOnJS, startMapper, stopMapper } from "./moduleWrapper";
|
3
3
|
/**
|
4
4
|
* Connects a shared value from reanimated to a SkiaView or Canvas
|
5
5
|
* so whenever the shared value changes the SkiaView will redraw.
|
@@ -16,7 +16,7 @@ export const useSharedValueEffect = function (cb, value) {
|
|
16
16
|
Learn more at https://shopify.github.io/react-native-skia/.`);
|
17
17
|
const input = useSharedValue(0);
|
18
18
|
useEffect(() => {
|
19
|
-
if (!
|
19
|
+
if (!HAS_REANIMATED2) {
|
20
20
|
console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
|
21
21
|
} else {
|
22
22
|
// Start a mapper in Reanimated
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["useEffect","
|
1
|
+
{"version":3,"names":["useEffect","HAS_REANIMATED2","useSharedValue","runOnJS","startMapper","stopMapper","useSharedValueEffect","cb","value","values","console","warn","input","mapperId","undefined"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport type { SharedValueType } from \"../../renderer/processors/Animations\";\n\nimport {\n HAS_REANIMATED2,\n useSharedValue,\n runOnJS,\n startMapper,\n stopMapper,\n} from \"./moduleWrapper\";\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueType<T>,\n ...values: SharedValueType<T>[]\n) => {\n console.warn(\n `useSharedValueEffect() is now deprecated, you can use Reanimated values directly.\nLearn more at https://shopify.github.io/react-native-skia/.`\n );\n const input = useSharedValue(0);\n\n useEffect(() => {\n if (!HAS_REANIMATED2) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,OAA1B;AAIA,SACEC,eADF,EAEEC,cAFF,EAGEC,OAHF,EAIEC,WAJF,EAKEC,UALF,QAMO,iBANP;AAQA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,EADkC,EAElCC,KAFkC,EAI/B;EAAA,kCADAC,MACA;IADAA,MACA;EAAA;;EACHC,OAAO,CAACC,IAAR,CACG;AACL,4DAFE;EAIA,MAAMC,KAAK,GAAGV,cAAc,CAAC,CAAD,CAA5B;EAEAF,SAAS,CAAC,MAAM;IACd,IAAI,CAACC,eAAL,EAAsB;MACpBS,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL;MACA,MAAME,QAAQ,GAAGT,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACI,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACC,KAAD,EAAQ,GAAGC,MAAX,CAL0B,EAM1B,CAACG,KAAD,CAN0B,CAA5B,CAFK,CAUL;;MACA,OAAO,MAAM;QACX,IAAIP,UAAU,IAAIQ,QAAQ,KAAKC,SAA/B,EAA0C;UACxCT,UAAU,CAACQ,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBQ,EAwBN,CAACD,KAAD,EAAQJ,KAAR,EAAe,GAAGC,MAAlB,CAxBM,CAAT;AAyBD,CApCM"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { SharedValueType } from "../../renderer/processors/Animations";
|
2
|
-
export declare const
|
3
|
-
export declare
|
2
|
+
export declare const HAS_REANIMATED2: boolean;
|
3
|
+
export declare const HAS_REANIMATED3: boolean;
|
4
4
|
export declare const useSharedValue: any;
|
5
5
|
export declare const startMapper: any;
|
6
6
|
export declare const stopMapper: any;
|
package/package.json
CHANGED
@@ -103,15 +103,21 @@ export class DisplacementMapImageFilterNode extends ImageFilterDeclaration<Displ
|
|
103
103
|
}
|
104
104
|
|
105
105
|
decorate(ctx: DeclarationContext) {
|
106
|
+
this.decorateChildren(ctx);
|
106
107
|
const { channelX, channelY, scale } = this.props;
|
108
|
+
const shader = ctx.shaders.pop();
|
109
|
+
if (!shader) {
|
110
|
+
throw new Error("DisplacementMap expects a shader as child");
|
111
|
+
}
|
112
|
+
const map = this.Skia.ImageFilter.MakeShader(shader, null);
|
107
113
|
const imgf = this.Skia.ImageFilter.MakeDisplacementMap(
|
108
114
|
ColorChannel[enumKey(channelX)],
|
109
115
|
ColorChannel[enumKey(channelY)],
|
110
116
|
scale,
|
111
|
-
|
117
|
+
map,
|
112
118
|
this.input(ctx)
|
113
119
|
);
|
114
|
-
|
120
|
+
ctx.imageFilters.push(imgf);
|
115
121
|
}
|
116
122
|
}
|
117
123
|
|
@@ -2,61 +2,59 @@ import { useMemo } from "react";
|
|
2
2
|
|
3
3
|
import type { SharedValueType } from "../../renderer/processors/Animations";
|
4
4
|
|
5
|
+
// This one is needed for the deprecated useSharedValue function
|
6
|
+
// We can remove it once we remove the deprecation
|
5
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
6
|
-
let
|
8
|
+
let Reanimated2: any;
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
10
|
+
let Reanimated3: any;
|
11
|
+
let reanimatedVersion: string;
|
7
12
|
|
8
13
|
try {
|
9
|
-
|
10
|
-
|
11
|
-
// Ignore
|
12
|
-
}
|
13
|
-
|
14
|
-
export const HAS_REANIMATED = !!Reanimated;
|
15
|
-
|
16
|
-
function throwOnMissingReanimated() {
|
17
|
-
throw new Error(
|
18
|
-
"Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \
|
19
|
-
react-naitve-skia's integration layer API."
|
20
|
-
);
|
21
|
-
}
|
22
|
-
|
23
|
-
let ReanimatedVersionTested = false;
|
24
|
-
|
25
|
-
export function throwOnIncompatibleReanimatedVersion() {
|
26
|
-
if (ReanimatedVersionTested) {
|
27
|
-
// we avoid testing version more than once as it won't change and we throw
|
28
|
-
// an error when version is incompatible
|
29
|
-
return;
|
30
|
-
}
|
31
|
-
ReanimatedVersionTested = true;
|
32
|
-
const reanimatedVersion =
|
14
|
+
Reanimated2 = require("react-native-reanimated");
|
15
|
+
reanimatedVersion =
|
33
16
|
// eslint-disable-next-line import/extensions
|
34
17
|
require("react-native-reanimated/package.json").version;
|
35
|
-
// The first compatible version is 3.0.0 but we need to exclude 3.0.0 pre-releases
|
36
|
-
// as they have limited support for the used API.
|
37
18
|
if (
|
38
|
-
|
39
|
-
reanimatedVersion
|
40
|
-
reanimatedVersion.includes("3.0.0-")
|
19
|
+
reanimatedVersion &&
|
20
|
+
(reanimatedVersion >= "3.0.0" || reanimatedVersion.includes("3.0.0-"))
|
41
21
|
) {
|
22
|
+
Reanimated3 = Reanimated2;
|
23
|
+
}
|
24
|
+
} catch (e) {}
|
25
|
+
|
26
|
+
export const HAS_REANIMATED2 = !!Reanimated2;
|
27
|
+
export const HAS_REANIMATED3 = !!Reanimated3;
|
28
|
+
|
29
|
+
function throwOnMissingReanimated2() {
|
30
|
+
if (!HAS_REANIMATED2) {
|
31
|
+
throw new Error(
|
32
|
+
"Reanimated was not found, make sure react-native-reanimated package is installed if you want to use \
|
33
|
+
react-naitve-skia's integration layer API."
|
34
|
+
);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
function throwOnMissingReanimated3() {
|
39
|
+
if (!HAS_REANIMATED3) {
|
42
40
|
throw new Error(
|
43
41
|
`Reanimated version ${reanimatedVersion} is not supported, please upgrade to 3.0.0 or newer.`
|
44
42
|
);
|
45
43
|
}
|
44
|
+
throwOnMissingReanimated2();
|
46
45
|
}
|
47
46
|
|
48
47
|
export const useSharedValue =
|
49
|
-
|
48
|
+
Reanimated2?.useSharedValue ||
|
50
49
|
((value: number) => useMemo(() => ({ value }), [value]));
|
51
50
|
|
52
|
-
export const startMapper =
|
53
|
-
|
54
|
-
export const
|
51
|
+
export const startMapper =
|
52
|
+
Reanimated2?.startMapper || throwOnMissingReanimated2;
|
53
|
+
export const stopMapper = Reanimated2?.stopMapper || throwOnMissingReanimated2;
|
54
|
+
export const runOnJS = Reanimated2?.runOnJS || throwOnMissingReanimated2;
|
55
55
|
export const isSharedValue = <T>(
|
56
56
|
value: unknown
|
57
57
|
): value is SharedValueType<T> => {
|
58
|
-
|
59
|
-
|
60
|
-
}
|
61
|
-
return !!value && Reanimated.isSharedValue(value);
|
58
|
+
throwOnMissingReanimated3();
|
59
|
+
return !!value && Reanimated3.isSharedValue(value);
|
62
60
|
};
|
@@ -8,14 +8,13 @@ import {
|
|
8
8
|
startMapper,
|
9
9
|
stopMapper,
|
10
10
|
isSharedValue,
|
11
|
-
|
12
|
-
HAS_REANIMATED,
|
11
|
+
HAS_REANIMATED3,
|
13
12
|
} from "./moduleWrapper";
|
14
13
|
|
15
14
|
const _bindings = new WeakMap<Node<unknown>, unknown>();
|
16
15
|
|
17
16
|
export function extractReanimatedProps(props: AnimatedProps<any>) {
|
18
|
-
if (!
|
17
|
+
if (!HAS_REANIMATED3) {
|
19
18
|
return [props, {}];
|
20
19
|
}
|
21
20
|
const reanimatedProps = {} as AnimatedProps<any>;
|
@@ -40,12 +39,9 @@ export function bindReanimatedProps(
|
|
40
39
|
node: Node<any>,
|
41
40
|
reanimatedProps: AnimatedProps<any>
|
42
41
|
) {
|
43
|
-
if (!
|
42
|
+
if (!HAS_REANIMATED3) {
|
44
43
|
return;
|
45
44
|
}
|
46
|
-
if (__DEV__) {
|
47
|
-
throwOnIncompatibleReanimatedVersion();
|
48
|
-
}
|
49
45
|
const sharedValues = Object.values(reanimatedProps);
|
50
46
|
const previousMapperId = _bindings.get(node);
|
51
47
|
if (previousMapperId !== undefined) {
|
@@ -3,7 +3,7 @@ import { useEffect } from "react";
|
|
3
3
|
import type { SharedValueType } from "../../renderer/processors/Animations";
|
4
4
|
|
5
5
|
import {
|
6
|
-
|
6
|
+
HAS_REANIMATED2,
|
7
7
|
useSharedValue,
|
8
8
|
runOnJS,
|
9
9
|
startMapper,
|
@@ -28,7 +28,7 @@ Learn more at https://shopify.github.io/react-native-skia/.`
|
|
28
28
|
const input = useSharedValue(0);
|
29
29
|
|
30
30
|
useEffect(() => {
|
31
|
-
if (!
|
31
|
+
if (!HAS_REANIMATED2) {
|
32
32
|
console.warn(
|
33
33
|
"Reanimated was not found and the useSharedValueEffect hook will have no effect."
|
34
34
|
);
|