fix(sidebar): add correct node identity to heading set

This commit is contained in:
2026-07-07 13:26:35 +08:00
parent 574d17f201
commit ef7295ff7a
2 changed files with 21 additions and 21 deletions
+19 -4
View File
@@ -676,11 +676,26 @@ export function addRevealedClasses(root: HTMLDivElement, path: string) {
};
for (const child of root.children) collect(child);
// ---- Cascade: if a heading is revealed, its parents are too ----
const revealedSet = new Set<string>();
// ---- Cascade: directly revealed headings propagate ----
// 1. directly revealed headings
const revealedSet = new Set<string>(revealed);
// 2. Downward: all children of directly revealed headings
// let changed = true;
// while (changed) {
// changed = false;
// for (const h of headings) {
// if (revealedSet.has(h.text)) continue;
// if (h.parents.some((p) => revealedSet.has(p))) {
// revealedSet.add(h.text);
// changed = true;
// }
// }
// }
// 3. Upward: all parents of directly revealed headings
for (const h of headings) {
if (revealed.has(h.text) || revealedSet.has(h.text)) {
revealedSet.add(h.text);
if (revealed.has(h.text)) {
for (const p of h.parents) revealedSet.add(p);
}
}