diff --git a/src/core/render/compiler.js b/src/core/render/compiler.js index 91b954c02..354b6a920 100644 --- a/src/core/render/compiler.js +++ b/src/core/render/compiler.js @@ -329,13 +329,25 @@ export class Compiler { * Compile sidebar */ sidebar(text, level) { + const {toc} = this const currentPath = this.router.getCurrentPath() let html = '' if (text) { html = this.compile(text) } else { - const tree = this.cacheTree[currentPath] || genTree(this.toc, level) + for (let i = 0; i < toc.length; i++) { + if (toc[i].ignoreSubHeading) { + const deletedHeaderLevel = toc[i].level + toc.splice(i, 1) + // Remove headers who are under current header + for (let j = i; deletedHeaderLevel < toc[j].level && j < toc.length; j++) { + toc.splice(j, 1) && j-- && i++ + } + i-- + } + } + const tree = this.cacheTree[currentPath] || genTree(toc, level) html = treeTpl(tree, '') this.cacheTree[currentPath] = tree } @@ -360,7 +372,6 @@ export class Compiler { for (let i = 0; i < toc.length; i++) { toc[i].ignoreSubHeading && toc.splice(i, 1) && i-- } - const tree = cacheTree[currentPath] || genTree(toc, level) cacheTree[currentPath] = tree