/ sidebars.js
sidebars.js
1 const sidebarData = require("./config/sidebar/index.json"); 2 3 const getDocId = (doc) => { 4 return doc 5 .replace(/\.mdx?$/, "") 6 .split("/") 7 .slice(1) 8 .join("/"); 9 }; 10 11 const getItem = (item) => { 12 const type = item["_template"]; 13 14 let itemProps = { 15 type: type, 16 }; 17 18 if (type === "doc") { 19 if (!item.document) { 20 return []; 21 } 22 23 itemProps.id = getDocId(item.document); 24 25 if (item.label) { 26 itemProps.label = item.label; 27 } 28 } 29 30 if (type === "category") { 31 if (item.title) { 32 itemProps.label = item.title; 33 } 34 35 if (item.link && item.link !== "none") { 36 if (item.link === "doc" && item.docLink) { 37 itemProps.link = { 38 type: "doc", 39 id: getDocId(item.docLink), 40 }; 41 } else if (item.link === "generated") { 42 itemProps.link = { 43 type: "generated-index", 44 }; 45 } else { 46 return []; 47 } 48 } 49 50 itemProps.items = item.items.flatMap((item) => { 51 return getItem(item); 52 }); 53 } 54 55 if (type === "link") { 56 if (item.href && item.title) { 57 itemProps.label = item.title; 58 itemProps.href = item.href; 59 } else { 60 return []; 61 } 62 } 63 64 return [itemProps]; 65 }; 66 67 const sidebars = { 68 tutorialSidebar: sidebarData.items.flatMap((item) => { 69 return getItem(item); 70 }), 71 }; 72 73 module.exports = sidebars;