fun PackageSearchCentralPanel()

in plugin/src/main/kotlin/com/jetbrains/packagesearch/plugin/ui/panels/packages/PackageSearchCentralPanel.kt [21:57]


fun PackageSearchCentralPanel(
    modifier: Modifier = Modifier,
    onLinkClick: (String) -> Unit,
) = Column(modifier) {
    val viewModel: PackageListViewModel = viewModel()
    val searchQuery by viewModel.searchQueryStateFlow.collectAsState()
    val isOnlineSearchEnabled by viewModel.isOnlineSearchEnabledFlow.collectAsState()
    PackageSearchSearchBar(
        onlineSearchEnabled = isOnlineSearchEnabled,
        searchQuery = searchQuery,
        onSearchQueryChange = { viewModel.setSearchQuery(it) },
        onSearchQueryClear = { viewModel.clearSearchQuery() }
    )
    Divider(Orientation.Horizontal)
    val packagesList by viewModel.packageListItemsFlow.collectAsState()
    Box {
        when {
            packagesList.isEmpty() -> NoResultsToShow(onLinkClick)
            else -> {
                val isCompact by viewModel.isCompactFlow.collectAsState()
                PackageSearchPackageList(
                    packagesList = packagesList,
                    isCompact = isCompact,
                    selectableLazyListState = viewModel.selectableLazyListState,
                    onPackageEvent = viewModel::onPackageListItemEvent,
                )
                VerticalScrollbar(
                    modifier = Modifier.fillMaxHeight().align(Alignment.CenterEnd),
                    scrollState = viewModel.selectableLazyListState.lazyListState,
                )
            }
        }
        val isLoading by viewModel.isLoadingFlow.collectAsState()
        if (isLoading) IndeterminateHorizontalProgressBar(Modifier.fillMaxWidth())
    }

}