// Copyright 2024, Command Line Inc. // SPDX-License-Identifier: Apache-2.0 import { PlotView } from "@/app/view/plotview"; import { PreviewView } from "@/app/view/preview"; import { TerminalView } from "@/app/view/term"; import { CenteredDiv } from "@/element/quickelems"; import * as WOS from "@/store/wos"; import * as React from "react"; import "./block.less"; const Block = ({ tabId, blockId }: { tabId: string; blockId: string }) => { const blockRef = React.useRef(null); const [dims, setDims] = React.useState({ width: 0, height: 0 }); function handleClose() { WOS.DeleteBlock(blockId); } React.useEffect(() => { if (!blockRef.current) { return; } const rect = blockRef.current.getBoundingClientRect(); const newWidth = Math.floor(rect.width); const newHeight = Math.floor(rect.height); if (newWidth !== dims.width || newHeight !== dims.height) { setDims({ width: newWidth, height: newHeight }); } }, [blockRef.current]); let blockElem: JSX.Element = null; const [blockData, blockDataLoading] = WOS.useWaveObjectValue(WOS.makeORef("block", blockId)); if (blockDataLoading) { blockElem = Loading...; } else if (blockData.view === "term") { blockElem = ; } else if (blockData.view === "preview") { blockElem = ; } else if (blockData.view === "plot") { blockElem = ; } return (
Block [{blockId.substring(0, 8)}] {dims.width}x{dims.height}
handleClose()}>
Loading...}>{blockElem}
); }; export { Block };