@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.
Files changed (93) hide show
  1. package/cpp/api/recorder/DrawingCtx.h +15 -0
  2. package/cpp/api/recorder/JsiRecorder.h +2 -1
  3. package/cpp/api/recorder/RNRecorder.h +2 -2
  4. package/cpp/api/recorder/Shaders.h +6 -5
  5. package/lib/commonjs/skia/types/Recorder.d.ts +1 -1
  6. package/lib/commonjs/skia/types/Recorder.js.map +1 -1
  7. package/lib/commonjs/sksg/Container.d.ts +3 -39
  8. package/lib/commonjs/sksg/Container.js +3 -195
  9. package/lib/commonjs/sksg/Container.js.map +1 -1
  10. package/lib/commonjs/sksg/Container.native.d.ts +14 -0
  11. package/lib/commonjs/sksg/Container.native.js +81 -0
  12. package/lib/commonjs/sksg/Container.native.js.map +1 -0
  13. package/lib/commonjs/sksg/Container.web.d.ts +14 -0
  14. package/lib/commonjs/sksg/Container.web.js +91 -0
  15. package/lib/commonjs/sksg/Container.web.js.map +1 -0
  16. package/lib/commonjs/sksg/HostConfig.d.ts +1 -1
  17. package/lib/commonjs/sksg/HostConfig.js.map +1 -1
  18. package/lib/commonjs/sksg/Reconciler.js.map +1 -1
  19. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  20. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +2 -2
  21. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  22. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  23. package/lib/commonjs/sksg/Recorder/Recorder.js +3 -2
  24. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  25. package/lib/commonjs/sksg/Recorder/Visitor.js +2 -2
  26. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  27. package/lib/commonjs/sksg/Recorder/commands/Shaders.js +3 -3
  28. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  29. package/lib/commonjs/sksg/StaticContainer.d.ts +24 -0
  30. package/lib/commonjs/sksg/StaticContainer.js +70 -0
  31. package/lib/commonjs/sksg/StaticContainer.js.map +1 -0
  32. package/lib/module/skia/types/Recorder.d.ts +1 -1
  33. package/lib/module/skia/types/Recorder.js.map +1 -1
  34. package/lib/module/sksg/Container.d.ts +3 -39
  35. package/lib/module/sksg/Container.js +2 -192
  36. package/lib/module/sksg/Container.js.map +1 -1
  37. package/lib/module/sksg/Container.native.d.ts +14 -0
  38. package/lib/module/sksg/Container.native.js +73 -0
  39. package/lib/module/sksg/Container.native.js.map +1 -0
  40. package/lib/module/sksg/Container.web.d.ts +14 -0
  41. package/lib/module/sksg/Container.web.js +83 -0
  42. package/lib/module/sksg/Container.web.js.map +1 -0
  43. package/lib/module/sksg/HostConfig.d.ts +1 -1
  44. package/lib/module/sksg/HostConfig.js.map +1 -1
  45. package/lib/module/sksg/Reconciler.js.map +1 -1
  46. package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  47. package/lib/module/sksg/Recorder/ReanimatedRecorder.js +2 -2
  48. package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  49. package/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  50. package/lib/module/sksg/Recorder/Recorder.js +3 -2
  51. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  52. package/lib/module/sksg/Recorder/Visitor.js +2 -2
  53. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  54. package/lib/module/sksg/Recorder/commands/Shaders.js +3 -3
  55. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  56. package/lib/module/sksg/StaticContainer.d.ts +24 -0
  57. package/lib/module/sksg/StaticContainer.js +62 -0
  58. package/lib/module/sksg/StaticContainer.js.map +1 -0
  59. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +2 -42
  60. package/lib/typescript/lib/commonjs/sksg/Container.native.d.ts +11 -0
  61. package/lib/typescript/lib/commonjs/sksg/Container.web.d.ts +15 -0
  62. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +1 -45
  63. package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  64. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  65. package/lib/typescript/lib/commonjs/sksg/StaticContainer.d.ts +23 -0
  66. package/lib/typescript/lib/module/sksg/Container.d.ts +2 -42
  67. package/lib/typescript/lib/module/sksg/Container.native.d.ts +11 -0
  68. package/lib/typescript/lib/module/sksg/Container.web.d.ts +15 -0
  69. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +1 -45
  70. package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  71. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  72. package/lib/typescript/lib/module/sksg/StaticContainer.d.ts +22 -0
  73. package/lib/typescript/src/skia/types/Recorder.d.ts +1 -1
  74. package/lib/typescript/src/sksg/Container.d.ts +3 -39
  75. package/lib/typescript/src/sksg/Container.native.d.ts +14 -0
  76. package/lib/typescript/src/sksg/Container.web.d.ts +14 -0
  77. package/lib/typescript/src/sksg/HostConfig.d.ts +1 -1
  78. package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  79. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +1 -1
  80. package/lib/typescript/src/sksg/StaticContainer.d.ts +24 -0
  81. package/package.json +1 -1
  82. package/src/renderer/__tests__/e2e/Shader.spec.tsx +93 -0
  83. package/src/skia/types/Recorder.ts +5 -1
  84. package/src/sksg/Container.native.ts +86 -0
  85. package/src/sksg/Container.ts +3 -223
  86. package/src/sksg/Container.web.ts +95 -0
  87. package/src/sksg/HostConfig.ts +1 -1
  88. package/src/sksg/Reconciler.ts +1 -1
  89. package/src/sksg/Recorder/ReanimatedRecorder.ts +6 -2
  90. package/src/sksg/Recorder/Recorder.ts +6 -2
  91. package/src/sksg/Recorder/Visitor.ts +2 -2
  92. package/src/sksg/Recorder/commands/Shaders.ts +8 -3
  93. 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>> children = ctx->popAllShaders();
43
- auto shader = source->makeShader(std::move(uniformsData), children.data(),
44
- children.size(), &m3);
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>): void;
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, props: AnimatedProps<unknown>): 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
+ {"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, SkCanvas, SkSize } from "../skia/types";
3
- import type { Node } from "./Node";
4
- import type { Recording } from "./Recorder/Recorder";
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 = exports.Container = 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 _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
- const web = global.SkiaViewApi && global.SkiaViewApi.web;
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":"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","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 "./Container";
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;