ultisuite-client/lib/sidebar-folder-tree-utils.ts
2026-05-20 16:01:08 +02:00

29 lines
766 B
TypeScript

import type { FolderTreeNode } from "@/lib/sidebar-nav-data"
/** Retourne les ids des parents à ouvrir pour afficher `targetId`, ou null. */
export function ancestorFolderIdsForTarget(
nodes: FolderTreeNode[],
targetId: string,
chain: string[] = []
): string[] | null {
for (const n of nodes) {
if (n.id === targetId) return chain
if (n.children?.length) {
const found = ancestorFolderIdsForTarget(n.children, targetId, [
...chain,
n.id,
])
if (found) return found
}
}
return null
}
export function folderSubtreeContainsId(
node: FolderTreeNode,
targetId: string
): boolean {
if (node.id === targetId) return true
return node.children?.some((c) => folderSubtreeContainsId(c, targetId)) ?? false
}