File tree Expand file tree Collapse file tree 4 files changed +14
-15
lines changed
gallery-demo/src/commonMain/kotlin/storytale/gallery/demo
modules/runtime-api/src/commonMain/kotlin/org/jetbrains/compose/storytale Expand file tree Collapse file tree 4 files changed +14
-15
lines changed Original file line number Diff line number Diff line change @@ -8,8 +8,6 @@ import androidx.compose.material3.Checkbox
88import androidx.compose.material3.MaterialTheme
99import androidx.compose.material3.Switch
1010import androidx.compose.material3.Text
11- import androidx.compose.runtime.mutableStateOf
12- import androidx.compose.runtime.remember
1311import org.jetbrains.compose.storytale.story
1412
1513val Button by story {
@@ -29,11 +27,11 @@ val Button by story {
2927}
3028
3129val Checkbox by story {
32- val checked = remember { mutableStateOf (false ) }
33- Checkbox (checked.value , onCheckedChange = { checked.value = it })
30+ var checked by parameter (false )
31+ Checkbox (checked, onCheckedChange = { checked = it })
3432}
3533
3634val Switch by story {
37- val checked = remember { mutableStateOf (false ) }
38- Switch (checked.value , onCheckedChange = { checked.value = it })
35+ var checked by parameter (false )
36+ Switch (checked, onCheckedChange = { checked = it })
3937}
Original file line number Diff line number Diff line change @@ -13,6 +13,5 @@ data class Story(
1313 internal val nameToParameterMapping = linkedMapOf<String , StoryParameter <* >>() // using linkedMap to keep the order
1414 val parameters inline get() = nameToParameterMapping.values.toList()
1515
16- @Composable
1716 inline fun <reified T > parameter (defaultValue : T ) = StoryParameterDelegate (this , T ::class , defaultValue)
1817}
Original file line number Diff line number Diff line change 11package org.jetbrains.compose.storytale
22
3- import androidx.compose.runtime.Composable
43import androidx.compose.runtime.MutableState
54import kotlin.reflect.KClass
65
76class StoryParameter <T >(
87 val name : String ,
98 val type : KClass <* >,
10- private val initializeMutableState : @Composable () -> MutableState <T >,
9+ private val initializeMutableState : () -> MutableState <T >,
1110) {
1211 private var _state : MutableState <T >? = null
1312 val state: MutableState <T >
14- @Composable get() {
13+ get() {
1514 var state = _state
1615 if (state == null ) {
1716 state = initializeMutableState()
Original file line number Diff line number Diff line change 11package org.jetbrains.compose.storytale
22
3- import androidx.compose.runtime.Composable
3+ import androidx.compose.runtime.MutableState
44import androidx.compose.runtime.mutableStateOf
5- import androidx.compose.runtime.remember
65import kotlin.reflect.KClass
76import kotlin.reflect.KProperty
87
@@ -11,13 +10,17 @@ class StoryParameterDelegate<T>(
1110 private val type : KClass <* >,
1211 private val defaultValue : T ,
1312) {
14- @Composable
13+ @Suppress( " UNCHECKED_CAST " )
1514 operator fun getValue (thisRef : Any? , property : KProperty <* >): T = story.nameToParameterMapping.getValue(property.name).state.value as T
1615
17- @Composable
16+ @Suppress(" UNCHECKED_CAST" )
17+ operator fun setValue (thisRef : Any? , property : KProperty <* >, value : T ) {
18+ (story.nameToParameterMapping.getValue(property.name).state as MutableState <T >).value = value
19+ }
20+
1821 operator fun provideDelegate (thisRef : Any? , property : KProperty <* >) = also {
1922 story.nameToParameterMapping.getOrPut(property.name) {
20- StoryParameter (property.name, type) { remember { mutableStateOf(defaultValue) } }
23+ StoryParameter (property.name, type) { mutableStateOf(defaultValue) }
2124 }
2225 }
2326}
You can’t perform that action at this time.
0 commit comments