@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,36 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import android.net.Uri
|
|
4
|
+
import java.net.URI
|
|
5
|
+
|
|
6
|
+
object DataSourceResolver {
|
|
7
|
+
fun resolve(asset: ResolvedReferencedAsset): DataSource? {
|
|
8
|
+
asset.sourceUrl?.let { return resolveFromUrl(it) }
|
|
9
|
+
asset.sourceAssetId?.let { return resolveFromAssetId(it) }
|
|
10
|
+
asset.sourceAsset?.let { return DataSource.resource(it) }
|
|
11
|
+
return null
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
private fun resolveFromUrl(urlString: String): DataSource {
|
|
15
|
+
val uri = runCatching { URI(urlString) }.getOrElse {
|
|
16
|
+
throw DataLoaderException.InvalidURL(urlString)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return when (uri.scheme) {
|
|
20
|
+
"file" -> uri.path?.let { DataSource.File(it) }
|
|
21
|
+
?: throw DataLoaderException.InvalidURL(urlString)
|
|
22
|
+
"http", "https" -> DataSource.Http(urlString)
|
|
23
|
+
else -> throw DataLoaderException.InvalidURL(urlString)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private fun resolveFromAssetId(assetId: String): DataSource {
|
|
28
|
+
val scheme = runCatching { Uri.parse(assetId).scheme }.getOrNull()
|
|
29
|
+
|
|
30
|
+
if (scheme != null) {
|
|
31
|
+
return resolveFromUrl(assetId)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return DataSource.Resource(assetId)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
object EventPropertiesOutputExtensions {
|
|
4
|
+
fun boolean(value: Boolean): EventPropertiesOutput =
|
|
5
|
+
EventPropertiesOutput.First(value)
|
|
6
|
+
|
|
7
|
+
fun string(value: String): EventPropertiesOutput =
|
|
8
|
+
EventPropertiesOutput.Second(value)
|
|
9
|
+
|
|
10
|
+
fun number(value: Double): EventPropertiesOutput =
|
|
11
|
+
EventPropertiesOutput.Third(value)
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import kotlinx.coroutines.Dispatchers
|
|
4
|
+
import kotlinx.coroutines.withContext
|
|
5
|
+
import java.io.File
|
|
6
|
+
|
|
7
|
+
object FileDataLoader : DataLoader {
|
|
8
|
+
override suspend fun load(source: DataSource): ByteArray {
|
|
9
|
+
val fileSource = source as? DataSource.File
|
|
10
|
+
?: throw DataLoaderException.InvalidSource
|
|
11
|
+
return loadBytes(fileSource.path)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
suspend fun loadBytes(path: String): ByteArray = withContext(Dispatchers.IO) {
|
|
15
|
+
val file = File(path)
|
|
16
|
+
if (!file.exists()) {
|
|
17
|
+
throw DataLoaderException.FileNotFound(path)
|
|
18
|
+
}
|
|
19
|
+
file.readBytes()
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import kotlinx.coroutines.Dispatchers
|
|
4
|
+
import kotlinx.coroutines.withContext
|
|
5
|
+
import java.net.HttpURLConnection
|
|
6
|
+
import java.net.MalformedURLException
|
|
7
|
+
import java.net.URL
|
|
8
|
+
|
|
9
|
+
object HTTPDataLoader : DataLoader {
|
|
10
|
+
override suspend fun load(source: DataSource): ByteArray {
|
|
11
|
+
val httpSource = source as? DataSource.Http
|
|
12
|
+
?: throw DataLoaderException.InvalidSource
|
|
13
|
+
return downloadBytes(httpSource.url)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
suspend fun downloadBytes(url: String): ByteArray = withContext(Dispatchers.IO) {
|
|
17
|
+
val urlObj = try {
|
|
18
|
+
URL(url)
|
|
19
|
+
} catch (e: MalformedURLException) {
|
|
20
|
+
throw DataLoaderException.InvalidURL(url)
|
|
21
|
+
}
|
|
22
|
+
val connection = urlObj.openConnection() as HttpURLConnection
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
connection.requestMethod = "GET"
|
|
26
|
+
val statusCode = connection.responseCode
|
|
27
|
+
|
|
28
|
+
if (statusCode !in 200..299) {
|
|
29
|
+
throw DataLoaderException.HttpError(statusCode, url)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
connection.inputStream.use { it.readBytes() }
|
|
33
|
+
} finally {
|
|
34
|
+
connection.disconnect()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.Keep
|
|
4
|
+
import app.rive.runtime.kotlin.core.File
|
|
5
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
6
|
+
import com.margelo.nitro.NitroModules
|
|
7
|
+
import java.lang.ref.WeakReference
|
|
8
|
+
import kotlinx.coroutines.CoroutineScope
|
|
9
|
+
import kotlinx.coroutines.Dispatchers
|
|
10
|
+
import kotlinx.coroutines.SupervisorJob
|
|
11
|
+
import kotlinx.coroutines.awaitAll
|
|
12
|
+
import kotlinx.coroutines.cancel
|
|
13
|
+
import kotlinx.coroutines.launch
|
|
14
|
+
|
|
15
|
+
@Keep
|
|
16
|
+
@DoNotStrip
|
|
17
|
+
class HybridRiveFile : HybridRiveFileSpec() {
|
|
18
|
+
var riveFile: File? = null
|
|
19
|
+
var referencedAssetCache: ReferencedAssetCache? = null
|
|
20
|
+
var assetLoader: ReferencedAssetLoader? = null
|
|
21
|
+
private val weakViews = mutableListOf<WeakReference<HybridRiveView>>()
|
|
22
|
+
private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
|
|
23
|
+
|
|
24
|
+
override val viewModelCount: Double?
|
|
25
|
+
get() = riveFile?.viewModelCount?.toDouble()
|
|
26
|
+
|
|
27
|
+
override fun viewModelByIndex(index: Double): HybridViewModelSpec? {
|
|
28
|
+
val vm = riveFile?.getViewModelByIndex(index.toInt()) ?: return null
|
|
29
|
+
return HybridViewModel(vm)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun viewModelByName(name: String): HybridViewModelSpec? {
|
|
33
|
+
val vm = riveFile?.getViewModelByName(name) ?: return null
|
|
34
|
+
return HybridViewModel(vm)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun defaultArtboardViewModel(artboardBy: ArtboardBy?): HybridViewModelSpec? {
|
|
38
|
+
try {
|
|
39
|
+
val artboard = when (artboardBy?.type) {
|
|
40
|
+
ArtboardByTypes.INDEX -> riveFile?.artboard(artboardBy.index!!.toInt())
|
|
41
|
+
ArtboardByTypes.NAME -> riveFile?.artboard(artboardBy.name!!)
|
|
42
|
+
null -> riveFile?.firstArtboard
|
|
43
|
+
} ?: return null
|
|
44
|
+
|
|
45
|
+
val vm = riveFile?.defaultViewModelForArtboard(artboard) ?: return null
|
|
46
|
+
return HybridViewModel(vm)
|
|
47
|
+
} catch (e: Exception) {
|
|
48
|
+
return null
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
fun registerView(view: HybridRiveView) {
|
|
53
|
+
weakViews.add(WeakReference(view))
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fun unregisterView(view: HybridRiveView) {
|
|
57
|
+
weakViews.removeAll { it.get() == view }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private fun refreshAfterAssetChange() {
|
|
61
|
+
weakViews.removeAll { it.get() == null }
|
|
62
|
+
|
|
63
|
+
for (weakView in weakViews) {
|
|
64
|
+
weakView.get()?.refreshAfterAssetChange()
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
override fun updateReferencedAssets(referencedAssets: ReferencedAssetsType) {
|
|
69
|
+
val assetsData = referencedAssets.data ?: return
|
|
70
|
+
val cache = referencedAssetCache ?: return
|
|
71
|
+
val loader = assetLoader ?: return
|
|
72
|
+
|
|
73
|
+
val loadJobs = mutableListOf<kotlinx.coroutines.Deferred<Unit>>()
|
|
74
|
+
|
|
75
|
+
for ((key, assetData) in assetsData) {
|
|
76
|
+
val asset = cache[key] ?: continue
|
|
77
|
+
loadJobs.add(loader.updateAsset(assetData, asset))
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (loadJobs.isNotEmpty()) {
|
|
81
|
+
scope.launch {
|
|
82
|
+
loadJobs.awaitAll()
|
|
83
|
+
refreshAfterAssetChange()
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
override fun dispose() {
|
|
89
|
+
scope.cancel()
|
|
90
|
+
weakViews.clear()
|
|
91
|
+
assetLoader?.dispose()
|
|
92
|
+
assetLoader = null
|
|
93
|
+
riveFile?.release()
|
|
94
|
+
riveFile = null
|
|
95
|
+
referencedAssetCache?.clear()
|
|
96
|
+
referencedAssetCache = null
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import androidx.annotation.Keep
|
|
5
|
+
import app.rive.runtime.kotlin.core.File
|
|
6
|
+
import app.rive.runtime.kotlin.core.Rive
|
|
7
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
8
|
+
import com.margelo.nitro.core.ArrayBuffer
|
|
9
|
+
import com.margelo.nitro.core.Promise
|
|
10
|
+
import kotlinx.coroutines.Dispatchers
|
|
11
|
+
import kotlinx.coroutines.withContext
|
|
12
|
+
import java.net.URI
|
|
13
|
+
|
|
14
|
+
data class FileAndCache(
|
|
15
|
+
val file: File,
|
|
16
|
+
val cache: ReferencedAssetCache,
|
|
17
|
+
val loader: ReferencedAssetLoader?
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
@Keep
|
|
21
|
+
@DoNotStrip
|
|
22
|
+
class HybridRiveFileFactory : HybridRiveFileFactorySpec() {
|
|
23
|
+
private fun buildRiveFile(
|
|
24
|
+
data: ByteArray,
|
|
25
|
+
referencedAssets: ReferencedAssetsType?
|
|
26
|
+
): FileAndCache {
|
|
27
|
+
val cache = mutableMapOf<String, app.rive.runtime.kotlin.core.FileAsset>()
|
|
28
|
+
val loader = ReferencedAssetLoader()
|
|
29
|
+
val customLoader = loader.createCustomLoader(referencedAssets, cache)
|
|
30
|
+
|
|
31
|
+
// TODO: The File object in Android does not have the concept of loading CDN assets
|
|
32
|
+
val riveFile = if (customLoader != null) {
|
|
33
|
+
File(data, Rive.defaultRendererType, customLoader)
|
|
34
|
+
} else {
|
|
35
|
+
File(data)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return FileAndCache(riveFile, cache, if (customLoader != null) loader else null)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun fromURL(url: String, loadCdn: Boolean, referencedAssets: ReferencedAssetsType?): Promise<HybridRiveFileSpec> {
|
|
42
|
+
return Promise.async {
|
|
43
|
+
try {
|
|
44
|
+
val fileAndCache = withContext(Dispatchers.IO) {
|
|
45
|
+
val riveData = HTTPDataLoader.downloadBytes(url)
|
|
46
|
+
buildRiveFile(riveData, referencedAssets)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
val hybridRiveFile = HybridRiveFile()
|
|
50
|
+
hybridRiveFile.riveFile = fileAndCache.file
|
|
51
|
+
hybridRiveFile.referencedAssetCache = fileAndCache.cache
|
|
52
|
+
hybridRiveFile.assetLoader = fileAndCache.loader
|
|
53
|
+
hybridRiveFile
|
|
54
|
+
} catch (e: Exception) {
|
|
55
|
+
throw Error("Failed to download Rive file: ${e.message}", e)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
override fun fromFileURL(fileURL: String, loadCdn: Boolean, referencedAssets: ReferencedAssetsType?): Promise<HybridRiveFileSpec> {
|
|
61
|
+
if (!fileURL.startsWith("file://")) {
|
|
62
|
+
throw Error("fromFileURL: URL must be a file URL: $fileURL")
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return Promise.async {
|
|
66
|
+
try {
|
|
67
|
+
val uri = URI(fileURL)
|
|
68
|
+
val path = uri.path ?: throw Error("fromFileURL: Invalid URL: $fileURL")
|
|
69
|
+
|
|
70
|
+
val fileAndCache = withContext(Dispatchers.IO) {
|
|
71
|
+
val riveData = FileDataLoader.loadBytes(path)
|
|
72
|
+
buildRiveFile(riveData, referencedAssets)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
val hybridRiveFile = HybridRiveFile()
|
|
76
|
+
hybridRiveFile.riveFile = fileAndCache.file
|
|
77
|
+
hybridRiveFile.referencedAssetCache = fileAndCache.cache
|
|
78
|
+
hybridRiveFile.assetLoader = fileAndCache.loader
|
|
79
|
+
hybridRiveFile
|
|
80
|
+
} catch (e: Exception) {
|
|
81
|
+
throw Error("Failed to load Rive file: ${e.message}")
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@SuppressLint("DiscouragedApi")
|
|
87
|
+
override fun fromResource(resource: String, loadCdn: Boolean, referencedAssets: ReferencedAssetsType?): Promise<HybridRiveFileSpec> {
|
|
88
|
+
return Promise.async {
|
|
89
|
+
try {
|
|
90
|
+
val fileAndCache = withContext(Dispatchers.IO) {
|
|
91
|
+
val riveData = ResourceDataLoader.loadBytes(resource)
|
|
92
|
+
buildRiveFile(riveData, referencedAssets)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
val hybridRiveFile = HybridRiveFile()
|
|
96
|
+
hybridRiveFile.riveFile = fileAndCache.file
|
|
97
|
+
hybridRiveFile.referencedAssetCache = fileAndCache.cache
|
|
98
|
+
hybridRiveFile.assetLoader = fileAndCache.loader
|
|
99
|
+
hybridRiveFile
|
|
100
|
+
} catch (e: Exception) {
|
|
101
|
+
throw Error("Failed to load Rive file: ${e.message}")
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
override fun fromBytes(bytes: ArrayBuffer, loadCdn: Boolean, referencedAssets: ReferencedAssetsType?): Promise<HybridRiveFileSpec> {
|
|
107
|
+
val buffer = bytes.getBuffer(false)
|
|
108
|
+
return Promise.async {
|
|
109
|
+
try {
|
|
110
|
+
val byteArray = ByteArray(buffer.remaining())
|
|
111
|
+
buffer.get(byteArray)
|
|
112
|
+
val fileAndCache = buildRiveFile(byteArray, referencedAssets)
|
|
113
|
+
val hybridRiveFile = HybridRiveFile()
|
|
114
|
+
hybridRiveFile.riveFile = fileAndCache.file
|
|
115
|
+
hybridRiveFile.referencedAssetCache = fileAndCache.cache
|
|
116
|
+
hybridRiveFile.assetLoader = fileAndCache.loader
|
|
117
|
+
hybridRiveFile
|
|
118
|
+
} catch (e: Exception) {
|
|
119
|
+
throw Error("Failed to load Rive file from bytes: ${e.message}")
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.Keep
|
|
4
|
+
import app.rive.runtime.kotlin.core.RiveRenderImage
|
|
5
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
6
|
+
|
|
7
|
+
@Keep
|
|
8
|
+
@DoNotStrip
|
|
9
|
+
class HybridRiveImage(
|
|
10
|
+
val renderImage: RiveRenderImage,
|
|
11
|
+
private val dataSize: Int
|
|
12
|
+
) : HybridRiveImageSpec() {
|
|
13
|
+
override val byteSize: Double
|
|
14
|
+
get() = dataSize.toDouble()
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.Keep
|
|
4
|
+
import app.rive.runtime.kotlin.core.RiveRenderImage
|
|
5
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
6
|
+
import com.margelo.nitro.core.ArrayBuffer
|
|
7
|
+
import com.margelo.nitro.core.Promise
|
|
8
|
+
|
|
9
|
+
@Keep
|
|
10
|
+
@DoNotStrip
|
|
11
|
+
class HybridRiveImageFactory : HybridRiveImageFactorySpec() {
|
|
12
|
+
private fun loadFromDataSource(source: DataSource): Promise<HybridRiveImageSpec> = Promise.async {
|
|
13
|
+
val imageData = source.createLoader().load(source)
|
|
14
|
+
val renderImage = RiveRenderImage.fromEncoded(imageData)
|
|
15
|
+
HybridRiveImage(renderImage, imageData.size)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override fun loadFromURLAsync(url: String) = loadFromDataSource(DataSource.fromURL(url))
|
|
19
|
+
|
|
20
|
+
override fun loadFromResourceAsync(resource: String) = loadFromDataSource(DataSource.resource(resource))
|
|
21
|
+
|
|
22
|
+
override fun loadFromBytesAsync(bytes: ArrayBuffer) = loadFromDataSource(DataSource.Bytes.from(bytes))
|
|
23
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
package com.margelo.nitro.rive
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.Keep
|
|
4
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
5
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
|
+
import com.margelo.nitro.core.Promise
|
|
7
|
+
import com.rive.BindData
|
|
8
|
+
import com.rive.RiveReactNativeView
|
|
9
|
+
import com.rive.ViewConfiguration
|
|
10
|
+
import app.rive.runtime.kotlin.core.Fit as RiveFit
|
|
11
|
+
import app.rive.runtime.kotlin.core.Alignment as RiveAlignment
|
|
12
|
+
import app.rive.runtime.kotlin.core.errors.*
|
|
13
|
+
import kotlinx.coroutines.Dispatchers
|
|
14
|
+
import kotlinx.coroutines.withContext
|
|
15
|
+
|
|
16
|
+
fun Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName?.toBindData(): BindData {
|
|
17
|
+
if (this == null) return BindData.Auto
|
|
18
|
+
|
|
19
|
+
return when (this) {
|
|
20
|
+
is Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.First -> {
|
|
21
|
+
val instance = (this.asFirstOrNull() as? HybridViewModelInstance)?.viewModelInstance
|
|
22
|
+
?: throw Error("Invalid ViewModelInstance")
|
|
23
|
+
BindData.Instance(instance)
|
|
24
|
+
}
|
|
25
|
+
is Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.Second -> {
|
|
26
|
+
when (this.asSecondOrNull()) {
|
|
27
|
+
DataBindMode.AUTO -> BindData.Auto
|
|
28
|
+
DataBindMode.NONE -> BindData.None
|
|
29
|
+
else -> BindData.None
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
is Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.Third -> {
|
|
33
|
+
val name = this.asThirdOrNull()?.byName ?: throw Error("Missing byName value")
|
|
34
|
+
BindData.ByName(name)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
object DefaultConfiguration {
|
|
40
|
+
const val AUTOPLAY = true
|
|
41
|
+
val FIT = RiveFit.CONTAIN
|
|
42
|
+
val ALIGNMENT = RiveAlignment.CENTER
|
|
43
|
+
val LAYOUTSCALEFACTOR = null
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@Keep
|
|
47
|
+
@DoNotStrip
|
|
48
|
+
class HybridRiveView(val context: ThemedReactContext) : HybridRiveViewSpec() {
|
|
49
|
+
companion object {
|
|
50
|
+
private const val TAG = "HybridRiveView"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//region State
|
|
54
|
+
override val view: RiveReactNativeView = RiveReactNativeView(context)
|
|
55
|
+
private var needsReload = false
|
|
56
|
+
private var dataBindingChanged = false
|
|
57
|
+
private var initialUpdate = true
|
|
58
|
+
private var registeredFile: HybridRiveFile? = null
|
|
59
|
+
//endregion
|
|
60
|
+
|
|
61
|
+
//region View Props
|
|
62
|
+
override var artboardName: String? = null
|
|
63
|
+
set(value) {
|
|
64
|
+
changed(field, value) { field = it }
|
|
65
|
+
}
|
|
66
|
+
override var stateMachineName: String? = null
|
|
67
|
+
set(value) {
|
|
68
|
+
changed(field, value) { field = it }
|
|
69
|
+
}
|
|
70
|
+
override var autoPlay: Boolean? = null
|
|
71
|
+
set(value) {
|
|
72
|
+
changed(field, value) { field = it }
|
|
73
|
+
}
|
|
74
|
+
override var file: HybridRiveFileSpec = HybridRiveFile()
|
|
75
|
+
set(value) {
|
|
76
|
+
if (field != value) {
|
|
77
|
+
registeredFile?.unregisterView(this)
|
|
78
|
+
registeredFile = null
|
|
79
|
+
}
|
|
80
|
+
changed(field, value) { field = it }
|
|
81
|
+
}
|
|
82
|
+
override var alignment: Alignment? = null
|
|
83
|
+
override var fit: Fit? = null
|
|
84
|
+
override var layoutScaleFactor: Double? = null
|
|
85
|
+
override var dataBind: Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName? = null
|
|
86
|
+
set(value) {
|
|
87
|
+
if (field != value) {
|
|
88
|
+
field = value
|
|
89
|
+
dataBindingChanged = true
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
override var onError: (error: RiveError) -> Unit = {}
|
|
93
|
+
//endregion
|
|
94
|
+
|
|
95
|
+
//region View Methods
|
|
96
|
+
override fun awaitViewReady(): Promise<Boolean> {
|
|
97
|
+
return Promise.async {
|
|
98
|
+
withContext(Dispatchers.Main) {
|
|
99
|
+
view.awaitViewReady()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
override fun bindViewModelInstance(viewModelInstance: HybridViewModelInstanceSpec) =
|
|
105
|
+
executeOnUiThread {
|
|
106
|
+
val hybridVmi = viewModelInstance as? HybridViewModelInstance ?: return@executeOnUiThread
|
|
107
|
+
view.bindViewModelInstance(hybridVmi.viewModelInstance)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
override fun getViewModelInstance(): HybridViewModelInstanceSpec? {
|
|
111
|
+
val viewModelInstance = view.getViewModelInstance() ?: return null
|
|
112
|
+
return HybridViewModelInstance(viewModelInstance)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
override fun play() = asyncExecuteOnUiThread { view.play() }
|
|
116
|
+
|
|
117
|
+
override fun pause() = asyncExecuteOnUiThread { view.pause() }
|
|
118
|
+
|
|
119
|
+
override fun reset() = asyncExecuteOnUiThread { view.reset() }
|
|
120
|
+
|
|
121
|
+
override fun playIfNeeded() = view.playIfNeeded()
|
|
122
|
+
|
|
123
|
+
override fun onEventListener(onEvent: (event: UnifiedRiveEvent) -> Unit) =
|
|
124
|
+
executeOnUiThread { view.addEventListener(onEvent) }
|
|
125
|
+
|
|
126
|
+
override fun removeEventListeners() = executeOnUiThread { view.removeEventListeners() }
|
|
127
|
+
|
|
128
|
+
override fun setNumberInputValue(name: String, value: Double, path: String?) =
|
|
129
|
+
view.setNumberInputValue(name, value, path)
|
|
130
|
+
|
|
131
|
+
override fun getNumberInputValue(name: String, path: String?): Double =
|
|
132
|
+
view.getNumberInputValue(name, path)
|
|
133
|
+
|
|
134
|
+
override fun setBooleanInputValue(name: String, value: Boolean, path: String?) =
|
|
135
|
+
view.setBooleanInputValue(name, value, path)
|
|
136
|
+
|
|
137
|
+
override fun getBooleanInputValue(name: String, path: String?): Boolean =
|
|
138
|
+
view.getBooleanInputValue(name, path)
|
|
139
|
+
|
|
140
|
+
override fun triggerInput(name: String, path: String?) = view.triggerInput(name, path)
|
|
141
|
+
|
|
142
|
+
override fun setTextRunValue(name: String, value: String, path: String?) =
|
|
143
|
+
view.setTextRunValue(name, value, path)
|
|
144
|
+
|
|
145
|
+
override fun getTextRunValue(name: String, path: String?): String =
|
|
146
|
+
view.getTextRunValue(name, path)
|
|
147
|
+
//endregion
|
|
148
|
+
|
|
149
|
+
//region Update
|
|
150
|
+
fun refreshAfterAssetChange() {
|
|
151
|
+
afterUpdate()
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
override fun afterUpdate() {
|
|
155
|
+
logged(TAG, "afterUpdate") {
|
|
156
|
+
val hybridFile = file as? HybridRiveFile
|
|
157
|
+
val riveFile = hybridFile?.riveFile ?: return@logged
|
|
158
|
+
|
|
159
|
+
val config = ViewConfiguration(
|
|
160
|
+
artboardName = artboardName,
|
|
161
|
+
stateMachineName = stateMachineName,
|
|
162
|
+
autoPlay = autoPlay ?: DefaultConfiguration.AUTOPLAY,
|
|
163
|
+
riveFile = riveFile,
|
|
164
|
+
alignment = convertAlignment(alignment) ?: DefaultConfiguration.ALIGNMENT,
|
|
165
|
+
fit = convertFit(fit) ?: DefaultConfiguration.FIT,
|
|
166
|
+
layoutScaleFactor = layoutScaleFactor?.toFloat() ?: DefaultConfiguration.LAYOUTSCALEFACTOR,
|
|
167
|
+
bindData = dataBind.toBindData()
|
|
168
|
+
)
|
|
169
|
+
view.configure(config, dataBindingChanged = dataBindingChanged, needsReload, initialUpdate = initialUpdate)
|
|
170
|
+
|
|
171
|
+
if (needsReload && hybridFile != null) {
|
|
172
|
+
hybridFile.registerView(this)
|
|
173
|
+
registeredFile = hybridFile
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
needsReload = false
|
|
177
|
+
dataBindingChanged = false
|
|
178
|
+
initialUpdate = false
|
|
179
|
+
super.afterUpdate()
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//endregion
|
|
183
|
+
|
|
184
|
+
//region Helpers
|
|
185
|
+
private fun <T> changed(current: T, new: T, setter: (T) -> Unit) {
|
|
186
|
+
if (current != new) {
|
|
187
|
+
setter(new)
|
|
188
|
+
needsReload = true
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private fun asyncExecuteOnUiThread(action: () -> Unit): Promise<Unit> {
|
|
193
|
+
return Promise.async {
|
|
194
|
+
context.currentActivity?.runOnUiThread {
|
|
195
|
+
try {
|
|
196
|
+
action()
|
|
197
|
+
} catch (e: Exception) {
|
|
198
|
+
throw Error(e.message) // TODO: Correctly handling errors (https://nitro.margelo.com/docs/errors)
|
|
199
|
+
} catch (e: Error) {
|
|
200
|
+
throw Error(e.message)
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private fun executeOnUiThread(action: () -> Unit) {
|
|
207
|
+
context.currentActivity?.runOnUiThread {
|
|
208
|
+
try {
|
|
209
|
+
action()
|
|
210
|
+
} catch (e: Exception) {
|
|
211
|
+
throw Error(e.message) // TODO: Correctly handling errors (https://nitro.margelo.com/docs/errors)
|
|
212
|
+
} catch (e: Error) {
|
|
213
|
+
throw Error(e.message)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
private fun convertAlignment(alignment: Alignment?): RiveAlignment? {
|
|
219
|
+
if (alignment == null) return null
|
|
220
|
+
|
|
221
|
+
return when (alignment) {
|
|
222
|
+
Alignment.TOPLEFT -> RiveAlignment.TOP_LEFT
|
|
223
|
+
Alignment.TOPCENTER -> RiveAlignment.TOP_CENTER
|
|
224
|
+
Alignment.TOPRIGHT -> RiveAlignment.TOP_RIGHT
|
|
225
|
+
Alignment.CENTERLEFT -> RiveAlignment.CENTER_LEFT
|
|
226
|
+
Alignment.CENTER -> RiveAlignment.CENTER
|
|
227
|
+
Alignment.CENTERRIGHT -> RiveAlignment.CENTER_RIGHT
|
|
228
|
+
Alignment.BOTTOMLEFT -> RiveAlignment.BOTTOM_LEFT
|
|
229
|
+
Alignment.BOTTOMCENTER -> RiveAlignment.BOTTOM_CENTER
|
|
230
|
+
Alignment.BOTTOMRIGHT -> RiveAlignment.BOTTOM_RIGHT
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
private fun convertFit(fit: Fit?): RiveFit? {
|
|
235
|
+
if (fit == null) return null
|
|
236
|
+
|
|
237
|
+
return when (fit) {
|
|
238
|
+
Fit.FILL -> RiveFit.FILL
|
|
239
|
+
Fit.CONTAIN -> RiveFit.CONTAIN
|
|
240
|
+
Fit.COVER -> RiveFit.COVER
|
|
241
|
+
Fit.FITWIDTH -> RiveFit.FIT_WIDTH
|
|
242
|
+
Fit.FITHEIGHT -> RiveFit.FIT_HEIGHT
|
|
243
|
+
Fit.NONE -> RiveFit.NONE
|
|
244
|
+
Fit.SCALEDOWN -> RiveFit.SCALE_DOWN
|
|
245
|
+
Fit.LAYOUT -> RiveFit.LAYOUT
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
private fun detectErrorType(exception: Exception): Pair<RiveErrorType, String> {
|
|
250
|
+
val message = exception.message ?: exception.toString()
|
|
251
|
+
val type = when (exception) {
|
|
252
|
+
is ArtboardException -> RiveErrorType.INCORRECTARTBOARDNAME
|
|
253
|
+
is StateMachineException -> RiveErrorType.INCORRECTSTATEMACHINENAME
|
|
254
|
+
is AnimationException -> RiveErrorType.UNKNOWN
|
|
255
|
+
is MalformedFileException -> RiveErrorType.MALFORMEDFILE
|
|
256
|
+
is StateMachineInputException -> RiveErrorType.INCORRECTSTATEMACHINEINPUTNAME
|
|
257
|
+
is TextValueRunException -> RiveErrorType.UNKNOWN
|
|
258
|
+
is ViewModelException -> RiveErrorType.VIEWMODELINSTANCENOTFOUND
|
|
259
|
+
else -> RiveErrorType.UNKNOWN
|
|
260
|
+
}
|
|
261
|
+
return Pair(type, message)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
fun logged(tag: String, note: String? = null, fn: () -> Unit) {
|
|
265
|
+
try {
|
|
266
|
+
fn()
|
|
267
|
+
} catch (e: Exception) {
|
|
268
|
+
val (errorType, errorDescription) = detectErrorType(e)
|
|
269
|
+
val noteString = note?.let { " $it" } ?: ""
|
|
270
|
+
val errorMessage = "[RIVE] $tag$noteString $errorDescription"
|
|
271
|
+
val riveError = RiveError(
|
|
272
|
+
type = errorType,
|
|
273
|
+
message = errorMessage
|
|
274
|
+
)
|
|
275
|
+
onError(riveError)
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//endregion
|
|
279
|
+
}
|