// Copyright 2024, Command Line Inc. // SPDX-License-Identifier: Apache-2.0 import * as React from "react"; import * as jotai from "jotai"; import { atoms, blockDataMap } from "@/store/global"; import { TerminalView } from "@/app/view/term"; import { PreviewView } from "@/app/view/preview"; import { CenteredLoadingDiv } from "@/element/quickelems"; import "./block.less"; const Block = ({ blockId }: { blockId: string }) => { const blockRef = React.useRef(null); const [dims, setDims] = React.useState({ width: 0, height: 0 }); 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 blockAtom = blockDataMap.get(blockId); const blockData = jotai.useAtomValue(blockAtom); if (blockData.view === "term") { blockElem = ; } else if (blockData.view === "preview") { blockElem = ; } return (
Block [{blockId.substring(0, 8)}] {dims.width}x{dims.height}
}>{blockElem}
); }; export { Block };