支持搜索文件和目录

This commit is contained in:
xintaofei
2026-03-19 00:24:50 +08:00
parent f3acb45cb0
commit 33d70b8866
15 changed files with 432 additions and 63 deletions

View File

@@ -31,6 +31,9 @@ interface AuxPanelContextValue {
setWidth: (w: number) => void
setActiveTab: (tab: AuxPanelTab) => void
openTab: (tab: AuxPanelTab) => void
pendingRevealPath: string | null
revealInFileTree: (path: string) => void
consumePendingRevealPath: () => void
}
const AuxPanelContext = createContext<AuxPanelContextValue | null>(null)
@@ -64,6 +67,9 @@ export function AuxPanelProvider({
const [width, setWidthState] = useState(DEFAULT_WIDTH)
const [restored, setRestored] = useState(false)
const [activeTab, setActiveTab] = useState<AuxPanelTab>("session_files")
const [pendingRevealPath, setPendingRevealPath] = useState<string | null>(
null
)
const toggle = useCallback(() => setIsOpen((prev) => !prev), [])
@@ -76,6 +82,16 @@ export function AuxPanelProvider({
setIsOpen(true)
}, [])
const revealInFileTree = useCallback((path: string) => {
setPendingRevealPath(path)
setActiveTab("file_tree")
setIsOpen(true)
}, [])
const consumePendingRevealPath = useCallback(() => {
setPendingRevealPath(null)
}, [])
useEffect(() => {
const stored = loadPersistedPanelState(storageKey)
// Hydrate from localStorage after mount to keep SSR/CSR markup consistent.
@@ -101,8 +117,21 @@ export function AuxPanelProvider({
setWidth,
setActiveTab,
openTab,
pendingRevealPath,
revealInFileTree,
consumePendingRevealPath,
}),
[isOpen, width, activeTab, toggle, setWidth, openTab]
[
isOpen,
width,
activeTab,
toggle,
setWidth,
openTab,
pendingRevealPath,
revealInFileTree,
consumePendingRevealPath,
]
)
return (