import "./index.css"; import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'; import {useEffect, useRef, useState} from "react"; import { Link, useParams } from 'react-router-dom'; interface MenuProp { title: string; url: string; } interface MenusProp { title: string; subMenus: MenuProp[]; } function Examples() { const [collapsed, setCollapsed] = useState(true); const [title, setTitle] = useState(""); const [indexData, setIndexData] = useState([]); const [data, setData] = useState([]); const iframeRef = useRef(); const { id } = useParams(); const run = (code: string) => { const preview = document.querySelector("#preview") as HTMLElement; preview.innerHTML = ""; iframeRef.current = document.createElement("iframe") as HTMLIFrameElement; preview.appendChild(iframeRef.current); if(code) { const doc = iframeRef.current.contentWindow?.document; if (doc) { doc.open(); doc.write(code); doc.close(); } } } const getCode = (url: string) => { if (!url) return; fetch(url, {mode: 'cors'}).then(data => data.text()).then((data) => { run(data); }) } useEffect(() => { fetch("./config.json").then(data => data.json()).then((data) => { const indexMenus:string[] = []; data.forEach((menu: MenusProp) => { indexMenus.push(menu.title); }); setIndexData(indexMenus); setData(data); }); }, []) useEffect(() => { if (!id) { return; } const subTitle = id.split("_").join(" "); data.forEach((menu: MenusProp) => { menu.subMenus.forEach((subMenu: MenuProp) => { if (subMenu.title === subTitle) { getCode(subMenu.url); setTitle(subMenu.title); } }); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [id, data]) const toggleCollapsed = () => { setCollapsed(!collapsed); } const scrollToTarget = (target: string) => { const element = document.getElementById(target.split(" ").join("_")); element?.scrollIntoView(); }; return (
{title}
{/*
*/}

Examples

Index


{ indexData.map((title: string, index: number) => { return (
scrollToTarget(title)}> {`${index}....${title}`}
); }) }
{ data.map((menu: MenusProp, index: number) => { return (

{`${index}.${menu.title}`}


{ menu.subMenus.map((subMenu: MenuProp, subIndex: number) => { return (
{subMenu.title}
) }) }
) }) }
) } export default Examples;