@let plugins = query.plugins$ | async; @let available = (plugins?.length || 0) > 0; @let isLoading = (query.isLoading$ | async) && ((plugins?.length || 0) === 0); @let uploading = query.uploading$() | async; @let progress = query.uploadProgress$() | async; @let isOffline = store.isOffline$ | async; @let totalCount = query.totalCount$ | async; @let filteredCount = query.filteredCount$ | async; @let showAdvancedFilters = query.showAdvancedFilters$ | async; @let selectedView = query.selectedView$ | async;
@if (available || isLoading) {
Plugin Marketplace
@if (!isLoading) {
Showing {{ filteredCount || 0 }} of {{ totalCount || 0 }} plugins
}
} @if (available) { @for (plugin of plugins; track plugin.id; let isLast = $last) { @defer (on viewport) { } @placeholder (minimum 500ms) {
} } } @else if (isLoading) {
} @else {
} @if (isUploadAvailable) { @defer (on idle) {
} @placeholder {
} }