@pstdio/ui 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MermaidComponent-DwEDwpo2.js +124 -0
- package/dist/MermaidComponent-DwEDwpo2.js.map +1 -0
- package/dist/chat-ui.js +609 -505
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +10 -0
- package/dist/components/chat-ui/components/chat-panel.d.ts +1 -0
- package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +2 -0
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +8 -7
- package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +2 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +52 -0
- package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +6 -0
- package/dist/components/chat-ui/tool-rendering/todo-write-renderer.d.ts +2 -0
- package/dist/components/menu-item.d.ts +2 -1
- package/dist/components/resource-context-menu.d.ts +20 -0
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +2 -1
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +4 -0
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +2 -0
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +1 -0
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +11 -0
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +6 -0
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +23 -0
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +1 -0
- package/dist/components/rich-text/utils/markdown.d.ts +1 -0
- package/dist/components/session-indicator.d.ts +1 -1
- package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +5 -1
- package/dist/components/tickets/tag-badge.d.ts +10 -0
- package/dist/components/tickets/tag-option-icon.d.ts +2 -0
- package/dist/components/tickets/ticket-board.d.ts +2 -0
- package/dist/components/tickets/ticket-card.d.ts +10 -0
- package/dist/components/tickets/ticket-grouping.d.ts +2 -2
- package/dist/components/tickets/ticket-list.d.ts +6 -1
- package/dist/components/tickets/tickets-workspace.d.ts +9 -3
- package/dist/components/tickets/types.d.ts +22 -5
- package/dist/components/tickets/workspace-helpers.d.ts +13 -0
- package/dist/get-file-type-icon-Bwqf1WXA.js +101 -0
- package/dist/get-file-type-icon-Bwqf1WXA.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1876 -1642
- package/dist/index.js.map +1 -1
- package/dist/rich-message-BVRk9BSD.js +1503 -0
- package/dist/rich-message-BVRk9BSD.js.map +1 -0
- package/dist/rich-text.js +414 -255
- package/dist/rich-text.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +3 -1
- package/dist/components/attached-panel.utils.test.d.ts +0 -1
- package/dist/components/breadcrumb.stories.d.ts +0 -25
- package/dist/components/button.stories.d.ts +0 -18
- package/dist/components/chat-ui/components/ai-conversation.stories.d.ts +0 -6
- package/dist/components/chat-ui/components/ai-message.stories.d.ts +0 -6
- package/dist/components/chat-ui/components/ai-response.stories.d.ts +0 -7
- package/dist/components/chat-ui/components/attachment-list.stories.d.ts +0 -6
- package/dist/components/chat-ui/components/chat-input.stories.d.ts +0 -7
- package/dist/components/chat-ui/components/chat-panel-alerts.stories.d.ts +0 -9
- package/dist/components/chat-ui/components/chat-panel.stories.d.ts +0 -10
- package/dist/components/chat-ui/components/message-parts-renderer.stories.d.ts +0 -9
- package/dist/components/chat-ui/components/model-swap-separator.stories.d.ts +0 -6
- package/dist/components/chat-ui/components/tool-invocation-timeline.stories.d.ts +0 -6
- package/dist/components/chat-ui/components/workspace-hub.stories.d.ts +0 -6
- package/dist/components/checkbox.stories.d.ts +0 -15
- package/dist/components/column-file-browser.stories.d.ts +0 -15
- package/dist/components/data-table/data-table.stories.d.ts +0 -33
- package/dist/components/delete-confirmation-modal.stories.d.ts +0 -11
- package/dist/components/diff-bubble.stories.d.ts +0 -13
- package/dist/components/diff-drawer.stories.d.ts +0 -8
- package/dist/components/diff-view-adapter.test.d.ts +0 -1
- package/dist/components/drawer-inline.stories.d.ts +0 -8
- package/dist/components/empty-state.stories.d.ts +0 -34
- package/dist/components/file-selector.stories.d.ts +0 -17
- package/dist/components/folder-picker-dialog.stories.d.ts +0 -11
- package/dist/components/info-card.stories.d.ts +0 -41
- package/dist/components/item-section.stories.d.ts +0 -17
- package/dist/components/layout.stories.d.ts +0 -11
- package/dist/components/menu-item.stories.d.ts +0 -72
- package/dist/components/open-source-notices-screen.stories.d.ts +0 -12
- package/dist/components/param-editor-horizontal.stories.d.ts +0 -19
- package/dist/components/param-editor.stories.d.ts +0 -24
- package/dist/components/properties.stories.d.ts +0 -17
- package/dist/components/resource-badge.stories.d.ts +0 -7
- package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.stories.d.ts +0 -9
- package/dist/components/rich-text/markdown-editor/markdown-editor.stories.d.ts +0 -7
- package/dist/components/rich-text/prompt-input/prompt-input.stories.d.ts +0 -8
- package/dist/components/rich-text/rich-message/rich-message.stories.d.ts +0 -6
- package/dist/components/rich-text/shared/nodes/DataTableNode.stories.d.ts +0 -7
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.d.ts +0 -21
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.test.d.ts +0 -1
- package/dist/components/rich-text/shared/transformers/markdown-transformers.test.d.ts +0 -1
- package/dist/components/scroll-area.stories.d.ts +0 -7
- package/dist/components/searchable-menu.stories.d.ts +0 -8
- package/dist/components/session-indicator.stories.d.ts +0 -12
- package/dist/components/sidebar/sidebar.store.test.d.ts +0 -1
- package/dist/components/sidebar/sidebar.stories.d.ts +0 -11
- package/dist/components/sidebar-tree/sidebar-tree-searchable-action-menu.stories.d.ts +0 -6
- package/dist/components/sidebar-tree/sidebar-tree.stories.d.ts +0 -13
- package/dist/components/slider.stories.d.ts +0 -15
- package/dist/components/style-guide.stories.d.ts +0 -23
- package/dist/components/switch.stories.d.ts +0 -16
- package/dist/components/tickets/display-menu.stories.d.ts +0 -6
- package/dist/components/tickets/filter-menu.stories.d.ts +0 -6
- package/dist/components/tickets/ticket-board.stories.d.ts +0 -5
- package/dist/components/tickets/ticket-card.stories.d.ts +0 -18
- package/dist/components/tickets/ticket-grouping.test.d.ts +0 -1
- package/dist/components/tickets/ticket-list.stories.d.ts +0 -10
- package/dist/components/tickets/tickets-workspace.stories.d.ts +0 -10
- package/dist/components/tickets/use-workspace-store.test.d.ts +0 -1
- package/dist/components/toaster.stories.d.ts +0 -11
- package/dist/components/workspace-badge.stories.d.ts +0 -13
- package/dist/get-file-type-icon-CirIyuE8.js +0 -92
- package/dist/get-file-type-icon-CirIyuE8.js.map +0 -1
- package/dist/rich-message-Bad4GxH2.js +0 -1423
- package/dist/rich-message-Bad4GxH2.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { Box as n, Flex as S, NumberInput as h, Button as b, Textarea as A, Text as C } from "@chakra-ui/react";
|
|
3
|
+
import { useLexicalComposerContext as H } from "@lexical/react/LexicalComposerContext";
|
|
4
|
+
import { useLexicalEditable as K } from "@lexical/react/useLexicalEditable";
|
|
5
|
+
import { $getNodeByKey as U } from "lexical";
|
|
6
|
+
import $ from "mermaid";
|
|
7
|
+
import { useState as t, useRef as W, useId as q, useEffect as v } from "react";
|
|
8
|
+
import { $ as G } from "./rich-message-BVRk9BSD.js";
|
|
9
|
+
let k = !1;
|
|
10
|
+
function J() {
|
|
11
|
+
k || ($.initialize({
|
|
12
|
+
startOnLoad: !1,
|
|
13
|
+
securityLevel: "strict",
|
|
14
|
+
theme: "default"
|
|
15
|
+
}), k = !0);
|
|
16
|
+
}
|
|
17
|
+
function Q(i) {
|
|
18
|
+
return i instanceof Error ? i.message : "Failed to render mermaid diagram.";
|
|
19
|
+
}
|
|
20
|
+
const N = 0, T = 2, _ = 0.1;
|
|
21
|
+
function ee(i) {
|
|
22
|
+
return Number(Math.min(T, Math.max(N, i)).toFixed(2));
|
|
23
|
+
}
|
|
24
|
+
function le(i) {
|
|
25
|
+
const {
|
|
26
|
+
code: a,
|
|
27
|
+
nodeKey: X
|
|
28
|
+
} = i, [Z] = H(), B = K(), [s, m] = t(!1), [u, f] = t(a), [l, y] = t(a), [D, I] = t(""), [g, M] = t(""), [w, E] = t(!1), [F, P] = t(1), [c, R] = t({
|
|
29
|
+
x: 0,
|
|
30
|
+
y: 0
|
|
31
|
+
}), [z, p] = t(!1), d = W({
|
|
32
|
+
pointerId: -1,
|
|
33
|
+
x: 0,
|
|
34
|
+
y: 0
|
|
35
|
+
}), O = q().replaceAll(":", "-");
|
|
36
|
+
v(() => {
|
|
37
|
+
f(a), y(a);
|
|
38
|
+
}, [a]), v(() => {
|
|
39
|
+
let e = !1;
|
|
40
|
+
async function Y() {
|
|
41
|
+
J(), E(!0), M("");
|
|
42
|
+
try {
|
|
43
|
+
const {
|
|
44
|
+
svg: x
|
|
45
|
+
} = await $.render(`mermaid-${O}`, l);
|
|
46
|
+
e || I(x);
|
|
47
|
+
} catch (x) {
|
|
48
|
+
e || (I(""), M(Q(x)));
|
|
49
|
+
} finally {
|
|
50
|
+
e || E(!1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return s || Y(), () => {
|
|
54
|
+
e = !0;
|
|
55
|
+
};
|
|
56
|
+
}, [s, l, O]);
|
|
57
|
+
const L = () => {
|
|
58
|
+
Z.update(() => {
|
|
59
|
+
const e = U(X);
|
|
60
|
+
G(e) && e.setCode(u);
|
|
61
|
+
}), y(u), V(), m(!1);
|
|
62
|
+
}, j = () => {
|
|
63
|
+
f(l), m(!1);
|
|
64
|
+
}, V = () => {
|
|
65
|
+
P(1), R({
|
|
66
|
+
x: 0,
|
|
67
|
+
y: 0
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
return /* @__PURE__ */ o(n, { borderWidth: "1px", borderColor: "border.muted", borderRadius: "md", overflow: "hidden", width: "100%", children: [
|
|
71
|
+
/* @__PURE__ */ o(S, { justifyContent: "flex-end", alignItems: "center", gap: "xs", paddingX: "sm", paddingY: "xs", bg: "bg.muted", children: [
|
|
72
|
+
!s && !g && !w ? /* @__PURE__ */ o(h.Root, { size: "xs", width: "64px", defaultValue: "100", min: N, max: T, step: _, formatOptions: {
|
|
73
|
+
style: "percent"
|
|
74
|
+
}, onValueChange: ({
|
|
75
|
+
valueAsNumber: e
|
|
76
|
+
}) => {
|
|
77
|
+
Number.isNaN(e) || P(ee(e));
|
|
78
|
+
}, children: [
|
|
79
|
+
/* @__PURE__ */ r(h.Control, {}),
|
|
80
|
+
/* @__PURE__ */ r(h.Input, { "aria-label": "Zoom percentage" })
|
|
81
|
+
] }) : null,
|
|
82
|
+
B ? s ? /* @__PURE__ */ o(S, { gap: "xs", children: [
|
|
83
|
+
/* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: j, children: "Cancel" }),
|
|
84
|
+
/* @__PURE__ */ r(b, { size: "xs", onClick: L, children: "Preview" })
|
|
85
|
+
] }) : /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: () => m(!0), children: "Edit" }) : null
|
|
86
|
+
] }),
|
|
87
|
+
s ? /* @__PURE__ */ r(n, { padding: "sm", bg: "bg.muted", children: /* @__PURE__ */ r(A, { value: u, onChange: (e) => f(e.target.value), minHeight: "180px", resize: "vertical", fontFamily: "mono", fontSize: "sm", spellCheck: !1 }) }) : /* @__PURE__ */ o(n, { paddingX: "sm", paddingBottom: "sm", background: "bg.muted", children: [
|
|
88
|
+
w ? /* @__PURE__ */ r(C, { color: "fg.muted", children: "Rendering diagram..." }) : null,
|
|
89
|
+
g ? /* @__PURE__ */ o(n, { children: [
|
|
90
|
+
/* @__PURE__ */ r(C, { color: "fg.error", textStyle: "label/S/medium", children: "Mermaid parse failed" }),
|
|
91
|
+
/* @__PURE__ */ r(C, { color: "fg.muted", textStyle: "label/S/regular", marginTop: "2xs", children: g }),
|
|
92
|
+
/* @__PURE__ */ r(n, { as: "pre", marginTop: "sm", padding: "sm", borderRadius: "sm", bg: "bg.panel", overflowX: "auto", children: l })
|
|
93
|
+
] }) : /* @__PURE__ */ r(n, { borderRadius: "sm", overflow: "hidden", minHeight: "160px", onWheel: (e) => {
|
|
94
|
+
e.preventDefault(), e.stopPropagation();
|
|
95
|
+
}, children: /* @__PURE__ */ r(n, { transform: `translate(${c.x}px, ${c.y}px) scale(${F})`, transformOrigin: "top left", cursor: z ? "grabbing" : "grab", touchAction: "none", onPointerDown: (e) => {
|
|
96
|
+
d.current = {
|
|
97
|
+
pointerId: e.pointerId,
|
|
98
|
+
x: e.clientX - c.x,
|
|
99
|
+
y: e.clientY - c.y
|
|
100
|
+
}, p(!0), e.currentTarget.setPointerCapture(e.pointerId);
|
|
101
|
+
}, onPointerMove: (e) => {
|
|
102
|
+
!z || d.current.pointerId !== e.pointerId || R({
|
|
103
|
+
x: e.clientX - d.current.x,
|
|
104
|
+
y: e.clientY - d.current.y
|
|
105
|
+
});
|
|
106
|
+
}, onPointerUp: (e) => {
|
|
107
|
+
d.current.pointerId === e.pointerId && (p(!1), e.currentTarget.releasePointerCapture(e.pointerId));
|
|
108
|
+
}, onPointerCancel: () => {
|
|
109
|
+
p(!1);
|
|
110
|
+
}, css: {
|
|
111
|
+
"& img": {
|
|
112
|
+
display: "block",
|
|
113
|
+
width: "100%",
|
|
114
|
+
height: "auto",
|
|
115
|
+
userSelect: "none"
|
|
116
|
+
}
|
|
117
|
+
}, children: /* @__PURE__ */ r("img", { alt: "Mermaid diagram", src: `data:image/svg+xml;utf8,${encodeURIComponent(D)}`, draggable: !1 }) }) })
|
|
118
|
+
] })
|
|
119
|
+
] });
|
|
120
|
+
}
|
|
121
|
+
export {
|
|
122
|
+
le as default
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=MermaidComponent-DwEDwpo2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MermaidComponent-DwEDwpo2.js","sources":["../src/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.tsx"],"sourcesContent":["import { Box, Button, Flex, NumberInput, Text, Textarea } from \"@chakra-ui/react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport { $getNodeByKey } from \"lexical\";\nimport mermaid from \"mermaid\";\nimport { useEffect, useId, useRef, useState } from \"react\";\nimport { $isMermaidNode } from \"./MermaidNode\";\n\nlet mermaidInitialized = false;\n\nfunction initializeMermaid() {\n if (mermaidInitialized) {\n return;\n }\n\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n theme: \"default\",\n });\n\n mermaidInitialized = true;\n}\n\nfunction formatErrorMessage(error: unknown) {\n if (!(error instanceof Error)) {\n return \"Failed to render mermaid diagram.\";\n }\n\n return error.message;\n}\n\nconst MIN_ZOOM = 0;\nconst MAX_ZOOM = 2;\nconst ZOOM_STEP = 0.1;\n\nfunction clampZoom(value: number) {\n return Number(Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, value)).toFixed(2));\n}\n\ninterface MermaidComponentProps {\n code: string;\n nodeKey: string;\n}\n\nexport default function MermaidComponent(props: MermaidComponentProps) {\n const { code, nodeKey } = props;\n const [editor] = useLexicalComposerContext();\n const isEditable = useLexicalEditable();\n const [isEditing, setIsEditing] = useState(false);\n const [draftCode, setDraftCode] = useState(code);\n const [previewCode, setPreviewCode] = useState(code);\n const [svgMarkup, setSvgMarkup] = useState(\"\");\n const [renderError, setRenderError] = useState(\"\");\n const [isRendering, setIsRendering] = useState(false);\n const [zoom, setZoom] = useState(1);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isPanning, setIsPanning] = useState(false);\n const panStartRef = useRef({ pointerId: -1, x: 0, y: 0 });\n const renderId = useId().replaceAll(\":\", \"-\");\n\n useEffect(() => {\n setDraftCode(code);\n setPreviewCode(code);\n }, [code]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function renderDiagram() {\n initializeMermaid();\n setIsRendering(true);\n setRenderError(\"\");\n\n try {\n const { svg } = await mermaid.render(`mermaid-${renderId}`, previewCode);\n if (!cancelled) {\n setSvgMarkup(svg);\n }\n } catch (error) {\n if (!cancelled) {\n setSvgMarkup(\"\");\n setRenderError(formatErrorMessage(error));\n }\n } finally {\n if (!cancelled) {\n setIsRendering(false);\n }\n }\n }\n\n if (!isEditing) {\n void renderDiagram();\n }\n\n return () => {\n cancelled = true;\n };\n }, [isEditing, previewCode, renderId]);\n\n const commitCodeChanges = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isMermaidNode(node)) {\n node.setCode(draftCode);\n }\n });\n\n setPreviewCode(draftCode);\n resetView();\n setIsEditing(false);\n };\n\n const cancelEditing = () => {\n setDraftCode(previewCode);\n setIsEditing(false);\n };\n\n const resetView = () => {\n setZoom(1);\n setOffset({ x: 0, y: 0 });\n };\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" overflow=\"hidden\" width=\"100%\">\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap=\"xs\" paddingX=\"sm\" paddingY=\"xs\" bg=\"bg.muted\">\n {!isEditing && !renderError && !isRendering ? (\n <NumberInput.Root\n size=\"xs\"\n width=\"64px\"\n defaultValue={\"100\"}\n min={MIN_ZOOM}\n max={MAX_ZOOM}\n step={ZOOM_STEP}\n formatOptions={{\n style: \"percent\",\n }}\n onValueChange={({ valueAsNumber }) => {\n if (Number.isNaN(valueAsNumber)) {\n return;\n }\n\n setZoom(clampZoom(valueAsNumber));\n }}\n >\n <NumberInput.Control />\n <NumberInput.Input aria-label=\"Zoom percentage\" />\n </NumberInput.Root>\n ) : null}\n\n {isEditable ? (\n isEditing ? (\n <Flex gap=\"xs\">\n <Button size=\"xs\" variant=\"surface\" onClick={cancelEditing}>\n Cancel\n </Button>\n <Button size=\"xs\" onClick={commitCodeChanges}>\n Preview\n </Button>\n </Flex>\n ) : (\n <Button size=\"xs\" variant=\"surface\" onClick={() => setIsEditing(true)}>\n Edit\n </Button>\n )\n ) : null}\n </Flex>\n\n {isEditing ? (\n <Box padding=\"sm\" bg=\"bg.muted\">\n <Textarea\n value={draftCode}\n onChange={(event) => setDraftCode(event.target.value)}\n minHeight=\"180px\"\n resize=\"vertical\"\n fontFamily=\"mono\"\n fontSize=\"sm\"\n spellCheck={false}\n />\n </Box>\n ) : (\n <Box paddingX=\"sm\" paddingBottom=\"sm\" background=\"bg.muted\">\n {isRendering ? <Text color=\"fg.muted\">Rendering diagram...</Text> : null}\n {renderError ? (\n <Box>\n <Text color=\"fg.error\" textStyle=\"label/S/medium\">\n Mermaid parse failed\n </Text>\n <Text color=\"fg.muted\" textStyle=\"label/S/regular\" marginTop=\"2xs\">\n {renderError}\n </Text>\n <Box as=\"pre\" marginTop=\"sm\" padding=\"sm\" borderRadius=\"sm\" bg=\"bg.panel\" overflowX=\"auto\">\n {previewCode}\n </Box>\n </Box>\n ) : (\n <Box\n borderRadius=\"sm\"\n overflow=\"hidden\"\n minHeight=\"160px\"\n onWheel={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n >\n <Box\n transform={`translate(${offset.x}px, ${offset.y}px) scale(${zoom})`}\n transformOrigin=\"top left\"\n cursor={isPanning ? \"grabbing\" : \"grab\"}\n touchAction=\"none\"\n onPointerDown={(event) => {\n panStartRef.current = {\n pointerId: event.pointerId,\n x: event.clientX - offset.x,\n y: event.clientY - offset.y,\n };\n setIsPanning(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n }}\n onPointerMove={(event) => {\n if (!isPanning || panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setOffset({\n x: event.clientX - panStartRef.current.x,\n y: event.clientY - panStartRef.current.y,\n });\n }}\n onPointerUp={(event) => {\n if (panStartRef.current.pointerId !== event.pointerId) {\n return;\n }\n\n setIsPanning(false);\n event.currentTarget.releasePointerCapture(event.pointerId);\n }}\n onPointerCancel={() => {\n setIsPanning(false);\n }}\n css={{\n \"& img\": {\n display: \"block\",\n width: \"100%\",\n height: \"auto\",\n userSelect: \"none\",\n },\n }}\n >\n <img\n alt=\"Mermaid diagram\"\n src={`data:image/svg+xml;utf8,${encodeURIComponent(svgMarkup)}`}\n draggable={false}\n />\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n}\n"],"names":["mermaidInitialized","initializeMermaid","mermaid","initialize","startOnLoad","securityLevel","theme","formatErrorMessage","error","Error","message","MIN_ZOOM","MAX_ZOOM","ZOOM_STEP","clampZoom","value","Number","Math","min","max","toFixed","MermaidComponent","props","code","nodeKey","editor","useLexicalComposerContext","isEditable","useLexicalEditable","isEditing","setIsEditing","useState","draftCode","setDraftCode","previewCode","setPreviewCode","svgMarkup","setSvgMarkup","renderError","setRenderError","isRendering","setIsRendering","zoom","setZoom","offset","setOffset","x","y","isPanning","setIsPanning","panStartRef","useRef","pointerId","renderId","useId","replaceAll","useEffect","cancelled","renderDiagram","svg","render","commitCodeChanges","update","node","$getNodeByKey","$isMermaidNode","setCode","resetView","cancelEditing","jsxs","Box","Flex","NumberInput","style","valueAsNumber","isNaN","jsx","Button","Textarea","event","target","Text","preventDefault","stopPropagation","current","clientX","clientY","currentTarget","setPointerCapture","releasePointerCapture","display","width","height","userSelect","encodeURIComponent"],"mappings":"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"}
|