import { Link } from "react-router-dom"; import { useEffect, useState } from "react"; import { Button } from "../../../ui/atoms/button"; import { useUIStatus } from "../../../ui-context"; import "./index.scss"; import { TOC } from "../toc"; import { PLACEMENT_ENABLED } from "../../../env"; import { SidePlacement } from "../../../ui/organisms/placement"; import { SidebarFilter } from "./filter"; export function SidebarContainer({ doc, label, children, tocTitle, }: { doc: any; label?: string; children: React.ReactNode; tocTitle?: string; }) { const { isSidebarOpen, setIsSidebarOpen } = useUIStatus(); const [classes, setClasses] = useState("sidebar"); useEffect(() => { let timeoutID; if (isSidebarOpen) { setClasses("sidebar is-expanded"); } else { setClasses("sidebar is-animating"); timeoutID = setTimeout(() => { setClasses("sidebar"); }, 300); } if (timeoutID) { return () => clearTimeout(timeoutID); } }, [isSidebarOpen]); useEffect(() => { const sidebar = document.querySelector("#sidebar-quicklinks"); const currentSidebarItem = sidebar?.querySelector("em"); if (sidebar && currentSidebarItem) { [sidebar, sidebar.querySelector(".sidebar-inner-nav")].forEach((n) => n?.scrollTo({ top: currentSidebarItem.offsetTop - window.innerHeight / 4, }) ); } }, []); return ( <> ); } export function RenderSideBar({ doc }) { if (!doc.related_content) { return ( {doc.sidebarHTML && ( <>
)} ); } return doc.related_content.map((node) => ( )); } function SidebarLeaf({ doc, parent }) { return (

{parent.title}

    {parent.content.map((node) => { if (node.content) { return (
  • ); } else { return (
  • {node.title}
  • ); } })}
); } function SidebarLeaflets({ node }) { return (
{node.uri ? {node.title} : node.title}
    {node.content.map((childNode) => { if (childNode.content) { return (
  1. ); } else { return (
  2. {childNode.title}
  3. ); } })}
); }