@rive-app/react-native 0.1.1-beta.0

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 (451) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +257 -0
  3. package/RNRive.podspec +53 -0
  4. package/android/CMakeLists.txt +24 -0
  5. package/android/build.gradle +155 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +13 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/rive/BaseHybridViewModelProperty.kt +20 -0
  10. package/android/src/main/java/com/margelo/nitro/rive/BaseHybridViewModelPropertyImpl.kt +50 -0
  11. package/android/src/main/java/com/margelo/nitro/rive/BytesDataLoader.kt +9 -0
  12. package/android/src/main/java/com/margelo/nitro/rive/DataLoader.kt +15 -0
  13. package/android/src/main/java/com/margelo/nitro/rive/DataSource.kt +38 -0
  14. package/android/src/main/java/com/margelo/nitro/rive/DataSourceResolver.kt +36 -0
  15. package/android/src/main/java/com/margelo/nitro/rive/EventPropertiesOutputExtensions.kt +12 -0
  16. package/android/src/main/java/com/margelo/nitro/rive/FileDataLoader.kt +21 -0
  17. package/android/src/main/java/com/margelo/nitro/rive/HTTPDataLoader.kt +37 -0
  18. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt +98 -0
  19. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveFileFactory.kt +123 -0
  20. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveImage.kt +15 -0
  21. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveImageFactory.kt +23 -0
  22. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveView.kt +279 -0
  23. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt +53 -0
  24. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt +22 -0
  25. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt +22 -0
  26. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt +22 -0
  27. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelImageProperty.kt +21 -0
  28. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt +76 -0
  29. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt +23 -0
  30. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt +22 -0
  31. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelTriggerProperty.kt +21 -0
  32. package/android/src/main/java/com/margelo/nitro/rive/ReferencedAssetLoader.kt +108 -0
  33. package/android/src/main/java/com/margelo/nitro/rive/ResourceDataLoader.kt +44 -0
  34. package/android/src/main/java/com/margelo/nitro/rive/Rive.kt +12 -0
  35. package/android/src/main/java/com/rive/RivePackage.kt +29 -0
  36. package/android/src/main/java/com/rive/RiveReactNativeView.kt +433 -0
  37. package/android/src/main/java/com/rive/RiveViewManager.kt +11 -0
  38. package/ios/BaseHybridViewModelProperty.swift +118 -0
  39. package/ios/BundleDataLoader.swift +25 -0
  40. package/ios/BytesDataLoader.swift +10 -0
  41. package/ios/DataLoader.swift +28 -0
  42. package/ios/DataSource.swift +43 -0
  43. package/ios/DataSourceResolver.swift +55 -0
  44. package/ios/EventPropertiesOutputExtensions.swift +15 -0
  45. package/ios/FileDataLoader.swift +24 -0
  46. package/ios/HTTPDataLoader.swift +31 -0
  47. package/ios/HybridRiveFile.swift +113 -0
  48. package/ios/HybridRiveFileFactory.swift +163 -0
  49. package/ios/HybridRiveImage.swift +17 -0
  50. package/ios/HybridRiveImageFactory.swift +26 -0
  51. package/ios/HybridRiveView.swift +284 -0
  52. package/ios/HybridViewModel.swift +46 -0
  53. package/ios/HybridViewModelBooleanProperty.swift +29 -0
  54. package/ios/HybridViewModelColorProperty.swift +63 -0
  55. package/ios/HybridViewModelEnumProperty.swift +29 -0
  56. package/ios/HybridViewModelImageProperty.swift +31 -0
  57. package/ios/HybridViewModelInstance.swift +51 -0
  58. package/ios/HybridViewModelNumberProperty.swift +35 -0
  59. package/ios/HybridViewModelStringProperty.swift +29 -0
  60. package/ios/HybridViewModelTriggerProperty.swift +30 -0
  61. package/ios/RCTLog.swift +29 -0
  62. package/ios/RCTSwiftLog.h +11 -0
  63. package/ios/RCTSwiftLog.m +38 -0
  64. package/ios/ReferencedAssetLoader.swift +145 -0
  65. package/ios/Rive.swift +5 -0
  66. package/ios/RiveReactNativeView.swift +325 -0
  67. package/ios/Utils.swift +15 -0
  68. package/lib/module/core/Alignment.js +42 -0
  69. package/lib/module/core/Alignment.js.map +1 -0
  70. package/lib/module/core/Errors.js +13 -0
  71. package/lib/module/core/Errors.js.map +1 -0
  72. package/lib/module/core/Events.js +8 -0
  73. package/lib/module/core/Events.js.map +1 -0
  74. package/lib/module/core/Fit.js +51 -0
  75. package/lib/module/core/Fit.js.map +1 -0
  76. package/lib/module/core/NitroRiveViewComponent.js +6 -0
  77. package/lib/module/core/NitroRiveViewComponent.js.map +1 -0
  78. package/lib/module/core/ReferencedAssets.js +4 -0
  79. package/lib/module/core/ReferencedAssets.js.map +1 -0
  80. package/lib/module/core/RiveColor.js +90 -0
  81. package/lib/module/core/RiveColor.js.map +1 -0
  82. package/lib/module/core/RiveFile.js +64 -0
  83. package/lib/module/core/RiveFile.js.map +1 -0
  84. package/lib/module/core/RiveImages.js +5 -0
  85. package/lib/module/core/RiveImages.js.map +1 -0
  86. package/lib/module/core/RiveView.js +51 -0
  87. package/lib/module/core/RiveView.js.map +1 -0
  88. package/lib/module/core/callDispose.js +15 -0
  89. package/lib/module/core/callDispose.js.map +1 -0
  90. package/lib/module/hooks/useRive.js +51 -0
  91. package/lib/module/hooks/useRive.js.map +1 -0
  92. package/lib/module/hooks/useRiveBoolean.js +23 -0
  93. package/lib/module/hooks/useRiveBoolean.js.map +1 -0
  94. package/lib/module/hooks/useRiveColor.js +30 -0
  95. package/lib/module/hooks/useRiveColor.js.map +1 -0
  96. package/lib/module/hooks/useRiveEnum.js +23 -0
  97. package/lib/module/hooks/useRiveEnum.js.map +1 -0
  98. package/lib/module/hooks/useRiveFile.js +128 -0
  99. package/lib/module/hooks/useRiveFile.js.map +1 -0
  100. package/lib/module/hooks/useRiveNumber.js +23 -0
  101. package/lib/module/hooks/useRiveNumber.js.map +1 -0
  102. package/lib/module/hooks/useRiveProperty.js +79 -0
  103. package/lib/module/hooks/useRiveProperty.js.map +1 -0
  104. package/lib/module/hooks/useRiveString.js +23 -0
  105. package/lib/module/hooks/useRiveString.js.map +1 -0
  106. package/lib/module/hooks/useRiveTrigger.js +33 -0
  107. package/lib/module/hooks/useRiveTrigger.js.map +1 -0
  108. package/lib/module/index.js +28 -0
  109. package/lib/module/index.js.map +1 -0
  110. package/lib/module/package.json +1 -0
  111. package/lib/module/specs/ArtboardBy.js +27 -0
  112. package/lib/module/specs/ArtboardBy.js.map +1 -0
  113. package/lib/module/specs/Rive.nitro.js +4 -0
  114. package/lib/module/specs/Rive.nitro.js.map +1 -0
  115. package/lib/module/specs/RiveFile.nitro.js +4 -0
  116. package/lib/module/specs/RiveFile.nitro.js.map +1 -0
  117. package/lib/module/specs/RiveImage.nitro.js +4 -0
  118. package/lib/module/specs/RiveImage.nitro.js.map +1 -0
  119. package/lib/module/specs/RiveView.nitro.js +23 -0
  120. package/lib/module/specs/RiveView.nitro.js.map +1 -0
  121. package/lib/module/specs/ViewModel.nitro.js +4 -0
  122. package/lib/module/specs/ViewModel.nitro.js.map +1 -0
  123. package/lib/module/types.js +2 -0
  124. package/lib/module/types.js.map +1 -0
  125. package/lib/nitrogen/generated/shared/json/RiveViewConfig.json +18 -0
  126. package/lib/typescript/package.json +1 -0
  127. package/lib/typescript/src/core/Alignment.d.ts +39 -0
  128. package/lib/typescript/src/core/Alignment.d.ts.map +1 -0
  129. package/lib/typescript/src/core/Errors.d.ts +14 -0
  130. package/lib/typescript/src/core/Errors.d.ts.map +1 -0
  131. package/lib/typescript/src/core/Events.d.ts +26 -0
  132. package/lib/typescript/src/core/Events.d.ts.map +1 -0
  133. package/lib/typescript/src/core/Fit.d.ts +48 -0
  134. package/lib/typescript/src/core/Fit.d.ts.map +1 -0
  135. package/lib/typescript/src/core/NitroRiveViewComponent.d.ts +4 -0
  136. package/lib/typescript/src/core/NitroRiveViewComponent.d.ts.map +1 -0
  137. package/lib/typescript/src/core/ReferencedAssets.d.ts +15 -0
  138. package/lib/typescript/src/core/ReferencedAssets.d.ts.map +1 -0
  139. package/lib/typescript/src/core/RiveColor.d.ts +53 -0
  140. package/lib/typescript/src/core/RiveColor.d.ts.map +1 -0
  141. package/lib/typescript/src/core/RiveFile.d.ts +62 -0
  142. package/lib/typescript/src/core/RiveFile.d.ts.map +1 -0
  143. package/lib/typescript/src/core/RiveImages.d.ts +3 -0
  144. package/lib/typescript/src/core/RiveImages.d.ts.map +1 -0
  145. package/lib/typescript/src/core/RiveView.d.ts +38 -0
  146. package/lib/typescript/src/core/RiveView.d.ts.map +1 -0
  147. package/lib/typescript/src/core/callDispose.d.ts +7 -0
  148. package/lib/typescript/src/core/callDispose.d.ts.map +1 -0
  149. package/lib/typescript/src/hooks/useRive.d.ts +9 -0
  150. package/lib/typescript/src/hooks/useRive.d.ts.map +1 -0
  151. package/lib/typescript/src/hooks/useRiveBoolean.d.ts +11 -0
  152. package/lib/typescript/src/hooks/useRiveBoolean.d.ts.map +1 -0
  153. package/lib/typescript/src/hooks/useRiveColor.d.ts +14 -0
  154. package/lib/typescript/src/hooks/useRiveColor.d.ts.map +1 -0
  155. package/lib/typescript/src/hooks/useRiveEnum.d.ts +11 -0
  156. package/lib/typescript/src/hooks/useRiveEnum.d.ts.map +1 -0
  157. package/lib/typescript/src/hooks/useRiveFile.d.ts +24 -0
  158. package/lib/typescript/src/hooks/useRiveFile.d.ts.map +1 -0
  159. package/lib/typescript/src/hooks/useRiveNumber.d.ts +11 -0
  160. package/lib/typescript/src/hooks/useRiveNumber.d.ts.map +1 -0
  161. package/lib/typescript/src/hooks/useRiveProperty.d.ts +22 -0
  162. package/lib/typescript/src/hooks/useRiveProperty.d.ts.map +1 -0
  163. package/lib/typescript/src/hooks/useRiveString.d.ts +11 -0
  164. package/lib/typescript/src/hooks/useRiveString.d.ts.map +1 -0
  165. package/lib/typescript/src/hooks/useRiveTrigger.d.ts +11 -0
  166. package/lib/typescript/src/hooks/useRiveTrigger.d.ts.map +1 -0
  167. package/lib/typescript/src/index.d.ts +32 -0
  168. package/lib/typescript/src/index.d.ts.map +1 -0
  169. package/lib/typescript/src/specs/ArtboardBy.d.ts +20 -0
  170. package/lib/typescript/src/specs/ArtboardBy.d.ts.map +1 -0
  171. package/lib/typescript/src/specs/Rive.nitro.d.ts +8 -0
  172. package/lib/typescript/src/specs/Rive.nitro.d.ts.map +1 -0
  173. package/lib/typescript/src/specs/RiveFile.nitro.d.ts +42 -0
  174. package/lib/typescript/src/specs/RiveFile.nitro.d.ts.map +1 -0
  175. package/lib/typescript/src/specs/RiveImage.nitro.d.ts +43 -0
  176. package/lib/typescript/src/specs/RiveImage.nitro.d.ts.map +1 -0
  177. package/lib/typescript/src/specs/RiveView.nitro.d.ts +139 -0
  178. package/lib/typescript/src/specs/RiveView.nitro.d.ts.map +1 -0
  179. package/lib/typescript/src/specs/ViewModel.nitro.d.ts +103 -0
  180. package/lib/typescript/src/specs/ViewModel.nitro.d.ts.map +1 -0
  181. package/lib/typescript/src/types.d.ts +33 -0
  182. package/lib/typescript/src/types.d.ts.map +1 -0
  183. package/nitrogen/generated/android/c++/JAlignment.hpp +80 -0
  184. package/nitrogen/generated/android/c++/JArtboardBy.hpp +68 -0
  185. package/nitrogen/generated/android/c++/JArtboardByTypes.hpp +59 -0
  186. package/nitrogen/generated/android/c++/JDataBindByName.hpp +57 -0
  187. package/nitrogen/generated/android/c++/JDataBindMode.hpp +59 -0
  188. package/nitrogen/generated/android/c++/JEventPropertiesOutput.cpp +30 -0
  189. package/nitrogen/generated/android/c++/JEventPropertiesOutput.hpp +83 -0
  190. package/nitrogen/generated/android/c++/JFit.hpp +77 -0
  191. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  192. package/nitrogen/generated/android/c++/JFunc_void_RiveError.hpp +80 -0
  193. package/nitrogen/generated/android/c++/JFunc_void_UnifiedRiveEvent.hpp +84 -0
  194. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  195. package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
  196. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  197. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +134 -0
  198. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +68 -0
  199. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +96 -0
  200. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +68 -0
  201. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +104 -0
  202. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +67 -0
  203. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +52 -0
  204. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +65 -0
  205. package/nitrogen/generated/android/c++/JHybridRiveSpec.cpp +52 -0
  206. package/nitrogen/generated/android/c++/JHybridRiveSpec.hpp +65 -0
  207. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +299 -0
  208. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +97 -0
  209. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +65 -0
  210. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +68 -0
  211. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +65 -0
  212. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +68 -0
  213. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +66 -0
  214. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +68 -0
  215. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +66 -0
  216. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +68 -0
  217. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +115 -0
  218. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +71 -0
  219. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +65 -0
  220. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +68 -0
  221. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +48 -0
  222. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +65 -0
  223. package/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +86 -0
  224. package/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +70 -0
  225. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +66 -0
  226. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +68 -0
  227. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +61 -0
  228. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +68 -0
  229. package/nitrogen/generated/android/c++/JReferencedAssetsType.hpp +77 -0
  230. package/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +77 -0
  231. package/nitrogen/generated/android/c++/JRiveError.hpp +63 -0
  232. package/nitrogen/generated/android/c++/JRiveErrorType.hpp +74 -0
  233. package/nitrogen/generated/android/c++/JRiveEventType.hpp +59 -0
  234. package/nitrogen/generated/android/c++/JUnifiedRiveEvent.hpp +96 -0
  235. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +30 -0
  236. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +90 -0
  237. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +88 -0
  238. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +49 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Alignment.kt +28 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ArtboardBy.kt +44 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ArtboardByTypes.kt +21 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/DataBindByName.kt +38 -0
  243. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/DataBindMode.kt +21 -0
  244. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +72 -0
  245. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Fit.kt +27 -0
  246. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void.kt +80 -0
  247. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_RiveError.kt +80 -0
  248. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_UnifiedRiveEvent.kt +80 -0
  249. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_bool.kt +80 -0
  250. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_double.kt +80 -0
  251. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_std__string.kt +80 -0
  252. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +71 -0
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +71 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +67 -0
  255. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +57 -0
  256. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt +57 -0
  257. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +183 -0
  258. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +70 -0
  259. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +70 -0
  260. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +70 -0
  261. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +70 -0
  262. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +83 -0
  263. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +70 -0
  264. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +55 -0
  265. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +79 -0
  266. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +70 -0
  267. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +70 -0
  268. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ReferencedAssetsType.kt +38 -0
  269. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ResolvedReferencedAsset.kt +50 -0
  270. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveError.kt +41 -0
  271. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveErrorType.kt +26 -0
  272. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveEventType.kt +21 -0
  273. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/UnifiedRiveEvent.kt +53 -0
  274. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +72 -0
  275. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/riveOnLoad.kt +35 -0
  276. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +50 -0
  277. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewStateUpdater.kt +23 -0
  278. package/nitrogen/generated/android/rive+autolinking.cmake +115 -0
  279. package/nitrogen/generated/android/rive+autolinking.gradle +27 -0
  280. package/nitrogen/generated/android/riveOnLoad.cpp +192 -0
  281. package/nitrogen/generated/android/riveOnLoad.hpp +25 -0
  282. package/nitrogen/generated/ios/RNRive+autolinking.rb +60 -0
  283. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp +360 -0
  284. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +1180 -0
  285. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Umbrella.hpp +161 -0
  286. package/nitrogen/generated/ios/RNRiveAutolinking.mm +137 -0
  287. package/nitrogen/generated/ios/RNRiveAutolinking.swift +220 -0
  288. package/nitrogen/generated/ios/c++/HybridRiveFileFactorySpecSwift.cpp +11 -0
  289. package/nitrogen/generated/ios/c++/HybridRiveFileFactorySpecSwift.hpp +119 -0
  290. package/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.cpp +11 -0
  291. package/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp +121 -0
  292. package/nitrogen/generated/ios/c++/HybridRiveImageFactorySpecSwift.cpp +11 -0
  293. package/nitrogen/generated/ios/c++/HybridRiveImageFactorySpecSwift.hpp +100 -0
  294. package/nitrogen/generated/ios/c++/HybridRiveImageSpecSwift.cpp +11 -0
  295. package/nitrogen/generated/ios/c++/HybridRiveImageSpecSwift.hpp +71 -0
  296. package/nitrogen/generated/ios/c++/HybridRiveSpecSwift.cpp +11 -0
  297. package/nitrogen/generated/ios/c++/HybridRiveSpecSwift.hpp +76 -0
  298. package/nitrogen/generated/ios/c++/HybridRiveViewSpecSwift.cpp +11 -0
  299. package/nitrogen/generated/ios/c++/HybridRiveViewSpecSwift.hpp +277 -0
  300. package/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.cpp +11 -0
  301. package/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp +88 -0
  302. package/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.cpp +11 -0
  303. package/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp +88 -0
  304. package/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.cpp +11 -0
  305. package/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp +90 -0
  306. package/nitrogen/generated/ios/c++/HybridViewModelImagePropertySpecSwift.cpp +11 -0
  307. package/nitrogen/generated/ios/c++/HybridViewModelImagePropertySpecSwift.hpp +94 -0
  308. package/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.cpp +11 -0
  309. package/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp +149 -0
  310. package/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.cpp +11 -0
  311. package/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp +88 -0
  312. package/nitrogen/generated/ios/c++/HybridViewModelPropertySpecSwift.cpp +11 -0
  313. package/nitrogen/generated/ios/c++/HybridViewModelPropertySpecSwift.hpp +69 -0
  314. package/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.cpp +11 -0
  315. package/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp +113 -0
  316. package/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.cpp +11 -0
  317. package/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp +90 -0
  318. package/nitrogen/generated/ios/c++/HybridViewModelTriggerPropertySpecSwift.cpp +11 -0
  319. package/nitrogen/generated/ios/c++/HybridViewModelTriggerPropertySpecSwift.hpp +89 -0
  320. package/nitrogen/generated/ios/c++/views/HybridRiveViewComponent.mm +136 -0
  321. package/nitrogen/generated/ios/swift/Alignment.swift +68 -0
  322. package/nitrogen/generated/ios/swift/ArtboardBy.swift +89 -0
  323. package/nitrogen/generated/ios/swift/ArtboardByTypes.swift +40 -0
  324. package/nitrogen/generated/ios/swift/DataBindByName.swift +36 -0
  325. package/nitrogen/generated/ios/swift/DataBindMode.swift +40 -0
  326. package/nitrogen/generated/ios/swift/EventPropertiesOutput.swift +19 -0
  327. package/nitrogen/generated/ios/swift/Fit.swift +64 -0
  328. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  329. package/nitrogen/generated/ios/swift/Func_void_RiveError.swift +47 -0
  330. package/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +47 -0
  331. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  332. package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
  333. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  334. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +51 -0
  335. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +51 -0
  336. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  337. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +59 -0
  338. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +207 -0
  339. package/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +59 -0
  340. package/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +204 -0
  341. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +58 -0
  342. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +185 -0
  343. package/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +56 -0
  344. package/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +126 -0
  345. package/nitrogen/generated/ios/swift/HybridRiveSpec.swift +56 -0
  346. package/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift +131 -0
  347. package/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +79 -0
  348. package/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +623 -0
  349. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +57 -0
  350. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +158 -0
  351. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +57 -0
  352. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +158 -0
  353. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +57 -0
  354. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +158 -0
  355. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +58 -0
  356. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +171 -0
  357. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +62 -0
  358. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +271 -0
  359. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +57 -0
  360. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +158 -0
  361. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +56 -0
  362. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +121 -0
  363. package/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +61 -0
  364. package/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +222 -0
  365. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +57 -0
  366. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +158 -0
  367. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +58 -0
  368. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +160 -0
  369. package/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +75 -0
  370. package/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +185 -0
  371. package/nitrogen/generated/ios/swift/RiveError.swift +47 -0
  372. package/nitrogen/generated/ios/swift/RiveErrorType.swift +60 -0
  373. package/nitrogen/generated/ios/swift/RiveEventType.swift +40 -0
  374. package/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +213 -0
  375. package/nitrogen/generated/ios/swift/Variant__any_HybridViewModelInstanceSpec__DataBindMode_DataBindByName.swift +19 -0
  376. package/nitrogen/generated/shared/c++/Alignment.hpp +104 -0
  377. package/nitrogen/generated/shared/c++/ArtboardBy.hpp +86 -0
  378. package/nitrogen/generated/shared/c++/ArtboardByTypes.hpp +76 -0
  379. package/nitrogen/generated/shared/c++/DataBindByName.hpp +75 -0
  380. package/nitrogen/generated/shared/c++/DataBindMode.hpp +62 -0
  381. package/nitrogen/generated/shared/c++/Fit.hpp +68 -0
  382. package/nitrogen/generated/shared/c++/HybridRiveFileFactorySpec.cpp +24 -0
  383. package/nitrogen/generated/shared/c++/HybridRiveFileFactorySpec.hpp +74 -0
  384. package/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp +25 -0
  385. package/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp +75 -0
  386. package/nitrogen/generated/shared/c++/HybridRiveImageFactorySpec.cpp +23 -0
  387. package/nitrogen/generated/shared/c++/HybridRiveImageFactorySpec.hpp +69 -0
  388. package/nitrogen/generated/shared/c++/HybridRiveImageSpec.cpp +21 -0
  389. package/nitrogen/generated/shared/c++/HybridRiveImageSpec.hpp +62 -0
  390. package/nitrogen/generated/shared/c++/HybridRiveSpec.cpp +21 -0
  391. package/nitrogen/generated/shared/c++/HybridRiveSpec.hpp +62 -0
  392. package/nitrogen/generated/shared/c++/HybridRiveViewSpec.cpp +54 -0
  393. package/nitrogen/generated/shared/c++/HybridRiveViewSpec.hpp +122 -0
  394. package/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp +25 -0
  395. package/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp +67 -0
  396. package/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp +25 -0
  397. package/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp +67 -0
  398. package/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp +25 -0
  399. package/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp +68 -0
  400. package/nitrogen/generated/shared/c++/HybridViewModelImagePropertySpec.cpp +24 -0
  401. package/nitrogen/generated/shared/c++/HybridViewModelImagePropertySpec.hpp +71 -0
  402. package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp +28 -0
  403. package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp +90 -0
  404. package/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp +25 -0
  405. package/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp +67 -0
  406. package/nitrogen/generated/shared/c++/HybridViewModelPropertySpec.cpp +21 -0
  407. package/nitrogen/generated/shared/c++/HybridViewModelPropertySpec.hpp +62 -0
  408. package/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp +27 -0
  409. package/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp +71 -0
  410. package/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp +25 -0
  411. package/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp +68 -0
  412. package/nitrogen/generated/shared/c++/HybridViewModelTriggerPropertySpec.cpp +24 -0
  413. package/nitrogen/generated/shared/c++/HybridViewModelTriggerPropertySpec.hpp +67 -0
  414. package/nitrogen/generated/shared/c++/ReferencedAssetsType.hpp +79 -0
  415. package/nitrogen/generated/shared/c++/ResolvedReferencedAsset.hpp +95 -0
  416. package/nitrogen/generated/shared/c++/RiveError.hpp +81 -0
  417. package/nitrogen/generated/shared/c++/RiveErrorType.hpp +75 -0
  418. package/nitrogen/generated/shared/c++/RiveEventType.hpp +62 -0
  419. package/nitrogen/generated/shared/c++/UnifiedRiveEvent.hpp +100 -0
  420. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +183 -0
  421. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +124 -0
  422. package/nitrogen/generated/shared/json/RiveViewConfig.json +18 -0
  423. package/package.json +193 -0
  424. package/src/core/Alignment.ts +46 -0
  425. package/src/core/Errors.ts +14 -0
  426. package/src/core/Events.ts +31 -0
  427. package/src/core/Fit.ts +54 -0
  428. package/src/core/NitroRiveViewComponent.ts +18 -0
  429. package/src/core/ReferencedAssets.ts +14 -0
  430. package/src/core/RiveColor.ts +100 -0
  431. package/src/core/RiveFile.ts +149 -0
  432. package/src/core/RiveImages.ts +5 -0
  433. package/src/core/RiveView.tsx +48 -0
  434. package/src/core/callDispose.ts +18 -0
  435. package/src/hooks/useRive.ts +56 -0
  436. package/src/hooks/useRiveBoolean.ts +28 -0
  437. package/src/hooks/useRiveColor.ts +47 -0
  438. package/src/hooks/useRiveEnum.ts +27 -0
  439. package/src/hooks/useRiveFile.ts +184 -0
  440. package/src/hooks/useRiveNumber.ts +28 -0
  441. package/src/hooks/useRiveProperty.ts +110 -0
  442. package/src/hooks/useRiveString.ts +28 -0
  443. package/src/hooks/useRiveTrigger.ts +49 -0
  444. package/src/index.tsx +52 -0
  445. package/src/specs/ArtboardBy.ts +31 -0
  446. package/src/specs/Rive.nitro.ts +6 -0
  447. package/src/specs/RiveFile.nitro.ts +57 -0
  448. package/src/specs/RiveImage.nitro.ts +42 -0
  449. package/src/specs/RiveView.nitro.ts +149 -0
  450. package/src/specs/ViewModel.nitro.ts +126 -0
  451. package/src/types.tsx +34 -0
@@ -0,0 +1,55 @@
1
+ import Foundation
2
+
3
+ struct DataSourceResolver {
4
+ static func resolve(from asset: ResolvedReferencedAsset) throws -> DataSource? {
5
+ if let sourceUrl = asset.sourceUrl {
6
+ return try resolveFromUrl(sourceUrl)
7
+ }
8
+
9
+ if let sourceAssetId = asset.sourceAssetId {
10
+ return try resolveFromAssetId(sourceAssetId)
11
+ }
12
+
13
+ if let sourceAsset = asset.sourceAsset {
14
+ return resolveFromSourceAsset(sourceAsset)
15
+ }
16
+
17
+ return nil
18
+ }
19
+
20
+ private static func resolveFromUrl(_ urlString: String) throws -> DataSource {
21
+ guard let url = URL(string: urlString) else {
22
+ throw DataLoaderError.invalidURL(urlString)
23
+ }
24
+
25
+ if url.isFileURL {
26
+ return .file(url: url)
27
+ }
28
+
29
+ if url.scheme == "http" || url.scheme == "https" {
30
+ return .http(url: url)
31
+ }
32
+
33
+ throw DataLoaderError.invalidURL(urlString)
34
+ }
35
+
36
+ private static func resolveFromAssetId(_ assetId: String) throws -> DataSource {
37
+ guard let url = URL(string: assetId) else {
38
+ throw DataLoaderError.invalidURL(assetId)
39
+ }
40
+
41
+ if url.isFileURL {
42
+ return .file(url: url)
43
+ }
44
+
45
+ if url.scheme == "http" || url.scheme == "https" {
46
+ return .http(url: url)
47
+ }
48
+
49
+ throw DataLoaderError.invalidURL(assetId)
50
+ }
51
+
52
+ private static func resolveFromSourceAsset(_ sourceAsset: String) -> DataSource {
53
+ return .bundle(nameWithExtension: sourceAsset)
54
+ }
55
+ }
@@ -0,0 +1,15 @@
1
+ import Foundation
2
+
3
+ extension EventPropertiesOutput {
4
+ static func boolean(_ value: Bool) -> EventPropertiesOutput {
5
+ return .first(value)
6
+ }
7
+
8
+ static func string(_ value: String) -> EventPropertiesOutput {
9
+ return .second(value)
10
+ }
11
+
12
+ static func number(_ value: Double) -> EventPropertiesOutput {
13
+ return .third(value)
14
+ }
15
+ }
@@ -0,0 +1,24 @@
1
+ import Foundation
2
+
3
+ final class FileDataLoader: DataLoader {
4
+ func load(from source: DataSource) async throws -> Data {
5
+ guard case .file(let url) = source else {
6
+ throw DataLoaderError.invalidSource
7
+ }
8
+ return try loadData(from: url)
9
+ }
10
+
11
+ func loadData(from url: URL) throws -> Data {
12
+ guard FileManager.default.fileExists(atPath: url.path) else {
13
+ throw DataLoaderError.fileNotFound(path: url.path)
14
+ }
15
+ return try Data(contentsOf: url)
16
+ }
17
+
18
+ func loadData(from path: String) throws -> Data {
19
+ guard let url = URL(string: path), url.isFileURL else {
20
+ throw DataLoaderError.invalidURL(path)
21
+ }
22
+ return try loadData(from: url)
23
+ }
24
+ }
@@ -0,0 +1,31 @@
1
+ import Foundation
2
+
3
+ final class HTTPDataLoader: DataLoader {
4
+ static let shared = HTTPDataLoader()
5
+
6
+ func load(from source: DataSource) async throws -> Data {
7
+ guard case .http(let url) = source else {
8
+ throw DataLoaderError.invalidSource
9
+ }
10
+ return try await downloadData(from: url)
11
+ }
12
+
13
+ func downloadData(from url: URL) async throws -> Data {
14
+ let (data, response) = try await URLSession.shared.data(from: url)
15
+
16
+ if let httpResponse = response as? HTTPURLResponse,
17
+ !(200...299).contains(httpResponse.statusCode)
18
+ {
19
+ throw DataLoaderError.httpError(statusCode: httpResponse.statusCode, url: url)
20
+ }
21
+
22
+ return data
23
+ }
24
+
25
+ func downloadData(from urlString: String) async throws -> Data {
26
+ guard let url = URL(string: urlString) else {
27
+ throw DataLoaderError.invalidURL(urlString)
28
+ }
29
+ return try await downloadData(from: url)
30
+ }
31
+ }
@@ -0,0 +1,113 @@
1
+ import RiveRuntime
2
+
3
+ typealias ReferencedAssetCache = [String: RiveFileAsset]
4
+
5
+ class HybridRiveFile: HybridRiveFileSpec, RiveViewSource {
6
+ var riveFile: RiveFile?
7
+ var referencedAssetCache: ReferencedAssetCache?
8
+ var assetLoader: ReferencedAssetLoader?
9
+ var cachedFactory: RiveFactory?
10
+ private var weakViews: [Weak<RiveReactNativeView>] = []
11
+
12
+ public func setRiveFile(_ riveFile: RiveFile) {
13
+ self.riveFile = riveFile
14
+ }
15
+
16
+ func registerView(_ view: RiveReactNativeView) {
17
+ weakViews.append(Weak(view))
18
+ }
19
+
20
+ func unregisterView(_ view: RiveReactNativeView) {
21
+ weakViews.removeAll { $0.value === view }
22
+ }
23
+
24
+ private func refreshAfterAssetChange() {
25
+ weakViews = weakViews.filter { $0.value != nil }
26
+
27
+ for weakView in weakViews {
28
+ guard let view = weakView.value else { continue }
29
+ view.refreshAfterAssetChange()
30
+ }
31
+ }
32
+
33
+ var viewModelCount: Double? {
34
+ guard let count = riveFile?.viewModelCount else { return nil }
35
+ return Double(count)
36
+ }
37
+
38
+ func viewModelByIndex(index: Double) throws -> (any HybridViewModelSpec)? {
39
+ guard let vm = riveFile?.viewModel(at: UInt(index)) else { return nil }
40
+ return HybridViewModel(viewModel: vm)
41
+ }
42
+
43
+ func viewModelByName(name: String) throws -> (any HybridViewModelSpec)? {
44
+ guard let vm = riveFile?.viewModelNamed(name) else { return nil }
45
+ return HybridViewModel(viewModel: vm)
46
+ }
47
+
48
+ func defaultArtboardViewModel(artboardBy: ArtboardBy?) throws -> (any HybridViewModelSpec)? {
49
+ let artboard: RiveArtboard?
50
+
51
+ if let artboardBy = artboardBy {
52
+ switch artboardBy.type {
53
+ case .index:
54
+ guard let index = artboardBy.index else { return nil }
55
+ artboard = try? riveFile?.artboard(from: Int(index))
56
+ case .name:
57
+ guard let name = artboardBy.name else { return nil }
58
+ artboard = try? riveFile?.artboard(fromName: name)
59
+ default:
60
+ artboard = nil
61
+ }
62
+ } else {
63
+ artboard = try? riveFile?.artboard()
64
+ }
65
+
66
+ guard let artboard = artboard,
67
+ let vm = riveFile?.defaultViewModel(for: artboard) else { return nil }
68
+ return HybridViewModel(viewModel: vm)
69
+ }
70
+
71
+ func updateReferencedAssets(referencedAssets: ReferencedAssetsType) {
72
+ guard let assetsData = referencedAssets.data,
73
+ let cache = referencedAssetCache,
74
+ let loader = assetLoader,
75
+ let _ = riveFile else {
76
+ return
77
+ }
78
+
79
+ let dispatchGroup = DispatchGroup()
80
+ var hasChanged = false
81
+
82
+ for (key, assetData) in assetsData {
83
+ guard let asset = cache[key] else { continue }
84
+ if let riveFactory = cachedFactory {
85
+ dispatchGroup.enter()
86
+ loader.loadAsset(source: assetData, asset: asset, factory: riveFactory) {
87
+ dispatchGroup.leave()
88
+ }
89
+ } else {
90
+ RCTLogError("[RiveFile] no factory available for update")
91
+ }
92
+ hasChanged = true
93
+ }
94
+
95
+ if hasChanged {
96
+ dispatchGroup.notify(queue: .main) { [weak self] in
97
+ self?.refreshAfterAssetChange()
98
+ }
99
+ }
100
+ }
101
+
102
+ func dispose() {
103
+ weakViews.removeAll()
104
+ referencedAssetCache = nil
105
+ assetLoader = nil
106
+ cachedFactory = nil
107
+ riveFile = nil
108
+ }
109
+
110
+ deinit {
111
+ dispose()
112
+ }
113
+ }
@@ -0,0 +1,163 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendable {
5
+ let assetLoader = ReferencedAssetLoader()
6
+
7
+ /// Asynchronously creates a `HybridRiveFileSpec` by performing the following steps:
8
+ /// 1. Executes `check()` to validate or fetch initial data.
9
+ /// 2. Processes the result with `prepare()`.
10
+ /// 3. If a custom asset loader is available, loads the file using `fileWithCustomAssetLoader(prepared, assetLoader)`.
11
+ /// Otherwise, loads the file using `file(prepared)`.
12
+ /// 4. Handles referenced assets and caches as needed.
13
+ /// - Parameters:
14
+ /// - check: Closure to validate or fetch initial data.
15
+ /// - prepare: Closure to process the checked result.
16
+ /// - fileWithCustomAssetLoader: Closure to load the file with a custom asset loader.
17
+ /// - file: Closure to load the file without a custom asset loader.
18
+ /// - referencedAssets: Optional referenced assets.
19
+ /// - Returns: A promise resolving to a `HybridRiveFileSpec`.
20
+ /// - Throws: Runtime errors if any step fails.
21
+ func genericFrom<CheckResult, Prepared>(
22
+ check: @escaping () throws -> CheckResult,
23
+ prepare: @escaping (CheckResult) async throws -> Prepared,
24
+ fileWithCustomAssetLoader: @escaping (Prepared, @escaping LoadAsset) throws -> RiveFile,
25
+ file: @escaping (Prepared) throws -> RiveFile,
26
+ referencedAssets: ReferencedAssetsType?
27
+ ) throws -> Promise<(any HybridRiveFileSpec)> {
28
+ return Promise.async {
29
+ do {
30
+ let checked = try check()
31
+ let prepared = try await prepare(checked)
32
+
33
+ let result = try await withCheckedThrowingContinuation { continuation in
34
+ DispatchQueue.global(qos: .userInitiated).async {
35
+ do {
36
+
37
+ let referencedAssetCache = SendableRef(ReferencedAssetCache())
38
+ let factoryCache: SendableRef<RiveFactory?> = .init(nil)
39
+ let fileRef: SendableRef<RiveFile?> = .init(nil)
40
+ let customLoader = self.assetLoader.createCustomLoader(
41
+ referencedAssets: referencedAssets, cache: referencedAssetCache,
42
+ factory: factoryCache,
43
+ fileRef: fileRef
44
+ )
45
+
46
+ let riveFile =
47
+ if let customLoader = customLoader {
48
+ try fileWithCustomAssetLoader(prepared, customLoader)
49
+ } else {
50
+ try file(prepared)
51
+ }
52
+ fileRef.value = riveFile
53
+
54
+ let result = (
55
+ file: riveFile, cache: referencedAssetCache.value, factory: factoryCache.value,
56
+ loader: customLoader != nil ? self.assetLoader : nil
57
+ )
58
+ DispatchQueue.main.async {
59
+ continuation.resume(returning: result)
60
+ }
61
+ } catch {
62
+ DispatchQueue.main.async {
63
+ continuation.resume(throwing: error)
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ let hybridRiveFile = HybridRiveFile()
70
+ hybridRiveFile.riveFile = result.file
71
+ hybridRiveFile.referencedAssetCache = result.cache
72
+ if let factory = result.factory {
73
+ hybridRiveFile.cachedFactory = factory
74
+ }
75
+ hybridRiveFile.assetLoader = result.loader
76
+ return hybridRiveFile
77
+ } catch let error as NSError {
78
+ throw RuntimeError.error(
79
+ withMessage: "Failed to download Rive file: \(error.localizedDescription)")
80
+ } catch {
81
+ throw RuntimeError.error(withMessage: "Unknown error occurred while downloading Rive file")
82
+ }
83
+ }
84
+ }
85
+
86
+ // MARK: Public Methods
87
+ func fromURL(url: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
88
+ -> Promise<(any HybridRiveFileSpec)> {
89
+ return try genericFrom(
90
+ check: {
91
+ guard let url = URL(string: url) else {
92
+ throw RuntimeError.error(withMessage: "Invalid URL: \(url)")
93
+ }
94
+ return url
95
+ },
96
+ prepare: { url in try await HTTPDataLoader.shared.downloadData(from: url) },
97
+ fileWithCustomAssetLoader: { (data, loader) in
98
+ try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
99
+ },
100
+ file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
101
+ referencedAssets: referencedAssets
102
+ )
103
+ }
104
+
105
+ func fromFileURL(fileURL: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
106
+ -> Promise<(any HybridRiveFileSpec)> {
107
+ return try genericFrom(
108
+ check: {
109
+ guard let url = URL(string: fileURL) else {
110
+ throw RuntimeError.error(withMessage: "Invalid URL: \(fileURL)")
111
+ }
112
+ guard url.isFileURL else {
113
+ throw RuntimeError.error(withMessage: "fromFileURL: URL must be a file URL: \(fileURL)")
114
+ }
115
+ return url
116
+ },
117
+ prepare: { url in try FileDataLoader().loadData(from: url) },
118
+ fileWithCustomAssetLoader: { (data, loader) in
119
+ try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
120
+ },
121
+ file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
122
+ referencedAssets: referencedAssets
123
+ )
124
+ }
125
+
126
+ func fromResource(resource: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
127
+ -> Promise<(any HybridRiveFileSpec)> {
128
+ return try genericFrom(
129
+ check: {
130
+ guard Bundle.main.path(forResource: resource, ofType: "riv") != nil else {
131
+ throw RuntimeError.error(withMessage: "Could not find Rive file: \(resource).riv")
132
+ }
133
+ return resource
134
+ },
135
+ prepare: { $0 },
136
+ fileWithCustomAssetLoader: { (resource, loader) in
137
+ try RiveFile(resource: resource, loadCdn: loadCdn, customAssetLoader: loader)
138
+ },
139
+ file: { (resource) in try RiveFile(resource: resource, loadCdn: loadCdn) },
140
+ referencedAssets: referencedAssets
141
+ )
142
+ }
143
+
144
+ func fromResource(resource: String, loadCdn: Bool) throws -> Promise<(any HybridRiveFileSpec)> {
145
+ return try fromResource(resource: resource, loadCdn: loadCdn, referencedAssets: nil)
146
+ }
147
+
148
+ func fromBytes(bytes: ArrayBufferHolder, loadCdn: Bool, referencedAssets: ReferencedAssetsType?)
149
+ throws -> Promise<
150
+ (any HybridRiveFileSpec)
151
+ > {
152
+ let data = bytes.toData(copyIfNeeded: false)
153
+ return try genericFrom(
154
+ check: { data },
155
+ prepare: { $0 },
156
+ fileWithCustomAssetLoader: { (data, loader) in
157
+ try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
158
+ },
159
+ file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
160
+ referencedAssets: referencedAssets
161
+ )
162
+ }
163
+ }
@@ -0,0 +1,17 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridRiveImage: HybridRiveImageSpec {
5
+ let renderImage: RiveRenderImage
6
+ private let dataSize: Int
7
+
8
+ init(renderImage: RiveRenderImage, dataSize: Int) {
9
+ self.renderImage = renderImage
10
+ self.dataSize = dataSize
11
+ super.init()
12
+ }
13
+
14
+ var byteSize: Double {
15
+ Double(dataSize)
16
+ }
17
+ }
@@ -0,0 +1,26 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ final class HybridRiveImageFactory: HybridRiveImageFactorySpec {
5
+ private func loadFromDataSource(_ source: DataSource) -> Promise<(any HybridRiveImageSpec)> {
6
+ return Promise.async {
7
+ let data = try await source.createLoader().load(from: source)
8
+ guard let renderImage = RiveRenderImage(data: data) else {
9
+ throw RuntimeError.error(withMessage: "Failed to decode image")
10
+ }
11
+ return HybridRiveImage(renderImage: renderImage, dataSize: data.count)
12
+ }
13
+ }
14
+
15
+ func loadFromURLAsync(url: String) throws -> Promise<(any HybridRiveImageSpec)> {
16
+ return loadFromDataSource(try .fromURL(string: url))
17
+ }
18
+
19
+ func loadFromResourceAsync(resource: String) throws -> Promise<(any HybridRiveImageSpec)> {
20
+ return loadFromDataSource(.bundle(nameWithExtension: resource))
21
+ }
22
+
23
+ func loadFromBytesAsync(bytes: ArrayBufferHolder) throws -> Promise<(any HybridRiveImageSpec)> {
24
+ return loadFromDataSource(.bytes(from: bytes))
25
+ }
26
+ }