import { Dialog } from "../Dialog"; import { useApp } from "../App"; import MermaidToExcalidraw from "./MermaidToExcalidraw"; import TTDDialogTabs from "./TTDDialogTabs"; import { useEffect, useState } from "react"; import { useUIAppState } from "../../context/ui-appState"; import { withInternalFallback } from "../hoc/withInternalFallback"; import { TTDDialogTabTriggers } from "./TTDDialogTabTriggers"; import { TTDDialogTabTrigger } from "./TTDDialogTabTrigger"; import { TTDDialogTab } from "./TTDDialogTab"; import { t } from "../../i18n"; import { CommonDialogProps, MermaidToExcalidrawLibProps } from "./common"; import "./TTDDialog.scss"; import { TextToDiagram } from "./TextToDiagram"; import { TextToDrawing } from "./TextToDrawing"; export const TTDDialog = (props: CommonDialogProps | { __fallback: true }) => { const appState = useUIAppState(); if (appState.openDialog?.name !== "ttd") { return null; } return ; }; /** * Text to diagram (TTD) dialog */ export const TTDDialogBase = withInternalFallback( "TTDDialogBase", ({ tab, ...rest }: { tab: "text-to-diagram" | "mermaid" | "text-to-drawing"; } & (CommonDialogProps | { __fallback: true })) => { const app = useApp(); const [mermaidToExcalidrawLib, setMermaidToExcalidrawLib] = useState({ loaded: false, api: import( /* webpackChunkName:"mermaid-to-excalidraw" */ "@excalidraw/mermaid-to-excalidraw" ), }); useEffect(() => { const fn = async () => { await mermaidToExcalidrawLib.api; setMermaidToExcalidrawLib((prev) => ({ ...prev, loaded: true })); }; fn(); }, [mermaidToExcalidrawLib.api]); return ( { app.setOpenDialog(null); }} size={1200} title={false} {...rest} autofocus={false} > {"__fallback" in rest && rest.__fallback ? (

{t("mermaid.title")}

) : (
{t("labels.textToDiagram")}
AI Beta
{t("labels.textToDrawing")}
AI Beta
Mermaid
)} {!("__fallback" in rest) && ( )} {!("__fallback" in rest) && ( )}
); }, );