From 510fd8cbe53abb39cba2c7cbaaefcf2783dc0066 Mon Sep 17 00:00:00 2001 From: "netop://ウィビ" Date: Fri, 24 Apr 2026 16:37:33 -0700 Subject: Implement v0.6-1.0: shortcuts, format, export/import, splitter, timing, APQ - v0.6: matchShortcut + format(); Cmd+Shift+Enter/W/F + Cmd+Alt+arrows - v0.7: SessionStore.exportAll/importTabs with version-1 validator - v0.8: Splitter component + four resize handles persisted under layout.* - v0.10: createApqFetcher (HTTP-only) wrapping shared http-body helpers - Drop .svelte re-exports from index.ts for multi-entry JSR/npm publishing --- source/library/components/HistoryPanel.svelte | 106 ++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 6 deletions(-) (limited to 'source/library/components/HistoryPanel.svelte') diff --git a/source/library/components/HistoryPanel.svelte b/source/library/components/HistoryPanel.svelte index b7f5c4c..01f397a 100644 --- a/source/library/components/HistoryPanel.svelte +++ b/source/library/components/HistoryPanel.svelte @@ -3,13 +3,29 @@ type Props = { entries: HistoryEntry[]; + notice?: string | null; onClear: () => void; + onDismissNotice?: () => void; + onExport?: () => void; onFavorite: (id: string) => void; + onImport?: (file: File) => void; onLoad: (id: string, inNewTab: boolean) => void; onRemove: (id: string) => void; }; - let { entries, onClear, onFavorite, onLoad, onRemove }: Props = $props(); + let { + entries, + notice = null, + onClear, + onDismissNotice, + onExport, + onFavorite, + onImport, + onLoad, + onRemove + }: Props = $props(); + + let fileInput = $state(null); const sorted = $derived([...entries].sort((a, b) => { if (a.favorite !== b.favorite) @@ -33,6 +49,20 @@ onLoad(id, event.shiftKey); } } + + function onImportClick() { + fileInput?.click(); + } + + function onFileChange(event: Event) { + const input = event.currentTarget as HTMLInputElement; + const file = input.files?.[0]; + + if (file) + onImport?.(file); + + input.value = ""; + }
-
- History - {#if entries.length > 0} - +
+
+ History +
+ {#if onExport} + + {/if} + {#if onImport} + + + {/if} + {#if entries.length > 0} + + {/if} +
+
+ {#if notice} +
+ {notice} + {#if onDismissNotice} + + {/if} +
{/if}
-- cgit v1.2.3