@shopify/react-native-skia 0.1.158 → 0.1.159

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 (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -127,232 +127,346 @@ export class JsiSkDOM implements SkDOM {
127
127
  constructor(private ctx: NodeContext) {}
128
128
 
129
129
  Layer(props?: ChildrenProps) {
130
- return new LayerNode(this.ctx, props ?? {});
130
+ return global.SkiaDomApi && global.SkiaDomApi.LayerNode
131
+ ? global.SkiaDomApi.LayerNode(props ?? {})
132
+ : new LayerNode(this.ctx, props ?? {});
131
133
  }
132
134
 
133
135
  Group(props?: GroupProps) {
134
- return new GroupNode(this.ctx, props ?? {});
136
+ return global.SkiaDomApi && global.SkiaDomApi.GroupNode
137
+ ? global.SkiaDomApi.GroupNode(props ?? {})
138
+ : new GroupNode(this.ctx, props ?? {});
135
139
  }
136
140
 
137
141
  Paint(props: PaintProps) {
138
- return new PaintNode(this.ctx, props);
142
+ return global.SkiaDomApi && global.SkiaDomApi.PaintNode
143
+ ? global.SkiaDomApi.PaintNode(props ?? {})
144
+ : new PaintNode(this.ctx, props);
139
145
  }
140
146
 
141
147
  // Drawings
142
148
  Fill(props?: DrawingNodeProps) {
143
- return new FillNode(this.ctx, props);
149
+ return global.SkiaDomApi && global.SkiaDomApi.FillNode
150
+ ? global.SkiaDomApi.FillNode(props ?? {})
151
+ : new FillNode(this.ctx, props);
144
152
  }
145
153
 
146
154
  Image(props: ImageProps) {
147
- return new ImageNode(this.ctx, props);
155
+ return global.SkiaDomApi && global.SkiaDomApi.ImageNode
156
+ ? global.SkiaDomApi.ImageNode(props ?? {})
157
+ : new ImageNode(this.ctx, props);
148
158
  }
149
159
 
150
160
  Circle(props: CircleProps) {
151
- return new CircleNode(this.ctx, props);
161
+ return global.SkiaDomApi && global.SkiaDomApi.CircleNode
162
+ ? global.SkiaDomApi.CircleNode(props ?? {})
163
+ : new CircleNode(this.ctx, props);
152
164
  }
153
165
 
154
166
  Path(props: PathProps) {
155
- return new PathNode(this.ctx, props);
167
+ return global.SkiaDomApi && global.SkiaDomApi.PathNode
168
+ ? global.SkiaDomApi.PathNode(props ?? {})
169
+ : new PathNode(this.ctx, props);
156
170
  }
157
171
 
158
172
  CustomDrawing(props: CustomDrawingNodeProps) {
159
- return new CustomDrawingNode(this.ctx, props);
173
+ return global.SkiaDomApi && global.SkiaDomApi.CustomDrawingNode
174
+ ? global.SkiaDomApi.CustomDrawingNode(props ?? {})
175
+ : new CustomDrawingNode(this.ctx, props);
160
176
  }
161
177
 
162
178
  Line(props: LineProps) {
163
- return new LineNode(this.ctx, props);
179
+ return global.SkiaDomApi && global.SkiaDomApi.LineNode
180
+ ? global.SkiaDomApi.LineNode(props ?? {})
181
+ : new LineNode(this.ctx, props);
164
182
  }
165
183
 
166
184
  Oval(props: OvalProps) {
167
- return new OvalNode(this.ctx, props);
185
+ return global.SkiaDomApi && global.SkiaDomApi.OvalNode
186
+ ? global.SkiaDomApi.OvalNode(props ?? {})
187
+ : new OvalNode(this.ctx, props);
168
188
  }
169
189
 
170
190
  Patch(props: PatchProps) {
171
- return new PatchNode(this.ctx, props);
191
+ return global.SkiaDomApi && global.SkiaDomApi.PatchNode
192
+ ? global.SkiaDomApi.PatchNode(props ?? {})
193
+ : new PatchNode(this.ctx, props);
172
194
  }
173
195
 
174
196
  Points(props: PointsProps) {
175
- return new PointsNode(this.ctx, props);
197
+ return global.SkiaDomApi && global.SkiaDomApi.PointsNode
198
+ ? global.SkiaDomApi.PointsNode(props ?? {})
199
+ : new PointsNode(this.ctx, props);
176
200
  }
177
201
 
178
202
  Rect(props: RectProps) {
179
- return new RectNode(this.ctx, props);
203
+ return global.SkiaDomApi && global.SkiaDomApi.RectNode
204
+ ? global.SkiaDomApi.RectNode(props)
205
+ : new RectNode(this.ctx, props);
180
206
  }
181
207
 
182
208
  RRect(props: RoundedRectProps) {
183
- return new RRectNode(this.ctx, props);
209
+ return global.SkiaDomApi && global.SkiaDomApi.RRectNode
210
+ ? global.SkiaDomApi.RRectNode(props)
211
+ : new RRectNode(this.ctx, props);
184
212
  }
185
213
 
186
214
  Vertices(props: VerticesProps) {
187
- return new VerticesNode(this.ctx, props);
215
+ return global.SkiaDomApi && global.SkiaDomApi.VerticesNode
216
+ ? global.SkiaDomApi.VerticesNode(props)
217
+ : new VerticesNode(this.ctx, props);
188
218
  }
189
219
 
190
220
  Text(props: TextProps) {
191
- return new TextNode(this.ctx, props);
221
+ return global.SkiaDomApi && global.SkiaDomApi.TextNode
222
+ ? global.SkiaDomApi.TextNode(props)
223
+ : new TextNode(this.ctx, props);
192
224
  }
193
225
 
194
226
  TextPath(props: TextPathProps) {
195
- return new TextPathNode(this.ctx, props);
227
+ return global.SkiaDomApi && global.SkiaDomApi.TextPathNode
228
+ ? global.SkiaDomApi.TextPathNode(props)
229
+ : new TextPathNode(this.ctx, props);
196
230
  }
197
231
 
198
232
  TextBlob(props: TextBlobProps) {
199
- return new TextBlobNode(this.ctx, props);
233
+ return global.SkiaDomApi && global.SkiaDomApi.TextBlobNode
234
+ ? global.SkiaDomApi.TextBlobNode(props)
235
+ : new TextBlobNode(this.ctx, props);
200
236
  }
201
237
 
202
238
  Glyphs(props: GlyphsProps) {
203
- return new GlyphsNode(this.ctx, props);
239
+ return global.SkiaDomApi && global.SkiaDomApi.GlyphsNode
240
+ ? global.SkiaDomApi.GlyphsNode(props)
241
+ : new GlyphsNode(this.ctx, props);
204
242
  }
205
243
 
206
244
  DiffRect(props: DiffRectProps) {
207
- return new DiffRectNode(this.ctx, props);
245
+ return global.SkiaDomApi && global.SkiaDomApi.DiffRectNode
246
+ ? global.SkiaDomApi.DiffRectNode(props)
247
+ : new DiffRectNode(this.ctx, props);
208
248
  }
209
249
 
210
250
  Picture(props: PictureProps) {
211
- return new PictureNode(this.ctx, props);
251
+ return global.SkiaDomApi && global.SkiaDomApi.PictureNode
252
+ ? global.SkiaDomApi.PictureNode(props)
253
+ : new PictureNode(this.ctx, props);
212
254
  }
213
255
 
214
256
  ImageSVG(props: ImageSVGProps) {
215
- return new ImageSVGNode(this.ctx, props);
257
+ return global.SkiaDomApi && global.SkiaDomApi.ImageSVGNode
258
+ ? global.SkiaDomApi.ImageSVGNode(props)
259
+ : new ImageSVGNode(this.ctx, props);
216
260
  }
217
261
 
218
262
  // BlurMaskFilters
219
263
  BlurMaskFilter(props: BlurMaskFilterProps) {
220
- return new BlurMaskFilterNode(this.ctx, props);
264
+ return global.SkiaDomApi && global.SkiaDomApi.BlurMaskFilterNode
265
+ ? global.SkiaDomApi.BlurMaskFilterNode(props)
266
+ : new BlurMaskFilterNode(this.ctx, props);
221
267
  }
222
268
 
223
269
  // ImageFilters
224
270
  BlendImageFilter(props: BlendImageFilterProps) {
225
- return new BlendImageFilterNode(this.ctx, props);
271
+ return global.SkiaDomApi && global.SkiaDomApi.BlendImageFilterNode
272
+ ? global.SkiaDomApi.BlendImageFilterNode(props)
273
+ : new BlendImageFilterNode(this.ctx, props);
226
274
  }
227
275
 
228
276
  DropShadowImageFilter(props: DropShadowImageFilterProps) {
229
- return new DropShadowImageFilterNode(this.ctx, props);
277
+ return global.SkiaDomApi && global.SkiaDomApi.DropShadowImageFilterNode
278
+ ? global.SkiaDomApi.DropShadowImageFilterNode(props)
279
+ : new DropShadowImageFilterNode(this.ctx, props);
230
280
  }
231
281
 
232
282
  DisplacementMapImageFilter(props: DisplacementMapImageFilterProps) {
233
- return new DisplacementMapImageFilterNode(this.ctx, props);
283
+ return global.SkiaDomApi && global.SkiaDomApi.DisplacementMapImageFilterNode
284
+ ? global.SkiaDomApi.DisplacementMapImageFilterNode(props)
285
+ : new DisplacementMapImageFilterNode(this.ctx, props);
234
286
  }
235
287
 
236
288
  BlurImageFilter(props: BlurImageFilterProps) {
237
- return new BlurImageFilterNode(this.ctx, props);
289
+ return global.SkiaDomApi && global.SkiaDomApi.BlurImageFilterNode
290
+ ? global.SkiaDomApi.BlurImageFilterNode(props)
291
+ : new BlurImageFilterNode(this.ctx, props);
238
292
  }
239
293
 
240
294
  OffsetImageFilter(props: OffsetImageFilterProps) {
241
- return new OffsetImageFilterNode(this.ctx, props);
295
+ return global.SkiaDomApi && global.SkiaDomApi.OffsetImageFilterNode
296
+ ? global.SkiaDomApi.OffsetImageFilterNode(props)
297
+ : new OffsetImageFilterNode(this.ctx, props);
242
298
  }
243
299
 
244
300
  MorphologyImageFilter(props: MorphologyImageFilterProps) {
245
- return new MorphologyImageFilterNode(this.ctx, props);
301
+ return global.SkiaDomApi && global.SkiaDomApi.MorphologyImageFilterNode
302
+ ? global.SkiaDomApi.MorphologyImageFilterNode(props)
303
+ : new MorphologyImageFilterNode(this.ctx, props);
246
304
  }
247
305
 
248
306
  RuntimeShaderImageFilter(props: RuntimeShaderImageFilterProps) {
249
- return new RuntimeShaderImageFilterNode(this.ctx, props);
307
+ return global.SkiaDomApi && global.SkiaDomApi.RuntimeShaderImageFilterNode
308
+ ? global.SkiaDomApi.RuntimeShaderImageFilterNode(props)
309
+ : new RuntimeShaderImageFilterNode(this.ctx, props);
250
310
  }
251
311
 
252
312
  // Color Filters
253
313
  MatrixColorFilter(props: MatrixColorFilterProps) {
254
- return new MatrixColorFilterNode(this.ctx, props);
314
+ return global.SkiaDomApi && global.SkiaDomApi.MatrixColorFilterNode
315
+ ? global.SkiaDomApi.MatrixColorFilterNode(props)
316
+ : new MatrixColorFilterNode(this.ctx, props);
255
317
  }
256
318
 
257
319
  BlendColorFilter(props: BlendColorFilterProps) {
258
- return new BlendColorFilterNode(this.ctx, props);
320
+ return global.SkiaDomApi && global.SkiaDomApi.BlendColorFilterNode
321
+ ? global.SkiaDomApi.BlendColorFilterNode(props)
322
+ : new BlendColorFilterNode(this.ctx, props);
259
323
  }
260
324
 
261
325
  LumaColorFilter() {
262
- return new LumaColorFilterNode(this.ctx);
326
+ return global.SkiaDomApi && global.SkiaDomApi.LumaColorFilterNode
327
+ ? global.SkiaDomApi.LumaColorFilterNode()
328
+ : new LumaColorFilterNode(this.ctx);
263
329
  }
264
330
 
265
331
  LinearToSRGBGammaColorFilter() {
266
- return new LinearToSRGBGammaColorFilterNode(this.ctx);
332
+ return global.SkiaDomApi &&
333
+ global.SkiaDomApi.LinearToSRGBGammaColorFilterNode
334
+ ? global.SkiaDomApi.LinearToSRGBGammaColorFilterNode()
335
+ : new LinearToSRGBGammaColorFilterNode(this.ctx);
267
336
  }
268
337
 
269
338
  SRGBToLinearGammaColorFilter() {
270
- return new SRGBToLinearGammaColorFilterNode(this.ctx);
339
+ return global.SkiaDomApi &&
340
+ global.SkiaDomApi.SRGBToLinearGammaColorFilterNode
341
+ ? global.SkiaDomApi.SRGBToLinearGammaColorFilterNode()
342
+ : new SRGBToLinearGammaColorFilterNode(this.ctx);
271
343
  }
272
344
 
273
345
  LerpColorFilter(props: LerpColorFilterProps) {
274
- return new LerpColorFilterNode(this.ctx, props);
346
+ return global.SkiaDomApi && global.SkiaDomApi.LerpColorFilterNode
347
+ ? global.SkiaDomApi.LerpColorFilterNode(props)
348
+ : new LerpColorFilterNode(this.ctx, props);
275
349
  }
276
350
 
277
351
  // Shaders
278
352
  Shader(props: ShaderProps) {
279
- return new ShaderNode(this.ctx, props);
353
+ return global.SkiaDomApi && global.SkiaDomApi.ShaderNode
354
+ ? global.SkiaDomApi.ShaderNode(props)
355
+ : new ShaderNode(this.ctx, props);
280
356
  }
281
357
 
282
358
  ImageShader(props: ImageShaderProps) {
283
- return new ImageShaderNode(this.ctx, props);
359
+ return global.SkiaDomApi && global.SkiaDomApi.ImageShaderNode
360
+ ? global.SkiaDomApi.ImageShaderNode(props)
361
+ : new ImageShaderNode(this.ctx, props);
284
362
  }
285
363
 
286
364
  ColorShader(props: ColorProps) {
287
- return new ColorNode(this.ctx, props);
365
+ return global.SkiaDomApi && global.SkiaDomApi.ColorShaderNode
366
+ ? global.SkiaDomApi.ColorShaderNode(props)
367
+ : new ColorNode(this.ctx, props);
288
368
  }
289
369
 
290
370
  SweepGradient(props: SweepGradientProps) {
291
- return new SweepGradientNode(this.ctx, props);
371
+ return global.SkiaDomApi && global.SkiaDomApi.SweepGradientNode
372
+ ? global.SkiaDomApi.SweepGradientNode(props)
373
+ : new SweepGradientNode(this.ctx, props);
292
374
  }
293
375
 
294
376
  Turbulence(props: TurbulenceProps) {
295
- return new TurbulenceNode(this.ctx, props);
377
+ return global.SkiaDomApi && global.SkiaDomApi.TurbulenceNode
378
+ ? global.SkiaDomApi.TurbulenceNode(props)
379
+ : new TurbulenceNode(this.ctx, props);
296
380
  }
297
381
 
298
382
  FractalNoise(props: FractalNoiseProps) {
299
- return new FractalNoiseNode(this.ctx, props);
383
+ return global.SkiaDomApi && global.SkiaDomApi.FractalNoiseNode
384
+ ? global.SkiaDomApi.FractalNoiseNode(props)
385
+ : new FractalNoiseNode(this.ctx, props);
300
386
  }
301
387
 
302
388
  LinearGradient(props: LinearGradientProps) {
303
- return new LinearGradientNode(this.ctx, props);
389
+ return global.SkiaDomApi && global.SkiaDomApi.LinearGradientNode
390
+ ? global.SkiaDomApi.LinearGradientNode(props)
391
+ : new LinearGradientNode(this.ctx, props);
304
392
  }
305
393
 
306
394
  RadialGradient(props: RadialGradientProps) {
307
- return new RadialGradientNode(this.ctx, props);
395
+ return global.SkiaDomApi && global.SkiaDomApi.RadialGradientNode
396
+ ? global.SkiaDomApi.RadialGradientNode(props)
397
+ : new RadialGradientNode(this.ctx, props);
308
398
  }
309
399
 
310
400
  TwoPointConicalGradient(props: TwoPointConicalGradientProps) {
311
- return new TwoPointConicalGradientNode(this.ctx, props);
401
+ return global.SkiaDomApi && global.SkiaDomApi.TwoPointConicalGradientNode
402
+ ? global.SkiaDomApi.TwoPointConicalGradientNode(props)
403
+ : new TwoPointConicalGradientNode(this.ctx, props);
312
404
  }
313
405
 
314
406
  // Path Effects
315
407
  CornerPathEffect(props: CornerPathEffectProps) {
316
- return new CornerPathEffectNode(this.ctx, props);
408
+ return global.SkiaDomApi && global.SkiaDomApi.CornerPathEffectNode
409
+ ? global.SkiaDomApi.CornerPathEffectNode(props)
410
+ : new CornerPathEffectNode(this.ctx, props);
317
411
  }
318
412
 
319
413
  DiscretePathEffect(props: DiscretePathEffectProps) {
320
- return new DiscretePathEffectNode(this.ctx, props);
414
+ return global.SkiaDomApi && global.SkiaDomApi.DiscretePathEffectNode
415
+ ? global.SkiaDomApi.DiscretePathEffectNode(props)
416
+ : new DiscretePathEffectNode(this.ctx, props);
321
417
  }
322
418
 
323
419
  DashPathEffect(props: DashPathEffectProps) {
324
- return new DashPathEffectNode(this.ctx, props);
420
+ return global.SkiaDomApi && global.SkiaDomApi.DashPathEffectNode
421
+ ? global.SkiaDomApi.DashPathEffectNode(props)
422
+ : new DashPathEffectNode(this.ctx, props);
325
423
  }
326
424
 
327
425
  Path1DPathEffect(props: Path1DPathEffectProps) {
328
- return new Path1DPathEffectNode(this.ctx, props);
426
+ return global.SkiaDomApi && global.SkiaDomApi.Path1DPathEffectNode
427
+ ? global.SkiaDomApi.Path1DPathEffectNode(props)
428
+ : new Path1DPathEffectNode(this.ctx, props);
329
429
  }
330
430
 
331
431
  Path2DPathEffect(props: Path2DPathEffectProps) {
332
- return new Path2DPathEffectNode(this.ctx, props);
432
+ return global.SkiaDomApi && global.SkiaDomApi.Path2DPathEffectNode
433
+ ? global.SkiaDomApi.Path2DPathEffectNode(props)
434
+ : new Path2DPathEffectNode(this.ctx, props);
333
435
  }
334
436
 
335
437
  SumPathEffect() {
336
- return new SumPathEffectNode(this.ctx);
438
+ return global.SkiaDomApi && global.SkiaDomApi.SumPathEffectNode
439
+ ? global.SkiaDomApi.SumPathEffectNode()
440
+ : new SumPathEffectNode(this.ctx);
337
441
  }
338
442
 
339
443
  Line2DPathEffect(props: Line2DPathEffectProps) {
340
- return new Line2DPathEffectNode(this.ctx, props);
444
+ return global.SkiaDomApi && global.SkiaDomApi.Line2DPathEffectNode
445
+ ? global.SkiaDomApi.Line2DPathEffectNode(props)
446
+ : new Line2DPathEffectNode(this.ctx, props);
341
447
  }
342
448
 
343
449
  Blend(props: BlendProps) {
344
- return new BlendNode(this.ctx, props);
450
+ return global.SkiaDomApi && global.SkiaDomApi.BlendNode
451
+ ? global.SkiaDomApi.BlendNode(props)
452
+ : new BlendNode(this.ctx, props);
345
453
  }
346
454
 
347
455
  BackdropFilter(props: ChildrenProps) {
348
- return new BackdropFilterNode(this.ctx, props);
456
+ return global.SkiaDomApi && global.SkiaDomApi.BackdropFilterNode
457
+ ? global.SkiaDomApi.BackdropFilterNode(props)
458
+ : new BackdropFilterNode(this.ctx, props);
349
459
  }
350
460
 
351
461
  Box(props: BoxProps) {
352
- return new BoxNode(this.ctx, props);
462
+ return global.SkiaDomApi && global.SkiaDomApi.BoxNode
463
+ ? global.SkiaDomApi.BoxNode(props)
464
+ : new BoxNode(this.ctx, props);
353
465
  }
354
466
 
355
467
  BoxShadow(props: BoxShadowProps) {
356
- return new BoxShadowNode(this.ctx, props);
468
+ return global.SkiaDomApi && global.SkiaDomApi.BoxShadowNode
469
+ ? global.SkiaDomApi.BoxShadowNode(props)
470
+ : new BoxShadowNode(this.ctx, props);
357
471
  }
358
472
  }
@@ -293,7 +293,7 @@ const concatPaint = (
293
293
  paint.setColor(color);
294
294
  } else {
295
295
  const cl = paint.getColor();
296
- cl[3] *= opacity;
296
+ cl[3] = opacity;
297
297
  paint.setColor(cl);
298
298
  }
299
299
  if (strokeWidth !== undefined) {
@@ -1,10 +1,10 @@
1
1
  import React, {
2
2
  useEffect,
3
- useState,
4
3
  useCallback,
5
4
  useMemo,
6
5
  forwardRef,
7
6
  useRef,
7
+ useState,
8
8
  } from "react";
9
9
  import type {
10
10
  RefObject,
@@ -15,13 +15,12 @@ import type {
15
15
  } from "react";
16
16
  import type { OpaqueRoot } from "react-reconciler";
17
17
  import ReactReconciler from "react-reconciler";
18
+ import { Platform } from "react-native";
18
19
 
19
- import { SkiaView, useDrawCallback } from "../views";
20
+ import { SkiaDomView } from "../views";
20
21
  import type { TouchHandler } from "../views";
21
- import { useValue } from "../values/hooks/useValue";
22
22
  import { Skia } from "../skia/Skia";
23
- import type { SkiaValue, SkiaMutableValue } from "../values";
24
- import type { SkSize } from "../skia/types";
23
+ import type { SkiaValue } from "../values";
25
24
 
26
25
  import { debug as hostDebug, skHostConfig } from "./HostConfig";
27
26
  // import { debugTree } from "./nodes";
@@ -44,25 +43,31 @@ const render = (element: ReactNode, root: OpaqueRoot, container: Container) => {
44
43
  });
45
44
  };
46
45
 
47
- export const useCanvasRef = () => useRef<SkiaView>(null);
46
+ export const useCanvasRef = () => useRef<SkiaDomView>(null);
47
+
48
+ const createDependencyManager = (
49
+ registerValues: (values: Array<SkiaValue<unknown>>) => () => void
50
+ ) =>
51
+ global.SkiaDomApi && global.SkiaDomApi.DependencyManager
52
+ ? global.SkiaDomApi.DependencyManager(registerValues)
53
+ : new DependencyManager(registerValues);
48
54
 
49
- export interface CanvasProps extends ComponentProps<typeof SkiaView> {
50
- ref?: RefObject<SkiaView>;
55
+ export interface CanvasProps extends ComponentProps<typeof SkiaDomView> {
56
+ ref?: RefObject<SkiaDomView>;
51
57
  children: ReactNode;
52
58
  onTouch?: TouchHandler;
53
- onSize?: SkiaMutableValue<SkSize>;
54
59
  }
55
60
 
56
- export const Canvas = forwardRef<SkiaView, CanvasProps>(
61
+ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
57
62
  ({ children, style, debug, mode, onTouch, onSize }, forwardedRef) => {
58
- const size = useValue({ width: 0, height: 0 });
59
- const canvasCtx = useMemo(() => ({ Skia, size }), [size]);
60
63
  const innerRef = useCanvasRef();
61
64
  const ref = useCombinedRefs(forwardedRef, innerRef);
62
- const [tick, setTick] = useState(0);
65
+ const [, setTick] = useState(0);
63
66
  const redraw = useCallback(() => {
64
- setTick((t) => t + 1);
65
- }, []);
67
+ Platform.OS === "web"
68
+ ? setTick((tick) => tick + 1)
69
+ : innerRef.current?.redraw();
70
+ }, [innerRef]);
66
71
 
67
72
  const registerValues = useCallback(
68
73
  (values: Array<SkiaValue<unknown>>) => {
@@ -75,7 +80,11 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
75
80
  );
76
81
 
77
82
  const container = useMemo(() => {
78
- return new Container(Skia, new DependencyManager(registerValues), redraw);
83
+ return new Container(
84
+ Skia,
85
+ createDependencyManager(registerValues),
86
+ redraw
87
+ );
79
88
  }, [redraw, registerValues]);
80
89
 
81
90
  const root = useMemo(
@@ -92,50 +101,15 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
92
101
  ),
93
102
  [container]
94
103
  );
104
+
95
105
  // Render effect
96
106
  useEffect(() => {
97
107
  render(
98
- <CanvasProvider value={canvasCtx}>{children}</CanvasProvider>,
108
+ <CanvasProvider value={{ Skia }}>{children}</CanvasProvider>,
99
109
  root,
100
110
  container
101
111
  );
102
- }, [children, root, redraw, container, canvasCtx]);
103
-
104
- const paint = useMemo(() => Skia.Paint(), []);
105
-
106
- // Draw callback
107
- const onDraw = useDrawCallback(
108
- (canvas, info) => {
109
- // TODO: if tree is empty (count === 1) maybe we should not render?
110
- const { width, height, timestamp } = info;
111
- if (onTouch) {
112
- onTouch(info.touches);
113
- }
114
- if (
115
- width !== canvasCtx.size.current.width ||
116
- height !== canvasCtx.size.current.height
117
- ) {
118
- canvasCtx.size.current = { width, height };
119
- if (onSize) {
120
- onSize.current = { width, height };
121
- }
122
- }
123
- paint.reset();
124
- const ctx = {
125
- width,
126
- height,
127
- timestamp,
128
- canvas,
129
- paint,
130
- opacity: 1,
131
- ref,
132
- center: { x: width / 2, y: height / 2 },
133
- Skia,
134
- };
135
- container.draw(ctx);
136
- },
137
- [tick, onTouch]
138
- );
112
+ }, [children, root, redraw, container]);
139
113
 
140
114
  useEffect(() => {
141
115
  return () => {
@@ -146,10 +120,12 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
146
120
  }, [container, root]);
147
121
 
148
122
  return (
149
- <SkiaView
123
+ <SkiaDomView
150
124
  ref={ref}
151
125
  style={style}
152
- onDraw={onDraw}
126
+ root={container.root}
127
+ onTouch={onTouch}
128
+ onSize={onSize}
153
129
  mode={mode}
154
130
  debug={debug}
155
131
  />
@@ -24,10 +24,6 @@ export class DependencyManager {
24
24
  this.registerValues = registerValues;
25
25
  }
26
26
 
27
- unsubscribeNodes(nodes: Node<unknown>[]) {
28
- nodes.forEach((n) => this.unsubscribeNode(n));
29
- }
30
-
31
27
  /**
32
28
  * Call to unsubscribe all value listeners from the given node based
33
29
  * on the current list of subscriptions for the node. This function
@@ -77,7 +73,6 @@ export class DependencyManager {
77
73
  * when the node is mounted and when one or more props on the node changes.
78
74
  * @param node Node to subscribe to value changes for
79
75
  * @param props Node's properties
80
- * @param onResolveProp Callback when a property value changes
81
76
  */
82
77
  subscribeNode<P>(node: Node<unknown>, props: AnimatedProps<P>) {
83
78
  // Get mutators from node's properties