@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,18 @@
1
+ const NITRO_DISPOSE_ERROR = 'failed to define internal native state property';
2
+
3
+ interface Disposable {
4
+ dispose(): void;
5
+ }
6
+
7
+ /** Safely calls dispose(), ignoring errors from https://github.com/mrousavy/nitro/issues/1083 */
8
+ export function callDispose(obj: Disposable): void {
9
+ try {
10
+ obj.dispose();
11
+ } catch (error) {
12
+ const message =
13
+ error instanceof Error ? error.message : String(error ?? '');
14
+ if (!message.includes(NITRO_DISPOSE_ERROR)) {
15
+ throw error;
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,56 @@
1
+ import { useRef, useCallback, useState } from 'react';
2
+ import type { RiveViewRef } from '@rive-app/react-native';
3
+
4
+ export function useRive() {
5
+ const riveRef = useRef<RiveViewRef>(null);
6
+ const [riveViewRef, setRiveViewRef] = useState<RiveViewRef | null>(null);
7
+ const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
8
+
9
+ const setRef = useCallback((node: RiveViewRef | null) => {
10
+ if (riveRef.current !== node) {
11
+ riveRef.current = node;
12
+
13
+ // Clear any existing timeout
14
+ if (timeoutRef.current) {
15
+ clearTimeout(timeoutRef.current);
16
+ }
17
+
18
+ const timeout = new Promise((_, reject) => {
19
+ timeoutRef.current = setTimeout(() => {
20
+ reject(new Error('Rive view ready timeout'));
21
+ }, 5000);
22
+ });
23
+
24
+ // TODO: Need to clear out the awaitViewReady promise if it times out
25
+ // or add this timeout natively and return false
26
+ Promise.race([node?.awaitViewReady(), timeout])
27
+ .then((result) => {
28
+ if (result === true) {
29
+ setRiveViewRef(node);
30
+ } else {
31
+ console.warn('Rive view ready check returned false');
32
+ setRiveViewRef(null);
33
+ }
34
+ })
35
+ .catch((error) => {
36
+ console.warn('Failed to initialize Rive view:', error);
37
+ setRiveViewRef(null);
38
+ })
39
+ .finally(() => {
40
+ // Clear the timeout in both success and error cases
41
+ if (timeoutRef.current) {
42
+ clearTimeout(timeoutRef.current);
43
+ timeoutRef.current = null;
44
+ }
45
+ });
46
+ }
47
+ }, []);
48
+
49
+ return {
50
+ riveRef,
51
+ riveViewRef,
52
+ setHybridRef: {
53
+ f: setRef,
54
+ },
55
+ };
56
+ }
@@ -0,0 +1,28 @@
1
+ import {
2
+ type ViewModelBooleanProperty,
3
+ type ViewModelInstance,
4
+ } from '../specs/ViewModel.nitro';
5
+ import type { UseRivePropertyResult } from '../types';
6
+ import { useRiveProperty } from './useRiveProperty';
7
+
8
+ const BOOLEAN_PROPERTY_OPTIONS = {
9
+ getProperty: (vmi: ViewModelInstance, p: string) => vmi.booleanProperty(p),
10
+ };
11
+
12
+ /**
13
+ * Hook for interacting with boolean ViewModel instance properties.
14
+ *
15
+ * @param path - The path to the boolean property
16
+ * @param viewModelInstance - The ViewModelInstance containing the boolean property to operate on
17
+ * @returns An object with the boolean value, a setter function, and an error if the property is not found
18
+ */
19
+ export function useRiveBoolean(
20
+ path: string,
21
+ viewModelInstance?: ViewModelInstance | null
22
+ ): UseRivePropertyResult<boolean> {
23
+ const [value, setValue, error] = useRiveProperty<
24
+ ViewModelBooleanProperty,
25
+ boolean
26
+ >(viewModelInstance, path, BOOLEAN_PROPERTY_OPTIONS);
27
+ return { value, setValue, error };
28
+ }
@@ -0,0 +1,47 @@
1
+ import { useCallback } from 'react';
2
+ import type {
3
+ ViewModelColorProperty,
4
+ ViewModelInstance,
5
+ } from '../specs/ViewModel.nitro';
6
+ import { type UseRivePropertyResult } from '../types';
7
+ import { useRiveProperty } from './useRiveProperty';
8
+ import { RiveColor } from '../core/RiveColor';
9
+
10
+ const COLOR_PROPERTY_OPTIONS = {
11
+ getProperty: (vmi: ViewModelInstance, p: string) => vmi.colorProperty(p),
12
+ };
13
+
14
+ /**
15
+ * Hook for interacting with color ViewModel instance properties.
16
+ *
17
+ * @param path - The path to the color property
18
+ * @param viewModelInstance - The ViewModelInstance containing the color property to operate on
19
+ * @returns An object with the color value as RGBA, a setter function that accepts either RGBA or hex string, and an error if the property is not found
20
+ */
21
+ export function useRiveColor(
22
+ path: string,
23
+ viewModelInstance?: ViewModelInstance | null
24
+ ): UseRivePropertyResult<RiveColor> & {
25
+ setValue: (value: RiveColor | string) => void;
26
+ } {
27
+ const [rawValue, setRawValue, error] = useRiveProperty<
28
+ ViewModelColorProperty,
29
+ number
30
+ >(viewModelInstance, path, COLOR_PROPERTY_OPTIONS);
31
+
32
+ const value =
33
+ rawValue !== undefined ? RiveColor.fromInt(rawValue) : undefined;
34
+
35
+ const setValue = useCallback(
36
+ (newValue: RiveColor | string) => {
37
+ const color =
38
+ typeof newValue === 'string'
39
+ ? RiveColor.fromHexString(newValue)
40
+ : newValue;
41
+ setRawValue(color.toInt());
42
+ },
43
+ [setRawValue]
44
+ );
45
+
46
+ return { value, setValue, error };
47
+ }
@@ -0,0 +1,27 @@
1
+ import { useCallback } from 'react';
2
+ import {
3
+ type ViewModelEnumProperty,
4
+ type ViewModelInstance,
5
+ } from '../specs/ViewModel.nitro';
6
+ import type { UseRivePropertyResult } from '../types';
7
+ import { useRiveProperty } from './useRiveProperty';
8
+
9
+ /**
10
+ * Hook for interacting with enum ViewModel instance properties.
11
+ *
12
+ * @param path - The path to the enum property
13
+ * @param viewModelInstance - The ViewModelInstance containing the enum property to operate on
14
+ * @returns An object with the enum value, a setter function, and an error if the property is not found
15
+ */
16
+ export function useRiveEnum(
17
+ path: string,
18
+ viewModelInstance?: ViewModelInstance | null
19
+ ): UseRivePropertyResult<string> {
20
+ const [value, setValue, error] = useRiveProperty<
21
+ ViewModelEnumProperty,
22
+ string
23
+ >(viewModelInstance, path, {
24
+ getProperty: useCallback((vmi, p) => vmi.enumProperty(p), []),
25
+ });
26
+ return { value, setValue, error };
27
+ }
@@ -0,0 +1,184 @@
1
+ import { useState, useEffect, useMemo, useRef } from 'react';
2
+ import { Image } from 'react-native';
3
+ import { RiveFileFactory } from '../core/RiveFile';
4
+ import { callDispose } from '../core/callDispose';
5
+ import type {
6
+ RiveFile,
7
+ ResolvedReferencedAsset,
8
+ } from '../specs/RiveFile.nitro';
9
+ import type { RiveImage } from '../specs/RiveImage.nitro';
10
+ import type {
11
+ ReferencedAsset,
12
+ ReferencedAssets,
13
+ ResolvedReferencedAssets,
14
+ } from '../core/ReferencedAssets';
15
+
16
+ export type { ReferencedAssets, ResolvedReferencedAssets };
17
+ export type RiveFileInput = number | { uri: string } | string | ArrayBuffer;
18
+
19
+ export type UseRiveFileOptions = {
20
+ referencedAssets?: ReferencedAssets;
21
+ };
22
+
23
+ function isRiveImage(value: ReferencedAsset): value is RiveImage {
24
+ return (
25
+ value !== null &&
26
+ typeof value === 'object' &&
27
+ '__type' in value &&
28
+ value.__type === 'HybridObject<RiveImage>'
29
+ );
30
+ }
31
+
32
+ function parsePossibleSources(asset: ReferencedAsset): ResolvedReferencedAsset {
33
+ if (isRiveImage(asset)) {
34
+ return { image: asset };
35
+ }
36
+
37
+ const source = asset.source;
38
+
39
+ if (typeof source === 'number') {
40
+ const resolvedAsset = Image.resolveAssetSource(source);
41
+ if (resolvedAsset && resolvedAsset.uri) {
42
+ return { sourceAssetId: resolvedAsset.uri };
43
+ } else {
44
+ throw new Error('Invalid asset source provided.');
45
+ }
46
+ }
47
+
48
+ const uri = (source as any).uri;
49
+ if (typeof source === 'object' && uri) {
50
+ return { sourceUrl: uri };
51
+ }
52
+
53
+ const fileName = (source as any).fileName;
54
+ const path = (source as any).path;
55
+
56
+ if (typeof source === 'object' && fileName) {
57
+ const result: ResolvedReferencedAsset = { sourceAsset: fileName };
58
+
59
+ if (path) {
60
+ result.path = path;
61
+ }
62
+
63
+ return result;
64
+ }
65
+
66
+ throw new Error('Invalid source provided.');
67
+ }
68
+
69
+ function transformFilesHandledMapping(
70
+ mapping?: ReferencedAssets
71
+ ): ResolvedReferencedAssets | undefined {
72
+ const transformedMapping: ResolvedReferencedAssets = {};
73
+ if (mapping === undefined) {
74
+ return undefined;
75
+ }
76
+
77
+ Object.entries(mapping).forEach(([key, asset]) => {
78
+ transformedMapping[key] = parsePossibleSources(asset);
79
+ });
80
+
81
+ return transformedMapping;
82
+ }
83
+
84
+ type RiveFileHookResult =
85
+ | { riveFile: RiveFile; isLoading: false; error: null }
86
+ | { riveFile: null; isLoading: true; error: null }
87
+ | { riveFile: null; isLoading: false; error: string };
88
+
89
+ export function useRiveFile(
90
+ input: RiveFileInput | undefined,
91
+ options: UseRiveFileOptions = {}
92
+ ): RiveFileHookResult {
93
+ const [result, setResult] = useState<RiveFileHookResult>({
94
+ riveFile: null,
95
+ isLoading: true,
96
+ error: null,
97
+ });
98
+ const referencedAssets = useMemo(
99
+ () => transformFilesHandledMapping(options.referencedAssets),
100
+ [options.referencedAssets]
101
+ );
102
+ const initialReferencedAssets = useRef(referencedAssets);
103
+
104
+ useEffect(() => {
105
+ let currentFile: RiveFile | null = null;
106
+
107
+ const loadRiveFile = async () => {
108
+ try {
109
+ const currentInput = input;
110
+
111
+ if (currentInput == null) {
112
+ setResult({
113
+ riveFile: null,
114
+ isLoading: false,
115
+ error: 'No Rive file input provided.',
116
+ });
117
+ return;
118
+ }
119
+ if (typeof currentInput === 'string') {
120
+ if (
121
+ currentInput.startsWith('http://') ||
122
+ currentInput.startsWith('https://')
123
+ ) {
124
+ currentFile = await RiveFileFactory.fromURL(
125
+ currentInput,
126
+ initialReferencedAssets.current
127
+ );
128
+ } else {
129
+ currentFile = await RiveFileFactory.fromResource(
130
+ currentInput,
131
+ initialReferencedAssets.current
132
+ );
133
+ }
134
+ } else if (typeof currentInput === 'number' || 'uri' in currentInput) {
135
+ currentFile = await RiveFileFactory.fromSource(
136
+ currentInput,
137
+ initialReferencedAssets.current
138
+ );
139
+ } else if (currentInput instanceof ArrayBuffer) {
140
+ currentFile = await RiveFileFactory.fromBytes(
141
+ currentInput,
142
+ initialReferencedAssets.current
143
+ );
144
+ }
145
+
146
+ setResult({ riveFile: currentFile!, isLoading: false, error: null });
147
+ } catch (err) {
148
+ console.error(err);
149
+ setResult({
150
+ riveFile: null,
151
+ isLoading: false,
152
+ error:
153
+ err instanceof Error
154
+ ? err.message || 'Unknown error'
155
+ : 'Failed to load Rive file',
156
+ });
157
+ }
158
+ };
159
+
160
+ loadRiveFile();
161
+
162
+ return () => {
163
+ if (currentFile) {
164
+ callDispose(currentFile);
165
+ }
166
+ };
167
+ }, [input]);
168
+
169
+ const { riveFile } = result;
170
+ useEffect(() => {
171
+ if (initialReferencedAssets.current !== referencedAssets) {
172
+ if (riveFile && referencedAssets) {
173
+ riveFile.updateReferencedAssets({ data: referencedAssets });
174
+ initialReferencedAssets.current = referencedAssets;
175
+ }
176
+ }
177
+ }, [referencedAssets, riveFile]);
178
+
179
+ return {
180
+ riveFile: result.riveFile,
181
+ isLoading: result.isLoading,
182
+ error: result.error,
183
+ } as RiveFileHookResult;
184
+ }
@@ -0,0 +1,28 @@
1
+ import {
2
+ type ViewModelInstance,
3
+ type ViewModelNumberProperty,
4
+ } from '../specs/ViewModel.nitro';
5
+ import type { UseRivePropertyResult } from '../types';
6
+ import { useRiveProperty } from './useRiveProperty';
7
+
8
+ const NUMBER_PROPERTY_OPTIONS = {
9
+ getProperty: (vmi: ViewModelInstance, p: string) => vmi.numberProperty(p),
10
+ };
11
+
12
+ /**
13
+ * Hook for interacting with number ViewModel instance properties.
14
+ *
15
+ * @param path - The path to the number property
16
+ * @param viewModelInstance - The ViewModelInstance containing the number property to operate on
17
+ * @returns An object with the number value, a setter function, and an error if the property is not found
18
+ */
19
+ export function useRiveNumber(
20
+ path: string,
21
+ viewModelInstance?: ViewModelInstance | null
22
+ ): UseRivePropertyResult<number> {
23
+ const [value, setValue, error] = useRiveProperty<
24
+ ViewModelNumberProperty,
25
+ number
26
+ >(viewModelInstance, path, NUMBER_PROPERTY_OPTIONS);
27
+ return { value, setValue, error };
28
+ }
@@ -0,0 +1,110 @@
1
+ import { useCallback, useEffect, useState, useMemo } from 'react';
2
+ import {
3
+ type ObservableProperty,
4
+ type ViewModelInstance,
5
+ type ViewModelProperty,
6
+ } from '../specs/ViewModel.nitro';
7
+
8
+ /**
9
+ * Base hook for all ViewModelInstance property interactions.
10
+ * This hook provides a unified interface for working with different types of
11
+ * Rive properties (boolean, number, string, enum, trigger) while maintaining
12
+ * type safety and proper cleanup.
13
+ *
14
+ * @template P - The type of the property (e.g., ViewModelBooleanProperty, ViewModelNumberProperty)
15
+ * @template T - The primitive type of the property value (number, boolean, string)
16
+ *
17
+ * @param viewModelInstance - The source ViewModelInstance
18
+ * @param path - Property path in the ViewModelInstance
19
+ * @param options - Configuration for working with the property
20
+ * @returns A tuple containing [value, setter, error, property]
21
+ */
22
+ export function useRiveProperty<P extends ViewModelProperty, T>(
23
+ viewModelInstance: ViewModelInstance | null | undefined,
24
+ path: string,
25
+ options: {
26
+ /** Function to get the property from a ViewModelInstance */
27
+ getProperty: (vm: ViewModelInstance, path: string) => P | undefined;
28
+ /** Optional override callback for property events (mainly used by triggers) */
29
+ onPropertyEventOverride?: (...args: any[]) => void;
30
+ }
31
+ ): [T | undefined, (value: T) => void, Error | null, P | undefined] {
32
+ const [value, setValue] = useState<T | undefined>(undefined);
33
+ const [error, setError] = useState<Error | null>(null);
34
+
35
+ // Clear error when path or instance changes
36
+ useEffect(() => {
37
+ setError(null);
38
+ }, [path, viewModelInstance]);
39
+
40
+ // Get the property
41
+ const property = useMemo(() => {
42
+ if (!viewModelInstance) return;
43
+ return options.getProperty(
44
+ viewModelInstance,
45
+ path
46
+ ) as unknown as ObservableViewModelProperty<T>;
47
+ }, [options, viewModelInstance, path]);
48
+
49
+ // Set error if property is not found
50
+ useEffect(() => {
51
+ if (viewModelInstance && !property) {
52
+ setError(
53
+ new Error(`Property "${path}" not found in the ViewModel instance`)
54
+ );
55
+ }
56
+ }, [viewModelInstance, property, path]);
57
+
58
+ // Add listener for changes to the property
59
+ useEffect(() => {
60
+ if (!property) return;
61
+
62
+ // If an override callback is provided, use it.
63
+ // Otherwise, use the default callback.
64
+ if (options.onPropertyEventOverride) {
65
+ property.addListener(options.onPropertyEventOverride);
66
+ } else {
67
+ property.addListener((newValue) => {
68
+ setValue(newValue);
69
+ });
70
+ }
71
+
72
+ // Cleanup: Remove listeners and dispose of the property
73
+ // This ensures proper cleanup of event listeners and resources
74
+ return () => {
75
+ property.removeListeners();
76
+ property.dispose();
77
+ };
78
+ }, [options, property]);
79
+
80
+ // Set the value of the property
81
+ const setPropertyValue = useCallback(
82
+ (newValue: T) => {
83
+ if (!property) {
84
+ setError(
85
+ new Error(
86
+ `Cannot set value for property "${path}" because it was not found. Your view model instance may be undefined, or the path may be incorrect.`
87
+ )
88
+ );
89
+ } else {
90
+ property.value = newValue;
91
+ }
92
+ },
93
+ [property, path]
94
+ );
95
+
96
+ return [value, setPropertyValue, error, property as unknown as P];
97
+ }
98
+
99
+ /**
100
+ * This interface extends the ViewModelProperty and ObservableProperty interfaces.
101
+ * It adds the addListener and value as known properties.
102
+ *
103
+ * @template T - The primitive type of the property value (number, boolean, string)
104
+ */
105
+ interface ObservableViewModelProperty<T>
106
+ extends ViewModelProperty,
107
+ ObservableProperty {
108
+ addListener: (onChanged: (value: T) => void) => void;
109
+ value: T;
110
+ }
@@ -0,0 +1,28 @@
1
+ import {
2
+ type ViewModelInstance,
3
+ type ViewModelStringProperty,
4
+ } from '../specs/ViewModel.nitro';
5
+ import type { UseRivePropertyResult } from '../types';
6
+ import { useRiveProperty } from './useRiveProperty';
7
+
8
+ const STRING_PROPERTY_OPTIONS = {
9
+ getProperty: (vmi: ViewModelInstance, p: string) => vmi.stringProperty(p),
10
+ };
11
+
12
+ /**
13
+ * Hook for interacting with string ViewModel instance properties.
14
+ *
15
+ * @param path - The path to the string property
16
+ * @param viewModelInstance - The ViewModelInstance containing the string property to operate on
17
+ * @returns An object with the number value, a setter function, and an error if the property is not found
18
+ */
19
+ export function useRiveString(
20
+ path: string,
21
+ viewModelInstance?: ViewModelInstance | null
22
+ ): UseRivePropertyResult<string> {
23
+ const [value, setValue, error] = useRiveProperty<
24
+ ViewModelStringProperty,
25
+ string
26
+ >(viewModelInstance, path, STRING_PROPERTY_OPTIONS);
27
+ return { value, setValue, error };
28
+ }
@@ -0,0 +1,49 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import {
3
+ type ViewModelInstance,
4
+ type ViewModelTriggerProperty,
5
+ } from '../specs/ViewModel.nitro';
6
+ import type {
7
+ UseRiveTriggerResult,
8
+ UseViewModelInstanceTriggerParameters,
9
+ } from '../types';
10
+ import { useRiveProperty } from './useRiveProperty';
11
+
12
+ const getTriggerProperty = (vmi: ViewModelInstance, p: string) =>
13
+ vmi.triggerProperty(p);
14
+
15
+ /**
16
+ * Hook for interacting with trigger ViewModel instance properties.
17
+ *
18
+ * @param path - The path to the trigger property
19
+ * @param viewModelInstance - The ViewModelInstance containing the trigger property to operate on
20
+ * @returns A trigger function that can be called to fire the trigger
21
+ */
22
+ export function useRiveTrigger(
23
+ path: string,
24
+ viewModelInstance?: ViewModelInstance | null,
25
+ params?: UseViewModelInstanceTriggerParameters
26
+ ): UseRiveTriggerResult {
27
+ const { onTrigger } = params ?? {};
28
+
29
+ const triggerOptions = useMemo(
30
+ () => ({
31
+ getProperty: getTriggerProperty,
32
+ onPropertyEventOverride: onTrigger,
33
+ }),
34
+ [onTrigger]
35
+ );
36
+
37
+ const [_, __, error, property] = useRiveProperty<
38
+ ViewModelTriggerProperty,
39
+ undefined
40
+ >(viewModelInstance, path, triggerOptions);
41
+
42
+ const trigger = useCallback(() => {
43
+ if (property) {
44
+ property.trigger();
45
+ }
46
+ }, [property]);
47
+
48
+ return { trigger, error };
49
+ }
package/src/index.tsx ADDED
@@ -0,0 +1,52 @@
1
+ import { type HybridView } from 'react-native-nitro-modules';
2
+ import {
3
+ type RiveViewMethods,
4
+ type RiveViewTSMethods,
5
+ type RiveViewProps as NativeRiveViewProps,
6
+ DataBindMode,
7
+ type DataBindByName as DataBindByNameInterface,
8
+ } from './specs/RiveView.nitro';
9
+
10
+ export class DataBindByName implements DataBindByNameInterface {
11
+ byName: string;
12
+ constructor(name: string) {
13
+ this.byName = name;
14
+ }
15
+ }
16
+
17
+ export { NitroRiveView } from './core/NitroRiveViewComponent';
18
+
19
+ export { RiveView, type RiveViewProps } from './core/RiveView';
20
+ export type { RiveViewMethods };
21
+ export type RiveViewRef = HybridView<NativeRiveViewProps, RiveViewTSMethods>;
22
+ export type { RiveFile } from './specs/RiveFile.nitro';
23
+ export type {
24
+ ViewModel,
25
+ ViewModelInstance,
26
+ ViewModelNumberProperty,
27
+ ViewModelStringProperty,
28
+ ViewModelBooleanProperty,
29
+ ViewModelColorProperty,
30
+ ViewModelEnumProperty,
31
+ ViewModelTriggerProperty,
32
+ ViewModelImageProperty,
33
+ } from './specs/ViewModel.nitro';
34
+ export { Fit } from './core/Fit';
35
+ export { Alignment } from './core/Alignment';
36
+ export { RiveFileFactory } from './core/RiveFile';
37
+ export { RiveImages } from './core/RiveImages';
38
+ export type { RiveImage } from './specs/RiveImage.nitro';
39
+ export { RiveColor } from './core/RiveColor';
40
+ export { type RiveEvent, RiveEventType } from './core/Events';
41
+ export { type RiveError, RiveErrorType } from './core/Errors';
42
+ export { ArtboardByIndex, ArtboardByName } from './specs/ArtboardBy';
43
+ export { useRive } from './hooks/useRive';
44
+ export { useRiveNumber } from './hooks/useRiveNumber';
45
+ export { useRiveString } from './hooks/useRiveString';
46
+ export { useRiveBoolean } from './hooks/useRiveBoolean';
47
+ export { useRiveEnum } from './hooks/useRiveEnum';
48
+ export { useRiveColor } from './hooks/useRiveColor';
49
+ export { useRiveTrigger } from './hooks/useRiveTrigger';
50
+ export { useRiveFile } from './hooks/useRiveFile';
51
+ export { type RiveFileInput } from './hooks/useRiveFile';
52
+ export { DataBindMode };
@@ -0,0 +1,31 @@
1
+ type ArtboardByTypes = 'index' | 'name';
2
+ export interface ArtboardBy {
3
+ type: ArtboardByTypes;
4
+ index?: number;
5
+ name?: string;
6
+ }
7
+
8
+ /**
9
+ * Creates an ArtboardBy object for the artboard at the given index.
10
+ * @param {number} index - The index of the artboard to create an ArtboardBy object for.
11
+ * @returns {ArtboardBy} An ArtboardBy object for the artboard at the given index.
12
+ */
13
+ export const ArtboardByIndex = (index: number): ArtboardBy => {
14
+ if (!Number.isInteger(index)) {
15
+ throw new Error('Artboard index must be an integer');
16
+ }
17
+ return {
18
+ type: 'index',
19
+ index: index,
20
+ };
21
+ };
22
+
23
+ /**
24
+ * Creates an ArtboardBy object for the artboard with the given name.
25
+ * @param {string} name - The name of the artboard to create an ArtboardBy object for.
26
+ * @returns {ArtboardBy} An ArtboardBy object for the artboard with the given name.
27
+ */
28
+ export const ArtboardByName = (name: string): ArtboardBy => ({
29
+ type: 'name',
30
+ name: name,
31
+ });
@@ -0,0 +1,6 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+
3
+ export interface Rive
4
+ extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
5
+ multiply(a: number, b: number): number;
6
+ }