import { Button, Collapse, Drawer, Hidden, IconButton, List, ListItemText, ListSubheader, Typography, } from '@mui/material'; import { Theme } from '@mui/material/styles'; import makeStyles from '@mui/styles/makeStyles'; import { ExpandLess, ExpandMore } from '@mui/icons-material'; import { SidePanelContext } from '@rollem/ui/lib/contexts/sidepanel-context'; import { useState } from 'react'; import { DocsData, DocsDataTree } from '../../../lib/markdown/docs/get-docs-data'; import styles from './DocTree.module.scss'; import ListItemButton from "@mui/material/ListItemButton"; const useStyles = makeStyles((theme: Theme) => ({ root: { width: '100%', minHeight: '100%', maxWidth: 360, backgroundColor: theme.palette.background.paper, }, nested: { paddingLeft: theme.spacing(4), }, listHeader: { borderBottom: '1px solid', borderColor: theme.palette.divider, } }), ); export default function DocTree({ allDocsData }: { allDocsData: DocsDataTree[] }): JSX.Element { const classes = useStyles(); return (<> {({ docsDrawerOpen, toggleDocsDrawer }) => ( )} ); } function DocTreeListRoot({ allDocsData }: { allDocsData: DocsDataTree[]}): JSX.Element { const classes = useStyles(); return (
Docs } className={classes.root} dense > {allDocsData.filter(child => !child.item.hide_in_sidebar).map((node) => makeTree(node))}
); } function makeTree(treeNode: DocsDataTree, nested: boolean = false): JSX.Element { const [open, setOpen] = useState(true); const classes = useStyles(); const children = treeNode.children?.filter(child => !child.item.hide_in_sidebar); const hasChildren = children && children.length > 0; let childElements = <>; let openToggle = <>; let handleClick = (event: React.MouseEvent) => { }; if (hasChildren) { childElements = ( {children.map(child => makeTree(child, true))} ); handleClick = (event: React.MouseEvent) => { event.nativeEvent.stopImmediatePropagation(); event.stopPropagation(); event.preventDefault(); setOpen(!open); }; openToggle = ( {open ? : } ); } const path = '/docs/' + treeNode.item.route.join('/'); return (<> {openToggle} {childElements} ); } function makeEntry(data: DocsData): JSX.Element { // console.log(data); if (!data) { return <>; } const path = '/docs/' + data.route.join('/'); return ( {data.title} ) }