@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.
- package/LICENSE +20 -0
- package/README.md +257 -0
- package/RNRive.podspec +53 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +155 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +13 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/rive/BaseHybridViewModelProperty.kt +20 -0
- package/android/src/main/java/com/margelo/nitro/rive/BaseHybridViewModelPropertyImpl.kt +50 -0
- package/android/src/main/java/com/margelo/nitro/rive/BytesDataLoader.kt +9 -0
- package/android/src/main/java/com/margelo/nitro/rive/DataLoader.kt +15 -0
- package/android/src/main/java/com/margelo/nitro/rive/DataSource.kt +38 -0
- package/android/src/main/java/com/margelo/nitro/rive/DataSourceResolver.kt +36 -0
- package/android/src/main/java/com/margelo/nitro/rive/EventPropertiesOutputExtensions.kt +12 -0
- package/android/src/main/java/com/margelo/nitro/rive/FileDataLoader.kt +21 -0
- package/android/src/main/java/com/margelo/nitro/rive/HTTPDataLoader.kt +37 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt +98 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridRiveFileFactory.kt +123 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridRiveImage.kt +15 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridRiveImageFactory.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridRiveView.kt +279 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt +53 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelImageProperty.kt +21 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt +76 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelTriggerProperty.kt +21 -0
- package/android/src/main/java/com/margelo/nitro/rive/ReferencedAssetLoader.kt +108 -0
- package/android/src/main/java/com/margelo/nitro/rive/ResourceDataLoader.kt +44 -0
- package/android/src/main/java/com/margelo/nitro/rive/Rive.kt +12 -0
- package/android/src/main/java/com/rive/RivePackage.kt +29 -0
- package/android/src/main/java/com/rive/RiveReactNativeView.kt +433 -0
- package/android/src/main/java/com/rive/RiveViewManager.kt +11 -0
- package/ios/BaseHybridViewModelProperty.swift +118 -0
- package/ios/BundleDataLoader.swift +25 -0
- package/ios/BytesDataLoader.swift +10 -0
- package/ios/DataLoader.swift +28 -0
- package/ios/DataSource.swift +43 -0
- package/ios/DataSourceResolver.swift +55 -0
- package/ios/EventPropertiesOutputExtensions.swift +15 -0
- package/ios/FileDataLoader.swift +24 -0
- package/ios/HTTPDataLoader.swift +31 -0
- package/ios/HybridRiveFile.swift +113 -0
- package/ios/HybridRiveFileFactory.swift +163 -0
- package/ios/HybridRiveImage.swift +17 -0
- package/ios/HybridRiveImageFactory.swift +26 -0
- package/ios/HybridRiveView.swift +284 -0
- package/ios/HybridViewModel.swift +46 -0
- package/ios/HybridViewModelBooleanProperty.swift +29 -0
- package/ios/HybridViewModelColorProperty.swift +63 -0
- package/ios/HybridViewModelEnumProperty.swift +29 -0
- package/ios/HybridViewModelImageProperty.swift +31 -0
- package/ios/HybridViewModelInstance.swift +51 -0
- package/ios/HybridViewModelNumberProperty.swift +35 -0
- package/ios/HybridViewModelStringProperty.swift +29 -0
- package/ios/HybridViewModelTriggerProperty.swift +30 -0
- package/ios/RCTLog.swift +29 -0
- package/ios/RCTSwiftLog.h +11 -0
- package/ios/RCTSwiftLog.m +38 -0
- package/ios/ReferencedAssetLoader.swift +145 -0
- package/ios/Rive.swift +5 -0
- package/ios/RiveReactNativeView.swift +325 -0
- package/ios/Utils.swift +15 -0
- package/lib/module/core/Alignment.js +42 -0
- package/lib/module/core/Alignment.js.map +1 -0
- package/lib/module/core/Errors.js +13 -0
- package/lib/module/core/Errors.js.map +1 -0
- package/lib/module/core/Events.js +8 -0
- package/lib/module/core/Events.js.map +1 -0
- package/lib/module/core/Fit.js +51 -0
- package/lib/module/core/Fit.js.map +1 -0
- package/lib/module/core/NitroRiveViewComponent.js +6 -0
- package/lib/module/core/NitroRiveViewComponent.js.map +1 -0
- package/lib/module/core/ReferencedAssets.js +4 -0
- package/lib/module/core/ReferencedAssets.js.map +1 -0
- package/lib/module/core/RiveColor.js +90 -0
- package/lib/module/core/RiveColor.js.map +1 -0
- package/lib/module/core/RiveFile.js +64 -0
- package/lib/module/core/RiveFile.js.map +1 -0
- package/lib/module/core/RiveImages.js +5 -0
- package/lib/module/core/RiveImages.js.map +1 -0
- package/lib/module/core/RiveView.js +51 -0
- package/lib/module/core/RiveView.js.map +1 -0
- package/lib/module/core/callDispose.js +15 -0
- package/lib/module/core/callDispose.js.map +1 -0
- package/lib/module/hooks/useRive.js +51 -0
- package/lib/module/hooks/useRive.js.map +1 -0
- package/lib/module/hooks/useRiveBoolean.js +23 -0
- package/lib/module/hooks/useRiveBoolean.js.map +1 -0
- package/lib/module/hooks/useRiveColor.js +30 -0
- package/lib/module/hooks/useRiveColor.js.map +1 -0
- package/lib/module/hooks/useRiveEnum.js +23 -0
- package/lib/module/hooks/useRiveEnum.js.map +1 -0
- package/lib/module/hooks/useRiveFile.js +128 -0
- package/lib/module/hooks/useRiveFile.js.map +1 -0
- package/lib/module/hooks/useRiveNumber.js +23 -0
- package/lib/module/hooks/useRiveNumber.js.map +1 -0
- package/lib/module/hooks/useRiveProperty.js +79 -0
- package/lib/module/hooks/useRiveProperty.js.map +1 -0
- package/lib/module/hooks/useRiveString.js +23 -0
- package/lib/module/hooks/useRiveString.js.map +1 -0
- package/lib/module/hooks/useRiveTrigger.js +33 -0
- package/lib/module/hooks/useRiveTrigger.js.map +1 -0
- package/lib/module/index.js +28 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/specs/ArtboardBy.js +27 -0
- package/lib/module/specs/ArtboardBy.js.map +1 -0
- package/lib/module/specs/Rive.nitro.js +4 -0
- package/lib/module/specs/Rive.nitro.js.map +1 -0
- package/lib/module/specs/RiveFile.nitro.js +4 -0
- package/lib/module/specs/RiveFile.nitro.js.map +1 -0
- package/lib/module/specs/RiveImage.nitro.js +4 -0
- package/lib/module/specs/RiveImage.nitro.js.map +1 -0
- package/lib/module/specs/RiveView.nitro.js +23 -0
- package/lib/module/specs/RiveView.nitro.js.map +1 -0
- package/lib/module/specs/ViewModel.nitro.js +4 -0
- package/lib/module/specs/ViewModel.nitro.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/nitrogen/generated/shared/json/RiveViewConfig.json +18 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/core/Alignment.d.ts +39 -0
- package/lib/typescript/src/core/Alignment.d.ts.map +1 -0
- package/lib/typescript/src/core/Errors.d.ts +14 -0
- package/lib/typescript/src/core/Errors.d.ts.map +1 -0
- package/lib/typescript/src/core/Events.d.ts +26 -0
- package/lib/typescript/src/core/Events.d.ts.map +1 -0
- package/lib/typescript/src/core/Fit.d.ts +48 -0
- package/lib/typescript/src/core/Fit.d.ts.map +1 -0
- package/lib/typescript/src/core/NitroRiveViewComponent.d.ts +4 -0
- package/lib/typescript/src/core/NitroRiveViewComponent.d.ts.map +1 -0
- package/lib/typescript/src/core/ReferencedAssets.d.ts +15 -0
- package/lib/typescript/src/core/ReferencedAssets.d.ts.map +1 -0
- package/lib/typescript/src/core/RiveColor.d.ts +53 -0
- package/lib/typescript/src/core/RiveColor.d.ts.map +1 -0
- package/lib/typescript/src/core/RiveFile.d.ts +62 -0
- package/lib/typescript/src/core/RiveFile.d.ts.map +1 -0
- package/lib/typescript/src/core/RiveImages.d.ts +3 -0
- package/lib/typescript/src/core/RiveImages.d.ts.map +1 -0
- package/lib/typescript/src/core/RiveView.d.ts +38 -0
- package/lib/typescript/src/core/RiveView.d.ts.map +1 -0
- package/lib/typescript/src/core/callDispose.d.ts +7 -0
- package/lib/typescript/src/core/callDispose.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRive.d.ts +9 -0
- package/lib/typescript/src/hooks/useRive.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveBoolean.d.ts +11 -0
- package/lib/typescript/src/hooks/useRiveBoolean.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveColor.d.ts +14 -0
- package/lib/typescript/src/hooks/useRiveColor.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveEnum.d.ts +11 -0
- package/lib/typescript/src/hooks/useRiveEnum.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveFile.d.ts +24 -0
- package/lib/typescript/src/hooks/useRiveFile.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveNumber.d.ts +11 -0
- package/lib/typescript/src/hooks/useRiveNumber.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveProperty.d.ts +22 -0
- package/lib/typescript/src/hooks/useRiveProperty.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveString.d.ts +11 -0
- package/lib/typescript/src/hooks/useRiveString.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRiveTrigger.d.ts +11 -0
- package/lib/typescript/src/hooks/useRiveTrigger.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +32 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/specs/ArtboardBy.d.ts +20 -0
- package/lib/typescript/src/specs/ArtboardBy.d.ts.map +1 -0
- package/lib/typescript/src/specs/Rive.nitro.d.ts +8 -0
- package/lib/typescript/src/specs/Rive.nitro.d.ts.map +1 -0
- package/lib/typescript/src/specs/RiveFile.nitro.d.ts +42 -0
- package/lib/typescript/src/specs/RiveFile.nitro.d.ts.map +1 -0
- package/lib/typescript/src/specs/RiveImage.nitro.d.ts +43 -0
- package/lib/typescript/src/specs/RiveImage.nitro.d.ts.map +1 -0
- package/lib/typescript/src/specs/RiveView.nitro.d.ts +139 -0
- package/lib/typescript/src/specs/RiveView.nitro.d.ts.map +1 -0
- package/lib/typescript/src/specs/ViewModel.nitro.d.ts +103 -0
- package/lib/typescript/src/specs/ViewModel.nitro.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +33 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/nitrogen/generated/android/c++/JAlignment.hpp +80 -0
- package/nitrogen/generated/android/c++/JArtboardBy.hpp +68 -0
- package/nitrogen/generated/android/c++/JArtboardByTypes.hpp +59 -0
- package/nitrogen/generated/android/c++/JDataBindByName.hpp +57 -0
- package/nitrogen/generated/android/c++/JDataBindMode.hpp +59 -0
- package/nitrogen/generated/android/c++/JEventPropertiesOutput.cpp +30 -0
- package/nitrogen/generated/android/c++/JEventPropertiesOutput.hpp +83 -0
- package/nitrogen/generated/android/c++/JFit.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_RiveError.hpp +80 -0
- package/nitrogen/generated/android/c++/JFunc_void_UnifiedRiveEvent.hpp +84 -0
- package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +134 -0
- package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +96 -0
- package/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +104 -0
- package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +67 -0
- package/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +52 -0
- package/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridRiveSpec.cpp +52 -0
- package/nitrogen/generated/android/c++/JHybridRiveSpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +299 -0
- package/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +97 -0
- package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +65 -0
- package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +65 -0
- package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +66 -0
- package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +66 -0
- package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +115 -0
- package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +71 -0
- package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +65 -0
- package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +48 -0
- package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +65 -0
- package/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +86 -0
- package/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +70 -0
- package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +66 -0
- package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +61 -0
- package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JReferencedAssetsType.hpp +77 -0
- package/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +77 -0
- package/nitrogen/generated/android/c++/JRiveError.hpp +63 -0
- package/nitrogen/generated/android/c++/JRiveErrorType.hpp +74 -0
- package/nitrogen/generated/android/c++/JRiveEventType.hpp +59 -0
- package/nitrogen/generated/android/c++/JUnifiedRiveEvent.hpp +96 -0
- package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +30 -0
- package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +90 -0
- package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +88 -0
- package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +49 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Alignment.kt +28 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ArtboardBy.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ArtboardByTypes.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/DataBindByName.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/DataBindMode.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +72 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Fit.kt +27 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_RiveError.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_UnifiedRiveEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_bool.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Func_void_std__string.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +67 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt +57 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +183 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +83 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +55 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +79 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ReferencedAssetsType.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/ResolvedReferencedAsset.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveError.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveErrorType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/RiveEventType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/UnifiedRiveEvent.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +72 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/riveOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewStateUpdater.kt +23 -0
- package/nitrogen/generated/android/rive+autolinking.cmake +115 -0
- package/nitrogen/generated/android/rive+autolinking.gradle +27 -0
- package/nitrogen/generated/android/riveOnLoad.cpp +192 -0
- package/nitrogen/generated/android/riveOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/RNRive+autolinking.rb +60 -0
- package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp +360 -0
- package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +1180 -0
- package/nitrogen/generated/ios/RNRive-Swift-Cxx-Umbrella.hpp +161 -0
- package/nitrogen/generated/ios/RNRiveAutolinking.mm +137 -0
- package/nitrogen/generated/ios/RNRiveAutolinking.swift +220 -0
- package/nitrogen/generated/ios/c++/HybridRiveFileFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveFileFactorySpecSwift.hpp +119 -0
- package/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp +121 -0
- package/nitrogen/generated/ios/c++/HybridRiveImageFactorySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveImageFactorySpecSwift.hpp +100 -0
- package/nitrogen/generated/ios/c++/HybridRiveImageSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveImageSpecSwift.hpp +71 -0
- package/nitrogen/generated/ios/c++/HybridRiveSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveSpecSwift.hpp +76 -0
- package/nitrogen/generated/ios/c++/HybridRiveViewSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRiveViewSpecSwift.hpp +277 -0
- package/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp +88 -0
- package/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp +88 -0
- package/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp +90 -0
- package/nitrogen/generated/ios/c++/HybridViewModelImagePropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelImagePropertySpecSwift.hpp +94 -0
- package/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp +149 -0
- package/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp +88 -0
- package/nitrogen/generated/ios/c++/HybridViewModelPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelPropertySpecSwift.hpp +69 -0
- package/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp +113 -0
- package/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp +90 -0
- package/nitrogen/generated/ios/c++/HybridViewModelTriggerPropertySpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridViewModelTriggerPropertySpecSwift.hpp +89 -0
- package/nitrogen/generated/ios/c++/views/HybridRiveViewComponent.mm +136 -0
- package/nitrogen/generated/ios/swift/Alignment.swift +68 -0
- package/nitrogen/generated/ios/swift/ArtboardBy.swift +89 -0
- package/nitrogen/generated/ios/swift/ArtboardByTypes.swift +40 -0
- package/nitrogen/generated/ios/swift/DataBindByName.swift +36 -0
- package/nitrogen/generated/ios/swift/DataBindMode.swift +40 -0
- package/nitrogen/generated/ios/swift/EventPropertiesOutput.swift +19 -0
- package/nitrogen/generated/ios/swift/Fit.swift +64 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_RiveError.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +51 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +51 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +59 -0
- package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +207 -0
- package/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +59 -0
- package/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +204 -0
- package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +58 -0
- package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +185 -0
- package/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +126 -0
- package/nitrogen/generated/ios/swift/HybridRiveSpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift +131 -0
- package/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +79 -0
- package/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +623 -0
- package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +158 -0
- package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +158 -0
- package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +158 -0
- package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +58 -0
- package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +171 -0
- package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +62 -0
- package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +271 -0
- package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +158 -0
- package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +56 -0
- package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +121 -0
- package/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +61 -0
- package/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +222 -0
- package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +57 -0
- package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +158 -0
- package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +58 -0
- package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +160 -0
- package/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +75 -0
- package/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +185 -0
- package/nitrogen/generated/ios/swift/RiveError.swift +47 -0
- package/nitrogen/generated/ios/swift/RiveErrorType.swift +60 -0
- package/nitrogen/generated/ios/swift/RiveEventType.swift +40 -0
- package/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +213 -0
- package/nitrogen/generated/ios/swift/Variant__any_HybridViewModelInstanceSpec__DataBindMode_DataBindByName.swift +19 -0
- package/nitrogen/generated/shared/c++/Alignment.hpp +104 -0
- package/nitrogen/generated/shared/c++/ArtboardBy.hpp +86 -0
- package/nitrogen/generated/shared/c++/ArtboardByTypes.hpp +76 -0
- package/nitrogen/generated/shared/c++/DataBindByName.hpp +75 -0
- package/nitrogen/generated/shared/c++/DataBindMode.hpp +62 -0
- package/nitrogen/generated/shared/c++/Fit.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridRiveFileFactorySpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridRiveFileFactorySpec.hpp +74 -0
- package/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp +75 -0
- package/nitrogen/generated/shared/c++/HybridRiveImageFactorySpec.cpp +23 -0
- package/nitrogen/generated/shared/c++/HybridRiveImageFactorySpec.hpp +69 -0
- package/nitrogen/generated/shared/c++/HybridRiveImageSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridRiveImageSpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/HybridRiveSpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridRiveSpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/HybridRiveViewSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridRiveViewSpec.hpp +122 -0
- package/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridViewModelImagePropertySpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridViewModelImagePropertySpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp +28 -0
- package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp +90 -0
- package/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/HybridViewModelPropertySpec.cpp +21 -0
- package/nitrogen/generated/shared/c++/HybridViewModelPropertySpec.hpp +62 -0
- package/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp +71 -0
- package/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridViewModelTriggerPropertySpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridViewModelTriggerPropertySpec.hpp +67 -0
- package/nitrogen/generated/shared/c++/ReferencedAssetsType.hpp +79 -0
- package/nitrogen/generated/shared/c++/ResolvedReferencedAsset.hpp +95 -0
- package/nitrogen/generated/shared/c++/RiveError.hpp +81 -0
- package/nitrogen/generated/shared/c++/RiveErrorType.hpp +75 -0
- package/nitrogen/generated/shared/c++/RiveEventType.hpp +62 -0
- package/nitrogen/generated/shared/c++/UnifiedRiveEvent.hpp +100 -0
- package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +183 -0
- package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +124 -0
- package/nitrogen/generated/shared/json/RiveViewConfig.json +18 -0
- package/package.json +193 -0
- package/src/core/Alignment.ts +46 -0
- package/src/core/Errors.ts +14 -0
- package/src/core/Events.ts +31 -0
- package/src/core/Fit.ts +54 -0
- package/src/core/NitroRiveViewComponent.ts +18 -0
- package/src/core/ReferencedAssets.ts +14 -0
- package/src/core/RiveColor.ts +100 -0
- package/src/core/RiveFile.ts +149 -0
- package/src/core/RiveImages.ts +5 -0
- package/src/core/RiveView.tsx +48 -0
- package/src/core/callDispose.ts +18 -0
- package/src/hooks/useRive.ts +56 -0
- package/src/hooks/useRiveBoolean.ts +28 -0
- package/src/hooks/useRiveColor.ts +47 -0
- package/src/hooks/useRiveEnum.ts +27 -0
- package/src/hooks/useRiveFile.ts +184 -0
- package/src/hooks/useRiveNumber.ts +28 -0
- package/src/hooks/useRiveProperty.ts +110 -0
- package/src/hooks/useRiveString.ts +28 -0
- package/src/hooks/useRiveTrigger.ts +49 -0
- package/src/index.tsx +52 -0
- package/src/specs/ArtboardBy.ts +31 -0
- package/src/specs/Rive.nitro.ts +6 -0
- package/src/specs/RiveFile.nitro.ts +57 -0
- package/src/specs/RiveImage.nitro.ts +42 -0
- package/src/specs/RiveView.nitro.ts +149 -0
- package/src/specs/ViewModel.nitro.ts +126 -0
- package/src/types.tsx +34 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
struct DataSourceResolver {
|
|
4
|
+
static func resolve(from asset: ResolvedReferencedAsset) throws -> DataSource? {
|
|
5
|
+
if let sourceUrl = asset.sourceUrl {
|
|
6
|
+
return try resolveFromUrl(sourceUrl)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if let sourceAssetId = asset.sourceAssetId {
|
|
10
|
+
return try resolveFromAssetId(sourceAssetId)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if let sourceAsset = asset.sourceAsset {
|
|
14
|
+
return resolveFromSourceAsset(sourceAsset)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return nil
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
private static func resolveFromUrl(_ urlString: String) throws -> DataSource {
|
|
21
|
+
guard let url = URL(string: urlString) else {
|
|
22
|
+
throw DataLoaderError.invalidURL(urlString)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if url.isFileURL {
|
|
26
|
+
return .file(url: url)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if url.scheme == "http" || url.scheme == "https" {
|
|
30
|
+
return .http(url: url)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
throw DataLoaderError.invalidURL(urlString)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private static func resolveFromAssetId(_ assetId: String) throws -> DataSource {
|
|
37
|
+
guard let url = URL(string: assetId) else {
|
|
38
|
+
throw DataLoaderError.invalidURL(assetId)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if url.isFileURL {
|
|
42
|
+
return .file(url: url)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if url.scheme == "http" || url.scheme == "https" {
|
|
46
|
+
return .http(url: url)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
throw DataLoaderError.invalidURL(assetId)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private static func resolveFromSourceAsset(_ sourceAsset: String) -> DataSource {
|
|
53
|
+
return .bundle(nameWithExtension: sourceAsset)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
extension EventPropertiesOutput {
|
|
4
|
+
static func boolean(_ value: Bool) -> EventPropertiesOutput {
|
|
5
|
+
return .first(value)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
static func string(_ value: String) -> EventPropertiesOutput {
|
|
9
|
+
return .second(value)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static func number(_ value: Double) -> EventPropertiesOutput {
|
|
13
|
+
return .third(value)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
final class FileDataLoader: DataLoader {
|
|
4
|
+
func load(from source: DataSource) async throws -> Data {
|
|
5
|
+
guard case .file(let url) = source else {
|
|
6
|
+
throw DataLoaderError.invalidSource
|
|
7
|
+
}
|
|
8
|
+
return try loadData(from: url)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
func loadData(from url: URL) throws -> Data {
|
|
12
|
+
guard FileManager.default.fileExists(atPath: url.path) else {
|
|
13
|
+
throw DataLoaderError.fileNotFound(path: url.path)
|
|
14
|
+
}
|
|
15
|
+
return try Data(contentsOf: url)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func loadData(from path: String) throws -> Data {
|
|
19
|
+
guard let url = URL(string: path), url.isFileURL else {
|
|
20
|
+
throw DataLoaderError.invalidURL(path)
|
|
21
|
+
}
|
|
22
|
+
return try loadData(from: url)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
final class HTTPDataLoader: DataLoader {
|
|
4
|
+
static let shared = HTTPDataLoader()
|
|
5
|
+
|
|
6
|
+
func load(from source: DataSource) async throws -> Data {
|
|
7
|
+
guard case .http(let url) = source else {
|
|
8
|
+
throw DataLoaderError.invalidSource
|
|
9
|
+
}
|
|
10
|
+
return try await downloadData(from: url)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
func downloadData(from url: URL) async throws -> Data {
|
|
14
|
+
let (data, response) = try await URLSession.shared.data(from: url)
|
|
15
|
+
|
|
16
|
+
if let httpResponse = response as? HTTPURLResponse,
|
|
17
|
+
!(200...299).contains(httpResponse.statusCode)
|
|
18
|
+
{
|
|
19
|
+
throw DataLoaderError.httpError(statusCode: httpResponse.statusCode, url: url)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return data
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func downloadData(from urlString: String) async throws -> Data {
|
|
26
|
+
guard let url = URL(string: urlString) else {
|
|
27
|
+
throw DataLoaderError.invalidURL(urlString)
|
|
28
|
+
}
|
|
29
|
+
return try await downloadData(from: url)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import RiveRuntime
|
|
2
|
+
|
|
3
|
+
typealias ReferencedAssetCache = [String: RiveFileAsset]
|
|
4
|
+
|
|
5
|
+
class HybridRiveFile: HybridRiveFileSpec, RiveViewSource {
|
|
6
|
+
var riveFile: RiveFile?
|
|
7
|
+
var referencedAssetCache: ReferencedAssetCache?
|
|
8
|
+
var assetLoader: ReferencedAssetLoader?
|
|
9
|
+
var cachedFactory: RiveFactory?
|
|
10
|
+
private var weakViews: [Weak<RiveReactNativeView>] = []
|
|
11
|
+
|
|
12
|
+
public func setRiveFile(_ riveFile: RiveFile) {
|
|
13
|
+
self.riveFile = riveFile
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func registerView(_ view: RiveReactNativeView) {
|
|
17
|
+
weakViews.append(Weak(view))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
func unregisterView(_ view: RiveReactNativeView) {
|
|
21
|
+
weakViews.removeAll { $0.value === view }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private func refreshAfterAssetChange() {
|
|
25
|
+
weakViews = weakViews.filter { $0.value != nil }
|
|
26
|
+
|
|
27
|
+
for weakView in weakViews {
|
|
28
|
+
guard let view = weakView.value else { continue }
|
|
29
|
+
view.refreshAfterAssetChange()
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var viewModelCount: Double? {
|
|
34
|
+
guard let count = riveFile?.viewModelCount else { return nil }
|
|
35
|
+
return Double(count)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func viewModelByIndex(index: Double) throws -> (any HybridViewModelSpec)? {
|
|
39
|
+
guard let vm = riveFile?.viewModel(at: UInt(index)) else { return nil }
|
|
40
|
+
return HybridViewModel(viewModel: vm)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
func viewModelByName(name: String) throws -> (any HybridViewModelSpec)? {
|
|
44
|
+
guard let vm = riveFile?.viewModelNamed(name) else { return nil }
|
|
45
|
+
return HybridViewModel(viewModel: vm)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func defaultArtboardViewModel(artboardBy: ArtboardBy?) throws -> (any HybridViewModelSpec)? {
|
|
49
|
+
let artboard: RiveArtboard?
|
|
50
|
+
|
|
51
|
+
if let artboardBy = artboardBy {
|
|
52
|
+
switch artboardBy.type {
|
|
53
|
+
case .index:
|
|
54
|
+
guard let index = artboardBy.index else { return nil }
|
|
55
|
+
artboard = try? riveFile?.artboard(from: Int(index))
|
|
56
|
+
case .name:
|
|
57
|
+
guard let name = artboardBy.name else { return nil }
|
|
58
|
+
artboard = try? riveFile?.artboard(fromName: name)
|
|
59
|
+
default:
|
|
60
|
+
artboard = nil
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
artboard = try? riveFile?.artboard()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
guard let artboard = artboard,
|
|
67
|
+
let vm = riveFile?.defaultViewModel(for: artboard) else { return nil }
|
|
68
|
+
return HybridViewModel(viewModel: vm)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
func updateReferencedAssets(referencedAssets: ReferencedAssetsType) {
|
|
72
|
+
guard let assetsData = referencedAssets.data,
|
|
73
|
+
let cache = referencedAssetCache,
|
|
74
|
+
let loader = assetLoader,
|
|
75
|
+
let _ = riveFile else {
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
let dispatchGroup = DispatchGroup()
|
|
80
|
+
var hasChanged = false
|
|
81
|
+
|
|
82
|
+
for (key, assetData) in assetsData {
|
|
83
|
+
guard let asset = cache[key] else { continue }
|
|
84
|
+
if let riveFactory = cachedFactory {
|
|
85
|
+
dispatchGroup.enter()
|
|
86
|
+
loader.loadAsset(source: assetData, asset: asset, factory: riveFactory) {
|
|
87
|
+
dispatchGroup.leave()
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
RCTLogError("[RiveFile] no factory available for update")
|
|
91
|
+
}
|
|
92
|
+
hasChanged = true
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if hasChanged {
|
|
96
|
+
dispatchGroup.notify(queue: .main) { [weak self] in
|
|
97
|
+
self?.refreshAfterAssetChange()
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
func dispose() {
|
|
103
|
+
weakViews.removeAll()
|
|
104
|
+
referencedAssetCache = nil
|
|
105
|
+
assetLoader = nil
|
|
106
|
+
cachedFactory = nil
|
|
107
|
+
riveFile = nil
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
deinit {
|
|
111
|
+
dispose()
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import NitroModules
|
|
2
|
+
import RiveRuntime
|
|
3
|
+
|
|
4
|
+
final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendable {
|
|
5
|
+
let assetLoader = ReferencedAssetLoader()
|
|
6
|
+
|
|
7
|
+
/// Asynchronously creates a `HybridRiveFileSpec` by performing the following steps:
|
|
8
|
+
/// 1. Executes `check()` to validate or fetch initial data.
|
|
9
|
+
/// 2. Processes the result with `prepare()`.
|
|
10
|
+
/// 3. If a custom asset loader is available, loads the file using `fileWithCustomAssetLoader(prepared, assetLoader)`.
|
|
11
|
+
/// Otherwise, loads the file using `file(prepared)`.
|
|
12
|
+
/// 4. Handles referenced assets and caches as needed.
|
|
13
|
+
/// - Parameters:
|
|
14
|
+
/// - check: Closure to validate or fetch initial data.
|
|
15
|
+
/// - prepare: Closure to process the checked result.
|
|
16
|
+
/// - fileWithCustomAssetLoader: Closure to load the file with a custom asset loader.
|
|
17
|
+
/// - file: Closure to load the file without a custom asset loader.
|
|
18
|
+
/// - referencedAssets: Optional referenced assets.
|
|
19
|
+
/// - Returns: A promise resolving to a `HybridRiveFileSpec`.
|
|
20
|
+
/// - Throws: Runtime errors if any step fails.
|
|
21
|
+
func genericFrom<CheckResult, Prepared>(
|
|
22
|
+
check: @escaping () throws -> CheckResult,
|
|
23
|
+
prepare: @escaping (CheckResult) async throws -> Prepared,
|
|
24
|
+
fileWithCustomAssetLoader: @escaping (Prepared, @escaping LoadAsset) throws -> RiveFile,
|
|
25
|
+
file: @escaping (Prepared) throws -> RiveFile,
|
|
26
|
+
referencedAssets: ReferencedAssetsType?
|
|
27
|
+
) throws -> Promise<(any HybridRiveFileSpec)> {
|
|
28
|
+
return Promise.async {
|
|
29
|
+
do {
|
|
30
|
+
let checked = try check()
|
|
31
|
+
let prepared = try await prepare(checked)
|
|
32
|
+
|
|
33
|
+
let result = try await withCheckedThrowingContinuation { continuation in
|
|
34
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
35
|
+
do {
|
|
36
|
+
|
|
37
|
+
let referencedAssetCache = SendableRef(ReferencedAssetCache())
|
|
38
|
+
let factoryCache: SendableRef<RiveFactory?> = .init(nil)
|
|
39
|
+
let fileRef: SendableRef<RiveFile?> = .init(nil)
|
|
40
|
+
let customLoader = self.assetLoader.createCustomLoader(
|
|
41
|
+
referencedAssets: referencedAssets, cache: referencedAssetCache,
|
|
42
|
+
factory: factoryCache,
|
|
43
|
+
fileRef: fileRef
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
let riveFile =
|
|
47
|
+
if let customLoader = customLoader {
|
|
48
|
+
try fileWithCustomAssetLoader(prepared, customLoader)
|
|
49
|
+
} else {
|
|
50
|
+
try file(prepared)
|
|
51
|
+
}
|
|
52
|
+
fileRef.value = riveFile
|
|
53
|
+
|
|
54
|
+
let result = (
|
|
55
|
+
file: riveFile, cache: referencedAssetCache.value, factory: factoryCache.value,
|
|
56
|
+
loader: customLoader != nil ? self.assetLoader : nil
|
|
57
|
+
)
|
|
58
|
+
DispatchQueue.main.async {
|
|
59
|
+
continuation.resume(returning: result)
|
|
60
|
+
}
|
|
61
|
+
} catch {
|
|
62
|
+
DispatchQueue.main.async {
|
|
63
|
+
continuation.resume(throwing: error)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let hybridRiveFile = HybridRiveFile()
|
|
70
|
+
hybridRiveFile.riveFile = result.file
|
|
71
|
+
hybridRiveFile.referencedAssetCache = result.cache
|
|
72
|
+
if let factory = result.factory {
|
|
73
|
+
hybridRiveFile.cachedFactory = factory
|
|
74
|
+
}
|
|
75
|
+
hybridRiveFile.assetLoader = result.loader
|
|
76
|
+
return hybridRiveFile
|
|
77
|
+
} catch let error as NSError {
|
|
78
|
+
throw RuntimeError.error(
|
|
79
|
+
withMessage: "Failed to download Rive file: \(error.localizedDescription)")
|
|
80
|
+
} catch {
|
|
81
|
+
throw RuntimeError.error(withMessage: "Unknown error occurred while downloading Rive file")
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// MARK: Public Methods
|
|
87
|
+
func fromURL(url: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
|
|
88
|
+
-> Promise<(any HybridRiveFileSpec)> {
|
|
89
|
+
return try genericFrom(
|
|
90
|
+
check: {
|
|
91
|
+
guard let url = URL(string: url) else {
|
|
92
|
+
throw RuntimeError.error(withMessage: "Invalid URL: \(url)")
|
|
93
|
+
}
|
|
94
|
+
return url
|
|
95
|
+
},
|
|
96
|
+
prepare: { url in try await HTTPDataLoader.shared.downloadData(from: url) },
|
|
97
|
+
fileWithCustomAssetLoader: { (data, loader) in
|
|
98
|
+
try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
|
|
99
|
+
},
|
|
100
|
+
file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
|
|
101
|
+
referencedAssets: referencedAssets
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
func fromFileURL(fileURL: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
|
|
106
|
+
-> Promise<(any HybridRiveFileSpec)> {
|
|
107
|
+
return try genericFrom(
|
|
108
|
+
check: {
|
|
109
|
+
guard let url = URL(string: fileURL) else {
|
|
110
|
+
throw RuntimeError.error(withMessage: "Invalid URL: \(fileURL)")
|
|
111
|
+
}
|
|
112
|
+
guard url.isFileURL else {
|
|
113
|
+
throw RuntimeError.error(withMessage: "fromFileURL: URL must be a file URL: \(fileURL)")
|
|
114
|
+
}
|
|
115
|
+
return url
|
|
116
|
+
},
|
|
117
|
+
prepare: { url in try FileDataLoader().loadData(from: url) },
|
|
118
|
+
fileWithCustomAssetLoader: { (data, loader) in
|
|
119
|
+
try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
|
|
120
|
+
},
|
|
121
|
+
file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
|
|
122
|
+
referencedAssets: referencedAssets
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
func fromResource(resource: String, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws
|
|
127
|
+
-> Promise<(any HybridRiveFileSpec)> {
|
|
128
|
+
return try genericFrom(
|
|
129
|
+
check: {
|
|
130
|
+
guard Bundle.main.path(forResource: resource, ofType: "riv") != nil else {
|
|
131
|
+
throw RuntimeError.error(withMessage: "Could not find Rive file: \(resource).riv")
|
|
132
|
+
}
|
|
133
|
+
return resource
|
|
134
|
+
},
|
|
135
|
+
prepare: { $0 },
|
|
136
|
+
fileWithCustomAssetLoader: { (resource, loader) in
|
|
137
|
+
try RiveFile(resource: resource, loadCdn: loadCdn, customAssetLoader: loader)
|
|
138
|
+
},
|
|
139
|
+
file: { (resource) in try RiveFile(resource: resource, loadCdn: loadCdn) },
|
|
140
|
+
referencedAssets: referencedAssets
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
func fromResource(resource: String, loadCdn: Bool) throws -> Promise<(any HybridRiveFileSpec)> {
|
|
145
|
+
return try fromResource(resource: resource, loadCdn: loadCdn, referencedAssets: nil)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
func fromBytes(bytes: ArrayBufferHolder, loadCdn: Bool, referencedAssets: ReferencedAssetsType?)
|
|
149
|
+
throws -> Promise<
|
|
150
|
+
(any HybridRiveFileSpec)
|
|
151
|
+
> {
|
|
152
|
+
let data = bytes.toData(copyIfNeeded: false)
|
|
153
|
+
return try genericFrom(
|
|
154
|
+
check: { data },
|
|
155
|
+
prepare: { $0 },
|
|
156
|
+
fileWithCustomAssetLoader: { (data, loader) in
|
|
157
|
+
try RiveFile(data: data, loadCdn: loadCdn, customAssetLoader: loader)
|
|
158
|
+
},
|
|
159
|
+
file: { (data) in try RiveFile(data: data, loadCdn: loadCdn) },
|
|
160
|
+
referencedAssets: referencedAssets
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import NitroModules
|
|
2
|
+
import RiveRuntime
|
|
3
|
+
|
|
4
|
+
class HybridRiveImage: HybridRiveImageSpec {
|
|
5
|
+
let renderImage: RiveRenderImage
|
|
6
|
+
private let dataSize: Int
|
|
7
|
+
|
|
8
|
+
init(renderImage: RiveRenderImage, dataSize: Int) {
|
|
9
|
+
self.renderImage = renderImage
|
|
10
|
+
self.dataSize = dataSize
|
|
11
|
+
super.init()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
var byteSize: Double {
|
|
15
|
+
Double(dataSize)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import NitroModules
|
|
2
|
+
import RiveRuntime
|
|
3
|
+
|
|
4
|
+
final class HybridRiveImageFactory: HybridRiveImageFactorySpec {
|
|
5
|
+
private func loadFromDataSource(_ source: DataSource) -> Promise<(any HybridRiveImageSpec)> {
|
|
6
|
+
return Promise.async {
|
|
7
|
+
let data = try await source.createLoader().load(from: source)
|
|
8
|
+
guard let renderImage = RiveRenderImage(data: data) else {
|
|
9
|
+
throw RuntimeError.error(withMessage: "Failed to decode image")
|
|
10
|
+
}
|
|
11
|
+
return HybridRiveImage(renderImage: renderImage, dataSize: data.count)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
func loadFromURLAsync(url: String) throws -> Promise<(any HybridRiveImageSpec)> {
|
|
16
|
+
return loadFromDataSource(try .fromURL(string: url))
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
func loadFromResourceAsync(resource: String) throws -> Promise<(any HybridRiveImageSpec)> {
|
|
20
|
+
return loadFromDataSource(.bundle(nameWithExtension: resource))
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
func loadFromBytesAsync(bytes: ArrayBufferHolder) throws -> Promise<(any HybridRiveImageSpec)> {
|
|
24
|
+
return loadFromDataSource(.bytes(from: bytes))
|
|
25
|
+
}
|
|
26
|
+
}
|