From 674760bfc1122e0a19fe299e05a86d1cbb528e6f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 8 Sep 2026 16:54:15 -0400 Subject: [PATCH] refac --- src/lib/components/chat/FileNav.svelte | 43 ++++++------------- .../chat/FileNav/FileEntryRow.svelte | 28 ++++++------ 2 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/lib/components/chat/FileNav.svelte b/src/lib/components/chat/FileNav.svelte index fb136deb31..570582f995 100644 --- a/src/lib/components/chat/FileNav.svelte +++ b/src/lib/components/chat/FileNav.svelte @@ -1297,34 +1297,19 @@ const selectedPath = path ?? entryPath(currentPath, entry); const idx = index ?? visibleEntries.findIndex((row) => row.fullPath === selectedPath); if (idx < 0) return; - if (event.shiftKey && lastClickedIndex !== null) { - // Range select — replaces current selection with range - const start = Math.min(lastClickedIndex, idx); - const end = Math.max(lastClickedIndex, idx); - const newSet = new Set(); - for (let i = start; i <= end; i++) { - const row = visibleEntries[i]; - if (row) newSet.add(row.fullPath); - } - selectedEntries = newSet; - } else if (event.metaKey || event.ctrlKey) { - // Toggle one - if (selectedEntries.has(selectedPath)) { - selectedEntries.delete(selectedPath); - } else { - selectedEntries.add(selectedPath); - } - selectedEntries = selectedEntries; - } else { - // In selection mode (touch), toggle - if (selectedEntries.has(selectedPath)) { - selectedEntries.delete(selectedPath); - } else { - selectedEntries.add(selectedPath); - } - selectedEntries = selectedEntries; + const next = new Set(selectedEntries); + const remove = next.has(selectedPath); + const range = event.shiftKey && !remove && lastClickedIndex !== null; + const from = range ? Math.min(lastClickedIndex!, idx) : idx; + const to = range ? Math.max(lastClickedIndex!, idx) : idx; + for (let i = from; i <= to; i++) { + const row = visibleEntries[i]; + if (!row) continue; + if (remove) next.delete(row.fullPath); + else next.add(row.fullPath); } - lastClickedIndex = idx; + selectedEntries = next; + if (!event.shiftKey || lastClickedIndex === null) lastClickedIndex = idx; }; const enterSelectionMode = () => { @@ -1582,10 +1567,10 @@ > {#if isDragOver && !isSearching}
- + {$i18n.t('Drop to upload')}
diff --git a/src/lib/components/chat/FileNav/FileEntryRow.svelte b/src/lib/components/chat/FileNav/FileEntryRow.svelte index ee2ca82043..d1f7f8c6e6 100644 --- a/src/lib/components/chat/FileNav/FileEntryRow.svelte +++ b/src/lib/components/chat/FileNav/FileEntryRow.svelte @@ -226,6 +226,21 @@ {/if} + {#if selectionMode || selected} + + {/if} +