diff --git a/src/components/MermaidToExcalidraw.scss b/src/components/MermaidToExcalidraw.scss index 1de77c6ac..44d7cdf49 100644 --- a/src/components/MermaidToExcalidraw.scss +++ b/src/components/MermaidToExcalidraw.scss @@ -9,6 +9,8 @@ font-size: 14px; font-style: normal; font-weight: 600; + margin-bottom: 8px; + margin-left: 4px; } &-text { @@ -19,7 +21,6 @@ width: 20rem; height: 22rem; resize: none; - border: 1px solid var(--ImageExportModal-preview-border); border-radius: 8px; padding: 1rem; } @@ -35,16 +36,18 @@ height: 22rem; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center; - - border: 1px solid var(--ImageExportModal-preview-border); border-radius: 8px; + border: 1px solid #e4e4eb; } &-preview-insert.excalidraw-button { + font-family: "Assistant"; + font-weight: 600; height: 2.5rem; margin-top: 1em; margin-bottom: 0.3em; - width: 5rem; + width: 7.5rem; + font-size: 12px; background-color: var(--color-primary); &:hover { background-color: var(--color-primary-darker); diff --git a/src/components/MermaidToExcalidraw.tsx b/src/components/MermaidToExcalidraw.tsx index 71c794d1c..31341e036 100644 --- a/src/components/MermaidToExcalidraw.tsx +++ b/src/components/MermaidToExcalidraw.tsx @@ -13,6 +13,7 @@ import { } from "../packages/excalidraw/index"; import { NonDeletedExcalidrawElement } from "../element/types"; import { canvasToBlob } from "../data/blob"; +import { ArrowRightIcon } from "./icons"; const LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW = "mermaid-to-excalidraw"; @@ -77,6 +78,20 @@ const MermaidToExcalidraw = ({ const app = useApp(); + const resetPreview = () => { + const canvasNode = canvasRef.current; + + if (!canvasNode) { + return; + } + const parent = canvasNode.parentElement; + if (!parent) { + return; + } + parent.style.background = ""; + canvasNode.replaceChildren(); + }; + useEffect(() => { const loadMermaidToExcalidrawLib = async () => { mermaidToExcalidrawLib.current = await import( @@ -113,8 +128,10 @@ const MermaidToExcalidraw = ({ setError(null); } catch (e: any) { console.error(e.message); - canvasNode.replaceChildren(); - setError(e.message); + resetPreview(); + if (text) { + setError(e.message); + } } if (mermaidGraphData) { const { elements, files } = @@ -143,6 +160,7 @@ const MermaidToExcalidraw = ({ // if converting to blob fails, there's some problem that will // likely prevent preview and export (e.g. canvas too big) return canvasToBlob(canvas).then(() => { + parent.style.background = "#fff"; canvasNode.replaceChildren(canvas); }); }); @@ -195,7 +213,8 @@ const MermaidToExcalidraw = ({ style={{ padding: "0.85rem", borderRadius: "8px", - border: "1px solid var(--ImageExportModal-preview-border)", + border: "1px solid #e4e4eb", + whiteSpace: "pre-wrap", }} onChange={(event) => setText(event.target.value)} value={text} @@ -214,7 +233,10 @@ const MermaidToExcalidraw = ({ className="mermaid-to-excalidraw-wrapper-preview-insert" onSelect={onSelect} > - Insert + Insert{" "} + + {ArrowRightIcon} + diff --git a/src/components/icons.tsx b/src/components/icons.tsx index c06359dbc..c50bf39a1 100644 --- a/src/components/icons.tsx +++ b/src/components/icons.tsx @@ -1662,3 +1662,30 @@ export const mermaidLogoIcon = createIcon( d="M407.48,111.18C335.587,108.103 269.573,152.338 245.08,220C220.587,152.338 154.573,108.103 82.68,111.18C80.285,168.229 107.577,222.632 154.74,254.82C178.908,271.419 193.35,298.951 193.27,328.27L193.27,379.13L296.9,379.13L296.9,328.27C296.816,298.953 311.255,271.42 335.42,254.82C382.596,222.644 409.892,168.233 407.48,111.18Z" />, ); + +export const ArrowRightIcon = createIcon( + <> + + + + , + { width: 20, height: 20 }, +);