react-native-skia 3.0.0 → 3.0.2

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 (261) hide show
  1. package/Package.swift +14 -13
  2. package/android/CMakeLists.txt +13 -42
  3. package/android/build.gradle +55 -47
  4. package/android/cpp/jni/JniLoad.cpp +2 -4
  5. package/android/cpp/jni/include/JniSkiaView.h +123 -0
  6. package/android/cpp/rnskia-android/{RNSkOpenGLCanvasProvider.cpp → RNSkAndroidCanvasProvider.cpp} +45 -100
  7. package/android/cpp/rnskia-android/{RNSkOpenGLCanvasProvider.h → RNSkAndroidCanvasProvider.h} +24 -22
  8. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +0 -83
  9. package/android/cpp/rnskia-android/RNSkAndroidVideo.cpp +0 -8
  10. package/android/src/main/java/com/reactnative/skia/RNSkiaPackage.java +1 -2
  11. package/android/src/main/java/com/reactnative/skia/SkiaSurfaceView.java +1 -3
  12. package/android/src/main/java/com/reactnative/skia/SkiaTextureView.java +1 -17
  13. package/android/src/main/java/com/reactnative/skia/{SkiaBaseView.java → SkiaView.java} +78 -16
  14. package/android/src/main/java/com/reactnative/skia/SkiaViewManager.java +85 -0
  15. package/apple/MetalLayerColorSpace.mm +0 -4
  16. package/apple/RNSkApplePlatformContext.h +0 -14
  17. package/apple/RNSkApplePlatformContext.mm +2 -112
  18. package/apple/RNSkMetalCanvasProvider.h +14 -19
  19. package/apple/RNSkMetalCanvasProvider.mm +35 -68
  20. package/apple/SkiaView.h +20 -0
  21. package/apple/SkiaView.mm +210 -0
  22. package/cpp/api/JsiSkApi.h +2 -13
  23. package/cpp/api/JsiSkCanvas.h +4 -18
  24. package/cpp/api/JsiSkGraphiteContext.h +1 -5
  25. package/cpp/api/JsiSkGraphiteRecording.h +1 -5
  26. package/cpp/api/JsiSkImage.h +7 -41
  27. package/cpp/api/JsiSkImageFactory.h +0 -14
  28. package/cpp/api/JsiSkSurface.h +2 -16
  29. package/cpp/api/JsiSkSurfaceFactory.h +0 -8
  30. package/cpp/rnskia/RNDawnContext.h +6 -0
  31. package/cpp/rnskia/RNDawnInterop.cpp +0 -4
  32. package/cpp/rnskia/RNDawnUtils.h +0 -1
  33. package/cpp/rnskia/RNDawnWindowContext.cpp +10 -0
  34. package/cpp/rnskia/RNDawnWindowContext.h +4 -0
  35. package/cpp/rnskia/RNSkCanvasProvider.h +221 -0
  36. package/cpp/rnskia/RNSkGraphiteProducer.cpp +36 -14
  37. package/cpp/rnskia/RNSkGraphiteProducer.h +23 -8
  38. package/cpp/rnskia/RNSkGraphiteTarget.h +383 -0
  39. package/cpp/rnskia/RNSkJsiViewApi.h +9 -18
  40. package/cpp/rnskia/RNSkPlatformContext.h +9 -15
  41. package/cpp/rnskia/RNSkView.h +340 -245
  42. package/jestSetup.js +1 -3
  43. package/lib/commonjs/Platform/Platform.web.js +1 -1
  44. package/lib/commonjs/Platform/Platform.web.js.map +1 -1
  45. package/lib/commonjs/index.d.ts +1 -3
  46. package/lib/commonjs/index.js +3 -12
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/commonjs/mock/index.js +0 -1
  49. package/lib/commonjs/mock/index.js.map +1 -1
  50. package/lib/commonjs/renderer/Canvas.d.ts +15 -12
  51. package/lib/commonjs/renderer/Canvas.js +24 -20
  52. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  53. package/lib/commonjs/skia/types/Graphite.d.ts +3 -3
  54. package/lib/commonjs/skia/types/Graphite.js.map +1 -1
  55. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +2 -2
  56. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  57. package/lib/commonjs/skia/types/Skia.d.ts +1 -2
  58. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  59. package/lib/commonjs/skia/types/Surface/SurfaceFactory.d.ts +1 -1
  60. package/lib/commonjs/skia/types/Surface/SurfaceFactory.js.map +1 -1
  61. package/lib/commonjs/specs/NativeSkiaModule.web.d.ts +5 -4
  62. package/lib/commonjs/specs/NativeSkiaModule.web.js +5 -9
  63. package/lib/commonjs/specs/NativeSkiaModule.web.js.map +1 -1
  64. package/lib/{typescript/src/specs/SkiaPictureViewNativeComponent.d.ts → commonjs/specs/SkiaViewNativeComponent.d.ts} +0 -3
  65. package/lib/commonjs/specs/{SkiaPictureViewNativeComponent.js → SkiaViewNativeComponent.js} +2 -2
  66. package/lib/commonjs/specs/SkiaViewNativeComponent.js.map +1 -0
  67. package/lib/commonjs/specs/SkiaViewNativeComponent.web.d.ts +10 -0
  68. package/lib/commonjs/specs/SkiaViewNativeComponent.web.js +27 -0
  69. package/lib/commonjs/specs/SkiaViewNativeComponent.web.js.map +1 -0
  70. package/lib/commonjs/views/SkiaGraphiteView.d.ts +3 -4
  71. package/lib/commonjs/views/SkiaGraphiteView.js +23 -12
  72. package/lib/commonjs/views/SkiaGraphiteView.js.map +1 -1
  73. package/lib/commonjs/views/SkiaPictureView.d.ts +4 -1
  74. package/lib/commonjs/views/SkiaPictureView.js +12 -10
  75. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  76. package/lib/commonjs/views/SkiaView.web.d.ts +12 -0
  77. package/lib/commonjs/views/{SkiaGraphiteView.web.js → SkiaView.web.js} +82 -38
  78. package/lib/commonjs/views/SkiaView.web.js.map +1 -0
  79. package/lib/commonjs/views/SkiaWebRenderer.js +1 -1
  80. package/lib/commonjs/views/SkiaWebRenderer.js.map +1 -1
  81. package/lib/commonjs/views/android.d.ts +6 -0
  82. package/lib/commonjs/views/android.js +17 -0
  83. package/lib/commonjs/views/android.js.map +1 -0
  84. package/lib/commonjs/views/types.d.ts +3 -12
  85. package/lib/commonjs/views/types.js.map +1 -1
  86. package/lib/module/Platform/Platform.web.js +1 -1
  87. package/lib/module/Platform/Platform.web.js.map +1 -1
  88. package/lib/module/index.d.ts +1 -3
  89. package/lib/module/index.js +1 -3
  90. package/lib/module/index.js.map +1 -1
  91. package/lib/module/mock/index.js +0 -1
  92. package/lib/module/mock/index.js.map +1 -1
  93. package/lib/module/renderer/Canvas.d.ts +15 -12
  94. package/lib/module/renderer/Canvas.js +24 -19
  95. package/lib/module/renderer/Canvas.js.map +1 -1
  96. package/lib/module/skia/types/Graphite.d.ts +3 -3
  97. package/lib/module/skia/types/Graphite.js.map +1 -1
  98. package/lib/module/skia/types/Image/ImageFactory.d.ts +2 -2
  99. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  100. package/lib/module/skia/types/Skia.d.ts +1 -2
  101. package/lib/module/skia/types/Skia.js.map +1 -1
  102. package/lib/module/skia/types/Surface/SurfaceFactory.d.ts +1 -1
  103. package/lib/module/skia/types/Surface/SurfaceFactory.js.map +1 -1
  104. package/lib/module/specs/NativeSkiaModule.web.d.ts +5 -4
  105. package/lib/module/specs/NativeSkiaModule.web.js +5 -9
  106. package/lib/module/specs/NativeSkiaModule.web.js.map +1 -1
  107. package/lib/{commonjs/specs/SkiaPictureViewNativeComponent.d.ts → module/specs/SkiaViewNativeComponent.d.ts} +0 -3
  108. package/lib/module/specs/{SkiaPictureViewNativeComponent.js → SkiaViewNativeComponent.js} +2 -2
  109. package/lib/module/specs/SkiaViewNativeComponent.js.map +1 -0
  110. package/lib/module/specs/SkiaViewNativeComponent.web.d.ts +10 -0
  111. package/lib/module/specs/SkiaViewNativeComponent.web.js +21 -0
  112. package/lib/module/specs/SkiaViewNativeComponent.web.js.map +1 -0
  113. package/lib/module/views/SkiaGraphiteView.d.ts +3 -4
  114. package/lib/module/views/SkiaGraphiteView.js +23 -12
  115. package/lib/module/views/SkiaGraphiteView.js.map +1 -1
  116. package/lib/module/views/SkiaPictureView.d.ts +4 -1
  117. package/lib/module/views/SkiaPictureView.js +12 -10
  118. package/lib/module/views/SkiaPictureView.js.map +1 -1
  119. package/lib/module/views/SkiaView.web.d.ts +12 -0
  120. package/lib/module/views/{SkiaGraphiteView.web.js → SkiaView.web.js} +80 -36
  121. package/lib/module/views/SkiaView.web.js.map +1 -0
  122. package/lib/module/views/SkiaWebRenderer.js +1 -1
  123. package/lib/module/views/SkiaWebRenderer.js.map +1 -1
  124. package/lib/module/views/android.d.ts +6 -0
  125. package/lib/module/views/android.js +10 -0
  126. package/lib/module/views/android.js.map +1 -0
  127. package/lib/module/views/types.d.ts +3 -12
  128. package/lib/module/views/types.js.map +1 -1
  129. package/lib/typescript/src/index.d.ts +1 -3
  130. package/lib/typescript/src/renderer/Canvas.d.ts +15 -12
  131. package/lib/typescript/src/skia/types/Graphite.d.ts +3 -3
  132. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +2 -2
  133. package/lib/typescript/src/skia/types/Skia.d.ts +1 -2
  134. package/lib/typescript/src/skia/types/Surface/SurfaceFactory.d.ts +1 -1
  135. package/lib/typescript/src/specs/NativeSkiaModule.web.d.ts +5 -4
  136. package/lib/{module/specs/SkiaPictureViewNativeComponent.d.ts → typescript/src/specs/SkiaViewNativeComponent.d.ts} +0 -3
  137. package/lib/typescript/src/specs/SkiaViewNativeComponent.web.d.ts +10 -0
  138. package/lib/typescript/src/views/SkiaGraphiteView.d.ts +3 -4
  139. package/lib/typescript/src/views/SkiaPictureView.d.ts +4 -1
  140. package/lib/typescript/src/views/SkiaView.web.d.ts +12 -0
  141. package/lib/typescript/src/views/android.d.ts +6 -0
  142. package/lib/typescript/src/views/types.d.ts +3 -12
  143. package/package.json +8 -16
  144. package/react-native-skia.podspec +50 -57
  145. package/src/Platform/Platform.web.tsx +1 -1
  146. package/src/index.ts +1 -3
  147. package/src/mock/index.ts +0 -1
  148. package/src/renderer/Canvas.tsx +23 -27
  149. package/src/skia/types/Graphite.ts +3 -3
  150. package/src/skia/types/Image/ImageFactory.ts +2 -2
  151. package/src/skia/types/Skia.ts +1 -2
  152. package/src/skia/types/Surface/SurfaceFactory.ts +1 -1
  153. package/src/specs/NativeSkiaModule.web.ts +9 -21
  154. package/src/specs/{SkiaPictureViewNativeComponent.ts → SkiaViewNativeComponent.ts} +1 -4
  155. package/src/specs/{SkiaPictureViewNativeComponent.web.ts → SkiaViewNativeComponent.web.ts} +8 -10
  156. package/src/views/SkiaGraphiteView.tsx +27 -16
  157. package/src/views/SkiaPictureView.tsx +11 -10
  158. package/src/views/{SkiaGraphiteView.web.tsx → SkiaView.web.tsx} +100 -53
  159. package/src/views/SkiaWebRenderer.ts +1 -1
  160. package/src/views/android.ts +16 -0
  161. package/src/views/types.ts +3 -14
  162. package/android/cpp/jni/include/JniSkiaBaseView.h +0 -92
  163. package/android/cpp/jni/include/JniSkiaGraphiteView.h +0 -176
  164. package/android/cpp/jni/include/JniSkiaPictureView.h +0 -172
  165. package/android/cpp/rnskia-android/GrAHardwareBufferUtils.cpp +0 -245
  166. package/android/cpp/rnskia-android/GrAHardwareBufferUtils.h +0 -33
  167. package/android/cpp/rnskia-android/OpenGLContext.h +0 -248
  168. package/android/cpp/rnskia-android/OpenGLWindowContext.cpp +0 -67
  169. package/android/cpp/rnskia-android/OpenGLWindowContext.h +0 -75
  170. package/android/cpp/rnskia-android/RNSkAndroidView.h +0 -67
  171. package/android/cpp/rnskia-android/gl/Context.h +0 -80
  172. package/android/cpp/rnskia-android/gl/Display.h +0 -123
  173. package/android/cpp/rnskia-android/gl/Error.cpp +0 -45
  174. package/android/cpp/rnskia-android/gl/Error.h +0 -8
  175. package/android/cpp/rnskia-android/gl/Surface.h +0 -43
  176. package/android/src/main/java/com/reactnative/skia/SkiaBaseViewManager.java +0 -65
  177. package/android/src/main/java/com/reactnative/skia/SkiaGraphiteView.java +0 -78
  178. package/android/src/main/java/com/reactnative/skia/SkiaGraphiteViewManager.java +0 -32
  179. package/android/src/main/java/com/reactnative/skia/SkiaPictureView.java +0 -105
  180. package/android/src/main/java/com/reactnative/skia/SkiaPictureViewManager.java +0 -44
  181. package/apple/MetalContext.h +0 -116
  182. package/apple/MetalContext.mm +0 -38
  183. package/apple/MetalWindowContext.h +0 -42
  184. package/apple/MetalWindowContext.mm +0 -95
  185. package/apple/RNSkAppleView.h +0 -49
  186. package/apple/RNSkAppleView.mm +0 -35
  187. package/apple/SkiaCVPixelBufferUtils.h +0 -122
  188. package/apple/SkiaCVPixelBufferUtils.mm +0 -535
  189. package/apple/SkiaGraphiteView.h +0 -26
  190. package/apple/SkiaGraphiteView.mm +0 -180
  191. package/apple/SkiaPictureView.h +0 -7
  192. package/apple/SkiaPictureView.mm +0 -70
  193. package/apple/SkiaUIView.h +0 -31
  194. package/apple/SkiaUIView.mm +0 -164
  195. package/cpp/rnskia/RNSkGraphiteView.h +0 -708
  196. package/cpp/rnskia/RNSkPictureView.cpp +0 -69
  197. package/cpp/rnskia/RNSkPictureView.h +0 -211
  198. package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +0 -1162
  199. package/lib/commonjs/renderer/DefaultCanvas.d.ts +0 -8
  200. package/lib/commonjs/renderer/DefaultCanvas.js +0 -42
  201. package/lib/commonjs/renderer/DefaultCanvas.js.map +0 -1
  202. package/lib/commonjs/renderer/GraphiteCanvas.d.ts +0 -22
  203. package/lib/commonjs/renderer/GraphiteCanvas.js +0 -64
  204. package/lib/commonjs/renderer/GraphiteCanvas.js.map +0 -1
  205. package/lib/commonjs/renderer/GraphiteCanvas.web.d.ts +0 -1
  206. package/lib/commonjs/renderer/GraphiteCanvas.web.js +0 -13
  207. package/lib/commonjs/renderer/GraphiteCanvas.web.js.map +0 -1
  208. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.d.ts +0 -10
  209. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.js +0 -12
  210. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.js.map +0 -1
  211. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.web.d.ts +0 -9
  212. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.web.js +0 -28
  213. package/lib/commonjs/specs/SkiaGraphiteViewNativeComponent.web.js.map +0 -1
  214. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +0 -1
  215. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.web.d.ts +0 -10
  216. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.web.js +0 -29
  217. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.web.js.map +0 -1
  218. package/lib/commonjs/views/SkiaGraphiteView.web.d.ts +0 -14
  219. package/lib/commonjs/views/SkiaGraphiteView.web.js.map +0 -1
  220. package/lib/commonjs/views/SkiaPictureView.web.d.ts +0 -11
  221. package/lib/commonjs/views/SkiaPictureView.web.js +0 -165
  222. package/lib/commonjs/views/SkiaPictureView.web.js.map +0 -1
  223. package/lib/module/renderer/DefaultCanvas.d.ts +0 -8
  224. package/lib/module/renderer/DefaultCanvas.js +0 -34
  225. package/lib/module/renderer/DefaultCanvas.js.map +0 -1
  226. package/lib/module/renderer/GraphiteCanvas.d.ts +0 -22
  227. package/lib/module/renderer/GraphiteCanvas.js +0 -57
  228. package/lib/module/renderer/GraphiteCanvas.js.map +0 -1
  229. package/lib/module/renderer/GraphiteCanvas.web.d.ts +0 -1
  230. package/lib/module/renderer/GraphiteCanvas.web.js +0 -4
  231. package/lib/module/renderer/GraphiteCanvas.web.js.map +0 -1
  232. package/lib/module/specs/SkiaGraphiteViewNativeComponent.d.ts +0 -10
  233. package/lib/module/specs/SkiaGraphiteViewNativeComponent.js +0 -8
  234. package/lib/module/specs/SkiaGraphiteViewNativeComponent.js.map +0 -1
  235. package/lib/module/specs/SkiaGraphiteViewNativeComponent.web.d.ts +0 -9
  236. package/lib/module/specs/SkiaGraphiteViewNativeComponent.web.js +0 -22
  237. package/lib/module/specs/SkiaGraphiteViewNativeComponent.web.js.map +0 -1
  238. package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +0 -1
  239. package/lib/module/specs/SkiaPictureViewNativeComponent.web.d.ts +0 -10
  240. package/lib/module/specs/SkiaPictureViewNativeComponent.web.js +0 -23
  241. package/lib/module/specs/SkiaPictureViewNativeComponent.web.js.map +0 -1
  242. package/lib/module/views/SkiaGraphiteView.web.d.ts +0 -14
  243. package/lib/module/views/SkiaGraphiteView.web.js.map +0 -1
  244. package/lib/module/views/SkiaPictureView.web.d.ts +0 -11
  245. package/lib/module/views/SkiaPictureView.web.js +0 -156
  246. package/lib/module/views/SkiaPictureView.web.js.map +0 -1
  247. package/lib/typescript/src/renderer/DefaultCanvas.d.ts +0 -8
  248. package/lib/typescript/src/renderer/GraphiteCanvas.d.ts +0 -22
  249. package/lib/typescript/src/renderer/GraphiteCanvas.web.d.ts +0 -1
  250. package/lib/typescript/src/specs/SkiaGraphiteViewNativeComponent.d.ts +0 -10
  251. package/lib/typescript/src/specs/SkiaGraphiteViewNativeComponent.web.d.ts +0 -9
  252. package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.web.d.ts +0 -10
  253. package/lib/typescript/src/views/SkiaGraphiteView.web.d.ts +0 -14
  254. package/lib/typescript/src/views/SkiaPictureView.web.d.ts +0 -11
  255. package/libs/.graphite +0 -1
  256. package/src/renderer/DefaultCanvas.tsx +0 -41
  257. package/src/renderer/GraphiteCanvas.tsx +0 -61
  258. package/src/renderer/GraphiteCanvas.web.tsx +0 -3
  259. package/src/specs/SkiaGraphiteViewNativeComponent.ts +0 -17
  260. package/src/specs/SkiaGraphiteViewNativeComponent.web.ts +0 -31
  261. package/src/views/SkiaPictureView.web.tsx +0 -224
@@ -1 +1 @@
1
- {"version":3,"names":["hasPicture","view","hasContext","global","SkiaViewApi","views","deferedPictures","unregisteredViews","Set","deferedOnSize","web","registerView","nativeId","delete","setPicture","unregisterView","add","setJsiProperty","name","value","id","has","size","getSize","width","height","requestRedraw","_this$views","redraw","applyUpdates","makeImageSnapshot","rect","Error","makeGraphiteContext","getContext","makeImageSnapshotAsync","Promise","resolve","reject","result","_default","exports","default"],"sources":["NativeSkiaModule.web.ts"],"sourcesContent":["/* eslint-disable import/no-anonymous-default-export */\nimport type {\n SkGraphiteContext,\n SkImage,\n SkPicture,\n SkRect,\n} from \"../skia/types\";\nimport type { ISkiaViewApi } from \"../views/types\";\n\n/** What every web view registers under its native id. */\nexport interface SkiaWebViewHandle {\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport interface SkiaGraphiteViewHandle extends SkiaWebViewHandle {\n getContext(): SkGraphiteContext;\n}\n\ninterface PictureHandle extends SkiaWebViewHandle {\n setPicture(picture: SkPicture): void;\n}\n\nconst hasPicture = (view: SkiaWebViewHandle): view is PictureHandle =>\n \"setPicture\" in view;\n\nconst hasContext = (view: SkiaWebViewHandle): view is SkiaGraphiteViewHandle =>\n \"getContext\" in view;\n\nexport type ISkiaViewApiWeb = ISkiaViewApi & {\n views: Record<string, SkiaWebViewHandle>;\n deferedPictures: Record<string, SkPicture>;\n unregisteredViews: Set<string>;\n registerView(nativeId: string, view: SkiaWebViewHandle): void;\n unregisterView(nativeId: string): void;\n};\n\nglobal.SkiaViewApi = {\n views: {},\n deferedPictures: {},\n unregisteredViews: new Set<string>(),\n deferedOnSize: {},\n web: true,\n registerView(nativeId: string, view: SkiaWebViewHandle) {\n this.unregisteredViews.delete(nativeId);\n // Maybe a picture for this view was already set\n if (this.deferedPictures[nativeId] && hasPicture(view)) {\n view.setPicture(this.deferedPictures[nativeId] as SkPicture);\n delete this.deferedPictures[nativeId];\n }\n this.views[nativeId] = view;\n },\n unregisterView(nativeId: string) {\n // Views must be removed on unmount: the handle's closures capture the\n // canvas element, so a stale entry retains the whole detached DOM tree.\n this.unregisteredViews.add(nativeId);\n delete this.views[nativeId];\n delete this.deferedPictures[nativeId];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setJsiProperty(nativeId: number, name: string, value: any) {\n if (name === \"picture\") {\n const id = `${nativeId}`;\n const view = this.views[id];\n if (view) {\n if (hasPicture(view)) {\n view.setPicture(value);\n }\n } else if (!this.unregisteredViews.has(id)) {\n this.deferedPictures[id] = value;\n }\n // Otherwise the view has unmounted (e.g. a trailing animation frame):\n // drop the picture instead of deferring it for an id that will never\n // register again, which would retain it forever.\n }\n },\n size(nativeId: number) {\n if (this.views[`${nativeId}`]) {\n return this.views[`${nativeId}`].getSize();\n } else {\n return { width: 0, height: 0 };\n }\n },\n requestRedraw(nativeId: number) {\n // The view may already have unmounted (e.g. a trailing animation frame).\n this.views[`${nativeId}`]?.redraw();\n },\n applyUpdates() {\n // Web canvases are driven from JS (see Container.web.ts); there is no\n // view-owned recorder to update.\n },\n makeImageSnapshot(nativeId: number, rect?: SkRect) {\n const view = this.views[`${nativeId}`];\n if (!view) {\n throw new Error(\n `Cannot make image snapshot: view with nativeID ${nativeId} is not registered (it may have unmounted)`\n );\n }\n return view.makeImageSnapshot(rect);\n },\n makeGraphiteContext(nativeId: number) {\n const view = this.views[`${nativeId}`];\n if (!view || !hasContext(view)) {\n throw new Error(\n `Cannot make a Graphite context: no SkiaGraphiteView with nativeID ${nativeId} is mounted`\n );\n }\n return view.getContext();\n },\n makeImageSnapshotAsync(nativeId: number, rect?: SkRect) {\n return new Promise((resolve, reject) => {\n const view = this.views[`${nativeId}`];\n if (!view) {\n reject(\n new Error(\n `Cannot make image snapshot: view with nativeID ${nativeId} is not registered (it may have unmounted)`\n )\n );\n return;\n }\n const result = view.makeImageSnapshot(rect);\n if (result) {\n resolve(result);\n } else {\n reject(new Error(\"Failed to make image snapshot\"));\n }\n });\n },\n} as ISkiaViewApiWeb;\n\n// eslint-disable-next-line import/no-default-export\nexport default {};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["global","SkiaViewApi","views","deferedPictures","unregisteredViews","Set","deferedOnSize","web","registerView","nativeId","view","delete","setPicture","unregisterView","add","setJsiProperty","name","value","id","has","size","getSize","width","height","requestRedraw","_this$views","redraw","applyUpdates","makeImageSnapshot","rect","Error","makeGraphiteContext","getContext","makeImageSnapshotAsync","Promise","resolve","reject","result","_default","exports","default"],"sources":["NativeSkiaModule.web.ts"],"sourcesContent":["/* eslint-disable import/no-anonymous-default-export */\nimport type {\n SkGraphiteContext,\n SkImage,\n SkPicture,\n SkRect,\n} from \"../skia/types\";\nimport type { ISkiaViewApi } from \"../views/types\";\n\n/** What the web view registers under its native id. */\nexport interface SkiaWebViewHandle {\n /** Shows a picture: the frame of a <Canvas> or a <SkiaPictureView>. */\n setPicture(picture: SkPicture): void;\n /** The recording side of the view, see SkiaGraphiteView. */\n getContext(): SkGraphiteContext;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport type ISkiaViewApiWeb = ISkiaViewApi & {\n views: Record<string, SkiaWebViewHandle>;\n deferedPictures: Record<string, SkPicture>;\n unregisteredViews: Set<string>;\n registerView(nativeId: string, view: SkiaWebViewHandle): void;\n unregisterView(nativeId: string): void;\n};\n\nglobal.SkiaViewApi = {\n views: {},\n deferedPictures: {},\n unregisteredViews: new Set<string>(),\n deferedOnSize: {},\n web: true,\n registerView(nativeId: string, view: SkiaWebViewHandle) {\n this.unregisteredViews.delete(nativeId);\n // Maybe a picture for this view was already set\n if (this.deferedPictures[nativeId]) {\n view.setPicture(this.deferedPictures[nativeId] as SkPicture);\n delete this.deferedPictures[nativeId];\n }\n this.views[nativeId] = view;\n },\n unregisterView(nativeId: string) {\n // Views must be removed on unmount: the handle's closures capture the\n // canvas element, so a stale entry retains the whole detached DOM tree.\n this.unregisteredViews.add(nativeId);\n delete this.views[nativeId];\n delete this.deferedPictures[nativeId];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setJsiProperty(nativeId: number, name: string, value: any) {\n if (name === \"picture\") {\n const id = `${nativeId}`;\n const view = this.views[id];\n if (view) {\n view.setPicture(value);\n } else if (!this.unregisteredViews.has(id)) {\n this.deferedPictures[id] = value;\n }\n // Otherwise the view has unmounted (e.g. a trailing animation frame):\n // drop the picture instead of deferring it for an id that will never\n // register again, which would retain it forever.\n }\n },\n size(nativeId: number) {\n if (this.views[`${nativeId}`]) {\n return this.views[`${nativeId}`].getSize();\n } else {\n return { width: 0, height: 0 };\n }\n },\n requestRedraw(nativeId: number) {\n // The view may already have unmounted (e.g. a trailing animation frame).\n this.views[`${nativeId}`]?.redraw();\n },\n applyUpdates() {\n // Web canvases are driven from JS (see Container.web.ts); there is no\n // view-owned recorder to update.\n },\n makeImageSnapshot(nativeId: number, rect?: SkRect) {\n const view = this.views[`${nativeId}`];\n if (!view) {\n throw new Error(\n `Cannot make image snapshot: view with nativeID ${nativeId} is not registered (it may have unmounted)`\n );\n }\n return view.makeImageSnapshot(rect);\n },\n makeGraphiteContext(nativeId: number) {\n const view = this.views[`${nativeId}`];\n if (!view) {\n throw new Error(\n `Cannot make a Graphite context: no view with nativeID ${nativeId} is mounted`\n );\n }\n return view.getContext();\n },\n makeImageSnapshotAsync(nativeId: number, rect?: SkRect) {\n return new Promise((resolve, reject) => {\n const view = this.views[`${nativeId}`];\n if (!view) {\n reject(\n new Error(\n `Cannot make image snapshot: view with nativeID ${nativeId} is not registered (it may have unmounted)`\n )\n );\n return;\n }\n const result = view.makeImageSnapshot(rect);\n if (result) {\n resolve(result);\n } else {\n reject(new Error(\"Failed to make image snapshot\"));\n }\n });\n },\n} as ISkiaViewApiWeb;\n\n// eslint-disable-next-line import/no-default-export\nexport default {};\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,8 @@
1
1
  import { type ViewProps } from "react-native";
2
2
  import type { WithDefault } from "react-native/Libraries/Types/CodegenTypes";
3
3
  export interface NativeProps extends ViewProps {
4
- debug?: boolean;
5
4
  opaque?: boolean;
6
- colorSpace?: string;
7
5
  highBitDepth?: boolean;
8
- androidWarmup?: boolean;
9
6
  androidSurfaceType?: WithDefault<"auto" | "SurfaceView" | "TextureView", "auto">;
10
7
  androidZOrderOnTop?: WithDefault<boolean, false>;
11
8
  pointerEvents?: WithDefault<"auto" | "none" | "box-none" | "box-only", "auto">;
@@ -8,5 +8,5 @@ var _reactNative = require("react-native");
8
8
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
9
9
  // @ts-ignore - pointerEvents needs to be redeclared for codegen to generate native bindings
10
10
  // eslint-disable-next-line import/no-default-export
11
- var _default = exports.default = (0, _reactNative.codegenNativeComponent)("SkiaPictureView");
12
- //# sourceMappingURL=SkiaPictureViewNativeComponent.js.map
11
+ var _default = exports.default = (0, _reactNative.codegenNativeComponent)("SkiaView");
12
+ //# sourceMappingURL=SkiaViewNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","codegenNativeComponent"],"sources":["SkiaViewNativeComponent.ts"],"sourcesContent":["import { codegenNativeComponent, type ViewProps } from \"react-native\";\nimport type { WithDefault } from \"react-native/Libraries/Types/CodegenTypes\";\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore - pointerEvents needs to be redeclared for codegen to generate native bindings\nexport interface NativeProps extends ViewProps {\n opaque?: boolean;\n highBitDepth?: boolean;\n androidSurfaceType?: WithDefault<\n \"auto\" | \"SurfaceView\" | \"TextureView\",\n \"auto\"\n >;\n androidZOrderOnTop?: WithDefault<boolean, false>;\n pointerEvents?: WithDefault<\n \"auto\" | \"none\" | \"box-none\" | \"box-only\",\n \"auto\"\n >;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaView\");\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AAeA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe,IAAAC,mCAAsB,EAAc,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { ViewProps } from "react-native";
2
+ export interface NativeProps extends ViewProps {
3
+ opaque?: boolean;
4
+ highBitDepth?: boolean;
5
+ nativeID: string;
6
+ androidSurfaceType?: "auto" | "SurfaceView" | "TextureView";
7
+ androidZOrderOnTop?: boolean;
8
+ }
9
+ declare const SkiaViewNativeComponent: ({ nativeID, onLayout, opaque: _opaque, highBitDepth: _highBitDepth, androidSurfaceType: _androidSurfaceType, androidZOrderOnTop: _androidZOrderOnTop, ...viewProps }: NativeProps) => import("react").FunctionComponentElement<import("../views/SkiaView.web").SkiaViewProps>;
10
+ export default SkiaViewNativeComponent;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _SkiaView = require("../views/SkiaView.web");
9
+ const SkiaViewNativeComponent = ({
10
+ nativeID,
11
+ onLayout,
12
+ // Surface settings, never reach the DOM
13
+ opaque: _opaque,
14
+ highBitDepth: _highBitDepth,
15
+ androidSurfaceType: _androidSurfaceType,
16
+ androidZOrderOnTop: _androidZOrderOnTop,
17
+ ...viewProps
18
+ }) => {
19
+ return /*#__PURE__*/(0, _react.createElement)(_SkiaView.SkiaView, {
20
+ nativeID,
21
+ onLayout,
22
+ ...viewProps
23
+ });
24
+ };
25
+ // eslint-disable-next-line import/no-default-export
26
+ var _default = exports.default = SkiaViewNativeComponent;
27
+ //# sourceMappingURL=SkiaViewNativeComponent.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_SkiaView","SkiaViewNativeComponent","nativeID","onLayout","opaque","_opaque","highBitDepth","_highBitDepth","androidSurfaceType","_androidSurfaceType","androidZOrderOnTop","_androidZOrderOnTop","viewProps","createElement","SkiaView","_default","exports","default"],"sources":["SkiaViewNativeComponent.web.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport { createElement } from \"react\";\n\nimport { SkiaView } from \"../views/SkiaView.web\";\n\nexport interface NativeProps extends ViewProps {\n opaque?: boolean;\n highBitDepth?: boolean;\n nativeID: string;\n androidSurfaceType?: \"auto\" | \"SurfaceView\" | \"TextureView\";\n androidZOrderOnTop?: boolean;\n}\n\nconst SkiaViewNativeComponent = ({\n nativeID,\n onLayout,\n // Surface settings, never reach the DOM\n opaque: _opaque,\n highBitDepth: _highBitDepth,\n androidSurfaceType: _androidSurfaceType,\n androidZOrderOnTop: _androidZOrderOnTop,\n ...viewProps\n}: NativeProps) => {\n return createElement(SkiaView, {\n nativeID,\n onLayout,\n ...viewProps,\n });\n};\n// eslint-disable-next-line import/no-default-export\nexport default SkiaViewNativeComponent;\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAUA,MAAME,uBAAuB,GAAGA,CAAC;EAC/BC,QAAQ;EACRC,QAAQ;EACR;EACAC,MAAM,EAAEC,OAAO;EACfC,YAAY,EAAEC,aAAa;EAC3BC,kBAAkB,EAAEC,mBAAmB;EACvCC,kBAAkB,EAAEC,mBAAmB;EACvC,GAAGC;AACQ,CAAC,KAAK;EACjB,oBAAO,IAAAC,oBAAa,EAACC,kBAAQ,EAAE;IAC7BZ,QAAQ;IACRC,QAAQ;IACR,GAAGS;EACL,CAAC,CAAC;AACJ,CAAC;AACD;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACehB,uBAAuB","ignoreList":[]}
@@ -13,8 +13,7 @@ export interface SkiaGraphiteViewProps extends SkiaGraphiteViewNativeProps {
13
13
  ref?: React.Ref<SkiaGraphiteViewRef>;
14
14
  }
15
15
  /**
16
- * A view presenting frames recorded with Skia Graphite. Requires the Graphite
17
- * backend (install-skia-graphite); with the default backend it renders
18
- * nothing. See {@link SkGraphiteContext}.
16
+ * A view whose frames are recorded from JavaScript, on any runtime, through
17
+ * the context of its ref. See {@link SkGraphiteContext}.
19
18
  */
20
- export declare const SkiaGraphiteView: ({ debug, opaque, highBitDepth, ref, ...viewProps }: SkiaGraphiteViewProps) => React.JSX.Element;
19
+ export declare const SkiaGraphiteView: ({ opaque, highBitDepth, android, ref, ...viewProps }: SkiaGraphiteViewProps) => React.JSX.Element;
@@ -5,21 +5,36 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SkiaGraphiteView = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _SkiaGraphiteViewNativeComponent = _interopRequireDefault(require("../specs/SkiaGraphiteViewNativeComponent"));
8
+ var _SkiaViewNativeComponent = _interopRequireDefault(require("../specs/SkiaViewNativeComponent"));
9
+ var _Platform = require("../Platform");
9
10
  var _api = require("./api");
11
+ var _android = require("./android");
10
12
  var _SkiaViewNativeId = require("./SkiaViewNativeId");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
15
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
+ // The layout is known synchronously on the new architecture;
17
+ // getBoundingClientRect became stable in React Native 0.83. On the web the
18
+ // view measures itself (see SkiaView.web).
19
+ const measureLayout = view => {
20
+ if (_Platform.Platform.OS === "web") {
21
+ return {
22
+ width: 0,
23
+ height: 0
24
+ };
25
+ }
26
+ const host = view;
27
+ return host.getBoundingClientRect ? host.getBoundingClientRect() : host.unstable_getBoundingClientRect();
28
+ };
29
+
14
30
  /**
15
- * A view presenting frames recorded with Skia Graphite. Requires the Graphite
16
- * backend (install-skia-graphite); with the default backend it renders
17
- * nothing. See {@link SkGraphiteContext}.
31
+ * A view whose frames are recorded from JavaScript, on any runtime, through
32
+ * the context of its ref. See {@link SkGraphiteContext}.
18
33
  */
19
34
  const SkiaGraphiteView = ({
20
- debug = false,
21
35
  opaque = false,
22
36
  highBitDepth = false,
37
+ android,
23
38
  ref,
24
39
  ...viewProps
25
40
  }) => {
@@ -29,25 +44,21 @@ const SkiaGraphiteView = ({
29
44
  getNativeId: () => nativeId,
30
45
  getContext: () => {
31
46
  assertSkiaViewApi();
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
47
  const view = viewRef.current;
34
48
  if (!view) {
35
49
  throw new Error("SkiaGraphiteView: getContext() was called before the view was mounted.");
36
50
  }
37
- // The layout is known synchronously on the new architecture;
38
- // getBoundingClientRect became stable in React Native 0.83.
39
- const size = "getBoundingClientRect" in view ? view.getBoundingClientRect() : view.unstable_getBoundingClientRect();
51
+ const size = measureLayout(view);
40
52
  return _api.SkiaViewApi.makeGraphiteContext(nativeId, size.width, size.height, opaque, highBitDepth);
41
53
  }
42
54
  }), [nativeId, opaque, highBitDepth]);
43
- return /*#__PURE__*/_react.default.createElement(_SkiaGraphiteViewNativeComponent.default, _extends({
55
+ return /*#__PURE__*/_react.default.createElement(_SkiaViewNativeComponent.default, _extends({
44
56
  ref: viewRef,
45
57
  collapsable: false,
46
58
  nativeID: `${nativeId}`,
47
- debug: debug,
48
59
  opaque: opaque,
49
60
  highBitDepth: highBitDepth
50
- }, viewProps));
61
+ }, (0, _android.androidNativeProps)(android), viewProps));
51
62
  };
52
63
  exports.SkiaGraphiteView = SkiaGraphiteView;
53
64
  const assertSkiaViewApi = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_SkiaGraphiteViewNativeComponent","_interopRequireDefault","_api","_SkiaViewNativeId","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","SkiaGraphiteView","debug","opaque","highBitDepth","ref","viewProps","nativeId","useMemo","SkiaViewNativeId","current","viewRef","useRef","useImperativeHandle","getNativeId","getContext","assertSkiaViewApi","view","Error","size","getBoundingClientRect","unstable_getBoundingClientRect","SkiaViewApi","makeGraphiteContext","width","height","createElement","collapsable","nativeID","exports"],"sources":["SkiaGraphiteView.tsx"],"sourcesContent":["import React, { useImperativeHandle, useMemo, useRef } from \"react\";\n\nimport type { SkGraphiteContext } from \"../skia/types\";\nimport SkiaGraphiteViewNativeComponent from \"../specs/SkiaGraphiteViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaGraphiteViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nexport interface SkiaGraphiteViewRef {\n /**\n * The recording side of the view. Call it once the view is mounted. The\n * returned context can be captured into worklets and used from any runtime.\n */\n getContext(): SkGraphiteContext;\n getNativeId(): number;\n}\n\nexport interface SkiaGraphiteViewProps extends SkiaGraphiteViewNativeProps {\n ref?: React.Ref<SkiaGraphiteViewRef>;\n}\n\n/**\n * A view presenting frames recorded with Skia Graphite. Requires the Graphite\n * backend (install-skia-graphite); with the default backend it renders\n * nothing. See {@link SkGraphiteContext}.\n */\nexport const SkiaGraphiteView = ({\n debug = false,\n opaque = false,\n highBitDepth = false,\n ref,\n ...viewProps\n}: SkiaGraphiteViewProps) => {\n const nativeId = useMemo(() => SkiaViewNativeId.current++, []);\n const viewRef =\n useRef<React.ComponentRef<typeof SkiaGraphiteViewNativeComponent>>(null);\n useImperativeHandle(\n ref,\n () => ({\n getNativeId: () => nativeId,\n getContext: () => {\n assertSkiaViewApi();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const view = viewRef.current as any;\n if (!view) {\n throw new Error(\n \"SkiaGraphiteView: getContext() was called before the view was mounted.\"\n );\n }\n // The layout is known synchronously on the new architecture;\n // getBoundingClientRect became stable in React Native 0.83.\n const size =\n \"getBoundingClientRect\" in view\n ? view.getBoundingClientRect()\n : view.unstable_getBoundingClientRect();\n return SkiaViewApi.makeGraphiteContext(\n nativeId,\n size.width,\n size.height,\n opaque,\n highBitDepth\n );\n },\n }),\n [nativeId, opaque, highBitDepth]\n );\n return (\n <SkiaGraphiteViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n debug={debug}\n opaque={opaque}\n highBitDepth={highBitDepth}\n {...viewProps}\n />\n );\n};\n\nconst assertSkiaViewApi = () => {\n if (SkiaViewApi === null || SkiaViewApi.makeGraphiteContext === null) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_SkiaViewNativeComponent","_interopRequireDefault","_Platform","_api","_android","_SkiaViewNativeId","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","measureLayout","view","Platform","OS","width","height","host","getBoundingClientRect","unstable_getBoundingClientRect","SkiaGraphiteView","opaque","highBitDepth","android","ref","viewProps","nativeId","useMemo","SkiaViewNativeId","current","viewRef","useRef","useImperativeHandle","getNativeId","getContext","assertSkiaViewApi","Error","size","SkiaViewApi","makeGraphiteContext","createElement","collapsable","nativeID","androidNativeProps","exports"],"sources":["SkiaGraphiteView.tsx"],"sourcesContent":["import React, { useImperativeHandle, useMemo, useRef } from \"react\";\n\nimport type { SkGraphiteContext } from \"../skia/types\";\nimport SkiaViewNativeComponent from \"../specs/SkiaViewNativeComponent\";\nimport { Platform } from \"../Platform\";\n\nimport { SkiaViewApi } from \"./api\";\nimport { androidNativeProps } from \"./android\";\nimport type { SkiaGraphiteViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nexport interface SkiaGraphiteViewRef {\n /**\n * The recording side of the view. Call it once the view is mounted. The\n * returned context can be captured into worklets and used from any runtime.\n */\n getContext(): SkGraphiteContext;\n getNativeId(): number;\n}\n\nexport interface SkiaGraphiteViewProps extends SkiaGraphiteViewNativeProps {\n ref?: React.Ref<SkiaGraphiteViewRef>;\n}\n\n// The layout is known synchronously on the new architecture;\n// getBoundingClientRect became stable in React Native 0.83. On the web the\n// view measures itself (see SkiaView.web).\nconst measureLayout = (view: unknown) => {\n if (Platform.OS === \"web\") {\n return { width: 0, height: 0 };\n }\n const host = view as {\n getBoundingClientRect?: () => { width: number; height: number };\n unstable_getBoundingClientRect: () => { width: number; height: number };\n };\n return host.getBoundingClientRect\n ? host.getBoundingClientRect()\n : host.unstable_getBoundingClientRect();\n};\n\n/**\n * A view whose frames are recorded from JavaScript, on any runtime, through\n * the context of its ref. See {@link SkGraphiteContext}.\n */\nexport const SkiaGraphiteView = ({\n opaque = false,\n highBitDepth = false,\n android,\n ref,\n ...viewProps\n}: SkiaGraphiteViewProps) => {\n const nativeId = useMemo(() => SkiaViewNativeId.current++, []);\n const viewRef =\n useRef<React.ComponentRef<typeof SkiaViewNativeComponent>>(null);\n useImperativeHandle(\n ref,\n () => ({\n getNativeId: () => nativeId,\n getContext: () => {\n assertSkiaViewApi();\n const view = viewRef.current;\n if (!view) {\n throw new Error(\n \"SkiaGraphiteView: getContext() was called before the view was mounted.\"\n );\n }\n const size = measureLayout(view);\n return SkiaViewApi.makeGraphiteContext(\n nativeId,\n size.width,\n size.height,\n opaque,\n highBitDepth\n );\n },\n }),\n [nativeId, opaque, highBitDepth]\n );\n return (\n <SkiaViewNativeComponent\n ref={viewRef}\n collapsable={false}\n nativeID={`${nativeId}`}\n opaque={opaque}\n highBitDepth={highBitDepth}\n {...androidNativeProps(android)}\n {...viewProps}\n />\n );\n};\n\nconst assertSkiaViewApi = () => {\n if (SkiaViewApi === null || SkiaViewApi.makeGraphiteContext === null) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,11 @@ 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
- androidWarmup?: boolean;
7
6
  }
7
+ /**
8
+ * A view showing a picture. The picture is handed to the native view, which
9
+ * records it once (and again on every redraw) for its surface.
10
+ */
8
11
  export declare class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
9
12
  private requestId;
10
13
  constructor(props: SkiaPictureViewProps);
@@ -5,15 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SkiaPictureView = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _SkiaPictureViewNativeComponent = _interopRequireDefault(require("../specs/SkiaPictureViewNativeComponent"));
8
+ var _SkiaViewNativeComponent = _interopRequireDefault(require("../specs/SkiaViewNativeComponent"));
9
9
  var _api = require("./api");
10
+ var _android = require("./android");
10
11
  var _SkiaViewNativeId = require("./SkiaViewNativeId");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
13
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; }
14
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
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); }
16
- const NativeSkiaPictureView = _SkiaPictureViewNativeComponent.default;
17
+ /**
18
+ * A view showing a picture. The picture is handed to the native view, which
19
+ * records it once (and again on every redraw) for its surface.
20
+ */
17
21
  class SkiaPictureView extends _react.default.Component {
18
22
  constructor(props) {
19
23
  super(props);
@@ -73,21 +77,19 @@ class SkiaPictureView extends _react.default.Component {
73
77
  }
74
78
  render() {
75
79
  const {
76
- mode,
77
- debug = false,
80
+ mode: _mode,
81
+ picture: _picture,
78
82
  opaque = false,
79
83
  highBitDepth = false,
80
- androidWarmup = false,
84
+ android,
81
85
  ...viewProps
82
86
  } = this.props;
83
- return /*#__PURE__*/_react.default.createElement(NativeSkiaPictureView, _extends({
87
+ return /*#__PURE__*/_react.default.createElement(_SkiaViewNativeComponent.default, _extends({
84
88
  collapsable: false,
85
89
  nativeID: `${this._nativeId}`,
86
- debug: debug,
87
90
  opaque: opaque,
88
- highBitDepth: highBitDepth,
89
- androidWarmup: androidWarmup
90
- }, viewProps));
91
+ highBitDepth: highBitDepth
92
+ }, (0, _android.androidNativeProps)(android), viewProps));
91
93
  }
92
94
  }
93
95
  exports.SkiaPictureView = SkiaPictureView;
@@ -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","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","debug","opaque","highBitDepth","androidWarmup","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 androidWarmup?: 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 } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\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 } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\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 {\n mode,\n debug = false,\n opaque = false,\n highBitDepth = false,\n androidWarmup = false,\n ...viewProps\n } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n debug={debug}\n opaque={opaque}\n highBitDepth={highBitDepth}\n androidWarmup={androidWarmup}\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","_SkiaViewNativeComponent","_api","_android","_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","SkiaPictureView","React","Component","constructor","props","_nativeId","SkiaViewNativeId","current","picture","assertSkiaViewApi","SkiaViewApi","setJsiProperty","tick","nativeId","componentDidUpdate","prevProps","componentWillUnmount","requestId","cancelAnimationFrame","redraw","mode","requestAnimationFrame","makeImageSnapshot","rect","requestRedraw","render","_mode","_picture","opaque","highBitDepth","android","viewProps","createElement","collapsable","nativeID","androidNativeProps","exports","Error"],"sources":["SkiaPictureView.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkRect } from \"../skia/types\";\nimport SkiaViewNativeComponent from \"../specs/SkiaViewNativeComponent\";\n\nimport { SkiaViewApi } from \"./api\";\nimport { androidNativeProps } from \"./android\";\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\ninterface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n mode?: \"default\" | \"continuous\";\n}\n\n/**\n * A view showing a picture. The picture is handed to the native view, which\n * records it once (and again on every redraw) for its surface.\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 } = props;\n if (picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\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 } = this.props;\n if (picture !== prevProps.picture) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\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 {\n mode: _mode,\n picture: _picture,\n opaque = false,\n highBitDepth = false,\n android,\n ...viewProps\n } = this.props;\n return (\n <SkiaViewNativeComponent\n collapsable={false}\n nativeID={`${this._nativeId}`}\n opaque={opaque}\n highBitDepth={highBitDepth}\n {...androidNativeProps(android)}\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":[]}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import type { ViewProps } from "react-native";
3
+ import type { SkiaWebViewHandle } from "../specs/NativeSkiaModule.web";
4
+ export interface SkiaViewHandle extends SkiaWebViewHandle {
5
+ /** The canvas element, for Reanimated's measure(). */
6
+ readonly canvasRef: () => HTMLCanvasElement | null;
7
+ }
8
+ export interface SkiaViewProps extends ViewProps {
9
+ ref?: React.Ref<SkiaViewHandle>;
10
+ __destroyWebGLContextAfterRender?: boolean;
11
+ }
12
+ export declare const SkiaView: (props: SkiaViewProps) => React.JSX.Element;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SkiaGraphiteView = void 0;
6
+ exports.SkiaView = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _JsiSkPictureRecorder = require("../skia/web/JsiSkPictureRecorder");
9
9
  var _Platform = require("../Platform");
@@ -14,12 +14,14 @@ 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
- // The web has no Graphite: a recording is an SkPicture, replayed onto the
18
- // view's WebGL surface by the same renderer as SkiaPictureView (with its
19
- // context-loss handling and the destroy-context-after-render mode). Frames
20
- // keep their native semantics, presented in submission order and never
21
- // dropped, with one difference: the surface starts cleared on every frame,
22
- // so a recording draws the whole frame rather than a delta.
17
+ // The web has no Graphite: the view paints pictures on a WebGL canvas (with
18
+ // context-loss recovery and the destroy-context-after-render mode). It shows
19
+ // one of two kinds of content. The picture of a <Canvas> or a
20
+ // <SkiaPictureView> is a whole frame: the latest one wins. The recordings
21
+ // submitted through the view's context (SkiaGraphiteView) keep their native
22
+ // semantics, presented in submission order and never dropped, with one
23
+ // difference: the surface starts cleared on every frame, so a recording draws
24
+ // the whole frame rather than a delta.
23
25
 
24
26
  /**
25
27
  * A frame recorded on the web. The view holds it while it is queued or on
@@ -104,12 +106,14 @@ class WebGraphiteContext {
104
106
  dispose() {}
105
107
  [Symbol.dispose]() {}
106
108
  }
107
- const SkiaGraphiteView = props => {
109
+ const SkiaView = props => {
108
110
  const {
109
111
  ref,
110
112
  onLayout
111
113
  } = props;
112
114
  const canvasRef = (0, _react.useRef)(null);
115
+ // The picture of a <Canvas> or a <SkiaPictureView>: a whole frame.
116
+ const pictureRef = (0, _react.useRef)(null);
113
117
  // Recordings submitted since the last frame, in order, and the frame on
114
118
  // screen, replayed when the surface is recreated.
115
119
  const queueRef = (0, _react.useRef)([]);
@@ -118,9 +122,9 @@ const SkiaGraphiteView = props => {
118
122
  const nativeId = (0, _react.useMemo)(() => props.nativeID !== undefined ? Number(props.nativeID) : _SkiaViewNativeId.SkiaViewNativeId.current++, [props.nativeID]);
119
123
  const isStatic = props.__destroyWebGLContextAfterRender === true;
120
124
 
121
- // Presents what was submitted since the last frame. A frame that cannot be
122
- // painted yet (unmeasured canvas, lost context) stays queued for the next
123
- // opportunity.
125
+ // Presents the recordings submitted since the last frame. A frame that
126
+ // cannot be painted yet (unmeasured canvas, lost context) stays queued for
127
+ // the next opportunity.
124
128
  const present = (0, _react.useCallback)(renderer => {
125
129
  const frame = queueRef.current;
126
130
  if (frame.length === 0) {
@@ -135,9 +139,14 @@ const SkiaGraphiteView = props => {
135
139
  shownRef.current = frame;
136
140
  previous.forEach(recording => recording.release());
137
141
  }, []);
142
+
143
+ // Paints what the view holds: pending recordings first, else the picture,
144
+ // else the frame on screen again (the surface was recreated).
138
145
  const paint = (0, _react.useCallback)(renderer => {
139
146
  if (queueRef.current.length > 0) {
140
147
  present(renderer);
148
+ } else if (pictureRef.current) {
149
+ renderer.draw([pictureRef.current]);
141
150
  } else if (shownRef.current.length > 0) {
142
151
  renderer.draw(shownRef.current.map(recording => recording.picture));
143
152
  }
@@ -146,25 +155,37 @@ const SkiaGraphiteView = props => {
146
155
  paint,
147
156
  onLayout
148
157
  });
158
+
159
+ // Draws are flushed from a microtask rather than an animation frame: the
160
+ // browser composites once per frame either way, and painting right away
161
+ // keeps a frame produced inside an animation callback (the Reanimated
162
+ // mapper, a frame loop) from slipping to the next one. Deferring to the
163
+ // next animation frame would alternate between "flush pending in this
164
+ // frame" and "flush scheduled for the next frame", halving the effective
165
+ // frame rate. Without a renderer yet (an unmeasured canvas), the content
166
+ // stays held and is painted by the renderer once it exists, so it is
167
+ // never lost.
149
168
  const flush = (0, _react.useCallback)(() => {
150
169
  flushScheduledRef.current = false;
151
170
  if (rendererRef.current) {
152
- present(rendererRef.current);
171
+ paint(rendererRef.current);
153
172
  }
154
- }, [present, rendererRef]);
155
-
156
- // Frames are presented from a microtask rather than an animation frame:
157
- // the browser composites once per frame either way, and painting right
158
- // away keeps a frame recorded inside an animation callback from slipping
159
- // to the next one (see SkiaPictureView.web).
160
- const submit = (0, _react.useCallback)(recording => {
161
- recording.retain();
162
- queueRef.current.push(recording);
173
+ }, [paint, rendererRef]);
174
+ const redraw = (0, _react.useCallback)(() => {
163
175
  if (!flushScheduledRef.current) {
164
176
  flushScheduledRef.current = true;
165
177
  queueMicrotask(flush);
166
178
  }
167
179
  }, [flush]);
180
+ const setPicture = (0, _react.useCallback)(picture => {
181
+ pictureRef.current = picture;
182
+ redraw();
183
+ }, [redraw]);
184
+ const submit = (0, _react.useCallback)(recording => {
185
+ recording.retain();
186
+ queueRef.current.push(recording);
187
+ redraw();
188
+ }, [redraw]);
168
189
  const getSize = (0, _react.useCallback)(() => {
169
190
  var _canvasRef$current, _canvasRef$current2;
170
191
  return {
@@ -176,17 +197,23 @@ const SkiaGraphiteView = props => {
176
197
  getSize,
177
198
  submit
178
199
  }), [getSize, submit]);
179
- const redraw = (0, _react.useCallback)(() => {
180
- if (rendererRef.current) {
181
- paint(rendererRef.current);
182
- }
183
- }, [paint, rendererRef]);
184
200
  const makeImageSnapshot = (0, _react.useCallback)(rect => {
185
- const frame = queueRef.current.length > 0 ? queueRef.current : shownRef.current;
186
- if (!rendererRef.current || frame.length === 0) {
201
+ const renderer = rendererRef.current;
202
+ if (!renderer) {
187
203
  return null;
188
204
  }
189
- return rendererRef.current.makeImageSnapshot(frame.map(recording => recording.picture), rect);
205
+ let frame;
206
+ if (queueRef.current.length > 0) {
207
+ frame = queueRef.current.map(recording => recording.picture);
208
+ } else if (pictureRef.current) {
209
+ frame = [pictureRef.current];
210
+ } else {
211
+ frame = shownRef.current.map(recording => recording.picture);
212
+ }
213
+ if (frame.length === 0) {
214
+ return null;
215
+ }
216
+ return renderer.makeImageSnapshot(frame, rect);
190
217
  }, [rendererRef]);
191
218
  const measure = (0, _react.useCallback)(callback => {
192
219
  if (canvasRef.current) {
@@ -196,7 +223,11 @@ const SkiaGraphiteView = props => {
196
223
  left: 0,
197
224
  top: 0
198
225
  };
199
- callback(rect.left - parentRect.left, rect.top - parentRect.top, rect.width, rect.height, rect.left + window.scrollX, rect.top + window.scrollY);
226
+ callback(
227
+ // x, y are relative to the parent
228
+ rect.left - parentRect.left, rect.top - parentRect.top, rect.width, rect.height,
229
+ // pageX, pageY are absolute screen coordinates
230
+ rect.left + window.scrollX, rect.top + window.scrollY);
200
231
  }
201
232
  }, []);
202
233
  const measureInWindow = (0, _react.useCallback)(callback => {
@@ -205,13 +236,27 @@ const SkiaGraphiteView = props => {
205
236
  callback(rect.left, rect.top, rect.width, rect.height);
206
237
  }
207
238
  }, []);
239
+
240
+ // No flush cancellation is needed on unmount: a microtask queued before
241
+ // unmount runs within the same task, and flush no-ops once the
242
+ // layout-effect cleanup has nulled rendererRef.
243
+
208
244
  (0, _react.useImperativeHandle)(ref, () => ({
245
+ setPicture,
209
246
  getContext,
210
- getNativeId: () => nativeId
211
- }), [getContext, nativeId]);
247
+ getSize,
248
+ redraw,
249
+ makeImageSnapshot,
250
+ measure,
251
+ measureInWindow,
252
+ get canvasRef() {
253
+ return () => canvasRef.current;
254
+ }
255
+ }), [setPicture, getContext, getSize, redraw, makeImageSnapshot, measure, measureInWindow]);
212
256
  (0, _react.useEffect)(() => {
213
257
  const api = global.SkiaViewApi;
214
258
  api.registerView(`${nativeId}`, {
259
+ setPicture,
215
260
  getContext,
216
261
  getSize,
217
262
  redraw,
@@ -220,9 +265,11 @@ const SkiaGraphiteView = props => {
220
265
  measureInWindow
221
266
  });
222
267
  return () => {
268
+ // Views must be removed on unmount: the handle's closures capture the
269
+ // canvas element, so a stale entry retains the whole detached DOM tree.
223
270
  api.unregisterView(`${nativeId}`);
224
271
  };
225
- }, [getContext, getSize, redraw, makeImageSnapshot, measure, measureInWindow, nativeId]);
272
+ }, [setPicture, getContext, getSize, redraw, makeImageSnapshot, measure, measureInWindow, nativeId]);
226
273
 
227
274
  // Let go of the recordings the view holds.
228
275
  (0, _react.useEffect)(() => () => {
@@ -232,9 +279,6 @@ const SkiaGraphiteView = props => {
232
279
  shownRef.current = [];
233
280
  }, []);
234
281
  const {
235
- debug: _debug,
236
- opaque: _opaque,
237
- highBitDepth: _highBitDepth,
238
282
  ref: _ref,
239
283
  onLayout: _onLayout,
240
284
  nativeID: _nativeID,
@@ -256,5 +300,5 @@ const SkiaGraphiteView = props => {
256
300
  }
257
301
  }));
258
302
  };
259
- exports.SkiaGraphiteView = SkiaGraphiteView;
260
- //# sourceMappingURL=SkiaGraphiteView.web.js.map
303
+ exports.SkiaView = SkiaView;
304
+ //# sourceMappingURL=SkiaView.web.js.map