@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,38 @@
1
+ //
2
+ // RCTSwiftLog.m
3
+ //
4
+ //
5
+ //
6
+
7
+ #import <React/RCTLog.h>
8
+
9
+ #import "RCTSwiftLog.h"
10
+
11
+ @implementation RCTSwiftLog
12
+
13
+ + (void)info:(NSString *)message file:(NSString *)file line:(NSUInteger)line
14
+ {
15
+ _RCTLogNativeInternal(RCTLogLevelInfo, file.UTF8String, (int)line, @"%@", message);
16
+ }
17
+
18
+ + (void)warn:(NSString *)message file:(NSString *)file line:(NSUInteger)line
19
+ {
20
+ _RCTLogNativeInternal(RCTLogLevelWarning, file.UTF8String, (int)line, @"%@", message);
21
+ }
22
+
23
+ + (void)error:(NSString *)message file:(NSString *)file line:(NSUInteger)line
24
+ {
25
+ _RCTLogNativeInternal(RCTLogLevelError, file.UTF8String, (int)line, @"%@", message);
26
+ }
27
+
28
+ + (void)log:(NSString *)message file:(NSString *)file line:(NSUInteger)line
29
+ {
30
+ _RCTLogNativeInternal(RCTLogLevelInfo, file.UTF8String, (int)line, @"%@", message);
31
+ }
32
+
33
+ + (void)trace:(NSString *)message file:(NSString *)file line:(NSUInteger)line
34
+ {
35
+ _RCTLogNativeInternal(RCTLogLevelTrace, file.UTF8String, (int)line, @"%@", message);
36
+ }
37
+
38
+ @end
@@ -0,0 +1,145 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ struct FileAndCache {
5
+ var file: RiveFile
6
+ var cache: [String: RiveFileAsset]
7
+ }
8
+
9
+ func createAssetFileError(_ assetName: String) -> NitroRiveError {
10
+ return NitroRiveError.fileNotFound(message: "Could not load Rive asset: \(assetName)")
11
+ }
12
+
13
+ final class ReferencedAssetLoader {
14
+ private func handleRiveError(error: Error) {
15
+ RCTLogError("\(error)")
16
+ }
17
+
18
+ private func processAssetBytes(
19
+ _ data: Data, asset: RiveFileAsset, factory: RiveFactory, completion: @escaping () -> Void
20
+ ) {
21
+ if data.isEmpty == true {
22
+ completion()
23
+ return
24
+ }
25
+ DispatchQueue.global(qos: .background).async {
26
+ switch asset {
27
+ case let imageAsset as RiveImageAsset:
28
+ let decodedImage = factory.decodeImage(data)
29
+ DispatchQueue.main.async {
30
+ imageAsset.renderImage(decodedImage)
31
+ completion()
32
+ }
33
+ case let fontAsset as RiveFontAsset:
34
+ let decodedFont = factory.decodeFont(data)
35
+ DispatchQueue.main.async {
36
+ fontAsset.font(decodedFont)
37
+ completion()
38
+ }
39
+ case let audioAsset as RiveAudioAsset:
40
+ guard let decodedAudio = factory.decodeAudio(data) else {
41
+ DispatchQueue.main.async {
42
+ completion()
43
+ }
44
+ return
45
+ }
46
+ DispatchQueue.main.async {
47
+ audioAsset.audio(decodedAudio)
48
+ completion()
49
+ }
50
+ default:
51
+ DispatchQueue.main.async {
52
+ completion()
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ private func handlePreloadedImage(
59
+ _ image: any HybridRiveImageSpec, asset: RiveFileAsset, completion: @escaping () -> Void
60
+ ) {
61
+ guard let imageAsset = asset as? RiveImageAsset,
62
+ let hybridImage = image as? HybridRiveImage
63
+ else {
64
+ completion()
65
+ return
66
+ }
67
+
68
+ imageAsset.renderImage(hybridImage.renderImage)
69
+ completion()
70
+ }
71
+
72
+ private func loadAssetInternal(
73
+ source: ResolvedReferencedAsset, asset: RiveFileAsset, factory: RiveFactory,
74
+ completion: @escaping () -> Void
75
+ ) {
76
+ if let preloadedImage = source.image {
77
+ handlePreloadedImage(preloadedImage, asset: asset, completion: completion)
78
+ return
79
+ }
80
+
81
+ let dataSource: DataSource
82
+ do {
83
+ guard let resolved = try DataSourceResolver.resolve(from: source) else {
84
+ completion()
85
+ return
86
+ }
87
+ dataSource = resolved
88
+ } catch {
89
+ handleRiveError(error: error)
90
+ completion()
91
+ return
92
+ }
93
+
94
+ Task {
95
+ do {
96
+ let data = try await dataSource.createLoader().load(from: dataSource)
97
+ await MainActor.run {
98
+ self.processAssetBytes(data, asset: asset, factory: factory, completion: completion)
99
+ }
100
+ } catch {
101
+ await MainActor.run {
102
+ self.handleRiveError(error: error)
103
+ completion()
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ func loadAsset(
110
+ source: ResolvedReferencedAsset, asset: RiveFileAsset, factory: RiveFactory,
111
+ completion: @escaping () -> Void
112
+ ) {
113
+ loadAssetInternal(source: source, asset: asset, factory: factory, completion: completion)
114
+ }
115
+
116
+ func createCustomLoader(
117
+ referencedAssets: ReferencedAssetsType?, cache: SendableRef<ReferencedAssetCache>,
118
+ factory factoryOut: SendableRef<RiveFactory?>,
119
+ fileRef: SendableRef<RiveFile?>
120
+ )
121
+ -> LoadAsset?
122
+ {
123
+ guard let referencedAssets = referencedAssets, let referencedAssets = referencedAssets.data
124
+ else {
125
+ return nil
126
+ }
127
+ return { (asset: RiveFileAsset, _: Data, factory: RiveFactory) -> Bool in
128
+ let assetByUniqueName = referencedAssets[asset.uniqueName()]
129
+ guard let assetData = assetByUniqueName ?? referencedAssets[asset.name()] else {
130
+ return false
131
+ }
132
+
133
+ cache.value[asset.uniqueName()] = asset
134
+ factoryOut.value = factory
135
+
136
+ self.loadAssetInternal(
137
+ source: assetData, asset: asset, factory: factory,
138
+ completion: {
139
+ withExtendedLifetime(fileRef) {}
140
+ })
141
+
142
+ return true
143
+ }
144
+ }
145
+ }
package/ios/Rive.swift ADDED
@@ -0,0 +1,5 @@
1
+ class Rive: HybridRiveSpec {
2
+ public func multiply(a: Double, b: Double) throws -> Double {
3
+ return a * b
4
+ }
5
+ }
@@ -0,0 +1,325 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+ import UIKit
4
+
5
+ protocol RiveViewSource: AnyObject {
6
+ func registerView(_ view: RiveReactNativeView)
7
+ func unregisterView(_ view: RiveReactNativeView)
8
+ }
9
+
10
+ enum BindData {
11
+ case none
12
+ case auto
13
+ case instance(RiveDataBindingViewModel.Instance)
14
+ case byName(String)
15
+ }
16
+
17
+ struct ViewConfiguration {
18
+ let artboardName: String?
19
+ let stateMachineName: String?
20
+ let autoPlay: Bool
21
+ let riveFile: RiveFile
22
+ let viewSource: RiveViewSource?
23
+ let alignment: RiveRuntime.RiveAlignment
24
+ let fit: RiveRuntime.RiveFit
25
+ let layoutScaleFactor: Double
26
+ let bindData: BindData
27
+ }
28
+
29
+ enum NitroRiveError: Error {
30
+ case instanceNotFound(message: String)
31
+ case fileNotFound(message: String)
32
+ }
33
+
34
+ class RiveReactNativeView: UIView, RiveStateMachineDelegate {
35
+ // MARK: Internal Properties
36
+ private var riveView: RiveView?
37
+ private var baseViewModel: RiveViewModel?
38
+ private var eventListeners: [(UnifiedRiveEvent) -> Void] = []
39
+ private var viewReadyContinuation: CheckedContinuation<Void, Never>?
40
+ private var isViewReady = false
41
+ private weak var viewSource: RiveViewSource?
42
+
43
+ // MARK: Public Config Properties
44
+ var autoPlay: Bool = true
45
+
46
+ // MARK: - Public Methods
47
+
48
+ func awaitViewReady() async -> Bool {
49
+ if !isViewReady {
50
+ await withCheckedContinuation { continuation in
51
+ viewReadyContinuation = continuation
52
+ }
53
+ return true
54
+ }
55
+ return true
56
+ }
57
+
58
+ func configure(_ config: ViewConfiguration, dataBindingChanged: Bool = false, reload: Bool = false, initialUpdate: Bool = false) throws {
59
+ if reload {
60
+ cleanup()
61
+ let model = RiveModel(riveFile: config.riveFile)
62
+ baseViewModel = RiveViewModel(model, stateMachineName: config.stateMachineName, autoPlay: config.autoPlay, artboardName: config.artboardName)
63
+ createViewFromViewModel()
64
+
65
+ if let viewSource = config.viewSource {
66
+ self.viewSource = viewSource
67
+ viewSource.registerView(self)
68
+ }
69
+ }
70
+
71
+ baseViewModel?.alignment = config.alignment
72
+ baseViewModel?.fit = config.fit
73
+ baseViewModel?.autoPlay = config.autoPlay
74
+ baseViewModel?.layoutScaleFactor = config.layoutScaleFactor
75
+
76
+ if !isViewReady {
77
+ isViewReady = true
78
+ viewReadyContinuation?.resume()
79
+ viewReadyContinuation = nil
80
+ }
81
+
82
+ if dataBindingChanged || initialUpdate {
83
+ try applyDataBinding(config.bindData)
84
+ }
85
+ }
86
+
87
+ func bindViewModelInstance(viewModelInstance: RiveDataBindingViewModel.Instance) {
88
+ baseViewModel?.riveModel?.stateMachine?.bind(viewModelInstance: viewModelInstance)
89
+ }
90
+
91
+ func getViewModelInstance() -> RiveDataBindingViewModel.Instance? {
92
+ return baseViewModel?.riveModel?.stateMachine?.viewModelInstance
93
+ }
94
+
95
+ func applyDataBinding(_ bindData: BindData) throws {
96
+ let stateMachine = baseViewModel?.riveModel?.stateMachine
97
+ let artboard = baseViewModel?.riveModel?.artboard
98
+
99
+ switch bindData {
100
+ case .none:
101
+ baseViewModel?.riveModel?.disableAutoBind()
102
+
103
+ case .auto:
104
+ baseViewModel?.riveModel?.enableAutoBind { _ in
105
+ // Auto-bind callback
106
+ }
107
+
108
+ case .byName(let name):
109
+ guard let artboard = artboard,
110
+ let riveFile = baseViewModel?.riveModel?.riveFile,
111
+ let viewModel = riveFile.defaultViewModel(for: artboard),
112
+ let instance = viewModel.createInstance(fromName: name)
113
+ else {
114
+ throw NitroRiveError.instanceNotFound(message: "\(name) instance not found")
115
+ }
116
+ stateMachine?.bind(viewModelInstance: instance)
117
+ // this should be added if we support only playing artboards on their own - https://github.com/rive-app/rive-nitro-react-native/pull/23#discussion_r2534698281
118
+ // artboard.bind(viewModelInstance: instance)
119
+
120
+ case .instance(let instance):
121
+ stateMachine?.bind(viewModelInstance: instance)
122
+ // this should be added if we support only playing artboards on their own - https://github.com/rive-app/rive-nitro-react-native/pull/23#discussion_r2534698281
123
+ // artboard?.bind(viewModelInstance: instance)
124
+ }
125
+ play()
126
+ }
127
+
128
+ @MainActor
129
+ func play() {
130
+ baseViewModel?.play()
131
+ }
132
+
133
+ @MainActor
134
+ func pause() {
135
+ baseViewModel?.pause()
136
+ }
137
+
138
+ @MainActor
139
+ func reset() {
140
+ baseViewModel?.reset()
141
+ }
142
+
143
+ func playIfNeeded() {
144
+ if let baseViewModel = baseViewModel, (baseViewModel.isPlaying == false) {
145
+ Task {
146
+ baseViewModel.play()
147
+ }
148
+ }
149
+ }
150
+
151
+ func refreshAfterAssetChange() {
152
+ if baseViewModel?.isPlaying == false {
153
+ play()
154
+ }
155
+ }
156
+
157
+ func addEventListener(_ onEvent: @escaping (UnifiedRiveEvent) -> Void) {
158
+ eventListeners.append(onEvent)
159
+ }
160
+
161
+ func removeEventListeners() {
162
+ eventListeners.removeAll()
163
+ }
164
+
165
+ func setNumberInputValue(name: String, value: Float, path: String?) throws {
166
+ try handleInput(name: name, path: path, type: .number) { (input: RiveRuntime.RiveSMINumber) in
167
+ input.setValue(value)
168
+ }
169
+ }
170
+
171
+ func getNumberInputValue(name: String, path: String?) throws -> Float {
172
+ try handleInput(name: name, path: path, type: .number) { (input: RiveRuntime.RiveSMINumber) in
173
+ input.value()
174
+ }
175
+ }
176
+
177
+ func setBooleanInputValue(name: String, value: Bool, path: String?) throws {
178
+ try handleInput(name: name, path: path, type: .boolean) { (input: RiveRuntime.RiveSMIBool) in
179
+ input.setValue(value)
180
+ }
181
+ }
182
+
183
+ func getBooleanInputValue(name: String, path: String?) throws -> Bool {
184
+ try handleInput(name: name, path: path, type: .boolean) { (input: RiveRuntime.RiveSMIBool) in
185
+ input.value()
186
+ }
187
+ }
188
+
189
+ func triggerInput(name: String, path: String?) throws {
190
+ try handleInput(name: name, path: path, type: .trigger) { (input: RiveRuntime.RiveSMITrigger) in
191
+ input.fire()
192
+ }
193
+ }
194
+
195
+ func setTextRunValue(name: String, value: String, path: String?) throws {
196
+ let textRun = try textRunOptionPath(name: name, path: path)
197
+ textRun.setText(value)
198
+ }
199
+
200
+ func getTextRunValue(name: String, path: String?) throws -> String {
201
+ let textRun = try textRunOptionPath(name: name, path: path)
202
+ return textRun.text()
203
+ }
204
+
205
+ private func textRunOptionPath(name: String, path: String?) throws -> RiveRuntime.RiveTextValueRun {
206
+ let textRun: RiveRuntime.RiveTextValueRun?
207
+ if let path = path {
208
+ textRun = baseViewModel?.riveModel?.artboard?.textRun(name, path: path)
209
+ } else {
210
+ textRun = baseViewModel?.riveModel?.artboard?.textRun(name)
211
+ }
212
+
213
+ guard let textRun = textRun else {
214
+ throw RuntimeError.error(
215
+ withMessage: "Could not find text run `\(name)`\(path.map { " at path `\($0)`" } ?? "")")
216
+ }
217
+
218
+ return textRun
219
+ }
220
+
221
+ // MARK: - Internal
222
+ deinit {
223
+ cleanup()
224
+ }
225
+
226
+ private func createViewFromViewModel() {
227
+ riveView = baseViewModel?.createRiveView()
228
+
229
+ if let riveView = riveView {
230
+ riveView.translatesAutoresizingMaskIntoConstraints = false
231
+ addSubview(riveView)
232
+ riveView.stateMachineDelegate = self
233
+ NSLayoutConstraint.activate([
234
+ riveView.leadingAnchor.constraint(equalTo: leadingAnchor),
235
+ riveView.trailingAnchor.constraint(equalTo: trailingAnchor),
236
+ riveView.topAnchor.constraint(equalTo: topAnchor),
237
+ riveView.bottomAnchor.constraint(equalTo: bottomAnchor)
238
+ ])
239
+ }
240
+ }
241
+
242
+ private func cleanup() {
243
+ riveView?.removeFromSuperview()
244
+ riveView?.stateMachineDelegate = nil
245
+ riveView = nil
246
+ baseViewModel = nil
247
+ if let viewSource = viewSource {
248
+ viewSource.unregisterView(self)
249
+ self.viewSource = nil
250
+ }
251
+ }
252
+
253
+ @objc func onRiveEventReceived(onRiveEvent riveEvent: RiveRuntime.RiveEvent) {
254
+ let eventType = UnifiedRiveEvent(
255
+ name: riveEvent.name(),
256
+ type: riveEvent is RiveRuntime.RiveOpenUrlEvent
257
+ ? RiveEventType.openurl : RiveEventType.general,
258
+ delay: Double(riveEvent.delay()),
259
+ properties: convertEventProperties(riveEvent.properties()),
260
+ url: (riveEvent as? RiveRuntime.RiveOpenUrlEvent)?.url(),
261
+ target: (riveEvent as? RiveRuntime.RiveOpenUrlEvent)?.target()
262
+ )
263
+
264
+ for listener in eventListeners {
265
+ listener(eventType)
266
+ }
267
+ }
268
+
269
+ private func convertEventProperties(_ properties: [String: Any]?) -> [String:
270
+ EventPropertiesOutput]? {
271
+ guard let properties = properties else { return nil }
272
+
273
+ var newMap: [String: EventPropertiesOutput] = [:]
274
+
275
+ for (key, value) in properties {
276
+ if let string = value as? String {
277
+ newMap[key] = .string(string)
278
+ } else if let number = value as? NSNumber {
279
+ newMap[key] = .number(number.doubleValue)
280
+ } else if let boolean = value as? Bool {
281
+ newMap[key] = .boolean(boolean)
282
+ }
283
+ }
284
+
285
+ return newMap
286
+ }
287
+
288
+ private enum InputType {
289
+ case number
290
+ case boolean
291
+ case trigger
292
+ }
293
+
294
+ private func handleInput<P: RiveRuntime.RiveSMIInput, T>(
295
+ name: String, path: String?, type: InputType, onSuccess: (P) throws -> T
296
+ ) throws -> T {
297
+ let input: P?
298
+ if let path = path {
299
+ switch type {
300
+ case .number:
301
+ input = baseViewModel?.riveModel?.artboard?.getNumber(name, path: path) as? P
302
+ case .boolean:
303
+ input = baseViewModel?.riveModel?.artboard?.getBool(name, path: path) as? P
304
+ case .trigger:
305
+ input = baseViewModel?.riveModel?.artboard?.getTrigger(name, path: path) as? P
306
+ }
307
+ } else {
308
+ switch type {
309
+ case .number:
310
+ input = baseViewModel?.numberInput(named: name) as? P
311
+ case .boolean:
312
+ input = baseViewModel?.boolInput(named: name) as? P
313
+ case .trigger:
314
+ input = baseViewModel?.riveModel?.stateMachine?.getTrigger(name) as? P
315
+ }
316
+ }
317
+
318
+ guard let input = input else {
319
+ throw RuntimeError.error(
320
+ withMessage: "Could not find input `\(name)`\(path.map { " at path `\($0)`" } ?? "")")
321
+ }
322
+
323
+ return try onSuccess(input)
324
+ }
325
+ }
@@ -0,0 +1,15 @@
1
+ final class Weak<T: AnyObject> {
2
+ weak var value: T?
3
+
4
+ init(_ value: T) {
5
+ self.value = value
6
+ }
7
+ }
8
+
9
+ final class SendableRef<T: Sendable>: @unchecked Sendable {
10
+ var value: T
11
+
12
+ init(_ value: T) {
13
+ self.value = value
14
+ }
15
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ export let Alignment = /*#__PURE__*/function (Alignment) {
4
+ /**
5
+ * Aligns content to the top-left corner of the container
6
+ */
7
+ Alignment["TopLeft"] = "topLeft";
8
+ /**
9
+ * Centers content horizontally at the top of the container
10
+ */
11
+ Alignment["TopCenter"] = "topCenter";
12
+ /**
13
+ * Aligns content to the top-right corner of the container
14
+ */
15
+ Alignment["TopRight"] = "topRight";
16
+ /**
17
+ * Centers content vertically on the left side of the container
18
+ */
19
+ Alignment["CenterLeft"] = "centerLeft";
20
+ /**
21
+ * Centers content both horizontally and vertically in the container
22
+ */
23
+ Alignment["Center"] = "center";
24
+ /**
25
+ * Centers content vertically on the right side of the container
26
+ */
27
+ Alignment["CenterRight"] = "centerRight";
28
+ /**
29
+ * Aligns content to the bottom-left corner of the container
30
+ */
31
+ Alignment["BottomLeft"] = "bottomLeft";
32
+ /**
33
+ * Centers content horizontally at the bottom of the container
34
+ */
35
+ Alignment["BottomCenter"] = "bottomCenter";
36
+ /**
37
+ * Aligns content to the bottom-right corner of the container
38
+ */
39
+ Alignment["BottomRight"] = "bottomRight";
40
+ return Alignment;
41
+ }({});
42
+ //# sourceMappingURL=Alignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Alignment"],"sourceRoot":"../../../src","sources":["core/Alignment.ts"],"mappings":";;AAAA,WAAYA,SAAS,0BAATA,SAAS;EACnB;AACF;AACA;EAHYA,SAAS;EAMnB;AACF;AACA;EARYA,SAAS;EAWnB;AACF;AACA;EAbYA,SAAS;EAgBnB;AACF;AACA;EAlBYA,SAAS;EAqBnB;AACF;AACA;EAvBYA,SAAS;EA0BnB;AACF;AACA;EA5BYA,SAAS;EA+BnB;AACF;AACA;EAjCYA,SAAS;EAoCnB;AACF;AACA;EAtCYA,SAAS;EAyCnB;AACF;AACA;EA3CYA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ export let RiveErrorType = /*#__PURE__*/function (RiveErrorType) {
4
+ RiveErrorType[RiveErrorType["Unknown"] = 0] = "Unknown";
5
+ RiveErrorType[RiveErrorType["FileNotFound"] = 1] = "FileNotFound";
6
+ RiveErrorType[RiveErrorType["MalformedFile"] = 2] = "MalformedFile";
7
+ RiveErrorType[RiveErrorType["IncorrectArtboardName"] = 3] = "IncorrectArtboardName";
8
+ RiveErrorType[RiveErrorType["IncorrectStateMachineName"] = 4] = "IncorrectStateMachineName";
9
+ RiveErrorType[RiveErrorType["ViewModelInstanceNotFound"] = 6] = "ViewModelInstanceNotFound";
10
+ RiveErrorType[RiveErrorType["IncorrectStateMachineInputName"] = 8] = "IncorrectStateMachineInputName";
11
+ return RiveErrorType;
12
+ }({});
13
+ //# sourceMappingURL=Errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RiveErrorType"],"sourceRoot":"../../../src","sources":["core/Errors.ts"],"mappings":";;AAAA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export let RiveEventType = /*#__PURE__*/function (RiveEventType) {
4
+ RiveEventType[RiveEventType["General"] = 0] = "General";
5
+ RiveEventType[RiveEventType["OpenUrl"] = 1] = "OpenUrl";
6
+ return RiveEventType;
7
+ }({});
8
+ //# sourceMappingURL=Events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RiveEventType"],"sourceRoot":"../../../src","sources":["core/Events.ts"],"mappings":";;AAAA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ export let Fit = /*#__PURE__*/function (Fit) {
4
+ /**
5
+ * Rive content will fill the available view. If the aspect ratios differ,
6
+ * then the Rive content will be stretched.
7
+ */
8
+ Fit[Fit["Fill"] = 0] = "Fill";
9
+ /**
10
+ * Rive content will be contained within the view, preserving the aspect
11
+ * ratio. If the ratios differ, then a portion of the view will be unused
12
+ */
13
+ Fit[Fit["Contain"] = 1] = "Contain";
14
+ /**
15
+ * Rive will cover the view, preserving the aspect ratio. If the Rive
16
+ * content has a different ratio to the view, then the Rive content will be
17
+ * clipped.
18
+ */
19
+ Fit[Fit["Cover"] = 2] = "Cover";
20
+ /**
21
+ * Rive content will fill to the width of the view. This may result in
22
+ * clipping or unfilled view space.
23
+ */
24
+ Fit[Fit["FitWidth"] = 3] = "FitWidth";
25
+ /**
26
+ * Rive content will fill to the height of the view. This may result in
27
+ * clipping or unfilled view space.
28
+ */
29
+ Fit[Fit["FitHeight"] = 4] = "FitHeight";
30
+ /**
31
+ * Rive content will render to the size of its artboard, which may result
32
+ * in clipping or unfilled view space.
33
+ */
34
+ Fit[Fit["None"] = 5] = "None";
35
+ /**
36
+ * Rive content is scaled down to the size of the view, preserving the
37
+ * aspect ratio. This is equivalent to Contain when the content is larger
38
+ * than the canvas. If the canvas is larger, then ScaleDown will not scale
39
+ * up.
40
+ */
41
+ Fit[Fit["ScaleDown"] = 6] = "ScaleDown";
42
+ /**
43
+ * Rive content will be resized automatically based on layout constraints of
44
+ * the artboard to match the underlying widget size.
45
+ *
46
+ * @see [Responsive Layout](https://rive.app/community/doc/layout/docBl81zd1GB#responsive-layout)
47
+ */
48
+ Fit[Fit["Layout"] = 7] = "Layout";
49
+ return Fit;
50
+ }({});
51
+ //# sourceMappingURL=Fit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Fit"],"sourceRoot":"../../../src","sources":["core/Fit.ts"],"mappings":";;AAAA,WAAYA,GAAG,0BAAHA,GAAG;EACb;AACF;AACA;AACA;EAJYA,GAAG,CAAHA,GAAG;EAOb;AACF;AACA;AACA;EAVYA,GAAG,CAAHA,GAAG;EAab;AACF;AACA;AACA;AACA;EAjBYA,GAAG,CAAHA,GAAG;EAoBb;AACF;AACA;AACA;EAvBYA,GAAG,CAAHA,GAAG;EA0Bb;AACF;AACA;AACA;EA7BYA,GAAG,CAAHA,GAAG;EAgCb;AACF;AACA;AACA;EAnCYA,GAAG,CAAHA,GAAG;EAsCb;AACF;AACA;AACA;AACA;AACA;EA3CYA,GAAG,CAAHA,GAAG;EA8Cb;AACF;AACA;AACA;AACA;AACA;EAnDYA,GAAG,CAAHA,GAAG;EAAA,OAAHA,GAAG;AAAA","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ import { getHostComponent } from 'react-native-nitro-modules';
4
+ import RiveViewConfig from '../../nitrogen/generated/shared/json/RiveViewConfig.json';
5
+ export const NitroRiveView = getHostComponent('RiveView', () => RiveViewConfig);
6
+ //# sourceMappingURL=NitroRiveViewComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getHostComponent","RiveViewConfig","NitroRiveView"],"sourceRoot":"../../../src","sources":["core/NitroRiveViewComponent.ts"],"mappings":";;AAAA,SACEA,gBAAgB,QAEX,4BAA4B;AAMnC,OAAOC,cAAc,MAAM,0DAA0D;AAErF,OAAO,MAAMC,aAAa,GAAGF,gBAAgB,CAG3C,UAAU,EAAE,MAAMC,cAAc,CAGjC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=ReferencedAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["core/ReferencedAssets.ts"],"mappings":"","ignoreList":[]}