Spaces:
Sleeping
Sleeping
File size: 2,124 Bytes
d7e58f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
const React = require('react');
const fs = require('fs-extra');
const path = require('path');
const join = path.join;
const CWD = process.cwd();
const CompLibrary = require(join(
CWD,
'/node_modules/docusaurus/lib/core/CompLibrary.js',
));
const SideNav = require(join(
CWD,
'/node_modules/docusaurus/lib/core/nav/SideNav.js',
));
const Container = CompLibrary.Container;
const OVERVIEW_ID = 'tutorial_overview';
class TutorialSidebar extends React.Component {
render() {
const {currentTutorialID} = this.props;
const current = {
id: currentTutorialID || OVERVIEW_ID,
};
const toc = [
{
type: 'CATEGORY',
title: 'Tutorials',
children: [
{
type: 'LINK',
item: {
permalink: 'tutorials/',
id: OVERVIEW_ID,
title: 'Overview',
},
},
],
},
];
const jsonFile = join(CWD, 'tutorials.json');
const normJsonFile = path.normalize(jsonFile);
const json = JSON.parse(fs.readFileSync(normJsonFile, {encoding: 'utf8'}));
Object.keys(json).forEach(category => {
const categoryItems = json[category];
const items = [];
categoryItems.map(item => {
items.push({
type: 'LINK',
item: {
permalink: `tutorials/${item.id}`,
id: item.id,
title: item.title,
},
});
});
toc.push({
type: 'CATEGORY',
title: category,
children: items,
});
});
return (
<Container className="docsNavContainer" id="docsNav" wrapper={false}>
<SideNav
language={'tutorials'}
root={'tutorials'}
title="Tutorials"
contents={toc}
current={current}
/>
</Container>
);
}
}
module.exports = TutorialSidebar;
|