@pstdio/ui 0.4.0 → 0.5.1

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.
Files changed (134) hide show
  1. package/dist/MermaidComponent-x3aKzNXm.js +124 -0
  2. package/dist/MermaidComponent-x3aKzNXm.js.map +1 -0
  3. package/dist/chat-ui.js +1364 -795
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/chat-ui/agent-types.d.ts +4 -0
  6. package/dist/components/chat-ui/components/chat-input-actions.d.ts +10 -0
  7. package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +33 -0
  8. package/dist/components/chat-ui/components/chat-input.d.ts +3 -1
  9. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +9 -0
  10. package/dist/components/chat-ui/components/chat-panel.d.ts +4 -1
  11. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +1 -0
  12. package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +14 -0
  13. package/dist/components/chat-ui/components/timeline.d.ts +22 -0
  14. package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +2 -1
  15. package/dist/components/chat-ui/index.d.ts +1 -0
  16. package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +2 -0
  17. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  18. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +10 -7
  19. package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +2 -0
  20. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +10 -0
  21. package/dist/components/chat-ui/tool-rendering/shared.d.ts +52 -0
  22. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +6 -0
  23. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +10 -0
  24. package/dist/components/chat-ui/utils/get-icon.d.ts +2 -0
  25. package/dist/components/chat-ui/utils/tool-name.d.ts +2 -0
  26. package/dist/components/menu-item.d.ts +2 -1
  27. package/dist/components/radio.d.ts +8 -0
  28. package/dist/components/resource-context-menu.d.ts +20 -0
  29. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +2 -1
  30. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +4 -0
  31. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +2 -0
  32. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +1 -0
  33. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +11 -0
  34. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +6 -0
  35. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +23 -0
  36. package/dist/components/rich-text/shared/plugins/MermaidPlugin/index.d.ts +1 -0
  37. package/dist/components/rich-text/utils/markdown.d.ts +1 -0
  38. package/dist/components/session-indicator.d.ts +1 -1
  39. package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +5 -1
  40. package/dist/components/tickets/tag-badge.d.ts +10 -0
  41. package/dist/components/tickets/tag-option-icon.d.ts +2 -0
  42. package/dist/components/tickets/ticket-board.d.ts +8 -2
  43. package/dist/components/tickets/ticket-card.d.ts +10 -0
  44. package/dist/components/tickets/ticket-grouping.d.ts +2 -2
  45. package/dist/components/tickets/ticket-list.d.ts +9 -1
  46. package/dist/components/tickets/tickets-workspace.d.ts +11 -3
  47. package/dist/components/tickets/types.d.ts +22 -5
  48. package/dist/components/tickets/workspace-helpers.d.ts +18 -0
  49. package/dist/get-file-type-icon-Bwqf1WXA.js +101 -0
  50. package/dist/get-file-type-icon-Bwqf1WXA.js.map +1 -0
  51. package/dist/index.d.ts +6 -2
  52. package/dist/index.js +1886 -1583
  53. package/dist/index.js.map +1 -1
  54. package/dist/radio-C42qncrD.js +236 -0
  55. package/dist/radio-C42qncrD.js.map +1 -0
  56. package/dist/rich-message-CoXTd5kw.js +1512 -0
  57. package/dist/rich-message-CoXTd5kw.js.map +1 -0
  58. package/dist/rich-text.js +414 -255
  59. package/dist/rich-text.js.map +1 -1
  60. package/dist/style.css +1 -1
  61. package/dist/theme/recipes/button.d.ts +6 -0
  62. package/dist/{theme-D0VvFB1Y.js → theme-BLGUwVOD.js} +7 -1
  63. package/dist/theme-BLGUwVOD.js.map +1 -0
  64. package/dist/theme.js +1 -1
  65. package/package.json +3 -1
  66. package/dist/components/attached-panel.utils.test.d.ts +0 -1
  67. package/dist/components/breadcrumb.stories.d.ts +0 -25
  68. package/dist/components/button.stories.d.ts +0 -18
  69. package/dist/components/chat-ui/components/ai-conversation.stories.d.ts +0 -6
  70. package/dist/components/chat-ui/components/ai-message.stories.d.ts +0 -6
  71. package/dist/components/chat-ui/components/ai-response.stories.d.ts +0 -7
  72. package/dist/components/chat-ui/components/attachment-list.stories.d.ts +0 -6
  73. package/dist/components/chat-ui/components/chat-input.stories.d.ts +0 -7
  74. package/dist/components/chat-ui/components/chat-panel-alerts.stories.d.ts +0 -9
  75. package/dist/components/chat-ui/components/chat-panel.stories.d.ts +0 -10
  76. package/dist/components/chat-ui/components/message-parts-renderer.stories.d.ts +0 -9
  77. package/dist/components/chat-ui/components/model-swap-separator.stories.d.ts +0 -6
  78. package/dist/components/chat-ui/components/tool-invocation-timeline.stories.d.ts +0 -6
  79. package/dist/components/chat-ui/components/workspace-hub.stories.d.ts +0 -6
  80. package/dist/components/checkbox.stories.d.ts +0 -15
  81. package/dist/components/column-file-browser.stories.d.ts +0 -15
  82. package/dist/components/data-table/data-table.stories.d.ts +0 -33
  83. package/dist/components/delete-confirmation-modal.stories.d.ts +0 -11
  84. package/dist/components/diff-bubble.stories.d.ts +0 -13
  85. package/dist/components/diff-drawer.stories.d.ts +0 -8
  86. package/dist/components/diff-view-adapter.test.d.ts +0 -1
  87. package/dist/components/drawer-inline.stories.d.ts +0 -8
  88. package/dist/components/empty-state.stories.d.ts +0 -34
  89. package/dist/components/file-selector.stories.d.ts +0 -17
  90. package/dist/components/folder-picker-dialog.stories.d.ts +0 -11
  91. package/dist/components/info-card.stories.d.ts +0 -41
  92. package/dist/components/item-section.stories.d.ts +0 -17
  93. package/dist/components/layout.stories.d.ts +0 -11
  94. package/dist/components/menu-item.stories.d.ts +0 -72
  95. package/dist/components/open-source-notices-screen.stories.d.ts +0 -12
  96. package/dist/components/param-editor-horizontal.stories.d.ts +0 -19
  97. package/dist/components/param-editor.stories.d.ts +0 -24
  98. package/dist/components/properties.stories.d.ts +0 -17
  99. package/dist/components/resource-badge.stories.d.ts +0 -7
  100. package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.stories.d.ts +0 -9
  101. package/dist/components/rich-text/markdown-editor/markdown-editor.stories.d.ts +0 -7
  102. package/dist/components/rich-text/prompt-input/prompt-input.stories.d.ts +0 -8
  103. package/dist/components/rich-text/rich-message/rich-message.stories.d.ts +0 -6
  104. package/dist/components/rich-text/shared/nodes/DataTableNode.stories.d.ts +0 -7
  105. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.d.ts +0 -21
  106. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeNode.test.d.ts +0 -1
  107. package/dist/components/rich-text/shared/transformers/markdown-transformers.test.d.ts +0 -1
  108. package/dist/components/scroll-area.stories.d.ts +0 -7
  109. package/dist/components/searchable-menu.stories.d.ts +0 -8
  110. package/dist/components/session-indicator.stories.d.ts +0 -12
  111. package/dist/components/sidebar/sidebar.store.test.d.ts +0 -1
  112. package/dist/components/sidebar/sidebar.stories.d.ts +0 -11
  113. package/dist/components/sidebar-tree/sidebar-tree-searchable-action-menu.stories.d.ts +0 -6
  114. package/dist/components/sidebar-tree/sidebar-tree.stories.d.ts +0 -13
  115. package/dist/components/slider.stories.d.ts +0 -15
  116. package/dist/components/style-guide.stories.d.ts +0 -23
  117. package/dist/components/switch.stories.d.ts +0 -16
  118. package/dist/components/tickets/display-menu.stories.d.ts +0 -6
  119. package/dist/components/tickets/filter-menu.stories.d.ts +0 -6
  120. package/dist/components/tickets/ticket-board.stories.d.ts +0 -5
  121. package/dist/components/tickets/ticket-card.stories.d.ts +0 -18
  122. package/dist/components/tickets/ticket-grouping.test.d.ts +0 -1
  123. package/dist/components/tickets/ticket-list.stories.d.ts +0 -10
  124. package/dist/components/tickets/tickets-workspace.stories.d.ts +0 -10
  125. package/dist/components/tickets/use-workspace-store.test.d.ts +0 -1
  126. package/dist/components/toaster.stories.d.ts +0 -11
  127. package/dist/components/workspace-badge.stories.d.ts +0 -13
  128. package/dist/empty-state-yGspgiPl.js +0 -185
  129. package/dist/empty-state-yGspgiPl.js.map +0 -1
  130. package/dist/get-file-type-icon-CirIyuE8.js +0 -92
  131. package/dist/get-file-type-icon-CirIyuE8.js.map +0 -1
  132. package/dist/rich-message-Bad4GxH2.js +0 -1423
  133. package/dist/rich-message-Bad4GxH2.js.map +0 -1
  134. package/dist/theme-D0VvFB1Y.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-CoXTd5kw.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-x3aKzNXm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidComponent-x3aKzNXm.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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"}