@shopify/react-native-skia 0.1.178 → 0.1.180
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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":"AACA,SACEA,SADF,EAEEC,YAFF,EAGEC,eAHF,EAIEC,QAJF,QAKO,qBALP;AAgBA,SAASC,eAAT,EAA0BC,QAA1B,QAA0C,aAA1C;AACA,SAASC,aAAT,EAAwBC,OAAxB,QAAuC,cAAvC;AAEA,SAASC,kBAAT,QAAmC,SAAnC;AAEA,MAAMC,KAAK,GAAGC,YAAY,CAACC,EAAb,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CAAd;;AAEA,MAAMC,eAAe,GAAG,CACtBC,IADsB,EAEtBC,UAFsB,EAGtBC,EAHsB,EAItBC,EAJsB,EAKtBC,MALsB,EAMtBC,MANsB,EAOtBC,KAPsB,EAQtBC,KARsB,KASnB;EACH,MAAMC,aAAa,GAAGR,IAAI,CAACS,WAAL,CAAiBC,eAAjB,CACpBV,IAAI,CAACW,WAAL,CAAiBC,SAAjB,CAA2BhB,KAA3B,EAAkCT,SAAS,CAAC0B,GAA5C,CADoB,EAEpB,IAFoB,CAAtB;EAIA,MAAMC,WAAW,GAAGd,IAAI,CAACS,WAAL,CAAiBC,eAAjB,CAClBV,IAAI,CAACW,WAAL,CAAiBC,SAAjB,CAA2BhB,KAA3B,EAAkCT,SAAS,CAAC4B,KAA5C,CADkB,EAElB,IAFkB,CAApB;EAIA,MAAMC,EAAE,GAAGhB,IAAI,CAACS,WAAL,CAAiBC,eAAjB,CACTV,IAAI,CAACW,WAAL,CAAiBC,SAAjB,CAA2BN,KAA3B,EAAkCnB,SAAS,CAAC8B,MAA5C,CADS,EAET,IAFS,CAAX;EAIA,MAAMC,EAAE,GAAGlB,IAAI,CAACS,WAAL,CAAiBU,UAAjB,CAA4BjB,EAA5B,EAAgCC,EAAhC,EAAoCa,EAApC,CAAX;EACA,MAAMI,EAAE,GAAGpB,IAAI,CAACS,WAAL,CAAiBY,QAAjB,CAA0BjB,MAA1B,EAAkCC,MAAlC,EAA0Cf,QAAQ,CAACgC,KAAnD,EAA0DJ,EAA1D,CAAX;EACA,MAAMK,EAAE,GAAGvB,IAAI,CAACS,WAAL,CAAiBG,SAAjB,CAA2BzB,SAAS,CAAC4B,KAArC,EAA4CD,WAA5C,EAAyDM,EAAzD,CAAX;;EACA,IAAInB,UAAJ,EAAgB;IACd,OAAOsB,EAAP;EACD;;EACD,OAAOvB,IAAI,CAACS,WAAL,CAAiBe,WAAjB,CACLjB,KADK,EAELP,IAAI,CAACS,WAAL,CAAiBG,SAAjB,CAA2BzB,SAAS,CAACsC,OAArC,EAA8CjB,aAA9C,EAA6De,EAA7D,CAFK,CAAP;AAID,CAhCD;;AAkCA,OAAO,MAAeG,sBAAf,SAAiD/B,kBAAjD,CAAuE;EAC5EgC,WAAW,CAACC,GAAD,EAAmBC,IAAnB,EAAmCC,KAAnC,EAA6C;IACtD,MAAMF,GAAN,EAAWrC,eAAe,CAACkB,WAA3B,EAAwCoB,IAAxC,EAA8CC,KAA9C;EACD;;EAESvB,KAAK,CAACqB,GAAD,EAA0B;IAAA;;IACvC,gCAAOA,GAAG,CAACG,YAAJ,CAAiBC,GAAjB,EAAP,yEAAiC,IAAjC;EACD;;EAESC,cAAc,CAACL,GAAD,EAA0BM,KAA1B,EAAgD;IACtEN,GAAG,CAACO,IAAJ;IACA,KAAKC,gBAAL,CAAsBR,GAAtB;IACA,IAAIS,KAAK,GAAGT,GAAG,CAACG,YAAJ,CAAiBO,WAAjB,EAAZ;IACA,MAAMC,EAAE,GAAGX,GAAG,CAACY,YAAJ,CAAiBF,WAAjB,EAAX;IACAV,GAAG,CAACa,OAAJ;;IACA,IAAIF,EAAJ,EAAQ;MAAA;;MACNF,KAAK,GAAG,KAAKrC,IAAL,CAAUS,WAAV,CAAsBe,WAAtB,UACNa,KADM,yCACG,IADH,EAEN,KAAKrC,IAAL,CAAUS,WAAV,CAAsBC,eAAtB,CAAsC6B,EAAtC,EAA0C,IAA1C,CAFM,CAAR;IAID;;IACD,MAAMG,IAAI,GAAGL,KAAK,GACd,KAAKrC,IAAL,CAAUS,WAAV,CAAsBe,WAAtB,CAAkCU,KAAlC,EAAyCG,KAAzC,CADc,GAEdH,KAFJ;IAGAN,GAAG,CAACG,YAAJ,CAAiBY,IAAjB,CAAsBD,IAAtB;EACD;;AAzB2E;AA4B9E,OAAO,MAAME,qBAAN,SAAoClB,sBAApC,CAAmF;EACxFC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAkD;IAC3D,MAAMF,GAAN,EAAWpC,QAAQ,CAACqD,iBAApB,EAAuCf,KAAvC;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,KAAKQ,gBAAL,CAAsBR,GAAtB;IACA,MAAM;MAAEmB,CAAF;MAAKC;IAAL,IAAW,KAAKlB,KAAtB;IACA,MAAMY,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBU,UAAtB,CAAiC4B,CAAjC,EAAoCC,CAApC,EAAuC,IAAvC,CAAb;IACA,KAAKf,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAVuF;AAa1F,OAAO,MAAMO,8BAAN,SAA6CvB,sBAA7C,CAAqG;EAC1GC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA2D;IACpE,MAAMF,GAAN,EAAWpC,QAAQ,CAAC0D,0BAApB,EAAgDpB,KAAhD;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAEuB,QAAF;MAAYC,QAAZ;MAAsBC;IAAtB,IAAgC,KAAKvB,KAA3C;IACA,MAAMY,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsB6C,mBAAtB,CACXlE,YAAY,CAACM,OAAO,CAACyD,QAAD,CAAR,CADD,EAEX/D,YAAY,CAACM,OAAO,CAAC0D,QAAD,CAAR,CAFD,EAGXC,KAHW,EAIXzB,GAAG,CAACG,YAAJ,CAAiBC,GAAjB,EAJW,EAKX,KAAKzB,KAAL,CAAWqB,GAAX,CALW,CAAb;IAOA,KAAKK,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAfyG;AAkB5G,OAAO,MAAMa,mBAAN,SAAkC7B,sBAAlC,CAA+E;EACpFC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAgD;IACzD,MAAMF,GAAN,EAAWpC,QAAQ,CAACgE,eAApB,EAAqC1B,KAArC;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAE6B,IAAF;MAAQC;IAAR,IAAiB,KAAK5B,KAA5B;IACA,MAAM6B,KAAK,GAAGlE,aAAa,CAAC,KAAKO,IAAN,EAAY0D,IAAZ,CAA3B;IACA,MAAMhB,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBY,QAAtB,CACXsC,KAAK,CAACZ,CADK,EAEXY,KAAK,CAACX,CAFK,EAGX1D,QAAQ,CAACI,OAAO,CAAC+D,IAAD,CAAR,CAHG,EAIX,KAAKlD,KAAL,CAAWqB,GAAX,CAJW,CAAb;IAMA,KAAKK,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAfmF;AAkBtF,OAAO,MAAMkB,yBAAN,SAAwClC,sBAAxC,CAA2F;EAChGC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAsD;IAC/D,MAAMF,GAAN,EAAWpC,QAAQ,CAACqE,qBAApB,EAA2C/B,KAA3C;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAE1B,EAAF;MAAMC,EAAN;MAAUuD,IAAV;MAAgBzD,UAAhB;MAA4BK,KAAK,EAAEwD,EAAnC;MAAuCC;IAAvC,IAAiD,KAAKjC,KAA5D;IACA,MAAMxB,KAAK,GAAG,KAAKN,IAAL,CAAUgE,KAAV,CAAgBF,EAAhB,CAAd;IACA,IAAIG,OAAJ;;IACA,IAAIF,KAAJ,EAAW;MACTE,OAAO,GAAGlE,eAAe,CAACmE,IAAhB,CAAqB,IAArB,EAA2B,KAAKlE,IAAhC,EAAsCC,UAAtC,CAAV;IACD,CAFD,MAEO;MACLgE,OAAO,GAAGhE,UAAU,GAChB,KAAKD,IAAL,CAAUS,WAAV,CAAsB0D,kBAAtB,CAAyCD,IAAzC,CAA8C,KAAKlE,IAAL,CAAUS,WAAxD,CADgB,GAEhB,KAAKT,IAAL,CAAUS,WAAV,CAAsB2D,cAAtB,CAAqCF,IAArC,CAA0C,KAAKlE,IAAL,CAAUS,WAApD,CAFJ;IAGD;;IACD,MAAMiC,IAAI,GAAGuB,OAAO,CAAC/D,EAAD,EAAKC,EAAL,EAASuD,IAAT,EAAeA,IAAf,EAAqBpD,KAArB,EAA4B,KAAKC,KAAL,CAAWqB,GAAX,CAA5B,CAApB;IACA,KAAKK,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAlB+F;AAqBlG,WAAY2B,kBAAZ;;WAAYA,kB;EAAAA,kB,CAAAA,kB;EAAAA,kB,CAAAA,kB;GAAAA,kB,KAAAA,kB;;AAKZ,OAAO,MAAMC,yBAAN,SAAwC5C,sBAAxC,CAA2F;EAChGC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAsD;IAC/D,MAAMF,GAAN,EAAWpC,QAAQ,CAAC+E,qBAApB,EAA2CzC,KAA3C;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAE4C;IAAF,IAAe,KAAK1C,KAA1B;IACA,MAAM2C,CAAC,GAAGhF,aAAa,CAAC,KAAKO,IAAN,EAAY,KAAK8B,KAAL,CAAW4C,MAAvB,CAAvB;IACA,IAAIhC,IAAJ;;IACA,IAAI2B,kBAAkB,CAAC3E,OAAO,CAAC8E,QAAD,CAAR,CAAlB,KAA0CH,kBAAkB,CAACM,KAAjE,EAAwE;MACtEjC,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBmE,SAAtB,CAAgCH,CAAC,CAAC1B,CAAlC,EAAqC0B,CAAC,CAACzB,CAAvC,EAA0C,KAAKzC,KAAL,CAAWqB,GAAX,CAA1C,CAAP;IACD,CAFD,MAEO;MACLc,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBoE,UAAtB,CAAiCJ,CAAC,CAAC1B,CAAnC,EAAsC0B,CAAC,CAACzB,CAAxC,EAA2C,KAAKzC,KAAL,CAAWqB,GAAX,CAA3C,CAAP;IACD;;IACD,KAAKK,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAf+F;AAkBlG,OAAO,MAAMoC,oBAAN,SAAmCpD,sBAAnC,CAAiF;EACtFC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAiD;IAC1D,MAAMF,GAAN,EAAWpC,QAAQ,CAACuF,gBAApB,EAAsCjD,KAAtC;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAE6B;IAAF,IAAW,KAAK3B,KAAtB;IACA,MAAMkD,CAAC,GAAGpD,GAAG,CAACG,YAAJ,CAAiBC,GAAjB,EAAV;IACA,MAAMiD,CAAC,GAAGrD,GAAG,CAACG,YAAJ,CAAiBC,GAAjB,EAAV;;IACA,IAAI,CAACgD,CAAD,IAAM,CAACC,CAAX,EAAc;MACZ,MAAM,IAAIC,KAAJ,CAAU,6CAAV,CAAN;IACD;;IACD,MAAMxC,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBG,SAAtB,CAAgC6C,IAAhC,EAAsCuB,CAAtC,EAAyCC,CAAzC,CAAb;IACA,KAAKhD,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAdqF;AAiBxF,OAAO,MAAMyC,4BAAN,SAA2CzD,sBAA3C,CAAiG;EACtGC,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAyD;IAClE,MAAMF,GAAN,EAAWpC,QAAQ,CAAC4F,wBAApB,EAA8CtD,KAA9C;EACD;;EAEDgB,QAAQ,CAAClB,GAAD,EAA0B;IAChC,MAAM;MAAEyD,MAAF;MAAUC;IAAV,IAAuB,KAAKxD,KAAlC;IACA,MAAMyD,GAAG,GAAG,KAAKvF,IAAL,CAAUwF,oBAAV,CAA+BH,MAA/B,CAAZ;;IACA,IAAIC,QAAJ,EAAc;MACZjG,eAAe,CAACgG,MAAD,EAASC,QAAT,EAAmBC,GAAnB,CAAf;IACD;;IACD,MAAM7C,IAAI,GAAG,KAAK1C,IAAL,CAAUS,WAAV,CAAsBgF,iBAAtB,CACXF,GADW,EAEX,IAFW,EAGX,KAAKhF,KAAL,CAAWqB,GAAX,CAHW,CAAb;IAKA,KAAKK,cAAL,CAAoBL,GAApB,EAAyBc,IAAzB;EACD;;AAjBqG"}
|
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
|
);
|