{ confirmDeleteModel(); }} />
{#if show}
{#if searchEnabled}
{ if (e.code === 'Enter' && filteredItems.length > 0) { selectItem(filteredItems[selectedModelIdx], selectedModelIdx); return; // dont need to scroll on selection } else if (e.code === 'ArrowDown') { e.stopPropagation(); selectedModelIdx = Math.min(selectedModelIdx + 1, filteredItems.length - 1); } else if (e.code === 'ArrowUp') { e.stopPropagation(); selectedModelIdx = Math.max(selectedModelIdx - 1, 0); } else { // if the user types something, reset to the top selection. selectedModelIdx = 0; } const item = document.querySelector(`[data-arrow-selected="true"]`); item?.scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'instant' }); }} /> {#if modelFilterItems.length > 0 || (multipleEnabled && items.length > 0)}
{#if multipleEnabled && items.length > 0} {/if} {#if modelFilterItems.length > 0} {/if}
{/if}
{/if}
{#if filteredItems.length === 0} {#if items.length === 0 && $user?.role === 'admin'}
{$i18n.t('No models available')}
{$i18n.t('Connect to an AI provider to start chatting')}
{:else}
{$i18n.t('No results found')}
{/if} {:else}
{ listScrollTop = listContainer.scrollTop; }} >
{#each filteredItems.slice(visibleStart, visibleEnd) as item, i (item.value)} {@const index = visibleStart + i} { selectItem(item, index); }} /> {/each}
{/if} {#if !selectionOnly && !(searchValue.trim() in $MODEL_DOWNLOAD_POOL) && searchValue && ollamaVersion && $user?.role === 'admin'} {/if} {#each selectionOnly ? [] : Object.keys($MODEL_DOWNLOAD_POOL) as model}
Downloading "{model}"
{'pullProgress' in $MODEL_DOWNLOAD_POOL[model] ? `(${$MODEL_DOWNLOAD_POOL[model].pullProgress}%)` : ''}
{#if 'digest' in $MODEL_DOWNLOAD_POOL[model] && $MODEL_DOWNLOAD_POOL[model].digest}
{$MODEL_DOWNLOAD_POOL[model].digest}
{/if}
{/each}
{#if showSetDefault}
{:else}
{/if}