Extensions

{#each FILTERS as f} {/each}
{#if panel === "apk"}
Install from APK URL
installError = null} onkeydown={(e) => e.key === "Enter" && !installing && installExternal()} use:focusOnMount />
{#if installError}
{installError}
{/if}
{/if} {#if panel === "repos"}
Extension Repositories
{#if reposLoading}
{:else} {#if repos.length === 0}
No repos configured.
{:else}
{#each repos as url}
{url}
{/each}
{/if}
repoError = null} onkeydown={(e) => e.key === "Enter" && !savingRepos && addRepo()} />
{#if repoError}
{repoError}
{/if} {/if}
{/if} {#if loading}
{:else if groups.length === 0}
No extensions found.
{:else}
{#each groups as { base, primary, variants }} {@const isExpanded = expanded.has(base)} {@const hasVariants = variants.length > 0}
{primary.name} (e.target as HTMLImageElement).style.display = "none"} />
{base} {primary.lang.toUpperCase()} v{primary.versionName}
{#if working.has(primary.pkgName)} {:else if primary.hasUpdate}
{:else if primary.isInstalled} {:else} {/if} {#if hasVariants} {/if}
{#if isExpanded && hasVariants}
{#each variants as v}
{v.lang.toUpperCase()} {v.name} v{v.versionName} {#if v.hasUpdate}{/if}
{#if working.has(v.pkgName)} {:else if v.hasUpdate} {:else if v.isInstalled} {:else} {/if}
{/each}
{/if}
{/each}
{/if}