mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-18 19:46:57 +02:00
feat(v2): composition syntax highlighting & live code editors (#1555)
* feat(v2): composition syntax highlighting & react-live playground * mobile friendly tweak * refactor styling * revert docs
This commit is contained in:
parent
246c1814c0
commit
305a4f0a29
21 changed files with 287 additions and 84 deletions
47
packages/docusaurus-mdx-loader/src/remark/rightToc/search.js
Normal file
47
packages/docusaurus-mdx-loader/src/remark/rightToc/search.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
* Copyright (c) 2017-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
const toString = require('mdast-util-to-string');
|
||||
const visit = require('unist-util-visit');
|
||||
const slugs = require('github-slugger')();
|
||||
|
||||
// Visit all headings. We `slug` all headings (to account for
|
||||
// duplicates), but only take h2 and h3 headings.
|
||||
const search = node => {
|
||||
const headings = [];
|
||||
let current = -1;
|
||||
let currentDepth = 0;
|
||||
|
||||
slugs.reset();
|
||||
|
||||
const onHeading = (child, index, parent) => {
|
||||
const value = toString(child);
|
||||
const id =
|
||||
child.data && child.data.hProperties && child.data.hProperties.id;
|
||||
const slug = slugs.slug(id || value);
|
||||
|
||||
if (parent !== node || !value || child.depth > 3 || child.depth < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
const entry = {value, id: slug, children: []};
|
||||
|
||||
if (!headings.length || currentDepth >= child.depth) {
|
||||
headings.push(entry);
|
||||
current += 1;
|
||||
currentDepth = child.depth;
|
||||
} else {
|
||||
headings[current].children.push(entry);
|
||||
}
|
||||
};
|
||||
|
||||
visit(node, 'heading', onHeading);
|
||||
|
||||
return headings;
|
||||
};
|
||||
|
||||
module.exports = search;
|
Loading…
Add table
Add a link
Reference in a new issue