@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
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Rive
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,257 @@
1
+ # @rive-app/react-native
2
+
3
+ Rive React Native 2.0
4
+
5
+ ## Development Preview
6
+
7
+ > **⚠️ Development Preview**: This package is currently in development preview. While it's functional and actively maintained, the API may change in future releases. We recommend testing thoroughly before using in production applications. We're actively gathering feedback to improve the library. Please share your thoughts and report any issues you encounter.
8
+
9
+ ## Requirements
10
+
11
+ - **React Native**: 0.78 or later (0.79+ recommended for better Android error messages)
12
+ - **Expo SDK**: 53 or later (for Expo users)
13
+ - **iOS**: 15.1 or later
14
+ - **Android**: SDK 24 (Android 7.0) or later
15
+ - **Xcode**: 16.4 or later
16
+ - **JDK**: 17 or later
17
+ - **Nitro Modules**: 0.25.2 or later
18
+
19
+ ## Known Issues
20
+
21
+ - Error messages on Android in React Native 0.78-0.79 may not be descriptive, this is a [known issue](https://github.com/mrousavy/nitro/issues/382) in React Native and is fixed in RN 0.80
22
+
23
+ ## Installation
24
+
25
+ ```sh
26
+ npm install rive-app/rive-nitro-react-native react-native-nitro-modules
27
+ ```
28
+
29
+ > `react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/).
30
+
31
+ ## Usage
32
+
33
+ ```js
34
+ import { Fit, RiveView, useRiveFile } from '@rive-app/react-native';
35
+
36
+ function App() {
37
+ const { riveFile } = useRiveFile({
38
+ url: 'https://cdn.rive.app/animations/vehicles.riv',
39
+ });
40
+
41
+ if (!riveFile) {
42
+ return null;
43
+ }
44
+
45
+ return (
46
+ <RiveView
47
+ autoPlay={true}
48
+ fit={Fit.Contain}
49
+ file={riveFile}
50
+ onError={(error) => console.error('Rive error:', error.message)}
51
+ style={{ width: '100%', height: 400 }}
52
+ />
53
+ );
54
+ }
55
+ ```
56
+
57
+ ## Native SDK Version Customization
58
+
59
+ > **⚠️ Advanced Usage:** Customizing native SDK versions is intended for advanced users only. Using non-default versions may cause build-time errors, or compatibility issues. Always review and update custom versions when upgrading @rive-app/react-native.
60
+
61
+ <details>
62
+
63
+ <summary>Custom Native SDK Version instructions - <b>only use if you need it!</b></summary>
64
+
65
+ By default, @rive-app/react-native uses specific versions of the Rive native SDKs defined in the library's `package.json` (`runtimeVersions.ios` and `runtimeVersions.android`). You can customize these versions if needed.
66
+
67
+ ### Vanilla React Native
68
+
69
+ Add the appropriate properties to your configuration files:
70
+
71
+ **iOS** - Add to `ios/Podfile.properties.json`:
72
+
73
+ ```json
74
+ {
75
+ "RiveRuntimeIOSVersion": "6.13.0"
76
+ }
77
+ ```
78
+
79
+ **Android** - Add to `android/gradle.properties`:
80
+
81
+ ```properties
82
+ Rive_RiveRuntimeAndroidVersion=10.6.0
83
+ ```
84
+
85
+ ### Expo
86
+
87
+ Use an inline config plugin in your `app.config.ts`:
88
+
89
+ ```typescript
90
+ import {
91
+ withPodfileProperties,
92
+ withGradleProperties,
93
+ } from '@expo/config-plugins';
94
+
95
+ export default {
96
+ expo: {
97
+ // ... other config
98
+ plugins: [
99
+ (config) => {
100
+ config = withPodfileProperties(config, (config) => {
101
+ config.modResults['RiveRuntimeIOSVersion'] = '6.13.0';
102
+ return config;
103
+ });
104
+
105
+ config = withGradleProperties(config, (config) => {
106
+ config.modResults.push({
107
+ type: 'property',
108
+ key: 'Rive_RiveRuntimeAndroidVersion',
109
+ value: '10.6.0',
110
+ });
111
+ return config;
112
+ });
113
+
114
+ return config;
115
+ },
116
+ ],
117
+ },
118
+ };
119
+ ```
120
+ </details>
121
+
122
+ ## Error Handling
123
+
124
+ All Rive operations can be wrapped in try/catch blocks for error handling, for example, loading a file:
125
+
126
+ ```js
127
+ try {
128
+ const riveFile = await RiveFileFactory.fromURL(
129
+ 'https://cdn.rive.app/animations/vehicles.riv'
130
+ );
131
+ // Use the riveFile...
132
+ } catch (error) {
133
+ // Handle any errors that occur during Rive file loading
134
+ console.error('Error loading Rive file:', error);
135
+ }
136
+ ```
137
+
138
+ ### View-Based Errors
139
+
140
+ The `RiveView` component provides an `onError` callback prop to handle errors that occur during view configuration or runtime operations:
141
+
142
+ ```js
143
+ <RiveView
144
+ file={riveFile}
145
+ onError={(error) => {
146
+ // error.type contains the error type enum value
147
+ // error.message contains a descriptive error message
148
+ console.error(`Rive Error [${error.type}]: ${error.message}`);
149
+ }}
150
+ />
151
+ ```
152
+
153
+ #### Error Types
154
+
155
+ The following error types can occur during view operations:
156
+
157
+ | Error Type | Value | Description |
158
+ | ---------------------------------------------- | ----- | ----------------------------------------------------- |
159
+ | `RiveErrorType.Unknown` | 0 | An unknown error occurred |
160
+ | `RiveErrorType.FileNotFound` | 1 | The specified Rive file could not be found |
161
+ | `RiveErrorType.MalformedFile` | 2 | The Rive file is malformed or corrupted |
162
+ | `RiveErrorType.IncorrectArtboardName` | 3 | The specified artboard name does not exist |
163
+ | `RiveErrorType.IncorrectStateMachineName` | 4 | The specified state machine name does not exist |
164
+ | `RiveErrorType.ViewModelInstanceNotFound` | 6 | The specified view model instance was not found |
165
+ | `RiveErrorType.IncorrectStateMachineInputName` | 8 | The specified state machine input name does not exist |
166
+
167
+ You can use these error types to provide specific error handling:
168
+
169
+ ```js
170
+ import { RiveView, RiveErrorType } from '@rive-app/react-native';
171
+
172
+ <RiveView
173
+ file={riveFile}
174
+ artboardName="MainArtboard"
175
+ onError={(error) => {
176
+ switch (error.type) {
177
+ case RiveErrorType.IncorrectArtboardName:
178
+ console.error('Artboard not found:', error.message);
179
+ // Handle missing artboard (e.g., use default artboard)
180
+ break;
181
+ case RiveErrorType.IncorrectStateMachineName:
182
+ console.error('State machine not found:', error.message);
183
+ // Handle missing state machine
184
+ break;
185
+ case RiveErrorType.MalformedFile:
186
+ console.error('Corrupted file:', error.message);
187
+ // Handle corrupted file (e.g., show error UI)
188
+ break;
189
+ default:
190
+ console.error('Rive error:', error.message);
191
+ }
192
+ }}
193
+ style={{ width: '100%', height: 400 }}
194
+ />;
195
+ ```
196
+
197
+ > **Note**: If no `onError` handler is provided, errors will be logged to the console by default.
198
+
199
+ ## Feature Support
200
+
201
+ This section provides a comprehensive overview of feature availability in `@rive-app/react-native`, comparing it with the [previous Rive React Native runtime](https://github.com/rive-app/rive-react-native) and outlining the development roadmap.
202
+
203
+ ### Runtime Feature Comparison
204
+
205
+ **Status Legend:** ✅ Supported | ⚠️ Partial | 🚧 In Development | ❌ Not Planned
206
+
207
+ The following table compares feature availability with the [previous Rive React Native runtime](https://github.com/rive-app/rive-react-native).
208
+
209
+ | Feature | Status | Description |
210
+ | --------------------------------- | ------ | ---------------------------------------------------------------- |
211
+ | Artboard selection | ✅ | Specify artboard to render |
212
+ | State machine selection | ✅ | Specify a state machine to play |
213
+ | View autoPlay & play/pause | ✅ | Control view playback |
214
+ | Fit & Alignment | ✅ | Fit modes supported, alignment coming soon |
215
+ | Layout & Responsiveness | ✅ | Basic responsive layouts supported |
216
+ | Data Binding | ✅ | Control data binding through runtime code |
217
+ | Asset management | ✅ | Load assets out of band (referenced) |
218
+ | State machine inputs (Deprecated) | ✅ | Get/Set (nested) state machine inputs (legacy, see data binding) |
219
+ | Text Runs (Deprecated) | ✅ | Update (nested) text runs (legacy, see data binding) |
220
+ | Rive Events (Deprecated) | ✅ | Listen to Rive events |
221
+ | Rive Audio | ✅ | Rive audio playback supported |
222
+ | `useRive()` hook | ✅ | Convenient hook to access the Rive View ref after load |
223
+ | `useRiveFile()` hook | ✅ | Convenient hook to load a Rive file |
224
+ | `RiveView` error handling | ✅ | Error handler for failed view operations |
225
+ | `source` .riv file loading | ✅ | Conveniently load .riv files from JS source |
226
+ | Animation selection | ❌ | Animation playback not planned, use state machines |
227
+ | Renderer options | ❌ | Single renderer option available (Rive) |
228
+
229
+ > **Note**: Several features in the table above (state machine inputs, text runs, and events) represent legacy approaches to runtime control. We recommend using data binding instead, as it provides a more maintainable way to control your Rive graphics (both at edit time and runtime).
230
+
231
+ ### Roadmap
232
+
233
+ **Status Legend:** ✅ Completed | 🚧 Planned |
234
+
235
+ This section tracks new features and improvements planned for this runtime that were not available in the [previous Rive React Native runtime](https://github.com/rive-app/rive-react-native).
236
+
237
+ | Feature | Status |
238
+ | ----------------------------------------------------------------------------------------------------- | ------ |
239
+ | [Reusable .riv File resources (preloading)](https://github.com/rive-app/rive-react-native/issues/260) | ✅ |
240
+ | [Data Binding - Images](https://github.com/rive-app/rive-nitro-react-native/issues/9) | 🚧 |
241
+ | [Data Binding - Artboards](https://github.com/rive-app/rive-nitro-react-native/issues/10) | 🚧 |
242
+ | [Data Binding - Lists](https://github.com/rive-app/rive-nitro-react-native/issues/11) | 🚧 |
243
+ | [Data Binding - Value props](https://github.com/rive-app/rive-nitro-react-native/pull/24) | 🚧 |
244
+ | [Suspense](https://github.com/rive-app/rive-nitro-react-native/pull/19) | 🚧 |
245
+
246
+ ## Contributing
247
+
248
+ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
249
+
250
+ ## License
251
+
252
+ MIT
253
+
254
+ ---
255
+
256
+ Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
257
+
package/RNRive.podspec ADDED
@@ -0,0 +1,53 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ rive_ios_version = nil
6
+
7
+ if ENV['RIVE_RUNTIME_IOS_VERSION']
8
+ rive_ios_version = ENV['RIVE_RUNTIME_IOS_VERSION']
9
+ end
10
+
11
+ if !rive_ios_version && defined?($RiveRuntimeIOSVersion)
12
+ rive_ios_version = $RiveRuntimeIOSVersion
13
+ end
14
+
15
+ if !rive_ios_version && defined?(Pod::Config) && Pod::Config.respond_to?(:instance)
16
+ podfile_properties_path = File.join(Pod::Config.instance.installation_root, 'Podfile.properties.json')
17
+ if File.exist?(podfile_properties_path)
18
+ podfile_properties = JSON.parse(File.read(podfile_properties_path)) rescue {}
19
+ rive_ios_version = podfile_properties['RiveRuntimeIOSVersion'] if podfile_properties['RiveRuntimeIOSVersion']
20
+ end
21
+ end
22
+
23
+ if !rive_ios_version && package['runtimeVersions'] && package['runtimeVersions']['ios']
24
+ rive_ios_version = package['runtimeVersions']['ios']
25
+ end
26
+
27
+ if !rive_ios_version
28
+ raise "Internal Error: Failed to determine Rive iOS SDK version. Please ensure package.json contains 'runtimeVersions.ios'"
29
+ end
30
+
31
+ Pod::UI.puts "@rive-app/react-native: Rive iOS SDK #{rive_ios_version}"
32
+
33
+ Pod::Spec.new do |s|
34
+ s.name = "RNRive"
35
+ s.version = package["version"]
36
+ s.summary = package["description"]
37
+ s.homepage = package["homepage"]
38
+ s.license = package["license"]
39
+ s.authors = package["author"]
40
+
41
+ s.platforms = { :ios => min_ios_version_supported }
42
+ s.source = { :git => "https://github.com/rive-app/rive-nitro-react-native.git", :tag => "#{s.version}" }
43
+
44
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
45
+
46
+ s.public_header_files = ['ios/RCTSwiftLog.h']
47
+ load 'nitrogen/generated/ios/RNRive+autolinking.rb'
48
+ add_nitrogen_files(s)
49
+
50
+ s.dependency "RiveRuntime", rive_ios_version
51
+
52
+ install_modules_dependencies(s)
53
+ end
@@ -0,0 +1,24 @@
1
+ project(rive)
2
+ cmake_minimum_required(VERSION 3.9.0)
3
+
4
+ set(PACKAGE_NAME rive)
5
+ set(CMAKE_VERBOSE_MAKEFILE ON)
6
+ set(CMAKE_CXX_STANDARD 20)
7
+
8
+ # Define C++ library and add all sources
9
+ add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
10
+
11
+ # Add Nitrogen specs :)
12
+ include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/rive+autolinking.cmake)
13
+
14
+ # Set up local includes
15
+ include_directories("src/main/cpp" "../cpp")
16
+
17
+ find_library(LOG_LIB log)
18
+
19
+ # Link all libraries together
20
+ target_link_libraries(
21
+ ${PACKAGE_NAME}
22
+ ${LOG_LIB}
23
+ android # <-- Android core
24
+ )
@@ -0,0 +1,155 @@
1
+ buildscript {
2
+ ext.getExtOrDefault = {name ->
3
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['Rive_' + name]
4
+ }
5
+
6
+ repositories {
7
+ google()
8
+ mavenCentral()
9
+ }
10
+
11
+ dependencies {
12
+ classpath "com.android.tools.build:gradle:8.7.2"
13
+ // noinspection DifferentKotlinGradleVersion
14
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
15
+ }
16
+ }
17
+
18
+ def reactNativeArchitectures() {
19
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
20
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
21
+ }
22
+
23
+ apply plugin: "com.android.library"
24
+ apply plugin: "kotlin-android"
25
+ apply from: '../nitrogen/generated/android/rive+autolinking.gradle'
26
+ apply plugin: "com.facebook.react"
27
+
28
+ react {
29
+ jsRootDir = file("../src/")
30
+ libraryName = "rive"
31
+ codegenJavaPackageName = "com.rive"
32
+ }
33
+
34
+ def getExtOrIntegerDefault(name) {
35
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Rive_" + name]).toInteger()
36
+ }
37
+
38
+ android {
39
+ namespace "com.rive"
40
+
41
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
42
+
43
+ defaultConfig {
44
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
45
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
46
+
47
+ externalNativeBuild {
48
+ cmake {
49
+ cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
50
+ arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
51
+ abiFilters(*reactNativeArchitectures())
52
+
53
+ buildTypes {
54
+ debug {
55
+ cppFlags "-O1 -g"
56
+ }
57
+ release {
58
+ cppFlags "-O2"
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ externalNativeBuild {
66
+ cmake {
67
+ path "CMakeLists.txt"
68
+ }
69
+ }
70
+
71
+ packagingOptions {
72
+ excludes = ["META-INF",
73
+ "META-INF/**",
74
+ "**/libc++_shared.so",
75
+ "**/libfbjni.so",
76
+ "**/libjsi.so",
77
+ "**/libfolly_json.so",
78
+ "**/libfolly_runtime.so",
79
+ "**/libglog.so",
80
+ "**/libhermes.so",
81
+ "**/libhermes-executor-debug.so",
82
+ "**/libhermes_executor.so",
83
+ "**/libreactnative.so",
84
+ "**/libreactnativejni.so",
85
+ "**/libturbomodulejsijni.so",
86
+ "**/libreact_nativemodule_core.so",
87
+ "**/libjscexecutor.so"]
88
+ }
89
+
90
+ buildFeatures {
91
+ buildConfig true
92
+ prefab true
93
+ }
94
+
95
+ buildTypes {
96
+ release {
97
+ minifyEnabled false
98
+ }
99
+ }
100
+
101
+ lintOptions {
102
+ disable "GradleCompatible"
103
+ }
104
+
105
+ compileOptions {
106
+ sourceCompatibility JavaVersion.VERSION_1_8
107
+ targetCompatibility JavaVersion.VERSION_1_8
108
+ }
109
+
110
+ sourceSets {
111
+ main {
112
+ java.srcDirs += ["generated/java",
113
+ "generated/jni"]
114
+ }
115
+ }
116
+ }
117
+
118
+ repositories {
119
+ mavenCentral()
120
+ google()
121
+ }
122
+
123
+ def kotlin_version = getExtOrDefault("kotlinVersion")
124
+
125
+ def getRiveAndroidVersion() {
126
+ if (rootProject.ext.has('RiveRuntimeAndroidVersion')) {
127
+ return rootProject.ext.get('RiveRuntimeAndroidVersion')
128
+ }
129
+
130
+ if (project.hasProperty('Rive_RiveRuntimeAndroidVersion')) {
131
+ return project.property('Rive_RiveRuntimeAndroidVersion')
132
+ }
133
+
134
+ def packageJson = file("${projectDir}/../package.json")
135
+ if (packageJson.exists()) {
136
+ def json = new groovy.json.JsonSlurper().parseText(packageJson.text)
137
+ if (json.runtimeVersions?.android) {
138
+ return json.runtimeVersions.android
139
+ }
140
+ }
141
+
142
+ throw new GradleException("Failed to determine Rive Android SDK version. Please ensure package.json contains 'runtimeVersions.android'")
143
+ }
144
+
145
+ def riveAndroidVersion = getRiveAndroidVersion()
146
+ println "@rive-app/react-native: Rive Android SDK ${riveAndroidVersion}"
147
+
148
+ dependencies {
149
+ implementation "com.facebook.react:react-android"
150
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
151
+ implementation "app.rive:rive-android:${riveAndroidVersion}"
152
+ implementation "androidx.startup:startup-runtime:1.2.0"
153
+ implementation project(":react-native-nitro-modules")
154
+ }
155
+
@@ -0,0 +1,5 @@
1
+ Rive_kotlinVersion=2.0.21
2
+ Rive_minSdkVersion=24
3
+ Rive_targetSdkVersion=34
4
+ Rive_compileSdkVersion=35
5
+ Rive_ndkVersion=27.1.12297006
@@ -0,0 +1,13 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:tools="http://schemas.android.com/tools">
3
+ <application>
4
+ <provider
5
+ android:name="androidx.startup.InitializationProvider"
6
+ android:authorities="${applicationId}.androidx-startup"
7
+ android:exported="false"
8
+ tools:node="merge">
9
+ <meta-data android:name="app.rive.runtime.kotlin.RiveInitializer"
10
+ android:value="androidx.startup" />
11
+ </provider>
12
+ </application>
13
+ </manifest>
@@ -0,0 +1,6 @@
1
+ #include <jni.h>
2
+ #include "riveOnLoad.hpp"
3
+
4
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
5
+ return margelo::nitro::rive::initialize(vm);
6
+ }
@@ -0,0 +1,20 @@
1
+ package com.margelo.nitro.rive
2
+
3
+ import androidx.annotation.Keep
4
+ import com.facebook.proguard.annotations.DoNotStrip
5
+ import kotlinx.coroutines.CoroutineScope
6
+ import kotlinx.coroutines.Job
7
+ import kotlinx.coroutines.flow.Flow
8
+
9
+ @Keep
10
+ @DoNotStrip
11
+ interface BaseHybridViewModelProperty<T> {
12
+ val scope: CoroutineScope?
13
+ val job: Job?
14
+ val listeners: MutableList<(T) -> Unit>
15
+
16
+ fun ensureValueListenerJob(valueFlow: Flow<T>, drop: Int = 0)
17
+ fun onChanged(value: T)
18
+ fun removeListeners()
19
+ fun dispose()
20
+ }
@@ -0,0 +1,50 @@
1
+ package com.margelo.nitro.rive
2
+
3
+ import androidx.annotation.Keep
4
+ import com.facebook.proguard.annotations.DoNotStrip
5
+ import kotlinx.coroutines.CoroutineScope
6
+ import kotlinx.coroutines.Dispatchers
7
+ import kotlinx.coroutines.Job
8
+ import kotlinx.coroutines.cancel
9
+ import kotlinx.coroutines.launch
10
+ import kotlinx.coroutines.flow.Flow
11
+ import kotlinx.coroutines.flow.drop
12
+
13
+ @Keep
14
+ @DoNotStrip
15
+ class BaseHybridViewModelPropertyImpl<T> : BaseHybridViewModelProperty<T> {
16
+ override var scope: CoroutineScope? = null
17
+ override var job: Job? = null
18
+ override val listeners = mutableListOf<(T) -> Unit>()
19
+
20
+ override fun ensureValueListenerJob(valueFlow: Flow<T>, drop: Int) {
21
+ if (scope == null) {
22
+ scope = CoroutineScope(Dispatchers.Default)
23
+ }
24
+ if (job == null) {
25
+ job = scope?.launch {
26
+ valueFlow.drop(drop).collect { value ->
27
+ onChanged(value)
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ override fun onChanged(value: T) {
34
+ listeners.forEach { listener ->
35
+ listener(value)
36
+ }
37
+ }
38
+
39
+ override fun removeListeners() {
40
+ listeners.clear()
41
+ job?.cancel()
42
+ scope?.cancel()
43
+ job = null
44
+ scope = null
45
+ }
46
+
47
+ override fun dispose() {
48
+ removeListeners()
49
+ }
50
+ }
@@ -0,0 +1,9 @@
1
+ package com.margelo.nitro.rive
2
+
3
+ object BytesDataLoader : DataLoader {
4
+ override suspend fun load(source: DataSource): ByteArray {
5
+ val bytesSource = source as? DataSource.Bytes
6
+ ?: throw DataLoaderException.InvalidSource
7
+ return bytesSource.data
8
+ }
9
+ }
@@ -0,0 +1,15 @@
1
+ package com.margelo.nitro.rive
2
+
3
+ sealed class DataLoaderException(message: String) : Exception(message) {
4
+ object InvalidSource : DataLoaderException("Invalid data source type for this loader")
5
+ class InvalidURL(url: String) : DataLoaderException("Invalid URL: $url")
6
+ class HttpError(val statusCode: Int, url: String) :
7
+ DataLoaderException("HTTP error $statusCode for $url")
8
+ class ResourceNotFound(resource: String) : DataLoaderException("Resource not found: $resource")
9
+ class FileNotFound(path: String) : DataLoaderException("File not found: $path")
10
+ object NoContext : DataLoaderException("No application context available")
11
+ }
12
+
13
+ interface DataLoader {
14
+ suspend fun load(source: DataSource): ByteArray
15
+ }
@@ -0,0 +1,38 @@
1
+ package com.margelo.nitro.rive
2
+
3
+ import com.margelo.nitro.core.ArrayBuffer
4
+ import java.net.URI
5
+
6
+ sealed class DataSource {
7
+ data class Http(val url: String) : DataSource()
8
+ data class File(val path: String) : DataSource()
9
+ data class Resource(val name: String) : DataSource()
10
+ class Bytes(val data: ByteArray) : DataSource() {
11
+ companion object {
12
+ fun from(buffer: ArrayBuffer): Bytes {
13
+ val byteBuffer = buffer.getBuffer(false)
14
+ val byteArray = ByteArray(byteBuffer.remaining())
15
+ byteBuffer.get(byteArray)
16
+ return Bytes(byteArray)
17
+ }
18
+ }
19
+ }
20
+
21
+ companion object {
22
+ fun fromURL(url: String): DataSource {
23
+ val uri = URI(url)
24
+ return if (uri.scheme == "file") File(uri.path) else Http(url)
25
+ }
26
+
27
+ fun resource(nameWithExtension: String): Resource {
28
+ return Resource(nameWithExtension.substringBeforeLast("."))
29
+ }
30
+ }
31
+
32
+ fun createLoader(): DataLoader = when (this) {
33
+ is Http -> HTTPDataLoader
34
+ is File -> FileDataLoader
35
+ is Resource -> ResourceDataLoader
36
+ is Bytes -> BytesDataLoader
37
+ }
38
+ }