From bd05f510ca4100f96cd59afa92f8117e97f08f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 19 Mar 2026 09:35:23 +0100 Subject: [PATCH 1/6] feat: add async API methods and deprecation markers for migration compatibility Add async equivalents for all sync ViewModel/RiveFile methods (createInstanceByNameAsync, getValueAsync, viewModelByNameAsync, etc.) and mark legacy sync methods as @deprecated. Native implementations wrap sync calls in Promise.async on both iOS and Android. --- .../com/margelo/nitro/rive/HybridRiveFile.kt | 33 ++ .../com/margelo/nitro/rive/HybridViewModel.kt | 13 + .../rive/HybridViewModelBooleanProperty.kt | 9 + .../rive/HybridViewModelColorProperty.kt | 9 + .../nitro/rive/HybridViewModelEnumProperty.kt | 9 + .../nitro/rive/HybridViewModelInstance.kt | 5 + .../nitro/rive/HybridViewModelListProperty.kt | 9 + .../rive/HybridViewModelNumberProperty.kt | 9 + .../rive/HybridViewModelStringProperty.kt | 9 + ios/HybridRiveFile.swift | 31 ++ ios/HybridViewModel.swift | 13 + ios/HybridViewModelBooleanProperty.swift | 8 + ios/HybridViewModelColorProperty.swift | 8 + ios/HybridViewModelEnumProperty.swift | 8 + ios/HybridViewModelInstance.swift | 4 + ios/HybridViewModelListProperty.swift | 9 + ios/HybridViewModelNumberProperty.swift | 9 + ios/HybridViewModelStringProperty.swift | 8 + .../android/c++/JHybridRiveFileSpec.cpp | 100 ++++++ .../android/c++/JHybridRiveFileSpec.hpp | 5 + .../JHybridViewModelBooleanPropertySpec.cpp | 22 ++ .../JHybridViewModelBooleanPropertySpec.hpp | 2 + .../c++/JHybridViewModelColorPropertySpec.cpp | 22 ++ .../c++/JHybridViewModelColorPropertySpec.hpp | 2 + .../c++/JHybridViewModelEnumPropertySpec.cpp | 22 ++ .../c++/JHybridViewModelEnumPropertySpec.hpp | 2 + .../c++/JHybridViewModelInstanceSpec.cpp | 18 ++ .../c++/JHybridViewModelInstanceSpec.hpp | 1 + .../c++/JHybridViewModelListPropertySpec.cpp | 34 ++ .../c++/JHybridViewModelListPropertySpec.hpp | 2 + .../JHybridViewModelNumberPropertySpec.cpp | 22 ++ .../JHybridViewModelNumberPropertySpec.hpp | 2 + .../android/c++/JHybridViewModelSpec.cpp | 50 +++ .../android/c++/JHybridViewModelSpec.hpp | 3 + .../JHybridViewModelStringPropertySpec.cpp | 22 ++ .../JHybridViewModelStringPropertySpec.hpp | 2 + .../margelo/nitro/rive/HybridRiveFileSpec.kt | 21 ++ .../HybridViewModelBooleanPropertySpec.kt | 9 + .../rive/HybridViewModelColorPropertySpec.kt | 9 + .../rive/HybridViewModelEnumPropertySpec.kt | 9 + .../nitro/rive/HybridViewModelInstanceSpec.kt | 5 + .../rive/HybridViewModelListPropertySpec.kt | 9 + .../rive/HybridViewModelNumberPropertySpec.kt | 9 + .../margelo/nitro/rive/HybridViewModelSpec.kt | 13 + .../rive/HybridViewModelStringPropertySpec.kt | 9 + .../generated/ios/RNRive-Swift-Cxx-Bridge.cpp | 62 ++-- .../generated/ios/RNRive-Swift-Cxx-Bridge.hpp | 303 ++++++++++++++---- .../ios/c++/HybridRiveFileSpecSwift.hpp | 41 +++ ...ybridViewModelBooleanPropertySpecSwift.hpp | 15 + .../HybridViewModelColorPropertySpecSwift.hpp | 15 + .../HybridViewModelEnumPropertySpecSwift.hpp | 15 + .../c++/HybridViewModelInstanceSpecSwift.hpp | 9 + .../HybridViewModelListPropertySpecSwift.hpp | 17 + ...HybridViewModelNumberPropertySpecSwift.hpp | 15 + .../ios/c++/HybridViewModelSpecSwift.hpp | 25 ++ ...HybridViewModelStringPropertySpecSwift.hpp | 15 + ...ed_ptr_HybridViewModelInstanceSpec__.swift | 57 ++++ ...td__shared_ptr_HybridViewModelSpec__.swift | 57 ++++ .../Func_void_std__vector_std__string_.swift | 46 +++ .../ios/swift/HybridRiveFileSpec.swift | 5 + .../ios/swift/HybridRiveFileSpec_cxx.swift | 132 ++++++++ .../HybridViewModelBooleanPropertySpec.swift | 2 + ...bridViewModelBooleanPropertySpec_cxx.swift | 30 ++ .../HybridViewModelColorPropertySpec.swift | 2 + ...HybridViewModelColorPropertySpec_cxx.swift | 30 ++ .../HybridViewModelEnumPropertySpec.swift | 2 + .../HybridViewModelEnumPropertySpec_cxx.swift | 30 ++ .../swift/HybridViewModelInstanceSpec.swift | 1 + .../HybridViewModelInstanceSpec_cxx.swift | 28 ++ .../HybridViewModelListPropertySpec.swift | 2 + .../HybridViewModelListPropertySpec_cxx.swift | 47 +++ .../HybridViewModelNumberPropertySpec.swift | 2 + ...ybridViewModelNumberPropertySpec_cxx.swift | 30 ++ .../ios/swift/HybridViewModelSpec.swift | 3 + .../ios/swift/HybridViewModelSpec_cxx.swift | 84 +++++ .../HybridViewModelStringPropertySpec.swift | 2 + ...ybridViewModelStringPropertySpec_cxx.swift | 30 ++ .../shared/c++/HybridRiveFileSpec.cpp | 5 + .../shared/c++/HybridRiveFileSpec.hpp | 6 + .../HybridViewModelBooleanPropertySpec.cpp | 2 + .../HybridViewModelBooleanPropertySpec.hpp | 3 + .../c++/HybridViewModelColorPropertySpec.cpp | 2 + .../c++/HybridViewModelColorPropertySpec.hpp | 3 + .../c++/HybridViewModelEnumPropertySpec.cpp | 2 + .../c++/HybridViewModelEnumPropertySpec.hpp | 3 + .../c++/HybridViewModelInstanceSpec.cpp | 1 + .../c++/HybridViewModelInstanceSpec.hpp | 2 + .../c++/HybridViewModelListPropertySpec.cpp | 2 + .../c++/HybridViewModelListPropertySpec.hpp | 3 + .../c++/HybridViewModelNumberPropertySpec.cpp | 2 + .../c++/HybridViewModelNumberPropertySpec.hpp | 3 + .../shared/c++/HybridViewModelSpec.cpp | 3 + .../shared/c++/HybridViewModelSpec.hpp | 4 + .../c++/HybridViewModelStringPropertySpec.cpp | 2 + .../c++/HybridViewModelStringPropertySpec.hpp | 3 + src/specs/RiveFile.nitro.ts | 23 +- src/specs/ViewModel.nitro.ts | 43 ++- 97 files changed, 1798 insertions(+), 102 deletions(-) create mode 100644 nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__.swift create mode 100644 nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__.swift create mode 100644 nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt b/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt index 60c6b57a..d1f87197 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.File import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import java.lang.ref.WeakReference import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -85,6 +86,38 @@ class HybridRiveFile : HybridRiveFileSpec() { } } + override fun getViewModelNamesAsync(): Promise> { + return Promise.async { + val file = riveFile ?: return@async emptyArray() + val count = file.viewModelCount + val names = mutableListOf() + for (i in 0 until count) { + try { + val vm = file.getViewModelByIndex(i) + names.add(vm.name) + } catch (_: Exception) { + } + } + names.toTypedArray() + } + } + + override fun viewModelByNameAsync(name: String, validate: Boolean?): Promise { + return Promise.async { viewModelByName(name) } + } + + override fun defaultArtboardViewModelAsync(artboardBy: ArtboardBy?): Promise { + return Promise.async { defaultArtboardViewModel(artboardBy) } + } + + override fun getArtboardCountAsync(): Promise { + return Promise.async { artboardCount } + } + + override fun getArtboardNamesAsync(): Promise> { + return Promise.async { artboardNames } + } + override fun updateReferencedAssets(referencedAssets: ReferencedAssetsType) { val assetsData = referencedAssets.data ?: return val cache = referencedAssetCache ?: return diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt index 5d23869f..b5af4ead 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModel.kt @@ -4,6 +4,7 @@ import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModel import app.rive.runtime.kotlin.core.errors.ViewModelException import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -51,4 +52,16 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec() return null } } + + override fun createInstanceByNameAsync(name: String): Promise { + return Promise.async { createInstanceByName(name) } + } + + override fun createDefaultInstanceAsync(): Promise { + return Promise.async { createDefaultInstance() } + } + + override fun createBlankInstanceAsync(): Promise { + return Promise.async { createInstance() } + } } diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt index 5a82de36..a8011cff 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelBooleanProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelBooleanProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -15,6 +16,14 @@ class HybridViewModelBooleanProperty(private val viewModelBoolean: ViewModelBool viewModelBoolean.value = value } + override fun getValueAsync(): Promise { + return Promise.async { value } + } + + override fun set(value: Boolean) { + viewModelBoolean.value = value + } + override fun addListener(onChanged: (value: Boolean) -> Unit): () -> Unit { val remover = addListenerInternal(onChanged) ensureValueListenerJob(viewModelBoolean.valueFlow) diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt index 0e20ce41..7d44e514 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelColorProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelColorProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -15,6 +16,14 @@ class HybridViewModelColorProperty(private val viewModelColor: ViewModelColorPro viewModelColor.value = value.toLong().toInt() } + override fun getValueAsync(): Promise { + return Promise.async { value } + } + + override fun set(value: Double) { + viewModelColor.value = value.toLong().toInt() + } + override fun addListener(onChanged: (value: Double) -> Unit): () -> Unit { val remover = addListenerInternal { intValue: Int -> onChanged(intValue.toDouble()) } ensureValueListenerJob(viewModelColor.valueFlow) diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt index ec7554bc..7f5b88e9 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelEnumProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelEnumProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -15,6 +16,14 @@ class HybridViewModelEnumProperty(private val viewModelEnum: ViewModelEnumProper viewModelEnum.value = value } + override fun getValueAsync(): Promise { + return Promise.async { value } + } + + override fun set(value: String) { + viewModelEnum.value = value + } + override fun addListener(onChanged: (value: String) -> Unit): () -> Unit { val remover = addListenerInternal(onChanged) ensureValueListenerJob(viewModelEnum.valueFlow) diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt index 01c006ee..b8bba139 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt @@ -4,6 +4,7 @@ import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelInstance import app.rive.runtime.kotlin.core.errors.ViewModelException import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -65,4 +66,8 @@ class HybridViewModelInstance(val viewModelInstance: ViewModelInstance) : Hybrid val nativeInstance = (instance as HybridViewModelInstance).viewModelInstance viewModelInstance.setInstanceProperty(path, nativeInstance) } + + override fun viewModelAsync(path: String): Promise { + return Promise.async { viewModel(path) } + } } diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt index 3dc77238..e6f4e7da 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelListProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import kotlinx.coroutines.flow.map @Keep @@ -56,6 +57,14 @@ class HybridViewModelListProperty(private val listProperty: ViewModelListPropert return true } + override fun getLengthAsync(): Promise { + return Promise.async { length } + } + + override fun getInstanceAtAsync(index: Double): Promise { + return Promise.async { getInstanceAt(index) } + } + override fun addListener(onChanged: () -> Unit): () -> Unit { val remover = addListenerInternal { _ -> onChanged() } ensureValueListenerJob(listProperty.valueFlow.map { }) diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt index fc647ec1..d07688d6 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelNumberProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelNumberProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import kotlinx.coroutines.flow.map @Keep @@ -16,6 +17,14 @@ class HybridViewModelNumberProperty(private val viewModelNumber: ViewModelNumber viewModelNumber.value = value.toFloat() } + override fun getValueAsync(): Promise { + return Promise.async { value } + } + + override fun set(value: Double) { + viewModelNumber.value = value.toFloat() + } + override fun addListener(onChanged: (value: Double) -> Unit): () -> Unit { val remover = addListenerInternal(onChanged) ensureValueListenerJob(viewModelNumber.valueFlow.map { it.toDouble() }) diff --git a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt index 02c69e8c..ba10ae36 100644 --- a/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt +++ b/android/src/main/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt @@ -3,6 +3,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import app.rive.runtime.kotlin.core.ViewModelStringProperty import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise @Keep @DoNotStrip @@ -15,6 +16,14 @@ class HybridViewModelStringProperty(private val viewModelString: ViewModelString viewModelString.value = value } + override fun getValueAsync(): Promise { + return Promise.async { value } + } + + override fun set(value: String) { + viewModelString.value = value + } + override fun addListener(onChanged: (value: String) -> Unit): () -> Unit { val remover = addListenerInternal(onChanged) ensureValueListenerJob(viewModelString.valueFlow) diff --git a/ios/HybridRiveFile.swift b/ios/HybridRiveFile.swift index ac6c71c1..31a4b779 100644 --- a/ios/HybridRiveFile.swift +++ b/ios/HybridRiveFile.swift @@ -1,3 +1,4 @@ +import NitroModules import RiveRuntime typealias ReferencedAssetCache = [String: RiveFileAsset] @@ -88,6 +89,36 @@ class HybridRiveFile: HybridRiveFileSpec, RiveViewSource { return HybridBindableArtboard(bindableArtboard: bindable) } + func getViewModelNamesAsync() throws -> Promise<[String]> { + return Promise.async { + guard let file = self.riveFile else { return [] } + let count = file.viewModelCount + var names: [String] = [] + for i in 0.. Promise<(any HybridViewModelSpec)?> { + return Promise.async { try self.viewModelByName(name: name) } + } + + func defaultArtboardViewModelAsync(artboardBy: ArtboardBy?) throws -> Promise<(any HybridViewModelSpec)?> { + return Promise.async { try self.defaultArtboardViewModel(artboardBy: artboardBy) } + } + + func getArtboardCountAsync() throws -> Promise { + return Promise.async { self.artboardCount } + } + + func getArtboardNamesAsync() throws -> Promise<[String]> { + return Promise.async { self.artboardNames } + } + func updateReferencedAssets(referencedAssets: ReferencedAssetsType) { guard let assetsData = referencedAssets.data, let cache = referencedAssetCache, diff --git a/ios/HybridViewModel.swift b/ios/HybridViewModel.swift index 7e00d157..52e789b2 100644 --- a/ios/HybridViewModel.swift +++ b/ios/HybridViewModel.swift @@ -1,3 +1,4 @@ +import NitroModules import RiveRuntime class HybridViewModel: HybridViewModelSpec { @@ -39,4 +40,16 @@ class HybridViewModel: HybridViewModelSpec { let vmi = viewModel.createInstance() else { return nil } return HybridViewModelInstance(viewModelInstance: vmi) } + + func createInstanceByNameAsync(name: String) throws -> Promise<(any HybridViewModelInstanceSpec)?> { + return Promise.async { try self.createInstanceByName(name: name) } + } + + func createDefaultInstanceAsync() throws -> Promise<(any HybridViewModelInstanceSpec)?> { + return Promise.async { try self.createDefaultInstance() } + } + + func createBlankInstanceAsync() throws -> Promise<(any HybridViewModelInstanceSpec)?> { + return Promise.async { try self.createInstance() } + } } diff --git a/ios/HybridViewModelBooleanProperty.swift b/ios/HybridViewModelBooleanProperty.swift index acf62da1..ed5864bb 100644 --- a/ios/HybridViewModelBooleanProperty.swift +++ b/ios/HybridViewModelBooleanProperty.swift @@ -18,4 +18,12 @@ class HybridViewModelBooleanProperty: HybridViewModelBooleanPropertySpec, Valued property.value = newValue } } + + func getValueAsync() throws -> Promise { + return Promise.async { self.property.value } + } + + func set(value: Bool) throws { + property.value = value + } } diff --git a/ios/HybridViewModelColorProperty.swift b/ios/HybridViewModelColorProperty.swift index 8d7e0b4c..9769dde3 100644 --- a/ios/HybridViewModelColorProperty.swift +++ b/ios/HybridViewModelColorProperty.swift @@ -19,6 +19,14 @@ class HybridViewModelColorProperty: HybridViewModelColorPropertySpec, ValuedProp } } + func getValueAsync() throws -> Promise { + return Promise.async { self.property.value.toHexDouble() } + } + + func set(value: Double) throws { + property.value = UIColor(argb: Int(value)) + } + func addListener(onChanged: @escaping (Double) -> Void) throws -> () -> Void { return helper.addListener { (color: UIColor) in onChanged(color.toHexDouble()) diff --git a/ios/HybridViewModelEnumProperty.swift b/ios/HybridViewModelEnumProperty.swift index a758786d..e322356f 100644 --- a/ios/HybridViewModelEnumProperty.swift +++ b/ios/HybridViewModelEnumProperty.swift @@ -18,4 +18,12 @@ class HybridViewModelEnumProperty: HybridViewModelEnumPropertySpec, ValuedProper property.value = newValue } } + + func getValueAsync() throws -> Promise { + return Promise.async { self.property.value } + } + + func set(value: String) throws { + property.value = value + } } diff --git a/ios/HybridViewModelInstance.swift b/ios/HybridViewModelInstance.swift index f6308113..9a8ca3dd 100644 --- a/ios/HybridViewModelInstance.swift +++ b/ios/HybridViewModelInstance.swift @@ -70,4 +70,8 @@ class HybridViewModelInstance: HybridViewModelInstanceSpec { throw RuntimeError.error(withMessage: "Failed to replace ViewModel at path: \(path)") } } + + func viewModelAsync(path: String) throws -> Promise<(any HybridViewModelInstanceSpec)?> { + return Promise.async { try self.viewModel(path: path) } + } } diff --git a/ios/HybridViewModelListProperty.swift b/ios/HybridViewModelListProperty.swift index 11ac39af..bdf5521a 100644 --- a/ios/HybridViewModelListProperty.swift +++ b/ios/HybridViewModelListProperty.swift @@ -1,3 +1,4 @@ +import NitroModules import RiveRuntime class HybridViewModelListProperty: HybridViewModelListPropertySpec, ValuedPropertyProtocol { @@ -56,6 +57,14 @@ class HybridViewModelListProperty: HybridViewModelListPropertySpec, ValuedProper return true } + func getLengthAsync() throws -> Promise { + return Promise.async { self.length } + } + + func getInstanceAtAsync(index: Double) throws -> Promise<(any HybridViewModelInstanceSpec)?> { + return Promise.async { try self.getInstanceAt(index: index) } + } + func addListener(onChanged: @escaping () -> Void) throws -> () -> Void { helper.addListener({ _ in onChanged() }) } diff --git a/ios/HybridViewModelNumberProperty.swift b/ios/HybridViewModelNumberProperty.swift index 82dfafe5..6323fcf4 100644 --- a/ios/HybridViewModelNumberProperty.swift +++ b/ios/HybridViewModelNumberProperty.swift @@ -1,3 +1,4 @@ +import NitroModules import RiveRuntime class HybridViewModelNumberProperty: HybridViewModelNumberPropertySpec, ValuedPropertyProtocol { @@ -18,6 +19,14 @@ class HybridViewModelNumberProperty: HybridViewModelNumberPropertySpec, ValuedPr } } + func getValueAsync() throws -> Promise { + return Promise.async { Double(self.property.value) } + } + + func set(value: Double) throws { + property.value = Float(value) + } + func addListener(onChanged: @escaping (Double) -> Void) throws -> () -> Void { return helper.addListener({ floatValue in onChanged(Double(floatValue)) }) } diff --git a/ios/HybridViewModelStringProperty.swift b/ios/HybridViewModelStringProperty.swift index ea681f5e..09ec5273 100644 --- a/ios/HybridViewModelStringProperty.swift +++ b/ios/HybridViewModelStringProperty.swift @@ -18,4 +18,12 @@ class HybridViewModelStringProperty: HybridViewModelStringPropertySpec, ValuedPr property.value = newValue } } + + func getValueAsync() throws -> Promise { + return Promise.async { self.property.value } + } + + func set(value: String) throws { + property.value = value + } } diff --git a/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp index 8bbed4b7..057ebc34 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp @@ -28,6 +28,8 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; } #include #include "HybridViewModelSpec.hpp" #include "JHybridViewModelSpec.hpp" +#include +#include #include "HybridBindableArtboardSpec.hpp" #include "JHybridBindableArtboardSpec.hpp" #include "ArtboardBy.hpp" @@ -117,6 +119,104 @@ namespace margelo::nitro::rive { static const auto method = _javaPart->javaClassStatic()->getMethod /* referencedAssets */)>("updateReferencedAssets"); method(_javaPart, JReferencedAssetsType::fromCpp(referencedAssets)); } + std::shared_ptr>> JHybridRiveFileSpec::getViewModelNamesAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getViewModelNamesAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast>(__boxedResult); + __promise->resolve([&]() { + size_t __size = __result->size(); + std::vector __vector; + __vector.reserve(__size); + for (size_t __i = 0; __i < __size; __i++) { + auto __element = __result->getElement(__i); + __vector.push_back(__element->toStdString()); + } + return __vector; + }()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>>> JHybridRiveFileSpec::viewModelByNameAsync(const std::string& name, std::optional validate) { + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */, jni::alias_ref /* validate */)>("viewModelByNameAsync"); + auto __result = method(_javaPart, jni::make_jstring(name), validate.has_value() ? jni::JBoolean::valueOf(validate.value()) : nullptr); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>>> JHybridRiveFileSpec::defaultArtboardViewModelAsync(const std::optional& artboardBy) { + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* artboardBy */)>("defaultArtboardViewModelAsync"); + auto __result = method(_javaPart, artboardBy.has_value() ? JArtboardBy::fromCpp(artboardBy.value()) : nullptr); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr> JHybridRiveFileSpec::getArtboardCountAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getArtboardCountAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->value()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>> JHybridRiveFileSpec::getArtboardNamesAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getArtboardNamesAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast>(__boxedResult); + __promise->resolve([&]() { + size_t __size = __result->size(); + std::vector __vector; + __vector.reserve(__size); + for (size_t __i = 0; __i < __size; __i++) { + auto __element = __result->getElement(__i); + __vector.push_back(__element->toStdString()); + } + return __vector; + }()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } std::shared_ptr JHybridRiveFileSpec::getBindableArtboard(const std::string& name) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("getBindableArtboard"); auto __result = method(_javaPart, jni::make_jstring(name)); diff --git a/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp index fa3e0dd1..b184fe7b 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp @@ -60,6 +60,11 @@ namespace margelo::nitro::rive { std::optional> viewModelByName(const std::string& name) override; std::optional> defaultArtboardViewModel(const std::optional& artboardBy) override; void updateReferencedAssets(const ReferencedAssetsType& referencedAssets) override; + std::shared_ptr>> getViewModelNamesAsync() override; + std::shared_ptr>>> viewModelByNameAsync(const std::string& name, std::optional validate) override; + std::shared_ptr>>> defaultArtboardViewModelAsync(const std::optional& artboardBy) override; + std::shared_ptr> getArtboardCountAsync() override; + std::shared_ptr>> getArtboardNamesAsync() override; std::shared_ptr getBindableArtboard(const std::string& name) override; private: diff --git a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp index 83770717..e20e0e8c 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp @@ -9,6 +9,8 @@ +#include +#include #include #include "JFunc_void.hpp" #include @@ -55,6 +57,26 @@ namespace margelo::nitro::rive { } // Methods + std::shared_ptr> JHybridViewModelBooleanPropertySpec::getValueAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValueAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(static_cast(__result->value())); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + void JHybridViewModelBooleanPropertySpec::set(bool value) { + static const auto method = _javaPart->javaClassStatic()->getMethod("set"); + method(_javaPart, value); + } std::function JHybridViewModelBooleanPropertySpec::addListener(const std::function& onChanged) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_bool_cxx::fromCpp(onChanged)); diff --git a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp index 46064e88..4662ddf1 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods + std::shared_ptr> getValueAsync() override; + void set(bool value) override; std::function addListener(const std::function& onChanged) override; void removeListeners() override; diff --git a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp index 36775209..445fe329 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp @@ -9,6 +9,8 @@ +#include +#include #include #include "JFunc_void.hpp" #include @@ -55,6 +57,26 @@ namespace margelo::nitro::rive { } // Methods + std::shared_ptr> JHybridViewModelColorPropertySpec::getValueAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValueAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->value()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + void JHybridViewModelColorPropertySpec::set(double value) { + static const auto method = _javaPart->javaClassStatic()->getMethod("set"); + method(_javaPart, value); + } std::function JHybridViewModelColorPropertySpec::addListener(const std::function& onChanged) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_double_cxx::fromCpp(onChanged)); diff --git a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp index 4c828eda..ffbd11df 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods + std::shared_ptr> getValueAsync() override; + void set(double value) override; std::function addListener(const std::function& onChanged) override; void removeListeners() override; diff --git a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp index d5ba61df..8466983e 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp @@ -10,6 +10,8 @@ #include +#include +#include #include #include "JFunc_void.hpp" #include @@ -56,6 +58,26 @@ namespace margelo::nitro::rive { } // Methods + std::shared_ptr> JHybridViewModelEnumPropertySpec::getValueAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValueAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->toStdString()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + void JHybridViewModelEnumPropertySpec::set(const std::string& value) { + static const auto method = _javaPart->javaClassStatic()->getMethod /* value */)>("set"); + method(_javaPart, jni::make_jstring(value)); + } std::function JHybridViewModelEnumPropertySpec::addListener(const std::function& onChanged) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(onChanged)); diff --git a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp index 2bfb4140..abc6db3a 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods + std::shared_ptr> getValueAsync() override; + void set(const std::string& value) override; std::function addListener(const std::function& onChanged) override; void removeListeners() override; diff --git a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp index ccb8618e..6cdef82f 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp @@ -51,6 +51,8 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include "JHybridViewModelArtboardPropertySpec.hpp" #include "HybridViewModelInstanceSpec.hpp" #include "JHybridViewModelInstanceSpec.hpp" +#include +#include namespace margelo::nitro::rive { @@ -139,6 +141,22 @@ namespace margelo::nitro::rive { auto __result = method(_javaPart, jni::make_jstring(path)); return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } + std::shared_ptr>>> JHybridViewModelInstanceSpec::viewModelAsync(const std::string& path) { + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("viewModelAsync"); + auto __result = method(_javaPart, jni::make_jstring(path)); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } void JHybridViewModelInstanceSpec::replaceViewModel(const std::string& path, const std::shared_ptr& instance) { static const auto method = _javaPart->javaClassStatic()->getMethod /* path */, jni::alias_ref /* instance */)>("replaceViewModel"); method(_javaPart, jni::make_jstring(path), std::dynamic_pointer_cast(instance)->getJavaPart()); diff --git a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp index 8fe85dd6..b5b36233 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp @@ -64,6 +64,7 @@ namespace margelo::nitro::rive { std::optional> listProperty(const std::string& path) override; std::optional> artboardProperty(const std::string& path) override; std::optional> viewModel(const std::string& path) override; + std::shared_ptr>>> viewModelAsync(const std::string& path) override; void replaceViewModel(const std::string& path, const std::shared_ptr& instance) override; private: diff --git a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp index 96dbe630..0c1901cd 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp @@ -14,6 +14,8 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include "HybridViewModelInstanceSpec.hpp" #include #include "JHybridViewModelInstanceSpec.hpp" +#include +#include #include #include "JFunc_void.hpp" #include @@ -60,6 +62,38 @@ namespace margelo::nitro::rive { auto __result = method(_javaPart, index); return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } + std::shared_ptr> JHybridViewModelListPropertySpec::getLengthAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getLengthAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->value()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>>> JHybridViewModelListPropertySpec::getInstanceAtAsync(double index) { + static const auto method = _javaPart->javaClassStatic()->getMethod(double /* index */)>("getInstanceAtAsync"); + auto __result = method(_javaPart, index); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } void JHybridViewModelListPropertySpec::addInstance(const std::shared_ptr& instance) { static const auto method = _javaPart->javaClassStatic()->getMethod /* instance */)>("addInstance"); method(_javaPart, std::dynamic_pointer_cast(instance)->getJavaPart()); diff --git a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp index 14f4ba84..d779a623 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods std::optional> getInstanceAt(double index) override; + std::shared_ptr> getLengthAsync() override; + std::shared_ptr>>> getInstanceAtAsync(double index) override; void addInstance(const std::shared_ptr& instance) override; bool addInstanceAt(const std::shared_ptr& instance, double index) override; void removeInstance(const std::shared_ptr& instance) override; diff --git a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp index fa0b4672..aec9f3a3 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp @@ -9,6 +9,8 @@ +#include +#include #include #include "JFunc_void.hpp" #include @@ -55,6 +57,26 @@ namespace margelo::nitro::rive { } // Methods + std::shared_ptr> JHybridViewModelNumberPropertySpec::getValueAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValueAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->value()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + void JHybridViewModelNumberPropertySpec::set(double value) { + static const auto method = _javaPart->javaClassStatic()->getMethod("set"); + method(_javaPart, value); + } std::function JHybridViewModelNumberPropertySpec::addListener(const std::function& onChanged) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_double_cxx::fromCpp(onChanged)); diff --git a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp index e0953691..2116e132 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods + std::shared_ptr> getValueAsync() override; + void set(double value) override; std::function addListener(const std::function& onChanged) override; void removeListeners() override; diff --git a/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp index f167ad35..e105963c 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp @@ -15,6 +15,8 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include "HybridViewModelInstanceSpec.hpp" #include #include "JHybridViewModelInstanceSpec.hpp" +#include +#include namespace margelo::nitro::rive { @@ -83,5 +85,53 @@ namespace margelo::nitro::rive { auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } + std::shared_ptr>>> JHybridViewModelSpec::createInstanceByNameAsync(const std::string& name) { + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("createInstanceByNameAsync"); + auto __result = method(_javaPart, jni::make_jstring(name)); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>>> JHybridViewModelSpec::createDefaultInstanceAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("createDefaultInstanceAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + std::shared_ptr>>> JHybridViewModelSpec::createBlankInstanceAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("createBlankInstanceAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise>>::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp index 7b0a1d4d..41bd0779 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp @@ -60,6 +60,9 @@ namespace margelo::nitro::rive { std::optional> createInstanceByName(const std::string& name) override; std::optional> createDefaultInstance() override; std::optional> createInstance() override; + std::shared_ptr>>> createInstanceByNameAsync(const std::string& name) override; + std::shared_ptr>>> createDefaultInstanceAsync() override; + std::shared_ptr>>> createBlankInstanceAsync() override; private: jni::global_ref _javaPart; diff --git a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp index 0d87f455..ae9d77ee 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp @@ -10,6 +10,8 @@ #include +#include +#include #include #include "JFunc_void.hpp" #include @@ -56,6 +58,26 @@ namespace margelo::nitro::rive { } // Methods + std::shared_ptr> JHybridViewModelStringPropertySpec::getValueAsync() { + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValueAsync"); + auto __result = method(_javaPart); + return [&]() { + auto __promise = Promise::create(); + __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->toStdString()); + }); + __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { + jni::JniException __jniError(__throwable); + __promise->reject(std::make_exception_ptr(__jniError)); + }); + return __promise; + }(); + } + void JHybridViewModelStringPropertySpec::set(const std::string& value) { + static const auto method = _javaPart->javaClassStatic()->getMethod /* value */)>("set"); + method(_javaPart, jni::make_jstring(value)); + } std::function JHybridViewModelStringPropertySpec::addListener(const std::function& onChanged) { static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(onChanged)); diff --git a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp index 158d8344..8dfd69d3 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp @@ -57,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods + std::shared_ptr> getValueAsync() override; + void set(const std::string& value) override; std::function addListener(const std::function& onChanged) override; void removeListeners() override; diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt index 92746f59..39625a33 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -54,6 +55,26 @@ abstract class HybridRiveFileSpec: HybridObject() { @Keep abstract fun updateReferencedAssets(referencedAssets: ReferencedAssetsType): Unit + @DoNotStrip + @Keep + abstract fun getViewModelNamesAsync(): Promise> + + @DoNotStrip + @Keep + abstract fun viewModelByNameAsync(name: String, validate: Boolean?): Promise + + @DoNotStrip + @Keep + abstract fun defaultArtboardViewModelAsync(artboardBy: ArtboardBy?): Promise + + @DoNotStrip + @Keep + abstract fun getArtboardCountAsync(): Promise + + @DoNotStrip + @Keep + abstract fun getArtboardNamesAsync(): Promise> + @DoNotStrip @Keep abstract fun getBindableArtboard(name: String): HybridBindableArtboardSpec diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt index d85ea31a..6878d126 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -32,6 +33,14 @@ abstract class HybridViewModelBooleanPropertySpec: HybridViewModelPropertySpec() abstract var value: Boolean // Methods + @DoNotStrip + @Keep + abstract fun getValueAsync(): Promise + + @DoNotStrip + @Keep + abstract fun set(value: Boolean): Unit + abstract fun addListener(onChanged: (value: Boolean) -> Unit): () -> Unit @DoNotStrip diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt index cc77ae23..9495e973 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -32,6 +33,14 @@ abstract class HybridViewModelColorPropertySpec: HybridViewModelPropertySpec() { abstract var value: Double // Methods + @DoNotStrip + @Keep + abstract fun getValueAsync(): Promise + + @DoNotStrip + @Keep + abstract fun set(value: Double): Unit + abstract fun addListener(onChanged: (value: Double) -> Unit): () -> Unit @DoNotStrip diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt index fc8ca0d1..a3b61f9c 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -32,6 +33,14 @@ abstract class HybridViewModelEnumPropertySpec: HybridViewModelPropertySpec() { abstract var value: String // Methods + @DoNotStrip + @Keep + abstract fun getValueAsync(): Promise + + @DoNotStrip + @Keep + abstract fun set(value: String): Unit + abstract fun addListener(onChanged: (value: String) -> Unit): () -> Unit @DoNotStrip diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt index 5727b5b2..dd360e91 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -70,6 +71,10 @@ abstract class HybridViewModelInstanceSpec: HybridObject() { @Keep abstract fun viewModel(path: String): HybridViewModelInstanceSpec? + @DoNotStrip + @Keep + abstract fun viewModelAsync(path: String): Promise + @DoNotStrip @Keep abstract fun replaceViewModel(path: String, instance: HybridViewModelInstanceSpec): Unit diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt index b250f717..5fd5551a 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -34,6 +35,14 @@ abstract class HybridViewModelListPropertySpec: HybridViewModelPropertySpec() { @Keep abstract fun getInstanceAt(index: Double): HybridViewModelInstanceSpec? + @DoNotStrip + @Keep + abstract fun getLengthAsync(): Promise + + @DoNotStrip + @Keep + abstract fun getInstanceAtAsync(index: Double): Promise + @DoNotStrip @Keep abstract fun addInstance(instance: HybridViewModelInstanceSpec): Unit diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt index 71b04eb2..9504db8d 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -32,6 +33,14 @@ abstract class HybridViewModelNumberPropertySpec: HybridViewModelPropertySpec() abstract var value: Double // Methods + @DoNotStrip + @Keep + abstract fun getValueAsync(): Promise + + @DoNotStrip + @Keep + abstract fun set(value: Double): Unit + abstract fun addListener(onChanged: (value: Double) -> Unit): () -> Unit @DoNotStrip diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt index be153d81..99922fa0 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -53,6 +54,18 @@ abstract class HybridViewModelSpec: HybridObject() { @DoNotStrip @Keep abstract fun createInstance(): HybridViewModelInstanceSpec? + + @DoNotStrip + @Keep + abstract fun createInstanceByNameAsync(name: String): Promise + + @DoNotStrip + @Keep + abstract fun createDefaultInstanceAsync(): Promise + + @DoNotStrip + @Keep + abstract fun createBlankInstanceAsync(): Promise // Default implementation of `HybridObject.toString()` override fun toString(): String { diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt index 6280b61b..3136c77e 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt @@ -10,6 +10,7 @@ package com.margelo.nitro.rive import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip +import com.margelo.nitro.core.Promise import com.margelo.nitro.core.HybridObject /** @@ -32,6 +33,14 @@ abstract class HybridViewModelStringPropertySpec: HybridViewModelPropertySpec() abstract var value: String // Methods + @DoNotStrip + @Keep + abstract fun getValueAsync(): Promise + + @DoNotStrip + @Keep + abstract fun set(value: String): Unit + abstract fun addListener(onChanged: (value: String) -> Unit): () -> Unit @DoNotStrip diff --git a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp index 89ae6cb9..7c1b9ce4 100644 --- a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp +++ b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp @@ -82,6 +82,38 @@ namespace margelo::nitro::rive::bridge::swift { return swiftPart.toUnsafe(); } + // pragma MARK: std::function& /* result */)> + Func_void_std__vector_std__string_ create_Func_void_std__vector_std__string_(void* NON_NULL swiftClosureWrapper) noexcept { + auto swiftClosure = RNRive::Func_void_std__vector_std__string_::fromUnsafe(swiftClosureWrapper); + return [swiftClosure = std::move(swiftClosure)](const std::vector& result) mutable -> void { + swiftClosure.call(result); + }; + } + + // pragma MARK: std::function + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept { + auto swiftClosure = RNRive::Func_void_std__exception_ptr::fromUnsafe(swiftClosureWrapper); + return [swiftClosure = std::move(swiftClosure)](const std::exception_ptr& error) mutable -> void { + swiftClosure.call(error); + }; + } + + // pragma MARK: std::function>& /* result */)> + Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ create_Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__(void* NON_NULL swiftClosureWrapper) noexcept { + auto swiftClosure = RNRive::Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__::fromUnsafe(swiftClosureWrapper); + return [swiftClosure = std::move(swiftClosure)](const std::optional>& result) mutable -> void { + swiftClosure.call(result); + }; + } + + // pragma MARK: std::function + Func_void_double create_Func_void_double(void* NON_NULL swiftClosureWrapper) noexcept { + auto swiftClosure = RNRive::Func_void_double::fromUnsafe(swiftClosureWrapper); + return [swiftClosure = std::move(swiftClosure)](double result) mutable -> void { + swiftClosure.call(result); + }; + } + // pragma MARK: std::shared_ptr std::shared_ptr create_std__shared_ptr_HybridRiveFileSpec_(void* NON_NULL swiftUnsafePointer) noexcept { RNRive::HybridRiveFileSpec_cxx swiftPart = RNRive::HybridRiveFileSpec_cxx::fromUnsafe(swiftUnsafePointer); @@ -106,14 +138,6 @@ namespace margelo::nitro::rive::bridge::swift { }; } - // pragma MARK: std::function - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept { - auto swiftClosure = RNRive::Func_void_std__exception_ptr::fromUnsafe(swiftClosureWrapper); - return [swiftClosure = std::move(swiftClosure)](const std::exception_ptr& error) mutable -> void { - swiftClosure.call(error); - }; - } - // pragma MARK: std::shared_ptr std::shared_ptr create_std__shared_ptr_HybridRiveFileFactorySpec_(void* NON_NULL swiftUnsafePointer) noexcept { RNRive::HybridRiveFileFactorySpec_cxx swiftPart = RNRive::HybridRiveFileFactorySpec_cxx::fromUnsafe(swiftUnsafePointer); @@ -274,6 +298,14 @@ namespace margelo::nitro::rive::bridge::swift { return swiftPart.toUnsafe(); } + // pragma MARK: std::function>& /* result */)> + Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ create_Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(void* NON_NULL swiftClosureWrapper) noexcept { + auto swiftClosure = RNRive::Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__::fromUnsafe(swiftClosureWrapper); + return [swiftClosure = std::move(swiftClosure)](const std::optional>& result) mutable -> void { + swiftClosure.call(result); + }; + } + // pragma MARK: std::shared_ptr std::shared_ptr create_std__shared_ptr_HybridViewModelPropertySpec_(void* NON_NULL swiftUnsafePointer) noexcept { RNRive::HybridViewModelPropertySpec_cxx swiftPart = RNRive::HybridViewModelPropertySpec_cxx::fromUnsafe(swiftUnsafePointer); @@ -434,19 +466,11 @@ namespace margelo::nitro::rive::bridge::swift { return swiftPart.toUnsafe(); } - // pragma MARK: std::function - Func_void_double create_Func_void_double(void* NON_NULL swiftClosureWrapper) noexcept { - auto swiftClosure = RNRive::Func_void_double::fromUnsafe(swiftClosureWrapper); - return [swiftClosure = std::move(swiftClosure)](double value) mutable -> void { - swiftClosure.call(value); - }; - } - - // pragma MARK: std::function + // pragma MARK: std::function Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept { auto swiftClosure = RNRive::Func_void_std__string::fromUnsafe(swiftClosureWrapper); - return [swiftClosure = std::move(swiftClosure)](const std::string& value) mutable -> void { - swiftClosure.call(value); + return [swiftClosure = std::move(swiftClosure)](const std::string& result) mutable -> void { + swiftClosure.call(result); }; } diff --git a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp index 66dd7c81..d442201c 100644 --- a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +++ b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp @@ -333,6 +333,145 @@ namespace margelo::nitro::rive::bridge::swift { return vector; } + // pragma MARK: std::shared_ptr>> + /** + * Specialized version of `std::shared_ptr>>`. + */ + using std__shared_ptr_Promise_std__vector_std__string___ = std::shared_ptr>>; + inline std::shared_ptr>> create_std__shared_ptr_Promise_std__vector_std__string___() noexcept { + return Promise>::create(); + } + inline PromiseHolder> wrap_std__shared_ptr_Promise_std__vector_std__string___(std::shared_ptr>> promise) noexcept { + return PromiseHolder>(std::move(promise)); + } + + // pragma MARK: std::function& /* result */)> + /** + * Specialized version of `std::function&)>`. + */ + using Func_void_std__vector_std__string_ = std::function& /* result */)>; + /** + * Wrapper class for a `std::function& / * result * /)>`, this can be used from Swift. + */ + class Func_void_std__vector_std__string__Wrapper final { + public: + explicit Func_void_std__vector_std__string__Wrapper(std::function& /* result */)>&& func): _function(std::make_unique& /* result */)>>(std::move(func))) {} + inline void call(std::vector result) const noexcept { + _function->operator()(result); + } + private: + std::unique_ptr& /* result */)>> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__vector_std__string_ create_Func_void_std__vector_std__string_(void* NON_NULL swiftClosureWrapper) noexcept; + inline Func_void_std__vector_std__string__Wrapper wrap_Func_void_std__vector_std__string_(Func_void_std__vector_std__string_ value) noexcept { + return Func_void_std__vector_std__string__Wrapper(std::move(value)); + } + + // pragma MARK: std::function + /** + * Specialized version of `std::function`. + */ + using Func_void_std__exception_ptr = std::function; + /** + * Wrapper class for a `std::function`, this can be used from Swift. + */ + class Func_void_std__exception_ptr_Wrapper final { + public: + explicit Func_void_std__exception_ptr_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} + inline void call(std::exception_ptr error) const noexcept { + _function->operator()(error); + } + private: + std::unique_ptr> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept; + inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept { + return Func_void_std__exception_ptr_Wrapper(std::move(value)); + } + + // pragma MARK: std::shared_ptr>>> + /** + * Specialized version of `std::shared_ptr>>>`. + */ + using std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____ = std::shared_ptr>>>; + inline std::shared_ptr>>> create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____() noexcept { + return Promise>>::create(); + } + inline PromiseHolder>> wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____(std::shared_ptr>>> promise) noexcept { + return PromiseHolder>>(std::move(promise)); + } + + // pragma MARK: std::function>& /* result */)> + /** + * Specialized version of `std::function>&)>`. + */ + using Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ = std::function>& /* result */)>; + /** + * Wrapper class for a `std::function>& / * result * /)>`, this can be used from Swift. + */ + class Func_void_std__optional_std__shared_ptr_HybridViewModelSpec___Wrapper final { + public: + explicit Func_void_std__optional_std__shared_ptr_HybridViewModelSpec___Wrapper(std::function>& /* result */)>&& func): _function(std::make_unique>& /* result */)>>(std::move(func))) {} + inline void call(std::optional> result) const noexcept { + _function->operator()(result); + } + private: + std::unique_ptr>& /* result */)>> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ create_Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__(void* NON_NULL swiftClosureWrapper) noexcept; + inline Func_void_std__optional_std__shared_ptr_HybridViewModelSpec___Wrapper wrap_Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__(Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ value) noexcept { + return Func_void_std__optional_std__shared_ptr_HybridViewModelSpec___Wrapper(std::move(value)); + } + + // pragma MARK: std::optional + /** + * Specialized version of `std::optional`. + */ + using std__optional_bool_ = std::optional; + inline std::optional create_std__optional_bool_(const bool& value) noexcept { + return std::optional(value); + } + inline bool has_value_std__optional_bool_(const std::optional& optional) noexcept { + return optional.has_value(); + } + inline bool get_std__optional_bool_(const std::optional& optional) noexcept { + return optional.value(); + } + + // pragma MARK: std::shared_ptr> + /** + * Specialized version of `std::shared_ptr>`. + */ + using std__shared_ptr_Promise_double__ = std::shared_ptr>; + inline std::shared_ptr> create_std__shared_ptr_Promise_double__() noexcept { + return Promise::create(); + } + inline PromiseHolder wrap_std__shared_ptr_Promise_double__(std::shared_ptr> promise) noexcept { + return PromiseHolder(std::move(promise)); + } + + // pragma MARK: std::function + /** + * Specialized version of `std::function`. + */ + using Func_void_double = std::function; + /** + * Wrapper class for a `std::function`, this can be used from Swift. + */ + class Func_void_double_Wrapper final { + public: + explicit Func_void_double_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} + inline void call(double result) const noexcept { + _function->operator()(result); + } + private: + std::unique_ptr> _function; + } SWIFT_NONCOPYABLE; + Func_void_double create_Func_void_double(void* NON_NULL swiftClosureWrapper) noexcept; + inline Func_void_double_Wrapper wrap_Func_void_double(Func_void_double value) noexcept { + return Func_void_double_Wrapper(std::move(value)); + } + // pragma MARK: std::shared_ptr /** * Specialized version of `std::shared_ptr`. @@ -363,6 +502,33 @@ namespace margelo::nitro::rive::bridge::swift { return Result::withError(error); } + // pragma MARK: Result>>> + using Result_std__shared_ptr_Promise_std__vector_std__string____ = Result>>>; + inline Result_std__shared_ptr_Promise_std__vector_std__string____ create_Result_std__shared_ptr_Promise_std__vector_std__string____(const std::shared_ptr>>& value) noexcept { + return Result>>>::withValue(value); + } + inline Result_std__shared_ptr_Promise_std__vector_std__string____ create_Result_std__shared_ptr_Promise_std__vector_std__string____(const std::exception_ptr& error) noexcept { + return Result>>>::withError(error); + } + + // pragma MARK: Result>>>> + using Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____ = Result>>>>; + inline Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____ create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(const std::shared_ptr>>>& value) noexcept { + return Result>>>>::withValue(value); + } + inline Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____ create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(const std::exception_ptr& error) noexcept { + return Result>>>>::withError(error); + } + + // pragma MARK: Result>> + using Result_std__shared_ptr_Promise_double___ = Result>>; + inline Result_std__shared_ptr_Promise_double___ create_Result_std__shared_ptr_Promise_double___(const std::shared_ptr>& value) noexcept { + return Result>>::withValue(value); + } + inline Result_std__shared_ptr_Promise_double___ create_Result_std__shared_ptr_Promise_double___(const std::exception_ptr& error) noexcept { + return Result>>::withError(error); + } + // pragma MARK: Result> using Result_std__shared_ptr_HybridBindableArtboardSpec__ = Result>; inline Result_std__shared_ptr_HybridBindableArtboardSpec__ create_Result_std__shared_ptr_HybridBindableArtboardSpec__(const std::shared_ptr& value) noexcept { @@ -406,28 +572,6 @@ namespace margelo::nitro::rive::bridge::swift { return Func_void_std__shared_ptr_HybridRiveFileSpec__Wrapper(std::move(value)); } - // pragma MARK: std::function - /** - * Specialized version of `std::function`. - */ - using Func_void_std__exception_ptr = std::function; - /** - * Wrapper class for a `std::function`, this can be used from Swift. - */ - class Func_void_std__exception_ptr_Wrapper final { - public: - explicit Func_void_std__exception_ptr_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} - inline void call(std::exception_ptr error) const noexcept { - _function->operator()(error); - } - private: - std::unique_ptr> _function; - } SWIFT_NONCOPYABLE; - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept; - inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept { - return Func_void_std__exception_ptr_Wrapper(std::move(value)); - } - // pragma MARK: std::optional /** * Specialized version of `std::optional`. @@ -661,21 +805,6 @@ namespace margelo::nitro::rive::bridge::swift { using std__weak_ptr_HybridRiveRuntimeSpec_ = std::weak_ptr; inline std__weak_ptr_HybridRiveRuntimeSpec_ weakify_std__shared_ptr_HybridRiveRuntimeSpec_(const std::shared_ptr& strong) noexcept { return strong; } - // pragma MARK: std::optional - /** - * Specialized version of `std::optional`. - */ - using std__optional_bool_ = std::optional; - inline std::optional create_std__optional_bool_(const bool& value) noexcept { - return std::optional(value); - } - inline bool has_value_std__optional_bool_(const std::optional& optional) noexcept { - return optional.has_value(); - } - inline bool get_std__optional_bool_(const std::optional& optional) noexcept { - return optional.value(); - } - // pragma MARK: std::optional /** * Specialized version of `std::optional`. @@ -993,6 +1122,49 @@ namespace margelo::nitro::rive::bridge::swift { return Result::withError(error); } + // pragma MARK: std::shared_ptr>>> + /** + * Specialized version of `std::shared_ptr>>>`. + */ + using std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ = std::shared_ptr>>>; + inline std::shared_ptr>>> create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() noexcept { + return Promise>>::create(); + } + inline PromiseHolder>> wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(std::shared_ptr>>> promise) noexcept { + return PromiseHolder>>(std::move(promise)); + } + + // pragma MARK: std::function>& /* result */)> + /** + * Specialized version of `std::function>&)>`. + */ + using Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ = std::function>& /* result */)>; + /** + * Wrapper class for a `std::function>& / * result * /)>`, this can be used from Swift. + */ + class Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec___Wrapper final { + public: + explicit Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec___Wrapper(std::function>& /* result */)>&& func): _function(std::make_unique>& /* result */)>>(std::move(func))) {} + inline void call(std::optional> result) const noexcept { + _function->operator()(result); + } + private: + std::unique_ptr>& /* result */)>> _function; + } SWIFT_NONCOPYABLE; + Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ create_Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(void* NON_NULL swiftClosureWrapper) noexcept; + inline Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec___Wrapper wrap_Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ value) noexcept { + return Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec___Wrapper(std::move(value)); + } + + // pragma MARK: Result>>>> + using Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ = Result>>>>; + inline Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(const std::shared_ptr>>>& value) noexcept { + return Result>>>>::withValue(value); + } + inline Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(const std::exception_ptr& error) noexcept { + return Result>>>>::withError(error); + } + // pragma MARK: std::shared_ptr /** * Specialized version of `std::shared_ptr`. @@ -1356,28 +1528,6 @@ namespace margelo::nitro::rive::bridge::swift { return Result>>::withError(error); } - // pragma MARK: std::function - /** - * Specialized version of `std::function`. - */ - using Func_void_double = std::function; - /** - * Wrapper class for a `std::function`, this can be used from Swift. - */ - class Func_void_double_Wrapper final { - public: - explicit Func_void_double_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} - inline void call(double value) const noexcept { - _function->operator()(value); - } - private: - std::unique_ptr> _function; - } SWIFT_NONCOPYABLE; - Func_void_double create_Func_void_double(void* NON_NULL swiftClosureWrapper) noexcept; - inline Func_void_double_Wrapper wrap_Func_void_double(Func_void_double value) noexcept { - return Func_void_double_Wrapper(std::move(value)); - } - // pragma MARK: Result> using Result_std__function_void____ = Result>; inline Result_std__function_void____ create_Result_std__function_void____(const std::function& value) noexcept { @@ -1387,28 +1537,49 @@ namespace margelo::nitro::rive::bridge::swift { return Result>::withError(error); } - // pragma MARK: std::function + // pragma MARK: std::shared_ptr> + /** + * Specialized version of `std::shared_ptr>`. + */ + using std__shared_ptr_Promise_std__string__ = std::shared_ptr>; + inline std::shared_ptr> create_std__shared_ptr_Promise_std__string__() noexcept { + return Promise::create(); + } + inline PromiseHolder wrap_std__shared_ptr_Promise_std__string__(std::shared_ptr> promise) noexcept { + return PromiseHolder(std::move(promise)); + } + + // pragma MARK: std::function /** * Specialized version of `std::function`. */ - using Func_void_std__string = std::function; + using Func_void_std__string = std::function; /** - * Wrapper class for a `std::function`, this can be used from Swift. + * Wrapper class for a `std::function`, this can be used from Swift. */ class Func_void_std__string_Wrapper final { public: - explicit Func_void_std__string_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} - inline void call(std::string value) const noexcept { - _function->operator()(value); + explicit Func_void_std__string_Wrapper(std::function&& func): _function(std::make_unique>(std::move(func))) {} + inline void call(std::string result) const noexcept { + _function->operator()(result); } private: - std::unique_ptr> _function; + std::unique_ptr> _function; } SWIFT_NONCOPYABLE; Func_void_std__string create_Func_void_std__string(void* NON_NULL swiftClosureWrapper) noexcept; inline Func_void_std__string_Wrapper wrap_Func_void_std__string(Func_void_std__string value) noexcept { return Func_void_std__string_Wrapper(std::move(value)); } + // pragma MARK: Result>> + using Result_std__shared_ptr_Promise_std__string___ = Result>>; + inline Result_std__shared_ptr_Promise_std__string___ create_Result_std__shared_ptr_Promise_std__string___(const std::shared_ptr>& value) noexcept { + return Result>>::withValue(value); + } + inline Result_std__shared_ptr_Promise_std__string___ create_Result_std__shared_ptr_Promise_std__string___(const std::exception_ptr& error) noexcept { + return Result>>::withError(error); + } + // pragma MARK: std::optional> /** * Specialized version of `std::optional>`. diff --git a/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp b/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp index c2d1cd57..9beef6ad 100644 --- a/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridRiveFileSpecSwift.hpp @@ -38,6 +38,7 @@ namespace margelo::nitro::rive { class HybridBindableArtboardSpec; } #include "ResolvedReferencedAsset.hpp" #include #include "HybridRiveImageSpec.hpp" +#include #include "HybridBindableArtboardSpec.hpp" #include "RNRive-Swift-Cxx-Umbrella.hpp" @@ -130,6 +131,46 @@ namespace margelo::nitro::rive { std::rethrow_exception(__result.error()); } } + inline std::shared_ptr>> getViewModelNamesAsync() override { + auto __result = _swiftPart.getViewModelNamesAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>>> viewModelByNameAsync(const std::string& name, std::optional validate) override { + auto __result = _swiftPart.viewModelByNameAsync(name, validate); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>>> defaultArtboardViewModelAsync(const std::optional& artboardBy) override { + auto __result = _swiftPart.defaultArtboardViewModelAsync(artboardBy); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr> getArtboardCountAsync() override { + auto __result = _swiftPart.getArtboardCountAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>> getArtboardNamesAsync() override { + auto __result = _swiftPart.getArtboardNamesAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } inline std::shared_ptr getBindableArtboard(const std::string& name) override { auto __result = _swiftPart.getBindableArtboard(name); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp index 8fee0cc2..26283ea5 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelBooleanPropertySpecSwift.hpp @@ -15,6 +15,7 @@ namespace RNRive { class HybridViewModelBooleanPropertySpec_cxx; } // Forward declaration of `HybridViewModelPropertySpecSwift` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -74,6 +75,20 @@ namespace margelo::nitro::rive { public: // Methods + inline std::shared_ptr> getValueAsync() override { + auto __result = _swiftPart.getValueAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline void set(bool value) override { + auto __result = _swiftPart.set(std::forward(value)); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + } inline std::function addListener(const std::function& onChanged) override { auto __result = _swiftPart.addListener(onChanged); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp index c86b8a5e..19666def 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelColorPropertySpecSwift.hpp @@ -15,6 +15,7 @@ namespace RNRive { class HybridViewModelColorPropertySpec_cxx; } // Forward declaration of `HybridViewModelPropertySpecSwift` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -74,6 +75,20 @@ namespace margelo::nitro::rive { public: // Methods + inline std::shared_ptr> getValueAsync() override { + auto __result = _swiftPart.getValueAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline void set(double value) override { + auto __result = _swiftPart.set(std::forward(value)); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + } inline std::function addListener(const std::function& onChanged) override { auto __result = _swiftPart.addListener(onChanged); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp index 93f96d68..e0b7fb7d 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelEnumPropertySpecSwift.hpp @@ -16,6 +16,7 @@ namespace RNRive { class HybridViewModelEnumPropertySpec_cxx; } namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } #include +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -76,6 +77,20 @@ namespace margelo::nitro::rive { public: // Methods + inline std::shared_ptr> getValueAsync() override { + auto __result = _swiftPart.getValueAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline void set(const std::string& value) override { + auto __result = _swiftPart.set(value); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + } inline std::function addListener(const std::function& onChanged) override { auto __result = _swiftPart.addListener(onChanged); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp index 0c1b54a2..1d0e86ff 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp @@ -46,6 +46,7 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include "HybridViewModelListPropertySpec.hpp" #include "HybridViewModelArtboardPropertySpec.hpp" #include "HybridViewModelInstanceSpec.hpp" +#include #include "RNRive-Swift-Cxx-Umbrella.hpp" @@ -180,6 +181,14 @@ namespace margelo::nitro::rive { auto __value = std::move(__result.value()); return __value; } + inline std::shared_ptr>>> viewModelAsync(const std::string& path) override { + auto __result = _swiftPart.viewModelAsync(path); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } inline void replaceViewModel(const std::string& path, const std::shared_ptr& instance) override { auto __result = _swiftPart.replaceViewModel(path, instance); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.hpp index 5c617604..aa38b8cc 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.hpp @@ -20,6 +20,7 @@ namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } #include #include "HybridViewModelInstanceSpec.hpp" #include +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -84,6 +85,22 @@ namespace margelo::nitro::rive { auto __value = std::move(__result.value()); return __value; } + inline std::shared_ptr> getLengthAsync() override { + auto __result = _swiftPart.getLengthAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>>> getInstanceAtAsync(double index) override { + auto __result = _swiftPart.getInstanceAtAsync(std::forward(index)); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } inline void addInstance(const std::shared_ptr& instance) override { auto __result = _swiftPart.addInstance(instance); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp index 9e7e9248..6a49c876 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelNumberPropertySpecSwift.hpp @@ -15,6 +15,7 @@ namespace RNRive { class HybridViewModelNumberPropertySpec_cxx; } // Forward declaration of `HybridViewModelPropertySpecSwift` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -74,6 +75,20 @@ namespace margelo::nitro::rive { public: // Methods + inline std::shared_ptr> getValueAsync() override { + auto __result = _swiftPart.getValueAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline void set(double value) override { + auto __result = _swiftPart.set(std::forward(value)); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + } inline std::function addListener(const std::function& onChanged) override { auto __result = _swiftPart.addListener(onChanged); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp index 353f6f10..7d18ce1f 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelSpecSwift.hpp @@ -19,6 +19,7 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include #include "HybridViewModelInstanceSpec.hpp" #include +#include #include "RNRive-Swift-Cxx-Umbrella.hpp" @@ -111,6 +112,30 @@ namespace margelo::nitro::rive { auto __value = std::move(__result.value()); return __value; } + inline std::shared_ptr>>> createInstanceByNameAsync(const std::string& name) override { + auto __result = _swiftPart.createInstanceByNameAsync(name); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>>> createDefaultInstanceAsync() override { + auto __result = _swiftPart.createDefaultInstanceAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline std::shared_ptr>>> createBlankInstanceAsync() override { + auto __result = _swiftPart.createBlankInstanceAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } private: RNRive::HybridViewModelSpec_cxx _swiftPart; diff --git a/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp b/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp index 4e0dfee6..bcbb8519 100644 --- a/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp +++ b/nitrogen/generated/ios/c++/HybridViewModelStringPropertySpecSwift.hpp @@ -16,6 +16,7 @@ namespace RNRive { class HybridViewModelStringPropertySpec_cxx; } namespace margelo::nitro::rive { class HybridViewModelPropertySpecSwift; } #include +#include #include #include "HybridViewModelPropertySpecSwift.hpp" @@ -76,6 +77,20 @@ namespace margelo::nitro::rive { public: // Methods + inline std::shared_ptr> getValueAsync() override { + auto __result = _swiftPart.getValueAsync(); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + auto __value = std::move(__result.value()); + return __value; + } + inline void set(const std::string& value) override { + auto __result = _swiftPart.set(value); + if (__result.hasError()) [[unlikely]] { + std::rethrow_exception(__result.error()); + } + } inline std::function addListener(const std::function& onChanged) override { auto __result = _swiftPart.addListener(onChanged); if (__result.hasError()) [[unlikely]] { diff --git a/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__.swift b/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__.swift new file mode 100644 index 00000000..ccfea4b3 --- /dev/null +++ b/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__.swift @@ -0,0 +1,57 @@ +/// +/// Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__.swift +/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. +/// https://github.com/mrousavy/nitro +/// Copyright © Marc Rousavy @ Margelo +/// + +import NitroModules + +/** + * Wraps a Swift `(_ value: (any HybridViewModelInstanceSpec)?) -> Void` as a class. + * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. + */ +public final class Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ { + public typealias bridge = margelo.nitro.rive.bridge.swift + + private let closure: (_ value: (any HybridViewModelInstanceSpec)?) -> Void + + public init(_ closure: @escaping (_ value: (any HybridViewModelInstanceSpec)?) -> Void) { + self.closure = closure + } + + @inline(__always) + public func call(value: bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__) -> Void { + self.closure({ () -> (any HybridViewModelInstanceSpec)? in + if bridge.has_value_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(value) { + let __unwrapped = bridge.get_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(value) + return { () -> any HybridViewModelInstanceSpec in + let __unsafePointer = bridge.get_std__shared_ptr_HybridViewModelInstanceSpec_(__unwrapped) + let __instance = HybridViewModelInstanceSpec_cxx.fromUnsafe(__unsafePointer) + return __instance.getHybridViewModelInstanceSpec() + }() + } else { + return nil + } + }()) + } + + /** + * Casts this instance to a retained unsafe raw pointer. + * This acquires one additional strong reference on the object! + */ + @inline(__always) + public func toUnsafe() -> UnsafeMutableRawPointer { + return Unmanaged.passRetained(self).toOpaque() + } + + /** + * Casts an unsafe pointer to a `Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__`. + * The pointer has to be a retained opaque `Unmanaged`. + * This removes one strong reference from the object! + */ + @inline(__always) + public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ { + return Unmanaged.fromOpaque(pointer).takeRetainedValue() + } +} diff --git a/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__.swift b/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__.swift new file mode 100644 index 00000000..32e9b593 --- /dev/null +++ b/nitrogen/generated/ios/swift/Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__.swift @@ -0,0 +1,57 @@ +/// +/// Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__.swift +/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. +/// https://github.com/mrousavy/nitro +/// Copyright © Marc Rousavy @ Margelo +/// + +import NitroModules + +/** + * Wraps a Swift `(_ value: (any HybridViewModelSpec)?) -> Void` as a class. + * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. + */ +public final class Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ { + public typealias bridge = margelo.nitro.rive.bridge.swift + + private let closure: (_ value: (any HybridViewModelSpec)?) -> Void + + public init(_ closure: @escaping (_ value: (any HybridViewModelSpec)?) -> Void) { + self.closure = closure + } + + @inline(__always) + public func call(value: bridge.std__optional_std__shared_ptr_HybridViewModelSpec__) -> Void { + self.closure({ () -> (any HybridViewModelSpec)? in + if bridge.has_value_std__optional_std__shared_ptr_HybridViewModelSpec__(value) { + let __unwrapped = bridge.get_std__optional_std__shared_ptr_HybridViewModelSpec__(value) + return { () -> any HybridViewModelSpec in + let __unsafePointer = bridge.get_std__shared_ptr_HybridViewModelSpec_(__unwrapped) + let __instance = HybridViewModelSpec_cxx.fromUnsafe(__unsafePointer) + return __instance.getHybridViewModelSpec() + }() + } else { + return nil + } + }()) + } + + /** + * Casts this instance to a retained unsafe raw pointer. + * This acquires one additional strong reference on the object! + */ + @inline(__always) + public func toUnsafe() -> UnsafeMutableRawPointer { + return Unmanaged.passRetained(self).toOpaque() + } + + /** + * Casts an unsafe pointer to a `Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__`. + * The pointer has to be a retained opaque `Unmanaged`. + * This removes one strong reference from the object! + */ + @inline(__always) + public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_std__optional_std__shared_ptr_HybridViewModelSpec__ { + return Unmanaged.fromOpaque(pointer).takeRetainedValue() + } +} diff --git a/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift b/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift new file mode 100644 index 00000000..8f4042a3 --- /dev/null +++ b/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift @@ -0,0 +1,46 @@ +/// +/// Func_void_std__vector_std__string_.swift +/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. +/// https://github.com/mrousavy/nitro +/// Copyright © Marc Rousavy @ Margelo +/// + +import NitroModules + +/** + * Wraps a Swift `(_ value: [String]) -> Void` as a class. + * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. + */ +public final class Func_void_std__vector_std__string_ { + public typealias bridge = margelo.nitro.rive.bridge.swift + + private let closure: (_ value: [String]) -> Void + + public init(_ closure: @escaping (_ value: [String]) -> Void) { + self.closure = closure + } + + @inline(__always) + public func call(value: bridge.std__vector_std__string_) -> Void { + self.closure(value.map({ __item in String(__item) })) + } + + /** + * Casts this instance to a retained unsafe raw pointer. + * This acquires one additional strong reference on the object! + */ + @inline(__always) + public func toUnsafe() -> UnsafeMutableRawPointer { + return Unmanaged.passRetained(self).toOpaque() + } + + /** + * Casts an unsafe pointer to a `Func_void_std__vector_std__string_`. + * The pointer has to be a retained opaque `Unmanaged`. + * This removes one strong reference from the object! + */ + @inline(__always) + public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_void_std__vector_std__string_ { + return Unmanaged.fromOpaque(pointer).takeRetainedValue() + } +} diff --git a/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift b/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift index 8c840b59..952d0a0e 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift @@ -19,6 +19,11 @@ public protocol HybridRiveFileSpec_protocol: HybridObject { func viewModelByName(name: String) throws -> (any HybridViewModelSpec)? func defaultArtboardViewModel(artboardBy: ArtboardBy?) throws -> (any HybridViewModelSpec)? func updateReferencedAssets(referencedAssets: ReferencedAssetsType) throws -> Void + func getViewModelNamesAsync() throws -> Promise<[String]> + func viewModelByNameAsync(name: String, validate: Bool?) throws -> Promise<(any HybridViewModelSpec)?> + func defaultArtboardViewModelAsync(artboardBy: ArtboardBy?) throws -> Promise<(any HybridViewModelSpec)?> + func getArtboardCountAsync() throws -> Promise + func getArtboardNamesAsync() throws -> Promise<[String]> func getBindableArtboard(name: String) throws -> (any HybridBindableArtboardSpec) } diff --git a/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift index 1c481956..19b47a7f 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift @@ -229,6 +229,138 @@ open class HybridRiveFileSpec_cxx { } } + @inline(__always) + public final func getViewModelNamesAsync() -> bridge.Result_std__shared_ptr_Promise_std__vector_std__string____ { + do { + let __result = try self.__implementation.getViewModelNamesAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__vector_std__string___ in + let __promise = bridge.create_std__shared_ptr_Promise_std__vector_std__string___() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__vector_std__string___(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__vector_std__string_ in + var __vector = bridge.create_std__vector_std__string_(__result.count) + for __item in __result { + __vector.push_back(std.string(__item)) + } + return __vector + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__vector_std__string____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__vector_std__string____(__exceptionPtr) + } + } + + @inline(__always) + public final func viewModelByNameAsync(name: std.string, validate: bridge.std__optional_bool_) -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____ { + do { + let __result = try self.__implementation.viewModelByNameAsync(name: String(name), validate: { () -> Bool? in + if bridge.has_value_std__optional_bool_(validate) { + let __unwrapped = bridge.get_std__optional_bool_(validate) + return __unwrapped + } else { + return nil + } + }()) + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelSpec__({ () -> bridge.std__shared_ptr_HybridViewModelSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(__exceptionPtr) + } + } + + @inline(__always) + public final func defaultArtboardViewModelAsync(artboardBy: bridge.std__optional_ArtboardBy_) -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____ { + do { + let __result = try self.__implementation.defaultArtboardViewModelAsync(artboardBy: artboardBy.value) + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelSpec__({ () -> bridge.std__shared_ptr_HybridViewModelSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelSpec_____(__exceptionPtr) + } + } + + @inline(__always) + public final func getArtboardCountAsync() -> bridge.Result_std__shared_ptr_Promise_double___ { + do { + let __result = try self.__implementation.getArtboardCountAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_double__ in + let __promise = bridge.create_std__shared_ptr_Promise_double__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_double__(__promise) + __result + .then({ __result in __promiseHolder.resolve(__result) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_double___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_double___(__exceptionPtr) + } + } + + @inline(__always) + public final func getArtboardNamesAsync() -> bridge.Result_std__shared_ptr_Promise_std__vector_std__string____ { + do { + let __result = try self.__implementation.getArtboardNamesAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__vector_std__string___ in + let __promise = bridge.create_std__shared_ptr_Promise_std__vector_std__string___() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__vector_std__string___(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__vector_std__string_ in + var __vector = bridge.create_std__vector_std__string_(__result.count) + for __item in __result { + __vector.push_back(std.string(__item)) + } + return __vector + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__vector_std__string____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__vector_std__string____(__exceptionPtr) + } + } + @inline(__always) public final func getBindableArtboard(name: std.string) -> bridge.Result_std__shared_ptr_HybridBindableArtboardSpec__ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift index 88a229af..016933e2 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift @@ -13,6 +13,8 @@ public protocol HybridViewModelBooleanPropertySpec_protocol: HybridObject, Hybri var value: Bool { get set } // Methods + func getValueAsync() throws -> Promise + func set(value: Bool) throws -> Void func addListener(onChanged: @escaping (_ value: Bool) -> Void) throws -> () -> Void func removeListeners() throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift index 784585ee..5eae203b 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift @@ -136,6 +136,36 @@ open class HybridViewModelBooleanPropertySpec_cxx : HybridViewModelPropertySpec_ } // Methods + @inline(__always) + public final func getValueAsync() -> bridge.Result_std__shared_ptr_Promise_bool___ { + do { + let __result = try self.__implementation.getValueAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_bool__ in + let __promise = bridge.create_std__shared_ptr_Promise_bool__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_bool__(__promise) + __result + .then({ __result in __promiseHolder.resolve(__result) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_bool___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_bool___(__exceptionPtr) + } + } + + @inline(__always) + public final func set(value: Bool) -> bridge.Result_void_ { + do { + try self.__implementation.set(value: value) + return bridge.create_Result_void_() + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_void_(__exceptionPtr) + } + } + @inline(__always) public final func addListener(onChanged: bridge.Func_void_bool) -> bridge.Result_std__function_void____ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift index 89230cdb..57e34f72 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift @@ -13,6 +13,8 @@ public protocol HybridViewModelColorPropertySpec_protocol: HybridObject, HybridV var value: Double { get set } // Methods + func getValueAsync() throws -> Promise + func set(value: Double) throws -> Void func addListener(onChanged: @escaping (_ value: Double) -> Void) throws -> () -> Void func removeListeners() throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift index 9278aa63..994cb62c 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift @@ -136,6 +136,36 @@ open class HybridViewModelColorPropertySpec_cxx : HybridViewModelPropertySpec_cx } // Methods + @inline(__always) + public final func getValueAsync() -> bridge.Result_std__shared_ptr_Promise_double___ { + do { + let __result = try self.__implementation.getValueAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_double__ in + let __promise = bridge.create_std__shared_ptr_Promise_double__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_double__(__promise) + __result + .then({ __result in __promiseHolder.resolve(__result) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_double___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_double___(__exceptionPtr) + } + } + + @inline(__always) + public final func set(value: Double) -> bridge.Result_void_ { + do { + try self.__implementation.set(value: value) + return bridge.create_Result_void_() + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_void_(__exceptionPtr) + } + } + @inline(__always) public final func addListener(onChanged: bridge.Func_void_double) -> bridge.Result_std__function_void____ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift index 702e5031..e8a26784 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift @@ -13,6 +13,8 @@ public protocol HybridViewModelEnumPropertySpec_protocol: HybridObject, HybridVi var value: String { get set } // Methods + func getValueAsync() throws -> Promise + func set(value: String) throws -> Void func addListener(onChanged: @escaping (_ value: String) -> Void) throws -> () -> Void func removeListeners() throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift index 3a31751e..a7cef3c2 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift @@ -136,6 +136,36 @@ open class HybridViewModelEnumPropertySpec_cxx : HybridViewModelPropertySpec_cxx } // Methods + @inline(__always) + public final func getValueAsync() -> bridge.Result_std__shared_ptr_Promise_std__string___ { + do { + let __result = try self.__implementation.getValueAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__string__ in + let __promise = bridge.create_std__shared_ptr_Promise_std__string__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise) + __result + .then({ __result in __promiseHolder.resolve(std.string(__result)) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__string___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__string___(__exceptionPtr) + } + } + + @inline(__always) + public final func set(value: std.string) -> bridge.Result_void_ { + do { + try self.__implementation.set(value: String(value)) + return bridge.create_Result_void_() + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_void_(__exceptionPtr) + } + } + @inline(__always) public final func addListener(onChanged: bridge.Func_void_std__string) -> bridge.Result_std__function_void____ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift index f8f54d46..aaa8e9ca 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift @@ -23,6 +23,7 @@ public protocol HybridViewModelInstanceSpec_protocol: HybridObject { func listProperty(path: String) throws -> (any HybridViewModelListPropertySpec)? func artboardProperty(path: String) throws -> (any HybridViewModelArtboardPropertySpec)? func viewModel(path: String) throws -> (any HybridViewModelInstanceSpec)? + func viewModelAsync(path: String) throws -> Promise<(any HybridViewModelInstanceSpec)?> func replaceViewModel(path: String, instance: (any HybridViewModelInstanceSpec)) throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift index 8d2b518c..48fcb568 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift @@ -339,6 +339,34 @@ open class HybridViewModelInstanceSpec_cxx { } } + @inline(__always) + public final func viewModelAsync(path: std.string) -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ { + do { + let __result = try self.__implementation.viewModelAsync(path: String(path)) + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__({ () -> bridge.std__shared_ptr_HybridViewModelInstanceSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__exceptionPtr) + } + } + @inline(__always) public final func replaceViewModel(path: std.string, instance: bridge.std__shared_ptr_HybridViewModelInstanceSpec_) -> bridge.Result_void_ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift index 60f6579f..df5af7d5 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift @@ -14,6 +14,8 @@ public protocol HybridViewModelListPropertySpec_protocol: HybridObject, HybridVi // Methods func getInstanceAt(index: Double) throws -> (any HybridViewModelInstanceSpec)? + func getLengthAsync() throws -> Promise + func getInstanceAtAsync(index: Double) throws -> Promise<(any HybridViewModelInstanceSpec)?> func addInstance(instance: (any HybridViewModelInstanceSpec)) throws -> Void func addInstanceAt(instance: (any HybridViewModelInstanceSpec), index: Double) throws -> Bool func removeInstance(instance: (any HybridViewModelInstanceSpec)) throws -> Void diff --git a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift index 4b074636..bbb678c6 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift @@ -153,6 +153,53 @@ open class HybridViewModelListPropertySpec_cxx : HybridViewModelPropertySpec_cxx } } + @inline(__always) + public final func getLengthAsync() -> bridge.Result_std__shared_ptr_Promise_double___ { + do { + let __result = try self.__implementation.getLengthAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_double__ in + let __promise = bridge.create_std__shared_ptr_Promise_double__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_double__(__promise) + __result + .then({ __result in __promiseHolder.resolve(__result) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_double___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_double___(__exceptionPtr) + } + } + + @inline(__always) + public final func getInstanceAtAsync(index: Double) -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ { + do { + let __result = try self.__implementation.getInstanceAtAsync(index: index) + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__({ () -> bridge.std__shared_ptr_HybridViewModelInstanceSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__exceptionPtr) + } + } + @inline(__always) public final func addInstance(instance: bridge.std__shared_ptr_HybridViewModelInstanceSpec_) -> bridge.Result_void_ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift index a29d5b06..75991dfc 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift @@ -13,6 +13,8 @@ public protocol HybridViewModelNumberPropertySpec_protocol: HybridObject, Hybrid var value: Double { get set } // Methods + func getValueAsync() throws -> Promise + func set(value: Double) throws -> Void func addListener(onChanged: @escaping (_ value: Double) -> Void) throws -> () -> Void func removeListeners() throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift index 80f839c1..3922087d 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift @@ -136,6 +136,36 @@ open class HybridViewModelNumberPropertySpec_cxx : HybridViewModelPropertySpec_c } // Methods + @inline(__always) + public final func getValueAsync() -> bridge.Result_std__shared_ptr_Promise_double___ { + do { + let __result = try self.__implementation.getValueAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_double__ in + let __promise = bridge.create_std__shared_ptr_Promise_double__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_double__(__promise) + __result + .then({ __result in __promiseHolder.resolve(__result) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_double___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_double___(__exceptionPtr) + } + } + + @inline(__always) + public final func set(value: Double) -> bridge.Result_void_ { + do { + try self.__implementation.set(value: value) + return bridge.create_Result_void_() + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_void_(__exceptionPtr) + } + } + @inline(__always) public final func addListener(onChanged: bridge.Func_void_double) -> bridge.Result_std__function_void____ { do { diff --git a/nitrogen/generated/ios/swift/HybridViewModelSpec.swift b/nitrogen/generated/ios/swift/HybridViewModelSpec.swift index e973a3be..b699f291 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelSpec.swift @@ -19,6 +19,9 @@ public protocol HybridViewModelSpec_protocol: HybridObject { func createInstanceByName(name: String) throws -> (any HybridViewModelInstanceSpec)? func createDefaultInstance() throws -> (any HybridViewModelInstanceSpec)? func createInstance() throws -> (any HybridViewModelInstanceSpec)? + func createInstanceByNameAsync(name: String) throws -> Promise<(any HybridViewModelInstanceSpec)?> + func createDefaultInstanceAsync() throws -> Promise<(any HybridViewModelInstanceSpec)?> + func createBlankInstanceAsync() throws -> Promise<(any HybridViewModelInstanceSpec)?> } public extension HybridViewModelSpec_protocol { diff --git a/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift index 5c7ad3b0..6a5ef9d1 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift @@ -226,4 +226,88 @@ open class HybridViewModelSpec_cxx { return bridge.create_Result_std__optional_std__shared_ptr_HybridViewModelInstanceSpec___(__exceptionPtr) } } + + @inline(__always) + public final func createInstanceByNameAsync(name: std.string) -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ { + do { + let __result = try self.__implementation.createInstanceByNameAsync(name: String(name)) + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__({ () -> bridge.std__shared_ptr_HybridViewModelInstanceSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__exceptionPtr) + } + } + + @inline(__always) + public final func createDefaultInstanceAsync() -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ { + do { + let __result = try self.__implementation.createDefaultInstanceAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__({ () -> bridge.std__shared_ptr_HybridViewModelInstanceSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__exceptionPtr) + } + } + + @inline(__always) + public final func createBlankInstanceAsync() -> bridge.Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____ { + do { + let __result = try self.__implementation.createBlankInstanceAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____ in + let __promise = bridge.create_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec____(__promise) + __result + .then({ __result in __promiseHolder.resolve({ () -> bridge.std__optional_std__shared_ptr_HybridViewModelInstanceSpec__ in + if let __unwrappedValue = __result { + return bridge.create_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__({ () -> bridge.std__shared_ptr_HybridViewModelInstanceSpec_ in + let __cxxWrapped = __unwrappedValue.getCxxWrapper() + return __cxxWrapped.getCxxPart() + }()) + } else { + return .init() + } + }()) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__optional_std__shared_ptr_HybridViewModelInstanceSpec_____(__exceptionPtr) + } + } } diff --git a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift index 4ce63bef..7b944798 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift @@ -13,6 +13,8 @@ public protocol HybridViewModelStringPropertySpec_protocol: HybridObject, Hybrid var value: String { get set } // Methods + func getValueAsync() throws -> Promise + func set(value: String) throws -> Void func addListener(onChanged: @escaping (_ value: String) -> Void) throws -> () -> Void func removeListeners() throws -> Void } diff --git a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift index 76d1cb29..93a413e9 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift @@ -136,6 +136,36 @@ open class HybridViewModelStringPropertySpec_cxx : HybridViewModelPropertySpec_c } // Methods + @inline(__always) + public final func getValueAsync() -> bridge.Result_std__shared_ptr_Promise_std__string___ { + do { + let __result = try self.__implementation.getValueAsync() + let __resultCpp = { () -> bridge.std__shared_ptr_Promise_std__string__ in + let __promise = bridge.create_std__shared_ptr_Promise_std__string__() + let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_std__string__(__promise) + __result + .then({ __result in __promiseHolder.resolve(std.string(__result)) }) + .catch({ __error in __promiseHolder.reject(__error.toCpp()) }) + return __promise + }() + return bridge.create_Result_std__shared_ptr_Promise_std__string___(__resultCpp) + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_std__shared_ptr_Promise_std__string___(__exceptionPtr) + } + } + + @inline(__always) + public final func set(value: std.string) -> bridge.Result_void_ { + do { + try self.__implementation.set(value: String(value)) + return bridge.create_Result_void_() + } catch (let __error) { + let __exceptionPtr = __error.toCpp() + return bridge.create_Result_void_(__exceptionPtr) + } + } + @inline(__always) public final func addListener(onChanged: bridge.Func_void_std__string) -> bridge.Result_std__function_void____ { do { diff --git a/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp b/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp index 2aae1434..a39ff1ea 100644 --- a/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp +++ b/nitrogen/generated/shared/c++/HybridRiveFileSpec.cpp @@ -21,6 +21,11 @@ namespace margelo::nitro::rive { prototype.registerHybridMethod("viewModelByName", &HybridRiveFileSpec::viewModelByName); prototype.registerHybridMethod("defaultArtboardViewModel", &HybridRiveFileSpec::defaultArtboardViewModel); prototype.registerHybridMethod("updateReferencedAssets", &HybridRiveFileSpec::updateReferencedAssets); + prototype.registerHybridMethod("getViewModelNamesAsync", &HybridRiveFileSpec::getViewModelNamesAsync); + prototype.registerHybridMethod("viewModelByNameAsync", &HybridRiveFileSpec::viewModelByNameAsync); + prototype.registerHybridMethod("defaultArtboardViewModelAsync", &HybridRiveFileSpec::defaultArtboardViewModelAsync); + prototype.registerHybridMethod("getArtboardCountAsync", &HybridRiveFileSpec::getArtboardCountAsync); + prototype.registerHybridMethod("getArtboardNamesAsync", &HybridRiveFileSpec::getArtboardNamesAsync); prototype.registerHybridMethod("getBindableArtboard", &HybridRiveFileSpec::getBindableArtboard); }); } diff --git a/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp b/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp index 30a466b1..6394d695 100644 --- a/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp +++ b/nitrogen/generated/shared/c++/HybridRiveFileSpec.hpp @@ -29,6 +29,7 @@ namespace margelo::nitro::rive { class HybridBindableArtboardSpec; } #include "HybridViewModelSpec.hpp" #include "ArtboardBy.hpp" #include "ReferencedAssetsType.hpp" +#include #include "HybridBindableArtboardSpec.hpp" namespace margelo::nitro::rive { @@ -68,6 +69,11 @@ namespace margelo::nitro::rive { virtual std::optional> viewModelByName(const std::string& name) = 0; virtual std::optional> defaultArtboardViewModel(const std::optional& artboardBy) = 0; virtual void updateReferencedAssets(const ReferencedAssetsType& referencedAssets) = 0; + virtual std::shared_ptr>> getViewModelNamesAsync() = 0; + virtual std::shared_ptr>>> viewModelByNameAsync(const std::string& name, std::optional validate) = 0; + virtual std::shared_ptr>>> defaultArtboardViewModelAsync(const std::optional& artboardBy) = 0; + virtual std::shared_ptr> getArtboardCountAsync() = 0; + virtual std::shared_ptr>> getArtboardNamesAsync() = 0; virtual std::shared_ptr getBindableArtboard(const std::string& name) = 0; protected: diff --git a/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp index 5fb595e7..36640220 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("value", &HybridViewModelBooleanPropertySpec::getValue); prototype.registerHybridSetter("value", &HybridViewModelBooleanPropertySpec::setValue); + prototype.registerHybridMethod("getValueAsync", &HybridViewModelBooleanPropertySpec::getValueAsync); + prototype.registerHybridMethod("set", &HybridViewModelBooleanPropertySpec::set); prototype.registerHybridMethod("addListener", &HybridViewModelBooleanPropertySpec::addListener); prototype.registerHybridMethod("removeListeners", &HybridViewModelBooleanPropertySpec::removeListeners); }); diff --git a/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp index cfb3500c..0023f5af 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelBooleanPropertySpec.hpp @@ -16,6 +16,7 @@ // Forward declaration of `HybridViewModelPropertySpec` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } +#include #include #include #include "HybridViewModelPropertySpec.hpp" @@ -52,6 +53,8 @@ namespace margelo::nitro::rive { public: // Methods + virtual std::shared_ptr> getValueAsync() = 0; + virtual void set(bool value) = 0; virtual std::function addListener(const std::function& onChanged) = 0; virtual void removeListeners() = 0; diff --git a/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp index 60dbaaa8..129f72fc 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("value", &HybridViewModelColorPropertySpec::getValue); prototype.registerHybridSetter("value", &HybridViewModelColorPropertySpec::setValue); + prototype.registerHybridMethod("getValueAsync", &HybridViewModelColorPropertySpec::getValueAsync); + prototype.registerHybridMethod("set", &HybridViewModelColorPropertySpec::set); prototype.registerHybridMethod("addListener", &HybridViewModelColorPropertySpec::addListener); prototype.registerHybridMethod("removeListeners", &HybridViewModelColorPropertySpec::removeListeners); }); diff --git a/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp index 4d4bb65f..589ec237 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelColorPropertySpec.hpp @@ -16,6 +16,7 @@ // Forward declaration of `HybridViewModelPropertySpec` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } +#include #include #include #include "HybridViewModelPropertySpec.hpp" @@ -52,6 +53,8 @@ namespace margelo::nitro::rive { public: // Methods + virtual std::shared_ptr> getValueAsync() = 0; + virtual void set(double value) = 0; virtual std::function addListener(const std::function& onChanged) = 0; virtual void removeListeners() = 0; diff --git a/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp index ee1e984c..19ad36c1 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("value", &HybridViewModelEnumPropertySpec::getValue); prototype.registerHybridSetter("value", &HybridViewModelEnumPropertySpec::setValue); + prototype.registerHybridMethod("getValueAsync", &HybridViewModelEnumPropertySpec::getValueAsync); + prototype.registerHybridMethod("set", &HybridViewModelEnumPropertySpec::set); prototype.registerHybridMethod("addListener", &HybridViewModelEnumPropertySpec::addListener); prototype.registerHybridMethod("removeListeners", &HybridViewModelEnumPropertySpec::removeListeners); }); diff --git a/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp index 56fd3969..7246c5f2 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelEnumPropertySpec.hpp @@ -17,6 +17,7 @@ namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } #include +#include #include #include #include "HybridViewModelPropertySpec.hpp" @@ -53,6 +54,8 @@ namespace margelo::nitro::rive { public: // Methods + virtual std::shared_ptr> getValueAsync() = 0; + virtual void set(const std::string& value) = 0; virtual std::function addListener(const std::function& onChanged) = 0; virtual void removeListeners() = 0; diff --git a/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp index abd989ef..961edebf 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp @@ -25,6 +25,7 @@ namespace margelo::nitro::rive { prototype.registerHybridMethod("listProperty", &HybridViewModelInstanceSpec::listProperty); prototype.registerHybridMethod("artboardProperty", &HybridViewModelInstanceSpec::artboardProperty); prototype.registerHybridMethod("viewModel", &HybridViewModelInstanceSpec::viewModel); + prototype.registerHybridMethod("viewModelAsync", &HybridViewModelInstanceSpec::viewModelAsync); prototype.registerHybridMethod("replaceViewModel", &HybridViewModelInstanceSpec::replaceViewModel); }); } diff --git a/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp index 4b24d2ac..9fa31918 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp @@ -47,6 +47,7 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include "HybridViewModelListPropertySpec.hpp" #include "HybridViewModelArtboardPropertySpec.hpp" #include "HybridViewModelInstanceSpec.hpp" +#include namespace margelo::nitro::rive { @@ -89,6 +90,7 @@ namespace margelo::nitro::rive { virtual std::optional> listProperty(const std::string& path) = 0; virtual std::optional> artboardProperty(const std::string& path) = 0; virtual std::optional> viewModel(const std::string& path) = 0; + virtual std::shared_ptr>>> viewModelAsync(const std::string& path) = 0; virtual void replaceViewModel(const std::string& path, const std::shared_ptr& instance) = 0; protected: diff --git a/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.cpp index ca384a8e..cf2eb99a 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("length", &HybridViewModelListPropertySpec::getLength); prototype.registerHybridMethod("getInstanceAt", &HybridViewModelListPropertySpec::getInstanceAt); + prototype.registerHybridMethod("getLengthAsync", &HybridViewModelListPropertySpec::getLengthAsync); + prototype.registerHybridMethod("getInstanceAtAsync", &HybridViewModelListPropertySpec::getInstanceAtAsync); prototype.registerHybridMethod("addInstance", &HybridViewModelListPropertySpec::addInstance); prototype.registerHybridMethod("addInstanceAt", &HybridViewModelListPropertySpec::addInstanceAt); prototype.registerHybridMethod("removeInstance", &HybridViewModelListPropertySpec::removeInstance); diff --git a/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.hpp index d88e1fa4..b795d9bc 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.hpp @@ -21,6 +21,7 @@ namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } #include #include "HybridViewModelInstanceSpec.hpp" #include +#include #include #include "HybridViewModelPropertySpec.hpp" @@ -56,6 +57,8 @@ namespace margelo::nitro::rive { public: // Methods virtual std::optional> getInstanceAt(double index) = 0; + virtual std::shared_ptr> getLengthAsync() = 0; + virtual std::shared_ptr>>> getInstanceAtAsync(double index) = 0; virtual void addInstance(const std::shared_ptr& instance) = 0; virtual bool addInstanceAt(const std::shared_ptr& instance, double index) = 0; virtual void removeInstance(const std::shared_ptr& instance) = 0; diff --git a/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp index 936a0fe9..5b383873 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("value", &HybridViewModelNumberPropertySpec::getValue); prototype.registerHybridSetter("value", &HybridViewModelNumberPropertySpec::setValue); + prototype.registerHybridMethod("getValueAsync", &HybridViewModelNumberPropertySpec::getValueAsync); + prototype.registerHybridMethod("set", &HybridViewModelNumberPropertySpec::set); prototype.registerHybridMethod("addListener", &HybridViewModelNumberPropertySpec::addListener); prototype.registerHybridMethod("removeListeners", &HybridViewModelNumberPropertySpec::removeListeners); }); diff --git a/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp index cb2d93b1..9a9f5248 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelNumberPropertySpec.hpp @@ -16,6 +16,7 @@ // Forward declaration of `HybridViewModelPropertySpec` to properly resolve imports. namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } +#include #include #include #include "HybridViewModelPropertySpec.hpp" @@ -52,6 +53,8 @@ namespace margelo::nitro::rive { public: // Methods + virtual std::shared_ptr> getValueAsync() = 0; + virtual void set(double value) = 0; virtual std::function addListener(const std::function& onChanged) = 0; virtual void removeListeners() = 0; diff --git a/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp index 228daf38..78f51ba0 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelSpec.cpp @@ -21,6 +21,9 @@ namespace margelo::nitro::rive { prototype.registerHybridMethod("createInstanceByName", &HybridViewModelSpec::createInstanceByName); prototype.registerHybridMethod("createDefaultInstance", &HybridViewModelSpec::createDefaultInstance); prototype.registerHybridMethod("createInstance", &HybridViewModelSpec::createInstance); + prototype.registerHybridMethod("createInstanceByNameAsync", &HybridViewModelSpec::createInstanceByNameAsync); + prototype.registerHybridMethod("createDefaultInstanceAsync", &HybridViewModelSpec::createDefaultInstanceAsync); + prototype.registerHybridMethod("createBlankInstanceAsync", &HybridViewModelSpec::createBlankInstanceAsync); }); } diff --git a/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp index 5ac8d4c2..2ef01abe 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelSpec.hpp @@ -20,6 +20,7 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } #include #include "HybridViewModelInstanceSpec.hpp" #include +#include namespace margelo::nitro::rive { @@ -58,6 +59,9 @@ namespace margelo::nitro::rive { virtual std::optional> createInstanceByName(const std::string& name) = 0; virtual std::optional> createDefaultInstance() = 0; virtual std::optional> createInstance() = 0; + virtual std::shared_ptr>>> createInstanceByNameAsync(const std::string& name) = 0; + virtual std::shared_ptr>>> createDefaultInstanceAsync() = 0; + virtual std::shared_ptr>>> createBlankInstanceAsync() = 0; protected: // Hybrid Setup diff --git a/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp b/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp index dee90bad..b2cbc269 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp +++ b/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.cpp @@ -17,6 +17,8 @@ namespace margelo::nitro::rive { registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("value", &HybridViewModelStringPropertySpec::getValue); prototype.registerHybridSetter("value", &HybridViewModelStringPropertySpec::setValue); + prototype.registerHybridMethod("getValueAsync", &HybridViewModelStringPropertySpec::getValueAsync); + prototype.registerHybridMethod("set", &HybridViewModelStringPropertySpec::set); prototype.registerHybridMethod("addListener", &HybridViewModelStringPropertySpec::addListener); prototype.registerHybridMethod("removeListeners", &HybridViewModelStringPropertySpec::removeListeners); }); diff --git a/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp b/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp index 3349551a..b037ec41 100644 --- a/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp +++ b/nitrogen/generated/shared/c++/HybridViewModelStringPropertySpec.hpp @@ -17,6 +17,7 @@ namespace margelo::nitro::rive { class HybridViewModelPropertySpec; } #include +#include #include #include #include "HybridViewModelPropertySpec.hpp" @@ -53,6 +54,8 @@ namespace margelo::nitro::rive { public: // Methods + virtual std::shared_ptr> getValueAsync() = 0; + virtual void set(const std::string& value) = 0; virtual std::function addListener(const std::function& onChanged) = 0; virtual void removeListeners() = 0; diff --git a/src/specs/RiveFile.nitro.ts b/src/specs/RiveFile.nitro.ts index 02822c38..2482b47b 100644 --- a/src/specs/RiveFile.nitro.ts +++ b/src/specs/RiveFile.nitro.ts @@ -22,20 +22,31 @@ export type ReferencedAssetsType = { */ export interface RiveFile extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> { - /** The number of view models in the Rive file */ + /** @deprecated Use getViewModelNamesAsync instead */ readonly viewModelCount?: number; - /** Get a view model by index */ + /** @deprecated Use getViewModelNamesAsync + viewModelByNameAsync instead */ viewModelByIndex(index: number): ViewModel | undefined; - /** Get a view model by name */ + /** @deprecated Use viewModelByNameAsync instead */ viewModelByName(name: string): ViewModel | undefined; - /** Returns the default view model for the provided artboard */ + /** @deprecated Use defaultArtboardViewModelAsync instead */ defaultArtboardViewModel(artboardBy?: ArtboardBy): ViewModel | undefined; updateReferencedAssets(referencedAssets: ReferencedAssetsType): void; - /** The number of artboards in the Rive file */ + /** @deprecated Use getArtboardCountAsync instead */ readonly artboardCount: number; - /** The names of all artboards in the Rive file */ + /** @deprecated Use getArtboardNamesAsync instead */ readonly artboardNames: string[]; + + getViewModelNamesAsync(): Promise; + viewModelByNameAsync( + name: string, + validate?: boolean + ): Promise; + defaultArtboardViewModelAsync( + artboardBy?: ArtboardBy + ): Promise; + getArtboardCountAsync(): Promise; + getArtboardNamesAsync(): Promise; /** * Get a bindable artboard by name for use with data binding. * @throws Error if artboard with the given name is not found diff --git a/src/specs/ViewModel.nitro.ts b/src/specs/ViewModel.nitro.ts index e7341253..e8c1d8ed 100644 --- a/src/specs/ViewModel.nitro.ts +++ b/src/specs/ViewModel.nitro.ts @@ -14,14 +14,20 @@ export interface ViewModel readonly instanceCount: number; /** The name of the view model */ readonly modelName: string; - /** Create a new instance of the view model by index */ + /** @deprecated Use createInstanceByNameAsync instead */ createInstanceByIndex(index: number): ViewModelInstance | undefined; - /** Create a new instance of the view model by name */ + /** @deprecated Use createInstanceByNameAsync instead */ createInstanceByName(name: string): ViewModelInstance | undefined; - /** Create the default instance of the view model */ + /** @deprecated Use createDefaultInstanceAsync instead */ createDefaultInstance(): ViewModelInstance | undefined; - /** Create an empty/new view model instance */ + /** @deprecated Use createBlankInstanceAsync instead */ createInstance(): ViewModelInstance | undefined; + + createInstanceByNameAsync( + name: string + ): Promise; + createDefaultInstanceAsync(): Promise; + createBlankInstanceAsync(): Promise; } /** @@ -63,9 +69,12 @@ export interface ViewModelInstance /** * Get a nested ViewModel instance at the given path. * Supports path notation with "/" for nested access (e.g., "Parent/Child"). + * @deprecated Use viewModelAsync instead */ viewModel(path: string): ViewModelInstance | undefined; + viewModelAsync(path: string): Promise; + /** * Replace the ViewModel instance at the given path with a new instance. * The replacement instance must be compatible with the expected ViewModel type. @@ -85,8 +94,10 @@ export interface ObservableProperty { export interface ViewModelNumberProperty extends ViewModelProperty, ObservableProperty { - /** The value of the view model number property */ + /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: number; + getValueAsync(): Promise; + set(value: number): void; /** Add a listener to the view model number property. Returns a function to remove the listener. */ addListener(onChanged: (value: number) => void): () => void; } @@ -94,8 +105,10 @@ export interface ViewModelNumberProperty export interface ViewModelStringProperty extends ViewModelProperty, ObservableProperty { - /** The value of the view model string property */ + /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: string; + getValueAsync(): Promise; + set(value: string): void; /** Add a listener to the view model string property. Returns a function to remove the listener. */ addListener(onChanged: (value: string) => void): () => void; } @@ -103,8 +116,10 @@ export interface ViewModelStringProperty export interface ViewModelBooleanProperty extends ViewModelProperty, ObservableProperty { - /** The value of the view model boolean property */ + /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: boolean; + getValueAsync(): Promise; + set(value: boolean): void; /** Add a listener to the view model boolean property. Returns a function to remove the listener. */ addListener(onChanged: (value: boolean) => void): () => void; } @@ -112,8 +127,10 @@ export interface ViewModelBooleanProperty export interface ViewModelColorProperty extends ViewModelProperty, ObservableProperty { - /** The value of the view model color property */ + /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: number; + getValueAsync(): Promise; + set(value: number): void; /** Add a listener to the view model color property. Returns a function to remove the listener. */ addListener(onChanged: (value: number) => void): () => void; } @@ -121,8 +138,10 @@ export interface ViewModelColorProperty export interface ViewModelEnumProperty extends ViewModelProperty, ObservableProperty { - /** The value of the view model enum property */ + /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: string; + getValueAsync(): Promise; + set(value: string): void; /** Add a listener to the view model enum property. Returns a function to remove the listener. */ addListener(onChanged: (value: string) => void): () => void; } @@ -152,10 +171,12 @@ export interface ViewModelImageProperty export interface ViewModelListProperty extends ViewModelProperty, ObservableProperty { - /** The number of instances in the list */ + /** @deprecated Use getLengthAsync instead */ readonly length: number; - /** Get the instance at the given index */ + /** @deprecated Use getInstanceAtAsync instead */ getInstanceAt(index: number): ViewModelInstance | undefined; + getLengthAsync(): Promise; + getInstanceAtAsync(index: number): Promise; /** Add an instance to the end of the list */ addInstance(instance: ViewModelInstance): void; /** Add an instance at the given index, returns true if successful */ From d5b168715fd63e305e5182b59b6d4c9bd1b6d3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Wed, 25 Mar 2026 13:51:06 +0100 Subject: [PATCH 2/6] docs: add doc comments to async spec methods --- src/specs/RiveFile.nitro.ts | 5 +++++ src/specs/ViewModel.nitro.ts | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/specs/RiveFile.nitro.ts b/src/specs/RiveFile.nitro.ts index 2482b47b..9b0f7015 100644 --- a/src/specs/RiveFile.nitro.ts +++ b/src/specs/RiveFile.nitro.ts @@ -37,15 +37,20 @@ export interface RiveFile /** @deprecated Use getArtboardNamesAsync instead */ readonly artboardNames: string[]; + /** The names of all view models in the Rive file */ getViewModelNamesAsync(): Promise; + /** Get a view model by name, optionally validating its properties */ viewModelByNameAsync( name: string, validate?: boolean ): Promise; + /** Get the default view model for the given artboard */ defaultArtboardViewModelAsync( artboardBy?: ArtboardBy ): Promise; + /** The number of artboards in the Rive file */ getArtboardCountAsync(): Promise; + /** The names of all artboards in the Rive file */ getArtboardNamesAsync(): Promise; /** * Get a bindable artboard by name for use with data binding. diff --git a/src/specs/ViewModel.nitro.ts b/src/specs/ViewModel.nitro.ts index e8c1d8ed..4b241102 100644 --- a/src/specs/ViewModel.nitro.ts +++ b/src/specs/ViewModel.nitro.ts @@ -23,10 +23,13 @@ export interface ViewModel /** @deprecated Use createBlankInstanceAsync instead */ createInstance(): ViewModelInstance | undefined; + /** Create a view model instance by name */ createInstanceByNameAsync( name: string ): Promise; + /** Create the default view model instance */ createDefaultInstanceAsync(): Promise; + /** Create a blank view model instance with default property values */ createBlankInstanceAsync(): Promise; } @@ -73,6 +76,7 @@ export interface ViewModelInstance */ viewModel(path: string): ViewModelInstance | undefined; + /** Get a nested ViewModel instance at the given path. Supports "/" for nested access (e.g., "Parent/Child"). */ viewModelAsync(path: string): Promise; /** @@ -96,6 +100,7 @@ export interface ViewModelNumberProperty ObservableProperty { /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: number; + /** Get the current value of the number property */ getValueAsync(): Promise; set(value: number): void; /** Add a listener to the view model number property. Returns a function to remove the listener. */ @@ -107,6 +112,7 @@ export interface ViewModelStringProperty ObservableProperty { /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: string; + /** Get the current value of the string property */ getValueAsync(): Promise; set(value: string): void; /** Add a listener to the view model string property. Returns a function to remove the listener. */ @@ -118,6 +124,7 @@ export interface ViewModelBooleanProperty ObservableProperty { /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: boolean; + /** Get the current value of the boolean property */ getValueAsync(): Promise; set(value: boolean): void; /** Add a listener to the view model boolean property. Returns a function to remove the listener. */ @@ -129,6 +136,7 @@ export interface ViewModelColorProperty ObservableProperty { /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: number; + /** Get the current value of the color property */ getValueAsync(): Promise; set(value: number): void; /** Add a listener to the view model color property. Returns a function to remove the listener. */ @@ -140,6 +148,7 @@ export interface ViewModelEnumProperty ObservableProperty { /** @deprecated Use getValueAsync (read) or set(value) (write) instead */ value: string; + /** Get the current value of the enum property */ getValueAsync(): Promise; set(value: string): void; /** Add a listener to the view model enum property. Returns a function to remove the listener. */ @@ -175,7 +184,9 @@ export interface ViewModelListProperty readonly length: number; /** @deprecated Use getInstanceAtAsync instead */ getInstanceAt(index: number): ViewModelInstance | undefined; + /** The number of instances in the list */ getLengthAsync(): Promise; + /** Get the instance at the given index */ getInstanceAtAsync(index: number): Promise; /** Add an instance to the end of the list */ addInstance(instance: ViewModelInstance): void; From b249e943f17e13cce851a00d6399e854de950a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 19 Mar 2026 13:47:02 +0100 Subject: [PATCH 3/6] fix: useRiveProperty hooks start undefined, value delivered via listener Initial value is no longer read synchronously from property.value. Instead the hook always starts as undefined and receives the current value through the listener's first emission. This unifies the startup shape across legacy (sync emit) and experimental (async valueStream) backends, so consumers always handle the loading state. The setter callback now uses React state for updater functions instead of reading property.value synchronously. --- src/hooks/__tests__/useRiveProperty.test.ts | 9 +++++++- src/hooks/useRiveProperty.ts | 24 ++++++++------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/hooks/__tests__/useRiveProperty.test.ts b/src/hooks/__tests__/useRiveProperty.test.ts index b7314b19..7d280d8b 100644 --- a/src/hooks/__tests__/useRiveProperty.test.ts +++ b/src/hooks/__tests__/useRiveProperty.test.ts @@ -17,6 +17,9 @@ describe('useRiveProperty', () => { }, addListener: jest.fn((callback: (value: string) => void) => { listener = callback; + // Emit the current value immediately on subscribe, matching native behaviour: + // iOS legacy emits synchronously; experimental backend emits via valueStream. + callback(currentValue); return () => { listener = null; }; @@ -36,7 +39,9 @@ describe('useRiveProperty', () => { } as unknown as ViewModelInstance; }; - it('should return initial value from property on first render', () => { + it('should return initial value delivered via listener (not from a sync read)', () => { + // Hooks always start undefined; the listener emits the current value immediately + // on subscribe (synchronously for legacy, via stream for experimental). const mockProperty = createMockProperty('Tea'); const mockInstance = createMockViewModelInstance({ 'favDrink/type': mockProperty, @@ -48,6 +53,8 @@ describe('useRiveProperty', () => { }) ); + // The mock's addListener emits 'Tea' synchronously — React batches it with the + // effect, so the value is available after renderHook (which wraps in act()). const [value] = result.current; expect(value).toBe('Tea'); }); diff --git a/src/hooks/useRiveProperty.ts b/src/hooks/useRiveProperty.ts index 9ab6f32f..f3717f70 100644 --- a/src/hooks/useRiveProperty.ts +++ b/src/hooks/useRiveProperty.ts @@ -34,7 +34,6 @@ export function useRiveProperty

( Error | null, P | undefined, ] { - // Get the property first so we can read its initial value const property = useMemo(() => { if (!viewModelInstance) return; return options.getProperty( @@ -43,17 +42,12 @@ export function useRiveProperty

( ) as unknown as ObservableViewModelProperty; }, [options, viewModelInstance, path]); - // Initialize state with property's current value (if available) - const [value, setValue] = useState(() => property?.value); + // Always start undefined — the listener delivers the current value as its first emission. + // (iOS experimental: via valueStream; iOS/Android legacy: emitted synchronously on subscribe) + // This ensures consumers handle the loading state correctly on all backends. + const [value, setValue] = useState(undefined); const [error, setError] = useState(null); - // Sync value when property reference changes (path or instance changed) - useEffect(() => { - if (property) { - setValue(property.value); - } - }, [property]); - // Clear error when path or instance changes useEffect(() => { setError(null); @@ -86,7 +80,9 @@ export function useRiveProperty

( }; }, [options, property]); - // Set the value of the property (no-op if property isn't available yet) + // Set the value of the property (no-op if property isn't available yet). + // Uses tracked `value` from state for updater functions — avoids a synchronous + // property.value read and is consistent with how React state works. const setPropertyValue = useCallback( (valueOrUpdater: T | ((prevValue: T | undefined) => T)) => { if (!property) { @@ -94,14 +90,12 @@ export function useRiveProperty

( } else { const newValue = typeof valueOrUpdater === 'function' - ? (valueOrUpdater as (prevValue: T | undefined) => T)( - property.value - ) + ? (valueOrUpdater as (prevValue: T | undefined) => T)(value) : valueOrUpdater; property.value = newValue; } }, - [property] + [property, value] ); return [value, setPropertyValue, error, property as unknown as P]; From f4493c04db3a35707fef74bf014affe2073c1fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 19 Mar 2026 14:14:41 +0100 Subject: [PATCH 4/6] test(harness): assert first listener emission fires without prop update --- example/__tests__/hooks.harness.tsx | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/example/__tests__/hooks.harness.tsx b/example/__tests__/hooks.harness.tsx index b4bb234b..1bd19c71 100644 --- a/example/__tests__/hooks.harness.tsx +++ b/example/__tests__/hooks.harness.tsx @@ -96,6 +96,34 @@ function expectDefined(value: T): asserts value is NonNullable { } describe('useRiveNumber Hook', () => { + it('starts undefined then receives value via listener', async () => { + const file = await RiveFileFactory.fromSource(QUICK_START, undefined); + const vm = file.defaultArtboardViewModel(); + expectDefined(vm); + const instance = vm.createDefaultInstance(); + expectDefined(instance); + + const context = createUseRiveNumberContext(); + + // Value must start undefined — not synchronously read from property.value + expect(context.value).toBeUndefined(); + + await render( + + ); + + // After listener fires, value should be a number + await waitFor( + () => { + expect(context.error).toBeNull(); + expect(typeof context.value).toBe('number'); + }, + { timeout: 5000 } + ); + + cleanup(); + }); + it('returns value from number property', async () => { const file = await RiveFileFactory.fromSource(QUICK_START, undefined); const vm = file.defaultArtboardViewModel(); From 8b84f79a5e125f93fd8d04fd3bc84920e4501ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 19 Mar 2026 17:11:03 +0100 Subject: [PATCH 5/6] fix: emit current property value immediately in listener effect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Legacy addListener does NOT emit on subscribe — only on changes. Without this, hooks stayed undefined forever if the value never changed. Now the effect reads property.value synchronously when subscribing, then the listener handles subsequent updates. --- src/hooks/useRiveProperty.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/hooks/useRiveProperty.ts b/src/hooks/useRiveProperty.ts index f3717f70..6c13fc50 100644 --- a/src/hooks/useRiveProperty.ts +++ b/src/hooks/useRiveProperty.ts @@ -66,8 +66,14 @@ export function useRiveProperty

( useEffect(() => { if (!property) return; - // If an override callback is provided, use it. - // Otherwise, use the default callback. + // Deliver the current value immediately so the hook transitions from + // undefined → value without waiting for a property change. + // (Legacy addListener does NOT emit on subscribe — only on changes. + // Experimental valueStream emits the current value as its first element.) + if (!options.onPropertyEventOverride) { + setValue(property.value); + } + const removeListener = options.onPropertyEventOverride ? property.addListener(options.onPropertyEventOverride) : property.addListener((newValue) => { From 624def15c052079a2b4d2a6bad2942e414194137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Thu, 26 Mar 2026 07:19:52 +0100 Subject: [PATCH 6/6] chore: bump rive-ios to 6.18.0 and rive-android to 11.3.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4f16f905..31ae480b 100644 --- a/package.json +++ b/package.json @@ -64,8 +64,8 @@ }, "homepage": "https://github.com/rive-app/rive-nitro-react-native#readme", "runtimeVersions": { - "ios": "6.17.0", - "android": "11.2.1" + "ios": "6.18.0", + "android": "11.3.1" }, "publishConfig": { "registry": "https://registry.npmjs.org/"