Something went wrong. Try again.
[READ-ONLY]
a fast, modern browser for the npm registry forked from npmx.dev/npmx.dev
Something went wrong. Try again.
727 B · 31 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132export function useFileTreeState(baseUrl: string) { const expanded = useState<Set<string>>(`npmx-file-tree${baseUrl}`, () => new Set<string>())
function toggleDir(path: string) { if (expanded.value.has(path)) { expanded.value.delete(path) } else { expanded.value.add(path) } }
function isExpanded(path: string) { return expanded.value.has(path) }
function autoExpandAncestors(path: string) { if (!path) return const parts = path.split('/').filter(Boolean) let prefix = '' for (const part of parts) { prefix = prefix ? `${prefix}/${part}` : part expanded.value.add(prefix) } }
return { toggleDir, isExpanded, autoExpandAncestors, }}