mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-11 15:16:28 +08:00
26 lines
666 B
TypeScript
26 lines
666 B
TypeScript
import { TreeItem, TreeItems } from './../workspace-sidebar/page-tree';
|
|
|
|
const pickPath = (treeItems: TreeItem | TreeItems, targetId: string) => {
|
|
const pick = (tree: TreeItem, result: TreeItem[] = []) => {
|
|
if (tree.id === targetId) {
|
|
result.push(tree);
|
|
return result;
|
|
}
|
|
|
|
for (const child of tree?.children || []) {
|
|
if (pick(child, result).length) {
|
|
result.unshift(tree);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
return (Array.isArray(treeItems) ? treeItems : [treeItems]).map(treeItem =>
|
|
pick(treeItem)
|
|
);
|
|
};
|
|
|
|
export { pickPath };
|