@ant-design/agentic-ui 2.11.2 → 2.12.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/Bubble/MessagesContent/BubbleExtra.js +7 -1
- package/dist/MarkdownEditor/editor/types/Table.d.ts +1 -0
- package/dist/MarkdownEditor/editor/utils/ace.d.ts +22 -105
- package/dist/MarkdownEditor/editor/utils/ace.js +328 -106
- package/dist/MarkdownEditor/types.d.ts +1 -1
- package/dist/MarkdownInputField/AttachmentButton/index.js +5 -3
- package/dist/MarkdownInputField/MarkdownInputField.d.ts +32 -0
- package/dist/MarkdownInputField/MarkdownInputField.js +26 -8
- package/dist/Plugins/chart/ChartRender.js +75 -13
- package/dist/Plugins/chart/LineChart/index.js +10 -4
- package/dist/Plugins/chart/index.js +17 -5
- package/dist/Plugins/chart/utils.d.ts +40 -0
- package/dist/Plugins/chart/utils.js +116 -0
- package/dist/Plugins/code/CodeUI/Katex/Katex.d.ts +0 -1
- package/dist/Plugins/code/CodeUI/Katex/Katex.js +182 -6
- package/dist/Plugins/code/components/AceEditor.d.ts +4 -6
- package/dist/Plugins/code/components/AceEditor.js +362 -40
- package/dist/Plugins/code/loadAceEditor.d.ts +26 -0
- package/dist/Plugins/code/loadAceEditor.js +266 -0
- package/dist/Plugins/katex/InlineKatex.d.ts +0 -1
- package/dist/Plugins/katex/InlineKatex.js +183 -7
- package/dist/Plugins/katex/Katex.d.ts +0 -1
- package/dist/Plugins/katex/Katex.js +184 -6
- package/dist/Plugins/katex/loadKatex.d.ts +18 -0
- package/dist/Plugins/katex/loadKatex.js +181 -0
- package/dist/Plugins/mermaid/Mermaid.js +315 -113
- package/dist/Schema/SchemaEditor/AceEditorWrapper.d.ts +1 -1
- package/dist/Schema/SchemaEditor/AceEditorWrapper.js +342 -53
- package/dist/Utils/loadCSS.d.ts +31 -0
- package/dist/Utils/loadCSS.js +264 -0
- package/package.json +1 -1
|
@@ -10,7 +10,44 @@
|
|
|
10
10
|
* - 与 Slate 编辑器的集成
|
|
11
11
|
*
|
|
12
12
|
* @see {@link https://ace.c9.io/} Ace Editor 官方文档
|
|
13
|
-
*/ function
|
|
13
|
+
*/ function _array_like_to_array(arr, len) {
|
|
14
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
15
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
16
|
+
return arr2;
|
|
17
|
+
}
|
|
18
|
+
function _array_with_holes(arr) {
|
|
19
|
+
if (Array.isArray(arr)) return arr;
|
|
20
|
+
}
|
|
21
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
22
|
+
try {
|
|
23
|
+
var info = gen[key](arg);
|
|
24
|
+
var value = info.value;
|
|
25
|
+
} catch (error) {
|
|
26
|
+
reject(error);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (info.done) {
|
|
30
|
+
resolve(value);
|
|
31
|
+
} else {
|
|
32
|
+
Promise.resolve(value).then(_next, _throw);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function _async_to_generator(fn) {
|
|
36
|
+
return function() {
|
|
37
|
+
var self = this, args = arguments;
|
|
38
|
+
return new Promise(function(resolve, reject) {
|
|
39
|
+
var gen = fn.apply(self, args);
|
|
40
|
+
function _next(value) {
|
|
41
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
42
|
+
}
|
|
43
|
+
function _throw(err) {
|
|
44
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
45
|
+
}
|
|
46
|
+
_next(undefined);
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function _define_property(obj, key, value) {
|
|
14
51
|
if (key in obj) {
|
|
15
52
|
Object.defineProperty(obj, key, {
|
|
16
53
|
value: value,
|
|
@@ -23,6 +60,33 @@
|
|
|
23
60
|
}
|
|
24
61
|
return obj;
|
|
25
62
|
}
|
|
63
|
+
function _iterable_to_array_limit(arr, i) {
|
|
64
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
65
|
+
if (_i == null) return;
|
|
66
|
+
var _arr = [];
|
|
67
|
+
var _n = true;
|
|
68
|
+
var _d = false;
|
|
69
|
+
var _s, _e;
|
|
70
|
+
try {
|
|
71
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
72
|
+
_arr.push(_s.value);
|
|
73
|
+
if (i && _arr.length === i) break;
|
|
74
|
+
}
|
|
75
|
+
} catch (err) {
|
|
76
|
+
_d = true;
|
|
77
|
+
_e = err;
|
|
78
|
+
} finally{
|
|
79
|
+
try {
|
|
80
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
81
|
+
} finally{
|
|
82
|
+
if (_d) throw _e;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return _arr;
|
|
86
|
+
}
|
|
87
|
+
function _non_iterable_rest() {
|
|
88
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
89
|
+
}
|
|
26
90
|
function _object_spread(target) {
|
|
27
91
|
for(var i = 1; i < arguments.length; i++){
|
|
28
92
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -65,17 +129,121 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
65
129
|
}
|
|
66
130
|
return target;
|
|
67
131
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
132
|
+
function _sliced_to_array(arr, i) {
|
|
133
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
134
|
+
}
|
|
135
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
136
|
+
if (!o) return;
|
|
137
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
138
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
139
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
140
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
141
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
142
|
+
}
|
|
143
|
+
function _ts_generator(thisArg, body) {
|
|
144
|
+
var f, y, t, g, _ = {
|
|
145
|
+
label: 0,
|
|
146
|
+
sent: function() {
|
|
147
|
+
if (t[0] & 1) throw t[1];
|
|
148
|
+
return t[1];
|
|
149
|
+
},
|
|
150
|
+
trys: [],
|
|
151
|
+
ops: []
|
|
152
|
+
};
|
|
153
|
+
return g = {
|
|
154
|
+
next: verb(0),
|
|
155
|
+
"throw": verb(1),
|
|
156
|
+
"return": verb(2)
|
|
157
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
158
|
+
return this;
|
|
159
|
+
}), g;
|
|
160
|
+
function verb(n) {
|
|
161
|
+
return function(v) {
|
|
162
|
+
return step([
|
|
163
|
+
n,
|
|
164
|
+
v
|
|
165
|
+
]);
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function step(op) {
|
|
169
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
170
|
+
while(_)try {
|
|
171
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
172
|
+
if (y = 0, t) op = [
|
|
173
|
+
op[0] & 2,
|
|
174
|
+
t.value
|
|
175
|
+
];
|
|
176
|
+
switch(op[0]){
|
|
177
|
+
case 0:
|
|
178
|
+
case 1:
|
|
179
|
+
t = op;
|
|
180
|
+
break;
|
|
181
|
+
case 4:
|
|
182
|
+
_.label++;
|
|
183
|
+
return {
|
|
184
|
+
value: op[1],
|
|
185
|
+
done: false
|
|
186
|
+
};
|
|
187
|
+
case 5:
|
|
188
|
+
_.label++;
|
|
189
|
+
y = op[1];
|
|
190
|
+
op = [
|
|
191
|
+
0
|
|
192
|
+
];
|
|
193
|
+
continue;
|
|
194
|
+
case 7:
|
|
195
|
+
op = _.ops.pop();
|
|
196
|
+
_.trys.pop();
|
|
197
|
+
continue;
|
|
198
|
+
default:
|
|
199
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
200
|
+
_ = 0;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
204
|
+
_.label = op[1];
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
208
|
+
_.label = t[1];
|
|
209
|
+
t = op;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
if (t && _.label < t[2]) {
|
|
213
|
+
_.label = t[2];
|
|
214
|
+
_.ops.push(op);
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
if (t[2]) _.ops.pop();
|
|
218
|
+
_.trys.pop();
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
op = body.call(thisArg, _);
|
|
222
|
+
} catch (e) {
|
|
223
|
+
op = [
|
|
224
|
+
6,
|
|
225
|
+
e
|
|
226
|
+
];
|
|
227
|
+
y = 0;
|
|
228
|
+
} finally{
|
|
229
|
+
f = t = 0;
|
|
230
|
+
}
|
|
231
|
+
if (op[0] & 5) throw op[1];
|
|
232
|
+
return {
|
|
233
|
+
value: op[0] ? op[1] : void 0,
|
|
234
|
+
done: true
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
71
238
|
import isHotkey from "is-hotkey";
|
|
72
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
239
|
+
import { startTransition, useCallback, useEffect, useRef, useState } from "react";
|
|
73
240
|
import { Editor, Path, Transforms } from "slate";
|
|
74
241
|
import { useRefFunction } from "../../../Hooks/useRefFunction";
|
|
75
242
|
import partialParse from "../../../MarkdownEditor/editor/parser/json-parse";
|
|
76
243
|
import { useEditorStore } from "../../../MarkdownEditor/editor/store";
|
|
77
|
-
import {
|
|
244
|
+
import { getAceLangs, modeMap } from "../../../MarkdownEditor/editor/utils/ace";
|
|
78
245
|
import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
246
|
+
import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
|
|
79
247
|
/**
|
|
80
248
|
* AceEditor 组件
|
|
81
249
|
*
|
|
@@ -111,7 +279,7 @@ import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
|
111
279
|
"isSelected",
|
|
112
280
|
"onSelectionChange"
|
|
113
281
|
]);
|
|
114
|
-
var _editorProps_codeProps;
|
|
282
|
+
var _editorProps_codeProps, _editorProps_codeProps1;
|
|
115
283
|
var _useEditorStore = useEditorStore(), store = _useEditorStore.store, editorProps = _useEditorStore.editorProps, readonly = _useEditorStore.readonly;
|
|
116
284
|
// 各种引用
|
|
117
285
|
var codeRef = useRef(element.value || '');
|
|
@@ -124,12 +292,77 @@ import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
|
124
292
|
var debounceTimer = useRef(0);
|
|
125
293
|
var editorRef = useRef();
|
|
126
294
|
var dom = useRef(null);
|
|
295
|
+
// Ace Editor 异步加载状态
|
|
296
|
+
var _useState = _sliced_to_array(useState(false), 2), aceLoaded = _useState[0], setAceLoaded = _useState[1];
|
|
297
|
+
var aceModuleRef = useRef(null);
|
|
127
298
|
// 更新路径引用
|
|
128
299
|
useEffect(function() {
|
|
129
300
|
pathRef.current = path;
|
|
130
301
|
}, [
|
|
131
302
|
path
|
|
132
303
|
]);
|
|
304
|
+
// 异步加载 Ace Editor 库
|
|
305
|
+
useEffect(function() {
|
|
306
|
+
if (process.env.NODE_ENV === 'test') {
|
|
307
|
+
// 测试环境跳过加载
|
|
308
|
+
setAceLoaded(true);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
// 使用 startTransition 标记为非紧急更新
|
|
312
|
+
startTransition(function() {
|
|
313
|
+
// 异步加载在 startTransition 外部执行
|
|
314
|
+
_async_to_generator(function() {
|
|
315
|
+
var _editorProps_codeProps, aceModule, theme, error;
|
|
316
|
+
return _ts_generator(this, function(_state) {
|
|
317
|
+
switch(_state.label){
|
|
318
|
+
case 0:
|
|
319
|
+
_state.trys.push([
|
|
320
|
+
0,
|
|
321
|
+
3,
|
|
322
|
+
,
|
|
323
|
+
4
|
|
324
|
+
]);
|
|
325
|
+
return [
|
|
326
|
+
4,
|
|
327
|
+
loadAceEditor()
|
|
328
|
+
];
|
|
329
|
+
case 1:
|
|
330
|
+
aceModule = _state.sent();
|
|
331
|
+
aceModuleRef.current = aceModule;
|
|
332
|
+
// 加载主题
|
|
333
|
+
theme = ((_editorProps_codeProps = editorProps.codeProps) === null || _editorProps_codeProps === void 0 ? void 0 : _editorProps_codeProps.theme) || props.theme || 'github';
|
|
334
|
+
return [
|
|
335
|
+
4,
|
|
336
|
+
loadAceTheme(theme)
|
|
337
|
+
];
|
|
338
|
+
case 2:
|
|
339
|
+
_state.sent();
|
|
340
|
+
setAceLoaded(true);
|
|
341
|
+
return [
|
|
342
|
+
3,
|
|
343
|
+
4
|
|
344
|
+
];
|
|
345
|
+
case 3:
|
|
346
|
+
error = _state.sent();
|
|
347
|
+
console.error('Failed to load Ace Editor:', error);
|
|
348
|
+
// 即使加载失败也设置 loaded,避免无限加载
|
|
349
|
+
setAceLoaded(true);
|
|
350
|
+
return [
|
|
351
|
+
3,
|
|
352
|
+
4
|
|
353
|
+
];
|
|
354
|
+
case 4:
|
|
355
|
+
return [
|
|
356
|
+
2
|
|
357
|
+
];
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
})();
|
|
361
|
+
});
|
|
362
|
+
}, [
|
|
363
|
+
(_editorProps_codeProps = editorProps.codeProps) === null || _editorProps_codeProps === void 0 ? void 0 : _editorProps_codeProps.theme,
|
|
364
|
+
props.theme
|
|
365
|
+
]);
|
|
133
366
|
// 键盘事件处理
|
|
134
367
|
var handleKeyDown = useRefFunction(function(e) {
|
|
135
368
|
// 删除空代码块
|
|
@@ -247,17 +480,21 @@ import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
|
247
480
|
readonly,
|
|
248
481
|
handleKeyDown
|
|
249
482
|
]);
|
|
250
|
-
// 初始化 Ace
|
|
483
|
+
// 初始化 Ace 编辑器(仅在库加载完成后)
|
|
251
484
|
useEffect(function() {
|
|
252
485
|
var _editorProps_codeProps;
|
|
253
486
|
if (process.env.NODE_ENV === 'test') return;
|
|
254
|
-
if (!dom.current) return;
|
|
487
|
+
if (!aceLoaded || !aceModuleRef.current || !dom.current) return;
|
|
255
488
|
var value = element.value || '';
|
|
256
489
|
if (element.language === 'json') {
|
|
257
490
|
try {
|
|
258
491
|
value = JSON.stringify(partialParse(value), null, 2);
|
|
259
492
|
} catch (e) {}
|
|
260
493
|
}
|
|
494
|
+
// ace-builds 模块的默认导出就是 ace 对象
|
|
495
|
+
// 使用类型断言确保类型正确
|
|
496
|
+
var aceModule = aceModuleRef.current;
|
|
497
|
+
var ace = aceModule.default || aceModule;
|
|
261
498
|
var codeEditor = ace.edit(dom.current, _object_spread({
|
|
262
499
|
useWorker: false,
|
|
263
500
|
value: value,
|
|
@@ -276,22 +513,45 @@ import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
|
276
513
|
var theme = ((_editorProps_codeProps = editorProps.codeProps) === null || _editorProps_codeProps === void 0 ? void 0 : _editorProps_codeProps.theme) || props.theme || 'github';
|
|
277
514
|
codeEditor.setTheme("ace/theme/".concat(theme));
|
|
278
515
|
// 设置语法高亮
|
|
279
|
-
setTimeout(function() {
|
|
280
|
-
var lang
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
516
|
+
setTimeout(/*#__PURE__*/ _async_to_generator(function() {
|
|
517
|
+
var lang, aceLangs;
|
|
518
|
+
return _ts_generator(this, function(_state) {
|
|
519
|
+
switch(_state.label){
|
|
520
|
+
case 0:
|
|
521
|
+
lang = element.language;
|
|
522
|
+
if (modeMap.has(lang)) {
|
|
523
|
+
lang = modeMap.get(lang);
|
|
524
|
+
}
|
|
525
|
+
return [
|
|
526
|
+
4,
|
|
527
|
+
getAceLangs()
|
|
528
|
+
];
|
|
529
|
+
case 1:
|
|
530
|
+
aceLangs = _state.sent();
|
|
531
|
+
if (aceLangs.has(lang)) {
|
|
532
|
+
codeEditor.session.setMode("ace/mode/".concat(lang));
|
|
533
|
+
}
|
|
534
|
+
return [
|
|
535
|
+
2
|
|
536
|
+
];
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
}), 16);
|
|
288
540
|
if (readonly) return;
|
|
289
541
|
// 配置编辑器事件
|
|
290
542
|
setupEditorEvents(codeEditor);
|
|
291
543
|
return function() {
|
|
292
544
|
codeEditor.destroy();
|
|
293
545
|
};
|
|
294
|
-
}, [
|
|
546
|
+
}, [
|
|
547
|
+
aceLoaded,
|
|
548
|
+
element.value,
|
|
549
|
+
element.language,
|
|
550
|
+
readonly,
|
|
551
|
+
editorProps.codeProps,
|
|
552
|
+
props.theme,
|
|
553
|
+
setupEditorEvents
|
|
554
|
+
]);
|
|
295
555
|
// 监听外部值变化
|
|
296
556
|
useEffect(function() {
|
|
297
557
|
var value = element.value || '';
|
|
@@ -311,32 +571,94 @@ import { EditorUtils } from "../../../MarkdownEditor/editor/utils/editorUtils";
|
|
|
311
571
|
// 监听主题变化
|
|
312
572
|
useEffect(function() {
|
|
313
573
|
var _editorProps_codeProps;
|
|
314
|
-
if (!editorRef.current) return;
|
|
574
|
+
if (!editorRef.current || !aceLoaded) return;
|
|
315
575
|
var theme = ((_editorProps_codeProps = editorProps.codeProps) === null || _editorProps_codeProps === void 0 ? void 0 : _editorProps_codeProps.theme) || props.theme || 'github';
|
|
316
|
-
|
|
576
|
+
// 异步加载新主题
|
|
577
|
+
startTransition(function() {
|
|
578
|
+
_async_to_generator(function() {
|
|
579
|
+
var _editorRef_current, error, // 尝试使用默认主题
|
|
580
|
+
_editorRef_current1;
|
|
581
|
+
return _ts_generator(this, function(_state) {
|
|
582
|
+
switch(_state.label){
|
|
583
|
+
case 0:
|
|
584
|
+
_state.trys.push([
|
|
585
|
+
0,
|
|
586
|
+
2,
|
|
587
|
+
,
|
|
588
|
+
3
|
|
589
|
+
]);
|
|
590
|
+
return [
|
|
591
|
+
4,
|
|
592
|
+
loadAceTheme(theme)
|
|
593
|
+
];
|
|
594
|
+
case 1:
|
|
595
|
+
_state.sent();
|
|
596
|
+
(_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.setTheme("ace/theme/".concat(theme));
|
|
597
|
+
return [
|
|
598
|
+
3,
|
|
599
|
+
3
|
|
600
|
+
];
|
|
601
|
+
case 2:
|
|
602
|
+
error = _state.sent();
|
|
603
|
+
console.warn("Failed to load theme: ".concat(theme), error);
|
|
604
|
+
(_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.setTheme("ace/theme/github");
|
|
605
|
+
return [
|
|
606
|
+
3,
|
|
607
|
+
3
|
|
608
|
+
];
|
|
609
|
+
case 3:
|
|
610
|
+
return [
|
|
611
|
+
2
|
|
612
|
+
];
|
|
613
|
+
}
|
|
614
|
+
});
|
|
615
|
+
})();
|
|
616
|
+
});
|
|
317
617
|
}, [
|
|
318
|
-
(
|
|
319
|
-
props.theme
|
|
618
|
+
(_editorProps_codeProps1 = editorProps.codeProps) === null || _editorProps_codeProps1 === void 0 ? void 0 : _editorProps_codeProps1.theme,
|
|
619
|
+
props.theme,
|
|
620
|
+
aceLoaded
|
|
320
621
|
]);
|
|
321
622
|
// 暴露设置语言的方法
|
|
322
|
-
var setLanguage = useCallback(function(
|
|
323
|
-
var
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
623
|
+
var setLanguage = useCallback(/*#__PURE__*/ function() {
|
|
624
|
+
var _ref = _async_to_generator(function(changeLang) {
|
|
625
|
+
var _element_language, lang, aceLangs, _editorRef_current, _editorRef_current1;
|
|
626
|
+
return _ts_generator(this, function(_state) {
|
|
627
|
+
switch(_state.label){
|
|
628
|
+
case 0:
|
|
629
|
+
lang = changeLang.toLowerCase();
|
|
630
|
+
if (((_element_language = element.language) === null || _element_language === void 0 ? void 0 : _element_language.toLowerCase()) === lang) return [
|
|
631
|
+
2
|
|
632
|
+
];
|
|
633
|
+
onUpdate({
|
|
634
|
+
language: lang
|
|
635
|
+
});
|
|
636
|
+
if (modeMap.has(lang)) {
|
|
637
|
+
lang = modeMap.get(lang);
|
|
638
|
+
}
|
|
639
|
+
return [
|
|
640
|
+
4,
|
|
641
|
+
getAceLangs()
|
|
642
|
+
];
|
|
643
|
+
case 1:
|
|
644
|
+
aceLangs = _state.sent();
|
|
645
|
+
if (aceLangs.has(lang)) {
|
|
646
|
+
;
|
|
647
|
+
(_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.session.setMode("ace/mode/".concat(lang));
|
|
648
|
+
} else {
|
|
649
|
+
;
|
|
650
|
+
(_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.session.setMode("ace/mode/text");
|
|
651
|
+
}
|
|
652
|
+
return [
|
|
653
|
+
2
|
|
654
|
+
];
|
|
655
|
+
}
|
|
656
|
+
});
|
|
328
657
|
});
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
var _editorRef_current;
|
|
334
|
-
(_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.session.setMode("ace/mode/".concat(lang));
|
|
335
|
-
} else {
|
|
336
|
-
var _editorRef_current1;
|
|
337
|
-
(_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.session.setMode("ace/mode/text");
|
|
338
|
-
}
|
|
339
|
-
}, [
|
|
658
|
+
return function(changeLang) {
|
|
659
|
+
return _ref.apply(this, arguments);
|
|
660
|
+
};
|
|
661
|
+
}(), [
|
|
340
662
|
element,
|
|
341
663
|
onUpdate
|
|
342
664
|
]);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ace Editor 异步加载器
|
|
3
|
+
*
|
|
4
|
+
* 使用单例模式确保 ace-builds 库只加载一次
|
|
5
|
+
* 支持动态导入主题和语言模式,实现代码分割
|
|
6
|
+
* CSS 文件也会异步加载
|
|
7
|
+
*/
|
|
8
|
+
/// <reference types="ace-builds" />
|
|
9
|
+
type AceEditorModule = typeof import('ace-builds');
|
|
10
|
+
/**
|
|
11
|
+
* 加载 Ace Editor 核心库
|
|
12
|
+
* 使用单例模式确保只加载一次
|
|
13
|
+
*/
|
|
14
|
+
export declare const loadAceEditor: () => Promise<AceEditorModule>;
|
|
15
|
+
/**
|
|
16
|
+
* 加载 Ace Editor 主题
|
|
17
|
+
* 支持按需加载主题和对应的 CSS,减少初始 bundle 大小
|
|
18
|
+
*/
|
|
19
|
+
export declare const loadAceTheme: (themeName: string) => Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* 预加载 Ace Editor 资源
|
|
22
|
+
* 使用动态 import 提前开始加载,但不阻塞当前执行
|
|
23
|
+
* 可以在用户可能使用代码编辑器之前调用此函数
|
|
24
|
+
*/
|
|
25
|
+
export declare const preloadAceEditor: () => void;
|
|
26
|
+
export {};
|