@shopify/react-native-skia 0.1.165 → 0.1.167
Sign up to get free protection for your applications and to get access to all the features.
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +11 -5
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseViewManager.java +34 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +2 -47
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDrawViewManager.java +2 -44
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureViewManager.java +2 -47
- package/cpp/api/JsiSkPath.h +20 -3
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +4 -4
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +8 -16
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +12 -5
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +44 -13
- package/cpp/rnskia/dom/props/ClipProp.h +6 -6
- package/cpp/rnskia/dom/props/ImageProps.h +13 -8
- package/cpp/rnskia/dom/props/PaintProps.h +0 -16
- package/cpp/rnskia/dom/props/PointProp.h +4 -13
- package/cpp/rnskia/dom/props/PointsProp.h +1 -7
- package/cpp/rnskia/dom/props/RRectProp.h +53 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +7 -9
- package/cpp/rnskia/dom/props/TransformProp.h +2 -2
- package/cpp/rnskia/dom/props/VerticesProps.h +2 -2
- package/lib/commonjs/dom/nodes/datatypes/Transform.js +0 -3
- package/lib/commonjs/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js +1 -1
- package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/commonjs/dom/nodes/paint/Shaders.js +5 -2
- package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +8 -39
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DrawingContext.js.map +1 -1
- package/lib/commonjs/renderer/Reconciler.js +64 -0
- package/lib/commonjs/renderer/Reconciler.js.map +1 -0
- package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +26 -27
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.js +7 -0
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkRRect.js +14 -1
- package/lib/commonjs/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Transform.js +0 -3
- package/lib/module/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.js +1 -1
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js +1 -1
- package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
- package/lib/module/dom/nodes/paint/Shaders.js +5 -4
- package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/module/renderer/Canvas.js +7 -33
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DrawingContext.js.map +1 -1
- package/lib/module/renderer/Reconciler.js +48 -0
- package/lib/module/renderer/Reconciler.js.map +1 -0
- package/lib/module/skia/types/Path/Path.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +26 -27
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.js +7 -0
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/skia/web/JsiSkRRect.js +14 -1
- package/lib/module/skia/web/JsiSkRRect.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +1 -1
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/typescript/src/renderer/Canvas.d.ts +4 -7
- package/lib/typescript/src/renderer/DrawingContext.d.ts +2 -5
- package/lib/typescript/src/renderer/Reconciler.d.ts +13 -0
- package/lib/typescript/src/skia/types/Path/Path.d.ts +13 -0
- package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -2
- package/lib/typescript/src/skia/web/JsiSkPath.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkRRect.d.ts +2 -2
- package/package.json +1 -1
- package/src/dom/nodes/datatypes/Transform.ts +0 -2
- package/src/dom/nodes/drawings/Box.ts +1 -1
- package/src/dom/nodes/paint/ImageFilters.ts +1 -1
- package/src/dom/nodes/paint/Shaders.ts +5 -5
- package/src/renderer/Canvas.tsx +12 -61
- package/src/renderer/DrawingContext.ts +2 -6
- package/src/renderer/Reconciler.tsx +66 -0
- package/src/skia/types/Path/Path.ts +14 -0
- package/src/skia/types/Shader/Shader.ts +30 -38
- package/src/skia/web/JsiSkPath.ts +10 -0
- package/src/skia/web/JsiSkRRect.ts +13 -2
- package/src/skia/web/JsiSkia.ts +1 -4
@@ -17,7 +17,6 @@ namespace RNSkia {
|
|
17
17
|
|
18
18
|
static PropId PropNameX = JsiPropId::get("x");
|
19
19
|
static PropId PropNameY = JsiPropId::get("y");
|
20
|
-
static SkPoint EmptyPoint = SkPoint::Make(-1, -1);
|
21
20
|
|
22
21
|
class PointProp : public DerivedProp<SkPoint> {
|
23
22
|
public:
|
@@ -26,9 +25,9 @@ public:
|
|
26
25
|
}
|
27
26
|
|
28
27
|
void updateDerivedValue() override {
|
29
|
-
|
30
|
-
|
31
|
-
setDerivedValue(std::move(
|
28
|
+
if (_pointProp->isSet()) {
|
29
|
+
// Check for JsiSkRect and JsiSkPoint
|
30
|
+
setDerivedValue(std::move(processValue(_pointProp->value())));
|
32
31
|
} else {
|
33
32
|
setDerivedValue(nullptr);
|
34
33
|
}
|
@@ -54,15 +53,7 @@ public:
|
|
54
53
|
auto y = value.getValue(PropNameY);
|
55
54
|
return SkPoint::Make(x.getAsNumber(), y.getAsNumber());
|
56
55
|
}
|
57
|
-
|
58
|
-
}
|
59
|
-
|
60
|
-
static SkPoint processProperty(NodeProp *prop) {
|
61
|
-
if (prop->isSet()) {
|
62
|
-
// Check for JsiSkRect and JsiSkPoint
|
63
|
-
return processValue(prop->value());
|
64
|
-
}
|
65
|
-
return EmptyPoint;
|
56
|
+
throw std::runtime_error("Expected point value.");
|
66
57
|
}
|
67
58
|
|
68
59
|
private:
|
@@ -62,13 +62,7 @@ public:
|
|
62
62
|
points.reserve(pointsArray.size());
|
63
63
|
for (size_t i = 0; i < pointsArray.size(); ++i) {
|
64
64
|
auto p = pointsArray[i];
|
65
|
-
|
66
|
-
if (point != EmptyPoint) {
|
67
|
-
points.push_back(point);
|
68
|
-
} else {
|
69
|
-
throw std::runtime_error(
|
70
|
-
"Expected array of points for points property.");
|
71
|
-
}
|
65
|
+
points.push_back(PointProp::processValue(p));
|
72
66
|
}
|
73
67
|
setDerivedValue(std::move(points));
|
74
68
|
} else {
|
@@ -131,4 +131,57 @@ private:
|
|
131
131
|
RRectProp *_rectProp;
|
132
132
|
RRectPropFromProps *_rectPropFromProps;
|
133
133
|
};
|
134
|
+
|
135
|
+
/**
|
136
|
+
Reads rect props from either a given property or from the property object
|
137
|
+
itself.
|
138
|
+
*/
|
139
|
+
class BoxProps : public DerivedProp<SkRRect> {
|
140
|
+
public:
|
141
|
+
explicit BoxProps(PropId name) : DerivedProp<SkRRect>() {
|
142
|
+
_boxProp = addProperty(std::make_shared<NodeProp>(name));
|
143
|
+
}
|
144
|
+
|
145
|
+
void updateDerivedValue() override {
|
146
|
+
if (_boxProp->value().getType() == PropType::HostObject) {
|
147
|
+
auto rectPtr = std::dynamic_pointer_cast<JsiSkRect>(
|
148
|
+
_boxProp->value().getAsHostObject());
|
149
|
+
auto rrectPtr = std::dynamic_pointer_cast<JsiSkRRect>(
|
150
|
+
_boxProp->value().getAsHostObject());
|
151
|
+
// 1. box is SkRect
|
152
|
+
if (rectPtr != nullptr) {
|
153
|
+
auto rect = rectPtr->getObject();
|
154
|
+
setDerivedValue(SkRRect::MakeRect(*rect));
|
155
|
+
// 2. box is SkRRect
|
156
|
+
} else if (rrectPtr != nullptr) {
|
157
|
+
setDerivedValue(rrectPtr->getObject());
|
158
|
+
}
|
159
|
+
} else if (_boxProp->value().getType() == PropType::Object) {
|
160
|
+
if (_boxProp->value().hasValue(PropNameRect)) {
|
161
|
+
// 3. box is { rect: { x, y, width, height }, rx, ry }
|
162
|
+
auto rectProp = _boxProp->value().getValue(PropNameRect);
|
163
|
+
auto x = rectProp.getValue(PropNameX).getAsNumber();
|
164
|
+
auto y = rectProp.getValue(PropNameY).getAsNumber();
|
165
|
+
auto width = rectProp.getValue(PropNameWidth).getAsNumber();
|
166
|
+
auto height = rectProp.getValue(PropNameHeight).getAsNumber();
|
167
|
+
auto rx = _boxProp->value().getValue(PropNameRx).getAsNumber();
|
168
|
+
auto ry = _boxProp->value().getValue(PropNameRy).getAsNumber();
|
169
|
+
setDerivedValue(
|
170
|
+
SkRRect::MakeRectXY(SkRect::MakeXYWH(x, y, width, height), rx, ry));
|
171
|
+
} else {
|
172
|
+
// 4. box is { x, y, width, height }
|
173
|
+
auto x = _boxProp->value().getValue(PropNameX).getAsNumber();
|
174
|
+
auto y = _boxProp->value().getValue(PropNameY).getAsNumber();
|
175
|
+
auto width = _boxProp->value().getValue(PropNameWidth).getAsNumber();
|
176
|
+
auto height = _boxProp->value().getValue(PropNameHeight).getAsNumber();
|
177
|
+
setDerivedValue(
|
178
|
+
SkRRect::MakeRect(SkRect::MakeXYWH(x, y, width, height)));
|
179
|
+
}
|
180
|
+
}
|
181
|
+
}
|
182
|
+
|
183
|
+
private:
|
184
|
+
NodeProp *_boxProp;
|
185
|
+
};
|
186
|
+
|
134
187
|
} // namespace RNSkia
|
@@ -17,26 +17,24 @@ namespace RNSkia {
|
|
17
17
|
class RadiusProp : public DerivedProp<SkPoint> {
|
18
18
|
public:
|
19
19
|
explicit RadiusProp(PropId name) : DerivedProp<SkPoint>() {
|
20
|
-
_pointProp = addProperty(std::make_shared<PointProp>(name));
|
21
20
|
_radiusProp = addProperty(std::make_shared<NodeProp>(name));
|
22
21
|
}
|
23
22
|
|
24
23
|
void updateDerivedValue() override {
|
25
|
-
if (_pointProp->isSet()) {
|
26
|
-
setDerivedValue(_pointProp->getDerivedValue());
|
27
|
-
return;
|
28
|
-
}
|
29
|
-
|
30
24
|
if (_radiusProp->isSet()) {
|
31
|
-
|
32
|
-
|
25
|
+
// Check for simple number:
|
26
|
+
if (_radiusProp->value().getType() == PropType::Number) {
|
27
|
+
setDerivedValue(SkPoint::Make(_radiusProp->value().getAsNumber(),
|
28
|
+
_radiusProp->value().getAsNumber()));
|
29
|
+
} else {
|
30
|
+
setDerivedValue(PointProp::processValue(_radiusProp->value()));
|
31
|
+
}
|
33
32
|
} else {
|
34
33
|
setDerivedValue(nullptr);
|
35
34
|
}
|
36
35
|
}
|
37
36
|
|
38
37
|
private:
|
39
|
-
PointProp *_pointProp;
|
40
38
|
NodeProp *_radiusProp;
|
41
39
|
};
|
42
40
|
|
@@ -54,9 +54,9 @@ public:
|
|
54
54
|
} else if (key == PropNameScaleY) {
|
55
55
|
m->preScale(1, value);
|
56
56
|
} else if (key == PropNameSkewX) {
|
57
|
-
m->
|
57
|
+
m->preSkew(value, 0);
|
58
58
|
} else if (key == PropNameSkewY) {
|
59
|
-
m->
|
59
|
+
m->preSkew(0, value);
|
60
60
|
} else if (key == PropNameRotate || key == PropNameRotateZ) {
|
61
61
|
m->preRotate(SkRadiansToDegrees(value));
|
62
62
|
} else {
|
@@ -40,9 +40,9 @@ public:
|
|
40
40
|
bool hasColors() { return _colorsProp->isSet(); }
|
41
41
|
|
42
42
|
void updateDerivedValue() override {
|
43
|
-
SkVertices::VertexMode *vertextMode =
|
43
|
+
const SkVertices::VertexMode *vertextMode =
|
44
44
|
_vertexModeProp->getDerivedValue().get();
|
45
|
-
std::vector<SkColor> *colors = _colorsProp->getDerivedValue().get();
|
45
|
+
const std::vector<SkColor> *colors = _colorsProp->getDerivedValue().get();
|
46
46
|
auto vertices = _verticesProp->getDerivedValue();
|
47
47
|
auto textures = _texturesProp->getDerivedValue();
|
48
48
|
auto indices = _indicesProp->getDerivedValue();
|
@@ -20,12 +20,9 @@ const processTransformProps = (m3, props) => {
|
|
20
20
|
m3.concat(matrix);
|
21
21
|
m3.translate(-origin.x, -origin.y);
|
22
22
|
} else {
|
23
|
-
m3.identity();
|
24
23
|
m3.concat(matrix);
|
25
24
|
}
|
26
25
|
} else if (transform) {
|
27
|
-
m3.identity();
|
28
|
-
|
29
26
|
if (origin) {
|
30
27
|
m3.translate(origin.x, origin.y);
|
31
28
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["processTransformProps","m3","props","transform","origin","matrix","translate","x","y","concat","
|
1
|
+
{"version":3,"names":["processTransformProps","m3","props","transform","origin","matrix","translate","x","y","concat","processTransform"],"sources":["Transform.ts"],"sourcesContent":["import type { TransformProps } from \"../../types\";\nimport type { SkMatrix } from \"../../../skia/types\";\nimport { processTransform } from \"../../../skia/types\";\n\nexport const processTransformProps = (m3: SkMatrix, props: TransformProps) => {\n const { transform, origin, matrix } = props;\n if (matrix) {\n if (origin) {\n m3.translate(origin.x, origin.y);\n m3.concat(matrix);\n m3.translate(-origin.x, -origin.y);\n } else {\n m3.concat(matrix);\n }\n } else if (transform) {\n if (origin) {\n m3.translate(origin.x, origin.y);\n }\n processTransform(m3, transform);\n if (origin) {\n m3.translate(-origin.x, -origin.y);\n }\n }\n};\n"],"mappings":";;;;;;;AAEA;;AAEO,MAAMA,qBAAqB,GAAG,CAACC,EAAD,EAAeC,KAAf,KAAyC;EAC5E,MAAM;IAAEC,SAAF;IAAaC,MAAb;IAAqBC;EAArB,IAAgCH,KAAtC;;EACA,IAAIG,MAAJ,EAAY;IACV,IAAID,MAAJ,EAAY;MACVH,EAAE,CAACK,SAAH,CAAaF,MAAM,CAACG,CAApB,EAAuBH,MAAM,CAACI,CAA9B;MACAP,EAAE,CAACQ,MAAH,CAAUJ,MAAV;MACAJ,EAAE,CAACK,SAAH,CAAa,CAACF,MAAM,CAACG,CAArB,EAAwB,CAACH,MAAM,CAACI,CAAhC;IACD,CAJD,MAIO;MACLP,EAAE,CAACQ,MAAH,CAAUJ,MAAV;IACD;EACF,CARD,MAQO,IAAIF,SAAJ,EAAe;IACpB,IAAIC,MAAJ,EAAY;MACVH,EAAE,CAACK,SAAH,CAAaF,MAAM,CAACG,CAApB,EAAuBH,MAAM,CAACI,CAA9B;IACD;;IACD,IAAAE,uBAAA,EAAiBT,EAAjB,EAAqBE,SAArB;;IACA,IAAIC,MAAJ,EAAY;MACVH,EAAE,CAACK,SAAH,CAAa,CAACF,MAAM,CAACG,CAArB,EAAwB,CAACH,MAAM,CAACI,CAAhC;IACD;EACF;AACF,CAnBM"}
|
@@ -27,7 +27,7 @@ const deflate = function (Skia, box, dx, dy) {
|
|
27
27
|
|
28
28
|
class BoxShadowNode extends _Node.JsiDeclarationNode {
|
29
29
|
constructor(ctx, props) {
|
30
|
-
super(ctx, _types2.DeclarationType.Unknown, _types2.NodeType.
|
30
|
+
super(ctx, _types2.DeclarationType.Unknown, _types2.NodeType.BoxShadow, props);
|
31
31
|
}
|
32
32
|
|
33
33
|
materialize() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["inflate","Skia","box","dx","dy","tx","ty","RRectXY","XYWHRect","rect","x","y","width","height","rx","ry","deflate","BoxShadowNode","JsiDeclarationNode","constructor","ctx","props","DeclarationType","Unknown","NodeType","
|
1
|
+
{"version":3,"names":["inflate","Skia","box","dx","dy","tx","ty","RRectXY","XYWHRect","rect","x","y","width","height","rx","ry","deflate","BoxShadowNode","JsiDeclarationNode","constructor","ctx","props","DeclarationType","Unknown","NodeType","BoxShadow","materialize","BoxNode","JsiRenderNode","Box","renderNode","canvas","paint","defaultBox","opacity","getAlphaf","isRRect","shadows","_children","map","node","filter","n","shadow","inner","color","blur","spread","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","BlurStyle","Normal","drawRRect","delta","Point","Math","abs","save","clipRRect","ClipOp","Intersect","outer","drawDRRect","restore"],"sources":["Box.ts"],"sourcesContent":["import type { SkRRect, Skia } from \"../../../skia/types\";\nimport { BlurStyle, ClipOp, isRRect } from \"../../../skia/types\";\nimport type { DrawingContext } from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport type { BoxShadowProps, BoxProps } from \"../../types/Drawings\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport { JsiRenderNode } from \"../RenderNode\";\n\nconst inflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) =>\n Skia.RRectXY(\n Skia.XYWHRect(\n box.rect.x - dx + tx,\n box.rect.y - dy + ty,\n box.rect.width + 2 * dx,\n box.rect.height + 2 * dy\n ),\n box.rx + dx,\n box.ry + dy\n );\n\nconst deflate = (\n Skia: Skia,\n box: SkRRect,\n dx: number,\n dy: number,\n tx = 0,\n ty = 0\n) => inflate(Skia, box, -dx, -dy, tx, ty);\n\nexport class BoxShadowNode extends JsiDeclarationNode<\n BoxShadowProps,\n BoxShadowProps\n> {\n constructor(ctx: NodeContext, props: BoxShadowProps) {\n super(ctx, DeclarationType.Unknown, NodeType.BoxShadow, props);\n }\n\n materialize() {\n return this.props;\n }\n}\n\nexport class BoxNode extends JsiRenderNode<BoxProps> {\n constructor(ctx: NodeContext, props: BoxProps) {\n super(ctx, NodeType.Box, props);\n }\n\n renderNode({ canvas, paint }: DrawingContext) {\n const { box: defaultBox } = this.props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox)\n ? defaultBox\n : this.Skia.RRectXY(defaultBox, 0, 0);\n const shadows = this._children\n .map((node) => {\n if (node instanceof BoxShadowNode) {\n return node.materialize();\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(\n inflate(this.Skia, box, spread, spread, dx, dy),\n lPaint\n );\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = this.Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = this.Skia.Paint();\n lPaint.setColor(this.Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(this.Skia, box, spread, spread, dx, dy);\n const outer = inflate(this.Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n }\n}\n"],"mappings":"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"}
|
@@ -122,7 +122,7 @@ exports.BlurImageFilterNode = BlurImageFilterNode;
|
|
122
122
|
|
123
123
|
class DropShadowImageFilterNode extends ImageFilterDeclaration {
|
124
124
|
constructor(ctx, props) {
|
125
|
-
super(ctx, _types2.NodeType.
|
125
|
+
super(ctx, _types2.NodeType.DropShadowImageFilter, props);
|
126
126
|
}
|
127
127
|
|
128
128
|
materialize() {
|
@@ -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","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","NodeType","OffsetImageFilter","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","ColorChannel","enumKey","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","processRadius","DropShadowImageFilterNode","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 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<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n const input = this.getOptionalChildInstance(0);\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 return factory(dx, dy, blur, blur, color, input);\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 materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\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","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","NodeType","OffsetImageFilter","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","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 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<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.DropShadowImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n const input = this.getOptionalChildInstance(0);\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 return factory(dx, dy, blur, blur, color, input);\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 materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\n }\n}\n"],"mappings":"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"}
|
@@ -58,6 +58,7 @@ class ImageShaderNode extends ShaderDeclaration {
|
|
58
58
|
...imageShaderProps
|
59
59
|
} = this.props;
|
60
60
|
const rct = (0, _datatypes.getRect)(this.Skia, imageShaderProps);
|
61
|
+
const m3 = this.Skia.Matrix();
|
61
62
|
|
62
63
|
if (rct) {
|
63
64
|
const rects = (0, _datatypes.fitRects)(fit, {
|
@@ -66,11 +67,13 @@ class ImageShaderNode extends ShaderDeclaration {
|
|
66
67
|
width: image.width(),
|
67
68
|
height: image.height()
|
68
69
|
}, rct);
|
69
|
-
const
|
70
|
-
|
70
|
+
const [x, y, sx, sy] = (0, _datatypes.rect2rect)(rects.src, rects.dst);
|
71
|
+
m3.translate(x.translateX, y.translateY);
|
72
|
+
m3.scale(sx.scaleX, sy.scaleY);
|
71
73
|
}
|
72
74
|
|
73
75
|
const lm = this.Skia.Matrix();
|
76
|
+
lm.concat(m3);
|
74
77
|
(0, _datatypes.processTransformProps)(lm, imageShaderProps);
|
75
78
|
return image.makeShaderOptions(_types.TileMode[(0, _datatypes.enumKey)(tx)], _types.TileMode[(0, _datatypes.enumKey)(ty)], _types.FilterMode[(0, _datatypes.enumKey)(fm)], _types.MipmapMode[(0, _datatypes.enumKey)(mm)], lm);
|
76
79
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["ShaderDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","Shader","ShaderNode","NodeType","materialize","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","makeShaderWithChildren","processUniforms","children","filter","child","isShader","map","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","getRect","rects","fitRects","x","y","width","height","rect2rect","src","dst","lm","makeShaderOptions","TileMode","enumKey","FilterMode","MipmapMode","ColorNode","ColorShader","color","MakeColor","Color","TurbulenceNode","Turbulence","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeTurbulence","FractalNoiseNode","FractalNoise","MakeFractalNoise","LinearGradientNode","LinearGradient","start","end","colors","positions","mode","localMatrix","flags","processGradientProps","MakeLinearGradient","RadialGradientNode","RadialGradient","c","r","MakeRadialGradient","SweepGradientNode","SweepGradient","MakeSweepGradient","TwoPointConicalGradientNode","TwoPointConicalGradient","startR","endR","MakeTwoPointConicalGradient"],"sources":["Shaders.ts"],"sourcesContent":["import {\n processUniforms,\n FilterMode,\n MipmapMode,\n TileMode,\n} from \"../../../skia/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../datatypes\";\n\nexport abstract class ShaderDeclaration<P> extends JsiDeclarationNode<\n P,\n SkShader\n> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.Shader, type, props);\n }\n}\n\nexport class ShaderNode extends ShaderDeclaration<ShaderProps> {\n constructor(ctx: NodeContext, props: ShaderProps) {\n super(ctx, NodeType.Shader, props);\n }\n\n materialize() {\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n return source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n this.children()\n .filter(\n (child): child is JsiDeclarationNode<unknown, SkShader> =>\n child instanceof JsiDeclarationNode && child.isShader()\n )\n .map((child) => child.materialize()),\n m3\n );\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n materialize() {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\n if (rct) {\n const rects = fitRects(\n fit,\n { x: 0, y: 0, width: image.width(), height: image.height() },\n rct\n );\n const m3 = rect2rect(rects.src, rects.dst);\n imageShaderProps.transform = [\n ...(imageShaderProps.transform ?? []),\n ...m3,\n ];\n }\n const lm = this.Skia.Matrix();\n processTransformProps(lm, imageShaderProps);\n return image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n materialize() {\n const { color } = this.props;\n return this.Skia.Shader.MakeColor(this.Skia.Color(color));\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n materialize() {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n materialize() {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n materialize() {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeSweepGradient(\n c.x,\n c.y,\n colors,\n positions,\n mode,\n localMatrix,\n flags,\n start,\n end\n );\n }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n materialize() {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["ShaderDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","Shader","ShaderNode","NodeType","materialize","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","makeShaderWithChildren","processUniforms","children","filter","child","isShader","map","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","getRect","rects","fitRects","x","y","width","height","sx","sy","rect2rect","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","makeShaderOptions","TileMode","enumKey","FilterMode","MipmapMode","ColorNode","ColorShader","color","MakeColor","Color","TurbulenceNode","Turbulence","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeTurbulence","FractalNoiseNode","FractalNoise","MakeFractalNoise","LinearGradientNode","LinearGradient","start","end","colors","positions","mode","localMatrix","flags","processGradientProps","MakeLinearGradient","RadialGradientNode","RadialGradient","c","r","MakeRadialGradient","SweepGradientNode","SweepGradient","MakeSweepGradient","TwoPointConicalGradientNode","TwoPointConicalGradient","startR","endR","MakeTwoPointConicalGradient"],"sources":["Shaders.ts"],"sourcesContent":["import {\n processUniforms,\n FilterMode,\n MipmapMode,\n TileMode,\n} from \"../../../skia/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../datatypes\";\n\nexport abstract class ShaderDeclaration<P> extends JsiDeclarationNode<\n P,\n SkShader\n> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.Shader, type, props);\n }\n}\n\nexport class ShaderNode extends ShaderDeclaration<ShaderProps> {\n constructor(ctx: NodeContext, props: ShaderProps) {\n super(ctx, NodeType.Shader, props);\n }\n\n materialize() {\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n return source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n this.children()\n .filter(\n (child): child is JsiDeclarationNode<unknown, SkShader> =>\n child instanceof JsiDeclarationNode && child.isShader()\n )\n .map((child) => child.materialize()),\n m3\n );\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n materialize() {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\n const m3 = this.Skia.Matrix();\n if (rct) {\n const rects = fitRects(\n fit,\n { x: 0, y: 0, width: image.width(), height: image.height() },\n rct\n );\n const [x, y, sx, sy] = rect2rect(rects.src, rects.dst);\n m3.translate(x.translateX, y.translateY);\n m3.scale(sx.scaleX, sy.scaleY);\n }\n const lm = this.Skia.Matrix();\n lm.concat(m3);\n processTransformProps(lm, imageShaderProps);\n return image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n materialize() {\n const { color } = this.props;\n return this.Skia.Shader.MakeColor(this.Skia.Color(color));\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n materialize() {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n materialize() {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n materialize() {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeSweepGradient(\n c.x,\n c.y,\n colors,\n positions,\n mode,\n localMatrix,\n flags,\n start,\n end\n );\n }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n materialize() {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n"],"mappings":"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"}
|
@@ -3,23 +3,15 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.useCanvasRef = exports.
|
6
|
+
exports.useCanvasRef = exports.Canvas = void 0;
|
7
7
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
9
9
|
|
10
|
-
var _reactReconciler = _interopRequireDefault(require("react-reconciler"));
|
11
|
-
|
12
10
|
var _views = require("../views");
|
13
11
|
|
14
12
|
var _Skia = require("../skia/Skia");
|
15
13
|
|
16
|
-
var
|
17
|
-
|
18
|
-
var _Container = require("./Container");
|
19
|
-
|
20
|
-
var _DependencyManager = require("./DependencyManager");
|
21
|
-
|
22
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
|
+
var _Reconciler = require("./Reconciler");
|
23
15
|
|
24
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
25
17
|
|
@@ -27,27 +19,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
27
19
|
|
28
20
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
29
21
|
|
30
|
-
const skiaReconciler = (0, _reactReconciler.default)(_HostConfig.skHostConfig);
|
31
|
-
exports.skiaReconciler = skiaReconciler;
|
32
|
-
skiaReconciler.injectIntoDevTools({
|
33
|
-
bundleType: 1,
|
34
|
-
version: "0.0.1",
|
35
|
-
rendererPackageName: "react-native-skia"
|
36
|
-
});
|
37
|
-
|
38
|
-
const render = (element, root, container) => {
|
39
|
-
skiaReconciler.updateContainer(element, root, null, () => {
|
40
|
-
(0, _HostConfig.debug)("updateContainer");
|
41
|
-
container.depMgr.update();
|
42
|
-
});
|
43
|
-
};
|
44
|
-
|
45
22
|
const useCanvasRef = () => (0, _react.useRef)(null);
|
46
23
|
|
47
24
|
exports.useCanvasRef = useCanvasRef;
|
48
|
-
|
49
|
-
const createDependencyManager = registerValues => global.SkiaDomApi && global.SkiaDomApi.DependencyManager ? global.SkiaDomApi.DependencyManager(registerValues) : new _DependencyManager.DependencyManager(registerValues);
|
50
|
-
|
51
25
|
const Canvas = /*#__PURE__*/(0, _react.forwardRef)((_ref, forwardedRef) => {
|
52
26
|
let {
|
53
27
|
children,
|
@@ -72,25 +46,20 @@ const Canvas = /*#__PURE__*/(0, _react.forwardRef)((_ref, forwardedRef) => {
|
|
72
46
|
|
73
47
|
return ref.current.registerValues(values);
|
74
48
|
}, [ref]);
|
75
|
-
const
|
76
|
-
return new _Container.Container(_Skia.Skia, createDependencyManager(registerValues), redraw);
|
77
|
-
}, [redraw, registerValues]);
|
78
|
-
const root = (0, _react.useMemo)(() => skiaReconciler.createContainer(container, 0, null, true, null, "", console.error, null), [container]); // Render effect
|
49
|
+
const root = (0, _react.useMemo)(() => new _Reconciler.SkiaRoot(_Skia.Skia, registerValues, redraw), [redraw, registerValues]); // Render effect
|
79
50
|
|
80
51
|
(0, _react.useEffect)(() => {
|
81
|
-
render(children
|
82
|
-
}, [children, root, redraw
|
52
|
+
root.render(children);
|
53
|
+
}, [children, root, redraw]);
|
83
54
|
(0, _react.useEffect)(() => {
|
84
55
|
return () => {
|
85
|
-
|
86
|
-
container.depMgr.remove();
|
87
|
-
});
|
56
|
+
root.unmount();
|
88
57
|
};
|
89
|
-
}, [
|
58
|
+
}, [root]);
|
90
59
|
return /*#__PURE__*/_react.default.createElement(_views.SkiaDomView, _extends({
|
91
60
|
ref: ref,
|
92
61
|
style: style,
|
93
|
-
root:
|
62
|
+
root: root.dom,
|
94
63
|
onTouch: onTouch,
|
95
64
|
onSize: onSize,
|
96
65
|
mode: mode,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["useCanvasRef","useRef","Canvas","forwardRef","forwardedRef","children","style","debug","mode","onTouch","onSize","props","innerRef","ref","useCombinedRefs","redraw","useCallback","current","registerValues","values","Error","root","useMemo","SkiaRoot","Skia","useEffect","render","unmount","dom","refs","targetRef","React","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\n\nimport { SkiaDomView } from \"../views\";\nimport { Skia } from \"../skia/Skia\";\nimport type { TouchHandler, SkiaBaseViewProps } from \"../views\";\nimport type { SkiaValue } from \"../values/types\";\n\nimport { SkiaRoot } from \"./Reconciler\";\n\nexport const useCanvasRef = () => useRef<SkiaDomView>(null);\n\nexport interface CanvasProps extends SkiaBaseViewProps {\n ref?: RefObject<SkiaDomView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n}\n\nexport const Canvas = forwardRef<SkiaDomView, CanvasProps>(\n (\n { children, style, debug, mode, onTouch, onSize, ...props },\n forwardedRef\n ) => {\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const redraw = useCallback(() => {\n innerRef.current?.redraw();\n }, [innerRef]);\n\n const registerValues = useCallback(\n (values: Array<SkiaValue<unknown>>) => {\n if (ref.current === null) {\n throw new Error(\"Canvas ref is not set\");\n }\n return ref.current.registerValues(values);\n },\n [ref]\n );\n const root = useMemo(\n () => new SkiaRoot(Skia, registerValues, redraw),\n [redraw, registerValues]\n );\n\n // Render effect\n useEffect(() => {\n root.render(children);\n }, [children, root, redraw]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n return (\n <SkiaDomView\n ref={ref}\n style={style}\n root={root.dom}\n onTouch={onTouch}\n onSize={onSize}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n }\n) as React.FC<CanvasProps & React.RefAttributes<SkiaDomView>>;\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":";;;;;;;AAAA;;AAcA;;AACA;;AAIA;;;;;;;;AAEO,MAAMA,YAAY,GAAG,MAAM,IAAAC,aAAA,EAAoB,IAApB,CAA3B;;;AAQA,MAAMC,MAAM,gBAAG,IAAAC,iBAAA,EACpB,OAEEC,YAFF,KAGK;EAAA,IAFH;IAAEC,QAAF;IAAYC,KAAZ;IAAmBC,KAAnB;IAA0BC,IAA1B;IAAgCC,OAAhC;IAAyCC,MAAzC;IAAiD,GAAGC;EAApD,CAEG;EACH,MAAMC,QAAQ,GAAGZ,YAAY,EAA7B;EACA,MAAMa,GAAG,GAAGC,eAAe,CAACV,YAAD,EAAeQ,QAAf,CAA3B;EACA,MAAMG,MAAM,GAAG,IAAAC,kBAAA,EAAY,MAAM;IAAA;;IAC/B,qBAAAJ,QAAQ,CAACK,OAAT,wEAAkBF,MAAlB;EACD,CAFc,EAEZ,CAACH,QAAD,CAFY,CAAf;EAIA,MAAMM,cAAc,GAAG,IAAAF,kBAAA,EACpBG,MAAD,IAAuC;IACrC,IAAIN,GAAG,CAACI,OAAJ,KAAgB,IAApB,EAA0B;MACxB,MAAM,IAAIG,KAAJ,CAAU,uBAAV,CAAN;IACD;;IACD,OAAOP,GAAG,CAACI,OAAJ,CAAYC,cAAZ,CAA2BC,MAA3B,CAAP;EACD,CANoB,EAOrB,CAACN,GAAD,CAPqB,CAAvB;EASA,MAAMQ,IAAI,GAAG,IAAAC,cAAA,EACX,MAAM,IAAIC,oBAAJ,CAAaC,UAAb,EAAmBN,cAAnB,EAAmCH,MAAnC,CADK,EAEX,CAACA,MAAD,EAASG,cAAT,CAFW,CAAb,CAhBG,CAqBH;;EACA,IAAAO,gBAAA,EAAU,MAAM;IACdJ,IAAI,CAACK,MAAL,CAAYrB,QAAZ;EACD,CAFD,EAEG,CAACA,QAAD,EAAWgB,IAAX,EAAiBN,MAAjB,CAFH;EAIA,IAAAU,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MACXJ,IAAI,CAACM,OAAL;IACD,CAFD;EAGD,CAJD,EAIG,CAACN,IAAD,CAJH;EAMA,oBACE,6BAAC,kBAAD;IACE,GAAG,EAAER,GADP;IAEE,KAAK,EAAEP,KAFT;IAGE,IAAI,EAAEe,IAAI,CAACO,GAHb;IAIE,OAAO,EAAEnB,OAJX;IAKE,MAAM,EAAEC,MALV;IAME,IAAI,EAAEF,IANR;IAOE,KAAK,EAAED;EAPT,GAQMI,KARN,EADF;AAYD,CAhDmB,CAAf;AAmDP;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA,MAAMG,eAAe,GAAG,YAEnB;EAAA,kCADAe,IACA;IADAA,IACA;EAAA;;EACH,MAAMC,SAAS,GAAGC,cAAA,CAAM9B,MAAN,CAAgB,IAAhB,CAAlB;;EACA8B,cAAA,CAAMN,SAAN,CAAgB,MAAM;IACpBI,IAAI,CAACG,OAAL,CAAcnB,GAAD,IAAS;MACpB,IAAIA,GAAJ,EAAS;QACP,IAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;UAC7BA,GAAG,CAACiB,SAAS,CAACb,OAAX,CAAH;QACD,CAFD,MAEO;UACLJ,GAAG,CAACI,OAAJ,GAAca,SAAS,CAACb,OAAxB;QACD;MACF;IACF,CARD;EASD,CAVD,EAUG,CAACY,IAAD,CAVH;;EAWA,OAAOC,SAAP;AACD,CAhBD"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { DrawingInfo } from \"../views\";\nimport type { Skia } from \"../skia/types\";\nimport type { DrawingContext as DOMDrawingContext } from \"../dom/types\";\n\nexport interface DrawingContext\n extends Omit<DrawingInfo, \"touches\">,\n DOMDrawingContext {\n Skia: Skia;\n}\n"],"mappings":""}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.SkiaRoot = void 0;
|
7
|
+
|
8
|
+
var _reactReconciler = _interopRequireDefault(require("react-reconciler"));
|
9
|
+
|
10
|
+
var _DependencyManager = require("./DependencyManager");
|
11
|
+
|
12
|
+
var _HostConfig = require("./HostConfig");
|
13
|
+
|
14
|
+
var _Container = require("./Container");
|
15
|
+
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
+
|
18
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19
|
+
|
20
|
+
const skiaReconciler = (0, _reactReconciler.default)(_HostConfig.skHostConfig);
|
21
|
+
|
22
|
+
const createDependencyManager = registerValues => global.SkiaDomApi && global.SkiaDomApi.DependencyManager ? global.SkiaDomApi.DependencyManager(registerValues) : new _DependencyManager.DependencyManager(registerValues);
|
23
|
+
|
24
|
+
skiaReconciler.injectIntoDevTools({
|
25
|
+
bundleType: 1,
|
26
|
+
version: "0.0.1",
|
27
|
+
rendererPackageName: "react-native-skia"
|
28
|
+
});
|
29
|
+
|
30
|
+
class SkiaRoot {
|
31
|
+
constructor(Skia) {
|
32
|
+
let registerValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => () => {};
|
33
|
+
let redraw = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
|
34
|
+
|
35
|
+
_defineProperty(this, "root", void 0);
|
36
|
+
|
37
|
+
_defineProperty(this, "container", void 0);
|
38
|
+
|
39
|
+
const depMgr = createDependencyManager(registerValues);
|
40
|
+
this.container = new _Container.Container(Skia, depMgr, redraw);
|
41
|
+
this.root = skiaReconciler.createContainer(this.container, 0, null, true, null, "", console.error, null);
|
42
|
+
}
|
43
|
+
|
44
|
+
render(element) {
|
45
|
+
skiaReconciler.updateContainer(element, this.root, null, () => {
|
46
|
+
(0, _HostConfig.debug)("updateContainer");
|
47
|
+
this.container.depMgr.update();
|
48
|
+
});
|
49
|
+
}
|
50
|
+
|
51
|
+
unmount() {
|
52
|
+
skiaReconciler.updateContainer(null, this.root, null, () => {
|
53
|
+
this.container.depMgr.remove();
|
54
|
+
});
|
55
|
+
}
|
56
|
+
|
57
|
+
get dom() {
|
58
|
+
return this.container.root;
|
59
|
+
}
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
exports.SkiaRoot = SkiaRoot;
|
64
|
+
//# sourceMappingURL=Reconciler.js.map
|