@@ -7,9 +7,11 @@ import androidx.compose.runtime.getValue
77import androidx.compose.runtime.remember
88import androidx.compose.runtime.rememberUpdatedState
99import androidx.compose.ui.Modifier
10+ import androidx.compose.ui.UiComposable
1011import androidx.compose.ui.layout.MultiMeasureLayout
1112import androidx.compose.ui.layout.layout
1213import androidx.compose.ui.platform.LocalContext
14+ import androidx.compose.ui.platform.inspectable
1315import androidx.compose.ui.unit.Constraints
1416import androidx.compose.ui.util.fastForEach
1517import androidx.compose.ui.util.fastForEachIndexed
@@ -28,6 +30,7 @@ import net.obsidianx.chakra.layout.asFloatOrZero
2830import net.obsidianx.chakra.layout.getConstraints
2931import net.obsidianx.chakra.layout.horizontalGap
3032import net.obsidianx.chakra.layout.horizontalPadding
33+ import net.obsidianx.chakra.layout.isContainer
3134import net.obsidianx.chakra.layout.isSet
3235import net.obsidianx.chakra.layout.measureNode
3336import net.obsidianx.chakra.layout.removeAllChildren
@@ -40,9 +43,9 @@ import kotlin.math.max
4043import kotlin.math.roundToInt
4144
4245@Composable
43- fun FlexboxScope.Flexbox (
46+ inline fun FlexboxScope.Flexbox (
4447 modifier : Modifier = Modifier ,
45- content : @Composable FlexboxScope .() -> Unit = {}
48+ crossinline content : @Composable FlexboxScope .() -> Unit = {}
4649) {
4750 Flexbox (
4851 modifier = modifier,
@@ -52,6 +55,7 @@ fun FlexboxScope.Flexbox(
5255
5356@SuppressLint(" RememberReturnType" )
5457@Composable
58+ @UiComposable
5559fun Flexbox (
5660 modifier : Modifier = Modifier ,
5761 parentLayoutState : FlexLayoutState ? = null,
@@ -119,7 +123,7 @@ fun Flexbox(
119123 val placeable = measurable.measure(constraints)
120124 layout(placeable.measuredWidth, placeable.measuredHeight) {
121125 log(" [Layout] Place [${layoutNode?.layoutWidth} , ${layoutNode?.layoutHeight} ]@(${layoutNode?.layoutX} , ${layoutNode?.layoutY} )" )
122- placeable.placeRelative (0 , 0 )
126+ placeable.place (0 , 0 )
123127 }
124128 },
125129 content = {
@@ -273,17 +277,16 @@ fun Flexbox(
273277 return @mapIndexed measurable.measure(Constraints ())
274278 }
275279 val childNode = node.getChildAt(index)
276- val isContainer = childNode.childCount > 0
277280
278281 val paddingStart = ceil(childNode.getLayoutPadding(YogaEdge .START ))
279282 val paddingTop = ceil(childNode.getLayoutPadding(YogaEdge .TOP ))
280283 val paddingEnd = ceil(childNode.getLayoutPadding(YogaEdge .END ))
281284 val paddingBottom = ceil(childNode.getLayoutPadding(YogaEdge .BOTTOM ))
282285
283286 val verticalPadding =
284- (paddingTop + paddingBottom).takeIf { ! isContainer } ? : 0f
287+ (paddingTop + paddingBottom).takeIf { ! childNode. isContainer } ? : 0f
285288 val horizontalPadding =
286- (paddingStart + paddingEnd).takeIf { ! isContainer } ? : 0f
289+ (paddingStart + paddingEnd).takeIf { ! childNode. isContainer } ? : 0f
287290
288291 val childWidth =
289292 (childNode.layoutWidth - horizontalPadding)
@@ -312,12 +315,11 @@ fun Flexbox(
312315 return @fastForEachIndexed
313316 }
314317 val childNode = node.getChildAt(index)
315- val isContainer = childNode.childCount > 0
316318
317319 val paddingStart =
318- childNode.getLayoutPadding(YogaEdge .START ).takeIf { ! isContainer } ? : 0f
320+ childNode.getLayoutPadding(YogaEdge .START ).takeIf { ! childNode. isContainer } ? : 0f
319321 val paddingTop =
320- childNode.getLayoutPadding(YogaEdge .TOP ).takeIf { ! isContainer } ? : 0f
322+ childNode.getLayoutPadding(YogaEdge .TOP ).takeIf { ! childNode. isContainer } ? : 0f
321323
322324 val nodeX =
323325 (childNode.layoutX + paddingStart).coerceAtLeast(layoutPadStart).roundToInt()
0 commit comments