33package xyz.xenondevs.invui.dsl
44
55import xyz.xenondevs.commons.provider.Provider
6+ import xyz.xenondevs.commons.provider.flatten
67import xyz.xenondevs.commons.provider.mutableProvider
8+ import xyz.xenondevs.commons.provider.provider
79import xyz.xenondevs.invui.ExperimentalReactiveApi
810import xyz.xenondevs.invui.dsl.property.MutableProviderDslProperty
911import xyz.xenondevs.invui.dsl.property.ProviderDslProperty
1012import xyz.xenondevs.invui.gui.Gui
1113import xyz.xenondevs.invui.gui.IngredientPreset
1214import xyz.xenondevs.invui.gui.ScrollGui
15+ import xyz.xenondevs.invui.gui.lineCountProvider
16+ import xyz.xenondevs.invui.gui.maxLineProvider
1317import xyz.xenondevs.invui.gui.setContent
1418import xyz.xenondevs.invui.gui.setLine
1519import xyz.xenondevs.invui.inventory.Inventory
@@ -43,9 +47,12 @@ internal abstract class ScrollGuiDslImpl<C : Any>(
4347 presets : List <IngredientPreset >
4448) : GuiDslImpl<ScrollGui<C>, ScrollGui.Builder<C>>(structure, presets), ScrollGuiDsl<C> {
4549
50+ private val internalLineCount = mutableProvider { provider(0 ) }
51+ private val internalMaxLine = mutableProvider { provider(0 ) }
52+
4653 override val content = ProviderDslProperty (emptyList<C >())
4754 override val line = MutableProviderDslProperty (0 )
48- override val lineCount = mutableProvider( 0 )
55+ override val lineCount = internalLineCount.flatten( )
4956 override val maxLine = mutableProvider(0 )
5057
5158 override fun applyToBuilder (builder : ScrollGui .Builder <C >) {
@@ -55,10 +62,8 @@ internal abstract class ScrollGuiDslImpl<C : Any>(
5562 setLine(line)
5663
5764 addModifier { gui ->
58- lineCount.set(gui.lineCount)
59- maxLine.set(gui.maxLine)
60- gui.addLineCountChangeHandler { _, l -> lineCount.set(l) }
61- gui.addLineCountChangeHandler { _, _ -> maxLine.set(gui.maxLine) }
65+ internalLineCount.set(gui.lineCountProvider)
66+ internalMaxLine.set(gui.maxLineProvider)
6267 }
6368 }
6469 }
0 commit comments