-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathHybridViewModelNumberProperty.kt
More file actions
33 lines (28 loc) · 1022 Bytes
/
HybridViewModelNumberProperty.kt
File metadata and controls
33 lines (28 loc) · 1022 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
@DoNotStrip
class HybridViewModelNumberProperty(private val viewModelNumber: ViewModelNumberProperty) :
HybridViewModelNumberPropertySpec(),
BaseHybridViewModelProperty<Double> by BaseHybridViewModelPropertyImpl() {
override var value: Double
get() = viewModelNumber.value.toDouble()
set(value) {
viewModelNumber.value = value.toFloat()
}
override fun getValueAsync(): Promise<Double> {
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() })
return remover
}
}