@shopify/react-native-skia 2.3.9 → 2.3.11

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 (57) hide show
  1. package/android/cpp/jni/include/JniSkiaBaseView.h +9 -2
  2. package/android/cpp/jni/include/JniSkiaPictureView.h +97 -2
  3. package/android/cpp/rnskia-android/OpenGLContext.h +1 -0
  4. package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +3 -1
  5. package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureView.java +42 -0
  6. package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureViewManager.java +5 -0
  7. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerDelegate.java +8 -2
  8. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaPictureViewManagerInterface.java +1 -0
  9. package/apple/SkiaCVPixelBufferUtils.mm +8 -4
  10. package/cpp/api/JsiSkAnimatedImage.h +3 -4
  11. package/cpp/api/JsiSkSurface.h +4 -3
  12. package/cpp/api/recorder/Drawings.h +10 -2
  13. package/cpp/api/recorder/JsiRecorder.h +1 -1
  14. package/cpp/jsi/ViewProperty.h +2 -36
  15. package/cpp/rnskia/RNSkJsiViewApi.h +2 -5
  16. package/cpp/rnskia/RNSkPictureView.h +2 -23
  17. package/cpp/rnskia/RNSkView.h +0 -7
  18. package/lib/commonjs/renderer/Canvas.js +21 -15
  19. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  20. package/lib/commonjs/sksg/Container.native.d.ts +0 -3
  21. package/lib/commonjs/sksg/Container.native.js +8 -14
  22. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  23. package/lib/commonjs/sksg/Reconciler.js +2 -2
  24. package/lib/commonjs/sksg/Reconciler.js.map +1 -1
  25. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
  26. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  27. package/lib/commonjs/views/SkiaPictureView.d.ts +1 -0
  28. package/lib/commonjs/views/SkiaPictureView.js +3 -1
  29. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  30. package/lib/commonjs/views/SkiaPictureView.web.js +13 -2
  31. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  32. package/lib/module/renderer/Canvas.js +21 -15
  33. package/lib/module/renderer/Canvas.js.map +1 -1
  34. package/lib/module/sksg/Container.native.d.ts +0 -3
  35. package/lib/module/sksg/Container.native.js +8 -14
  36. package/lib/module/sksg/Container.native.js.map +1 -1
  37. package/lib/module/sksg/Reconciler.js +2 -2
  38. package/lib/module/sksg/Reconciler.js.map +1 -1
  39. package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
  40. package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  41. package/lib/module/views/SkiaPictureView.d.ts +1 -0
  42. package/lib/module/views/SkiaPictureView.js +3 -1
  43. package/lib/module/views/SkiaPictureView.js.map +1 -1
  44. package/lib/module/views/SkiaPictureView.web.js +13 -2
  45. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  46. package/lib/typescript/lib/commonjs/sksg/Container.native.d.ts +0 -4
  47. package/lib/typescript/lib/module/sksg/Container.native.d.ts +0 -4
  48. package/lib/typescript/src/sksg/Container.native.d.ts +0 -3
  49. package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
  50. package/lib/typescript/src/views/SkiaPictureView.d.ts +1 -0
  51. package/package.json +1 -1
  52. package/src/renderer/Canvas.tsx +20 -17
  53. package/src/sksg/Container.native.ts +7 -16
  54. package/src/sksg/Reconciler.ts +2 -2
  55. package/src/specs/SkiaPictureViewNativeComponent.ts +1 -0
  56. package/src/views/SkiaPictureView.tsx +3 -1
  57. package/src/views/SkiaPictureView.web.tsx +14 -2
@@ -6,9 +6,6 @@ declare class NativeReanimatedContainer extends Container {
6
6
  private nativeId;
7
7
  private mapperId;
8
8
  private picture;
9
- private recorderA;
10
- private recorderB;
11
- private currentRecorder;
12
9
  constructor(Skia: Skia, nativeId: number);
13
10
  redraw(): void;
14
11
  }
@@ -30,12 +30,6 @@ class NativeReanimatedContainer extends _StaticContainer.Container {
30
30
  this.nativeId = nativeId;
31
31
  _defineProperty(this, "mapperId", null);
32
32
  _defineProperty(this, "picture", void 0);
33
- _defineProperty(this, "recorderA", void 0);
34
- _defineProperty(this, "recorderB", void 0);
35
- _defineProperty(this, "currentRecorder", void 0);
36
- this.recorderA = new _ReanimatedRecorder.ReanimatedRecorder(Skia);
37
- this.recorderB = new _ReanimatedRecorder.ReanimatedRecorder(Skia);
38
- this.currentRecorder = this.recorderA;
39
33
  this.picture = Skia.Picture.MakePicture(null);
40
34
  }
41
35
  redraw() {
@@ -45,23 +39,23 @@ class NativeReanimatedContainer extends _StaticContainer.Container {
45
39
  if (this.unmounted) {
46
40
  return;
47
41
  }
48
-
49
- // Swap to the next recorder (double buffering)
50
- const recorder = this.currentRecorder;
51
- this.currentRecorder = this.currentRecorder === this.recorderA ? this.recorderB : this.recorderA;
42
+ const recorder = new _ReanimatedRecorder.ReanimatedRecorder(this.Skia);
52
43
  const {
53
44
  nativeId,
54
- picture
45
+ picture,
46
+ Skia
55
47
  } = this;
56
- recorder.reset();
57
48
  (0, _Visitor.visit)(recorder, this.root);
58
49
  const sharedValues = recorder.getSharedValues();
59
50
  const sharedRecorder = recorder.getRecorder();
60
- _ReanimatedProxy.default.runOnUI(() => {
51
+ // Draw first frame
52
+ _ReanimatedProxy.default.executeOnUIRuntimeSync(() => {
61
53
  "worklet";
62
54
 
63
- nativeDrawOnscreen(nativeId, sharedRecorder, picture);
55
+ const firstPicture = Skia.Picture.MakePicture(null);
56
+ nativeDrawOnscreen(nativeId, sharedRecorder, firstPicture);
64
57
  })();
58
+ // Animate
65
59
  if (sharedValues.length > 0) {
66
60
  this.mapperId = _ReanimatedProxy.default.startMapper(() => {
67
61
  "worklet";
@@ -1 +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","picture","play","SkiaViewApi","setJsiProperty","NativeReanimatedContainer","Container","constructor","Skia","recorderA","ReanimatedRecorder","recorderB","currentRecorder","Picture","MakePicture","redraw","mapperId","Rea","stopMapper","unmounted","reset","visit","root","sharedValues","getSharedValues","sharedRecorder","getRecorder","runOnUI","length","startMapper","applyUpdates","createContainer","HAS_REANIMATED_3","StaticContainer","exports"],"sources":["Container.native.ts"],"sourcesContent":["import Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkPicture } 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 picture: SkPicture\n) => {\n \"worklet\";\n\n //const start = performance.now();\n recorder.play(picture);\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 private picture: SkPicture;\n private recorderA: ReanimatedRecorder;\n private recorderB: ReanimatedRecorder;\n private currentRecorder: ReanimatedRecorder;\n\n constructor(\n Skia: Skia,\n private nativeId: number\n ) {\n super(Skia);\n this.recorderA = new ReanimatedRecorder(Skia);\n this.recorderB = new ReanimatedRecorder(Skia);\n this.currentRecorder = this.recorderA;\n this.picture = Skia.Picture.MakePicture(null)!;\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n\n // Swap to the next recorder (double buffering)\n const recorder = this.currentRecorder;\n this.currentRecorder =\n this.currentRecorder === this.recorderA ? this.recorderB : this.recorderA;\n\n const { nativeId, picture } = this;\n recorder.reset();\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n Rea.runOnUI(() => {\n \"worklet\";\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n })();\n if (sharedValues.length > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (Skia: Skia, nativeId: number) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new NativeReanimatedContainer(Skia, nativeId);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
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","picture","play","SkiaViewApi","setJsiProperty","NativeReanimatedContainer","Container","constructor","Skia","Picture","MakePicture","redraw","mapperId","Rea","stopMapper","unmounted","ReanimatedRecorder","visit","root","sharedValues","getSharedValues","sharedRecorder","getRecorder","executeOnUIRuntimeSync","firstPicture","length","startMapper","applyUpdates","createContainer","HAS_REANIMATED_3","StaticContainer","exports"],"sources":["Container.native.ts"],"sourcesContent":["import Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkPicture } 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 picture: SkPicture\n) => {\n \"worklet\";\n\n //const start = performance.now();\n recorder.play(picture);\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 private picture: SkPicture;\n\n constructor(\n Skia: Skia,\n private nativeId: number\n ) {\n super(Skia);\n this.picture = Skia.Picture.MakePicture(null)!;\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 ReanimatedRecorder(this.Skia);\n const { nativeId, picture, Skia } = this;\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n // Draw first frame\n Rea.executeOnUIRuntimeSync(() => {\n \"worklet\";\n const firstPicture = Skia.Picture.MakePicture(null)!;\n nativeDrawOnscreen(nativeId, sharedRecorder, firstPicture);\n })();\n // Animate\n if (sharedValues.length > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (Skia: Skia, nativeId: number) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new NativeReanimatedContainer(Skia, nativeId);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -24,8 +24,9 @@ class SkiaSGRoot {
24
24
  this.Skia = Skia;
25
25
  _defineProperty(this, "root", void 0);
26
26
  _defineProperty(this, "container", void 0);
27
+ const strictMode = false;
27
28
  this.container = (0, _Container.createContainer)(Skia, nativeId);
28
- this.root = skiaReconciler.createContainer(this.container, 0, null, true, null, "", console.error, null);
29
+ this.root = skiaReconciler.createContainer(this.container, 0, null, strictMode, null, "", console.error, null);
29
30
  }
30
31
  get sg() {
31
32
  const children = this.container.root;
@@ -39,7 +40,6 @@ class SkiaSGRoot {
39
40
  updateContainer(element) {
40
41
  return new Promise(resolve => {
41
42
  skiaReconciler.updateContainer(element, this.root, null, () => {
42
- (0, _HostConfig.debug)("updateContainer");
43
43
  resolve(true);
44
44
  });
45
45
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_reactReconciler","_interopRequireDefault","require","_types","_HostConfig","_Container","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","skiaReconciler","ReactReconciler","sksgHostConfig","injectIntoDevTools","bundleType","version","rendererPackageName","SkiaSGRoot","constructor","Skia","nativeId","container","createContainer","root","console","error","sg","children","type","NodeType","Group","props","isDeclaration","updateContainer","element","Promise","resolve","debug","render","mount","redraw","drawOnCanvas","canvas","getPicture","recorder","PictureRecorder","beginRecording","finishRecordingAsPicture","unmount","exports"],"sources":["Reconciler.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport type { SkCanvas, Skia } from \"../skia/types\";\nimport { NodeType } from \"../dom/types\";\n\nimport { debug, sksgHostConfig } from \"./HostConfig\";\nimport type { Container } from \"./StaticContainer\";\nimport { createContainer } from \"./Container\";\n\nimport \"./Elements\";\n\nconst skiaReconciler = ReactReconciler(sksgHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nexport class SkiaSGRoot {\n private root: OpaqueRoot;\n private container: Container;\n\n constructor(\n public Skia: Skia,\n nativeId = -1\n ) {\n this.container = createContainer(Skia, nativeId);\n this.root = skiaReconciler.createContainer(\n this.container,\n 0,\n null,\n true,\n null,\n \"\",\n console.error,\n null\n );\n }\n\n get sg() {\n const children = this.container.root;\n return { type: NodeType.Group, props: {}, children, isDeclaration: false };\n }\n\n private updateContainer(element: ReactNode) {\n return new Promise((resolve) => {\n skiaReconciler.updateContainer(element, this.root, null, () => {\n debug(\"updateContainer\");\n resolve(true);\n });\n });\n }\n\n async render(element: ReactNode) {\n this.container.mount();\n await this.updateContainer(element);\n this.container.redraw();\n }\n\n drawOnCanvas(canvas: SkCanvas) {\n this.container.drawOnCanvas(canvas);\n }\n\n getPicture() {\n const recorder = this.Skia.PictureRecorder();\n const canvas = recorder.beginRecording();\n this.drawOnCanvas(canvas);\n return recorder.finishRecordingAsPicture();\n }\n\n unmount() {\n this.container.unmount();\n return new Promise((resolve) => {\n skiaReconciler.updateContainer(null, this.root, null, () => {\n debug(\"unmountContainer\");\n resolve(true);\n });\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactReconciler","_interopRequireDefault","require","_types","_HostConfig","_Container","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","skiaReconciler","ReactReconciler","sksgHostConfig","injectIntoDevTools","bundleType","version","rendererPackageName","SkiaSGRoot","constructor","Skia","nativeId","strictMode","container","createContainer","root","console","error","sg","children","type","NodeType","Group","props","isDeclaration","updateContainer","element","Promise","resolve","render","mount","redraw","drawOnCanvas","canvas","getPicture","recorder","PictureRecorder","beginRecording","finishRecordingAsPicture","unmount","debug","exports"],"sources":["Reconciler.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport type { SkCanvas, Skia } from \"../skia/types\";\nimport { NodeType } from \"../dom/types\";\n\nimport { debug, sksgHostConfig } from \"./HostConfig\";\nimport type { Container } from \"./StaticContainer\";\nimport { createContainer } from \"./Container\";\n\nimport \"./Elements\";\n\nconst skiaReconciler = ReactReconciler(sksgHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nexport class SkiaSGRoot {\n private root: OpaqueRoot;\n private container: Container;\n\n constructor(\n public Skia: Skia,\n nativeId = -1\n ) {\n const strictMode = false;\n this.container = createContainer(Skia, nativeId);\n this.root = skiaReconciler.createContainer(\n this.container,\n 0,\n null,\n strictMode,\n null,\n \"\",\n console.error,\n null\n );\n }\n\n get sg() {\n const children = this.container.root;\n return { type: NodeType.Group, props: {}, children, isDeclaration: false };\n }\n\n private updateContainer(element: ReactNode) {\n return new Promise((resolve) => {\n skiaReconciler.updateContainer(element, this.root, null, () => {\n resolve(true);\n });\n });\n }\n\n async render(element: ReactNode) {\n this.container.mount();\n await this.updateContainer(element);\n this.container.redraw();\n }\n\n drawOnCanvas(canvas: SkCanvas) {\n this.container.drawOnCanvas(canvas);\n }\n\n getPicture() {\n const recorder = this.Skia.PictureRecorder();\n const canvas = recorder.beginRecording();\n this.drawOnCanvas(canvas);\n return recorder.finishRecordingAsPicture();\n }\n\n unmount() {\n this.container.unmount();\n return new Promise((resolve) => {\n skiaReconciler.updateContainer(null, this.root, null, () => {\n debug(\"unmountContainer\");\n resolve(true);\n });\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ export interface NativeProps extends ViewProps {
3
3
  debug?: boolean;
4
4
  opaque?: boolean;
5
5
  colorSpace?: string;
6
+ coldStart?: boolean;
6
7
  }
7
8
  declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
8
9
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAS7F;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GACe,IAAAG,+BAAsB,EAAc,iBAAiB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n opaque?: boolean;\n colorSpace?: string;\n coldStart?: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAU7F;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GACe,IAAAG,+BAAsB,EAAc,iBAAiB,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@ import type { SkRect } from "../skia/types";
3
3
  import type { SkiaPictureViewNativeProps } from "./types";
4
4
  interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {
5
5
  mode?: "default" | "continuous";
6
+ coldStart?: boolean;
6
7
  }
7
8
  export declare class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
8
9
  private requestId;
@@ -86,13 +86,15 @@ class SkiaPictureView extends _react.default.Component {
86
86
  mode,
87
87
  debug = false,
88
88
  opaque = false,
89
+ coldStart = false,
89
90
  ...viewProps
90
91
  } = this.props;
91
92
  return /*#__PURE__*/_react.default.createElement(NativeSkiaPictureView, _extends({
92
93
  collapsable: false,
93
94
  nativeID: `${this._nativeId}`,
94
95
  debug: debug,
95
- opaque: opaque
96
+ opaque: opaque,
97
+ coldStart: coldStart
96
98
  }, viewProps));
97
99
  }
98
100
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_SkiaPictureViewNativeComponent","_api","_SkiaViewNativeId","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NativeSkiaPictureView","SkiaPictureViewNativeComponent","SkiaPictureView","React","Component","constructor","props","_nativeId","SkiaViewNativeId","current","picture","onSize","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","viewProps","createElement","collapsable","nativeID","exports","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const { mode, debug = false, opaque = false, ...viewProps } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_SkiaPictureViewNativeComponent","_api","_SkiaViewNativeId","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","NativeSkiaPictureView","SkiaPictureViewNativeComponent","SkiaPictureView","React","Component","constructor","props","_nativeId","SkiaViewNativeId","current","picture","onSize","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","coldStart","viewProps","createElement","collapsable","nativeID","exports","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView = SkiaPictureViewNativeComponent;\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n coldStart?: boolean;\n}\n\nexport class SkiaPictureView extends React.Component<SkiaPictureViewProps> {\n private requestId = 0;\n\n constructor(props: SkiaPictureViewProps) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { picture, onSize } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaPictureViewProps) {\n const { picture, onSize } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n this.tick();\n }\n\n componentWillUnmount() {\n if (this.requestId) {\n cancelAnimationFrame(this.requestId);\n }\n }\n\n private tick() {\n this.redraw();\n if (this.props.mode === \"continuous\") {\n this.requestId = requestAnimationFrame(this.tick.bind(this));\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n render() {\n const { mode, debug = false, opaque = false, coldStart = false, ...viewProps } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n coldStart={coldStart}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,17 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
14
14
  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; }
15
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
16
  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); } /* global HTMLCanvasElement */
17
+ const dp2Pixel = (pd, rect) => {
18
+ if (!rect) {
19
+ return undefined;
20
+ }
21
+ return {
22
+ x: rect.x * pd,
23
+ y: rect.y * pd,
24
+ width: rect.width * pd,
25
+ height: rect.height * pd
26
+ };
27
+ };
17
28
  class WebGLRenderer {
18
29
  constructor(canvas, pd) {
19
30
  this.canvas = canvas;
@@ -29,7 +40,7 @@ class WebGLRenderer {
29
40
  canvas.clear(CanvasKit.TRANSPARENT);
30
41
  this.draw(picture);
31
42
  this.surface.ref.flush();
32
- return this.surface.makeImageSnapshot(rect);
43
+ return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));
33
44
  }
34
45
  onResize() {
35
46
  const {
@@ -150,7 +161,7 @@ class StaticWebGLRenderer {
150
161
  tempCanvas
151
162
  } = renderResult;
152
163
  try {
153
- this.cachedImage = surface.makeImageSnapshot(rect);
164
+ this.cachedImage = surface.makeImageSnapshot(dp2Pixel(this.pd, rect));
154
165
  } catch (error) {
155
166
  console.error("Error creating image snapshot:", error);
156
167
  } finally {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_JsiSkSurface","_Platform","_SkiaViewNativeId","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","WebGLRenderer","constructor","canvas","pd","onResize","makeImageSnapshot","picture","rect","surface","getCanvas","clear","CanvasKit","TRANSPARENT","draw","ref","flush","width","clientWidth","height","clientHeight","MakeWebGLCanvasSurface","ctx","getContext","drawingBufferColorSpace","Error","JsiSkSurface","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$canvas","getExtension","loseContext","delete","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupWebGLContext","renderResult","ctx2d","drawImage","console","_this$cachedImage","Platform","PixelRatio","SkiaPictureView","exports","forwardRef","props","canvasRef","useRef","renderer","redrawRequestsRef","requestIdRef","pictureRef","onLayout","redraw","useCallback","current","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","tick","requestAnimationFrame","onLayoutEvent","evt","__destroyWebGLContextAfterRender","useImperativeHandle","useEffect","_props$nativeID","nativeID","SkiaViewNativeId","global","SkiaViewApi","registerView","cancelAnimationFrame","debug","viewProps","createElement","View","style","display","flex"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(rect);\n }\n\n onResize() {\n const { canvas, pd } = this;\n canvas.width = canvas.clientWidth * pd;\n canvas.height = canvas.clientHeight * pd;\n const surface = CanvasKit.MakeWebGLCanvasSurface(canvas);\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(pd, pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n if (this.surface) {\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n this.surface.ref.delete();\n this.surface = null;\n }\n }\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(\n picture: SkPicture\n ): { surface: JsiSkSurface; tempCanvas: OffscreenCanvas } | null {\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n\n try {\n const webglSurface = CanvasKit.MakeWebGLCanvasSurface(tempCanvas);\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas };\n } catch (error) {\n if (surface) {\n surface.ref.delete();\n }\n this.cleanupWebGLContext(tempCanvas);\n return null;\n }\n }\n\n private cleanupWebGLContext(tempCanvas: OffscreenCanvas): void {\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n const loseContext = ctx.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupWebGLContext(tempCanvas);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n const { surface, tempCanvas } = renderResult;\n\n try {\n this.cachedImage = surface.makeImageSnapshot(rect);\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n surface.ref.delete();\n this.cleanupWebGLContext(tempCanvas);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\nconst pd = Platform.PixelRatio;\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n}\n\nexport const SkiaPictureView = forwardRef<\n SkiaPictureViewHandle,\n SkiaPictureViewNativeProps\n>((props, ref) => {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const renderer = useRef<Renderer | null>(null);\n const redrawRequestsRef = useRef(0);\n const requestIdRef = useRef(0);\n const pictureRef = useRef<SkPicture | null>(null);\n\n const { picture, onLayout } = props;\n\n const redraw = useCallback(() => {\n redrawRequestsRef.current++;\n }, []);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (renderer.current && pictureRef.current) {\n return renderer.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const tick = useCallback(() => {\n if (redrawRequestsRef.current > 0) {\n redrawRequestsRef.current = 0;\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n requestIdRef.current = requestAnimationFrame(tick);\n }, []);\n\n const onLayoutEvent = useCallback(\n (evt: LayoutChangeEvent) => {\n const canvas = canvasRef.current;\n if (canvas) {\n renderer.current =\n props.__destroyWebGLContextAfterRender === true\n ? new StaticWebGLRenderer(canvas, pd)\n : new WebGLRenderer(canvas, pd);\n if (pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n if (onLayout) {\n onLayout(evt);\n }\n },\n [onLayout, props.__destroyWebGLContextAfterRender]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n }),\n [setPicture, getSize, redraw, makeImageSnapshot]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n (global.SkiaViewApi as ISkiaViewApiWeb).registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n } as SkiaPictureViewHandle);\n }, [setPicture, getSize, redraw, makeImageSnapshot, props.nativeID]);\n\n useEffect(() => {\n if (props.picture) {\n setPicture(props.picture);\n }\n }, [setPicture, props.picture]);\n\n useEffect(() => {\n tick();\n return () => {\n cancelAnimationFrame(requestIdRef.current);\n if (renderer.current) {\n renderer.current.dispose();\n renderer.current = null;\n }\n };\n }, [tick]);\n\n useEffect(() => {\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }, [picture, redraw]);\n\n const { debug = false, ...viewProps } = props;\n return (\n <Platform.View {...viewProps} onLayout={onLayoutEvent}>\n <canvas ref={canvasRef} style={{ display: \"flex\", flex: 1 }} />\n </Platform.View>\n );\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_JsiSkSurface","_Platform","_SkiaViewNativeId","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","dp2Pixel","pd","rect","undefined","x","y","width","height","WebGLRenderer","constructor","canvas","onResize","makeImageSnapshot","picture","surface","getCanvas","clear","CanvasKit","TRANSPARENT","draw","ref","flush","clientWidth","clientHeight","MakeWebGLCanvasSurface","ctx","getContext","drawingBufferColorSpace","Error","JsiSkSurface","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$canvas","getExtension","loseContext","delete","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupWebGLContext","renderResult","ctx2d","drawImage","console","_this$cachedImage","Platform","PixelRatio","SkiaPictureView","exports","forwardRef","props","canvasRef","useRef","renderer","redrawRequestsRef","requestIdRef","pictureRef","onLayout","redraw","useCallback","current","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","tick","requestAnimationFrame","onLayoutEvent","evt","__destroyWebGLContextAfterRender","useImperativeHandle","useEffect","_props$nativeID","nativeID","SkiaViewNativeId","global","SkiaViewApi","registerView","cancelAnimationFrame","debug","viewProps","createElement","View","style","display","flex"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n forwardRef,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst dp2Pixel = (pd: number, rect?: SkRect) => {\n if (!rect) {\n return undefined;\n }\n return {\n x: rect.x * pd,\n y: rect.y * pd,\n width: rect.width * pd,\n height: rect.height * pd,\n };\n};\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n }\n\n onResize() {\n const { canvas, pd } = this;\n canvas.width = canvas.clientWidth * pd;\n canvas.height = canvas.clientHeight * pd;\n const surface = CanvasKit.MakeWebGLCanvasSurface(canvas);\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(pd, pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n if (this.surface) {\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n this.surface.ref.delete();\n this.surface = null;\n }\n }\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(\n picture: SkPicture\n ): { surface: JsiSkSurface; tempCanvas: OffscreenCanvas } | null {\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n\n try {\n const webglSurface = CanvasKit.MakeWebGLCanvasSurface(tempCanvas);\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas };\n } catch (error) {\n if (surface) {\n surface.ref.delete();\n }\n this.cleanupWebGLContext(tempCanvas);\n return null;\n }\n }\n\n private cleanupWebGLContext(tempCanvas: OffscreenCanvas): void {\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n const loseContext = ctx.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupWebGLContext(tempCanvas);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n const { surface, tempCanvas } = renderResult;\n\n try {\n this.cachedImage = surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n surface.ref.delete();\n this.cleanupWebGLContext(tempCanvas);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\nconst pd = Platform.PixelRatio;\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n}\n\nexport const SkiaPictureView = forwardRef<\n SkiaPictureViewHandle,\n SkiaPictureViewNativeProps\n>((props, ref) => {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const renderer = useRef<Renderer | null>(null);\n const redrawRequestsRef = useRef(0);\n const requestIdRef = useRef(0);\n const pictureRef = useRef<SkPicture | null>(null);\n\n const { picture, onLayout } = props;\n\n const redraw = useCallback(() => {\n redrawRequestsRef.current++;\n }, []);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (renderer.current && pictureRef.current) {\n return renderer.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const tick = useCallback(() => {\n if (redrawRequestsRef.current > 0) {\n redrawRequestsRef.current = 0;\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n requestIdRef.current = requestAnimationFrame(tick);\n }, []);\n\n const onLayoutEvent = useCallback(\n (evt: LayoutChangeEvent) => {\n const canvas = canvasRef.current;\n if (canvas) {\n renderer.current =\n props.__destroyWebGLContextAfterRender === true\n ? new StaticWebGLRenderer(canvas, pd)\n : new WebGLRenderer(canvas, pd);\n if (pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n if (onLayout) {\n onLayout(evt);\n }\n },\n [onLayout, props.__destroyWebGLContextAfterRender]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n }),\n [setPicture, getSize, redraw, makeImageSnapshot]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n (global.SkiaViewApi as ISkiaViewApiWeb).registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n } as SkiaPictureViewHandle);\n }, [setPicture, getSize, redraw, makeImageSnapshot, props.nativeID]);\n\n useEffect(() => {\n if (props.picture) {\n setPicture(props.picture);\n }\n }, [setPicture, props.picture]);\n\n useEffect(() => {\n tick();\n return () => {\n cancelAnimationFrame(requestIdRef.current);\n if (renderer.current) {\n renderer.current.dispose();\n renderer.current = null;\n }\n };\n }, [tick]);\n\n useEffect(() => {\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }, [picture, redraw]);\n\n const { debug = false, ...viewProps } = props;\n return (\n <Platform.View {...viewProps} onLayout={onLayoutEvent}>\n <canvas ref={canvasRef} style={{ display: \"flex\", flex: 1 }} />\n </Platform.View>\n );\n});\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,8 @@ import { Platform } from "../Platform";
10
10
  import { HAS_REANIMATED_3 } from "../external";
11
11
  export const useCanvasRef = () => useRef(null);
12
12
  const useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;
13
+ const measure = !HAS_REANIMATED_3 ? null : Rea.measure;
14
+ const useCanvasRefPriv = !HAS_REANIMATED_3 ? useRef : Rea.useAnimatedRef;
13
15
  export const useCanvasSize = userRef => {
14
16
  const ourRef = useCanvasRef();
15
17
  const ref = userRef !== null && userRef !== void 0 ? userRef : ourRef;
@@ -52,7 +54,7 @@ export const Canvas = ({
52
54
  if (onLayout && isFabric) {
53
55
  console.error("<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size");
54
56
  }
55
- const viewRef = useRef(null);
57
+ const viewRef = useCanvasRefPriv(null);
56
58
  // Native ID
57
59
  const nativeId = useMemo(() => {
58
60
  return SkiaViewNativeId.current++;
@@ -62,20 +64,23 @@ export const Canvas = ({
62
64
  const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);
63
65
  useReanimatedFrame(() => {
64
66
  "worklet";
65
- }, !!onSize);
66
- useEffect(() => {
67
- if (onSize) {
68
- Rea.runOnUI(() => {
69
- global[`__onSize_${nativeId}`] = onSize;
70
- })();
71
- return () => {
72
- Rea.runOnUI(() => {
73
- delete global[`__onSize_${nativeId}`];
74
- })();
75
- };
67
+
68
+ if (onSize && measure) {
69
+ const result = measure(viewRef);
70
+ if (result) {
71
+ const {
72
+ width,
73
+ height
74
+ } = result;
75
+ if (onSize.value.width !== width || onSize.value.height !== height) {
76
+ onSize.value = {
77
+ width,
78
+ height
79
+ };
80
+ }
81
+ }
76
82
  }
77
- return undefined;
78
- }, [onSize, nativeId]);
83
+ }, !!onSize);
79
84
 
80
85
  // Render effects
81
86
  useLayoutEffect(() => {
@@ -132,7 +137,8 @@ export const Canvas = ({
132
137
  debug: debug,
133
138
  opaque: opaque,
134
139
  colorSpace: colorSpace,
135
- onLayout: onLayoutWeb
140
+ coldStart: false,
141
+ onLayout: Platform.OS === "web" && (onSize || onLayout) ? onLayoutWeb : onLayout
136
142
  }, viewProps));
137
143
  };
138
144
  //# sourceMappingURL=Canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Rea","SkiaViewNativeId","SkiaPictureViewNativeComponent","SkiaSGRoot","Skia","Platform","HAS_REANIMATED_3","useCanvasRef","useReanimatedFrame","useFrameCallback","useCanvasSize","userRef","ourRef","ref","size","setSize","width","height","current","measure","_x","_y","isFabric","Boolean","_global","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","onLayout","viewProps","console","error","viewRef","nativeId","root","runOnUI","undefined","render","unmount","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","e","OS","nativeEvent","layout","value","createElement","_extends","collapsable","nativeID"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useRef<View>(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n }, !!onSize);\n useEffect(() => {\n if (onSize) {\n Rea.runOnUI(() => {\n (global as Record<string, unknown>)[`__onSize_${nativeId}`] = onSize;\n })();\n return () => {\n Rea.runOnUI(() => {\n delete (global as Record<string, unknown>)[`__onSize_${nativeId}`];\n })();\n };\n }\n return undefined;\n }, [onSize, nativeId]);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n onLayout={onLayoutWeb}\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","Rea","SkiaViewNativeId","SkiaPictureViewNativeComponent","SkiaSGRoot","Skia","Platform","HAS_REANIMATED_3","useCanvasRef","useReanimatedFrame","useFrameCallback","measure","useCanvasRefPriv","useAnimatedRef","useCanvasSize","userRef","ourRef","ref","size","setSize","width","height","current","_x","_y","isFabric","Boolean","_global","global","nativeFabricUIManager","Canvas","debug","opaque","children","onSize","colorSpace","onLayout","viewProps","console","error","viewRef","nativeId","root","result","value","render","unmount","makeImageSnapshot","rect","SkiaViewApi","makeImageSnapshotAsync","redraw","requestRedraw","getNativeId","callback","_viewRef$current","measureInWindow","_viewRef$current2","onLayoutWeb","e","OS","nativeEvent","layout","createElement","_extends","collapsable","nativeID","coldStart"],"sources":["Canvas.tsx"],"sourcesContent":["import type { FC, RefObject } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n LayoutChangeEvent,\n MeasureInWindowOnSuccessCallback,\n MeasureOnSuccessCallback,\n View,\n ViewProps,\n} from \"react-native\";\nimport type { AnimatedRef, SharedValue } from \"react-native-reanimated\";\n\nimport Rea from \"../external/reanimated/ReanimatedProxy\";\nimport { SkiaViewNativeId } from \"../views/SkiaViewNativeId\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport type { SkImage, SkRect, SkSize } from \"../skia/types\";\nimport { SkiaSGRoot } from \"../sksg/Reconciler\";\nimport { Skia } from \"../skia\";\nimport { Platform } from \"../Platform\";\nimport { HAS_REANIMATED_3 } from \"../external\";\n\nexport interface CanvasRef extends FC<CanvasProps> {\n makeImageSnapshot(rect?: SkRect): SkImage;\n makeImageSnapshotAsync(rect?: SkRect): Promise<SkImage>;\n redraw(): void;\n getNativeId(): number;\n measure(callback: MeasureOnSuccessCallback): void;\n measureInWindow(callback: MeasureInWindowOnSuccessCallback): void;\n}\n\nexport const useCanvasRef = () => useRef<CanvasRef>(null);\n\nconst useReanimatedFrame = !HAS_REANIMATED_3 ? () => {} : Rea.useFrameCallback;\nconst measure = !HAS_REANIMATED_3 ? null : Rea.measure;\n\nconst useCanvasRefPriv: typeof useRef<View> = !HAS_REANIMATED_3\n ? useRef\n : Rea.useAnimatedRef;\n\nexport const useCanvasSize = (userRef?: RefObject<CanvasRef | null>) => {\n const ourRef = useCanvasRef();\n const ref = userRef ?? ourRef;\n const [size, setSize] = useState<SkSize>({ width: 0, height: 0 });\n useLayoutEffect(() => {\n if (ref.current) {\n ref.current.measure((_x, _y, width, height) => {\n setSize({ width, height });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return { ref, size };\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isFabric = Boolean((global as any)?.nativeFabricUIManager);\n\nexport interface CanvasProps extends Omit<ViewProps, \"onLayout\"> {\n debug?: boolean;\n opaque?: boolean;\n onSize?: SharedValue<SkSize>;\n colorSpace?: \"p3\" | \"srgb\";\n ref?: React.Ref<CanvasRef>;\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport const Canvas = ({\n debug,\n opaque,\n children,\n onSize,\n colorSpace = \"p3\",\n ref,\n // Here know this is a type error but this is done on purpose to check it at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n onLayout,\n ...viewProps\n}: CanvasProps) => {\n if (onLayout && isFabric) {\n console.error(\n \"<Canvas onLayout={onLayout} /> is not supported on the new architecture, to fix the issue, see: https://shopify.github.io/react-native-skia/docs/canvas/overview/#getting-the-canvas-size\"\n );\n }\n const viewRef = useCanvasRefPriv(null);\n // Native ID\n const nativeId = useMemo(() => {\n return SkiaViewNativeId.current++;\n }, []);\n\n // Root\n const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);\n\n useReanimatedFrame(() => {\n \"worklet\";\n if (onSize && measure) {\n const result = measure(viewRef as AnimatedRef<View>);\n if (result) {\n const { width, height } = result;\n if (onSize.value.width !== width || onSize.value.height !== height) {\n onSize.value = { width, height };\n }\n }\n }\n }, !!onSize);\n\n // Render effects\n useLayoutEffect(() => {\n root.render(children);\n }, [children, root, nativeId]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n // Component methods\n useImperativeHandle(\n ref,\n () =>\n ({\n makeImageSnapshot: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshot(nativeId, rect);\n },\n makeImageSnapshotAsync: (rect?: SkRect) => {\n return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);\n },\n redraw: () => {\n SkiaViewApi.requestRedraw(nativeId);\n },\n getNativeId: () => {\n return nativeId;\n },\n measure: (callback) => {\n viewRef.current?.measure(callback);\n },\n measureInWindow: (callback) => {\n viewRef.current?.measureInWindow(callback);\n },\n }) as CanvasRef\n );\n\n const onLayoutWeb = useCallback(\n (e: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(e);\n }\n if (Platform.OS === \"web\" && onSize) {\n const { width, height } = e.nativeEvent.layout;\n onSize.value = { width, height };\n }\n },\n [onLayout, onSize]\n );\n return (\n <SkiaPictureViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n colorSpace={colorSpace}\n coldStart={false}\n onLayout={\n Platform.OS === \"web\" && (onSize || onLayout) ? onLayoutWeb : onLayout\n }\n {...viewProps}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,9 +6,6 @@ declare class NativeReanimatedContainer extends Container {
6
6
  private nativeId;
7
7
  private mapperId;
8
8
  private picture;
9
- private recorderA;
10
- private recorderB;
11
- private currentRecorder;
12
9
  constructor(Skia: Skia, nativeId: number);
13
10
  redraw(): void;
14
11
  }
@@ -23,12 +23,6 @@ class NativeReanimatedContainer extends Container {
23
23
  this.nativeId = nativeId;
24
24
  _defineProperty(this, "mapperId", null);
25
25
  _defineProperty(this, "picture", void 0);
26
- _defineProperty(this, "recorderA", void 0);
27
- _defineProperty(this, "recorderB", void 0);
28
- _defineProperty(this, "currentRecorder", void 0);
29
- this.recorderA = new ReanimatedRecorder(Skia);
30
- this.recorderB = new ReanimatedRecorder(Skia);
31
- this.currentRecorder = this.recorderA;
32
26
  this.picture = Skia.Picture.MakePicture(null);
33
27
  }
34
28
  redraw() {
@@ -38,23 +32,23 @@ class NativeReanimatedContainer extends Container {
38
32
  if (this.unmounted) {
39
33
  return;
40
34
  }
41
-
42
- // Swap to the next recorder (double buffering)
43
- const recorder = this.currentRecorder;
44
- this.currentRecorder = this.currentRecorder === this.recorderA ? this.recorderB : this.recorderA;
35
+ const recorder = new ReanimatedRecorder(this.Skia);
45
36
  const {
46
37
  nativeId,
47
- picture
38
+ picture,
39
+ Skia
48
40
  } = this;
49
- recorder.reset();
50
41
  visit(recorder, this.root);
51
42
  const sharedValues = recorder.getSharedValues();
52
43
  const sharedRecorder = recorder.getRecorder();
53
- Rea.runOnUI(() => {
44
+ // Draw first frame
45
+ Rea.executeOnUIRuntimeSync(() => {
54
46
  "worklet";
55
47
 
56
- nativeDrawOnscreen(nativeId, sharedRecorder, picture);
48
+ const firstPicture = Skia.Picture.MakePicture(null);
49
+ nativeDrawOnscreen(nativeId, sharedRecorder, firstPicture);
57
50
  })();
51
+ // Animate
58
52
  if (sharedValues.length > 0) {
59
53
  this.mapperId = Rea.startMapper(() => {
60
54
  "worklet";
@@ -1 +1 @@
1
- {"version":3,"names":["Rea","HAS_REANIMATED_3","ReanimatedRecorder","Container","StaticContainer","visit","nativeDrawOnscreen","nativeId","recorder","picture","play","SkiaViewApi","setJsiProperty","NativeReanimatedContainer","constructor","Skia","_defineProperty","recorderA","recorderB","currentRecorder","Picture","MakePicture","redraw","mapperId","stopMapper","unmounted","reset","root","sharedValues","getSharedValues","sharedRecorder","getRecorder","runOnUI","length","startMapper","applyUpdates","createContainer"],"sources":["Container.native.ts"],"sourcesContent":["import Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkPicture } 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 picture: SkPicture\n) => {\n \"worklet\";\n\n //const start = performance.now();\n recorder.play(picture);\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 private picture: SkPicture;\n private recorderA: ReanimatedRecorder;\n private recorderB: ReanimatedRecorder;\n private currentRecorder: ReanimatedRecorder;\n\n constructor(\n Skia: Skia,\n private nativeId: number\n ) {\n super(Skia);\n this.recorderA = new ReanimatedRecorder(Skia);\n this.recorderB = new ReanimatedRecorder(Skia);\n this.currentRecorder = this.recorderA;\n this.picture = Skia.Picture.MakePicture(null)!;\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n if (this.unmounted) {\n return;\n }\n\n // Swap to the next recorder (double buffering)\n const recorder = this.currentRecorder;\n this.currentRecorder =\n this.currentRecorder === this.recorderA ? this.recorderB : this.recorderA;\n\n const { nativeId, picture } = this;\n recorder.reset();\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n Rea.runOnUI(() => {\n \"worklet\";\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n })();\n if (sharedValues.length > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (Skia: Skia, nativeId: number) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new NativeReanimatedContainer(Skia, nativeId);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":";;;AAAA,OAAOA,GAAG,MAAM,wCAAwC;AAExD,SAASC,gBAAgB,QAAQ,sCAAsC;AAGvE,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,SAAS,EAAEC,eAAe,QAAQ,mBAAmB;AAC9D,SAASC,KAAK,QAAQ,oBAAoB;AAE1C,OAAO,qBAAqB;AAC5B,OAAO,cAAc;AAErB,MAAMC,kBAAkB,GAAGA,CACzBC,QAAgB,EAChBC,QAAqB,EACrBC,OAAkB,KACf;EACH,SAAS;;EAET;EACAD,QAAQ,CAACE,IAAI,CAACD,OAAO,CAAC;EACtB;EACA;EACAE,WAAW,CAACC,cAAc,CAACL,QAAQ,EAAE,SAAS,EAAEE,OAAO,CAAC;AAC1D,CAAC;AAED,MAAMI,yBAAyB,SAASV,SAAS,CAAC;EAOhDW,WAAWA,CACTC,IAAU,EACFR,QAAgB,EACxB;IACA,KAAK,CAACQ,IAAI,CAAC;IAAC,KAFJR,QAAgB,GAAhBA,QAAgB;IAAAS,eAAA,mBARQ,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAWpC,IAAI,CAACC,SAAS,GAAG,IAAIf,kBAAkB,CAACa,IAAI,CAAC;IAC7C,IAAI,CAACG,SAAS,GAAG,IAAIhB,kBAAkB,CAACa,IAAI,CAAC;IAC7C,IAAI,CAACI,eAAe,GAAG,IAAI,CAACF,SAAS;IACrC,IAAI,CAACR,OAAO,GAAGM,IAAI,CAACK,OAAO,CAACC,WAAW,CAAC,IAAI,CAAE;EAChD;EAEAC,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;MAC1BvB,GAAG,CAACwB,UAAU,CAAC,IAAI,CAACD,QAAQ,CAAC;IAC/B;IACA,IAAI,IAAI,CAACE,SAAS,EAAE;MAClB;IACF;;IAEA;IACA,MAAMjB,QAAQ,GAAG,IAAI,CAACW,eAAe;IACrC,IAAI,CAACA,eAAe,GAClB,IAAI,CAACA,eAAe,KAAK,IAAI,CAACF,SAAS,GAAG,IAAI,CAACC,SAAS,GAAG,IAAI,CAACD,SAAS;IAE3E,MAAM;MAAEV,QAAQ;MAAEE;IAAQ,CAAC,GAAG,IAAI;IAClCD,QAAQ,CAACkB,KAAK,CAAC,CAAC;IAChBrB,KAAK,CAACG,QAAQ,EAAE,IAAI,CAACmB,IAAI,CAAC;IAC1B,MAAMC,YAAY,GAAGpB,QAAQ,CAACqB,eAAe,CAAC,CAAC;IAC/C,MAAMC,cAAc,GAAGtB,QAAQ,CAACuB,WAAW,CAAC,CAAC;IAC7C/B,GAAG,CAACgC,OAAO,CAAC,MAAM;MAChB,SAAS;;MACT1B,kBAAkB,CAACC,QAAQ,EAAEuB,cAAc,EAAErB,OAAO,CAAC;IACvD,CAAC,CAAC,CAAC,CAAC;IACJ,IAAImB,YAAY,CAACK,MAAM,GAAG,CAAC,EAAE;MAC3B,IAAI,CAACV,QAAQ,GAAGvB,GAAG,CAACkC,WAAW,CAAC,MAAM;QACpC,SAAS;;QACTJ,cAAc,CAACK,YAAY,CAACP,YAAY,CAAC;QACzCtB,kBAAkB,CAACC,QAAQ,EAAEuB,cAAc,EAAErB,OAAO,CAAC;MACvD,CAAC,EAAEmB,YAAY,CAAC;IAClB;EACF;AACF;AAEA,OAAO,MAAMQ,eAAe,GAAGA,CAACrB,IAAU,EAAER,QAAgB,KAAK;EAC/D,IAAIN,gBAAgB,IAAIM,QAAQ,KAAK,CAAC,CAAC,EAAE;IACvC,OAAO,IAAIM,yBAAyB,CAACE,IAAI,EAAER,QAAQ,CAAC;EACtD,CAAC,MAAM;IACL,OAAO,IAAIH,eAAe,CAACW,IAAI,EAAER,QAAQ,CAAC;EAC5C;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Rea","HAS_REANIMATED_3","ReanimatedRecorder","Container","StaticContainer","visit","nativeDrawOnscreen","nativeId","recorder","picture","play","SkiaViewApi","setJsiProperty","NativeReanimatedContainer","constructor","Skia","_defineProperty","Picture","MakePicture","redraw","mapperId","stopMapper","unmounted","root","sharedValues","getSharedValues","sharedRecorder","getRecorder","executeOnUIRuntimeSync","firstPicture","length","startMapper","applyUpdates","createContainer"],"sources":["Container.native.ts"],"sourcesContent":["import Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkPicture } 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 picture: SkPicture\n) => {\n \"worklet\";\n\n //const start = performance.now();\n recorder.play(picture);\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 private picture: SkPicture;\n\n constructor(\n Skia: Skia,\n private nativeId: number\n ) {\n super(Skia);\n this.picture = Skia.Picture.MakePicture(null)!;\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 ReanimatedRecorder(this.Skia);\n const { nativeId, picture, Skia } = this;\n visit(recorder, this.root);\n const sharedValues = recorder.getSharedValues();\n const sharedRecorder = recorder.getRecorder();\n // Draw first frame\n Rea.executeOnUIRuntimeSync(() => {\n \"worklet\";\n const firstPicture = Skia.Picture.MakePicture(null)!;\n nativeDrawOnscreen(nativeId, sharedRecorder, firstPicture);\n })();\n // Animate\n if (sharedValues.length > 0) {\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n sharedRecorder.applyUpdates(sharedValues);\n nativeDrawOnscreen(nativeId, sharedRecorder, picture);\n }, sharedValues);\n }\n }\n}\n\nexport const createContainer = (Skia: Skia, nativeId: number) => {\n if (HAS_REANIMATED_3 && nativeId !== -1) {\n return new NativeReanimatedContainer(Skia, nativeId);\n } else {\n return new StaticContainer(Skia, nativeId);\n }\n};\n"],"mappings":";;;AAAA,OAAOA,GAAG,MAAM,wCAAwC;AAExD,SAASC,gBAAgB,QAAQ,sCAAsC;AAGvE,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,SAAS,EAAEC,eAAe,QAAQ,mBAAmB;AAC9D,SAASC,KAAK,QAAQ,oBAAoB;AAE1C,OAAO,qBAAqB;AAC5B,OAAO,cAAc;AAErB,MAAMC,kBAAkB,GAAGA,CACzBC,QAAgB,EAChBC,QAAqB,EACrBC,OAAkB,KACf;EACH,SAAS;;EAET;EACAD,QAAQ,CAACE,IAAI,CAACD,OAAO,CAAC;EACtB;EACA;EACAE,WAAW,CAACC,cAAc,CAACL,QAAQ,EAAE,SAAS,EAAEE,OAAO,CAAC;AAC1D,CAAC;AAED,MAAMI,yBAAyB,SAASV,SAAS,CAAC;EAIhDW,WAAWA,CACTC,IAAU,EACFR,QAAgB,EACxB;IACA,KAAK,CAACQ,IAAI,CAAC;IAAC,KAFJR,QAAgB,GAAhBA,QAAgB;IAAAS,eAAA,mBALQ,IAAI;IAAAA,eAAA;IAQpC,IAAI,CAACP,OAAO,GAAGM,IAAI,CAACE,OAAO,CAACC,WAAW,CAAC,IAAI,CAAE;EAChD;EAEAC,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;MAC1BpB,GAAG,CAACqB,UAAU,CAAC,IAAI,CAACD,QAAQ,CAAC;IAC/B;IACA,IAAI,IAAI,CAACE,SAAS,EAAE;MAClB;IACF;IACA,MAAMd,QAAQ,GAAG,IAAIN,kBAAkB,CAAC,IAAI,CAACa,IAAI,CAAC;IAClD,MAAM;MAAER,QAAQ;MAAEE,OAAO;MAAEM;IAAK,CAAC,GAAG,IAAI;IACxCV,KAAK,CAACG,QAAQ,EAAE,IAAI,CAACe,IAAI,CAAC;IAC1B,MAAMC,YAAY,GAAGhB,QAAQ,CAACiB,eAAe,CAAC,CAAC;IAC/C,MAAMC,cAAc,GAAGlB,QAAQ,CAACmB,WAAW,CAAC,CAAC;IAC7C;IACA3B,GAAG,CAAC4B,sBAAsB,CAAC,MAAM;MAC/B,SAAS;;MACT,MAAMC,YAAY,GAAGd,IAAI,CAACE,OAAO,CAACC,WAAW,CAAC,IAAI,CAAE;MACpDZ,kBAAkB,CAACC,QAAQ,EAAEmB,cAAc,EAAEG,YAAY,CAAC;IAC5D,CAAC,CAAC,CAAC,CAAC;IACJ;IACA,IAAIL,YAAY,CAACM,MAAM,GAAG,CAAC,EAAE;MAC3B,IAAI,CAACV,QAAQ,GAAGpB,GAAG,CAAC+B,WAAW,CAAC,MAAM;QACpC,SAAS;;QACTL,cAAc,CAACM,YAAY,CAACR,YAAY,CAAC;QACzClB,kBAAkB,CAACC,QAAQ,EAAEmB,cAAc,EAAEjB,OAAO,CAAC;MACvD,CAAC,EAAEe,YAAY,CAAC;IAClB;EACF;AACF;AAEA,OAAO,MAAMS,eAAe,GAAGA,CAAClB,IAAU,EAAER,QAAgB,KAAK;EAC/D,IAAIN,gBAAgB,IAAIM,QAAQ,KAAK,CAAC,CAAC,EAAE;IACvC,OAAO,IAAIM,yBAAyB,CAACE,IAAI,EAAER,QAAQ,CAAC;EACtD,CAAC,MAAM;IACL,OAAO,IAAIH,eAAe,CAACW,IAAI,EAAER,QAAQ,CAAC;EAC5C;AACF,CAAC","ignoreList":[]}
@@ -17,8 +17,9 @@ export class SkiaSGRoot {
17
17
  this.Skia = Skia;
18
18
  _defineProperty(this, "root", void 0);
19
19
  _defineProperty(this, "container", void 0);
20
+ const strictMode = false;
20
21
  this.container = createContainer(Skia, nativeId);
21
- this.root = skiaReconciler.createContainer(this.container, 0, null, true, null, "", console.error, null);
22
+ this.root = skiaReconciler.createContainer(this.container, 0, null, strictMode, null, "", console.error, null);
22
23
  }
23
24
  get sg() {
24
25
  const children = this.container.root;
@@ -32,7 +33,6 @@ export class SkiaSGRoot {
32
33
  updateContainer(element) {
33
34
  return new Promise(resolve => {
34
35
  skiaReconciler.updateContainer(element, this.root, null, () => {
35
- debug("updateContainer");
36
36
  resolve(true);
37
37
  });
38
38
  });