diff options
| author | Fuwn <[email protected]> | 2026-02-07 05:08:19 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-07 05:08:19 -0800 |
| commit | 298915616aab5a3c7c7776f213908391ee3d66ba (patch) | |
| tree | 72a8ea0468a4d6b879a3d8448c36dcac913aed2c /apps/web/app/reader | |
| parent | fix: prevent sidebar max width from clamping persisted size on load (diff) | |
| download | asa.news-298915616aab5a3c7c7776f213908391ee3d66ba.tar.xz asa.news-298915616aab5a3c7c7776f213908391ee3d66ba.zip | |
fix: reset sidebar to midpoint of min/max, detail to 50/50 split
Read current panel dimensions from DOM, compute sidebar midpoint
as (192px + maxWidth) / 2, and detail as equal halves. Write
computed values to localStorage before reload.
Diffstat (limited to 'apps/web/app/reader')
| -rw-r--r-- | apps/web/app/reader/_components/command-palette.tsx | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/apps/web/app/reader/_components/command-palette.tsx b/apps/web/app/reader/_components/command-palette.tsx index 32f035a..e9b7b04 100644 --- a/apps/web/app/reader/_components/command-palette.tsx +++ b/apps/web/app/reader/_components/command-palette.tsx @@ -195,12 +195,38 @@ export function CommandPalette() { <Command.Item onSelect={() => actionAndClose(() => { - localStorage.removeItem( - "react-resizable-panels:asa-detail-layout:entry-list:detail-panel" - ) - localStorage.removeItem( - "react-resizable-panels:asa-sidebar-layout:sidebar:main-content" - ) + const sidebarPanel = document.querySelector('[data-panel-id="sidebar"]') as HTMLElement | null + const mainContentPanel = document.querySelector('[data-panel-id="main-content"]') as HTMLElement | null + if (sidebarPanel && mainContentPanel) { + const totalPixels = sidebarPanel.offsetWidth + mainContentPanel.offsetWidth + const minPixels = 192 + const maxPixels = parseInt(sidebarPanel.style.maxWidth, 10) || Math.round(totalPixels * 0.35) + const midpoint = Math.round((minPixels + maxPixels) / 2) + localStorage.setItem( + "react-resizable-panels:asa-sidebar-layout:sidebar:main-content", + JSON.stringify({ sidebar: midpoint, "main-content": totalPixels - midpoint }) + ) + } else { + localStorage.removeItem( + "react-resizable-panels:asa-sidebar-layout:sidebar:main-content" + ) + } + + const entryListPanel = document.querySelector('[data-panel-id="entry-list"]') as HTMLElement | null + const detailPanel = document.querySelector('[data-panel-id="detail-panel"]') as HTMLElement | null + if (entryListPanel && detailPanel) { + const totalPixels = entryListPanel.offsetWidth + detailPanel.offsetWidth + const halfPixels = Math.round(totalPixels / 2) + localStorage.setItem( + "react-resizable-panels:asa-detail-layout:entry-list:detail-panel", + JSON.stringify({ "entry-list": halfPixels, "detail-panel": totalPixels - halfPixels }) + ) + } else { + localStorage.removeItem( + "react-resizable-panels:asa-detail-layout:entry-list:detail-panel" + ) + } + window.location.reload() }) } |