From 21cda3f3c68e801b2a4034f53ac8d1efcc4ed568 Mon Sep 17 00:00:00 2001 From: Oleksandr Karpovich Date: Thu, 10 Feb 2022 11:08:15 +0100 Subject: [PATCH] web: make ComposeDomNode inline (#1808) Co-authored-by: Oleksandr Karpovich --- .../org/jetbrains/compose/web/elements/Base.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt b/web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt index 3c579d560a..0cebc82819 100644 --- a/web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt +++ b/web/core/src/jsMain/kotlin/org/jetbrains/compose/web/elements/Base.kt @@ -15,15 +15,17 @@ import org.w3c.dom.svg.SVGElement @Composable @ExplicitGroupsComposable -private fun ComposeDomNode( - factory: () -> T, +private inline fun ComposeDomNode( + crossinline factory: () -> T, elementScope: TScope, attrsSkippableUpdate: @Composable SkippableUpdater.() -> Unit, - content: (@Composable TScope.() -> Unit)? + content: (@Composable TScope.() -> Unit) ) { currentComposer.startNode() if (currentComposer.inserting) { - currentComposer.createNode(factory) + currentComposer.createNode { + factory() + } } else { currentComposer.useNode() } @@ -31,7 +33,7 @@ private fun ComposeDomNode( attrsSkippableUpdate.invoke(SkippableUpdater(currentComposer)) currentComposer.startReplaceableGroup(0x7ab4aae9) - content?.invoke(elementScope) + content.invoke(elementScope) currentComposer.endReplaceableGroup() currentComposer.endNode() } @@ -134,7 +136,9 @@ fun TagElement( } }, elementScope = scope, - content = content + content = { + content?.invoke(this) + } ) refEffect?.let { effect ->