@shopify/react-native-skia 0.1.233 → 0.1.236

Sign up to get free protection for your applications and to get access to all the features.
Files changed (294) hide show
  1. package/android/CMakeLists.txt +0 -1
  2. package/android/cpp/jni/JniSkiaManager.cpp +0 -1
  3. package/android/cpp/rnskia-android/RNSkAndroidView.h +0 -1
  4. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +1 -1
  5. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +1 -2
  6. package/cpp/api/JsiSkTypefaceFactory.h +2 -1
  7. package/cpp/skia/include/android/AHardwareBufferUtils.h +23 -0
  8. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -0
  9. package/cpp/skia/include/android/graphite/SurfaceAndroid.h +59 -0
  10. package/cpp/skia/include/codec/SkAvifDecoder.h +1 -1
  11. package/cpp/skia/include/codec/SkBmpDecoder.h +1 -1
  12. package/cpp/skia/include/codec/SkCodec.h +21 -3
  13. package/cpp/skia/include/codec/SkGifDecoder.h +1 -1
  14. package/cpp/skia/include/codec/SkIcoDecoder.h +1 -1
  15. package/cpp/skia/include/codec/SkJpegDecoder.h +1 -1
  16. package/cpp/skia/include/codec/SkJpegxlDecoder.h +1 -1
  17. package/cpp/skia/include/codec/SkPngDecoder.h +1 -1
  18. package/cpp/skia/include/codec/SkRawDecoder.h +1 -1
  19. package/cpp/skia/include/codec/SkWbmpDecoder.h +1 -1
  20. package/cpp/skia/include/codec/SkWebpDecoder.h +1 -1
  21. package/cpp/skia/include/config/SkUserConfig.h +3 -1
  22. package/cpp/skia/include/core/SkCanvas.h +66 -37
  23. package/cpp/skia/include/core/SkColorFilter.h +5 -2
  24. package/cpp/skia/include/core/SkContourMeasure.h +1 -0
  25. package/cpp/skia/include/core/SkDocument.h +1 -0
  26. package/cpp/skia/include/core/SkFont.h +14 -24
  27. package/cpp/skia/include/core/SkFontArguments.h +1 -1
  28. package/cpp/skia/include/core/SkFontMetrics.h +1 -1
  29. package/cpp/skia/include/core/SkFontMgr.h +0 -7
  30. package/cpp/skia/include/core/SkGraphics.h +13 -0
  31. package/cpp/skia/include/core/SkMesh.h +9 -13
  32. package/cpp/skia/include/core/SkMilestone.h +1 -1
  33. package/cpp/skia/include/core/SkPathMeasure.h +2 -0
  34. package/cpp/skia/include/core/SkSerialProcs.h +29 -11
  35. package/cpp/skia/include/core/SkSize.h +3 -3
  36. package/cpp/skia/include/core/SkStream.h +3 -13
  37. package/cpp/skia/include/core/SkSurface.h +6 -3
  38. package/cpp/skia/include/core/SkSurfaceProps.h +2 -4
  39. package/cpp/skia/include/core/SkTraceMemoryDump.h +15 -0
  40. package/cpp/skia/include/core/SkTypeface.h +8 -56
  41. package/cpp/skia/include/core/SkTypes.h +8 -0
  42. package/cpp/skia/include/core/SkVertices.h +1 -1
  43. package/cpp/skia/include/docs/SkMultiPictureDocument.h +53 -0
  44. package/cpp/skia/include/docs/SkPDFDocument.h +11 -0
  45. package/cpp/skia/include/effects/SkGradientShader.h +9 -0
  46. package/cpp/skia/include/effects/SkRuntimeEffect.h +3 -7
  47. package/cpp/skia/include/gpu/GrBackendSemaphore.h +33 -47
  48. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -3
  49. package/cpp/skia/include/gpu/GrContextOptions.h +0 -6
  50. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +44 -28
  51. package/cpp/skia/include/gpu/GrDirectContext.h +12 -31
  52. package/cpp/skia/include/gpu/GrTypes.h +1 -16
  53. package/cpp/skia/include/gpu/MutableTextureState.h +35 -80
  54. package/cpp/skia/include/gpu/ShaderErrorHandler.h +11 -1
  55. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +2 -2
  56. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  57. package/cpp/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +3 -2
  58. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
  59. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +30 -0
  60. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
  61. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -0
  62. package/cpp/skia/include/gpu/gl/glx/GrGLMakeGLXInterface.h +6 -0
  63. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +3 -3
  64. package/cpp/skia/include/gpu/graphite/BackendTexture.h +39 -27
  65. package/cpp/skia/include/gpu/graphite/Context.h +39 -13
  66. package/cpp/skia/include/gpu/graphite/ContextOptions.h +2 -0
  67. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +2 -1
  68. package/cpp/skia/include/gpu/graphite/Image.h +106 -87
  69. package/cpp/skia/include/gpu/graphite/Recorder.h +24 -3
  70. package/cpp/skia/include/gpu/graphite/Surface.h +7 -2
  71. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +41 -2
  72. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +11 -6
  73. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +1 -2
  74. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +6 -6
  75. package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -0
  76. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
  77. package/cpp/skia/include/gpu/vk/GrVkTypes.h +1 -44
  78. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +1 -1
  79. package/cpp/skia/include/gpu/vk/VulkanMutableTextureState.h +25 -0
  80. package/cpp/skia/include/gpu/vk/VulkanTypes.h +44 -0
  81. package/cpp/skia/include/ports/SkFontConfigInterface.h +3 -6
  82. package/cpp/skia/include/private/SkEncodedInfo.h +5 -0
  83. package/cpp/skia/include/private/SkExif.h +102 -0
  84. package/cpp/skia/include/private/SkGainmapInfo.h +11 -1
  85. package/cpp/skia/include/private/base/SkAssert.h +16 -0
  86. package/cpp/skia/include/private/base/SkDeque.h +2 -7
  87. package/cpp/skia/include/private/base/SkLoadUserConfig.h +1 -1
  88. package/cpp/skia/include/private/base/SkTArray.h +69 -28
  89. package/cpp/skia/include/private/base/SkThreadAnnotations.h +18 -5
  90. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +26 -30
  91. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +4 -3
  92. package/cpp/skia/include/private/chromium/SkImageChromium.h +1 -1
  93. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +8 -6
  94. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +29 -0
  95. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +12 -9
  96. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +16 -11
  97. package/cpp/skia/include/third_party/vulkan/vulkan/vk_platform.h +2 -2
  98. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
  99. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  100. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
  101. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  102. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
  103. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +9 -2
  104. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +31 -3
  105. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +10624 -5716
  106. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +2 -1
  107. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +2 -1
  108. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +28 -1
  109. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +2 -1
  110. package/cpp/skia/include/utils/mac/SkCGUtils.h +23 -11
  111. package/cpp/skia/modules/skcms/skcms.h +2 -410
  112. package/cpp/skia/modules/skcms/src/Transform_inl.h +831 -704
  113. package/cpp/skia/modules/skcms/src/skcms_Transform.h +161 -0
  114. package/cpp/skia/modules/skcms/src/skcms_internals.h +136 -0
  115. package/cpp/skia/modules/skcms/src/skcms_public.h +404 -0
  116. package/cpp/skia/modules/skparagraph/include/FontArguments.h +1 -1
  117. package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -0
  118. package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -2
  119. package/cpp/skia/modules/skparagraph/include/TextStyle.h +4 -3
  120. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +1 -3
  121. package/cpp/skia/modules/skresources/include/SkResources.h +28 -17
  122. package/cpp/skia/modules/skunicode/include/SkUnicode.h +12 -0
  123. package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -1
  124. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +4 -1
  125. package/cpp/skia/src/base/SkUTF.h +7 -0
  126. package/cpp/skia/src/core/SkTHash.h +20 -8
  127. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +3 -2
  128. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -57
  129. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  130. package/lib/commonjs/external/reanimated/index.d.ts +1 -0
  131. package/lib/commonjs/external/reanimated/index.js +13 -0
  132. package/lib/commonjs/external/reanimated/index.js.map +1 -1
  133. package/lib/commonjs/external/reanimated/interpolators.js +16 -2
  134. package/lib/commonjs/external/reanimated/interpolators.js.map +1 -1
  135. package/lib/commonjs/external/reanimated/moduleWrapper.d.ts +1 -0
  136. package/lib/commonjs/external/reanimated/moduleWrapper.js +5 -3
  137. package/lib/commonjs/external/reanimated/moduleWrapper.js.map +1 -1
  138. package/lib/commonjs/external/reanimated/textures.d.ts +5 -0
  139. package/lib/commonjs/external/reanimated/textures.js +52 -0
  140. package/lib/commonjs/external/reanimated/textures.js.map +1 -0
  141. package/lib/commonjs/headless/index.js +1 -1
  142. package/lib/commonjs/headless/index.js.map +1 -1
  143. package/lib/commonjs/mock/index.js +3 -0
  144. package/lib/commonjs/mock/index.js.map +1 -1
  145. package/lib/commonjs/renderer/Canvas.js +6 -5
  146. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  147. package/lib/commonjs/renderer/Container.d.ts +1 -1
  148. package/lib/commonjs/renderer/Container.js +2 -1
  149. package/lib/commonjs/renderer/Container.js.map +1 -1
  150. package/lib/commonjs/renderer/Offscreen.d.ts +1 -0
  151. package/lib/commonjs/renderer/Offscreen.js +18 -5
  152. package/lib/commonjs/renderer/Offscreen.js.map +1 -1
  153. package/lib/commonjs/renderer/Reconciler.d.ts +1 -1
  154. package/lib/commonjs/renderer/Reconciler.js +7 -4
  155. package/lib/commonjs/renderer/Reconciler.js.map +1 -1
  156. package/lib/commonjs/skia/types/Matrix4.d.ts +2 -2
  157. package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
  158. package/lib/commonjs/skia/types/Shader/Shader.d.ts +1 -1
  159. package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
  160. package/lib/commonjs/skia/web/JsiSkPath.d.ts +2 -2
  161. package/lib/commonjs/skia/web/JsiSkPath.js +10 -2
  162. package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
  163. package/lib/commonjs/views/SkiaJSDomView.d.ts +31 -0
  164. package/lib/commonjs/views/SkiaJSDomView.js +161 -0
  165. package/lib/commonjs/views/SkiaJSDomView.js.map +1 -0
  166. package/lib/commonjs/views/SkiaJSDomView.web.d.ts +1 -0
  167. package/lib/commonjs/views/SkiaJSDomView.web.js +14 -0
  168. package/lib/commonjs/views/SkiaJSDomView.web.js.map +1 -0
  169. package/lib/module/dom/nodes/JsiSkDOM.d.ts +3 -2
  170. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  171. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  172. package/lib/module/external/reanimated/index.d.ts +1 -0
  173. package/lib/module/external/reanimated/index.js +1 -0
  174. package/lib/module/external/reanimated/index.js.map +1 -1
  175. package/lib/module/external/reanimated/interpolators.js +15 -2
  176. package/lib/module/external/reanimated/interpolators.js.map +1 -1
  177. package/lib/module/external/reanimated/moduleWrapper.d.ts +1 -0
  178. package/lib/module/external/reanimated/moduleWrapper.js +3 -2
  179. package/lib/module/external/reanimated/moduleWrapper.js.map +1 -1
  180. package/lib/module/external/reanimated/textures.d.ts +5 -0
  181. package/lib/module/external/reanimated/textures.js +35 -0
  182. package/lib/module/external/reanimated/textures.js.map +1 -0
  183. package/lib/module/headless/index.js +1 -1
  184. package/lib/module/headless/index.js.map +1 -1
  185. package/lib/module/mock/index.js +3 -0
  186. package/lib/module/mock/index.js.map +1 -1
  187. package/lib/module/renderer/Canvas.js +5 -4
  188. package/lib/module/renderer/Canvas.js.map +1 -1
  189. package/lib/module/renderer/Container.d.ts +1 -1
  190. package/lib/module/renderer/Container.js +2 -1
  191. package/lib/module/renderer/Container.js.map +1 -1
  192. package/lib/module/renderer/Offscreen.d.ts +1 -0
  193. package/lib/module/renderer/Offscreen.js +11 -3
  194. package/lib/module/renderer/Offscreen.js.map +1 -1
  195. package/lib/module/renderer/Reconciler.d.ts +1 -1
  196. package/lib/module/renderer/Reconciler.js +7 -4
  197. package/lib/module/renderer/Reconciler.js.map +1 -1
  198. package/lib/module/skia/types/Matrix4.d.ts +2 -2
  199. package/lib/module/skia/types/Matrix4.js.map +1 -1
  200. package/lib/module/skia/types/Shader/Shader.d.ts +1 -1
  201. package/lib/module/skia/types/Shader/Shader.js.map +1 -1
  202. package/lib/module/skia/web/JsiSkPath.d.ts +2 -2
  203. package/lib/module/skia/web/JsiSkPath.js +10 -2
  204. package/lib/module/skia/web/JsiSkPath.js.map +1 -1
  205. package/lib/module/views/SkiaJSDomView.d.ts +31 -0
  206. package/lib/module/views/SkiaJSDomView.js +136 -0
  207. package/lib/module/views/SkiaJSDomView.js.map +1 -0
  208. package/lib/module/views/SkiaJSDomView.web.d.ts +1 -0
  209. package/lib/module/views/SkiaJSDomView.web.js +2 -0
  210. package/lib/module/views/SkiaJSDomView.web.js.map +1 -0
  211. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +3 -2
  212. package/lib/typescript/src/external/reanimated/index.d.ts +1 -0
  213. package/lib/typescript/src/external/reanimated/moduleWrapper.d.ts +1 -0
  214. package/lib/typescript/src/external/reanimated/textures.d.ts +5 -0
  215. package/lib/typescript/src/renderer/Container.d.ts +1 -1
  216. package/lib/typescript/src/renderer/Offscreen.d.ts +1 -0
  217. package/lib/typescript/src/renderer/Reconciler.d.ts +1 -1
  218. package/lib/typescript/src/skia/types/Matrix4.d.ts +2 -2
  219. package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -1
  220. package/lib/typescript/src/skia/web/JsiSkPath.d.ts +2 -2
  221. package/lib/typescript/src/views/SkiaJSDomView.d.ts +31 -0
  222. package/lib/typescript/src/views/SkiaJSDomView.web.d.ts +1 -0
  223. package/libs/android/arm64-v8a/libskia.a +0 -0
  224. package/libs/android/arm64-v8a/libskottie.a +0 -0
  225. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  226. package/libs/android/arm64-v8a/libsksg.a +0 -0
  227. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  228. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  229. package/libs/android/arm64-v8a/libsvg.a +0 -0
  230. package/libs/android/armeabi-v7a/libskia.a +0 -0
  231. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  232. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  233. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  234. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  235. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  236. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  237. package/libs/android/x86/libskia.a +0 -0
  238. package/libs/android/x86/libskottie.a +0 -0
  239. package/libs/android/x86/libskparagraph.a +0 -0
  240. package/libs/android/x86/libsksg.a +0 -0
  241. package/libs/android/x86/libskshaper.a +0 -0
  242. package/libs/android/x86/libskunicode.a +0 -0
  243. package/libs/android/x86/libsvg.a +0 -0
  244. package/libs/android/x86_64/libskia.a +0 -0
  245. package/libs/android/x86_64/libskottie.a +0 -0
  246. package/libs/android/x86_64/libskparagraph.a +0 -0
  247. package/libs/android/x86_64/libsksg.a +0 -0
  248. package/libs/android/x86_64/libskshaper.a +0 -0
  249. package/libs/android/x86_64/libskunicode.a +0 -0
  250. package/libs/android/x86_64/libsvg.a +0 -0
  251. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  252. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  253. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  254. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  255. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  256. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  257. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  258. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  259. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  260. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  261. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  262. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  263. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  264. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  265. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  266. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  267. package/package.json +1 -1
  268. package/src/dom/nodes/JsiSkDOM.ts +55 -56
  269. package/src/external/reanimated/index.ts +1 -0
  270. package/src/external/reanimated/interpolators.ts +17 -3
  271. package/src/external/reanimated/moduleWrapper.ts +1 -0
  272. package/src/external/reanimated/textures.tsx +50 -0
  273. package/src/headless/index.ts +1 -1
  274. package/src/mock/index.ts +3 -0
  275. package/src/renderer/Canvas.tsx +4 -3
  276. package/src/renderer/Container.tsx +3 -2
  277. package/src/renderer/Offscreen.tsx +12 -3
  278. package/src/renderer/Reconciler.tsx +5 -2
  279. package/src/skia/types/Matrix4.ts +2 -2
  280. package/src/skia/types/Shader/Shader.ts +6 -1
  281. package/src/skia/web/JsiSkPath.ts +23 -3
  282. package/src/views/SkiaJSDomView.tsx +126 -0
  283. package/src/views/SkiaJSDomView.web.tsx +1 -0
  284. package/android/cpp/jni/include/JniSkiaDrawView.h +0 -90
  285. package/cpp/rnskia/RNSkJsView.cpp +0 -236
  286. package/cpp/rnskia/RNSkJsView.h +0 -121
  287. package/cpp/skia/include/gpu/GrSurfaceInfo.h +0 -142
  288. package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +0 -107
  289. package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +0 -32
  290. package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +0 -83
  291. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +0 -47
  292. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +0 -57
  293. package/cpp/skia/include/utils/SkBase64.h +0 -53
  294. package/cpp/skia/modules/skcms/skcms_internal.h +0 -56
@@ -55,7 +55,6 @@ import type {
55
55
  Path1DPathEffectProps,
56
56
  Path2DPathEffectProps,
57
57
  } from "../types/PathEffects";
58
- import { NATIVE_DOM } from "../../renderer/HostComponents";
59
58
  import type { ParagraphProps } from "../types/Paragraph";
60
59
 
61
60
  import {
@@ -125,200 +124,200 @@ import { LayerNode } from "./LayerNode";
125
124
  import { ParagraphNode } from "./drawings/ParagraphNode";
126
125
 
127
126
  export class JsiSkDOM implements SkDOM {
128
- constructor(private ctx: NodeContext) {}
127
+ constructor(private ctx: NodeContext, private native: boolean) {}
129
128
 
130
129
  Layer(props?: ChildrenProps) {
131
- return NATIVE_DOM
130
+ return this.native
132
131
  ? global.SkiaDomApi.LayerNode(props ?? {})
133
132
  : new LayerNode(this.ctx, props ?? {});
134
133
  }
135
134
 
136
135
  Group(props?: GroupProps) {
137
- return NATIVE_DOM
136
+ return this.native
138
137
  ? global.SkiaDomApi.GroupNode(props ?? {})
139
138
  : new GroupNode(this.ctx, props ?? {});
140
139
  }
141
140
 
142
141
  Paint(props: PaintProps) {
143
- return NATIVE_DOM
142
+ return this.native
144
143
  ? global.SkiaDomApi.PaintNode(props ?? {})
145
144
  : new PaintNode(this.ctx, props);
146
145
  }
147
146
 
148
147
  // Drawings
149
148
  Fill(props?: DrawingNodeProps) {
150
- return NATIVE_DOM
149
+ return this.native
151
150
  ? global.SkiaDomApi.FillNode(props ?? {})
152
151
  : new FillNode(this.ctx, props);
153
152
  }
154
153
 
155
154
  Image(props: ImageProps) {
156
- return NATIVE_DOM
155
+ return this.native
157
156
  ? global.SkiaDomApi.ImageNode(props ?? {})
158
157
  : new ImageNode(this.ctx, props);
159
158
  }
160
159
 
161
160
  Circle(props: CircleProps) {
162
- return NATIVE_DOM
161
+ return this.native
163
162
  ? global.SkiaDomApi.CircleNode(props ?? {})
164
163
  : new CircleNode(this.ctx, props);
165
164
  }
166
165
 
167
166
  Path(props: PathProps) {
168
- return NATIVE_DOM
167
+ return this.native
169
168
  ? global.SkiaDomApi.PathNode(props ?? {})
170
169
  : new PathNode(this.ctx, props);
171
170
  }
172
171
 
173
172
  Line(props: LineProps) {
174
- return NATIVE_DOM
173
+ return this.native
175
174
  ? global.SkiaDomApi.LineNode(props ?? {})
176
175
  : new LineNode(this.ctx, props);
177
176
  }
178
177
 
179
178
  Oval(props: OvalProps) {
180
- return NATIVE_DOM
179
+ return this.native
181
180
  ? global.SkiaDomApi.OvalNode(props ?? {})
182
181
  : new OvalNode(this.ctx, props);
183
182
  }
184
183
 
185
184
  Patch(props: PatchProps) {
186
- return NATIVE_DOM
185
+ return this.native
187
186
  ? global.SkiaDomApi.PatchNode(props ?? {})
188
187
  : new PatchNode(this.ctx, props);
189
188
  }
190
189
 
191
190
  Points(props: PointsProps) {
192
- return NATIVE_DOM
191
+ return this.native
193
192
  ? global.SkiaDomApi.PointsNode(props ?? {})
194
193
  : new PointsNode(this.ctx, props);
195
194
  }
196
195
 
197
196
  Rect(props: RectProps) {
198
- return NATIVE_DOM
197
+ return this.native
199
198
  ? global.SkiaDomApi.RectNode(props)
200
199
  : new RectNode(this.ctx, props);
201
200
  }
202
201
 
203
202
  RRect(props: RoundedRectProps) {
204
- return NATIVE_DOM
203
+ return this.native
205
204
  ? global.SkiaDomApi.RRectNode(props)
206
205
  : new RRectNode(this.ctx, props);
207
206
  }
208
207
 
209
208
  Vertices(props: VerticesProps) {
210
- return NATIVE_DOM
209
+ return this.native
211
210
  ? global.SkiaDomApi.VerticesNode(props)
212
211
  : new VerticesNode(this.ctx, props);
213
212
  }
214
213
 
215
214
  Text(props: TextProps) {
216
- return NATIVE_DOM
215
+ return this.native
217
216
  ? global.SkiaDomApi.TextNode(props)
218
217
  : new TextNode(this.ctx, props);
219
218
  }
220
219
 
221
220
  TextPath(props: TextPathProps) {
222
- return NATIVE_DOM
221
+ return this.native
223
222
  ? global.SkiaDomApi.TextPathNode(props)
224
223
  : new TextPathNode(this.ctx, props);
225
224
  }
226
225
 
227
226
  TextBlob(props: TextBlobProps) {
228
- return NATIVE_DOM
227
+ return this.native
229
228
  ? global.SkiaDomApi.TextBlobNode(props)
230
229
  : new TextBlobNode(this.ctx, props);
231
230
  }
232
231
 
233
232
  Glyphs(props: GlyphsProps) {
234
- return NATIVE_DOM
233
+ return this.native
235
234
  ? global.SkiaDomApi.GlyphsNode(props)
236
235
  : new GlyphsNode(this.ctx, props);
237
236
  }
238
237
 
239
238
  DiffRect(props: DiffRectProps) {
240
- return NATIVE_DOM
239
+ return this.native
241
240
  ? global.SkiaDomApi.DiffRectNode(props)
242
241
  : new DiffRectNode(this.ctx, props);
243
242
  }
244
243
 
245
244
  Picture(props: PictureProps) {
246
- return NATIVE_DOM
245
+ return this.native
247
246
  ? global.SkiaDomApi.PictureNode(props)
248
247
  : new PictureNode(this.ctx, props);
249
248
  }
250
249
 
251
250
  ImageSVG(props: ImageSVGProps) {
252
- return NATIVE_DOM
251
+ return this.native
253
252
  ? global.SkiaDomApi.ImageSVGNode(props)
254
253
  : new ImageSVGNode(this.ctx, props);
255
254
  }
256
255
 
257
256
  // BlurMaskFilters
258
257
  BlurMaskFilter(props: BlurMaskFilterProps) {
259
- return NATIVE_DOM
258
+ return this.native
260
259
  ? global.SkiaDomApi.BlurMaskFilterNode(props)
261
260
  : new BlurMaskFilterNode(this.ctx, props);
262
261
  }
263
262
 
264
263
  // ImageFilters
265
264
  BlendImageFilter(props: BlendImageFilterProps) {
266
- return NATIVE_DOM
265
+ return this.native
267
266
  ? global.SkiaDomApi.BlendImageFilterNode(props)
268
267
  : new BlendImageFilterNode(this.ctx, props);
269
268
  }
270
269
 
271
270
  DropShadowImageFilter(props: DropShadowImageFilterProps) {
272
- return NATIVE_DOM
271
+ return this.native
273
272
  ? global.SkiaDomApi.DropShadowImageFilterNode(props)
274
273
  : new DropShadowImageFilterNode(this.ctx, props);
275
274
  }
276
275
 
277
276
  DisplacementMapImageFilter(props: DisplacementMapImageFilterProps) {
278
- return NATIVE_DOM
277
+ return this.native
279
278
  ? global.SkiaDomApi.DisplacementMapImageFilterNode(props)
280
279
  : new DisplacementMapImageFilterNode(this.ctx, props);
281
280
  }
282
281
 
283
282
  BlurImageFilter(props: BlurImageFilterProps) {
284
- return NATIVE_DOM
283
+ return this.native
285
284
  ? global.SkiaDomApi.BlurImageFilterNode(props)
286
285
  : new BlurImageFilterNode(this.ctx, props);
287
286
  }
288
287
 
289
288
  OffsetImageFilter(props: OffsetImageFilterProps) {
290
- return NATIVE_DOM
289
+ return this.native
291
290
  ? global.SkiaDomApi.OffsetImageFilterNode(props)
292
291
  : new OffsetImageFilterNode(this.ctx, props);
293
292
  }
294
293
 
295
294
  MorphologyImageFilter(props: MorphologyImageFilterProps) {
296
- return NATIVE_DOM
295
+ return this.native
297
296
  ? global.SkiaDomApi.MorphologyImageFilterNode(props)
298
297
  : new MorphologyImageFilterNode(this.ctx, props);
299
298
  }
300
299
 
301
300
  RuntimeShaderImageFilter(props: RuntimeShaderImageFilterProps) {
302
- return NATIVE_DOM
301
+ return this.native
303
302
  ? global.SkiaDomApi.RuntimeShaderImageFilterNode(props)
304
303
  : new RuntimeShaderImageFilterNode(this.ctx, props);
305
304
  }
306
305
 
307
306
  // Color Filters
308
307
  MatrixColorFilter(props: MatrixColorFilterProps) {
309
- return NATIVE_DOM
308
+ return this.native
310
309
  ? global.SkiaDomApi.MatrixColorFilterNode(props)
311
310
  : new MatrixColorFilterNode(this.ctx, props);
312
311
  }
313
312
 
314
313
  BlendColorFilter(props: BlendColorFilterProps) {
315
- return NATIVE_DOM
314
+ return this.native
316
315
  ? global.SkiaDomApi.BlendColorFilterNode(props)
317
316
  : new BlendColorFilterNode(this.ctx, props);
318
317
  }
319
318
 
320
319
  LumaColorFilter() {
321
- return NATIVE_DOM
320
+ return this.native
322
321
  ? global.SkiaDomApi.LumaColorFilterNode()
323
322
  : new LumaColorFilterNode(this.ctx);
324
323
  }
@@ -338,136 +337,136 @@ export class JsiSkDOM implements SkDOM {
338
337
  }
339
338
 
340
339
  LerpColorFilter(props: LerpColorFilterProps) {
341
- return NATIVE_DOM
340
+ return this.native
342
341
  ? global.SkiaDomApi.LerpColorFilterNode(props)
343
342
  : new LerpColorFilterNode(this.ctx, props);
344
343
  }
345
344
 
346
345
  // Shaders
347
346
  Shader(props: ShaderProps) {
348
- return NATIVE_DOM
347
+ return this.native
349
348
  ? global.SkiaDomApi.ShaderNode(props)
350
349
  : new ShaderNode(this.ctx, props);
351
350
  }
352
351
 
353
352
  ImageShader(props: ImageShaderProps) {
354
- return NATIVE_DOM
353
+ return this.native
355
354
  ? global.SkiaDomApi.ImageShaderNode(props)
356
355
  : new ImageShaderNode(this.ctx, props);
357
356
  }
358
357
 
359
358
  ColorShader(props: ColorProps) {
360
- return NATIVE_DOM
359
+ return this.native
361
360
  ? global.SkiaDomApi.ColorShaderNode(props)
362
361
  : new ColorNode(this.ctx, props);
363
362
  }
364
363
 
365
364
  SweepGradient(props: SweepGradientProps) {
366
- return NATIVE_DOM
365
+ return this.native
367
366
  ? global.SkiaDomApi.SweepGradientNode(props)
368
367
  : new SweepGradientNode(this.ctx, props);
369
368
  }
370
369
 
371
370
  Turbulence(props: TurbulenceProps) {
372
- return NATIVE_DOM
371
+ return this.native
373
372
  ? global.SkiaDomApi.TurbulenceNode(props)
374
373
  : new TurbulenceNode(this.ctx, props);
375
374
  }
376
375
 
377
376
  FractalNoise(props: FractalNoiseProps) {
378
- return NATIVE_DOM
377
+ return this.native
379
378
  ? global.SkiaDomApi.FractalNoiseNode(props)
380
379
  : new FractalNoiseNode(this.ctx, props);
381
380
  }
382
381
 
383
382
  LinearGradient(props: LinearGradientProps) {
384
- return NATIVE_DOM
383
+ return this.native
385
384
  ? global.SkiaDomApi.LinearGradientNode(props)
386
385
  : new LinearGradientNode(this.ctx, props);
387
386
  }
388
387
 
389
388
  RadialGradient(props: RadialGradientProps) {
390
- return NATIVE_DOM
389
+ return this.native
391
390
  ? global.SkiaDomApi.RadialGradientNode(props)
392
391
  : new RadialGradientNode(this.ctx, props);
393
392
  }
394
393
 
395
394
  TwoPointConicalGradient(props: TwoPointConicalGradientProps) {
396
- return NATIVE_DOM
395
+ return this.native
397
396
  ? global.SkiaDomApi.TwoPointConicalGradientNode(props)
398
397
  : new TwoPointConicalGradientNode(this.ctx, props);
399
398
  }
400
399
 
401
400
  // Path Effects
402
401
  CornerPathEffect(props: CornerPathEffectProps) {
403
- return NATIVE_DOM
402
+ return this.native
404
403
  ? global.SkiaDomApi.CornerPathEffectNode(props)
405
404
  : new CornerPathEffectNode(this.ctx, props);
406
405
  }
407
406
 
408
407
  DiscretePathEffect(props: DiscretePathEffectProps) {
409
- return NATIVE_DOM
408
+ return this.native
410
409
  ? global.SkiaDomApi.DiscretePathEffectNode(props)
411
410
  : new DiscretePathEffectNode(this.ctx, props);
412
411
  }
413
412
 
414
413
  DashPathEffect(props: DashPathEffectProps) {
415
- return NATIVE_DOM
414
+ return this.native
416
415
  ? global.SkiaDomApi.DashPathEffectNode(props)
417
416
  : new DashPathEffectNode(this.ctx, props);
418
417
  }
419
418
 
420
419
  Path1DPathEffect(props: Path1DPathEffectProps) {
421
- return NATIVE_DOM
420
+ return this.native
422
421
  ? global.SkiaDomApi.Path1DPathEffectNode(props)
423
422
  : new Path1DPathEffectNode(this.ctx, props);
424
423
  }
425
424
 
426
425
  Path2DPathEffect(props: Path2DPathEffectProps) {
427
- return NATIVE_DOM
426
+ return this.native
428
427
  ? global.SkiaDomApi.Path2DPathEffectNode(props)
429
428
  : new Path2DPathEffectNode(this.ctx, props);
430
429
  }
431
430
 
432
431
  SumPathEffect() {
433
- return NATIVE_DOM
432
+ return this.native
434
433
  ? global.SkiaDomApi.SumPathEffectNode()
435
434
  : new SumPathEffectNode(this.ctx);
436
435
  }
437
436
 
438
437
  Line2DPathEffect(props: Line2DPathEffectProps) {
439
- return NATIVE_DOM
438
+ return this.native
440
439
  ? global.SkiaDomApi.Line2DPathEffectNode(props)
441
440
  : new Line2DPathEffectNode(this.ctx, props);
442
441
  }
443
442
 
444
443
  Blend(props: BlendProps) {
445
- return NATIVE_DOM
444
+ return this.native
446
445
  ? global.SkiaDomApi.BlendNode(props)
447
446
  : new BlendNode(this.ctx, props);
448
447
  }
449
448
 
450
449
  BackdropFilter(props: ChildrenProps) {
451
- return NATIVE_DOM
450
+ return this.native
452
451
  ? global.SkiaDomApi.BackdropFilterNode(props)
453
452
  : new BackdropFilterNode(this.ctx, props);
454
453
  }
455
454
 
456
455
  Box(props: BoxProps) {
457
- return NATIVE_DOM
456
+ return this.native
458
457
  ? global.SkiaDomApi.BoxNode(props)
459
458
  : new BoxNode(this.ctx, props);
460
459
  }
461
460
 
462
461
  BoxShadow(props: BoxShadowProps) {
463
- return NATIVE_DOM
462
+ return this.native
464
463
  ? global.SkiaDomApi.BoxShadowNode(props)
465
464
  : new BoxShadowNode(this.ctx, props);
466
465
  }
467
466
 
468
467
  // Paragraph
469
468
  Paragraph(props: ParagraphProps) {
470
- return NATIVE_DOM
469
+ return this.native
471
470
  ? global.SkiaDomApi.ParagraphNode(props)
472
471
  : new ParagraphNode(this.ctx, props);
473
472
  }
@@ -2,3 +2,4 @@ export * from "./useAnimatedImageValue";
2
2
  export * from "./useDerivedValueOnJS";
3
3
  export * from "./renderHelpers";
4
4
  export * from "./interpolators";
5
+ export * from "./textures";
@@ -8,6 +8,7 @@ import { useCallback, useMemo } from "react";
8
8
  import type { SkPath, SkPoint } from "../../skia/types";
9
9
  import { interpolatePaths, interpolateVector } from "../../animation";
10
10
  import { Skia } from "../../skia";
11
+ import { Platform } from "../../Platform";
11
12
 
12
13
  import {
13
14
  useAnimatedReaction,
@@ -18,7 +19,7 @@ import {
18
19
 
19
20
  export const notifyChange = (value: SharedValue<unknown>) => {
20
21
  "worklet";
21
- if (_WORKLET) {
22
+ if (_WORKLET || Platform.OS === "web") {
22
23
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
24
  (value as any)._value = value.value;
24
25
  }
@@ -86,8 +87,20 @@ export const usePathInterpolation = (
86
87
  input: number[],
87
88
  outputRange: SkPath[],
88
89
  options?: ExtrapolationType
89
- ) =>
90
- useInterpolator(
90
+ ) => {
91
+ // Check if all paths in outputRange are interpolable
92
+ const allPathsInterpolable = outputRange
93
+ .slice(1)
94
+ .every((path) => outputRange[0].isInterpolatable(path));
95
+ if (!allPathsInterpolable) {
96
+ // Handle the case where not all paths are interpolable
97
+ // For example, throw an error or return early
98
+ throw new Error(
99
+ `Not all paths in the output range are interpolable.
100
+ See: https://shopify.github.io/react-native-skia/docs/animations/hooks#usepathinterpolation`
101
+ );
102
+ }
103
+ return useInterpolator(
91
104
  () => Skia.Path.Make(),
92
105
  value,
93
106
  interpolatePaths,
@@ -95,6 +108,7 @@ export const usePathInterpolation = (
95
108
  outputRange,
96
109
  options
97
110
  );
111
+ };
98
112
 
99
113
  export const useVectorInterpolation = (
100
114
  value: SharedValue<number>,
@@ -63,6 +63,7 @@ export const stopMapper: (mapperID: number) => void =
63
63
  Reanimated2?.stopMapper || throwOnMissingReanimated;
64
64
 
65
65
  export const runOnJS = Reanimated2?.runOnJS || throwOnMissingReanimated;
66
+ export const runOnUI = Reanimated2?.runOnUI || throwOnMissingReanimated;
66
67
 
67
68
  export const useAnimatedReaction: <T>(
68
69
  prepare: () => T,
@@ -0,0 +1,50 @@
1
+ import { useEffect, useMemo } from "react";
2
+ import type { ReactElement } from "react";
3
+ import type { SharedValue } from "react-native-reanimated";
4
+
5
+ import { Skia } from "../../skia";
6
+ import type { SkImage, SkPicture, SkSize } from "../../skia/types";
7
+ import { drawAsPicture } from "../../renderer/Offscreen";
8
+
9
+ import { runOnUI, useSharedValue } from "./moduleWrapper";
10
+
11
+ // TODO: We're not sure yet why PixelRatio is not needed here.
12
+ const pd = 1; //Platform.PixelRatio;
13
+
14
+ const createTexture = (
15
+ texture: SharedValue<SkImage | null>,
16
+ picture: SkPicture,
17
+ size: SkSize
18
+ ) => {
19
+ "worklet";
20
+ const surface = Skia.Surface.MakeOffscreen(
21
+ size.width * pd,
22
+ size.height * pd
23
+ )!;
24
+ const canvas = surface.getCanvas();
25
+ // see comment above
26
+ //canvas.save();
27
+ //canvas.scale(pd, pd);
28
+ canvas.drawPicture(picture);
29
+ //canvas.restore();
30
+ surface.flush();
31
+ texture.value = surface.makeImageSnapshot();
32
+ };
33
+
34
+ export const useTextureValue = (element: ReactElement, size: SkSize) => {
35
+ const picture = useMemo(() => {
36
+ return drawAsPicture(element);
37
+ }, [element]);
38
+ return useTextureValueFromPicture(picture, size);
39
+ };
40
+
41
+ export const useTextureValueFromPicture = (
42
+ picture: SkPicture,
43
+ size: SkSize
44
+ ) => {
45
+ const texture = useSharedValue<SkImage | null>(null);
46
+ useEffect(() => {
47
+ runOnUI(createTexture)(texture, picture, size);
48
+ }, [texture, picture, size]);
49
+ return texture;
50
+ };
@@ -25,7 +25,7 @@ export const makeOffscreenSurface = (width: number, height: number) => {
25
25
  };
26
26
 
27
27
  export const drawOffscreen = (surface: SkSurface, element: ReactNode) => {
28
- const root = new SkiaRoot(Skia);
28
+ const root = new SkiaRoot(Skia, false);
29
29
  root.render(element);
30
30
  const canvas = surface.getCanvas();
31
31
  const ctx = new JsiDrawingContext(Skia, canvas);
package/src/mock/index.ts CHANGED
@@ -31,9 +31,12 @@ export const Mock = (CanvasKit: CanvasKit) => {
31
31
  // Reanimated hooks
32
32
  useClock: NoopSharedValue,
33
33
  usePathInterpolation: NoopSharedValue,
34
+ useTextureValue: NoopSharedValue,
35
+ useTextureValueFromPicture: NoopSharedValue,
34
36
  useRawData: Noop,
35
37
  useData: Noop,
36
38
  useFont: () => Skia.Font(undefined, 0),
39
+ useFonts: Noop,
37
40
  useTypeface: () => null,
38
41
  useImage: () => null,
39
42
  useSVG: () => null,
@@ -15,9 +15,9 @@ import type {
15
15
  import type { LayoutChangeEvent } from "react-native";
16
16
 
17
17
  import { SkiaDomView } from "../views";
18
- import { SkiaDomView as SkiaDomViewWeb } from "../views/SkiaDomView.web";
19
18
  import { Skia } from "../skia/Skia";
20
19
  import type { TouchHandler, SkiaBaseViewProps } from "../views";
20
+ import { SkiaJSDomView } from "../views/SkiaJSDomView";
21
21
 
22
22
  import { SkiaRoot } from "./Reconciler";
23
23
  import { NATIVE_DOM } from "./HostComponents";
@@ -75,7 +75,7 @@ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
75
75
  }, [innerRef]);
76
76
 
77
77
  const root = useMemo(
78
- () => new SkiaRoot(Skia, redraw, getNativeId),
78
+ () => new SkiaRoot(Skia, NATIVE_DOM, redraw, getNativeId),
79
79
  [redraw, getNativeId]
80
80
  );
81
81
 
@@ -105,7 +105,8 @@ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
105
105
  );
106
106
  } else {
107
107
  return (
108
- <SkiaDomViewWeb
108
+ <SkiaJSDomView
109
+ Skia={Skia}
109
110
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
110
111
  ref={ref as any}
111
112
  style={style}
@@ -13,9 +13,10 @@ export class Container {
13
13
  constructor(
14
14
  Skia: Skia,
15
15
  public redraw: () => void = () => {},
16
- public getNativeId: () => number = () => 0
16
+ public getNativeId: () => number = () => 0,
17
+ native: boolean
17
18
  ) {
18
- this.Sk = new JsiSkDOM({ Skia });
19
+ this.Sk = new JsiSkDOM({ Skia }, native);
19
20
  this._root = this.Sk.Group();
20
21
  }
21
22
 
@@ -10,15 +10,24 @@ export const drawAsImage = (
10
10
  width: number,
11
11
  height: number
12
12
  ) => {
13
+ const picture = drawAsPicture(element);
13
14
  const surface = Skia.Surface.MakeOffscreen(width, height);
14
15
  if (!surface) {
15
16
  throw new Error("Could not create offscreen surface");
16
17
  }
17
18
  const canvas = surface.getCanvas();
18
- const root = new SkiaRoot(Skia);
19
+ canvas.drawPicture(picture);
20
+ surface.flush();
21
+ return surface.makeImageSnapshot();
22
+ };
23
+
24
+ export const drawAsPicture = (element: ReactElement) => {
25
+ const recorder = Skia.PictureRecorder();
26
+ const canvas = recorder.beginRecording();
27
+ const root = new SkiaRoot(Skia, false);
19
28
  root.render(element);
20
29
  const ctx = new JsiDrawingContext(Skia, canvas);
21
30
  root.dom.render(ctx);
22
- surface.flush();
23
- return surface.makeImageSnapshot();
31
+ const picture = recorder.finishRecordingAsPicture();
32
+ return picture;
24
33
  };
@@ -21,10 +21,11 @@ export class SkiaRoot {
21
21
 
22
22
  constructor(
23
23
  Skia: Skia,
24
+ native = false,
24
25
  redraw: () => void = () => {},
25
26
  getNativeId: () => number = () => 0
26
27
  ) {
27
- this.container = new Container(Skia, redraw, getNativeId);
28
+ this.container = new Container(Skia, redraw, getNativeId, native);
28
29
  this.root = skiaReconciler.createContainer(
29
30
  this.container,
30
31
  0,
@@ -45,7 +46,9 @@ export class SkiaRoot {
45
46
  }
46
47
 
47
48
  unmount() {
48
- skiaReconciler.updateContainer(null, this.root, null, () => {});
49
+ skiaReconciler.updateContainer(null, this.root, null, () => {
50
+ hostDebug("unmountContainer");
51
+ });
49
52
  }
50
53
 
51
54
  get dom() {
@@ -356,13 +356,13 @@ export const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {
356
356
  colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];
357
357
  }
358
358
  }
359
- return colMajorMatrix;
359
+ return colMajorMatrix as unknown as Matrix4;
360
360
  };
361
361
 
362
362
  /**
363
363
  * @worklet
364
364
  */
365
- export const convertToAffineMatrix = (m4: number[]) => {
365
+ export const convertToAffineMatrix = (m4: Matrix4) => {
366
366
  "worklet";
367
367
  // Extracting the relevant components from the 4x4 matrix
368
368
  const a = m4[0]; // Scale X
@@ -7,7 +7,12 @@ export const isShader = (obj: SkJSIInstance<string> | null): obj is SkShader =>
7
7
 
8
8
  export type SkShader = SkJSIInstance<"Shader">;
9
9
 
10
- export type Uniform = number | Vector | Float32Array | Uniform[];
10
+ export type Uniform =
11
+ | number
12
+ | Vector
13
+ | Float32Array
14
+ | readonly Uniform[]
15
+ | Uniform[];
11
16
 
12
17
  export interface Uniforms {
13
18
  [name: string]: Uniform;