{#if models !== null} {#if selectedModelId === null}
{$i18n.t('Models')}
{filteredModels.length}
{ showManageModal = true; }} >
{ showConfigModal = true; }} >
{#if searchValue}
{ searchValue = ''; }} >
{/if}
{#if models.length > 0} {#each filteredModels as model, modelIdx (model.id)}
{ selectedModelId = model.id; }} >
{model.name}
{!!model?.meta?.description ? model?.meta?.description : model?.ollama?.digest ? `${model.id} (${model?.ollama?.digest})` : model.id}
{#if shiftKey}
{ hideModelHandler(model); }} > {#if model?.meta?.hidden}
{:else}
{/if}
{:else}
{ selectedModelId = model.id; }} >
{ exportModelHandler(model); }} hideHandler={() => { hideModelHandler(model); }} copyLinkHandler={() => { copyLinkHandler(model); }} onClose={() => {}} >
{ toggleModelHandler(model); }} />
{/if}
{/each} {:else}
{$i18n.t('No models found')}
{/if}
{#if $user?.role === 'admin'}
{ if (importFiles.length > 0) { const reader = new FileReader(); reader.onload = async (event) => { try { const models = JSON.parse(String(event.target.result)); modelsImportInProgress = true; const res = await importModels(localStorage.token, models); modelsImportInProgress = false; if (res) { toast.success($i18n.t('Models imported successfully')); await init(); } else { toast.error($i18n.t('Failed to import models')); } } catch (e) { toast.error($i18n.t('Invalid JSON file')); console.error(e); } }; reader.readAsText(importFiles[0]); } }} />
{ modelsImportInputElement.click(); }} > {#if modelsImportInProgress}
{/if}
{$i18n.t('Import Presets')}
{ downloadModels(models); }} >
{$i18n.t('Export Presets')} ({models.length})
{/if} {:else}
m.id === selectedModelId)} preset={false} onSubmit={(model) => { console.log(model); upsertModelHandler(model); selectedModelId = null; }} onBack={() => { selectedModelId = null; }} /> {/if} {:else}
{/if}