@ant-design/agentic-ui 2.30.25 → 2.30.26
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/Bubble/AIBubble.js +2 -3
- package/dist/Bubble/Bubble.js +3 -2
- package/dist/Bubble/List/index.js +130 -23
- package/dist/Bubble/MessagesContent/index.js +94 -74
- package/dist/Bubble/OpenAIMessageBubble/index.d.ts +6 -6
- package/dist/Bubble/OpenAIMessageBubble/index.js +3 -3
- package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/types.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.d.ts +1 -1
- package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.d.ts +1 -1
- package/dist/Bubble/bubblePropsAreEqual.d.ts +23 -0
- package/dist/Bubble/bubblePropsAreEqual.js +272 -0
- package/dist/Components/TypingAnimation/index.d.ts +4 -1
- package/dist/Components/TypingAnimation/index.js +5 -3
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +3 -2
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/FootnoteReference/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/Head/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +1 -2
- package/dist/MarkdownEditor/editor/elements/Paragraph/ReadonlyParagraph.js +6 -3
- package/dist/MarkdownEditor/editor/elements/Paragraph/index.js +10 -30
- package/dist/MarkdownEditor/editor/elements/Table/EditableTable.js +1 -1
- package/dist/MarkdownEditor/editor/elements/index.js +1 -1
- package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1 -1
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +1 -1
- package/dist/MarkdownEditor/editor/plugins/withSanitizeInvalidChildren.js +69 -38
- package/dist/MarkdownEditor/editor/store.d.ts +3 -0
- package/dist/MarkdownEditor/editor/store.js +1 -0
- package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1 -0
- package/dist/MarkdownEditor/style.js +0 -6
- package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +0 -3
- package/dist/MarkdownRenderer/MarkdownRenderer.js +2 -2
- package/dist/MarkdownRenderer/index.d.ts +2 -2
- package/dist/MarkdownRenderer/index.js +1 -1
- package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.d.ts +1 -1
- package/dist/MarkdownRenderer/streaming/MarkdownBlockPiece.js +15 -3
- package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.d.ts +2 -1
- package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +4 -4
- package/dist/Plugins/chart/BarChart/index.js +1 -1
- package/dist/Plugins/chart/ChartAttrToolBar/index.js +1 -1
- package/dist/Plugins/chart/index.d.ts +1 -1
- package/dist/Plugins/code/utils/index.d.ts +1 -1
- package/dist/Plugins/mermaid/MermaidRendererImpl.js +53 -419
- package/dist/Plugins/mermaid/index.js +1 -2
- package/dist/Plugins/mermaid/style.js +57 -59
- package/dist/Plugins/mermaid/utils.js +67 -8
- package/dist/Schema/SchemaForm/index.js +1 -1
- package/dist/Workspace/File/FileComponent.js +1 -1
- package/dist/Workspace/File/PreviewComponent.js +16 -2
- package/dist/Workspace/File/index.d.ts +1 -1
- package/dist/Workspace/File/index.js +2 -1
- package/package.json +2 -1
|
@@ -1,107 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
-
return arr2;
|
|
5
|
-
}
|
|
6
|
-
function _array_with_holes(arr) {
|
|
7
|
-
if (Array.isArray(arr)) return arr;
|
|
8
|
-
}
|
|
9
|
-
function _define_property(obj, key, value) {
|
|
10
|
-
if (key in obj) {
|
|
11
|
-
Object.defineProperty(obj, key, {
|
|
12
|
-
value: value,
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true
|
|
16
|
-
});
|
|
17
|
-
} else {
|
|
18
|
-
obj[key] = value;
|
|
19
|
-
}
|
|
20
|
-
return obj;
|
|
21
|
-
}
|
|
22
|
-
function _iterable_to_array_limit(arr, i) {
|
|
23
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
24
|
-
if (_i == null) return;
|
|
25
|
-
var _arr = [];
|
|
26
|
-
var _n = true;
|
|
27
|
-
var _d = false;
|
|
28
|
-
var _s, _e;
|
|
29
|
-
try {
|
|
30
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
31
|
-
_arr.push(_s.value);
|
|
32
|
-
if (i && _arr.length === i) break;
|
|
33
|
-
}
|
|
34
|
-
} catch (err) {
|
|
35
|
-
_d = true;
|
|
36
|
-
_e = err;
|
|
37
|
-
} finally{
|
|
38
|
-
try {
|
|
39
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
40
|
-
} finally{
|
|
41
|
-
if (_d) throw _e;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return _arr;
|
|
45
|
-
}
|
|
46
|
-
function _non_iterable_rest() {
|
|
47
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
-
}
|
|
49
|
-
function _object_spread(target) {
|
|
50
|
-
for(var i = 1; i < arguments.length; i++){
|
|
51
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
52
|
-
var ownKeys = Object.keys(source);
|
|
53
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
54
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
55
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
ownKeys.forEach(function(key) {
|
|
59
|
-
_define_property(target, key, source[key]);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
return target;
|
|
63
|
-
}
|
|
64
|
-
function ownKeys(object, enumerableOnly) {
|
|
65
|
-
var keys = Object.keys(object);
|
|
66
|
-
if (Object.getOwnPropertySymbols) {
|
|
67
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
68
|
-
if (enumerableOnly) {
|
|
69
|
-
symbols = symbols.filter(function(sym) {
|
|
70
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
keys.push.apply(keys, symbols);
|
|
74
|
-
}
|
|
75
|
-
return keys;
|
|
76
|
-
}
|
|
77
|
-
function _object_spread_props(target, source) {
|
|
78
|
-
source = source != null ? source : {};
|
|
79
|
-
if (Object.getOwnPropertyDescriptors) {
|
|
80
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
81
|
-
} else {
|
|
82
|
-
ownKeys(Object(source)).forEach(function(key) {
|
|
83
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return target;
|
|
87
|
-
}
|
|
88
|
-
function _sliced_to_array(arr, i) {
|
|
89
|
-
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
90
|
-
}
|
|
91
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
92
|
-
if (!o) return;
|
|
93
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
94
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
95
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
96
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
97
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
98
|
-
}
|
|
99
|
-
import { BorderOutlined, ExpandOutlined, FullscreenExitOutlined, FullscreenOutlined, ZoomInOutlined, ZoomOutOutlined } from "@ant-design/icons";
|
|
1
|
+
import { CopyOutlined, DownloadOutlined } from "@ant-design/icons";
|
|
100
2
|
import { ConfigProvider, theme } from "antd";
|
|
101
3
|
import classNames from "clsx";
|
|
102
|
-
import
|
|
4
|
+
import copy from "copy-to-clipboard";
|
|
5
|
+
import React, { useCallback, useContext, useMemo, useRef } from "react";
|
|
103
6
|
import { ActionIconBox } from "../../Components/ActionIconBox";
|
|
104
7
|
import { useIntersectionOnce } from "../../Hooks/useIntersectionOnce";
|
|
8
|
+
import { useLocale } from "../../I18n";
|
|
105
9
|
import { useStyle } from "./style";
|
|
106
10
|
import { useMermaidRender } from "./useMermaidRender";
|
|
107
11
|
import { createMermaidThemeConfig } from "./utils";
|
|
@@ -110,67 +14,27 @@ var PRE_STYLE = {
|
|
|
110
14
|
whiteSpace: 'pre-wrap',
|
|
111
15
|
wordBreak: 'break-word'
|
|
112
16
|
};
|
|
113
|
-
var
|
|
114
|
-
var
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
var clamp = function clamp(value, min, max) {
|
|
118
|
-
return Math.max(min, Math.min(max, value));
|
|
119
|
-
};
|
|
120
|
-
var getSvgNaturalSize = function getSvgNaturalSize(svgElement) {
|
|
121
|
-
var _svgElement_viewBox;
|
|
122
|
-
var viewBox = (_svgElement_viewBox = svgElement.viewBox) === null || _svgElement_viewBox === void 0 ? void 0 : _svgElement_viewBox.baseVal;
|
|
123
|
-
if (viewBox && viewBox.width > 0 && viewBox.height > 0) {
|
|
124
|
-
return {
|
|
125
|
-
width: viewBox.width,
|
|
126
|
-
height: viewBox.height
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
var widthAttr = Number.parseFloat(svgElement.getAttribute('width') || '');
|
|
130
|
-
var heightAttr = Number.parseFloat(svgElement.getAttribute('height') || '');
|
|
131
|
-
if (Number.isFinite(widthAttr) && Number.isFinite(heightAttr) && widthAttr > 0 && heightAttr > 0) {
|
|
132
|
-
return {
|
|
133
|
-
width: widthAttr,
|
|
134
|
-
height: heightAttr
|
|
135
|
-
};
|
|
17
|
+
var serializeSvgForFile = function serializeSvgForFile(svg) {
|
|
18
|
+
var clone = svg.cloneNode(true);
|
|
19
|
+
if (!clone.getAttribute('xmlns')) {
|
|
20
|
+
clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
136
21
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (bbox.width > 0 && bbox.height > 0) {
|
|
140
|
-
return {
|
|
141
|
-
width: bbox.width,
|
|
142
|
-
height: bbox.height
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
} catch (e) {
|
|
146
|
-
// Ignore getBBox errors in hidden/unsupported SVG contexts.
|
|
147
|
-
}
|
|
148
|
-
var rect = svgElement.getBoundingClientRect();
|
|
149
|
-
if (rect.width > 0 && rect.height > 0) {
|
|
150
|
-
return {
|
|
151
|
-
width: rect.width,
|
|
152
|
-
height: rect.height
|
|
153
|
-
};
|
|
22
|
+
if (!clone.getAttribute('xmlns:xlink')) {
|
|
23
|
+
clone.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
|
|
154
24
|
}
|
|
155
|
-
return
|
|
25
|
+
return new XMLSerializer().serializeToString(clone);
|
|
156
26
|
};
|
|
157
27
|
export var MermaidRendererImpl = function MermaidRendererImpl(props) {
|
|
158
28
|
var context = useContext(ConfigProvider.ConfigContext);
|
|
29
|
+
var locale = useLocale();
|
|
159
30
|
var token = theme.useToken().token;
|
|
160
31
|
var baseCls = (context === null || context === void 0 ? void 0 : context.getPrefixCls('agentic-plugin-mermaid')) || 'plugin-mermaid';
|
|
161
32
|
var _useStyle = useStyle(baseCls), wrapSSR = _useStyle.wrapSSR, hashId = _useStyle.hashId;
|
|
162
33
|
var containerRef = useRef(null);
|
|
163
34
|
var divRef = useRef(null);
|
|
164
|
-
var panSessionRef = useRef(null);
|
|
165
35
|
var id = useMemo(function() {
|
|
166
36
|
return 'm' + (Date.now() + Math.ceil(Math.random() * 1000));
|
|
167
37
|
}, []);
|
|
168
|
-
var _useState = _sliced_to_array(useState(1), 2), scale = _useState[0], setScale = _useState[1];
|
|
169
|
-
var _useState1 = _sliced_to_array(useState(0), 2), panX = _useState1[0], setPanX = _useState1[1];
|
|
170
|
-
var _useState2 = _sliced_to_array(useState(0), 2), panY = _useState2[0], setPanY = _useState2[1];
|
|
171
|
-
var _useState3 = _sliced_to_array(useState(true), 2), showGrid = _useState3[0], setShowGrid = _useState3[1];
|
|
172
|
-
var _useState4 = _sliced_to_array(useState(false), 2), isPanning = _useState4[0], setIsPanning = _useState4[1];
|
|
173
|
-
var _useState5 = _sliced_to_array(useState(false), 2), isFullscreen = _useState5[0], setIsFullscreen = _useState5[1];
|
|
174
38
|
var mermaidTheme = useMemo(function() {
|
|
175
39
|
return createMermaidThemeConfig({
|
|
176
40
|
colorBgContainer: token.colorBgContainer,
|
|
@@ -206,330 +70,100 @@ export var MermaidRendererImpl = function MermaidRendererImpl(props) {
|
|
|
206
70
|
error
|
|
207
71
|
]);
|
|
208
72
|
var isRendered = useMemo(function() {
|
|
209
|
-
return renderedCode && !isError;
|
|
73
|
+
return !!renderedCode && !isError;
|
|
210
74
|
}, [
|
|
211
75
|
renderedCode,
|
|
212
76
|
isError
|
|
213
77
|
]);
|
|
214
|
-
var
|
|
78
|
+
var diagramStyle = useMemo(function() {
|
|
215
79
|
return {
|
|
216
80
|
opacity: isRendered ? 1 : 0,
|
|
217
81
|
pointerEvents: isRendered ? 'auto' : 'none',
|
|
218
82
|
width: '100%',
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
83
|
+
minHeight: isRendered ? '120px' : '0',
|
|
84
|
+
maxHeight: isRendered ? 'none' : '0',
|
|
85
|
+
height: isRendered ? 'auto' : '0',
|
|
86
|
+
overflow: isRendered ? 'auto' : 'hidden'
|
|
223
87
|
};
|
|
224
88
|
}, [
|
|
225
89
|
isRendered
|
|
226
90
|
]);
|
|
227
|
-
var
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
'--mermaid-pan-y': "".concat(panY, "px"),
|
|
231
|
-
'--mermaid-scale': scale
|
|
232
|
-
});
|
|
233
|
-
}, [
|
|
234
|
-
containerStyle,
|
|
235
|
-
panX,
|
|
236
|
-
panY,
|
|
237
|
-
scale
|
|
238
|
-
]);
|
|
239
|
-
var viewportStyle = useMemo(function() {
|
|
240
|
-
return {
|
|
241
|
-
backgroundImage: showGrid ? mermaidTheme.darkMode ? 'radial-gradient(circle, rgba(255, 255, 255, 0.14) 1.2px, transparent 1.2px)' : 'radial-gradient(circle, rgba(0, 0, 0, 0.08) 1.2px, transparent 1.2px)' : 'none'
|
|
242
|
-
};
|
|
243
|
-
}, [
|
|
244
|
-
mermaidTheme.darkMode,
|
|
245
|
-
showGrid
|
|
246
|
-
]);
|
|
247
|
-
var getDiagramAndViewportSize = useCallback(function() {
|
|
248
|
-
var viewportElement = divRef.current;
|
|
249
|
-
if (!viewportElement) {
|
|
250
|
-
return null;
|
|
251
|
-
}
|
|
252
|
-
var svgElement = viewportElement.querySelector('[data-mermaid-svg="true"]');
|
|
253
|
-
if (!svgElement) {
|
|
254
|
-
return null;
|
|
255
|
-
}
|
|
256
|
-
var svgSize = getSvgNaturalSize(svgElement);
|
|
257
|
-
if (!svgSize) {
|
|
258
|
-
return null;
|
|
259
|
-
}
|
|
260
|
-
var viewportWidth = viewportElement.clientWidth;
|
|
261
|
-
var viewportHeight = viewportElement.clientHeight;
|
|
262
|
-
if (viewportWidth <= 0 || viewportHeight <= 0) {
|
|
263
|
-
return null;
|
|
264
|
-
}
|
|
265
|
-
return {
|
|
266
|
-
viewportWidth: viewportWidth,
|
|
267
|
-
viewportHeight: viewportHeight,
|
|
268
|
-
diagramWidth: svgSize.width,
|
|
269
|
-
diagramHeight: svgSize.height
|
|
270
|
-
};
|
|
271
|
-
}, []);
|
|
272
|
-
var handleFitToScreen = useCallback(function() {
|
|
273
|
-
var size = getDiagramAndViewportSize();
|
|
274
|
-
if (!size) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
var usableWidth = Math.max(size.viewportWidth - FIT_PADDING * 2, 1);
|
|
278
|
-
var usableHeight = Math.max(size.viewportHeight - FIT_PADDING * 2, 1);
|
|
279
|
-
var fittedScale = clamp(Math.min(usableWidth / size.diagramWidth, usableHeight / size.diagramHeight), MIN_ZOOM_SCALE, MAX_ZOOM_SCALE);
|
|
280
|
-
var centeredPanX = (size.viewportWidth - size.diagramWidth * fittedScale) / 2;
|
|
281
|
-
var centeredPanY = (size.viewportHeight - size.diagramHeight * fittedScale) / 2;
|
|
282
|
-
setScale(fittedScale);
|
|
283
|
-
setPanX(centeredPanX);
|
|
284
|
-
setPanY(centeredPanY);
|
|
285
|
-
}, [
|
|
286
|
-
getDiagramAndViewportSize
|
|
287
|
-
]);
|
|
288
|
-
var applyScaleAtPoint = useCallback(function(nextScale, clientX, clientY) {
|
|
289
|
-
var viewportElement = divRef.current;
|
|
290
|
-
if (!viewportElement) {
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
var clampedScale = clamp(nextScale, MIN_ZOOM_SCALE, MAX_ZOOM_SCALE);
|
|
294
|
-
if (clampedScale === scale) {
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
var viewportRect = viewportElement.getBoundingClientRect();
|
|
298
|
-
var targetClientX = clientX !== null && clientX !== void 0 ? clientX : viewportRect.left + viewportRect.width / 2;
|
|
299
|
-
var targetClientY = clientY !== null && clientY !== void 0 ? clientY : viewportRect.top + viewportRect.height / 2;
|
|
300
|
-
var relativeX = targetClientX - viewportRect.left;
|
|
301
|
-
var relativeY = targetClientY - viewportRect.top;
|
|
302
|
-
var nextPanX = relativeX - (relativeX - panX) / scale * clampedScale;
|
|
303
|
-
var nextPanY = relativeY - (relativeY - panY) / scale * clampedScale;
|
|
304
|
-
setScale(clampedScale);
|
|
305
|
-
setPanX(nextPanX);
|
|
306
|
-
setPanY(nextPanY);
|
|
307
|
-
}, [
|
|
308
|
-
panX,
|
|
309
|
-
panY,
|
|
310
|
-
scale
|
|
311
|
-
]);
|
|
312
|
-
var handleZoomIn = useCallback(function() {
|
|
313
|
-
applyScaleAtPoint(scale * ZOOM_STEP_RATIO);
|
|
314
|
-
}, [
|
|
315
|
-
applyScaleAtPoint,
|
|
316
|
-
scale
|
|
317
|
-
]);
|
|
318
|
-
var handleZoomOut = useCallback(function() {
|
|
319
|
-
applyScaleAtPoint(scale / ZOOM_STEP_RATIO);
|
|
320
|
-
}, [
|
|
321
|
-
applyScaleAtPoint,
|
|
322
|
-
scale
|
|
323
|
-
]);
|
|
324
|
-
var handleToggleFullscreen = useCallback(function() {
|
|
325
|
-
var _containerRef_current_requestFullscreen, _containerRef_current;
|
|
326
|
-
if (!containerRef.current) {
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
if (document.fullscreenElement === containerRef.current) {
|
|
330
|
-
var _document_exitFullscreen, _document;
|
|
331
|
-
(_document_exitFullscreen = (_document = document).exitFullscreen) === null || _document_exitFullscreen === void 0 ? void 0 : _document_exitFullscreen.call(_document);
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
(_containerRef_current_requestFullscreen = (_containerRef_current = containerRef.current).requestFullscreen) === null || _containerRef_current_requestFullscreen === void 0 ? void 0 : _containerRef_current_requestFullscreen.call(_containerRef_current);
|
|
335
|
-
}, []);
|
|
336
|
-
var handleWheel = useCallback(function(event) {
|
|
337
|
-
var _target_closest;
|
|
338
|
-
if (!isRendered) {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
var target = event.target;
|
|
342
|
-
if (target === null || target === void 0 ? void 0 : (_target_closest = target.closest) === null || _target_closest === void 0 ? void 0 : _target_closest.call(target, '[data-mermaid-toolbar]')) {
|
|
343
|
-
return;
|
|
344
|
-
}
|
|
345
|
-
event.preventDefault();
|
|
346
|
-
var scaleMultiplier = event.deltaY < 0 ? ZOOM_STEP_RATIO : 1 / ZOOM_STEP_RATIO;
|
|
347
|
-
applyScaleAtPoint(scale * scaleMultiplier, event.clientX, event.clientY);
|
|
348
|
-
}, [
|
|
349
|
-
applyScaleAtPoint,
|
|
350
|
-
isRendered,
|
|
351
|
-
scale
|
|
352
|
-
]);
|
|
353
|
-
var handlePointerDown = useCallback(function(event) {
|
|
354
|
-
var _target_closest, _event_currentTarget_setPointerCapture, _event_currentTarget;
|
|
355
|
-
if (!isRendered || event.button !== 0) {
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
var target = event.target;
|
|
359
|
-
if (target === null || target === void 0 ? void 0 : (_target_closest = target.closest) === null || _target_closest === void 0 ? void 0 : _target_closest.call(target, '[data-mermaid-toolbar]')) {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
panSessionRef.current = {
|
|
363
|
-
startClientX: event.clientX,
|
|
364
|
-
startClientY: event.clientY,
|
|
365
|
-
startPanX: panX,
|
|
366
|
-
startPanY: panY
|
|
367
|
-
};
|
|
368
|
-
setIsPanning(true);
|
|
369
|
-
(_event_currentTarget_setPointerCapture = (_event_currentTarget = event.currentTarget).setPointerCapture) === null || _event_currentTarget_setPointerCapture === void 0 ? void 0 : _event_currentTarget_setPointerCapture.call(_event_currentTarget, event.pointerId);
|
|
370
|
-
}, [
|
|
371
|
-
isRendered,
|
|
372
|
-
panX,
|
|
373
|
-
panY
|
|
374
|
-
]);
|
|
375
|
-
var handlePointerMove = useCallback(function(event) {
|
|
376
|
-
var panSession = panSessionRef.current;
|
|
377
|
-
if (!panSession) {
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
setPanX(panSession.startPanX + event.clientX - panSession.startClientX);
|
|
381
|
-
setPanY(panSession.startPanY + event.clientY - panSession.startClientY);
|
|
382
|
-
}, []);
|
|
383
|
-
var finishPointerSession = useCallback(function(event) {
|
|
384
|
-
var _event_currentTarget_releasePointerCapture, _event_currentTarget;
|
|
385
|
-
if (!panSessionRef.current) {
|
|
386
|
-
return;
|
|
387
|
-
}
|
|
388
|
-
panSessionRef.current = null;
|
|
389
|
-
setIsPanning(false);
|
|
390
|
-
(_event_currentTarget_releasePointerCapture = (_event_currentTarget = event.currentTarget).releasePointerCapture) === null || _event_currentTarget_releasePointerCapture === void 0 ? void 0 : _event_currentTarget_releasePointerCapture.call(_event_currentTarget, event.pointerId);
|
|
391
|
-
}, []);
|
|
392
|
-
useEffect(function() {
|
|
393
|
-
var syncFullscreenState = function syncFullscreenState() {
|
|
394
|
-
setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
395
|
-
};
|
|
396
|
-
syncFullscreenState();
|
|
397
|
-
document.addEventListener('fullscreenchange', syncFullscreenState);
|
|
398
|
-
return function() {
|
|
399
|
-
document.removeEventListener('fullscreenchange', syncFullscreenState);
|
|
400
|
-
};
|
|
401
|
-
}, []);
|
|
402
|
-
useEffect(function() {
|
|
403
|
-
if (!isRendered) {
|
|
91
|
+
var code = props.element.value || '';
|
|
92
|
+
var handleCopySource = useCallback(function() {
|
|
93
|
+
if (!code) {
|
|
404
94
|
return;
|
|
405
95
|
}
|
|
406
|
-
|
|
407
|
-
handleFitToScreen();
|
|
408
|
-
});
|
|
409
|
-
return function() {
|
|
410
|
-
window.cancelAnimationFrame(frame);
|
|
411
|
-
};
|
|
96
|
+
copy(code);
|
|
412
97
|
}, [
|
|
413
|
-
|
|
414
|
-
renderedCode,
|
|
415
|
-
handleFitToScreen
|
|
98
|
+
code
|
|
416
99
|
]);
|
|
417
|
-
|
|
418
|
-
|
|
100
|
+
var handleDownloadSvg = useCallback(function() {
|
|
101
|
+
var root = divRef.current;
|
|
102
|
+
if (!root) {
|
|
419
103
|
return;
|
|
420
104
|
}
|
|
421
|
-
|
|
105
|
+
var svg = root.querySelector('[data-mermaid-svg="true"]');
|
|
106
|
+
if (!svg) {
|
|
422
107
|
return;
|
|
423
108
|
}
|
|
424
|
-
var
|
|
425
|
-
|
|
109
|
+
var payload = serializeSvgForFile(svg);
|
|
110
|
+
var blob = new Blob([
|
|
111
|
+
payload
|
|
112
|
+
], {
|
|
113
|
+
type: 'image/svg+xml;charset=utf-8'
|
|
426
114
|
});
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
]);
|
|
435
|
-
useEffect(function() {
|
|
436
|
-
if (!isRendered) {
|
|
437
|
-
return;
|
|
438
|
-
}
|
|
439
|
-
handleFitToScreen();
|
|
440
|
-
}, [
|
|
441
|
-
handleFitToScreen,
|
|
442
|
-
isFullscreen,
|
|
443
|
-
isRendered
|
|
444
|
-
]);
|
|
445
|
-
var code = props.element.value || '';
|
|
115
|
+
var url = URL.createObjectURL(blob);
|
|
116
|
+
var anchor = document.createElement('a');
|
|
117
|
+
anchor.href = url;
|
|
118
|
+
anchor.download = "mermaid-diagram-".concat(Date.now(), ".svg");
|
|
119
|
+
anchor.rel = 'noopener';
|
|
120
|
+
anchor.click();
|
|
121
|
+
URL.revokeObjectURL(url);
|
|
122
|
+
}, []);
|
|
446
123
|
return wrapSSR(/*#__PURE__*/ React.createElement("div", {
|
|
447
124
|
ref: containerRef,
|
|
448
|
-
className: classNames(baseCls, hashId
|
|
125
|
+
className: classNames(baseCls, hashId),
|
|
449
126
|
contentEditable: false,
|
|
450
127
|
"data-mermaid-theme": mermaidTheme.darkMode ? 'dark' : 'light'
|
|
451
128
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
452
129
|
contentEditable: false,
|
|
453
130
|
className: classNames("".concat(baseCls, "-viewport"), hashId),
|
|
454
|
-
|
|
455
|
-
onPointerDown: handlePointerDown,
|
|
456
|
-
onPointerMove: handlePointerMove,
|
|
457
|
-
onPointerUp: finishPointerSession,
|
|
458
|
-
onPointerCancel: finishPointerSession,
|
|
459
|
-
"data-mermaid-grid": showGrid,
|
|
460
|
-
"data-mermaid-panning": isPanning,
|
|
461
|
-
"data-mermaid-viewport": "true",
|
|
462
|
-
style: viewportStyle
|
|
131
|
+
"data-mermaid-viewport": "true"
|
|
463
132
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
464
133
|
contentEditable: false,
|
|
465
134
|
ref: divRef,
|
|
466
135
|
className: classNames(hashId),
|
|
467
|
-
style:
|
|
136
|
+
style: diagramStyle,
|
|
468
137
|
"data-mermaid-container": "true"
|
|
469
138
|
}), isRendered && /*#__PURE__*/ React.createElement("div", {
|
|
470
139
|
className: classNames("".concat(baseCls, "-toolbar-float"), hashId),
|
|
471
140
|
role: "toolbar",
|
|
472
|
-
"aria-label": "Mermaid diagram
|
|
141
|
+
"aria-label": "Mermaid diagram actions",
|
|
473
142
|
"data-mermaid-toolbar": true,
|
|
474
143
|
onPointerDown: function onPointerDown(e) {
|
|
475
144
|
e.stopPropagation();
|
|
476
145
|
}
|
|
477
146
|
}, /*#__PURE__*/ React.createElement("span", {
|
|
478
|
-
"data-mermaid-action": "
|
|
479
|
-
}, /*#__PURE__*/ React.createElement(ActionIconBox, {
|
|
480
|
-
title: "适配画布",
|
|
481
|
-
borderLess: true,
|
|
482
|
-
noPadding: true,
|
|
483
|
-
onClick: handleFitToScreen,
|
|
484
|
-
iconStyle: {
|
|
485
|
-
color: token.colorTextSecondary
|
|
486
|
-
}
|
|
487
|
-
}, /*#__PURE__*/ React.createElement(ExpandOutlined, null))), /*#__PURE__*/ React.createElement("span", {
|
|
488
|
-
"data-mermaid-action": "zoom-out"
|
|
489
|
-
}, /*#__PURE__*/ React.createElement(ActionIconBox, {
|
|
490
|
-
title: "缩小",
|
|
491
|
-
borderLess: true,
|
|
492
|
-
noPadding: true,
|
|
493
|
-
onClick: handleZoomOut,
|
|
494
|
-
iconStyle: {
|
|
495
|
-
color: token.colorTextSecondary
|
|
496
|
-
}
|
|
497
|
-
}, /*#__PURE__*/ React.createElement(ZoomOutOutlined, null))), /*#__PURE__*/ React.createElement("span", {
|
|
498
|
-
"data-mermaid-action": "zoom-in"
|
|
499
|
-
}, /*#__PURE__*/ React.createElement(ActionIconBox, {
|
|
500
|
-
title: "放大",
|
|
501
|
-
borderLess: true,
|
|
502
|
-
noPadding: true,
|
|
503
|
-
onClick: handleZoomIn,
|
|
504
|
-
iconStyle: {
|
|
505
|
-
color: token.colorTextSecondary
|
|
506
|
-
}
|
|
507
|
-
}, /*#__PURE__*/ React.createElement(ZoomInOutlined, null))), /*#__PURE__*/ React.createElement("span", {
|
|
508
|
-
"data-mermaid-action": "grid"
|
|
147
|
+
"data-mermaid-action": "copy-source"
|
|
509
148
|
}, /*#__PURE__*/ React.createElement(ActionIconBox, {
|
|
510
|
-
title:
|
|
149
|
+
title: locale.copy,
|
|
511
150
|
borderLess: true,
|
|
512
151
|
noPadding: true,
|
|
513
|
-
|
|
514
|
-
onClick: function onClick() {
|
|
515
|
-
setShowGrid(function(prev) {
|
|
516
|
-
return !prev;
|
|
517
|
-
});
|
|
518
|
-
},
|
|
152
|
+
onClick: handleCopySource,
|
|
519
153
|
iconStyle: {
|
|
520
154
|
color: token.colorTextSecondary
|
|
521
155
|
}
|
|
522
|
-
}, /*#__PURE__*/ React.createElement(
|
|
523
|
-
"data-mermaid-action": "
|
|
156
|
+
}, /*#__PURE__*/ React.createElement(CopyOutlined, null))), /*#__PURE__*/ React.createElement("span", {
|
|
157
|
+
"data-mermaid-action": "download-svg"
|
|
524
158
|
}, /*#__PURE__*/ React.createElement(ActionIconBox, {
|
|
525
|
-
title:
|
|
159
|
+
title: locale.download,
|
|
526
160
|
borderLess: true,
|
|
527
161
|
noPadding: true,
|
|
528
|
-
onClick:
|
|
162
|
+
onClick: handleDownloadSvg,
|
|
529
163
|
iconStyle: {
|
|
530
164
|
color: token.colorTextSecondary
|
|
531
165
|
}
|
|
532
|
-
},
|
|
166
|
+
}, /*#__PURE__*/ React.createElement(DownloadOutlined, null))))), error && /*#__PURE__*/ React.createElement("div", {
|
|
533
167
|
className: classNames("".concat(baseCls, "-error"), hashId)
|
|
534
168
|
}, /*#__PURE__*/ React.createElement("pre", {
|
|
535
169
|
style: PRE_STYLE
|
|
@@ -105,7 +105,6 @@ import { ReactEditor } from "slate-react";
|
|
|
105
105
|
import { ActionIconBox } from "../../Components/ActionIconBox";
|
|
106
106
|
import { I18nContext } from "../../I18n";
|
|
107
107
|
import { useEditorStore } from "../../MarkdownEditor/editor/store";
|
|
108
|
-
import { DragHandle } from "../../MarkdownEditor/editor/tools/DragHandle";
|
|
109
108
|
import { useSelStatus } from "../../MarkdownEditor/hooks/editor";
|
|
110
109
|
import { Mermaid } from "./Mermaid";
|
|
111
110
|
/**
|
|
@@ -184,7 +183,7 @@ import { Mermaid } from "./Mermaid";
|
|
|
184
183
|
tabIndex: -1,
|
|
185
184
|
onBlur: function onBlur() {},
|
|
186
185
|
"data-lang": props.element.language
|
|
187
|
-
}),
|
|
186
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
188
187
|
onClick: function onClick(e) {
|
|
189
188
|
var _editorRef_current;
|
|
190
189
|
e.stopPropagation();
|