import React, { useEffect, useState } from "react"; import styled from "styled-components"; import { postVscMessage } from "../vscode"; import { useDispatch } from "react-redux"; import { setApiUrl, setVscMachineId, setSessionId, } from "../redux/slices/configSlice"; import { setHighlightedCode } from "../redux/slices/miscSlice"; import { updateFileSystem } from "../redux/slices/debugContexSlice"; import { defaultBorderRadius, secondaryDark, vscBackground } from "."; interface DebugPanelProps { tabs: { element: React.ReactElement; title: string; }[]; } const TabBar = styled.div<{ numTabs: number }>` display: grid; grid-template-columns: repeat(${(props) => props.numTabs}, 1fr); `; const TabsAndBodyDiv = styled.div` height: 100%; border-radius: ${defaultBorderRadius}; scrollbar-base-color: transparent; `; function DebugPanel(props: DebugPanelProps) { const dispatch = useDispatch(); useEffect(() => { const eventListener = (event: any) => { switch (event.data.type) { case "onLoad": dispatch(setApiUrl(event.data.apiUrl)); dispatch(setVscMachineId(event.data.vscMachineId)); dispatch(setSessionId(event.data.sessionId)); break; case "highlightedCode": dispatch(setHighlightedCode(event.data.rangeInFile)); dispatch(updateFileSystem(event.data.filesystem)); break; } }; window.addEventListener("message", eventListener); postVscMessage("onLoad", {}); return () => window.removeEventListener("message", eventListener); }, []); const [currentTab, setCurrentTab] = useState(0); return ( {props.tabs.length > 1 && ( {props.tabs.map((tab, index) => { return (
setCurrentTab(index)} > {tab.title}
); })}
)} {props.tabs.map((tab, index) => { return ( ); })}
); } export default DebugPanel;