From 6ec259a0e71174651bae95d4628138bf6fd68742 Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 15 Mar 2026 16:19:35 -0400 Subject: refactor: packages/ --- .../components/TTDDialog/TTDDialogTabs.tsx | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 packages/excalidraw/components/TTDDialog/TTDDialogTabs.tsx (limited to 'packages/excalidraw/components/TTDDialog/TTDDialogTabs.tsx') diff --git a/packages/excalidraw/components/TTDDialog/TTDDialogTabs.tsx b/packages/excalidraw/components/TTDDialog/TTDDialogTabs.tsx new file mode 100644 index 0000000..439f928 --- /dev/null +++ b/packages/excalidraw/components/TTDDialog/TTDDialogTabs.tsx @@ -0,0 +1,55 @@ +import * as RadixTabs from "@radix-ui/react-tabs"; +import type { ReactNode } from "react"; +import { useRef } from "react"; +import { useExcalidrawSetAppState } from "../App"; +import { isMemberOf } from "../../utils"; + +const TTDDialogTabs = ( + props: { + children: ReactNode; + } & { dialog: "ttd"; tab: "text-to-diagram" | "mermaid" }, +) => { + const setAppState = useExcalidrawSetAppState(); + + const rootRef = useRef(null); + const minHeightRef = useRef(0); + + return ( + { + if (!tab) { + return; + } + const modalContentNode = + rootRef.current?.closest(".Modal__content"); + if (modalContentNode) { + const currHeight = modalContentNode.offsetHeight || 0; + if (currHeight > minHeightRef.current) { + minHeightRef.current = currHeight; + modalContentNode.style.minHeight = `min(${minHeightRef.current}px, 100%)`; + } + } + if ( + props.dialog === "ttd" && + isMemberOf(["text-to-diagram", "mermaid"], tab) + ) { + setAppState({ + openDialog: { name: props.dialog, tab }, + }); + } + }} + > + {props.children} + + ); +}; + +TTDDialogTabs.displayName = "TTDDialogTabs"; + +export default TTDDialogTabs; -- cgit v1.2.3