@shopify/react-native-skia 2.2.6 → 2.2.8
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/api/recorder/DrawingCtx.h +15 -0
- package/cpp/api/recorder/JsiRecorder.h +2 -1
- package/cpp/api/recorder/RNRecorder.h +2 -2
- package/cpp/api/recorder/Shaders.h +6 -5
- package/lib/commonjs/skia/types/Recorder.d.ts +1 -1
- package/lib/commonjs/skia/types/Recorder.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +3 -39
- package/lib/commonjs/sksg/Container.js +3 -195
- package/lib/commonjs/sksg/Container.js.map +1 -1
- package/lib/commonjs/sksg/Container.native.d.ts +14 -0
- package/lib/commonjs/sksg/Container.native.js +81 -0
- package/lib/commonjs/sksg/Container.native.js.map +1 -0
- package/lib/commonjs/sksg/Container.web.d.ts +14 -0
- package/lib/commonjs/sksg/Container.web.js +91 -0
- package/lib/commonjs/sksg/Container.web.js.map +1 -0
- package/lib/commonjs/sksg/HostConfig.d.ts +1 -1
- package/lib/commonjs/sksg/HostConfig.js.map +1 -1
- package/lib/commonjs/sksg/Reconciler.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
- package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +2 -2
- package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
- package/lib/commonjs/sksg/Recorder/Recorder.js +3 -2
- package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Visitor.js +2 -2
- package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +3 -3
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/commonjs/sksg/StaticContainer.d.ts +24 -0
- package/lib/commonjs/sksg/StaticContainer.js +70 -0
- package/lib/commonjs/sksg/StaticContainer.js.map +1 -0
- package/lib/module/skia/types/Recorder.d.ts +1 -1
- package/lib/module/skia/types/Recorder.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +3 -39
- package/lib/module/sksg/Container.js +2 -192
- package/lib/module/sksg/Container.js.map +1 -1
- package/lib/module/sksg/Container.native.d.ts +14 -0
- package/lib/module/sksg/Container.native.js +73 -0
- package/lib/module/sksg/Container.native.js.map +1 -0
- package/lib/module/sksg/Container.web.d.ts +14 -0
- package/lib/module/sksg/Container.web.js +83 -0
- package/lib/module/sksg/Container.web.js.map +1 -0
- package/lib/module/sksg/HostConfig.d.ts +1 -1
- package/lib/module/sksg/HostConfig.js.map +1 -1
- package/lib/module/sksg/Reconciler.js.map +1 -1
- package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
- package/lib/module/sksg/Recorder/ReanimatedRecorder.js +2 -2
- package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
- package/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
- package/lib/module/sksg/Recorder/Recorder.js +3 -2
- package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
- package/lib/module/sksg/Recorder/Visitor.js +2 -2
- package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +3 -3
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/sksg/StaticContainer.d.ts +24 -0
- package/lib/module/sksg/StaticContainer.js +62 -0
- package/lib/module/sksg/StaticContainer.js.map +1 -0
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +2 -42
- package/lib/typescript/lib/commonjs/sksg/Container.native.d.ts +11 -0
- package/lib/typescript/lib/commonjs/sksg/Container.web.d.ts +15 -0
- package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +1 -45
- package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
- package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
- package/lib/typescript/lib/commonjs/sksg/StaticContainer.d.ts +23 -0
- package/lib/typescript/lib/module/sksg/Container.d.ts +2 -42
- package/lib/typescript/lib/module/sksg/Container.native.d.ts +11 -0
- package/lib/typescript/lib/module/sksg/Container.web.d.ts +15 -0
- package/lib/typescript/lib/module/sksg/Reconciler.d.ts +1 -45
- package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
- package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
- package/lib/typescript/lib/module/sksg/StaticContainer.d.ts +22 -0
- package/lib/typescript/src/skia/types/Recorder.d.ts +1 -1
- package/lib/typescript/src/sksg/Container.d.ts +3 -39
- package/lib/typescript/src/sksg/Container.native.d.ts +14 -0
- package/lib/typescript/src/sksg/Container.web.d.ts +14 -0
- package/lib/typescript/src/sksg/HostConfig.d.ts +1 -1
- package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
- package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +1 -1
- package/lib/typescript/src/sksg/StaticContainer.d.ts +24 -0
- package/package.json +1 -1
- package/src/renderer/__tests__/e2e/Shader.spec.tsx +93 -0
- package/src/skia/types/Recorder.ts +5 -1
- package/src/sksg/Container.native.ts +86 -0
- package/src/sksg/Container.ts +3 -223
- package/src/sksg/Container.web.ts +95 -0
- package/src/sksg/HostConfig.ts +1 -1
- package/src/sksg/Reconciler.ts +1 -1
- package/src/sksg/Recorder/ReanimatedRecorder.ts +6 -2
- package/src/sksg/Recorder/Recorder.ts +6 -2
- package/src/sksg/Recorder/Visitor.ts +2 -2
- package/src/sksg/Recorder/commands/Shaders.ts +8 -3
- package/src/sksg/StaticContainer.ts +83 -0
@@ -119,6 +119,21 @@ public:
|
|
119
119
|
return result;
|
120
120
|
}
|
121
121
|
|
122
|
+
std::vector<sk_sp<SkShader>> popShaders(int count) {
|
123
|
+
std::vector<sk_sp<SkShader>> result;
|
124
|
+
int actualCount = std::min(count, static_cast<int>(shaders.size()));
|
125
|
+
|
126
|
+
if (actualCount > 0) {
|
127
|
+
// Get the last 'actualCount' shaders
|
128
|
+
auto start = shaders.end() - actualCount;
|
129
|
+
result.assign(start, shaders.end());
|
130
|
+
// Remove them from the original vector
|
131
|
+
shaders.erase(start, shaders.end());
|
132
|
+
}
|
133
|
+
|
134
|
+
return result;
|
135
|
+
}
|
136
|
+
|
122
137
|
void composeImageFilter() {
|
123
138
|
if (imageFilters.size() >= 2) {
|
124
139
|
auto outer = imageFilters.back();
|
@@ -121,7 +121,8 @@ public:
|
|
121
121
|
JSI_HOST_FUNCTION(pushShader) {
|
122
122
|
getObject()->pushShader(runtime,
|
123
123
|
arguments[0].asString(runtime).utf8(runtime),
|
124
|
-
arguments[1].asObject(runtime)
|
124
|
+
arguments[1].asObject(runtime),
|
125
|
+
arguments[2].asNumber());
|
125
126
|
return jsi::Value::undefined();
|
126
127
|
}
|
127
128
|
|
@@ -35,10 +35,10 @@ public:
|
|
35
35
|
}
|
36
36
|
|
37
37
|
void pushShader(jsi::Runtime &runtime, const std::string &nodeType,
|
38
|
-
const jsi::Object &props) {
|
38
|
+
const jsi::Object &props, int children) {
|
39
39
|
if (nodeType == "skShader") {
|
40
40
|
commands.push_back(
|
41
|
-
std::make_unique<PushShaderCmd>(runtime, props, variables));
|
41
|
+
std::make_unique<PushShaderCmd>(runtime, props, variables, children));
|
42
42
|
} else if (nodeType == "skImageShader") {
|
43
43
|
commands.push_back(
|
44
44
|
std::make_unique<PushImageShaderCmd>(runtime, props, variables));
|
@@ -21,11 +21,12 @@ struct PushShaderProps : TransformProps {
|
|
21
21
|
class PushShaderCmd : public Command {
|
22
22
|
private:
|
23
23
|
PushShaderProps props;
|
24
|
+
int children;
|
24
25
|
|
25
26
|
public:
|
26
27
|
PushShaderCmd(jsi::Runtime &runtime, const jsi::Object &object,
|
27
|
-
Variables &variables)
|
28
|
-
: Command(CommandType::PushShader, "skShader") {
|
28
|
+
Variables &variables, int children)
|
29
|
+
: Command(CommandType::PushShader, "skShader"), children(children) {
|
29
30
|
convertProperty(runtime, object, "transform", props.transform, variables);
|
30
31
|
convertProperty(runtime, object, "origin", props.origin, variables);
|
31
32
|
convertProperty(runtime, object, "matrix", props.matrix, variables);
|
@@ -39,9 +40,9 @@ public:
|
|
39
40
|
auto m3 = processTransform(props.matrix, props.transform, props.origin);
|
40
41
|
auto uniformsData = processUniforms(source, props.uniforms);
|
41
42
|
|
42
|
-
std::vector<sk_sp<SkShader>>
|
43
|
-
auto shader = source->makeShader(std::move(uniformsData),
|
44
|
-
|
43
|
+
std::vector<sk_sp<SkShader>> childrenShaders = ctx->popShaders(children);
|
44
|
+
auto shader = source->makeShader(std::move(uniformsData), childrenShaders.data(),
|
45
|
+
childrenShaders.size(), &m3);
|
45
46
|
|
46
47
|
ctx->shaders.push_back(shader);
|
47
48
|
}
|
@@ -12,7 +12,7 @@ export interface BaseRecorder {
|
|
12
12
|
pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>): void;
|
13
13
|
pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>): void;
|
14
14
|
pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>): void;
|
15
|
-
pushShader(shaderType: NodeType, props: AnimatedProps<unknown
|
15
|
+
pushShader(shaderType: NodeType, props: AnimatedProps<unknown>, children: number): void;
|
16
16
|
pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void;
|
17
17
|
composePathEffect(): void;
|
18
18
|
composeColorFilter(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":[],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type {\n TextProps,\n AtlasProps,\n BlurMaskFilterProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n CTMProps,\n DiffRectProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n NodeType,\n OvalProps,\n PaintProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n VerticesProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer/processors/Animations/Animations\";\n\nimport type { SkPicture } from \"./Picture\";\n\nexport interface BaseRecorder {\n saveGroup(): void;\n restoreGroup(): void;\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;\n restorePaint(): void;\n restorePaintDeclaration(): void;\n materializePaint(): void;\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>): void;\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void;\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void;\n pushShader(shaderType: NodeType
|
1
|
+
{"version":3,"names":[],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type {\n TextProps,\n AtlasProps,\n BlurMaskFilterProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n CTMProps,\n DiffRectProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n NodeType,\n OvalProps,\n PaintProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n VerticesProps,\n SkottieProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer/processors/Animations/Animations\";\n\nimport type { SkPicture } from \"./Picture\";\n\nexport interface BaseRecorder {\n saveGroup(): void;\n restoreGroup(): void;\n savePaint(props: AnimatedProps<PaintProps>, standalone: boolean): void;\n restorePaint(): void;\n restorePaintDeclaration(): void;\n materializePaint(): void;\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>): void;\n pushImageFilter(\n imageFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void;\n pushColorFilter(\n colorFilterType: NodeType,\n props: AnimatedProps<unknown>\n ): void;\n pushShader(\n shaderType: NodeType,\n props: AnimatedProps<unknown>,\n children: number\n ): void;\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>): void;\n composePathEffect(): void;\n composeColorFilter(): void;\n composeImageFilter(): void;\n saveCTM(props: AnimatedProps<CTMProps>): void;\n restoreCTM(): void;\n drawPaint(): void;\n saveLayer(): void;\n saveBackdropFilter(): void;\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ): void;\n drawImage(props: AnimatedProps<ImageProps>): void;\n drawCircle(props: AnimatedProps<CircleProps>): void;\n drawPoints(props: AnimatedProps<PointsProps>): void;\n drawPath(props: AnimatedProps<PathProps>): void;\n drawRect(props: AnimatedProps<RectProps>): void;\n drawRRect(props: AnimatedProps<RoundedRectProps>): void;\n drawOval(props: AnimatedProps<OvalProps>): void;\n drawLine(props: AnimatedProps<LineProps>): void;\n drawPatch(props: AnimatedProps<PatchProps>): void;\n drawVertices(props: AnimatedProps<VerticesProps>): void;\n drawDiffRect(props: AnimatedProps<DiffRectProps>): void;\n drawText(props: AnimatedProps<TextProps>): void;\n drawTextPath(props: AnimatedProps<TextPathProps>): void;\n drawTextBlob(props: AnimatedProps<TextBlobProps>): void;\n drawGlyphs(props: AnimatedProps<GlyphsProps>): void;\n drawPicture(props: AnimatedProps<PictureProps>): void;\n drawImageSVG(props: AnimatedProps<ImageSVGProps>): void;\n drawParagraph(props: AnimatedProps<ParagraphProps>): void;\n drawSkottie(props: AnimatedProps<SkottieProps>): void;\n drawAtlas(props: AnimatedProps<AtlasProps>): void;\n}\n\nexport interface JsiRecorder extends BaseRecorder {\n play(): SkPicture;\n applyUpdates(variables: SharedValue<unknown>[]): void;\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -1,40 +1,4 @@
|
|
1
1
|
import type { SharedValue } from "react-native-reanimated";
|
2
|
-
import type { Skia,
|
3
|
-
import
|
4
|
-
|
5
|
-
import "../views/api";
|
6
|
-
export declare abstract class Container {
|
7
|
-
protected Skia: Skia;
|
8
|
-
private _root;
|
9
|
-
protected recording: Recording | null;
|
10
|
-
protected unmounted: boolean;
|
11
|
-
constructor(Skia: Skia);
|
12
|
-
get root(): Node[];
|
13
|
-
set root(value: Node[]);
|
14
|
-
mount(): void;
|
15
|
-
unmount(): void;
|
16
|
-
drawOnCanvas(canvas: SkCanvas): void;
|
17
|
-
abstract redraw(): void;
|
18
|
-
}
|
19
|
-
declare class StaticContainer extends Container {
|
20
|
-
private nativeId;
|
21
|
-
private onSize?;
|
22
|
-
constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
|
23
|
-
redraw(): void;
|
24
|
-
}
|
25
|
-
declare class ReanimatedContainer extends Container {
|
26
|
-
private nativeId;
|
27
|
-
private onSize?;
|
28
|
-
private mapperId;
|
29
|
-
constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
|
30
|
-
redraw(): void;
|
31
|
-
}
|
32
|
-
declare class NativeReanimatedContainer extends Container {
|
33
|
-
private nativeId;
|
34
|
-
private onSize?;
|
35
|
-
private mapperId;
|
36
|
-
constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
|
37
|
-
redraw(): void;
|
38
|
-
}
|
39
|
-
export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer | ReanimatedContainer | NativeReanimatedContainer;
|
40
|
-
export {};
|
2
|
+
import type { Skia, SkSize } from "../skia/types";
|
3
|
+
import { StaticContainer } from "./StaticContainer";
|
4
|
+
export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer;
|
@@ -3,202 +3,10 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.createContainer =
|
7
|
-
var
|
8
|
-
var _renderHelpers = require("../external/reanimated/renderHelpers");
|
9
|
-
var _Recorder = require("./Recorder/Recorder");
|
10
|
-
var _Visitor = require("./Recorder/Visitor");
|
11
|
-
var _Player = require("./Recorder/Player");
|
12
|
-
var _DrawingContext = require("./Recorder/DrawingContext");
|
13
|
-
var _ReanimatedRecorder = require("./Recorder/ReanimatedRecorder");
|
14
|
-
require("../views/api");
|
15
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
16
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
17
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
18
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
19
|
-
const drawOnscreen = (Skia, nativeId, recording, onSize) => {
|
20
|
-
"worklet";
|
21
|
-
|
22
|
-
if (onSize) {
|
23
|
-
const size = SkiaViewApi.size(nativeId);
|
24
|
-
if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
|
25
|
-
onSize.value = size;
|
26
|
-
}
|
27
|
-
}
|
28
|
-
const rec = Skia.PictureRecorder();
|
29
|
-
const canvas = rec.beginRecording();
|
30
|
-
//const start = performance.now();
|
31
|
-
|
32
|
-
const ctx = (0, _DrawingContext.createDrawingContext)(Skia, recording.paintPool, canvas);
|
33
|
-
(0, _Player.replay)(ctx, recording.commands);
|
34
|
-
const picture = rec.finishRecordingAsPicture();
|
35
|
-
//const end = performance.now();
|
36
|
-
//console.log("Recording time: ", end - start);
|
37
|
-
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
|
38
|
-
};
|
39
|
-
const nativeDrawOnscreen = (nativeId, recorder, onSize) => {
|
40
|
-
"worklet";
|
41
|
-
|
42
|
-
//const start = performance.now();
|
43
|
-
if (onSize) {
|
44
|
-
const size = SkiaViewApi.size(nativeId);
|
45
|
-
if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
|
46
|
-
onSize.value = size;
|
47
|
-
}
|
48
|
-
}
|
49
|
-
const picture = recorder.play();
|
50
|
-
//const end = performance.now();
|
51
|
-
//console.log("Recording time: ", end - start);
|
52
|
-
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
|
53
|
-
};
|
54
|
-
class Container {
|
55
|
-
constructor(Skia) {
|
56
|
-
this.Skia = Skia;
|
57
|
-
_defineProperty(this, "_root", []);
|
58
|
-
_defineProperty(this, "recording", null);
|
59
|
-
_defineProperty(this, "unmounted", false);
|
60
|
-
}
|
61
|
-
get root() {
|
62
|
-
return this._root;
|
63
|
-
}
|
64
|
-
set root(value) {
|
65
|
-
this._root = value;
|
66
|
-
}
|
67
|
-
mount() {
|
68
|
-
this.unmounted = false;
|
69
|
-
}
|
70
|
-
unmount() {
|
71
|
-
this.unmounted = true;
|
72
|
-
}
|
73
|
-
drawOnCanvas(canvas) {
|
74
|
-
if (!this.recording) {
|
75
|
-
throw new Error("No recording to draw");
|
76
|
-
}
|
77
|
-
const ctx = (0, _DrawingContext.createDrawingContext)(this.Skia, this.recording.paintPool, canvas);
|
78
|
-
(0, _Player.replay)(ctx, this.recording.commands);
|
79
|
-
}
|
80
|
-
}
|
81
|
-
exports.Container = Container;
|
82
|
-
class StaticContainer extends Container {
|
83
|
-
constructor(Skia, nativeId, onSize) {
|
84
|
-
super(Skia);
|
85
|
-
this.nativeId = nativeId;
|
86
|
-
this.onSize = onSize;
|
87
|
-
}
|
88
|
-
redraw() {
|
89
|
-
const recorder = new _Recorder.Recorder();
|
90
|
-
(0, _Visitor.visit)(recorder, this.root);
|
91
|
-
this.recording = recorder.getRecording();
|
92
|
-
const isOnScreen = this.nativeId !== -1;
|
93
|
-
if (isOnScreen) {
|
94
|
-
if (this.onSize) {
|
95
|
-
const size = SkiaViewApi.size(this.nativeId);
|
96
|
-
if (size.width !== this.onSize.value.width || size.height !== this.onSize.value.height) {
|
97
|
-
this.onSize.value = size;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
const rec = this.Skia.PictureRecorder();
|
101
|
-
const canvas = rec.beginRecording();
|
102
|
-
this.drawOnCanvas(canvas);
|
103
|
-
const picture = rec.finishRecordingAsPicture();
|
104
|
-
SkiaViewApi.setJsiProperty(this.nativeId, "picture", picture);
|
105
|
-
}
|
106
|
-
}
|
107
|
-
}
|
108
|
-
class ReanimatedContainer extends Container {
|
109
|
-
constructor(Skia, nativeId, onSize) {
|
110
|
-
super(Skia);
|
111
|
-
this.nativeId = nativeId;
|
112
|
-
this.onSize = onSize;
|
113
|
-
_defineProperty(this, "mapperId", null);
|
114
|
-
}
|
115
|
-
redraw() {
|
116
|
-
if (this.mapperId !== null) {
|
117
|
-
_ReanimatedProxy.default.stopMapper(this.mapperId);
|
118
|
-
}
|
119
|
-
if (this.unmounted) {
|
120
|
-
return;
|
121
|
-
}
|
122
|
-
const recorder = new _Recorder.Recorder();
|
123
|
-
(0, _Visitor.visit)(recorder, this.root);
|
124
|
-
const record = recorder.getRecording();
|
125
|
-
const {
|
126
|
-
animationValues
|
127
|
-
} = record;
|
128
|
-
this.recording = {
|
129
|
-
commands: record.commands,
|
130
|
-
paintPool: record.paintPool
|
131
|
-
};
|
132
|
-
const {
|
133
|
-
nativeId,
|
134
|
-
Skia,
|
135
|
-
recording
|
136
|
-
} = this;
|
137
|
-
if (animationValues.size > 0) {
|
138
|
-
this.mapperId = _ReanimatedProxy.default.startMapper(() => {
|
139
|
-
"worklet";
|
140
|
-
|
141
|
-
drawOnscreen(Skia, nativeId, recording);
|
142
|
-
}, Array.from(animationValues));
|
143
|
-
}
|
144
|
-
_ReanimatedProxy.default.runOnUI(onSize => {
|
145
|
-
"worklet";
|
146
|
-
|
147
|
-
drawOnscreen(Skia, nativeId, recording, onSize);
|
148
|
-
})(this.onSize);
|
149
|
-
}
|
150
|
-
}
|
151
|
-
class NativeReanimatedContainer extends Container {
|
152
|
-
constructor(Skia, nativeId, onSize) {
|
153
|
-
super(Skia);
|
154
|
-
this.nativeId = nativeId;
|
155
|
-
this.onSize = onSize;
|
156
|
-
_defineProperty(this, "mapperId", null);
|
157
|
-
}
|
158
|
-
redraw() {
|
159
|
-
if (this.mapperId !== null) {
|
160
|
-
_ReanimatedProxy.default.stopMapper(this.mapperId);
|
161
|
-
}
|
162
|
-
if (this.unmounted) {
|
163
|
-
return;
|
164
|
-
}
|
165
|
-
const {
|
166
|
-
nativeId,
|
167
|
-
Skia
|
168
|
-
} = this;
|
169
|
-
const recorder = new _ReanimatedRecorder.ReanimatedRecorder(Skia);
|
170
|
-
(0, _Visitor.visit)(recorder, this.root);
|
171
|
-
const sharedValues = recorder.getSharedValues();
|
172
|
-
const sharedRecorder = recorder.getRecorder();
|
173
|
-
_ReanimatedProxy.default.runOnUI(onSize => {
|
174
|
-
"worklet";
|
175
|
-
|
176
|
-
nativeDrawOnscreen(nativeId, sharedRecorder, onSize);
|
177
|
-
})(this.onSize);
|
178
|
-
if (sharedValues.length > 0) {
|
179
|
-
const {
|
180
|
-
onSize
|
181
|
-
} = this;
|
182
|
-
this.mapperId = _ReanimatedProxy.default.startMapper(() => {
|
183
|
-
"worklet";
|
184
|
-
|
185
|
-
sharedRecorder.applyUpdates(sharedValues);
|
186
|
-
nativeDrawOnscreen(nativeId, sharedRecorder, onSize);
|
187
|
-
}, sharedValues);
|
188
|
-
}
|
189
|
-
}
|
190
|
-
}
|
6
|
+
exports.createContainer = void 0;
|
7
|
+
var _StaticContainer = require("./StaticContainer");
|
191
8
|
const createContainer = (Skia, nativeId, onSize) => {
|
192
|
-
|
193
|
-
if (_renderHelpers.HAS_REANIMATED_3 && nativeId !== -1) {
|
194
|
-
if (!web) {
|
195
|
-
return new NativeReanimatedContainer(Skia, nativeId, onSize);
|
196
|
-
} else {
|
197
|
-
return new ReanimatedContainer(Skia, nativeId, onSize);
|
198
|
-
}
|
199
|
-
} else {
|
200
|
-
return new StaticContainer(Skia, nativeId);
|
201
|
-
}
|
9
|
+
return new _StaticContainer.StaticContainer(Skia, nativeId, onSize);
|
202
10
|
};
|
203
11
|
exports.createContainer = createContainer;
|
204
12
|
//# sourceMappingURL=Container.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_ReanimatedProxy","_interopRequireDefault","require","_renderHelpers","_Recorder","_Visitor","_Player","_DrawingContext","_ReanimatedRecorder","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","drawOnscreen","Skia","nativeId","recording","onSize","size","SkiaViewApi","width","height","rec","PictureRecorder","canvas","beginRecording","ctx","createDrawingContext","paintPool","replay","commands","picture","finishRecordingAsPicture","setJsiProperty","nativeDrawOnscreen","recorder","play","Container","constructor","root","_root","mount","unmounted","unmount","drawOnCanvas","Error","exports","StaticContainer","redraw","Recorder","visit","getRecording","isOnScreen","ReanimatedContainer","mapperId","Rea","stopMapper","record","animationValues","startMapper","Array","from","runOnUI","NativeReanimatedContainer","ReanimatedRecorder","sharedValues","getSharedValues","sharedRecorder","getRecorder","length","applyUpdates","createContainer","web","global","HAS_REANIMATED_3"],"sources":["Container.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkCanvas, SkSize } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\nimport type { JsiRecorder } from \"../skia/types/Recorder\";\n\nimport type { Node } from \"./Node\";\nimport type { Recording } from \"./Recorder/Recorder\";\nimport { Recorder } from \"./Recorder/Recorder\";\nimport { visit } from \"./Recorder/Visitor\";\nimport { replay } from \"./Recorder/Player\";\nimport { createDrawingContext } from \"./Recorder/DrawingContext\";\nimport { ReanimatedRecorder } from \"./Recorder/ReanimatedRecorder\";\n\nimport \"../views/api\";\n\nconst drawOnscreen = (\n Skia: Skia,\n nativeId: number,\n recording: Recording,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n //const start = performance.now();\n\n const ctx = createDrawingContext(Skia, recording.paintPool, canvas);\n replay(ctx, recording.commands);\n const picture = rec.finishRecordingAsPicture();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nconst nativeDrawOnscreen = (\n nativeId: number,\n recorder: JsiRecorder,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n\n //const start = performance.now();\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const picture = recorder.play();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nexport abstract class Container {\n private _root: Node[] = [];\n protected recording: Recording | null = null;\n protected unmounted = false;\n\n constructor(protected Skia: Skia) {}\n\n get root() {\n return this._root;\n }\n\n set root(value: Node[]) {\n this._root = value;\n }\n\n mount() {\n this.unmounted = false;\n }\n\n unmount() {\n this.unmounted = true;\n }\n\n drawOnCanvas(canvas: SkCanvas) {\n if (!this.recording) {\n throw new Error(\"No recording to draw\");\n }\n const ctx = createDrawingContext(\n this.Skia,\n this.recording.paintPool,\n canvas\n );\n replay(ctx, this.recording.commands);\n }\n\n abstract redraw(): void;\n}\n\nclass StaticContainer extends Container {\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n const recorder = new Recorder();\n visit(recorder, this.root);\n this.recording = recorder.getRecording();\n const isOnScreen = this.nativeId !== -1;\n if (isOnScreen) {\n if (this.onSize) {\n const size = SkiaViewApi.size(this.nativeId);\n if (\n size.width !== this.onSize.value.width ||\n size.height !== this.onSize.value.height\n ) {\n this.onSize.value = size;\n }\n }\n const rec = this.Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n this.drawOnCanvas(canvas);\n const picture = rec.finishRecordingAsPicture();\n SkiaViewApi.setJsiProperty(this.nativeId, \"picture\", picture);\n }\n }\n}\n\nclass ReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const recorder = new Recorder();\n visit(recorder, this.root);\n const record = recorder.getRecording();\n const { animationValues } = record;\n this.recording = {\n commands: record.commands,\n paintPool: record.paintPool,\n };\n const { nativeId, Skia, recording } = this;\n if (animationValues.size > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!);\n }, Array.from(animationValues));\n }\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!, onSize);\n })(this.onSize);\n }\n}\n\nclass NativeReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const { nativeId, Skia } = this;\n const recorder = new ReanimatedRecorder(Skia);\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n nativeDrawOnscreen(nativeId, sharedRecorder, onSize);\n })(this.onSize);\n if (sharedValues.length > 0) {\n const { onSize } = this;\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, onSize);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n const web = global.SkiaViewApi && global.SkiaViewApi.web;\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n if (!web) {\n return new NativeReanimatedContainer(Skia, nativeId, onSize);\n } else {\n return new ReanimatedContainer(Skia, nativeId, onSize);\n }\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_StaticContainer","require","createContainer","Skia","nativeId","onSize","StaticContainer","exports"],"sources":["Container.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Skia, SkSize } from \"../skia/types\";\n\nimport { StaticContainer } from \"./StaticContainer\";\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n return new StaticContainer(Skia, nativeId, onSize);\n};\n"],"mappings":";;;;;;AAIA,IAAAA,gBAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAGA,CAC7BC,IAAU,EACVC,QAAgB,EAChBC,MAA4B,KACzB;EACH,OAAO,IAAIC,gCAAe,CAACH,IAAI,EAAEC,QAAQ,EAAEC,MAAM,CAAC;AACpD,CAAC;AAACE,OAAA,CAAAL,eAAA,GAAAA,eAAA","ignoreList":[]}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { SharedValue } from "react-native-reanimated";
|
2
|
+
import type { Skia, SkSize } from "../skia/types";
|
3
|
+
import { Container, StaticContainer } from "./StaticContainer";
|
4
|
+
import "../skia/NativeSetup";
|
5
|
+
import "../views/api";
|
6
|
+
declare class NativeReanimatedContainer extends Container {
|
7
|
+
private nativeId;
|
8
|
+
private onSize?;
|
9
|
+
private mapperId;
|
10
|
+
constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
|
11
|
+
redraw(): void;
|
12
|
+
}
|
13
|
+
export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer | NativeReanimatedContainer;
|
14
|
+
export {};
|
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createContainer = void 0;
|
7
|
+
var _ReanimatedProxy = _interopRequireDefault(require("../external/reanimated/ReanimatedProxy"));
|
8
|
+
var _renderHelpers = require("../external/reanimated/renderHelpers");
|
9
|
+
var _ReanimatedRecorder = require("./Recorder/ReanimatedRecorder");
|
10
|
+
var _StaticContainer = require("./StaticContainer");
|
11
|
+
var _Visitor = require("./Recorder/Visitor");
|
12
|
+
require("../skia/NativeSetup");
|
13
|
+
require("../views/api");
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
15
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
17
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
18
|
+
const nativeDrawOnscreen = (nativeId, recorder, onSize) => {
|
19
|
+
"worklet";
|
20
|
+
|
21
|
+
//const start = performance.now();
|
22
|
+
if (onSize) {
|
23
|
+
const size = SkiaViewApi.size(nativeId);
|
24
|
+
if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
|
25
|
+
onSize.value = size;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
const picture = recorder.play();
|
29
|
+
//const end = performance.now();
|
30
|
+
//console.log("Recording time: ", end - start);
|
31
|
+
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
|
32
|
+
};
|
33
|
+
class NativeReanimatedContainer extends _StaticContainer.Container {
|
34
|
+
constructor(Skia, nativeId, onSize) {
|
35
|
+
super(Skia);
|
36
|
+
this.nativeId = nativeId;
|
37
|
+
this.onSize = onSize;
|
38
|
+
_defineProperty(this, "mapperId", null);
|
39
|
+
}
|
40
|
+
redraw() {
|
41
|
+
if (this.mapperId !== null) {
|
42
|
+
_ReanimatedProxy.default.stopMapper(this.mapperId);
|
43
|
+
}
|
44
|
+
if (this.unmounted) {
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
const {
|
48
|
+
nativeId,
|
49
|
+
Skia
|
50
|
+
} = this;
|
51
|
+
const recorder = new _ReanimatedRecorder.ReanimatedRecorder(Skia);
|
52
|
+
(0, _Visitor.visit)(recorder, this.root);
|
53
|
+
const sharedValues = recorder.getSharedValues();
|
54
|
+
const sharedRecorder = recorder.getRecorder();
|
55
|
+
_ReanimatedProxy.default.runOnUI(onSize => {
|
56
|
+
"worklet";
|
57
|
+
|
58
|
+
nativeDrawOnscreen(nativeId, sharedRecorder, onSize);
|
59
|
+
})(this.onSize);
|
60
|
+
if (sharedValues.length > 0) {
|
61
|
+
const {
|
62
|
+
onSize
|
63
|
+
} = this;
|
64
|
+
this.mapperId = _ReanimatedProxy.default.startMapper(() => {
|
65
|
+
"worklet";
|
66
|
+
|
67
|
+
sharedRecorder.applyUpdates(sharedValues);
|
68
|
+
nativeDrawOnscreen(nativeId, sharedRecorder, onSize);
|
69
|
+
}, sharedValues);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
const createContainer = (Skia, nativeId, onSize) => {
|
74
|
+
if (_renderHelpers.HAS_REANIMATED_3 && nativeId !== -1) {
|
75
|
+
return new NativeReanimatedContainer(Skia, nativeId, onSize);
|
76
|
+
} else {
|
77
|
+
return new _StaticContainer.StaticContainer(Skia, nativeId);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
exports.createContainer = createContainer;
|
81
|
+
//# sourceMappingURL=Container.native.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_ReanimatedProxy","_interopRequireDefault","require","_renderHelpers","_ReanimatedRecorder","_StaticContainer","_Visitor","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","nativeDrawOnscreen","nativeId","recorder","onSize","size","SkiaViewApi","width","height","picture","play","setJsiProperty","NativeReanimatedContainer","Container","constructor","Skia","redraw","mapperId","Rea","stopMapper","unmounted","ReanimatedRecorder","visit","root","sharedValues","getSharedValues","sharedRecorder","getRecorder","runOnUI","length","startMapper","applyUpdates","createContainer","HAS_REANIMATED_3","StaticContainer","exports"],"sources":["Container.native.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkSize } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\nimport type { JsiRecorder } from \"../skia/types/Recorder\";\n\nimport { ReanimatedRecorder } from \"./Recorder/ReanimatedRecorder\";\nimport { Container, StaticContainer } from \"./StaticContainer\";\nimport { visit } from \"./Recorder/Visitor\";\n\nimport \"../skia/NativeSetup\";\nimport \"../views/api\";\n\nconst nativeDrawOnscreen = (\n nativeId: number,\n recorder: JsiRecorder,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n\n //const start = performance.now();\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const picture = recorder.play();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nclass NativeReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const { nativeId, Skia } = this;\n const recorder = new ReanimatedRecorder(Skia);\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n nativeDrawOnscreen(nativeId, sharedRecorder, onSize);\n })(this.onSize);\n if (sharedValues.length > 0) {\n const { onSize } = this;\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, onSize);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new NativeReanimatedContainer(Skia, nativeId, onSize);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import type { SharedValue } from "react-native-reanimated";
|
2
|
+
import type { Skia, SkSize } from "../skia/types";
|
3
|
+
import { Container, StaticContainer } from "./StaticContainer";
|
4
|
+
import "../skia/NativeSetup";
|
5
|
+
import "../views/api";
|
6
|
+
declare class ReanimatedContainer extends Container {
|
7
|
+
private nativeId;
|
8
|
+
private onSize?;
|
9
|
+
private mapperId;
|
10
|
+
constructor(Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize> | undefined);
|
11
|
+
redraw(): void;
|
12
|
+
}
|
13
|
+
export declare const createContainer: (Skia: Skia, nativeId: number, onSize?: SharedValue<SkSize>) => StaticContainer | ReanimatedContainer;
|
14
|
+
export {};
|
@@ -0,0 +1,91 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createContainer = void 0;
|
7
|
+
var _ReanimatedProxy = _interopRequireDefault(require("../external/reanimated/ReanimatedProxy"));
|
8
|
+
var _renderHelpers = require("../external/reanimated/renderHelpers");
|
9
|
+
var _Recorder = require("./Recorder/Recorder");
|
10
|
+
var _Visitor = require("./Recorder/Visitor");
|
11
|
+
var _Player = require("./Recorder/Player");
|
12
|
+
var _DrawingContext = require("./Recorder/DrawingContext");
|
13
|
+
var _StaticContainer = require("./StaticContainer");
|
14
|
+
require("../skia/NativeSetup");
|
15
|
+
require("../views/api");
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
17
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
18
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
19
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
20
|
+
const drawOnscreen = (Skia, nativeId, recording, onSize) => {
|
21
|
+
"worklet";
|
22
|
+
|
23
|
+
if (onSize) {
|
24
|
+
const size = SkiaViewApi.size(nativeId);
|
25
|
+
if (size.width !== onSize.value.width || size.height !== onSize.value.height) {
|
26
|
+
onSize.value = size;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
const rec = Skia.PictureRecorder();
|
30
|
+
const canvas = rec.beginRecording();
|
31
|
+
//const start = performance.now();
|
32
|
+
|
33
|
+
const ctx = (0, _DrawingContext.createDrawingContext)(Skia, recording.paintPool, canvas);
|
34
|
+
(0, _Player.replay)(ctx, recording.commands);
|
35
|
+
const picture = rec.finishRecordingAsPicture();
|
36
|
+
//const end = performance.now();
|
37
|
+
//console.log("Recording time: ", end - start);
|
38
|
+
SkiaViewApi.setJsiProperty(nativeId, "picture", picture);
|
39
|
+
};
|
40
|
+
class ReanimatedContainer extends _StaticContainer.Container {
|
41
|
+
constructor(Skia, nativeId, onSize) {
|
42
|
+
super(Skia);
|
43
|
+
this.nativeId = nativeId;
|
44
|
+
this.onSize = onSize;
|
45
|
+
_defineProperty(this, "mapperId", null);
|
46
|
+
}
|
47
|
+
redraw() {
|
48
|
+
if (this.mapperId !== null) {
|
49
|
+
_ReanimatedProxy.default.stopMapper(this.mapperId);
|
50
|
+
}
|
51
|
+
if (this.unmounted) {
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
const recorder = new _Recorder.Recorder();
|
55
|
+
(0, _Visitor.visit)(recorder, this.root);
|
56
|
+
const record = recorder.getRecording();
|
57
|
+
const {
|
58
|
+
animationValues
|
59
|
+
} = record;
|
60
|
+
this.recording = {
|
61
|
+
commands: record.commands,
|
62
|
+
paintPool: record.paintPool
|
63
|
+
};
|
64
|
+
const {
|
65
|
+
nativeId,
|
66
|
+
Skia,
|
67
|
+
recording
|
68
|
+
} = this;
|
69
|
+
if (animationValues.size > 0) {
|
70
|
+
this.mapperId = _ReanimatedProxy.default.startMapper(() => {
|
71
|
+
"worklet";
|
72
|
+
|
73
|
+
drawOnscreen(Skia, nativeId, recording);
|
74
|
+
}, Array.from(animationValues));
|
75
|
+
}
|
76
|
+
_ReanimatedProxy.default.runOnUI(onSize => {
|
77
|
+
"worklet";
|
78
|
+
|
79
|
+
drawOnscreen(Skia, nativeId, recording, onSize);
|
80
|
+
})(this.onSize);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
const createContainer = (Skia, nativeId, onSize) => {
|
84
|
+
if (_renderHelpers.HAS_REANIMATED_3 && nativeId !== -1) {
|
85
|
+
return new ReanimatedContainer(Skia, nativeId, onSize);
|
86
|
+
} else {
|
87
|
+
return new _StaticContainer.StaticContainer(Skia, nativeId);
|
88
|
+
}
|
89
|
+
};
|
90
|
+
exports.createContainer = createContainer;
|
91
|
+
//# sourceMappingURL=Container.web.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_ReanimatedProxy","_interopRequireDefault","require","_renderHelpers","_Recorder","_Visitor","_Player","_DrawingContext","_StaticContainer","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","drawOnscreen","Skia","nativeId","recording","onSize","size","SkiaViewApi","width","height","rec","PictureRecorder","canvas","beginRecording","ctx","createDrawingContext","paintPool","replay","commands","picture","finishRecordingAsPicture","setJsiProperty","ReanimatedContainer","Container","constructor","redraw","mapperId","Rea","stopMapper","unmounted","recorder","Recorder","visit","root","record","getRecording","animationValues","startMapper","Array","from","runOnUI","createContainer","HAS_REANIMATED_3","StaticContainer","exports"],"sources":["Container.web.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkSize } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\n\nimport type { Recording } from \"./Recorder/Recorder\";\nimport { Recorder } from \"./Recorder/Recorder\";\nimport { visit } from \"./Recorder/Visitor\";\nimport { replay } from \"./Recorder/Player\";\nimport { createDrawingContext } from \"./Recorder/DrawingContext\";\nimport { Container, StaticContainer } from \"./StaticContainer\";\n\nimport \"../skia/NativeSetup\";\nimport \"../views/api\";\n\nconst drawOnscreen = (\n Skia: Skia,\n nativeId: number,\n recording: Recording,\n onSize?: SharedValue<SkSize>\n) => {\n \"worklet\";\n if (onSize) {\n const size = SkiaViewApi.size(nativeId);\n if (\n size.width !== onSize.value.width ||\n size.height !== onSize.value.height\n ) {\n onSize.value = size;\n }\n }\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n //const start = performance.now();\n\n const ctx = createDrawingContext(Skia, recording.paintPool, canvas);\n replay(ctx, recording.commands);\n const picture = rec.finishRecordingAsPicture();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n};\n\nclass ReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(\n Skia: Skia,\n private nativeId: number,\n private onSize?: SharedValue<SkSize>\n ) {\n super(Skia);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n const recorder = new Recorder();\n visit(recorder, this.root);\n const record = recorder.getRecording();\n const { animationValues } = record;\n this.recording = {\n commands: record.commands,\n paintPool: record.paintPool,\n };\n const { nativeId, Skia, recording } = this;\n if (animationValues.size > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!);\n }, Array.from(animationValues));\n }\n Rea.runOnUI((onSize?: SharedValue<SkSize>) => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!, onSize);\n })(this.onSize);\n }\n}\n\nexport const createContainer = (\n Skia: Skia,\n nativeId: number,\n onSize?: SharedValue<SkSize>\n) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new ReanimatedContainer(Skia, nativeId, onSize);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":";;;;;;AAEA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AAEAA,OAAA;AACAA,OAAA;AAAsB,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEtB,MAAMgB,YAAY,GAAGA,CACnBC,IAAU,EACVC,QAAgB,EAChBC,SAAoB,EACpBC,MAA4B,KACzB;EACH,SAAS;;EACT,IAAIA,MAAM,EAAE;IACV,MAAMC,IAAI,GAAGC,WAAW,CAACD,IAAI,CAACH,QAAQ,CAAC;IACvC,IACEG,IAAI,CAACE,KAAK,KAAKH,MAAM,CAAChB,KAAK,CAACmB,KAAK,IACjCF,IAAI,CAACG,MAAM,KAAKJ,MAAM,CAAChB,KAAK,CAACoB,MAAM,EACnC;MACAJ,MAAM,CAAChB,KAAK,GAAGiB,IAAI;IACrB;EACF;EACA,MAAMI,GAAG,GAAGR,IAAI,CAACS,eAAe,CAAC,CAAC;EAClC,MAAMC,MAAM,GAAGF,GAAG,CAACG,cAAc,CAAC,CAAC;EACnC;;EAEA,MAAMC,GAAG,GAAG,IAAAC,oCAAoB,EAACb,IAAI,EAAEE,SAAS,CAACY,SAAS,EAAEJ,MAAM,CAAC;EACnE,IAAAK,cAAM,EAACH,GAAG,EAAEV,SAAS,CAACc,QAAQ,CAAC;EAC/B,MAAMC,OAAO,GAAGT,GAAG,CAACU,wBAAwB,CAAC,CAAC;EAC9C;EACA;EACAb,WAAW,CAACc,cAAc,CAAClB,QAAQ,EAAE,SAAS,EAAEgB,OAAO,CAAC;AAC1D,CAAC;AAED,MAAMG,mBAAmB,SAASC,0BAAS,CAAC;EAG1CC,WAAWA,CACTtB,IAAU,EACFC,QAAgB,EAChBE,MAA4B,EACpC;IACA,KAAK,CAACH,IAAI,CAAC;IAAC,KAHJC,QAAgB,GAAhBA,QAAgB;IAAA,KAChBE,MAA4B,GAA5BA,MAA4B;IAAAtB,eAAA,mBALJ,IAAI;EAQtC;EAEA0C,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;MAC1BC,wBAAG,CAACC,UAAU,CAAC,IAAI,CAACF,QAAQ,CAAC;IAC/B;IACA,IAAI,IAAI,CAACG,SAAS,EAAE;MAClB;IACF;IACA,MAAMC,QAAQ,GAAG,IAAIC,kBAAQ,CAAC,CAAC;IAC/B,IAAAC,cAAK,EAACF,QAAQ,EAAE,IAAI,CAACG,IAAI,CAAC;IAC1B,MAAMC,MAAM,GAAGJ,QAAQ,CAACK,YAAY,CAAC,CAAC;IACtC,MAAM;MAAEC;IAAgB,CAAC,GAAGF,MAAM;IAClC,IAAI,CAAC9B,SAAS,GAAG;MACfc,QAAQ,EAAEgB,MAAM,CAAChB,QAAQ;MACzBF,SAAS,EAAEkB,MAAM,CAAClB;IACpB,CAAC;IACD,MAAM;MAAEb,QAAQ;MAAED,IAAI;MAAEE;IAAU,CAAC,GAAG,IAAI;IAC1C,IAAIgC,eAAe,CAAC9B,IAAI,GAAG,CAAC,EAAE;MAC5B,IAAI,CAACoB,QAAQ,GAAGC,wBAAG,CAACU,WAAW,CAAC,MAAM;QACpC,SAAS;;QACTpC,YAAY,CAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAU,CAAC;MAC1C,CAAC,EAAEkC,KAAK,CAACC,IAAI,CAACH,eAAe,CAAC,CAAC;IACjC;IACAT,wBAAG,CAACa,OAAO,CAAEnC,MAA4B,IAAK;MAC5C,SAAS;;MACTJ,YAAY,CAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAGC,MAAM,CAAC;IAClD,CAAC,CAAC,CAAC,IAAI,CAACA,MAAM,CAAC;EACjB;AACF;AAEO,MAAMoC,eAAe,GAAGA,CAC7BvC,IAAU,EACVC,QAAgB,EAChBE,MAA4B,KACzB;EACH,IAAIqC,+BAAgB,IAAIvC,QAAQ,KAAK,CAAC,CAAC,EAAE;IACvC,OAAO,IAAImB,mBAAmB,CAACpB,IAAI,EAAEC,QAAQ,EAAEE,MAAM,CAAC;EACxD,CAAC,MAAM;IACL,OAAO,IAAIsC,gCAAe,CAACzC,IAAI,EAAEC,QAAQ,CAAC;EAC5C;AACF,CAAC;AAACyC,OAAA,CAAAH,eAAA,GAAAA,eAAA","ignoreList":[]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { HostConfig } from "react-reconciler";
|
2
2
|
import type { NodeType } from "../dom/types";
|
3
3
|
import type { Node } from "./Node";
|
4
|
-
import type { Container } from "./
|
4
|
+
import type { Container } from "./StaticContainer";
|
5
5
|
export declare const debug: (...args: Parameters<typeof console.log>) => void;
|
6
6
|
type Instance = Node;
|
7
7
|
type Props = object;
|