@ant-design/agentic-ui 2.14.0 → 2.16.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/List/PureBubbleList.js +1 -1
- package/dist/Bubble/MessagesContent/EXCEPTION.js +1 -1
- package/dist/ChatLayout/style.js +16 -17
- package/dist/Constants/mobile.d.ts +3 -0
- package/dist/Constants/mobile.js +7 -0
- package/dist/Hooks/useLanguage.d.ts +2 -0
- package/dist/I18n/locales.d.ts +2 -0
- package/dist/I18n/locales.js +4 -0
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +1 -1
- package/dist/MarkdownEditor/editor/Editor.js +16 -8
- package/dist/MarkdownEditor/editor/code.css +2 -2
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition.js +2 -1
- package/dist/MarkdownEditor/editor/elements/FootnoteReference.js +2 -1
- package/dist/MarkdownEditor/editor/elements/Head.d.ts +1 -0
- package/dist/MarkdownEditor/editor/elements/Head.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Image/index.js +19 -7
- package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +2 -1
- package/dist/MarkdownEditor/editor/elements/LinkCard/style.js +1 -1
- package/dist/MarkdownEditor/editor/elements/List/ListItem.js +1 -0
- package/dist/MarkdownEditor/editor/elements/List/style.js +2 -2
- package/dist/MarkdownEditor/editor/elements/Media.js +22 -10
- package/dist/MarkdownEditor/editor/elements/Paragraph.js +2 -1
- package/dist/MarkdownEditor/editor/elements/Schema.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +1 -1
- package/dist/MarkdownEditor/editor/elements/Table/Table.js +25 -16
- package/dist/MarkdownEditor/editor/elements/Table/Td/style.js +5 -2
- package/dist/MarkdownEditor/editor/elements/Table/index.js +0 -2
- package/dist/MarkdownEditor/editor/elements/Table/style.js +7 -8
- package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +5 -3
- package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +2 -2
- package/dist/MarkdownEditor/editor/plugins/useKeyboard.js +8 -19
- package/dist/MarkdownEditor/editor/store.js +3 -3
- package/dist/MarkdownEditor/editor/style.js +41 -6
- package/dist/MarkdownEditor/editor/tools/DragHandle.js +3 -3
- package/dist/MarkdownEditor/style.js +8 -2
- package/dist/MarkdownEditor/types.d.ts +1 -1
- package/dist/MarkdownEditor/utils/exportHtml.js +1 -1
- package/dist/MarkdownInputField/MarkdownInputField.d.ts +7 -7
- package/dist/MarkdownInputField/MarkdownInputField.js +11 -35
- package/dist/MarkdownInputField/SendButton/index.js +17 -3
- package/dist/MarkdownInputField/style.js +25 -3
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundaryExample.js +1 -1
- package/dist/Plugins/chart/index.js +2 -2
- package/dist/Plugins/code/components/CodeContainer.js +2 -3
- package/dist/Plugins/katex/InlineKatex.js +1 -1
- package/dist/Plugins/katex/Katex.js +1 -1
- package/dist/Plugins/mermaid/index.js +1 -1
- package/dist/ThoughtChainList/index.js +21 -2
- package/dist/ThoughtChainList/style.js +1 -0
- package/dist/Utils/loadCSS.js +6 -6
- package/dist/WelcomeMessage/index.js +21 -2
- package/dist/Workspace/Task/index.js +1 -1
- package/package.json +1 -1
|
@@ -199,14 +199,12 @@ export var tableRenderElement = function(props, config) {
|
|
|
199
199
|
case 'header-cell':
|
|
200
200
|
return /*#__PURE__*/ React.createElement(ThWrapper, _object_spread({
|
|
201
201
|
style: {
|
|
202
|
-
padding: '8px',
|
|
203
202
|
verticalAlign: 'middle'
|
|
204
203
|
}
|
|
205
204
|
}, props));
|
|
206
205
|
case 'table-cell':
|
|
207
206
|
return /*#__PURE__*/ React.createElement(TdWrapper, _object_spread({
|
|
208
207
|
style: {
|
|
209
|
-
padding: '8px',
|
|
210
208
|
verticalAlign: 'middle'
|
|
211
209
|
}
|
|
212
210
|
}, props));
|
|
@@ -50,10 +50,13 @@ function _object_spread_props(target, source) {
|
|
|
50
50
|
}
|
|
51
51
|
return target;
|
|
52
52
|
}
|
|
53
|
+
import { MOBILE_BREAKPOINT, MOBILE_PADDING } from "../../../../Constants/mobile";
|
|
53
54
|
import { resetComponent, useEditorStyleRegister } from "../../../../Hooks/useStyle";
|
|
54
55
|
var genStyle = function(token) {
|
|
55
56
|
var _obj;
|
|
56
57
|
return _define_property({}, token.componentCls, {
|
|
58
|
+
width: '100%',
|
|
59
|
+
overflow: 'auto',
|
|
57
60
|
'--table-border-radius': '8px',
|
|
58
61
|
'--table-border-color': '#E7E9E8',
|
|
59
62
|
'--table-header-bg': '#f7f7f9',
|
|
@@ -94,7 +97,6 @@ var genStyle = function(token) {
|
|
|
94
97
|
table: (_obj = {
|
|
95
98
|
borderCollapse: 'separate',
|
|
96
99
|
borderSpacing: 0,
|
|
97
|
-
display: 'block',
|
|
98
100
|
width: '100%',
|
|
99
101
|
tableLayout: 'fixed',
|
|
100
102
|
margin: '16px 0',
|
|
@@ -123,13 +125,6 @@ var genStyle = function(token) {
|
|
|
123
125
|
'tr:not(.config-tr):last-child td:last-child:not(.config-td):not([colspan]):not([rowspan]), tr:not(.config-tr):last-child th:last-child:not(.config-td):not([colspan]):not([rowspan])': {
|
|
124
126
|
borderBottomRightRadius: 'unset'
|
|
125
127
|
}
|
|
126
|
-
}), // 表格主体和表头使用 table 布局
|
|
127
|
-
_define_property(_obj, 'tbody, thead', {
|
|
128
|
-
display: 'table',
|
|
129
|
-
width: '100%',
|
|
130
|
-
tableLayout: 'fixed',
|
|
131
|
-
position: 'relative',
|
|
132
|
-
background: 'inherit'
|
|
133
128
|
}), _define_property(_obj, 'th.config-th,td.config-td', {
|
|
134
129
|
borderBottom: '1px solid var(--table-border-color)',
|
|
135
130
|
borderLeft: '1px solid var(--table-border-color)'
|
|
@@ -226,6 +221,10 @@ var genStyle = function(token) {
|
|
|
226
221
|
_define_property(_obj, 'th:not(.config-td)[rowspan]:first-child:last-child, td:not(.config-td)[rowspan]:first-child:last-child', {
|
|
227
222
|
borderTopLeftRadius: 'var(--table-border-radius)',
|
|
228
223
|
borderBottomLeftRadius: 'var(--table-border-radius)'
|
|
224
|
+
}), _define_property(_obj, "@media (max-width: ".concat(MOBILE_BREAKPOINT, ")"), {
|
|
225
|
+
'th:not(.config-td), td:not(.config-td)': {
|
|
226
|
+
padding: "".concat(MOBILE_PADDING)
|
|
227
|
+
}
|
|
229
228
|
}), _obj),
|
|
230
229
|
'table.htCore': {
|
|
231
230
|
boxSizing: 'content-box',
|
|
@@ -314,12 +314,12 @@ var initializeAutoOpen = function(autoOpen, type, setOpen, suggestionConnext) {
|
|
|
314
314
|
var handleMouseEnter = function(domRef) {
|
|
315
315
|
var target = domRef.current;
|
|
316
316
|
if (!target) return;
|
|
317
|
-
target.
|
|
317
|
+
target.removeAttribute('data-no-focus');
|
|
318
318
|
};
|
|
319
319
|
var handleMouseLeave = function(domRef) {
|
|
320
320
|
var target = domRef.current;
|
|
321
321
|
if (!target) return;
|
|
322
|
-
target.
|
|
322
|
+
target.setAttribute('data-no-focus', '');
|
|
323
323
|
};
|
|
324
324
|
var createDefaultDom = function(domRef, baseCls, hashId, loading, selectedItems, children, text, placeholder, isOpen) {
|
|
325
325
|
var isEmpty = !(text === null || text === void 0 ? void 0 : text.trim());
|
|
@@ -327,7 +327,9 @@ var createDefaultDom = function(domRef, baseCls, hashId, loading, selectedItems,
|
|
|
327
327
|
var _obj;
|
|
328
328
|
return /*#__PURE__*/ React.createElement("div", {
|
|
329
329
|
ref: domRef,
|
|
330
|
-
|
|
330
|
+
"data-tag-popup-input": true,
|
|
331
|
+
"data-no-focus": true,
|
|
332
|
+
className: classNames("".concat(baseCls, "-tag-popup-input"), hashId, (_obj = {
|
|
331
333
|
empty: isEmpty
|
|
332
334
|
}, _define_property(_obj, "".concat(baseCls, "-tag-popup-input-loading"), loading), _define_property(_obj, "".concat(baseCls, "-tag-popup-input-has-arrow"), hasItems), _obj)),
|
|
333
335
|
onMouseEnter: function() {
|
|
@@ -62,8 +62,8 @@ var genStyle = function(token) {
|
|
|
62
62
|
color: 'var(--color-primary-text-secondary)',
|
|
63
63
|
borderRadius: 'var(--radius-control-sm)',
|
|
64
64
|
background: 'var(--color-primary-bg-tip)',
|
|
65
|
-
'
|
|
66
|
-
'&:not(
|
|
65
|
+
'[data-tag-popup-input]': {
|
|
66
|
+
'&:not([data-composition]).empty::before': {
|
|
67
67
|
color: 'var(--color-primary-text-disabled)',
|
|
68
68
|
content: 'attr(title)',
|
|
69
69
|
userSelect: 'none',
|
|
@@ -101,7 +101,7 @@ import { useEditorStore } from "../store";
|
|
|
101
101
|
var enter = new EnterKey(store, backspace);
|
|
102
102
|
var match = new MatchKey(markdownEditorRef.current);
|
|
103
103
|
return function(e) {
|
|
104
|
-
var _props_markdown,
|
|
104
|
+
var _props_markdown, _node_;
|
|
105
105
|
// 处理表格键盘事件
|
|
106
106
|
if (NativeTableKeyboard.shouldHandle(markdownEditorRef.current)) {
|
|
107
107
|
if (NativeTableKeyboard.handleKeyDown(markdownEditorRef.current, e.nativeEvent)) {
|
|
@@ -190,27 +190,16 @@ import { useEditorStore } from "../store";
|
|
|
190
190
|
return;
|
|
191
191
|
}
|
|
192
192
|
if (e.key === 'Tab') tab.run(e);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
e.stopPropagation();
|
|
196
|
-
e.preventDefault();
|
|
197
|
-
enter.run(e);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
if (((_props_textAreaProps1 = props.textAreaProps) === null || _props_textAreaProps1 === void 0 ? void 0 : _props_textAreaProps1.triggerSendKey) === 'Mod+Enter') {
|
|
203
|
-
if (e.key === 'Enter' && !(e.ctrlKey || e.metaKey)) {
|
|
204
|
-
e.stopPropagation();
|
|
205
|
-
e.preventDefault();
|
|
206
|
-
enter.run(e);
|
|
207
|
-
}
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
if (e.key === 'Enter' && !(e.ctrlKey || e.metaKey)) {
|
|
193
|
+
// Enter 发送,Shift+Enter 换行
|
|
194
|
+
if (e.key === 'Enter' && e.shiftKey && !(e.ctrlKey || e.metaKey)) {
|
|
211
195
|
e.stopPropagation();
|
|
212
196
|
e.preventDefault();
|
|
213
197
|
enter.run(e);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Enter 键(无 Shift)由 MarkdownInputField 处理发送,这里不处理
|
|
201
|
+
if (e.key === 'Enter' && !(e.ctrlKey || e.metaKey) && !e.shiftKey) {
|
|
202
|
+
return;
|
|
214
203
|
}
|
|
215
204
|
var _Editor_nodes1 = _sliced_to_array(Editor.nodes(markdownEditorRef.current, {
|
|
216
205
|
match: function(n) {
|
|
@@ -1606,9 +1606,9 @@ export var EditorStoreContext = createContext(null);
|
|
|
1606
1606
|
var el = _step.value;
|
|
1607
1607
|
var _this_draggedElement1;
|
|
1608
1608
|
if (!ableToEnter.has(el.dataset.be)) continue;
|
|
1609
|
-
if (el.
|
|
1609
|
+
if (el.hasAttribute('data-frontmatter')) continue;
|
|
1610
1610
|
var pre = el.previousSibling;
|
|
1611
|
-
if (el.dataset.be === 'paragraph' && ((_this_draggedElement1 = this.draggedElement) === null || _this_draggedElement1 === void 0 ? void 0 : _this_draggedElement1.dataset.be) === 'list-item' && (!pre || pre.
|
|
1611
|
+
if (el.dataset.be === 'paragraph' && ((_this_draggedElement1 = this.draggedElement) === null || _this_draggedElement1 === void 0 ? void 0 : _this_draggedElement1.dataset.be) === 'list-item' && (!pre || pre.hasAttribute('data-check-item'))) {
|
|
1612
1612
|
continue;
|
|
1613
1613
|
}
|
|
1614
1614
|
if (el === this.draggedElement) continue;
|
|
@@ -1679,7 +1679,7 @@ export var EditorStoreContext = createContext(null);
|
|
|
1679
1679
|
var width = last.el.dataset.be === 'list-item' ? last.el.clientWidth + 20 + 'px' : last.el.clientWidth + 'px';
|
|
1680
1680
|
if (!mark) {
|
|
1681
1681
|
mark = document.createElement('div');
|
|
1682
|
-
mark.
|
|
1682
|
+
mark.setAttribute('data-move-mark', '');
|
|
1683
1683
|
mark.style.width = width;
|
|
1684
1684
|
mark.style.height = '2px';
|
|
1685
1685
|
mark.style.transform = "translate(".concat(last.left - rect.left - scrollLeft, "px, ").concat(last.top - rect.top - scrollTop, "px)");
|
|
@@ -51,6 +51,7 @@ function _object_spread_props(target, source) {
|
|
|
51
51
|
return target;
|
|
52
52
|
}
|
|
53
53
|
import { Keyframes } from "@ant-design/cssinjs";
|
|
54
|
+
import { MOBILE_BREAKPOINT } from "../../Constants/mobile";
|
|
54
55
|
import { resetComponent, useEditorStyleRegister } from "../../Hooks/useStyle";
|
|
55
56
|
import "./code.css";
|
|
56
57
|
// 导入统一的标签样式配置
|
|
@@ -80,7 +81,7 @@ var genStyle = function(token) {
|
|
|
80
81
|
var _obj;
|
|
81
82
|
return _obj = {
|
|
82
83
|
// 拖拽手柄样式
|
|
83
|
-
'
|
|
84
|
+
'[data-drag-handle]': {
|
|
84
85
|
position: 'absolute',
|
|
85
86
|
display: 'flex',
|
|
86
87
|
userSelect: 'none',
|
|
@@ -93,7 +94,7 @@ var genStyle = function(token) {
|
|
|
93
94
|
top: 'calc(3px + 0.75em - 14px)'
|
|
94
95
|
},
|
|
95
96
|
// 拖拽图标样式
|
|
96
|
-
'
|
|
97
|
+
'[data-drag-icon]': {
|
|
97
98
|
display: 'flex',
|
|
98
99
|
alignItems: 'center',
|
|
99
100
|
borderRadius: '18px',
|
|
@@ -106,7 +107,7 @@ var genStyle = function(token) {
|
|
|
106
107
|
}
|
|
107
108
|
},
|
|
108
109
|
// 拖拽元素悬浮效果
|
|
109
|
-
'
|
|
110
|
+
'[data-drag-el]:hover > [data-drag-handle]': {
|
|
110
111
|
opacity: 1
|
|
111
112
|
},
|
|
112
113
|
// 可调整大小组件样式
|
|
@@ -144,7 +145,7 @@ var genStyle = function(token) {
|
|
|
144
145
|
pointerEvents: 'all'
|
|
145
146
|
},
|
|
146
147
|
// 移动标记样式
|
|
147
|
-
'
|
|
148
|
+
'[data-move-mark]': {
|
|
148
149
|
height: '0.125em',
|
|
149
150
|
backgroundColor: 'var(--color-primary-control-fill-primary)',
|
|
150
151
|
left: 0,
|
|
@@ -156,7 +157,7 @@ var genStyle = function(token) {
|
|
|
156
157
|
transitionDuration: '200ms'
|
|
157
158
|
},
|
|
158
159
|
// 隐藏样式
|
|
159
|
-
'
|
|
160
|
+
'[data-hidden]': {
|
|
160
161
|
display: 'none'
|
|
161
162
|
},
|
|
162
163
|
// KaTeX容器样式
|
|
@@ -275,7 +276,7 @@ var genStyle = function(token) {
|
|
|
275
276
|
'h1,h2,h3,h4,h5,h6': {
|
|
276
277
|
position: 'relative',
|
|
277
278
|
textWrap: 'balance',
|
|
278
|
-
'
|
|
279
|
+
'[data-drag-handle]': {
|
|
279
280
|
top: 'calc(3px + 0.05em) !important'
|
|
280
281
|
}
|
|
281
282
|
},
|
|
@@ -424,6 +425,34 @@ var genStyle = function(token) {
|
|
|
424
425
|
},
|
|
425
426
|
'ol,ul': {
|
|
426
427
|
paddingLeft: '1em'
|
|
428
|
+
},
|
|
429
|
+
// 移动端图片和视频响应式样式
|
|
430
|
+
'[data-be="image"], [data-be="media"]': {
|
|
431
|
+
width: '100%',
|
|
432
|
+
maxWidth: '100%',
|
|
433
|
+
boxSizing: 'border-box',
|
|
434
|
+
overflow: 'hidden',
|
|
435
|
+
'[data-be="media-container"]': {
|
|
436
|
+
width: '100%',
|
|
437
|
+
maxWidth: '100%',
|
|
438
|
+
padding: '2px',
|
|
439
|
+
boxSizing: 'border-box'
|
|
440
|
+
},
|
|
441
|
+
'img, video': {
|
|
442
|
+
maxWidth: '100%',
|
|
443
|
+
height: 'auto',
|
|
444
|
+
display: 'block'
|
|
445
|
+
},
|
|
446
|
+
'[data-testid="resize-image-container"]': {
|
|
447
|
+
maxWidth: '100%',
|
|
448
|
+
width: '100% !important',
|
|
449
|
+
boxSizing: 'border-box'
|
|
450
|
+
},
|
|
451
|
+
'[data-testid="video-element"]': {
|
|
452
|
+
maxWidth: '100%',
|
|
453
|
+
width: '100% !important',
|
|
454
|
+
height: 'auto'
|
|
455
|
+
}
|
|
427
456
|
}
|
|
428
457
|
},
|
|
429
458
|
'[data-be]:not(p):not(data-be="list")': {
|
|
@@ -521,6 +550,12 @@ var genStyle = function(token) {
|
|
|
521
550
|
marginTop: '0.3em',
|
|
522
551
|
marginBottom: '0.3em'
|
|
523
552
|
}
|
|
553
|
+
}), _define_property(_obj, "@media (max-width: ".concat(MOBILE_BREAKPOINT, ")"), {
|
|
554
|
+
'div[data-be="paragraph"]': {
|
|
555
|
+
fontSize: '0.95em',
|
|
556
|
+
lineHeight: '1.4em',
|
|
557
|
+
margin: 'var(--margin-1x) 0'
|
|
558
|
+
}
|
|
524
559
|
}), _obj;
|
|
525
560
|
};
|
|
526
561
|
var genSlideStyle = function(token) {
|
|
@@ -40,7 +40,7 @@ export var DragHandle = function(props) {
|
|
|
40
40
|
return /*#__PURE__*/ React.createElement(Tooltip, {
|
|
41
41
|
title: "拖拽移动"
|
|
42
42
|
}, /*#__PURE__*/ React.createElement("span", {
|
|
43
|
-
|
|
43
|
+
"data-drag-handle": true,
|
|
44
44
|
"data-testid": "drag-handle",
|
|
45
45
|
style: _object_spread({}, props.style),
|
|
46
46
|
contentEditable: false,
|
|
@@ -49,7 +49,7 @@ export var DragHandle = function(props) {
|
|
|
49
49
|
var _parent_parentElement;
|
|
50
50
|
var parent = ref.current.parentElement;
|
|
51
51
|
if (((_parent_parentElement = parent.parentElement) === null || _parent_parentElement === void 0 ? void 0 : _parent_parentElement.dataset.be) === 'list-item') {
|
|
52
|
-
if (!parent.previousSibling || parent.previousSibling.
|
|
52
|
+
if (!parent.previousSibling || parent.previousSibling.hasAttribute('data-check-item')) {
|
|
53
53
|
parent = parent.parentElement;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -58,6 +58,6 @@ export var DragHandle = function(props) {
|
|
|
58
58
|
store.draggedElement = parent;
|
|
59
59
|
}
|
|
60
60
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
61
|
-
|
|
61
|
+
"data-drag-icon": true
|
|
62
62
|
}, /*#__PURE__*/ React.createElement(HolderOutlined, null))));
|
|
63
63
|
};
|
|
@@ -50,6 +50,7 @@ function _object_spread_props(target, source) {
|
|
|
50
50
|
}
|
|
51
51
|
return target;
|
|
52
52
|
}
|
|
53
|
+
import { MOBILE_BREAKPOINT } from "../Constants/mobile";
|
|
53
54
|
import { resetComponent, useEditorStyleRegister } from "../Hooks/useStyle";
|
|
54
55
|
var genStyle = function(token) {
|
|
55
56
|
return _define_property({}, token.componentCls, {
|
|
@@ -67,7 +68,7 @@ var genStyle = function(token) {
|
|
|
67
68
|
scrollbarColor: 'hsl(240 5.9% 90%) transparent',
|
|
68
69
|
boxSizing: 'border-box'
|
|
69
70
|
},
|
|
70
|
-
'div
|
|
71
|
+
'div[data-composition] div:not([data-no-focus]).empty:first-child::before': {
|
|
71
72
|
display: 'none'
|
|
72
73
|
},
|
|
73
74
|
'> *': {
|
|
@@ -81,7 +82,12 @@ var genStyle = function(token) {
|
|
|
81
82
|
},
|
|
82
83
|
'&-edit-area': {
|
|
83
84
|
outline: 'none !important'
|
|
84
|
-
}
|
|
85
|
+
},
|
|
86
|
+
'&-content': _define_property({
|
|
87
|
+
padding: '4px 20px'
|
|
88
|
+
}, "@media (max-width: ".concat(MOBILE_BREAKPOINT, ")"), {
|
|
89
|
+
padding: '4px 4px'
|
|
90
|
+
})
|
|
85
91
|
});
|
|
86
92
|
};
|
|
87
93
|
/**
|
|
@@ -4,10 +4,10 @@ import React from 'react';
|
|
|
4
4
|
import { BaseEditor, Selection } from 'slate';
|
|
5
5
|
import { HistoryEditor } from 'slate-history';
|
|
6
6
|
import { ReactEditor, RenderElementProps } from 'slate-react';
|
|
7
|
-
import type { MarkdownToHtmlOptions } from './editor/utils/markdownToHtml';
|
|
8
7
|
import { TagPopupProps } from './editor/elements/TagPopup';
|
|
9
8
|
import { EditorStore } from './editor/store';
|
|
10
9
|
import { InsertAutocompleteProps } from './editor/tools/InsertAutocomplete';
|
|
10
|
+
import type { MarkdownToHtmlOptions } from './editor/utils/markdownToHtml';
|
|
11
11
|
import { CustomLeaf, Elements } from './el';
|
|
12
12
|
/**
|
|
13
13
|
* @typedef CommentDataType
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @returns A complete HTML document as a string
|
|
8
8
|
*/ export var generateHtmlDocument = function(content) {
|
|
9
9
|
var title = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'Markdown Export', styles = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';
|
|
10
|
-
return '<!DOCTYPE html>\n<html>\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>'.concat(title, "</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n line-height: 1.6;\n padding:
|
|
10
|
+
return '<!DOCTYPE html>\n<html>\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>'.concat(title, "</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n line-height: 1.6;\n padding: 12px;\n max-width: 900px;\n margin: 0 auto;\n color: #333;\n }\n pre {\n background-color: #f6f8fa;\n border-radius: 3px;\n padding: 16px;\n overflow: auto;\n }\n code {\n background-color: rgba(27, 31, 35, 0.05);\n border-radius: 3px;\n padding: 0.2em 0.4em;\n font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;\n }\n blockquote {\n border-left: 4px solid #ddd;\n padding-left: 16px;\n margin-left: 0;\n color: #666;\n }\n img {\n max-width: 100%;\n }\n table {\n border-collapse: collapse;\n width: 100%;\n margin-bottom: 16px;\n }\n table, th, td {\n border: 1px solid #ddd;\n }\n th, td {\n padding: 8px;\n text-align: left;\n vertical-align: middle;\n }\n th {\n background-color: #f6f8fa;\n }\n @media screen and (max-width: 768px) {\n th, td {\n padding: 2px;\n }\n }\n ").concat(styles, "\n </style>\n</head>\n<body>\n ").concat(content, "\n</body>\n</html>");
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
13
|
* Export HTML content to a file
|
|
@@ -14,7 +14,7 @@ import type { CreateRecognizer } from './VoiceInput';
|
|
|
14
14
|
* @property {string} [className] - 应用于输入字段的 CSS 类名
|
|
15
15
|
* @property {boolean} [disabled] - 是否禁用输入字段
|
|
16
16
|
* @property {boolean} [typing] - 用户是否正在输入的状态标志
|
|
17
|
-
* @property {'Enter'
|
|
17
|
+
* @property {'Enter'} [triggerSendKey] - 触发发送操作的键盘快捷键(Enter 发送,Shift+Enter 换行)
|
|
18
18
|
* @property {function} [onSend] - 当内容发送时触发的异步回调函数
|
|
19
19
|
*/
|
|
20
20
|
export type MarkdownInputFieldProps = {
|
|
@@ -56,11 +56,11 @@ export type MarkdownInputFieldProps = {
|
|
|
56
56
|
typing?: boolean;
|
|
57
57
|
/**
|
|
58
58
|
* 触发发送操作的键盘快捷键。
|
|
59
|
-
* - 'Enter':
|
|
60
|
-
*
|
|
61
|
-
* @example triggerSendKey="
|
|
59
|
+
* - 'Enter': 回车键触发发送,Shift+Enter 换行
|
|
60
|
+
* @deprecated 此属性已废弃,现在固定使用 Enter 发送,Shift+Enter 换行
|
|
61
|
+
* @example triggerSendKey="Enter"
|
|
62
62
|
*/
|
|
63
|
-
triggerSendKey?: 'Enter'
|
|
63
|
+
triggerSendKey?: 'Enter';
|
|
64
64
|
/**
|
|
65
65
|
* 当内容发送时触发的异步回调函数。
|
|
66
66
|
* 返回一个 Promise 对象,当发送成功后 resolve。
|
|
@@ -429,7 +429,7 @@ export type MarkdownInputFieldProps = {
|
|
|
429
429
|
* @param {(value: string) => void} [props.onChange] - 值变化时的回调
|
|
430
430
|
* @param {(value: string) => Promise<void>} [props.onSend] - 发送消息的回调
|
|
431
431
|
* @param {string} [props.placeholder] - 占位符文本
|
|
432
|
-
* @param {string} [props.triggerSendKey='
|
|
432
|
+
* @param {string} [props.triggerSendKey='Enter'] - 触发发送的快捷键(Enter 发送,Shift+Enter 换行)
|
|
433
433
|
* @param {boolean} [props.disabled] - 是否禁用
|
|
434
434
|
* @param {boolean} [props.typing] - 是否正在输入
|
|
435
435
|
* @param {AttachmentProps} [props.attachment] - 附件配置
|
|
@@ -445,7 +445,7 @@ export type MarkdownInputFieldProps = {
|
|
|
445
445
|
* onChange={(value) => console.log(value)}
|
|
446
446
|
* onSend={(value) => Promise.resolve()}
|
|
447
447
|
* placeholder="请输入Markdown文本..."
|
|
448
|
-
* triggerSendKey="
|
|
448
|
+
* triggerSendKey="Enter"
|
|
449
449
|
* />
|
|
450
450
|
* ```
|
|
451
451
|
*
|
|
@@ -277,7 +277,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
|
|
|
277
277
|
* @param {(value: string) => void} [props.onChange] - 值变化时的回调
|
|
278
278
|
* @param {(value: string) => Promise<void>} [props.onSend] - 发送消息的回调
|
|
279
279
|
* @param {string} [props.placeholder] - 占位符文本
|
|
280
|
-
* @param {string} [props.triggerSendKey='
|
|
280
|
+
* @param {string} [props.triggerSendKey='Enter'] - 触发发送的快捷键(Enter 发送,Shift+Enter 换行)
|
|
281
281
|
* @param {boolean} [props.disabled] - 是否禁用
|
|
282
282
|
* @param {boolean} [props.typing] - 是否正在输入
|
|
283
283
|
* @param {AttachmentProps} [props.attachment] - 附件配置
|
|
@@ -293,7 +293,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
|
|
|
293
293
|
* onChange={(value) => console.log(value)}
|
|
294
294
|
* onSend={(value) => Promise.resolve()}
|
|
295
295
|
* placeholder="请输入Markdown文本..."
|
|
296
|
-
* triggerSendKey="
|
|
296
|
+
* triggerSendKey="Enter"
|
|
297
297
|
* />
|
|
298
298
|
* ```
|
|
299
299
|
*
|
|
@@ -638,26 +638,16 @@ import { useVoiceInputManager } from "./VoiceInputManager";
|
|
|
638
638
|
// 键盘事件:早返回减少嵌套
|
|
639
639
|
var handleKeyDown = useRefFunction(function(e) {
|
|
640
640
|
var _markdownEditorRef_current;
|
|
641
|
-
var triggerSendKey = props.triggerSendKey || 'Enter';
|
|
642
641
|
if (markdownEditorRef === null || markdownEditorRef === void 0 ? void 0 : (_markdownEditorRef_current = markdownEditorRef.current) === null || _markdownEditorRef_current === void 0 ? void 0 : _markdownEditorRef_current.store.inputComposition) return;
|
|
643
642
|
var isEnter = e.key === 'Enter';
|
|
644
643
|
var isMod = e.ctrlKey || e.metaKey;
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
if (triggerSendKey === 'Mod+Enter') {
|
|
653
|
-
if (!(isEnter && isMod)) return;
|
|
654
|
-
e.stopPropagation();
|
|
655
|
-
e.preventDefault();
|
|
656
|
-
// 防止重复触发:检查是否已经在加载中
|
|
657
|
-
if (props.onSend && !isLoading && !props.disabled && !props.typing) {
|
|
658
|
-
sendMessage();
|
|
659
|
-
}
|
|
660
|
-
}
|
|
644
|
+
var isShift = e.shiftKey;
|
|
645
|
+
// Enter 发送,Shift+Enter 换行
|
|
646
|
+
if (!isEnter || isMod) return;
|
|
647
|
+
if (isShift) return; // Shift+Enter 时让编辑器处理换行
|
|
648
|
+
e.stopPropagation();
|
|
649
|
+
e.preventDefault();
|
|
650
|
+
if (props.onSend) sendMessage();
|
|
661
651
|
});
|
|
662
652
|
// 预计算:SendActions 节点,统一渲染,避免重复 JSX
|
|
663
653
|
var sendActionsNode = /*#__PURE__*/ React.createElement(SendActions, {
|
|
@@ -773,8 +763,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
|
|
|
773
763
|
},
|
|
774
764
|
textAreaProps: {
|
|
775
765
|
enable: true,
|
|
776
|
-
placeholder: props.placeholder
|
|
777
|
-
triggerSendKey: props.triggerSendKey || 'Enter'
|
|
766
|
+
placeholder: props.placeholder
|
|
778
767
|
},
|
|
779
768
|
tagInputProps: _object_spread({
|
|
780
769
|
enable: true,
|
|
@@ -814,20 +803,7 @@ import { useVoiceInputManager } from "./VoiceInputManager";
|
|
|
814
803
|
toc: false,
|
|
815
804
|
pasteConfig: props.pasteConfig
|
|
816
805
|
}, markdownProps)))), props.toolsRender ? /*#__PURE__*/ React.createElement("div", {
|
|
817
|
-
|
|
818
|
-
backgroundColor: '#fff',
|
|
819
|
-
display: 'flex',
|
|
820
|
-
boxSizing: 'border-box',
|
|
821
|
-
borderRadius: 'inherit',
|
|
822
|
-
flexDirection: 'row',
|
|
823
|
-
alignItems: 'center',
|
|
824
|
-
justifyContent: 'space-between',
|
|
825
|
-
gap: 8,
|
|
826
|
-
width: '100%',
|
|
827
|
-
paddingRight: 'var(--padding-3x)',
|
|
828
|
-
paddingLeft: 'var(--padding-3x)',
|
|
829
|
-
paddingBottom: 'var(--padding-3x)'
|
|
830
|
-
}
|
|
806
|
+
className: classNames("".concat(baseCls, "-tools-wrapper"), hashId)
|
|
831
807
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
832
808
|
ref: actionsRef,
|
|
833
809
|
contentEditable: false,
|
|
@@ -53,12 +53,13 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
53
53
|
}
|
|
54
54
|
return target;
|
|
55
55
|
}
|
|
56
|
-
import { ConfigProvider } from "antd";
|
|
56
|
+
import { ConfigProvider, Tooltip } from "antd";
|
|
57
57
|
import classNames from "classnames";
|
|
58
58
|
import { motion } from "framer-motion";
|
|
59
59
|
import React, { useContext, useEffect } from "react";
|
|
60
60
|
import { ErrorBoundary } from "react-error-boundary";
|
|
61
61
|
import { StopIcon } from "../../AgentRunBar/icons";
|
|
62
|
+
import { I18nContext } from "../../I18n";
|
|
62
63
|
import { useStyle } from "./style";
|
|
63
64
|
function SendIcon(props) {
|
|
64
65
|
var hover = props.hover, typing = props.typing, onInit = props.onInit, rest = _object_without_properties(props, [
|
|
@@ -145,14 +146,27 @@ function SendIcon(props) {
|
|
|
145
146
|
(_props_onInit = props.onInit) === null || _props_onInit === void 0 ? void 0 : _props_onInit.call(props);
|
|
146
147
|
}, []);
|
|
147
148
|
var getPrefixCls = useContext(ConfigProvider.ConfigContext).getPrefixCls;
|
|
149
|
+
var locale = useContext(I18nContext).locale;
|
|
148
150
|
var baseCls = getPrefixCls('agentic-md-input-field-send-button');
|
|
149
151
|
var _useStyle = useStyle(baseCls), wrapSSR = _useStyle.wrapSSR, hashId = _useStyle.hashId;
|
|
150
152
|
if (typeof window === 'undefined' || typeof document === 'undefined' || !window.document) {
|
|
151
153
|
// SSR 环境下不渲染
|
|
152
154
|
return null;
|
|
153
155
|
}
|
|
156
|
+
var sendText = (locale === null || locale === void 0 ? void 0 : locale['input.sendButtonTooltip.send']) || '按 Enter 键发送';
|
|
157
|
+
var newlineText = (locale === null || locale === void 0 ? void 0 : locale['input.sendButtonTooltip.newline']) || '按 Shift+Enter 键换行';
|
|
158
|
+
var tooltipTitle = /*#__PURE__*/ React.createElement("div", {
|
|
159
|
+
style: {
|
|
160
|
+
lineHeight: '1.5',
|
|
161
|
+
textAlign: 'left'
|
|
162
|
+
}
|
|
163
|
+
}, /*#__PURE__*/ React.createElement("div", null, sendText), /*#__PURE__*/ React.createElement("div", null, newlineText));
|
|
154
164
|
var _obj;
|
|
155
|
-
return wrapSSR(/*#__PURE__*/ React.createElement(
|
|
165
|
+
return wrapSSR(/*#__PURE__*/ React.createElement(Tooltip, {
|
|
166
|
+
arrow: false,
|
|
167
|
+
title: tooltipTitle,
|
|
168
|
+
mouseEnterDelay: 0.5
|
|
169
|
+
}, /*#__PURE__*/ React.createElement("div", {
|
|
156
170
|
"data-testid": "send-button",
|
|
157
171
|
onClick: function() {
|
|
158
172
|
if (!disabled) {
|
|
@@ -176,5 +190,5 @@ function SendIcon(props) {
|
|
|
176
190
|
hover: isSendable && !disabled,
|
|
177
191
|
disabled: disabled,
|
|
178
192
|
typing: typing
|
|
179
|
-
}))));
|
|
193
|
+
})))));
|
|
180
194
|
};
|
|
@@ -51,6 +51,7 @@ function _object_spread_props(target, source) {
|
|
|
51
51
|
return target;
|
|
52
52
|
}
|
|
53
53
|
import { Keyframes } from "@ant-design/cssinjs";
|
|
54
|
+
import { MOBILE_BREAKPOINT, MOBILE_PADDING } from "../Constants/mobile";
|
|
54
55
|
import { resetComponent, useEditorStyleRegister } from "../Hooks/useStyle";
|
|
55
56
|
// MarkdownInputField 样式常量
|
|
56
57
|
// Glow border effect constants - 辉光边框效果常量
|
|
@@ -152,7 +153,8 @@ var genStyle = function(token) {
|
|
|
152
153
|
boxSizing: 'border-box'
|
|
153
154
|
},
|
|
154
155
|
'&:active,&.active': {
|
|
155
|
-
outline: '1px solid transparent'
|
|
156
|
+
outline: '1px solid transparent',
|
|
157
|
+
outlineColor: 'var(--mif-active-outline-color, transparent)'
|
|
156
158
|
},
|
|
157
159
|
'&-enlarged': (_obj = {}, _define_property(_obj, "".concat(token.componentCls, "-editor"), {
|
|
158
160
|
flex: 1,
|
|
@@ -203,13 +205,15 @@ var genStyle = function(token) {
|
|
|
203
205
|
padding: '0 !important'
|
|
204
206
|
}
|
|
205
207
|
},
|
|
206
|
-
'&-editor-content': {
|
|
208
|
+
'&-editor-content': _define_property({
|
|
207
209
|
overflowY: 'auto',
|
|
208
210
|
maxHeight: 'inherit',
|
|
209
211
|
borderRadius: 'inherit',
|
|
210
212
|
scrollbarColor: 'var(--color-gray-text-tertiary) transparent',
|
|
211
213
|
scrollbarWidth: 'thin'
|
|
212
|
-
},
|
|
214
|
+
}, "@media (max-width: ".concat(MOBILE_BREAKPOINT, ")"), {
|
|
215
|
+
padding: "".concat(MOBILE_PADDING, " !important")
|
|
216
|
+
}),
|
|
213
217
|
'&&-disabled': {
|
|
214
218
|
backgroundColor: 'rgba(0,0,0,0.04)',
|
|
215
219
|
cursor: 'not-allowed',
|
|
@@ -223,6 +227,24 @@ var genStyle = function(token) {
|
|
|
223
227
|
font: 'var(--font-text-body-base)',
|
|
224
228
|
color: 'var(--color-gray-text-default)'
|
|
225
229
|
},
|
|
230
|
+
'&-tools-wrapper': _define_property({
|
|
231
|
+
backgroundColor: '#fff',
|
|
232
|
+
display: 'flex',
|
|
233
|
+
boxSizing: 'border-box',
|
|
234
|
+
borderRadius: 'inherit',
|
|
235
|
+
flexDirection: 'row',
|
|
236
|
+
alignItems: 'center',
|
|
237
|
+
justifyContent: 'space-between',
|
|
238
|
+
gap: 8,
|
|
239
|
+
width: '100%',
|
|
240
|
+
paddingLeft: 'var(--padding-3x)',
|
|
241
|
+
paddingRight: 'var(--padding-3x)',
|
|
242
|
+
paddingBottom: 'var(--padding-3x)'
|
|
243
|
+
}, "@media (max-width: ".concat(MOBILE_BREAKPOINT, ")"), {
|
|
244
|
+
paddingLeft: MOBILE_PADDING,
|
|
245
|
+
paddingRight: MOBILE_PADDING,
|
|
246
|
+
paddingBottom: MOBILE_PADDING
|
|
247
|
+
}),
|
|
226
248
|
'&-send-actions': {
|
|
227
249
|
position: 'absolute',
|
|
228
250
|
userSelect: 'none',
|
|
@@ -22,7 +22,7 @@ var NormalChart = function() {
|
|
|
22
22
|
*/ export var ChartErrorBoundaryExample = function() {
|
|
23
23
|
return /*#__PURE__*/ React.createElement("div", {
|
|
24
24
|
style: {
|
|
25
|
-
padding: '
|
|
25
|
+
padding: '12px'
|
|
26
26
|
}
|
|
27
27
|
}, /*#__PURE__*/ React.createElement("h2", null, "图表错误边界示例(antd Result 简洁版)"), /*#__PURE__*/ React.createElement("div", {
|
|
28
28
|
style: {
|
|
@@ -316,7 +316,7 @@ export { ChartFilter, ChartToolBar, downloadChart } from "./components";
|
|
|
316
316
|
]);
|
|
317
317
|
return useMemo(function() {
|
|
318
318
|
return /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({
|
|
319
|
-
|
|
319
|
+
"data-drag-el": true
|
|
320
320
|
}, attributes), {
|
|
321
321
|
"data-be": 'chart',
|
|
322
322
|
style: {
|
|
@@ -332,7 +332,7 @@ export { ChartFilter, ChartToolBar, downloadChart } from "./components";
|
|
|
332
332
|
return store.dragStart(e, markdownContainerRef.current);
|
|
333
333
|
}
|
|
334
334
|
}), /*#__PURE__*/ React.createElement(DragHandle, null), /*#__PURE__*/ React.createElement("div", {
|
|
335
|
-
|
|
335
|
+
"data-chart-box": true,
|
|
336
336
|
style: {
|
|
337
337
|
display: 'flex',
|
|
338
338
|
flexDirection: 'column',
|
|
@@ -41,8 +41,7 @@ export function CodeContainer(param) {
|
|
|
41
41
|
height: hide ? 0 : 'auto',
|
|
42
42
|
opacity: hide ? 0 : 1
|
|
43
43
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
})
|
|
44
|
+
"data-frontmatter": safeElement.frontmatter ? '' : undefined,
|
|
45
|
+
className: classNames('ace-container', 'code-editor-container', 'drag-el')
|
|
47
46
|
}, children));
|
|
48
47
|
}
|