@pstdio/ui 0.8.0 → 0.9.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.
Files changed (71) hide show
  1. package/dist/{MermaidComponent-D7Baqkwx.js → MermaidComponent-Cz_Iob5U.js} +56 -53
  2. package/dist/MermaidComponent-Cz_Iob5U.js.map +1 -0
  3. package/dist/chat-ui.js +117 -117
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/data-renderer/data-renderer-board.d.ts +1 -0
  6. package/dist/components/data-renderer/data-renderer-card.d.ts +5 -20
  7. package/dist/components/data-renderer/data-renderer-grouping.d.ts +11 -10
  8. package/dist/components/data-renderer/data-renderer-helpers.d.ts +63 -15
  9. package/dist/components/data-renderer/data-renderer-list.d.ts +5 -8
  10. package/dist/components/data-renderer/data-renderer-toolbar.d.ts +12 -0
  11. package/dist/components/data-renderer/data-renderer.d.ts +12 -23
  12. package/dist/components/data-renderer/display-menu.d.ts +9 -8
  13. package/dist/components/data-renderer/filter-menu.d.ts +5 -4
  14. package/dist/components/data-renderer/types.d.ts +83 -49
  15. package/dist/components/data-renderer/use-data-renderer-store.d.ts +15 -11
  16. package/dist/components/data-renderer/use-resolved-attributes.d.ts +14 -0
  17. package/dist/components/diff-viewer/diff-card-body.d.ts +10 -0
  18. package/dist/components/diff-viewer/diff-card-content.d.ts +1 -0
  19. package/dist/components/diff-viewer/diff-card.d.ts +1 -0
  20. package/dist/components/diff-viewer/diff-size.d.ts +2 -0
  21. package/dist/components/icon-color-picker.d.ts +13 -0
  22. package/dist/components/list-row/list-row-content.d.ts +9 -0
  23. package/dist/components/list-row/list-row.types.d.ts +1 -0
  24. package/dist/components/rich-text/shared/lexical-code.d.ts +2 -0
  25. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +1 -1
  26. package/dist/components/rich-text/shared/prism-global.d.ts +2 -0
  27. package/dist/components/status-option-editor/index.d.ts +2 -0
  28. package/dist/components/status-option-editor/status-option-editor.d.ts +2 -0
  29. package/dist/components/status-option-editor/status-option-editor.types.d.ts +39 -0
  30. package/dist/components/status-option-editor/status-option-row.d.ts +16 -0
  31. package/dist/components/tab-strip/tab-visibility-filter.d.ts +19 -0
  32. package/dist/components/tab-strip/tab-visibility.store.d.ts +41 -0
  33. package/dist/components/tree-list/tree-list-model.d.ts +58 -0
  34. package/dist/components/tree-list/tree-list-node-row.d.ts +20 -0
  35. package/dist/components/tree-list/tree-list-order-filter.d.ts +3 -0
  36. package/dist/components/tree-list/tree-list-order.store.d.ts +42 -0
  37. package/dist/components/tree-list/tree-list-reorder.d.ts +13 -0
  38. package/dist/components/tree-list/tree-list-section-header.d.ts +14 -0
  39. package/dist/components/tree-list/tree-list-sortable.d.ts +22 -0
  40. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +17 -0
  41. package/dist/components/tree-list/tree-list-visibility.store.d.ts +45 -0
  42. package/dist/components/tree-list/tree-list.d.ts +7 -27
  43. package/dist/components/tree-list/tree-list.types.d.ts +2 -0
  44. package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +15 -0
  45. package/dist/get-file-type-icon-ufFb0IkR.js +102 -0
  46. package/dist/get-file-type-icon-ufFb0IkR.js.map +1 -0
  47. package/dist/index.d.ts +22 -3
  48. package/dist/index.js +5171 -3890
  49. package/dist/index.js.map +1 -1
  50. package/dist/{rich-message-33DPxuWJ.js → rich-message-CEOSsdR2.js} +428 -421
  51. package/dist/rich-message-CEOSsdR2.js.map +1 -0
  52. package/dist/rich-text.js +26 -26
  53. package/dist/rich-text.js.map +1 -1
  54. package/dist/theme/custom/index.d.ts +0 -3
  55. package/dist/theme/index.d.ts +1 -1
  56. package/dist/theme/recipes/tabs.d.ts +30 -0
  57. package/dist/theme/tokens/colors.d.ts +6 -0
  58. package/dist/{theme-D-aCJqTf.js → theme-qP4YOZ2R.js} +197 -148
  59. package/dist/theme-qP4YOZ2R.js.map +1 -0
  60. package/dist/theme.js +2 -4
  61. package/dist/utils/browser-storage.d.ts +7 -0
  62. package/dist/utils/prism.d.ts +1 -0
  63. package/package.json +8 -3
  64. package/dist/MermaidComponent-D7Baqkwx.js.map +0 -1
  65. package/dist/components/data-renderer/tag-badge.d.ts +0 -10
  66. package/dist/components/data-renderer/tag-option-icon.d.ts +0 -2
  67. package/dist/get-file-type-icon-Bwqf1WXA.js +0 -101
  68. package/dist/get-file-type-icon-Bwqf1WXA.js.map +0 -1
  69. package/dist/rich-message-33DPxuWJ.js.map +0 -1
  70. package/dist/theme/custom/monokai.json.d.ts +0 -80
  71. package/dist/theme-D-aCJqTf.js.map +0 -1
@@ -1,95 +1,98 @@
1
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";
2
+ import { Box as n, Flex as O, NumberInput as x, Button as b, Textarea as H, Text as C } from "@chakra-ui/react";
3
+ import { useLexicalComposerContext as Y } from "@lexical/react/LexicalComposerContext";
4
4
  import { useLexicalEditable as K } from "@lexical/react/useLexicalEditable";
5
5
  import { $getNodeByKey as U } from "lexical";
6
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-33DPxuWJ.js";
9
- let k = !1;
10
- function J() {
11
- k || ($.initialize({
7
+ import { useState as t, useRef as W, useId as q, useEffect as k } from "react";
8
+ import { S as G } from "./get-file-type-icon-ufFb0IkR.js";
9
+ import { $ as J } from "./rich-message-CEOSsdR2.js";
10
+ let v = !1;
11
+ function Q() {
12
+ v || ($.initialize({
12
13
  startOnLoad: !1,
13
14
  securityLevel: "strict",
14
15
  theme: "default"
15
- }), k = !0);
16
+ }), v = !0);
16
17
  }
17
- function Q(i) {
18
+ function _(i) {
18
19
  return i instanceof Error ? i.message : "Failed to render mermaid diagram.";
19
20
  }
20
- const N = 0, T = 2, _ = 0.1;
21
- function ee(i) {
21
+ const N = 0, T = 2, ee = 0.1;
22
+ function re(i) {
22
23
  return Number(Math.min(T, Math.max(N, i)).toFixed(2));
23
24
  }
24
- function le(i) {
25
+ function me(i) {
25
26
  const {
26
27
  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({
28
+ nodeKey: Z
29
+ } = i, [X] = Y(), B = K(), [s, m] = t(!1), [u, f] = t(a), [l, y] = t(a), [D, I] = t(""), [p, M] = t(""), [S, w] = t(!1), [F, P] = t(1), [c, E] = t({
29
30
  x: 0,
30
31
  y: 0
31
- }), [z, p] = t(!1), d = W({
32
+ }), [z, g] = t(!1), d = W({
32
33
  pointerId: -1,
33
34
  x: 0,
34
35
  y: 0
35
- }), O = q().replaceAll(":", "-");
36
- v(() => {
36
+ }), R = q().replaceAll(":", "-");
37
+ k(() => {
37
38
  f(a), y(a);
38
- }, [a]), v(() => {
39
+ }, [a]), k(() => {
39
40
  let e = !1;
40
- async function Y() {
41
- J(), E(!0), M("");
41
+ async function A() {
42
+ Q(), w(!0), M("");
42
43
  try {
43
44
  const {
44
- svg: x
45
- } = await $.render(`mermaid-${O}`, l);
46
- e || I(x);
47
- } catch (x) {
48
- e || (I(""), M(Q(x)));
45
+ svg: h
46
+ } = await $.render(`mermaid-${R}`, l);
47
+ e || I(h);
48
+ } catch (h) {
49
+ e || (I(""), M(_(h)));
49
50
  } finally {
50
- e || E(!1);
51
+ e || w(!1);
51
52
  }
52
53
  }
53
- return s || Y(), () => {
54
+ return s || A(), () => {
54
55
  e = !0;
55
56
  };
56
- }, [s, l, O]);
57
+ }, [s, l, R]);
57
58
  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);
59
+ X.update(() => {
60
+ const e = U(Z);
61
+ J(e) && e.setCode(u);
62
+ }), y(u), j(), m(!1);
64
63
  }, V = () => {
65
- P(1), R({
64
+ f(l), m(!1);
65
+ }, j = () => {
66
+ P(1), E({
66
67
  x: 0,
67
68
  y: 0
68
69
  });
69
70
  };
70
71
  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: {
72
+ /* @__PURE__ */ o(O, { justifyContent: "flex-end", alignItems: "center", gap: "xs", paddingX: "sm", paddingY: "xs", bg: "bg.muted", children: [
73
+ !s && !p && !S ? /* @__PURE__ */ o(x.Root, { size: "xs", width: "64px", defaultValue: "100", min: N, max: T, step: ee, formatOptions: {
73
74
  style: "percent"
74
75
  }, onValueChange: ({
75
76
  valueAsNumber: e
76
77
  }) => {
77
- Number.isNaN(e) || P(ee(e));
78
+ Number.isNaN(e) || P(re(e));
78
79
  }, children: [
79
- /* @__PURE__ */ r(h.Control, {}),
80
- /* @__PURE__ */ r(h.Input, { "aria-label": "Zoom percentage" })
80
+ /* @__PURE__ */ r(x.Control, {}),
81
+ /* @__PURE__ */ r(x.Input, { "aria-label": "Zoom percentage" })
81
82
  ] }) : null,
82
- B ? s ? /* @__PURE__ */ o(S, { gap: "xs", children: [
83
- /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: j, children: "Cancel" }),
83
+ B ? s ? /* @__PURE__ */ o(O, { gap: "xs", children: [
84
+ /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: V, children: "Cancel" }),
84
85
  /* @__PURE__ */ r(b, { size: "xs", onClick: L, children: "Preview" })
85
86
  ] }) : /* @__PURE__ */ r(b, { size: "xs", variant: "surface", onClick: () => m(!0), children: "Edit" }) : null
86
87
  ] }),
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: [
88
+ s ? /* @__PURE__ */ r(n, { padding: "sm", bg: "bg.muted", children: /* @__PURE__ */ r(H, { 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: [
89
+ S ? /* @__PURE__ */ r(C, { color: "fg.muted", children: "Rendering diagram..." }) : null,
90
+ p ? /* @__PURE__ */ o(n, { children: [
90
91
  /* @__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 })
92
+ /* @__PURE__ */ r(C, { color: "fg.muted", textStyle: "label/S/regular", marginTop: "2xs", children: p }),
93
+ /* @__PURE__ */ r(G, { marginTop: "sm", borderRadius: "sm", bg: "bg.panel", showHorizontalScrollbar: !0, showVerticalScrollbar: !1, contentProps: {
94
+ p: "sm"
95
+ }, children: /* @__PURE__ */ r(n, { as: "pre", children: l }) })
93
96
  ] }) : /* @__PURE__ */ r(n, { borderRadius: "sm", overflow: "hidden", minHeight: "160px", onWheel: (e) => {
94
97
  e.preventDefault(), e.stopPropagation();
95
98
  }, 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) => {
@@ -97,16 +100,16 @@ function le(i) {
97
100
  pointerId: e.pointerId,
98
101
  x: e.clientX - c.x,
99
102
  y: e.clientY - c.y
100
- }, p(!0), e.currentTarget.setPointerCapture(e.pointerId);
103
+ }, g(!0), e.currentTarget.setPointerCapture(e.pointerId);
101
104
  }, onPointerMove: (e) => {
102
- !z || d.current.pointerId !== e.pointerId || R({
105
+ !z || d.current.pointerId !== e.pointerId || E({
103
106
  x: e.clientX - d.current.x,
104
107
  y: e.clientY - d.current.y
105
108
  });
106
109
  }, onPointerUp: (e) => {
107
- d.current.pointerId === e.pointerId && (p(!1), e.currentTarget.releasePointerCapture(e.pointerId));
110
+ d.current.pointerId === e.pointerId && (g(!1), e.currentTarget.releasePointerCapture(e.pointerId));
108
111
  }, onPointerCancel: () => {
109
- p(!1);
112
+ g(!1);
110
113
  }, css: {
111
114
  "& img": {
112
115
  display: "block",
@@ -119,6 +122,6 @@ function le(i) {
119
122
  ] });
120
123
  }
121
124
  export {
122
- le as default
125
+ me as default
123
126
  };
124
- //# sourceMappingURL=MermaidComponent-D7Baqkwx.js.map
127
+ //# sourceMappingURL=MermaidComponent-Cz_Iob5U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MermaidComponent-Cz_Iob5U.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 { ScrollArea } from \"@/components/scroll-area\";\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 <ScrollArea\n marginTop=\"sm\"\n borderRadius=\"sm\"\n bg=\"bg.panel\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ p: \"sm\" }}\n >\n <Box as=\"pre\">{previewCode}</Box>\n </ScrollArea>\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","ScrollArea","p","preventDefault","stopPropagation","current","clientX","clientY","currentTarget","setPointerCapture","releasePointerCapture","display","width","height","userSelect","encodeURIComponent"],"mappings":"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"}