@ant-design/agentic-ui 2.30.12 → 2.30.14

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 (51) hide show
  1. package/dist/Bubble/AIBubble.js +32 -18
  2. package/dist/Bubble/ContentFilemapView.d.ts +14 -0
  3. package/dist/Bubble/ContentFilemapView.js +95 -0
  4. package/dist/Bubble/MessagesContent/MarkdownPreview.js +3 -2
  5. package/dist/Bubble/UserBubble.js +48 -6
  6. package/dist/Bubble/extractFilemapBlocks.d.ts +17 -0
  7. package/dist/Bubble/extractFilemapBlocks.js +23 -0
  8. package/dist/Bubble/type.d.ts +3 -0
  9. package/dist/Hooks/useLanguage.d.ts +2 -0
  10. package/dist/I18n/locales.d.ts +2 -0
  11. package/dist/I18n/locales.js +5 -1
  12. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/agenticUiEmbedUtils.d.ts +5 -1
  13. package/dist/MarkdownEditor/editor/elements/AgenticUiBlocks/agenticUiEmbedUtils.js +10 -2
  14. package/dist/MarkdownEditor/editor/elements/Code/index.js +22 -14
  15. package/dist/MarkdownEditor/editor/parser/constants.d.ts +10 -0
  16. package/dist/MarkdownEditor/editor/parser/constants.js +46 -0
  17. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +3 -1
  18. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +11 -0
  19. package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +6 -4
  20. package/dist/MarkdownEditor/types.d.ts +6 -0
  21. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileIcon.js +3 -1
  22. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +2 -2
  23. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.js +6 -1
  24. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/style.js +11 -1
  25. package/dist/MarkdownInputField/AttachmentButton/index.d.ts +12 -0
  26. package/dist/MarkdownInputField/AttachmentButton/index.js +23 -13
  27. package/dist/MarkdownInputField/FileMapView/FileMapViewItem.js +20 -1
  28. package/dist/MarkdownInputField/FileMapView/index.d.ts +13 -1
  29. package/dist/MarkdownInputField/FileMapView/index.js +57 -18
  30. package/dist/MarkdownInputField/FileMapView/style.js +6 -0
  31. package/dist/MarkdownInputField/FileUploadManager/index.js +4 -26
  32. package/dist/MarkdownInputField/style.js +7 -0
  33. package/dist/MarkdownRenderer/MarkdownRenderer.js +10 -6
  34. package/dist/MarkdownRenderer/index.d.ts +1 -1
  35. package/dist/MarkdownRenderer/renderers/AgenticUiFileMapBlockRenderer.d.ts +4 -2
  36. package/dist/MarkdownRenderer/renderers/AgenticUiFileMapBlockRenderer.js +47 -5
  37. package/dist/MarkdownRenderer/renderers/ChartRenderer.js +9 -0
  38. package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +2 -2
  39. package/dist/MarkdownRenderer/types.d.ts +45 -2
  40. package/dist/MarkdownRenderer/useMarkdownToReact.js +2 -2
  41. package/dist/Plugins/chart/ChartRender.js +30 -9
  42. package/dist/Plugins/chart/DonutChart/index.js +21 -7
  43. package/dist/Plugins/chart/HistogramChart/index.d.ts +5 -1
  44. package/dist/Plugins/chart/HistogramChart/index.js +79 -12
  45. package/dist/Plugins/chart/ScatterChart/index.d.ts +8 -0
  46. package/dist/Plugins/chart/ScatterChart/index.js +78 -8
  47. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.d.ts +4 -0
  48. package/dist/Plugins/code/components/AceEditor.js +69 -8
  49. package/dist/Plugins/code/components/CodeRenderer.js +0 -1
  50. package/dist/Workspace/Browser/index.js +3 -1
  51. package/package.json +1 -1
@@ -305,6 +305,8 @@ import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
305
305
  var debounceTimer = useRef(0);
306
306
  var editorRef = useRef();
307
307
  var dom = useRef(null);
308
+ // 记录 Ace 会话当前使用的语言,用于语言变更时动态切换而不是销毁重建
309
+ var aceLanguageRef = useRef(element.language);
308
310
  // Ace Editor 异步加载状态
309
311
  var _useState = _sliced_to_array(useState(false), 2), aceLoaded = _useState[0], setAceLoaded = _useState[1];
310
312
  var aceModuleRef = useRef(null);
@@ -493,6 +495,8 @@ import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
493
495
  // 初始化 Ace 编辑器(仅在库加载完成后)
494
496
  // 注意: intentionally 不将 editorProps.codeProps 列入依赖,因其对象引用在父组件内容更新时会频繁变化,
495
497
  // 导致编辑器被不必要地销毁重建。codeProps 的配置在初始化时已应用,主题等动态变更由独立 effect 处理。
498
+ // element.language 同样不列为依赖,语言切换由独立的 effect 处理,避免流式渲染中 language
499
+ // 逐字符变化时触发编辑器销毁重建。
496
500
  useEffect(function() {
497
501
  if (process.env.NODE_ENV === 'test') return;
498
502
  if (!aceLoaded || !aceModuleRef.current || !dom.current) return;
@@ -521,6 +525,7 @@ import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
521
525
  showGutter: true
522
526
  }, codeProps));
523
527
  editorRef.current = codeEditor;
528
+ aceLanguageRef.current = element.language;
524
529
  // 设置主题
525
530
  var theme = codeProps.theme || props.theme || 'github';
526
531
  codeEditor.setTheme("ace/theme/".concat(theme));
@@ -551,19 +556,59 @@ import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
551
556
  });
552
557
  })();
553
558
  }, 16);
554
- if (readonly) return;
555
- // 配置编辑器事件
556
- setupEditorEvents(codeEditor);
559
+ if (!readonly) {
560
+ // 配置编辑器事件
561
+ setupEditorEvents(codeEditor);
562
+ }
557
563
  return function() {
558
564
  clearTimeout(debounceTimer.current);
559
565
  codeEditor.destroy();
560
566
  };
567
+ // eslint-disable-next-line react-hooks/exhaustive-deps
561
568
  }, [
562
569
  aceLoaded,
563
- element.language,
564
570
  readonly,
565
571
  setupEditorEvents
566
572
  ]);
573
+ // 语言切换时动态更新 Ace 会话模式,无需销毁重建编辑器
574
+ useEffect(function() {
575
+ if (!editorRef.current || !aceLoaded) return;
576
+ if (aceLanguageRef.current === element.language) return;
577
+ aceLanguageRef.current = element.language;
578
+ (function() {
579
+ return _async_to_generator(function() {
580
+ var lang, aceLangs, _editorRef_current, _editorRef_current1;
581
+ return _ts_generator(this, function(_state) {
582
+ switch(_state.label){
583
+ case 0:
584
+ lang = element.language || '';
585
+ if (modeMap.has(lang)) {
586
+ lang = modeMap.get(lang);
587
+ }
588
+ return [
589
+ 4,
590
+ getAceLangs()
591
+ ];
592
+ case 1:
593
+ aceLangs = _state.sent();
594
+ if (aceLangs.has(lang)) {
595
+ ;
596
+ (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.session.setMode("ace/mode/".concat(lang));
597
+ } else {
598
+ ;
599
+ (_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.session.setMode("ace/mode/text");
600
+ }
601
+ return [
602
+ 2
603
+ ];
604
+ }
605
+ });
606
+ })();
607
+ })();
608
+ }, [
609
+ element.language,
610
+ aceLoaded
611
+ ]);
567
612
  // 监听外部值变化
568
613
  useEffect(function() {
569
614
  var value = element.value || '';
@@ -572,10 +617,26 @@ import { loadAceEditor, loadAceTheme } from "../loadAceEditor";
572
617
  value = JSON.stringify(partialParse(value), null, 2);
573
618
  } catch (e) {}
574
619
  }
575
- if (value !== codeRef.current || readonly) {
576
- var _editorRef_current, _editorRef_current1;
577
- if (element) (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.setValue(value);
578
- (_editorRef_current1 = editorRef.current) === null || _editorRef_current1 === void 0 ? void 0 : _editorRef_current1.clearSelection();
620
+ if (value === codeRef.current) return;
621
+ var editor = editorRef.current;
622
+ var prev = codeRef.current;
623
+ codeRef.current = value;
624
+ if (!editor) return;
625
+ // 流式渲染时内容只会在末尾追加。通过检测 value.startsWith(prev) 来判断是否为纯追加,
626
+ // 若是则调用 session.insert 在末尾插入增量内容,避免 setValue 清空重写导致的闪动。
627
+ var isAppend = value.startsWith(prev);
628
+ if (isAppend) {
629
+ var delta = value.slice(prev.length);
630
+ var doc = editor.session.getDocument();
631
+ var lastRow = doc.getLength() - 1;
632
+ var lastCol = doc.getLine(lastRow).length;
633
+ editor.session.insert({
634
+ row: lastRow,
635
+ column: lastCol
636
+ }, delta);
637
+ } else {
638
+ editor.setValue(value);
639
+ editor.clearSelection();
579
640
  }
580
641
  }, [
581
642
  element.value
@@ -346,7 +346,6 @@ import { AceEditor, AceEditorContainer, CodeContainer, CodeToolbar, HtmlPreview,
346
346
  props.children,
347
347
  state.showBorder,
348
348
  state.hide,
349
- state.htmlStr,
350
349
  isSelected,
351
350
  (_editorProps_codeProps1 = editorProps.codeProps) === null || _editorProps_codeProps1 === void 0 ? void 0 : _editorProps_codeProps1.hideToolBar,
352
351
  (_editorProps_codeProps2 = editorProps.codeProps) === null || _editorProps_codeProps2 === void 0 ? void 0 : _editorProps_codeProps2.disableHtmlPreview,
@@ -151,14 +151,16 @@ export var BrowserItemComponent = function BrowserItemComponent(param) {
151
151
  var _useBrowserContext = useBrowserContext(), prefixCls = _useBrowserContext.prefixCls, wrapSSR = _useBrowserContext.wrapSSR, hashId = _useBrowserContext.hashId;
152
152
  var locale = useContext(I18nContext).locale;
153
153
  var handleOpen = function handleOpen(e) {
154
+ e.preventDefault();
155
+ e.stopPropagation();
154
156
  if (onOpen) {
155
- e.preventDefault();
156
157
  onOpen(item);
157
158
  return;
158
159
  }
159
160
  window.open(item.url, '_blank', 'noopener,noreferrer');
160
161
  };
161
162
  var handleLocate = function handleLocate(e) {
163
+ e.preventDefault();
162
164
  e.stopPropagation();
163
165
  onLocate === null || onLocate === void 0 ? void 0 : onLocate(item);
164
166
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ant-design/agentic-ui",
3
- "version": "2.30.12",
3
+ "version": "2.30.14",
4
4
  "description": "面向智能体的 UI 组件库,提供多步推理可视化、工具调用展示、任务执行协同等 Agentic UI 能力",
5
5
  "repository": "git@github.com:ant-design/agentic-ui.git",
6
6
  "license": "MIT",