import React, { useRef, useLayoutEffect, ReactNode } from "react"; import { Notepad, Prohibit } from "phosphor-react"; import useStayScrolled from "react-stay-scrolled"; import NextLink from "next/link"; import Container from "./Container"; import LogText from "./LogText"; import { ILog } from "../state"; import { Code, Link, Heading, Button, Text, Flex, Box } from "."; interface ILogBox { title: string; clearLog?: () => void; logs: ILog[]; renderNav?: () => ReactNode; enhanced?: boolean; } const LogBox: React.FC = ({ title, clearLog, logs, children, renderNav, enhanced }) => { const logRef = useRef(null); const { stayScrolled /*, scrollBottom*/ } = useStayScrolled(logRef); useLayoutEffect(() => { stayScrolled(); }, [stayScrolled, logs]); return ( {title} {renderNav?.()} {clearLog && ( )} {logs?.map((log, index) => ( {log.timestamp && {log.timestamp.toLocaleTimeString()} } {log.message}{" "} {log.link && ( {log.linkText} )} {log.jsonData && {JSON.stringify(log.jsonData, null, 2)}} ))} {children} ); }; export default LogBox;