@shopify/react-native-skia 1.7.6 → 1.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (364) hide show
  1. package/android/cpp/rnskia-android/OpenGLWindowContext.h +8 -1
  2. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +4 -4
  3. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +2 -2
  4. package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +13 -0
  5. package/android/src/main/java/com/shopify/reactnative/skia/SkiaTextureView.java +24 -1
  6. package/cpp/rnskia/RNSkJsiViewApi.h +0 -3
  7. package/cpp/rnskia/RNSkView.h +6 -6
  8. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +2 -2
  9. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +2 -2
  10. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  11. package/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +2 -3
  12. package/lib/commonjs/dom/nodes/datatypes/Circle.js +11 -6
  13. package/lib/commonjs/dom/nodes/datatypes/Circle.js.map +1 -1
  14. package/lib/commonjs/dom/nodes/datatypes/Enum.js +1 -0
  15. package/lib/commonjs/dom/nodes/datatypes/Enum.js.map +1 -1
  16. package/lib/commonjs/dom/nodes/datatypes/Fitting.js +1 -10
  17. package/lib/commonjs/dom/nodes/datatypes/Fitting.js.map +1 -1
  18. package/lib/commonjs/dom/nodes/datatypes/Gradient.js +3 -2
  19. package/lib/commonjs/dom/nodes/datatypes/Gradient.js.map +1 -1
  20. package/lib/commonjs/dom/nodes/datatypes/Path.js +4 -1
  21. package/lib/commonjs/dom/nodes/datatypes/Path.js.map +1 -1
  22. package/lib/commonjs/dom/nodes/datatypes/Radius.js +1 -0
  23. package/lib/commonjs/dom/nodes/datatypes/Radius.js.map +1 -1
  24. package/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +3 -1
  25. package/lib/commonjs/dom/nodes/datatypes/Rect.js +17 -7
  26. package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
  27. package/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +2 -1
  28. package/lib/commonjs/dom/nodes/datatypes/Transform.js +32 -1
  29. package/lib/commonjs/dom/nodes/datatypes/Transform.js.map +1 -1
  30. package/lib/commonjs/dom/nodes/drawings/Box.js +4 -5
  31. package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
  32. package/lib/commonjs/dom/nodes/drawings/CircleNode.js +1 -1
  33. package/lib/commonjs/dom/nodes/drawings/CircleNode.js.map +1 -1
  34. package/lib/commonjs/dom/types/DeclarationContext.d.ts +4 -4
  35. package/lib/commonjs/dom/types/DeclarationContext.js +8 -2
  36. package/lib/commonjs/dom/types/DeclarationContext.js.map +1 -1
  37. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  38. package/lib/commonjs/external/reanimated/renderHelpers.js +11 -6
  39. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  40. package/lib/commonjs/renderer/HostConfig.js +8 -4
  41. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  42. package/lib/commonjs/renderer/__tests__/setup.d.ts +2 -3
  43. package/lib/commonjs/renderer/processors/Animations/Animations.d.ts +1 -2
  44. package/lib/commonjs/renderer/processors/Animations/Animations.js.map +1 -1
  45. package/lib/commonjs/renderer/typeddash.js +5 -1
  46. package/lib/commonjs/renderer/typeddash.js.map +1 -1
  47. package/lib/commonjs/skia/__tests__/setup.d.ts +0 -3
  48. package/lib/commonjs/skia/types/Path/Path.js +5 -1
  49. package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
  50. package/lib/commonjs/skia/types/Shader/Shader.js +8 -6
  51. package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
  52. package/lib/commonjs/sksg/Container.d.ts +19 -0
  53. package/lib/commonjs/sksg/Container.js +102 -0
  54. package/lib/commonjs/sksg/Container.js.map +1 -0
  55. package/lib/commonjs/sksg/DrawingContext.d.ts +16 -0
  56. package/lib/commonjs/sksg/DrawingContext.js +186 -0
  57. package/lib/commonjs/sksg/DrawingContext.js.map +1 -0
  58. package/lib/commonjs/sksg/HostConfig.d.ts +19 -0
  59. package/lib/commonjs/sksg/HostConfig.js +168 -0
  60. package/lib/commonjs/sksg/HostConfig.js.map +1 -0
  61. package/lib/commonjs/sksg/Reconciler.d.ts +17 -0
  62. package/lib/commonjs/sksg/Reconciler.js +54 -0
  63. package/lib/commonjs/sksg/Reconciler.js.map +1 -0
  64. package/lib/commonjs/sksg/__tests__/MockDeclaration.d.ts +57 -0
  65. package/lib/commonjs/sksg/nodes/Node.d.ts +7 -0
  66. package/lib/commonjs/sksg/nodes/Node.js +6 -0
  67. package/lib/commonjs/sksg/nodes/Node.js.map +1 -0
  68. package/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
  69. package/lib/commonjs/sksg/nodes/colorFilters.js +55 -0
  70. package/lib/commonjs/sksg/nodes/colorFilters.js.map +1 -0
  71. package/lib/commonjs/sksg/nodes/context.d.ts +3 -0
  72. package/lib/commonjs/sksg/nodes/context.js +448 -0
  73. package/lib/commonjs/sksg/nodes/context.js.map +1 -0
  74. package/lib/commonjs/sksg/nodes/drawings.d.ts +31 -0
  75. package/lib/commonjs/sksg/nodes/drawings.js +361 -0
  76. package/lib/commonjs/sksg/nodes/drawings.js.map +1 -0
  77. package/lib/commonjs/sksg/nodes/imageFilters.d.ts +14 -0
  78. package/lib/commonjs/sksg/nodes/imageFilters.js +135 -0
  79. package/lib/commonjs/sksg/nodes/imageFilters.js.map +1 -0
  80. package/lib/commonjs/sksg/nodes/index.d.ts +3 -0
  81. package/lib/commonjs/sksg/nodes/index.js +39 -0
  82. package/lib/commonjs/sksg/nodes/index.js.map +1 -0
  83. package/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
  84. package/lib/commonjs/sksg/nodes/paint.js +80 -0
  85. package/lib/commonjs/sksg/nodes/paint.js.map +1 -0
  86. package/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
  87. package/lib/commonjs/sksg/nodes/pathEffects.js +84 -0
  88. package/lib/commonjs/sksg/nodes/pathEffects.js.map +1 -0
  89. package/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
  90. package/lib/commonjs/sksg/nodes/shaders.js +156 -0
  91. package/lib/commonjs/sksg/nodes/shaders.js.map +1 -0
  92. package/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
  93. package/lib/commonjs/sksg/nodes/utils.js +25 -0
  94. package/lib/commonjs/sksg/nodes/utils.js.map +1 -0
  95. package/lib/commonjs/views/SkiaPictureView.js +0 -2
  96. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  97. package/lib/commonjs/views/types.d.ts +2 -2
  98. package/lib/commonjs/views/types.js.map +1 -1
  99. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  100. package/lib/module/dom/nodes/datatypes/Circle.d.ts +2 -3
  101. package/lib/module/dom/nodes/datatypes/Circle.js +12 -6
  102. package/lib/module/dom/nodes/datatypes/Circle.js.map +1 -1
  103. package/lib/module/dom/nodes/datatypes/Enum.js +2 -0
  104. package/lib/module/dom/nodes/datatypes/Enum.js.map +1 -1
  105. package/lib/module/dom/nodes/datatypes/Fitting.js +2 -10
  106. package/lib/module/dom/nodes/datatypes/Fitting.js.map +1 -1
  107. package/lib/module/dom/nodes/datatypes/Gradient.js +4 -2
  108. package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
  109. package/lib/module/dom/nodes/datatypes/Path.js +5 -1
  110. package/lib/module/dom/nodes/datatypes/Path.js.map +1 -1
  111. package/lib/module/dom/nodes/datatypes/Radius.js +2 -0
  112. package/lib/module/dom/nodes/datatypes/Radius.js.map +1 -1
  113. package/lib/module/dom/nodes/datatypes/Rect.d.ts +3 -1
  114. package/lib/module/dom/nodes/datatypes/Rect.js +14 -5
  115. package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
  116. package/lib/module/dom/nodes/datatypes/Transform.d.ts +2 -1
  117. package/lib/module/dom/nodes/datatypes/Transform.js +31 -0
  118. package/lib/module/dom/nodes/datatypes/Transform.js.map +1 -1
  119. package/lib/module/dom/nodes/drawings/Box.js +1 -2
  120. package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
  121. package/lib/module/dom/nodes/drawings/CircleNode.js +1 -1
  122. package/lib/module/dom/nodes/drawings/CircleNode.js.map +1 -1
  123. package/lib/module/dom/types/DeclarationContext.d.ts +4 -4
  124. package/lib/module/dom/types/DeclarationContext.js +9 -2
  125. package/lib/module/dom/types/DeclarationContext.js.map +1 -1
  126. package/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
  127. package/lib/module/external/reanimated/renderHelpers.js +8 -4
  128. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  129. package/lib/module/renderer/HostConfig.js +8 -4
  130. package/lib/module/renderer/HostConfig.js.map +1 -1
  131. package/lib/module/renderer/__tests__/setup.d.ts +2 -3
  132. package/lib/module/renderer/processors/Animations/Animations.d.ts +1 -2
  133. package/lib/module/renderer/processors/Animations/Animations.js.map +1 -1
  134. package/lib/module/renderer/typeddash.js +5 -1
  135. package/lib/module/renderer/typeddash.js.map +1 -1
  136. package/lib/module/skia/__tests__/setup.d.ts +0 -3
  137. package/lib/module/skia/types/Path/Path.js +5 -1
  138. package/lib/module/skia/types/Path/Path.js.map +1 -1
  139. package/lib/module/skia/types/Shader/Shader.js +9 -6
  140. package/lib/module/skia/types/Shader/Shader.js.map +1 -1
  141. package/lib/module/sksg/Container.d.ts +19 -0
  142. package/lib/module/sksg/Container.js +94 -0
  143. package/lib/module/sksg/Container.js.map +1 -0
  144. package/lib/module/sksg/DrawingContext.d.ts +16 -0
  145. package/lib/module/sksg/DrawingContext.js +180 -0
  146. package/lib/module/sksg/DrawingContext.js.map +1 -0
  147. package/lib/module/sksg/HostConfig.d.ts +19 -0
  148. package/lib/module/sksg/HostConfig.js +161 -0
  149. package/lib/module/sksg/HostConfig.js.map +1 -0
  150. package/lib/module/sksg/Reconciler.d.ts +17 -0
  151. package/lib/module/sksg/Reconciler.js +46 -0
  152. package/lib/module/sksg/Reconciler.js.map +1 -0
  153. package/lib/module/sksg/__tests__/MockDeclaration.d.ts +57 -0
  154. package/lib/module/sksg/nodes/Node.d.ts +7 -0
  155. package/lib/module/sksg/nodes/Node.js +2 -0
  156. package/lib/module/sksg/nodes/Node.js.map +1 -0
  157. package/lib/module/sksg/nodes/colorFilters.d.ts +7 -0
  158. package/lib/module/sksg/nodes/colorFilters.js +44 -0
  159. package/lib/module/sksg/nodes/colorFilters.js.map +1 -0
  160. package/lib/module/sksg/nodes/context.d.ts +3 -0
  161. package/lib/module/sksg/nodes/context.js +443 -0
  162. package/lib/module/sksg/nodes/context.js.map +1 -0
  163. package/lib/module/sksg/nodes/drawings.d.ts +31 -0
  164. package/lib/module/sksg/nodes/drawings.js +334 -0
  165. package/lib/module/sksg/nodes/drawings.js.map +1 -0
  166. package/lib/module/sksg/nodes/imageFilters.d.ts +14 -0
  167. package/lib/module/sksg/nodes/imageFilters.js +122 -0
  168. package/lib/module/sksg/nodes/imageFilters.js.map +1 -0
  169. package/lib/module/sksg/nodes/index.d.ts +3 -0
  170. package/lib/module/sksg/nodes/index.js +4 -0
  171. package/lib/module/sksg/nodes/index.js.map +1 -0
  172. package/lib/module/sksg/nodes/paint.d.ts +2 -0
  173. package/lib/module/sksg/nodes/paint.js +74 -0
  174. package/lib/module/sksg/nodes/paint.js.map +1 -0
  175. package/lib/module/sksg/nodes/pathEffects.d.ts +8 -0
  176. package/lib/module/sksg/nodes/pathEffects.js +72 -0
  177. package/lib/module/sksg/nodes/pathEffects.js.map +1 -0
  178. package/lib/module/sksg/nodes/shaders.d.ts +10 -0
  179. package/lib/module/sksg/nodes/shaders.js +142 -0
  180. package/lib/module/sksg/nodes/shaders.js.map +1 -0
  181. package/lib/module/sksg/nodes/utils.d.ts +3 -0
  182. package/lib/module/sksg/nodes/utils.js +18 -0
  183. package/lib/module/sksg/nodes/utils.js.map +1 -0
  184. package/lib/module/views/SkiaPictureView.js +0 -2
  185. package/lib/module/views/SkiaPictureView.js.map +1 -1
  186. package/lib/module/views/types.d.ts +2 -2
  187. package/lib/module/views/types.js.map +1 -1
  188. package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +1 -1
  189. package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +2 -0
  190. package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +1 -0
  191. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  192. package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +3 -1
  193. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +16 -0
  194. package/lib/typescript/lib/commonjs/sksg/DrawingContext.d.ts +26 -0
  195. package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +50 -0
  196. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +16 -0
  197. package/lib/typescript/lib/commonjs/sksg/nodes/Node.d.ts +1 -0
  198. package/lib/typescript/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
  199. package/lib/typescript/lib/commonjs/sksg/nodes/context.d.ts +2 -0
  200. package/lib/typescript/lib/commonjs/sksg/nodes/drawings.d.ts +23 -0
  201. package/lib/typescript/lib/commonjs/sksg/nodes/imageFilters.d.ts +10 -0
  202. package/lib/typescript/lib/commonjs/sksg/nodes/index.d.ts +1 -0
  203. package/lib/typescript/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
  204. package/lib/typescript/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
  205. package/lib/typescript/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
  206. package/lib/typescript/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
  207. package/lib/typescript/lib/module/dom/nodes/datatypes/Circle.d.ts +1 -1
  208. package/lib/typescript/lib/module/dom/nodes/datatypes/Rect.d.ts +2 -0
  209. package/lib/typescript/lib/module/dom/nodes/datatypes/Transform.d.ts +1 -0
  210. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
  211. package/lib/typescript/lib/module/mock/index.d.ts +4 -1
  212. package/lib/typescript/lib/module/renderer/HostConfig.d.ts +3 -1
  213. package/lib/typescript/lib/module/sksg/Container.d.ts +15 -0
  214. package/lib/typescript/lib/module/sksg/DrawingContext.d.ts +26 -0
  215. package/lib/typescript/lib/module/sksg/HostConfig.d.ts +49 -0
  216. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +15 -0
  217. package/lib/typescript/lib/module/sksg/nodes/colorFilters.d.ts +6 -0
  218. package/lib/typescript/lib/module/sksg/nodes/context.d.ts +1 -0
  219. package/lib/typescript/lib/module/sksg/nodes/drawings.d.ts +22 -0
  220. package/lib/typescript/lib/module/sksg/nodes/imageFilters.d.ts +9 -0
  221. package/lib/typescript/lib/module/sksg/nodes/index.d.ts +3 -0
  222. package/lib/typescript/lib/module/sksg/nodes/paint.d.ts +1 -0
  223. package/lib/typescript/lib/module/sksg/nodes/pathEffects.d.ts +7 -0
  224. package/lib/typescript/lib/module/sksg/nodes/shaders.d.ts +9 -0
  225. package/lib/typescript/lib/module/sksg/nodes/utils.d.ts +2 -0
  226. package/lib/typescript/src/dom/nodes/datatypes/Circle.d.ts +2 -3
  227. package/lib/typescript/src/dom/nodes/datatypes/Rect.d.ts +3 -1
  228. package/lib/typescript/src/dom/nodes/datatypes/Transform.d.ts +2 -1
  229. package/lib/typescript/src/dom/types/DeclarationContext.d.ts +4 -4
  230. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +2 -0
  231. package/lib/typescript/src/renderer/__tests__/setup.d.ts +2 -3
  232. package/lib/typescript/src/renderer/processors/Animations/Animations.d.ts +1 -2
  233. package/lib/typescript/src/skia/__tests__/setup.d.ts +0 -3
  234. package/lib/typescript/src/sksg/Container.d.ts +19 -0
  235. package/lib/typescript/src/sksg/DrawingContext.d.ts +16 -0
  236. package/lib/typescript/src/sksg/HostConfig.d.ts +19 -0
  237. package/lib/typescript/src/sksg/Reconciler.d.ts +17 -0
  238. package/lib/typescript/src/sksg/__tests__/MockDeclaration.d.ts +57 -0
  239. package/lib/typescript/src/sksg/nodes/Node.d.ts +7 -0
  240. package/lib/typescript/src/sksg/nodes/colorFilters.d.ts +7 -0
  241. package/lib/typescript/src/sksg/nodes/context.d.ts +3 -0
  242. package/lib/typescript/src/sksg/nodes/drawings.d.ts +31 -0
  243. package/lib/typescript/src/sksg/nodes/imageFilters.d.ts +14 -0
  244. package/lib/typescript/src/sksg/nodes/index.d.ts +3 -0
  245. package/lib/typescript/src/sksg/nodes/paint.d.ts +2 -0
  246. package/lib/typescript/src/sksg/nodes/pathEffects.d.ts +8 -0
  247. package/lib/typescript/src/sksg/nodes/shaders.d.ts +10 -0
  248. package/lib/typescript/src/sksg/nodes/utils.d.ts +3 -0
  249. package/lib/typescript/src/views/types.d.ts +2 -2
  250. package/libs/{ios → apple}/libskia.xcframework/Info.plist +15 -0
  251. package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  252. package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  253. package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
  254. package/libs/{ios → apple}/libskottie.xcframework/Info.plist +20 -5
  255. package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  256. package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  257. package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
  258. package/libs/{ios → apple}/libskparagraph.xcframework/Info.plist +20 -5
  259. package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  260. package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  261. package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
  262. package/libs/{ios → apple}/libsksg.xcframework/Info.plist +15 -0
  263. package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  264. package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  265. package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
  266. package/libs/{ios → apple}/libskshaper.xcframework/Info.plist +20 -5
  267. package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  268. package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  269. package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
  270. package/libs/{ios → apple}/libskunicode_core.xcframework/Info.plist +18 -3
  271. package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
  272. package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
  273. package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
  274. package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/Info.plist +15 -0
  275. package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
  276. package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
  277. package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
  278. package/libs/{ios → apple}/libsvg.xcframework/Info.plist +15 -0
  279. package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  280. package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  281. package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
  282. package/package.json +3 -3
  283. package/react-native-skia.podspec +9 -9
  284. package/src/__tests__/setup.ts +1 -1
  285. package/src/__tests__/snapshots/sksg/breathe-0.png +0 -0
  286. package/src/__tests__/snapshots/sksg/breathe.png +0 -0
  287. package/src/__tests__/snapshots/sksg/simple.png +0 -0
  288. package/src/__tests__/snapshots/sksg/simple2.png +0 -0
  289. package/src/dom/nodes/JsiSkDOM.ts +2 -1
  290. package/src/dom/nodes/datatypes/Circle.ts +7 -5
  291. package/src/dom/nodes/datatypes/Enum.ts +2 -0
  292. package/src/dom/nodes/datatypes/Fitting.ts +2 -5
  293. package/src/dom/nodes/datatypes/Gradient.ts +4 -7
  294. package/src/dom/nodes/datatypes/Path.ts +5 -2
  295. package/src/dom/nodes/datatypes/Radius.ts +2 -0
  296. package/src/dom/nodes/datatypes/Rect.ts +40 -6
  297. package/src/dom/nodes/datatypes/Transform.ts +29 -1
  298. package/src/dom/nodes/drawings/Box.ts +1 -29
  299. package/src/dom/nodes/drawings/CircleNode.ts +1 -1
  300. package/src/dom/types/DeclarationContext.ts +12 -2
  301. package/src/external/reanimated/renderHelpers.ts +8 -4
  302. package/src/renderer/HostConfig.ts +10 -4
  303. package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +2 -2
  304. package/src/renderer/__tests__/setup.tsx +17 -15
  305. package/src/renderer/processors/Animations/Animations.ts +1 -5
  306. package/src/renderer/typeddash.ts +4 -2
  307. package/src/skia/__tests__/setup.ts +1 -51
  308. package/src/skia/types/Path/Path.ts +4 -2
  309. package/src/skia/types/Shader/Shader.ts +7 -4
  310. package/src/sksg/Container.ts +102 -0
  311. package/src/sksg/DrawingContext.ts +221 -0
  312. package/src/sksg/HostConfig.ts +287 -0
  313. package/src/sksg/Reconciler.ts +59 -0
  314. package/src/sksg/__tests__/Declarations.spec.tsx +235 -0
  315. package/src/sksg/__tests__/MockDeclaration.ts +140 -0
  316. package/src/sksg/__tests__/Simple.spec.tsx +148 -0
  317. package/src/sksg/nodes/Node.ts +8 -0
  318. package/src/sksg/nodes/colorFilters.ts +60 -0
  319. package/src/sksg/nodes/context.ts +489 -0
  320. package/src/sksg/nodes/drawings.ts +393 -0
  321. package/src/sksg/nodes/imageFilters.ts +183 -0
  322. package/src/sksg/nodes/index.ts +3 -0
  323. package/src/sksg/nodes/paint.ts +75 -0
  324. package/src/sksg/nodes/pathEffects.ts +95 -0
  325. package/src/sksg/nodes/shaders.ts +203 -0
  326. package/src/sksg/nodes/utils.ts +23 -0
  327. package/src/views/SkiaPictureView.tsx +0 -2
  328. package/src/views/types.ts +2 -2
  329. package/lib/commonjs/dom/__tests__/Shaders.spec.d.ts +0 -1
  330. package/lib/commonjs/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
  331. package/lib/module/dom/__tests__/Compose.spec.d.ts +0 -1
  332. package/lib/module/dom/__tests__/Demos.spec.d.ts +0 -1
  333. package/lib/module/dom/__tests__/DrawingContext.spec.d.ts +0 -1
  334. package/lib/module/dom/__tests__/Drawings.spec.d.ts +0 -1
  335. package/lib/module/dom/__tests__/Group.spec.d.ts +0 -1
  336. package/lib/module/dom/__tests__/Paint.spec.d.ts +0 -1
  337. package/lib/module/dom/__tests__/RenderNodes.spec.d.ts +0 -1
  338. package/lib/module/dom/__tests__/Shaders.spec.d.ts +0 -1
  339. package/lib/module/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
  340. package/lib/typescript/src/dom/__tests__/Compose.spec.d.ts +0 -1
  341. package/lib/typescript/src/dom/__tests__/Demos.spec.d.ts +0 -1
  342. package/lib/typescript/src/dom/__tests__/DrawingContext.spec.d.ts +0 -1
  343. package/lib/typescript/src/dom/__tests__/Drawings.spec.d.ts +0 -1
  344. package/lib/typescript/src/dom/__tests__/Group.spec.d.ts +0 -1
  345. package/lib/typescript/src/dom/__tests__/Paint.spec.d.ts +0 -1
  346. package/lib/typescript/src/dom/__tests__/RenderNodes.spec.d.ts +0 -1
  347. package/lib/typescript/src/dom/__tests__/Shaders.spec.d.ts +0 -1
  348. package/lib/typescript/src/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
  349. package/src/dom/__tests__/Compose.spec.tsx +0 -42
  350. package/src/dom/__tests__/Demos.spec.tsx +0 -145
  351. package/src/dom/__tests__/DrawingContext.spec.tsx +0 -99
  352. package/src/dom/__tests__/Drawings.spec.tsx +0 -95
  353. package/src/dom/__tests__/Group.spec.tsx +0 -132
  354. package/src/dom/__tests__/Paint.spec.tsx +0 -100
  355. package/src/dom/__tests__/RenderNodes.spec.tsx +0 -44
  356. package/src/dom/__tests__/Shaders.spec.tsx +0 -123
  357. package/src/renderer/__tests__/SkiaDOM.spec.tsx +0 -46
  358. /package/lib/commonjs/{dom/__tests__/Compose.spec.d.ts → sksg/__tests__/Declarations.spec.d.ts} +0 -0
  359. /package/lib/commonjs/{dom/__tests__/Demos.spec.d.ts → sksg/__tests__/Simple.spec.d.ts} +0 -0
  360. /package/lib/{commonjs/dom/__tests__/DrawingContext.spec.d.ts → module/sksg/__tests__/Declarations.spec.d.ts} +0 -0
  361. /package/lib/{commonjs/dom/__tests__/Drawings.spec.d.ts → module/sksg/__tests__/Simple.spec.d.ts} +0 -0
  362. /package/lib/{commonjs/dom/__tests__/Group.spec.d.ts → typescript/lib/module/sksg/nodes/Node.d.ts} +0 -0
  363. /package/lib/{commonjs/dom/__tests__/Paint.spec.d.ts → typescript/src/sksg/__tests__/Declarations.spec.d.ts} +0 -0
  364. /package/lib/{commonjs/dom/__tests__/RenderNodes.spec.d.ts → typescript/src/sksg/__tests__/Simple.spec.d.ts} +0 -0
@@ -0,0 +1,221 @@
1
+ "worklet";
2
+
3
+ import {
4
+ enumKey,
5
+ isPathDef,
6
+ processPath,
7
+ processTransformProps2,
8
+ } from "../dom/nodes";
9
+ import type { ClipDef, DrawingNodeProps, GroupProps } from "../dom/types";
10
+ import { DeclarationContext } from "../dom/types";
11
+ import {
12
+ BlendMode,
13
+ ClipOp,
14
+ isRRect,
15
+ PaintStyle,
16
+ StrokeCap,
17
+ StrokeJoin,
18
+ } from "../skia/types";
19
+ import type {
20
+ SkPath,
21
+ SkRect,
22
+ SkRRect,
23
+ SkCanvas,
24
+ Skia,
25
+ SkPaint,
26
+ } from "../skia/types";
27
+
28
+ const computeClip = (
29
+ Skia: Skia,
30
+ clip: ClipDef | undefined
31
+ ):
32
+ | undefined
33
+ | { clipPath: SkPath }
34
+ | { clipRect: SkRect }
35
+ | { clipRRect: SkRRect } => {
36
+ if (clip) {
37
+ if (isPathDef(clip)) {
38
+ return { clipPath: processPath(Skia, clip) };
39
+ } else if (isRRect(clip)) {
40
+ return { clipRRect: clip };
41
+ } else {
42
+ return { clipRect: clip };
43
+ }
44
+ }
45
+ return undefined;
46
+ };
47
+
48
+ export class DrawingContext {
49
+ private paints: SkPaint[];
50
+ public declCtx: DeclarationContext;
51
+ public Skia: Skia;
52
+ public canvas: SkCanvas;
53
+
54
+ constructor(Skia: Skia, canvas: SkCanvas) {
55
+ this.Skia = Skia;
56
+ this.canvas = canvas;
57
+ this.paints = [Skia.Paint()];
58
+ this.declCtx = new DeclarationContext(this.Skia);
59
+ }
60
+
61
+ save() {
62
+ this.paints.push(this.paint.copy());
63
+ }
64
+
65
+ restore() {
66
+ this.paints.pop();
67
+ }
68
+
69
+ get paint() {
70
+ const paint = this.paints[this.paints.length - 1];
71
+ if (!paint) {
72
+ throw new Error("Paint is undefined");
73
+ }
74
+ return paint;
75
+ }
76
+
77
+ getLocalPaints() {
78
+ const { paint } = this;
79
+ return [paint, ...this.declCtx.paints.popAll()];
80
+ }
81
+
82
+ processPaint({
83
+ opacity,
84
+ color,
85
+ strokeWidth,
86
+ blendMode,
87
+ style,
88
+ strokeJoin,
89
+ strokeCap,
90
+ strokeMiter,
91
+ antiAlias,
92
+ dither,
93
+ paint: paintProp,
94
+ }: DrawingNodeProps) {
95
+ if (paintProp) {
96
+ this.declCtx.paints.push(paintProp);
97
+ return true;
98
+ }
99
+ let shouldRestore = false;
100
+ const colorFilter = this.declCtx.colorFilters.popAllAsOne();
101
+ const imageFilter = this.declCtx.imageFilters.popAllAsOne();
102
+ const shader = this.declCtx.shaders.pop();
103
+ const maskFilter = this.declCtx.maskFilters.pop();
104
+ const pathEffect = this.declCtx.pathEffects.popAllAsOne();
105
+ if (
106
+ opacity !== undefined ||
107
+ color !== undefined ||
108
+ strokeWidth !== undefined ||
109
+ blendMode !== undefined ||
110
+ style !== undefined ||
111
+ strokeJoin !== undefined ||
112
+ strokeCap !== undefined ||
113
+ strokeMiter !== undefined ||
114
+ antiAlias !== undefined ||
115
+ dither !== undefined ||
116
+ colorFilter !== undefined ||
117
+ imageFilter !== undefined ||
118
+ shader !== undefined ||
119
+ maskFilter !== undefined ||
120
+ pathEffect !== undefined
121
+ ) {
122
+ if (!shouldRestore) {
123
+ this.save();
124
+ shouldRestore = true;
125
+ }
126
+ }
127
+ const { paint } = this;
128
+ if (opacity !== undefined) {
129
+ paint.setAlphaf(paint.getAlphaf() * opacity);
130
+ }
131
+ if (color !== undefined) {
132
+ const currentOpacity = paint.getAlphaf();
133
+ paint.setShader(null);
134
+ if (typeof color === "string" || typeof color === "number") {
135
+ paint.setColor(this.Skia.Color(color));
136
+ } else if (Array.isArray(color)) {
137
+ paint.setColor(new Float32Array(color));
138
+ } else if (color instanceof Float32Array) {
139
+ paint.setColor(color);
140
+ } else {
141
+ throw new Error("Invalid color");
142
+ }
143
+ paint.setAlphaf(currentOpacity * paint.getAlphaf());
144
+ }
145
+ if (strokeWidth !== undefined) {
146
+ paint.setStrokeWidth(strokeWidth);
147
+ }
148
+ if (blendMode !== undefined) {
149
+ paint.setBlendMode(BlendMode[enumKey(blendMode)]);
150
+ }
151
+ if (style !== undefined) {
152
+ paint.setStyle(PaintStyle[enumKey(style)]);
153
+ }
154
+ if (strokeJoin !== undefined) {
155
+ paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);
156
+ }
157
+ if (strokeCap !== undefined) {
158
+ paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);
159
+ }
160
+ if (strokeMiter !== undefined) {
161
+ paint.setStrokeMiter(strokeMiter);
162
+ }
163
+ if (antiAlias !== undefined) {
164
+ paint.setAntiAlias(antiAlias);
165
+ }
166
+ if (dither !== undefined) {
167
+ paint.setDither(dither);
168
+ }
169
+ if (colorFilter) {
170
+ paint.setColorFilter(colorFilter);
171
+ }
172
+ if (imageFilter) {
173
+ paint.setImageFilter(imageFilter);
174
+ }
175
+ if (shader) {
176
+ paint.setShader(shader);
177
+ }
178
+ if (maskFilter) {
179
+ paint.setMaskFilter(maskFilter);
180
+ }
181
+ if (pathEffect) {
182
+ paint.setPathEffect(pathEffect);
183
+ }
184
+ return shouldRestore;
185
+ }
186
+
187
+ processMatrixAndClipping(props: GroupProps, layer?: boolean | SkPaint) {
188
+ const hasTransform =
189
+ props.matrix !== undefined || props.transform !== undefined;
190
+ const clip = computeClip(this.Skia, props.clip);
191
+ const hasClip = clip !== undefined;
192
+ const op = props.invertClip ? ClipOp.Difference : ClipOp.Intersect;
193
+ const m3 = processTransformProps2(this.Skia, props);
194
+ const shouldSave = hasTransform || hasClip || !!layer;
195
+ if (shouldSave) {
196
+ if (layer) {
197
+ if (typeof layer === "boolean") {
198
+ this.canvas.saveLayer();
199
+ } else {
200
+ this.canvas.saveLayer(layer);
201
+ }
202
+ } else {
203
+ this.canvas.save();
204
+ }
205
+ }
206
+
207
+ if (m3) {
208
+ this.canvas.concat(m3);
209
+ }
210
+ if (clip) {
211
+ if ("clipRect" in clip) {
212
+ this.canvas.clipRect(clip.clipRect, op, true);
213
+ } else if ("clipRRect" in clip) {
214
+ this.canvas.clipRRect(clip.clipRRect, op, true);
215
+ } else {
216
+ this.canvas.clipPath(clip.clipPath, op, true);
217
+ }
218
+ }
219
+ return shouldSave;
220
+ }
221
+ }
@@ -0,0 +1,287 @@
1
+ /*global NodeJS*/
2
+ import type { Fiber, HostConfig } from "react-reconciler";
3
+ import { DefaultEventPriority } from "react-reconciler/constants";
4
+
5
+ import { NodeType } from "../dom/types";
6
+ import { shallowEq } from "../renderer/typeddash";
7
+
8
+ import type { Node } from "./nodes/Node";
9
+ import type { Container } from "./Container";
10
+
11
+ const DEBUG = false;
12
+ export const debug = (...args: Parameters<typeof console.log>) => {
13
+ if (DEBUG) {
14
+ console.log(...args);
15
+ }
16
+ };
17
+
18
+ const isDeclaration = (type: NodeType) => {
19
+ "worklet";
20
+ return (
21
+ // BlurMaskFilters
22
+ type === NodeType.BlurMaskFilter ||
23
+ // ImageFilters
24
+ type === NodeType.BlendImageFilter ||
25
+ type === NodeType.BlurImageFilter ||
26
+ type === NodeType.OffsetImageFilter ||
27
+ type === NodeType.DropShadowImageFilter ||
28
+ type === NodeType.MorphologyImageFilter ||
29
+ type === NodeType.DisplacementMapImageFilter ||
30
+ type === NodeType.RuntimeShaderImageFilter ||
31
+ // ColorFilters
32
+ type === NodeType.MatrixColorFilter ||
33
+ type === NodeType.BlendColorFilter ||
34
+ type === NodeType.LumaColorFilter ||
35
+ type === NodeType.LinearToSRGBGammaColorFilter ||
36
+ type === NodeType.SRGBToLinearGammaColorFilter ||
37
+ type === NodeType.LerpColorFilter ||
38
+ // Shaders
39
+ type === NodeType.Shader ||
40
+ type === NodeType.ImageShader ||
41
+ type === NodeType.ColorShader ||
42
+ type === NodeType.Turbulence ||
43
+ type === NodeType.FractalNoise ||
44
+ type === NodeType.LinearGradient ||
45
+ type === NodeType.RadialGradient ||
46
+ type === NodeType.SweepGradient ||
47
+ type === NodeType.TwoPointConicalGradient ||
48
+ // Path Effects
49
+ type === NodeType.CornerPathEffect ||
50
+ type === NodeType.DiscretePathEffect ||
51
+ type === NodeType.DashPathEffect ||
52
+ type === NodeType.Path1DPathEffect ||
53
+ type === NodeType.Path2DPathEffect ||
54
+ type === NodeType.SumPathEffect ||
55
+ type === NodeType.Line2DPathEffect ||
56
+ // Mixed
57
+ type === NodeType.Blend ||
58
+ // Paint
59
+ type === NodeType.Paint
60
+ );
61
+ };
62
+
63
+ type Instance = Node;
64
+
65
+ type Props = object;
66
+ type TextInstance = Node;
67
+ type SuspenseInstance = Instance;
68
+ type HydratableInstance = Instance;
69
+ type PublicInstance = Instance;
70
+ type HostContext = null;
71
+ type UpdatePayload = Container;
72
+ type ChildSet = Node[];
73
+ type TimeoutHandle = NodeJS.Timeout;
74
+ type NoTimeout = -1;
75
+
76
+ type SkiaHostConfig = HostConfig<
77
+ NodeType,
78
+ Props,
79
+ Container,
80
+ Instance,
81
+ TextInstance,
82
+ SuspenseInstance,
83
+ HydratableInstance,
84
+ PublicInstance,
85
+ HostContext,
86
+ UpdatePayload,
87
+ ChildSet,
88
+ TimeoutHandle,
89
+ NoTimeout
90
+ >;
91
+
92
+ export const sksgHostConfig: SkiaHostConfig = {
93
+ /**
94
+ * This function is used by the reconciler in order to calculate current time for prioritising work.
95
+ */
96
+ supportsMutation: false,
97
+ isPrimaryRenderer: false,
98
+ supportsPersistence: true,
99
+ supportsHydration: false,
100
+ //supportsMicrotask: true,
101
+ scheduleTimeout: setTimeout,
102
+ cancelTimeout: clearTimeout,
103
+ noTimeout: -1,
104
+
105
+ getRootHostContext: (_rootContainerInstance: Container) => {
106
+ debug("getRootHostContext");
107
+ return null;
108
+ },
109
+
110
+ getChildHostContext(_parentHostContext, _type, _rootContainerInstance) {
111
+ debug("getChildHostContext");
112
+ return null;
113
+ },
114
+
115
+ shouldSetTextContent(_type, _props) {
116
+ return false;
117
+ },
118
+
119
+ createTextInstance(
120
+ _text,
121
+ _rootContainerInstance,
122
+ _hostContext,
123
+ _internalInstanceHandle
124
+ ) {
125
+ debug("createTextInstance");
126
+ // return SpanNode({}, text) as SkNode;
127
+ throw new Error("Text nodes are not supported yet");
128
+ },
129
+
130
+ createInstance(
131
+ type,
132
+ props,
133
+ container,
134
+ _hostContext,
135
+ _internalInstanceHandle
136
+ ) {
137
+ debug("createInstance", type);
138
+ container.registerValues(props);
139
+ const instance = {
140
+ type,
141
+ isDeclaration: isDeclaration(type),
142
+ props,
143
+ children: [],
144
+ };
145
+ return instance;
146
+ },
147
+
148
+ appendInitialChild(parentInstance: Instance, child: Instance | TextInstance) {
149
+ parentInstance.children.push(child);
150
+ },
151
+
152
+ finalizeInitialChildren(
153
+ parentInstance,
154
+ _type,
155
+ _props,
156
+ _rootContainerInstance,
157
+ _hostContext
158
+ ) {
159
+ debug("finalizeInitialChildren", parentInstance);
160
+ return false;
161
+ },
162
+
163
+ commitMount() {
164
+ // if finalizeInitialChildren = true
165
+ debug("commitMount");
166
+ },
167
+
168
+ prepareForCommit(_containerInfo) {
169
+ debug("prepareForCommit");
170
+ return null;
171
+ },
172
+
173
+ resetAfterCommit(container) {
174
+ debug("resetAfterCommit");
175
+ container.redraw();
176
+ },
177
+
178
+ getPublicInstance(node: Instance) {
179
+ debug("getPublicInstance");
180
+ return node;
181
+ },
182
+
183
+ commitTextUpdate: (
184
+ _textInstance: TextInstance,
185
+ _oldText: string,
186
+ _newText: string
187
+ ) => {
188
+ // textInstance.instance = newText;
189
+ },
190
+
191
+ clearContainer: (container) => {
192
+ debug("clearContainer");
193
+ container.clear();
194
+ },
195
+
196
+ prepareUpdate(
197
+ _instance: Instance,
198
+ _type: string,
199
+ oldProps: Props,
200
+ newProps: Props,
201
+ container: Container,
202
+ _hostContext: HostContext
203
+ ) {
204
+ debug("prepareUpdate");
205
+ const propsAreEqual = shallowEq(oldProps, newProps);
206
+ if (propsAreEqual) {
207
+ return null;
208
+ }
209
+ container.unregisterValues(oldProps);
210
+ container.registerValues(newProps);
211
+ return container;
212
+ },
213
+
214
+ preparePortalMount: () => {
215
+ debug("preparePortalMount");
216
+ },
217
+
218
+ cloneInstance(
219
+ instance,
220
+ _updatePayload,
221
+ _type,
222
+ _oldProps,
223
+ newProps,
224
+ _internalInstanceHandle,
225
+ keepChildren: boolean,
226
+ _recyclableInstance: null | Instance
227
+ ) {
228
+ debug("cloneInstance");
229
+
230
+ return {
231
+ type: instance.type,
232
+ props: newProps,
233
+ children: keepChildren ? [...instance.children] : [],
234
+ isDeclaration: instance.isDeclaration,
235
+ };
236
+ },
237
+
238
+ createContainerChildSet(): ChildSet {
239
+ debug("createContainerChildSet");
240
+ return [];
241
+ },
242
+
243
+ appendChildToContainerChildSet(
244
+ childSet: ChildSet,
245
+ child: Instance | TextInstance
246
+ ): void {
247
+ childSet.push(child);
248
+ },
249
+
250
+ finalizeContainerChildren(container: Container, newChildren: ChildSet) {
251
+ debug("finalizeContainerChildren");
252
+ container.root = newChildren;
253
+ },
254
+
255
+ replaceContainerChildren(container: Container, newChildren: ChildSet) {
256
+ debug("replaceContainerChildren");
257
+ container.root = newChildren;
258
+ },
259
+
260
+ cloneHiddenInstance(
261
+ _instance: Instance,
262
+ _type: string,
263
+ _props: Props
264
+ ): Instance {
265
+ debug("cloneHiddenInstance");
266
+ throw new Error("Not yet implemented.");
267
+ },
268
+
269
+ cloneHiddenTextInstance(_instance: Instance, _text: string): TextInstance {
270
+ debug("cloneHiddenTextInstance");
271
+ throw new Error("Not yet implemented.");
272
+ },
273
+ // see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874
274
+ getCurrentEventPriority: () => DefaultEventPriority,
275
+ beforeActiveInstanceBlur: () => {},
276
+ afterActiveInstanceBlur: () => {},
277
+ detachDeletedInstance: () => {},
278
+ getInstanceFromNode: function (_node): Fiber | null | undefined {
279
+ throw new Error("Function not implemented.");
280
+ },
281
+ prepareScopeUpdate: function (_scopeInstance, _instance): void {
282
+ throw new Error("Function not implemented.");
283
+ },
284
+ getInstanceFromScope: function (_scopeInstance): Instance | null {
285
+ throw new Error("Function not implemented.");
286
+ },
287
+ };
@@ -0,0 +1,59 @@
1
+ import type { ReactNode } from "react";
2
+ import type { OpaqueRoot } from "react-reconciler";
3
+ import ReactReconciler from "react-reconciler";
4
+
5
+ import type { SkCanvas, Skia } from "../skia/types";
6
+ import { NodeType } from "../dom/types";
7
+
8
+ import { debug, sksgHostConfig } from "./HostConfig";
9
+ import { Container } from "./Container";
10
+
11
+ const skiaReconciler = ReactReconciler(sksgHostConfig);
12
+
13
+ skiaReconciler.injectIntoDevTools({
14
+ bundleType: 1,
15
+ version: "0.0.1",
16
+ rendererPackageName: "react-native-skia",
17
+ });
18
+
19
+ export class SkiaSGRoot {
20
+ private root: OpaqueRoot;
21
+ private container: Container;
22
+
23
+ constructor(Skia: Skia, nativeId = -1) {
24
+ this.container = new Container(Skia, nativeId);
25
+ this.root = skiaReconciler.createContainer(
26
+ this.container,
27
+ 0,
28
+ null,
29
+ true,
30
+ null,
31
+ "",
32
+ console.error,
33
+ null
34
+ );
35
+ }
36
+
37
+ get sg() {
38
+ const children = this.container.root;
39
+ return { type: NodeType.Group, props: {}, children, isDeclaration: false };
40
+ }
41
+
42
+ render(element: ReactNode) {
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ skiaReconciler.updateContainer(element as any, this.root, null, () => {
45
+ debug("updateContainer");
46
+ });
47
+ }
48
+
49
+ drawOnCanvas(canvas: SkCanvas) {
50
+ this.container.drawOnCanvas(canvas);
51
+ }
52
+
53
+ unmount() {
54
+ this.container.unmounted = true;
55
+ skiaReconciler.updateContainer(null, this.root, null, () => {
56
+ debug("unmountContainer");
57
+ });
58
+ }
59
+ }