mirror of
https://github.com/facebook/docusaurus.git
synced 2025-08-04 09:19:16 +02:00
* feat: add all TOC levels to MDX loader * feat: add theme-level config for heading depth * test: add remark MDX loader test * fix: limit maxDepth validation to H2 - H6 * refactor: set default `maxDepth` using `joi` * refactor: `maxDepth` -> `maxHeadingLevel * refactor: invert underlying TOC depth API * refactor: make TOC algorithm level-aware * feat: add support for per-doc TOC heading levels * feat: support document-level heading levels for blog * fix: correct validation for toc level frontmatter * fix: ensure TOC doesn't generate redundant DOM * perf: simpler TOC heading search alg * docs: document heading level props for `TOCInline` * Update website/docs/guides/markdown-features/markdown-features-inline-toc.mdx Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> * docs: fix docs (again) * create dedicated test file for heading searching logic: exhaustive tests will be simpler to write * toc search: add real-world test * fix test * add dogfooding tests for toc min/max * add test for min/max toc frontmatter * reverse min/max order * add theme minHeadingLevel + tests * simpler TOC rendering logic * simplify TOC implementation (temp, WIP) * reverse unnatural order for minHeadingLevel/maxHeadingLevel * add TOC dogfooding tests to all content plugins * expose toc min/max heading level frontmatter to all 3 content plugins * refactor blogLayout: accept toc ReactElement directly * move toc utils to theme-common * add tests for filterTOC * create new generic TOCItems component * useless css file copied * fix toc highlighting className conflicts * update doc * fix types Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> Co-authored-by: slorber <lorber.sebastien@gmail.com>
65 lines
1.4 KiB
JavaScript
65 lines
1.4 KiB
JavaScript
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
module.exports = {
|
|
sidebar: [
|
|
{
|
|
type: 'doc',
|
|
id: 'index',
|
|
label: 'Index',
|
|
},
|
|
{
|
|
type: 'category',
|
|
label: 'section',
|
|
collapsible: false,
|
|
items: ['index', 'more-test'],
|
|
},
|
|
{
|
|
type: 'category',
|
|
label: 'Huge sidebar category',
|
|
items: generateHugeSidebarItems(4),
|
|
},
|
|
{
|
|
type: 'category',
|
|
label: 'TOC tests',
|
|
items: [
|
|
{
|
|
type: 'autogenerated',
|
|
dirName: 'toc',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
function generateHugeSidebarItems() {
|
|
const maxLevel = 4;
|
|
const linksCount = 5;
|
|
const categoriesCount = 5;
|
|
|
|
function generateRecursive(maxLevel, currentLevel = 0) {
|
|
if (currentLevel === maxLevel) {
|
|
return [];
|
|
}
|
|
|
|
const linkItems = [...Array(linksCount).keys()].map((index) => ({
|
|
type: 'link',
|
|
href: '/',
|
|
label: `Link ${index} (level ${currentLevel + 1})`,
|
|
}));
|
|
|
|
const categoryItems = [...Array(categoriesCount).keys()].map((index) => ({
|
|
type: 'category',
|
|
label: `Category ${index} (level ${currentLevel + 1})`,
|
|
items: generateRecursive(maxLevel, currentLevel + 1),
|
|
}));
|
|
|
|
return [...linkItems, ...categoryItems];
|
|
}
|
|
|
|
return generateRecursive(maxLevel);
|
|
}
|