@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,284 @@
1
+ import Foundation
2
+ import NitroModules
3
+ import RiveRuntime
4
+ import UIKit
5
+
6
+ private struct DefaultConfiguration {
7
+ static let autoPlay = true
8
+ static let alignment = RiveAlignment.center
9
+ static let fit = RiveFit.contain
10
+ static let layoutScaleFactor = RiveRuntime.RiveViewModel.layoutScaleFactorAutomatic
11
+ }
12
+
13
+ typealias HybridDataBindMode = Variant__any_HybridViewModelInstanceSpec__DataBindMode_DataBindByName
14
+
15
+ extension Optional
16
+ where Wrapped == HybridDataBindMode {
17
+ func toDataBingMode() throws -> BindData {
18
+ guard let value = self else {
19
+ return .auto
20
+ }
21
+
22
+ switch value {
23
+ case .first(let viewModelInstance):
24
+ if let instance = (viewModelInstance as? HybridViewModelInstance)?.viewModelInstance {
25
+ return .instance(instance)
26
+ } else {
27
+ throw RuntimeError.error(withMessage: "Invalid ViewModelInstance")
28
+ }
29
+ case .second(let mode):
30
+ switch mode {
31
+ case .auto:
32
+ return .auto
33
+ case .none:
34
+ return .none
35
+ }
36
+ case .third(let dataBindByName):
37
+ return .byName(dataBindByName.byName)
38
+ }
39
+ }
40
+
41
+ /// Check if two HybridDataBindMode values are semantically equal
42
+ func isEqual(to other: HybridDataBindMode?) -> Bool {
43
+ guard let lhs = self, let rhs = other else {
44
+ return self == nil && other == nil
45
+ }
46
+
47
+ switch (lhs, rhs) {
48
+ case (.first(let lhsInstance), .first(let rhsInstance)):
49
+ // Compare ViewModelInstance references
50
+ let lhsVMI = (lhsInstance as? HybridViewModelInstance)?.viewModelInstance
51
+ let rhsVMI = (rhsInstance as? HybridViewModelInstance)?.viewModelInstance
52
+ return lhsVMI === rhsVMI
53
+
54
+ case (.second(let lhsMode), .second(let rhsMode)):
55
+ // Compare DataBindMode enums
56
+ return lhsMode == rhsMode
57
+
58
+ case (.third(let lhsByName), .third(let rhsByName)):
59
+ // Compare byName strings
60
+ return lhsByName.byName == rhsByName.byName
61
+
62
+ default:
63
+ return false
64
+ }
65
+ }
66
+ }
67
+
68
+ class HybridRiveView: HybridRiveViewSpec {
69
+ func play() throws -> NitroModules.Promise<Void> {
70
+ return Promise.async {
71
+ try await self.getRiveView().play()
72
+ }
73
+ }
74
+
75
+ func pause() throws -> NitroModules.Promise<Void> {
76
+ return Promise.async {
77
+ try await self.getRiveView().pause()
78
+ }
79
+ }
80
+
81
+ func reset() throws -> NitroModules.Promise<Void> {
82
+ return Promise.async {
83
+ try await self.getRiveView().reset()
84
+ }
85
+ }
86
+
87
+ func playIfNeeded() {
88
+ try? self.getRiveView().playIfNeeded()
89
+ }
90
+
91
+ // MARK: View Props
92
+ var dataBind: HybridDataBindMode? {
93
+ didSet {
94
+ if !dataBind.isEqual(to: oldValue) {
95
+ dataBindingChanged = true
96
+ }
97
+ }
98
+ }
99
+
100
+ var artboardName: String? { didSet { needsReload = true } }
101
+ var stateMachineName: String? { didSet { needsReload = true } }
102
+ var autoPlay: Bool? { didSet { needsReload = true } }
103
+ var file: (any HybridRiveFileSpec) = HybridRiveFile() {
104
+ didSet { needsReload = true }
105
+ }
106
+ var alignment: Alignment?
107
+ var fit: Fit?
108
+ var layoutScaleFactor: Double?
109
+ var onError: (RiveError) -> Void = { _ in }
110
+
111
+ func awaitViewReady() throws -> Promise<Bool> {
112
+ return Promise.async { [self] in
113
+ return try await getRiveView().awaitViewReady()
114
+ }
115
+ }
116
+
117
+ func bindViewModelInstance(viewModelInstance: (any HybridViewModelInstanceSpec)) throws {
118
+ guard let viewModelInstance = (viewModelInstance as? HybridViewModelInstance)?.viewModelInstance
119
+ else { return }
120
+ try getRiveView().bindViewModelInstance(viewModelInstance: viewModelInstance)
121
+ }
122
+
123
+ func getViewModelInstance() throws -> (any HybridViewModelInstanceSpec)? {
124
+ guard let viewModelInstance = try getRiveView().getViewModelInstance() else { return nil }
125
+ return HybridViewModelInstance(viewModelInstance: viewModelInstance)
126
+ }
127
+
128
+ func onEventListener(onEvent: @escaping (UnifiedRiveEvent) -> Void) throws {
129
+ try getRiveView().addEventListener(onEvent)
130
+ }
131
+
132
+ func removeEventListeners() throws { try getRiveView().removeEventListeners() }
133
+
134
+ func setNumberInputValue(name: String, value: Double, path: String?) throws {
135
+ try getRiveView().setNumberInputValue(name: name, value: Float(value), path: path)
136
+ }
137
+
138
+ func getNumberInputValue(name: String, path: String?) throws -> Double {
139
+ return try Double(getRiveView().getNumberInputValue(name: name, path: path))
140
+ }
141
+
142
+ func setBooleanInputValue(name: String, value: Bool, path: String?) throws {
143
+ try getRiveView().setBooleanInputValue(name: name, value: value, path: path)
144
+ }
145
+
146
+ func getBooleanInputValue(name: String, path: String?) throws -> Bool {
147
+ return try getRiveView().getBooleanInputValue(name: name, path: path)
148
+ }
149
+
150
+ func triggerInput(name: String, path: String?) throws {
151
+ try getRiveView().triggerInput(name: name, path: path)
152
+ }
153
+
154
+ func setTextRunValue(name: String, value: String, path: String?) throws {
155
+ try getRiveView().setTextRunValue(name: name, value: value, path: path)
156
+ }
157
+
158
+ func getTextRunValue(name: String, path: String?) throws -> String {
159
+ return try getRiveView().getTextRunValue(name: name, path: path)
160
+ }
161
+
162
+ // MARK: Views
163
+ var view: UIView = RiveReactNativeView()
164
+ func getRiveView() throws -> RiveReactNativeView {
165
+ guard let riveView = view as? RiveReactNativeView else {
166
+ throw RuntimeError.error(withMessage: "RiveReactNativeView is null or not configured")
167
+ }
168
+ return riveView
169
+ }
170
+
171
+ // MARK: Update
172
+ func afterUpdate() {
173
+ logged(tag: "HybridRiveView", note: "afterUpdate") {
174
+ guard let hybridFile = file as? HybridRiveFile,
175
+ let file = hybridFile.riveFile
176
+ else { return }
177
+
178
+ let config = ViewConfiguration(
179
+ artboardName: artboardName,
180
+ stateMachineName: stateMachineName,
181
+ autoPlay: autoPlay ?? DefaultConfiguration.autoPlay,
182
+ riveFile: file,
183
+ viewSource: hybridFile,
184
+ alignment: convertAlignment(alignment) ?? DefaultConfiguration.alignment,
185
+ fit: convertFit(fit) ?? DefaultConfiguration.fit,
186
+ layoutScaleFactor: layoutScaleFactor ?? DefaultConfiguration.layoutScaleFactor,
187
+ bindData: try dataBind.toDataBingMode()
188
+ )
189
+
190
+ let riveView = try getRiveView()
191
+ try riveView.configure(
192
+ config, dataBindingChanged: dataBindingChanged, reload: needsReload,
193
+ initialUpdate: initialUpdate)
194
+ needsReload = false
195
+ dataBindingChanged = false
196
+ initialUpdate = false
197
+ }
198
+ }
199
+
200
+ // MARK: Internal State
201
+ private var needsReload = false
202
+ private var dataBindingChanged = false
203
+ private var initialUpdate = true
204
+
205
+ // MARK: Helpers
206
+ private func convertAlignment(_ alignment: Alignment?) -> RiveAlignment? {
207
+ guard let alignment = alignment else { return nil }
208
+
209
+ switch alignment {
210
+ case .topleft: return .topLeft
211
+ case .topcenter: return .topCenter
212
+ case .topright: return .topRight
213
+ case .centerleft: return .centerLeft
214
+ case .center: return .center
215
+ case .centerright: return .centerRight
216
+ case .bottomleft: return .bottomLeft
217
+ case .bottomcenter: return .bottomCenter
218
+ case .bottomright: return .bottomRight
219
+ }
220
+ }
221
+
222
+ private func convertFit(_ fit: Fit?) -> RiveFit? {
223
+ guard let fit = fit else { return nil }
224
+
225
+ switch fit {
226
+ case .fill: return .fill
227
+ case .contain: return .contain
228
+ case .cover: return .cover
229
+ case .fitwidth: return .fitWidth
230
+ case .fitheight: return .fitHeight
231
+ case .none: return .noFit
232
+ case .scaledown: return .scaleDown
233
+ case .layout: return .layout
234
+ }
235
+ }
236
+ }
237
+
238
+ extension HybridRiveView {
239
+ func logged(tag: String, note: String? = nil, _ fn: () throws -> Void) {
240
+ do {
241
+ return try fn()
242
+ } catch let e {
243
+ let (errorType, errorDescription) = detectErrorType(e)
244
+ let noteString = note.map { " \($0)" } ?? ""
245
+ let errorMessage = "[RIVE] \(tag)\(noteString) \(errorDescription)"
246
+
247
+ let riveError = RiveError(
248
+ message: errorMessage,
249
+ type: errorType
250
+ )
251
+ onError(riveError)
252
+ }
253
+ }
254
+
255
+ private func detectErrorType(_ error: Error) -> (RiveErrorType, String) {
256
+ switch error {
257
+ case NitroRiveError.instanceNotFound(let message):
258
+ return (.viewmodelinstancenotfound, message)
259
+ case NitroRiveError.fileNotFound(let message):
260
+ return (.filenotfound, message)
261
+ default:
262
+ break
263
+ }
264
+
265
+ let nsError = error as NSError
266
+ let message = nsError.localizedDescription
267
+
268
+ // RiveErrorCode from RiveRuntime
269
+ switch nsError.code {
270
+ case RiveErrorCode.noArtboardFound.rawValue:
271
+ return (.incorrectartboardname, message)
272
+ case RiveErrorCode.noStateMachineFound.rawValue:
273
+ return (.incorrectstatemachinename, message)
274
+ case RiveErrorCode.noAnimationFound.rawValue:
275
+ return (.unknown, message)
276
+ case RiveErrorCode.malformedFile.rawValue:
277
+ return (.malformedfile, message)
278
+ case RiveErrorCode.noStateMachineInputFound.rawValue:
279
+ return (.incorrectstatemachineinputname, message)
280
+ default:
281
+ return (.unknown, message)
282
+ }
283
+ }
284
+ }
@@ -0,0 +1,46 @@
1
+ import RiveRuntime
2
+
3
+ class HybridViewModel: HybridViewModelSpec {
4
+ let viewModel: RiveDataBindingViewModel?
5
+
6
+ init(viewModel: RiveDataBindingViewModel) {
7
+ self.viewModel = viewModel
8
+ }
9
+
10
+ override init() {
11
+ self.viewModel = nil
12
+ super.init()
13
+ }
14
+
15
+ var propertyCount: Double { Double(viewModel?.propertyCount ?? 0) }
16
+
17
+ var instanceCount: Double { Double(viewModel?.instanceCount ?? 0) }
18
+
19
+ var modelName: String { viewModel?.name ?? "" }
20
+
21
+ func createInstanceByIndex(index: Double) throws -> (any HybridViewModelInstanceSpec)? {
22
+ guard let viewModel = viewModel,
23
+ let vmi = viewModel.createInstance(fromIndex: UInt(index)) else { return nil }
24
+ return HybridViewModelInstance(viewModelInstance: vmi)
25
+ }
26
+
27
+ func createInstanceByName(name: String) throws -> (any HybridViewModelInstanceSpec)? {
28
+ guard let viewModel = viewModel,
29
+ let vmi = viewModel.createInstance(fromName: name) else { return nil }
30
+ return HybridViewModelInstance(viewModelInstance: vmi)
31
+ }
32
+
33
+ func createDefaultInstance() throws -> (any HybridViewModelInstanceSpec)? {
34
+ guard let viewModel = viewModel,
35
+ let vmi = viewModel.createDefaultInstance() else {
36
+ return nil
37
+ }
38
+ return HybridViewModelInstance(viewModelInstance: vmi)
39
+ }
40
+
41
+ func createInstance() throws -> (any HybridViewModelInstanceSpec)? {
42
+ guard let viewModel = viewModel,
43
+ let vmi = viewModel.createInstance() else { return nil }
44
+ return HybridViewModelInstance(viewModelInstance: vmi)
45
+ }
46
+ }
@@ -0,0 +1,29 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridViewModelBooleanProperty: HybridViewModelBooleanPropertySpec, ValuedPropertyProtocol {
5
+ var property: BooleanPropertyType!
6
+ lazy var helper = PropertyListenerHelper(property: property!)
7
+
8
+ init(property: BooleanPropertyType) {
9
+ self.property = property
10
+ super.init()
11
+ }
12
+
13
+ /// ⚠️ DO NOT REMOVE
14
+ /// Nitro requires a parameterless initializer for JS bridging.
15
+ /// This is invoked automatically during hybrid module construction.
16
+ /// Internally we always use `init(property:)`
17
+ override init() {
18
+ super.init()
19
+ }
20
+
21
+ var value: Bool {
22
+ get {
23
+ return property.value
24
+ }
25
+ set {
26
+ property.value = newValue
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,63 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridViewModelColorProperty: HybridViewModelColorPropertySpec, ValuedPropertyProtocol {
5
+ var property: ColorPropertyType!
6
+ lazy var helper = PropertyListenerHelper(property: property!)
7
+
8
+ init(property: ColorPropertyType) {
9
+ self.property = property
10
+ super.init()
11
+ }
12
+
13
+ /// ⚠️ DO NOT REMOVE
14
+ /// Nitro requires a parameterless initializer for JS bridging.
15
+ /// This is invoked automatically during hybrid module construction.
16
+ /// Internally we always use `init(property:)`
17
+ override init() {
18
+ super.init()
19
+ }
20
+
21
+ var value: Double {
22
+ get {
23
+ return property.value.toHexDouble()
24
+ }
25
+ set {
26
+ property.value = UIColor(argb: Int(newValue))
27
+ }
28
+ }
29
+
30
+ // Custom addListener because we need to convert UIColor → Double
31
+ func addListener(onChanged: @escaping (Double) -> Void) throws {
32
+ helper.addListener { (color: UIColor) in
33
+ onChanged(color.toHexDouble())
34
+ }
35
+ }
36
+ }
37
+
38
+ extension UIColor {
39
+ convenience init(argb: Int) {
40
+ let alpha = CGFloat((argb >> 24) & 0xFF) / 255.0
41
+ let red = CGFloat((argb >> 16) & 0xFF) / 255.0
42
+ let green = CGFloat((argb >> 8) & 0xFF) / 255.0
43
+ let blue = CGFloat(argb & 0xFF) / 255.0
44
+
45
+ self.init(red: red, green: green, blue: blue, alpha: alpha)
46
+ }
47
+
48
+ func toHexDouble() -> Double {
49
+ var red: CGFloat = 0
50
+ var green: CGFloat = 0
51
+ var blue: CGFloat = 0
52
+ var alpha: CGFloat = 0
53
+
54
+ self.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
55
+
56
+ let r = UInt32(red * 255)
57
+ let g = UInt32(green * 255)
58
+ let b = UInt32(blue * 255)
59
+ let a = UInt32(alpha * 255)
60
+
61
+ return Double((a << 24) | (r << 16) | (g << 8) | b)
62
+ }
63
+ }
@@ -0,0 +1,29 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridViewModelEnumProperty: HybridViewModelEnumPropertySpec, ValuedPropertyProtocol {
5
+ var property: EnumPropertyType!
6
+ lazy var helper = PropertyListenerHelper(property: property!)
7
+
8
+ init(property: EnumPropertyType) {
9
+ self.property = property
10
+ super.init()
11
+ }
12
+
13
+ /// ⚠️ DO NOT REMOVE
14
+ /// Nitro requires a parameterless initializer for JS bridging.
15
+ /// This is invoked automatically during hybrid module construction.
16
+ /// Internally we always use `init(property:)`
17
+ override init() {
18
+ super.init()
19
+ }
20
+
21
+ var value: String {
22
+ get {
23
+ return property.value
24
+ }
25
+ set {
26
+ property.value = newValue
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,31 @@
1
+ import RiveRuntime
2
+
3
+ class HybridViewModelImageProperty: HybridViewModelImagePropertySpec, ValuedPropertyProtocol {
4
+ func addListener(onChanged: @escaping () -> Void) throws {
5
+ try addListener(onChanged: { _ in onChanged() })
6
+ }
7
+
8
+ var property: ImagePropertyType!
9
+ lazy var helper = PropertyListenerHelper(property: property!)
10
+
11
+ init(property: ImagePropertyType) {
12
+ self.property = property
13
+ super.init()
14
+ }
15
+
16
+ /// ⚠️ DO NOT REMOVE
17
+ /// Nitro requires a parameterless initializer for JS bridging.
18
+ /// This is invoked automatically during hybrid module construction.
19
+ /// Internally we always use `init(property:)`
20
+ override init() {
21
+ super.init()
22
+ }
23
+
24
+ func set(image: HybridRiveImageSpec?) throws {
25
+ if let hybridImage = image as? HybridRiveImage {
26
+ property.setValue(hybridImage.renderImage)
27
+ } else {
28
+ property.setValue(nil)
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,51 @@
1
+ import RiveRuntime
2
+
3
+ class HybridViewModelInstance: HybridViewModelInstanceSpec {
4
+ let viewModelInstance: RiveDataBindingViewModel.Instance?
5
+
6
+ init(viewModelInstance: RiveDataBindingViewModel.Instance) {
7
+ self.viewModelInstance = viewModelInstance
8
+ }
9
+
10
+ override init() {
11
+ self.viewModelInstance = nil
12
+ super.init()
13
+ }
14
+
15
+ var instanceName: String { viewModelInstance?.name ?? "" }
16
+
17
+ func numberProperty(path: String) throws -> (any HybridViewModelNumberPropertySpec)? {
18
+ guard let property = viewModelInstance?.numberProperty(fromPath: path) else { return nil }
19
+ return HybridViewModelNumberProperty(property: property)
20
+ }
21
+
22
+ func stringProperty(path: String) throws -> (any HybridViewModelStringPropertySpec)? {
23
+ guard let property = viewModelInstance?.stringProperty(fromPath: path) else { return nil }
24
+ return HybridViewModelStringProperty(property: property)
25
+ }
26
+
27
+ func booleanProperty(path: String) throws -> (any HybridViewModelBooleanPropertySpec)? {
28
+ guard let property = viewModelInstance?.booleanProperty(fromPath: path) else { return nil }
29
+ return HybridViewModelBooleanProperty(property: property)
30
+ }
31
+
32
+ func colorProperty(path: String) throws -> (any HybridViewModelColorPropertySpec)? {
33
+ guard let property = viewModelInstance?.colorProperty(fromPath: path) else { return nil }
34
+ return HybridViewModelColorProperty(property: property)
35
+ }
36
+
37
+ func enumProperty(path: String) throws -> (any HybridViewModelEnumPropertySpec)? {
38
+ guard let property = viewModelInstance?.enumProperty(fromPath: path) else { return nil }
39
+ return HybridViewModelEnumProperty(property: property)
40
+ }
41
+
42
+ func triggerProperty(path: String) throws -> (any HybridViewModelTriggerPropertySpec)? {
43
+ guard let property = viewModelInstance?.triggerProperty(fromPath: path) else { return nil }
44
+ return HybridViewModelTriggerProperty(property: property)
45
+ }
46
+
47
+ func imageProperty(path: String) throws -> (any HybridViewModelImagePropertySpec)? {
48
+ guard let property = viewModelInstance?.imageProperty(fromPath: path) else { return nil }
49
+ return HybridViewModelImageProperty(property: property)
50
+ }
51
+ }
@@ -0,0 +1,35 @@
1
+ import RiveRuntime
2
+
3
+ class HybridViewModelNumberProperty: HybridViewModelNumberPropertySpec, ValuedPropertyProtocol {
4
+ var property: NumberPropertyType!
5
+ lazy var helper = PropertyListenerHelper(property: property!)
6
+
7
+ init(property: NumberPropertyType) {
8
+ self.property = property
9
+ super.init()
10
+ }
11
+
12
+ /// ⚠️ DO NOT REMOVE
13
+ /// Nitro requires a parameterless initializer for JS bridging.
14
+ /// This is invoked automatically during hybrid module construction.
15
+ /// Internally we always use `init(property:)`
16
+ override init() {
17
+ super.init()
18
+ }
19
+
20
+ var value: Double {
21
+ get {
22
+ return Double(property.value)
23
+ }
24
+ set {
25
+ property.value = Float(newValue)
26
+ }
27
+ }
28
+
29
+ // Custom addListener needed because ListenerValueType (Float) != ValueType (Double)
30
+ func addListener(onChanged: @escaping (Double) -> Void) throws {
31
+ helper.addListener { (value: Float) in
32
+ onChanged(Double(value))
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,29 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridViewModelStringProperty: HybridViewModelStringPropertySpec, ValuedPropertyProtocol {
5
+ var property: StringPropertyType!
6
+ lazy var helper = PropertyListenerHelper(property: property!)
7
+
8
+ init(property: StringPropertyType) {
9
+ self.property = property
10
+ super.init()
11
+ }
12
+
13
+ /// ⚠️ DO NOT REMOVE
14
+ /// Nitro requires a parameterless initializer for JS bridging.
15
+ /// This is invoked automatically during hybrid module construction.
16
+ /// Internally we always use `init(property:)`
17
+ override init() {
18
+ super.init()
19
+ }
20
+
21
+ var value: String {
22
+ get {
23
+ return property.value
24
+ }
25
+ set {
26
+ property.value = newValue
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,30 @@
1
+ import NitroModules
2
+ import RiveRuntime
3
+
4
+ class HybridViewModelTriggerProperty: HybridViewModelTriggerPropertySpec, ValuedPropertyProtocol {
5
+ internal var property: TriggerPropertyType!
6
+ lazy var helper = PropertyListenerHelper(property: property!)
7
+
8
+ private var listenerIds: [UUID] = []
9
+
10
+ func addListener(onChanged: @escaping () -> Void) throws {
11
+ try addListener(onChanged: { _ in onChanged() })
12
+ }
13
+
14
+ init(property: TriggerPropertyType) {
15
+ self.property = property
16
+ super.init()
17
+ }
18
+
19
+ /// ⚠️ DO NOT REMOVE
20
+ /// Nitro requires a parameterless initializer for JS bridging.
21
+ /// This is invoked automatically during hybrid module construction.
22
+ /// Internally we always use `init(property:)`
23
+ override init() {
24
+ super.init()
25
+ }
26
+
27
+ func trigger() {
28
+ property.trigger()
29
+ }
30
+ }
@@ -0,0 +1,29 @@
1
+ func RCTLogError(_ message: String, _ file: String=#file, _ line: UInt=#line) {
2
+ DispatchQueue.main.async {
3
+ RCTSwiftLog.error(message, file: file, line: line)
4
+ }
5
+ }
6
+
7
+ func RCTLogWarn(_ message: String, _ file: String=#file, _ line: UInt=#line) {
8
+ DispatchQueue.main.async {
9
+ RCTSwiftLog.warn(message, file: file, line: line)
10
+ }
11
+ }
12
+
13
+ func RCTLogInfo(_ message: String, _ file: String=#file, _ line: UInt=#line) {
14
+ DispatchQueue.main.async {
15
+ RCTSwiftLog.info(message, file: file, line: line)
16
+ }
17
+ }
18
+
19
+ func RCTLog(_ message: String, _ file: String=#file, _ line: UInt=#line) {
20
+ DispatchQueue.main.async {
21
+ RCTSwiftLog.log(message, file: file, line: line)
22
+ }
23
+ }
24
+
25
+ func RCTLogTrace(_ message: String, _ file: String=#file, _ line: UInt=#line) {
26
+ DispatchQueue.main.async {
27
+ RCTSwiftLog.trace(message, file: file, line: line)
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ @interface RCTSwiftLog : NSObject
4
+
5
+ + (void)error:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line;
6
+ + (void)warn:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line;
7
+ + (void)info:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line;
8
+ + (void)log:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line;
9
+ + (void)trace:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line;
10
+
11
+ @end