Skip to content

Commit 6c429d3

Browse files
committed
Add AttrBuilderContext<TElement>?.toModifierOrAttrs() and Modifier.toModifierOrAttrs()
1 parent f2024f3 commit 6c429d3

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

compose-multiplatform-common/src/commonMain/kotlin/com/huanshankeji/compose/ui/ModifierOrAttrsScope.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.huanshankeji.compose.ui.unit.SizeValue
66
typealias ModifierOrAttrs<TElement> = (ModifierOrAttrsScope<TElement>.() -> Unit)?
77

88
expect abstract class Element
9+
10+
// TODO: add `out` to `TElement`
911
expect class ModifierOrAttrsScope<TElement : Element> {
1012
fun style(builder: StyleScope.() -> Unit)
1113
}

compose-multiplatform-common/src/jsMain/kotlin/com/huanshankeji/compose/ui/ModifierOrAttrsScope.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import org.w3c.dom.HTMLElement
99
fun <TElement : Element> ModifierOrAttrs<TElement>.toAttrs(): AttrBuilderContext<TElement>? =
1010
this?.let { { ModifierOrAttrsScope(this).it() } }
1111

12+
fun <TElement : Element> AttrBuilderContext<TElement>?.toModifierOrAttrs(): ModifierOrAttrs<TElement> =
13+
this?.let { { attrsScope.it() } }
14+
1215
actual typealias Element = HTMLElement
1316

1417
actual class ModifierOrAttrsScope<TElement : Element>(val attrsScope: AttrsScope<TElement>) {

compose-multiplatform-common/src/jvmMain/kotlin/com/huanshankeji/compose/ui/ModifierOrAttrsScopeJvm.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ fun <TElement : Element> ModifierOrAttrs<TElement>.toModifier(): Modifier =
99
ModifierOrAttrsScope<TElement>(Modifier).apply(it).modifier
1010
} ?: Modifier
1111

12+
fun <TElement : Element> Modifier.toModifierOrAttrs(): ModifierOrAttrs<TElement> =
13+
if (this !== Modifier) {
14+
{ modify { this then this@toModifierOrAttrs } }
15+
} else null
16+
1217
actual abstract class Element
1318

1419
actual class ModifierOrAttrsScope<TElement : Element>(modifier: Modifier) {

0 commit comments

Comments
 (0)