package at.hannibal2.skyhanni.utils.renderables import at.hannibal2.skyhanni.data.model.TextInput import at.hannibal2.skyhanni.utils.StringUtils.removeColor class Searchable(val renderable: Renderable, val string: String?) fun Renderable.toSearchable(searchText: String? = null) = Searchable(this, searchText?.removeColor()) fun Searchable.toRenderable() = renderable fun List.toRenderable() = map { it.toRenderable() } fun List.toMap() = associate { it.renderable to it.string } const val SEARCH_PREFIX = "§eSearch: §7" fun List.buildSearchBox( textInput: TextInput, ): Renderable { val key = 0 return Renderable.searchBox( Renderable.verticalSearchableContainer(toMap(), textInput = textInput, key = key + 1), SEARCH_PREFIX, onUpdateSize = { println("onUpdateSize") }, textInput = textInput, key = key, ) } fun List.buildSearchableScrollable( height: Int, textInput: TextInput, scrollValue: ScrollValue = ScrollValue(), velocity: Double = 2.0, ): Renderable { val key = 0 return Renderable.searchBox( Renderable.searchableScrollList( toMap(), textInput = textInput, key = key + 1, height = height, scrollValue = scrollValue, velocity = velocity, ), SEARCH_PREFIX, onUpdateSize = { println("onUpdateSize") }, textInput = textInput, key = key, ) } fun Map, String?>.buildSearchableTable(): Renderable { val textInput = TextInput() val key = 0 return Renderable.searchBox( Renderable.searchableTable(toMap(), textInput = textInput, key = key + 1), SEARCH_PREFIX, onUpdateSize = { println("onUpdateSize") }, textInput = textInput, key = key, ) }