@ai-group/chat-sdk 3.7.1-alpha2 → 3.7.1-alpha4
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/cjs/components/FileGallery/index.js +59 -40
- package/dist/cjs/components/FileGallery/index.js.map +2 -2
- package/dist/cjs/components/FileGallery/styles.d.ts +7 -0
- package/dist/cjs/components/FileGallery/styles.js +78 -0
- package/dist/cjs/components/FileGallery/styles.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.d.ts +7 -1
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js +82 -22
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.d.ts +3 -0
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js +39 -0
- package/dist/cjs/components/XAdkChatbot/components/MarkdownRender/styles.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.js +35 -5
- package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/styles.js +1 -1
- package/dist/cjs/components/XAdkChatbot/styles.js.map +1 -1
- package/dist/cjs/components/XAdkSender/InlineTagInput.d.ts +11 -5
- package/dist/cjs/components/XAdkSender/InlineTagInput.js +188 -113
- package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +2 -2
- package/dist/cjs/components/XAdkSender/InputTags.d.ts +2 -2
- package/dist/cjs/components/XAdkSender/InputTags.js +8 -8
- package/dist/cjs/components/XAdkSender/InputTags.js.map +2 -2
- package/dist/cjs/components/XAdkSender/index.js +104 -64
- package/dist/cjs/components/XAdkSender/index.js.map +2 -2
- package/dist/cjs/components/XAdkSender/styles.d.ts +4 -0
- package/dist/cjs/components/XAdkSender/styles.js +34 -6
- package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/types/FileGallery.d.ts +3 -0
- package/dist/cjs/types/FileGallery.js.map +1 -1
- package/dist/cjs/types/XAdkChatbot.d.ts +15 -0
- package/dist/cjs/types/XAdkChatbot.js.map +1 -1
- package/dist/cjs/types/XAdkSender.d.ts +74 -23
- package/dist/cjs/types/XAdkSender.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +3 -1
- package/dist/cjs/utils/index.js.map +2 -2
- package/dist/cjs/utils/markdownResource.d.ts +7 -0
- package/dist/cjs/utils/markdownResource.js +73 -0
- package/dist/cjs/utils/markdownResource.js.map +7 -0
- package/dist/esm/components/FileGallery/index.js +22 -16
- package/dist/esm/components/FileGallery/index.js.map +1 -1
- package/dist/esm/components/FileGallery/styles.d.ts +7 -0
- package/dist/esm/components/FileGallery/styles.js +24 -17
- package/dist/esm/components/FileGallery/styles.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.d.ts +7 -1
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js +57 -7
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.d.ts +3 -0
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js +5 -2
- package/dist/esm/components/XAdkChatbot/components/MarkdownRender/styles.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +20 -6
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/styles.js +1 -1
- package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAdkSender/InlineTagInput.d.ts +11 -5
- package/dist/esm/components/XAdkSender/InlineTagInput.js +185 -117
- package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -1
- package/dist/esm/components/XAdkSender/InputTags.d.ts +2 -2
- package/dist/esm/components/XAdkSender/InputTags.js +9 -9
- package/dist/esm/components/XAdkSender/InputTags.js.map +1 -1
- package/dist/esm/components/XAdkSender/index.js +124 -77
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/styles.d.ts +4 -0
- package/dist/esm/components/XAdkSender/styles.js +29 -25
- package/dist/esm/components/XAdkSender/styles.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/FileGallery.d.ts +3 -0
- package/dist/esm/types/FileGallery.js.map +1 -1
- package/dist/esm/types/XAdkChatbot.d.ts +15 -0
- package/dist/esm/types/XAdkChatbot.js.map +1 -1
- package/dist/esm/types/XAdkSender.d.ts +74 -23
- package/dist/esm/types/XAdkSender.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/markdownResource.d.ts +7 -0
- package/dist/esm/utils/markdownResource.js +33 -0
- package/dist/esm/utils/markdownResource.js.map +1 -0
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
2
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
3
|
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
4
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
5
5
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
6
6
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
7
7
|
import React, { useState, useRef, useCallback, forwardRef, useImperativeHandle, useMemo, useEffect } from "react";
|
|
@@ -59,15 +59,22 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
59
59
|
quickKeys = _ref$quickKeys === void 0 ? [] : _ref$quickKeys,
|
|
60
60
|
_ref$inlineTags = _ref.inlineTags,
|
|
61
61
|
inlineTags = _ref$inlineTags === void 0 ? false : _ref$inlineTags,
|
|
62
|
+
renderMention = _ref.renderMention,
|
|
62
63
|
renderTag = _ref.renderTag,
|
|
64
|
+
controlledMentions = _ref.mentions,
|
|
63
65
|
controlledTags = _ref.tags,
|
|
66
|
+
defaultMentions = _ref.defaultMentions,
|
|
64
67
|
_ref$defaultTags = _ref.defaultTags,
|
|
65
68
|
defaultTags = _ref$defaultTags === void 0 ? [] : _ref$defaultTags,
|
|
69
|
+
defaultInputParts = _ref.defaultInputParts,
|
|
70
|
+
onMentionsChange = _ref.onMentionsChange,
|
|
66
71
|
onTagsChange = _ref.onTagsChange,
|
|
67
72
|
onQuickKeyTrigger = _ref.onQuickKeyTrigger,
|
|
68
73
|
_ref$submitFormat = _ref.submitFormat,
|
|
69
74
|
submitFormat = _ref$submitFormat === void 0 ? "text" : _ref$submitFormat,
|
|
70
|
-
|
|
75
|
+
formatMention = _ref.formatMention,
|
|
76
|
+
formatTag = _ref.formatTag,
|
|
77
|
+
transformSubmitData = _ref.transformSubmitData;
|
|
71
78
|
var styles = useStyles();
|
|
72
79
|
var isControlled = controlledValue !== undefined;
|
|
73
80
|
var _useState = useState(defaultValue),
|
|
@@ -82,18 +89,21 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
82
89
|
onChange === null || onChange === void 0 || onChange(newValue);
|
|
83
90
|
};
|
|
84
91
|
|
|
85
|
-
//
|
|
86
|
-
var
|
|
87
|
-
var
|
|
92
|
+
// mentions 支持受控/非受控两种模式;inlineTags 打开时会和输入内容混排。
|
|
93
|
+
var resolvedControlledMentions = controlledMentions !== null && controlledMentions !== void 0 ? controlledMentions : controlledTags;
|
|
94
|
+
var initialMentions = defaultMentions !== null && defaultMentions !== void 0 ? defaultMentions : defaultTags;
|
|
95
|
+
var isMentionsControlled = resolvedControlledMentions !== undefined;
|
|
96
|
+
var _useState3 = useState(initialMentions),
|
|
88
97
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
if (!
|
|
94
|
-
|
|
98
|
+
internalMentions = _useState4[0],
|
|
99
|
+
setInternalMentions = _useState4[1];
|
|
100
|
+
var mentions = isMentionsControlled ? resolvedControlledMentions : internalMentions;
|
|
101
|
+
var setMentions = function setMentions(newMentions) {
|
|
102
|
+
if (!isMentionsControlled) {
|
|
103
|
+
setInternalMentions(newMentions);
|
|
95
104
|
}
|
|
96
|
-
|
|
105
|
+
onMentionsChange === null || onMentionsChange === void 0 || onMentionsChange(newMentions);
|
|
106
|
+
onTagsChange === null || onTagsChange === void 0 || onTagsChange(newMentions);
|
|
97
107
|
};
|
|
98
108
|
var _useState5 = useState([]),
|
|
99
109
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
@@ -142,26 +152,30 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
142
152
|
var escapeMarkdownLabel = function escapeMarkdownLabel(text) {
|
|
143
153
|
return text.replace(/\\/g, "\\\\").replace(/\]/g, "\\]");
|
|
144
154
|
};
|
|
145
|
-
var
|
|
146
|
-
var _ref3, _ref4, _ref5,
|
|
147
|
-
return String((_ref3 = (_ref4 = (_ref5 = (
|
|
155
|
+
var getMentionSubmitValue = function getMentionSubmitValue(mention) {
|
|
156
|
+
var _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _mention$value, _mention$data, _mention$data2, _mention$data3;
|
|
157
|
+
return String((_ref3 = (_ref4 = (_ref5 = (_ref6 = (_ref7 = (_ref8 = (_ref9 = (_mention$value = mention.value) !== null && _mention$value !== void 0 ? _mention$value : mention.uri) !== null && _ref9 !== void 0 ? _ref9 : (_mention$data = mention.data) === null || _mention$data === void 0 ? void 0 : _mention$data.uri) !== null && _ref8 !== void 0 ? _ref8 : (_mention$data2 = mention.data) === null || _mention$data2 === void 0 ? void 0 : _mention$data2.value) !== null && _ref7 !== void 0 ? _ref7 : (_mention$data3 = mention.data) === null || _mention$data3 === void 0 ? void 0 : _mention$data3.name) !== null && _ref6 !== void 0 ? _ref6 : mention.targetId) !== null && _ref5 !== void 0 ? _ref5 : mention.displayName) !== null && _ref4 !== void 0 ? _ref4 : mention.label) !== null && _ref3 !== void 0 ? _ref3 : "");
|
|
148
158
|
};
|
|
149
|
-
var
|
|
150
|
-
var value =
|
|
159
|
+
var defaultFormatMention = function defaultFormatMention(mention, format, index) {
|
|
160
|
+
var value = getMentionSubmitValue(mention);
|
|
151
161
|
if (format === "xml") {
|
|
152
|
-
return "<
|
|
162
|
+
return "<mention type=\"".concat(escapeXml(mention.type), "\" id=\"").concat(escapeXml(mention.id), "\" label=\"").concat(escapeXml(mention.label), "\" value=\"").concat(escapeXml(value), "\" />");
|
|
153
163
|
}
|
|
154
164
|
if (format === "markdown") {
|
|
155
|
-
|
|
165
|
+
var href = mention.uri || (value.includes("://") ? value : "xadk-mention://".concat(encodeURIComponent(mention.type), "/").concat(encodeURIComponent(mention.id)));
|
|
166
|
+
return "[@".concat(escapeMarkdownLabel(mention.displayName || mention.label), "](").concat(href, ")");
|
|
156
167
|
}
|
|
157
|
-
return "
|
|
168
|
+
return "@".concat(mention.displayName || value || "mention-".concat(index + 1));
|
|
158
169
|
};
|
|
159
|
-
var
|
|
160
|
-
var
|
|
161
|
-
return (
|
|
170
|
+
var serializeMention = function serializeMention(mention, format, index) {
|
|
171
|
+
var _ref10, _formatMention;
|
|
172
|
+
return (_ref10 = (_formatMention = formatMention === null || formatMention === void 0 ? void 0 : formatMention(mention, {
|
|
173
|
+
format: format,
|
|
174
|
+
index: index
|
|
175
|
+
})) !== null && _formatMention !== void 0 ? _formatMention : formatTag === null || formatTag === void 0 ? void 0 : formatTag(mention, {
|
|
162
176
|
format: format,
|
|
163
177
|
index: index
|
|
164
|
-
})) !== null &&
|
|
178
|
+
})) !== null && _ref10 !== void 0 ? _ref10 : defaultFormatMention(mention, format, index);
|
|
165
179
|
};
|
|
166
180
|
var getSubmitParts = useCallback(function () {
|
|
167
181
|
if (inlineTags) {
|
|
@@ -173,14 +187,14 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
173
187
|
type: "text",
|
|
174
188
|
text: value
|
|
175
189
|
}] : [];
|
|
176
|
-
var
|
|
190
|
+
var mentionParts = mentions.map(function (mention) {
|
|
177
191
|
return {
|
|
178
|
-
type: "
|
|
179
|
-
|
|
192
|
+
type: "mention",
|
|
193
|
+
mention: mention
|
|
180
194
|
};
|
|
181
195
|
});
|
|
182
|
-
return [].concat(_toConsumableArray(
|
|
183
|
-
}, [inlineTags,
|
|
196
|
+
return [].concat(_toConsumableArray(mentionParts), textParts);
|
|
197
|
+
}, [inlineTags, mentions, value]);
|
|
184
198
|
var serializeParts = function serializeParts(parts, format) {
|
|
185
199
|
if (format === "structured") {
|
|
186
200
|
return parts.reduce(function (content, part) {
|
|
@@ -190,7 +204,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
190
204
|
var tagIndex = 0;
|
|
191
205
|
return parts.map(function (part) {
|
|
192
206
|
if (part.type === "text") return part.text;
|
|
193
|
-
var result =
|
|
207
|
+
var result = serializeMention(part.mention, format, tagIndex);
|
|
194
208
|
tagIndex += 1;
|
|
195
209
|
return result;
|
|
196
210
|
}).join("");
|
|
@@ -200,14 +214,18 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
200
214
|
var rawText = parts.reduce(function (content, part) {
|
|
201
215
|
return content + (part.type === "text" ? part.text : "");
|
|
202
216
|
}, "");
|
|
203
|
-
|
|
217
|
+
var standardData = {
|
|
204
218
|
text: serializeParts(parts, submitFormat),
|
|
205
219
|
rawText: rawText,
|
|
206
220
|
format: submitFormat,
|
|
207
221
|
parts: parts,
|
|
208
222
|
files: formattedFiles,
|
|
209
|
-
|
|
223
|
+
mentions: mentions,
|
|
224
|
+
tags: mentions
|
|
210
225
|
};
|
|
226
|
+
return _objectSpread(_objectSpread({}, standardData), {}, {
|
|
227
|
+
payload: transformSubmitData === null || transformSubmitData === void 0 ? void 0 : transformSubmitData(standardData)
|
|
228
|
+
});
|
|
211
229
|
};
|
|
212
230
|
|
|
213
231
|
// 检查文件类型
|
|
@@ -238,8 +256,8 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
238
256
|
};
|
|
239
257
|
|
|
240
258
|
// 内置校验器集合
|
|
241
|
-
var builtInValidators = [function (_file,
|
|
242
|
-
var files =
|
|
259
|
+
var builtInValidators = [function (_file, _ref11) {
|
|
260
|
+
var files = _ref11.files;
|
|
243
261
|
if (files.length >= maxFiles) {
|
|
244
262
|
return "\u6700\u591A\u53EA\u80FD\u4E0A\u4F20 ".concat(maxFiles, " \u4E2A\u6587\u4EF6");
|
|
245
263
|
}
|
|
@@ -255,8 +273,8 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
255
273
|
return "不支持的文件类型";
|
|
256
274
|
}
|
|
257
275
|
return null;
|
|
258
|
-
}, function (file,
|
|
259
|
-
var files =
|
|
276
|
+
}, function (file, _ref12) {
|
|
277
|
+
var files = _ref12.files;
|
|
260
278
|
if (isDuplicateFile(file, files)) {
|
|
261
279
|
return "文件已存在";
|
|
262
280
|
}
|
|
@@ -327,14 +345,34 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
327
345
|
}
|
|
328
346
|
}, [files, maxFiles, maxFileSize, allowedFileTypes]);
|
|
329
347
|
|
|
330
|
-
//
|
|
348
|
+
// 暴露给业务工具栏调用的命令式能力;外部 Popover 选择标签时可插入到当前光标位置。
|
|
331
349
|
useImperativeHandle(ref, function () {
|
|
332
350
|
return {
|
|
333
351
|
addFiles: function addFiles(rawFiles) {
|
|
334
352
|
handleFileSelect(rawFiles);
|
|
353
|
+
},
|
|
354
|
+
insertMention: function insertMention(mention) {
|
|
355
|
+
if (inlineTags) {
|
|
356
|
+
var _inlineInputRef$curre2;
|
|
357
|
+
(_inlineInputRef$curre2 = inlineInputRef.current) === null || _inlineInputRef$curre2 === void 0 || _inlineInputRef$curre2.insertMention(mention);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
setMentions([].concat(_toConsumableArray(mentions), [mention]));
|
|
361
|
+
},
|
|
362
|
+
insertTag: function insertTag(mention) {
|
|
363
|
+
if (inlineTags) {
|
|
364
|
+
var _inlineInputRef$curre3;
|
|
365
|
+
(_inlineInputRef$curre3 = inlineInputRef.current) === null || _inlineInputRef$curre3 === void 0 || _inlineInputRef$curre3.insertMention(mention);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
setMentions([].concat(_toConsumableArray(mentions), [mention]));
|
|
369
|
+
},
|
|
370
|
+
focus: function focus() {
|
|
371
|
+
var _inlineInputRef$curre4, _textareaRef$current;
|
|
372
|
+
inlineTags ? (_inlineInputRef$curre4 = inlineInputRef.current) === null || _inlineInputRef$curre4 === void 0 ? void 0 : _inlineInputRef$curre4.focus() : (_textareaRef$current = textareaRef.current) === null || _textareaRef$current === void 0 ? void 0 : _textareaRef$current.focus();
|
|
335
373
|
}
|
|
336
374
|
};
|
|
337
|
-
}, [handleFileSelect]);
|
|
375
|
+
}, [handleFileSelect, inlineTags, setMentions, mentions]);
|
|
338
376
|
|
|
339
377
|
// 触发文件选择
|
|
340
378
|
var triggerFileSelect = function triggerFileSelect() {
|
|
@@ -345,7 +383,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
345
383
|
|
|
346
384
|
// 上传文件
|
|
347
385
|
var uploadFiles = /*#__PURE__*/function () {
|
|
348
|
-
var
|
|
386
|
+
var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fileList) {
|
|
349
387
|
var _iterator2, _step2, _loop;
|
|
350
388
|
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
|
351
389
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -460,7 +498,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
460
498
|
}, _callee, null, [[1, 10, 13, 16]]);
|
|
461
499
|
}));
|
|
462
500
|
return function uploadFiles(_x) {
|
|
463
|
-
return
|
|
501
|
+
return _ref13.apply(this, arguments);
|
|
464
502
|
};
|
|
465
503
|
}();
|
|
466
504
|
|
|
@@ -500,11 +538,11 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
500
538
|
}, [allowUpload, handleFileSelect]);
|
|
501
539
|
|
|
502
540
|
// 删除标签
|
|
503
|
-
var
|
|
504
|
-
|
|
505
|
-
return
|
|
541
|
+
var handleRemoveMention = useCallback(function (id) {
|
|
542
|
+
setMentions(mentions.filter(function (item) {
|
|
543
|
+
return item.id !== id;
|
|
506
544
|
}));
|
|
507
|
-
}, [
|
|
545
|
+
}, [mentions, setMentions]);
|
|
508
546
|
|
|
509
547
|
// 查找当前活跃的快捷键配置
|
|
510
548
|
var activeQuickKeyConfig = useMemo(function () {
|
|
@@ -570,27 +608,31 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
570
608
|
}
|
|
571
609
|
}, [activeQuickKey, onQuickKeyTrigger, quickKeyTriggerIdx, quickKeys]);
|
|
572
610
|
|
|
573
|
-
// 选择快捷项后转成结构化
|
|
611
|
+
// 选择快捷项后转成结构化 Mention;inline 模式会替换掉触发字符和关键词。
|
|
574
612
|
var handleQuickKeySelect = useCallback(function (option) {
|
|
575
|
-
var
|
|
576
|
-
var
|
|
613
|
+
var _ref14, _ref15, _option$value, _ref16, _option$targetId, _option$displayName, _activeQuickKeyConfig, _inlineInputRef$curre6, _textareaRef$current2;
|
|
614
|
+
var mentionType = (activeQuickKeyConfig === null || activeQuickKeyConfig === void 0 ? void 0 : activeQuickKeyConfig.mentionType) || (activeQuickKeyConfig === null || activeQuickKeyConfig === void 0 ? void 0 : activeQuickKeyConfig.tagType) || activeQuickKey || "unknown";
|
|
615
|
+
var newMention = {
|
|
577
616
|
id: generateId(),
|
|
578
617
|
label: option.label,
|
|
579
|
-
type:
|
|
580
|
-
value: (
|
|
618
|
+
type: mentionType,
|
|
619
|
+
value: (_ref14 = (_ref15 = (_option$value = option.value) !== null && _option$value !== void 0 ? _option$value : option.uri) !== null && _ref15 !== void 0 ? _ref15 : option.name) !== null && _ref14 !== void 0 ? _ref14 : option.label,
|
|
620
|
+
uri: option.uri,
|
|
621
|
+
targetId: (_ref16 = (_option$targetId = option.targetId) !== null && _option$targetId !== void 0 ? _option$targetId : option.skillNo) !== null && _ref16 !== void 0 ? _ref16 : option.pluginNo,
|
|
622
|
+
displayName: (_option$displayName = option.displayName) !== null && _option$displayName !== void 0 ? _option$displayName : option.label,
|
|
581
623
|
trigger: activeQuickKey || undefined,
|
|
582
624
|
icon: option.icon,
|
|
583
625
|
data: option
|
|
584
626
|
};
|
|
585
627
|
activeQuickKeyConfig === null || activeQuickKeyConfig === void 0 || (_activeQuickKeyConfig = activeQuickKeyConfig.onSelect) === null || _activeQuickKeyConfig === void 0 || _activeQuickKeyConfig.call(activeQuickKeyConfig, option);
|
|
586
628
|
if (inlineTags) {
|
|
587
|
-
var _inlineInputRef$
|
|
588
|
-
(_inlineInputRef$
|
|
629
|
+
var _inlineInputRef$curre5;
|
|
630
|
+
(_inlineInputRef$curre5 = inlineInputRef.current) === null || _inlineInputRef$curre5 === void 0 || _inlineInputRef$curre5.insertMention(newMention, {
|
|
589
631
|
start: quickKeyTriggerIdx,
|
|
590
632
|
end: quickKeyTriggerIdx + 1 + quickKeyKeyword.length
|
|
591
633
|
});
|
|
592
634
|
} else {
|
|
593
|
-
|
|
635
|
+
setMentions([].concat(_toConsumableArray(mentions), [newMention]));
|
|
594
636
|
|
|
595
637
|
// 从输入框中删除快捷键字符和关键词
|
|
596
638
|
if (quickKeyTriggerIdx >= 0) {
|
|
@@ -602,8 +644,8 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
602
644
|
setQuickKeyKeyword("");
|
|
603
645
|
setQuickKeyTriggerIdx(-1);
|
|
604
646
|
setQuickKeyActiveIndex(0);
|
|
605
|
-
inlineTags ? (_inlineInputRef$
|
|
606
|
-
}, [activeQuickKey, activeQuickKeyConfig, inlineTags,
|
|
647
|
+
inlineTags ? (_inlineInputRef$curre6 = inlineInputRef.current) === null || _inlineInputRef$curre6 === void 0 ? void 0 : _inlineInputRef$curre6.focus() : (_textareaRef$current2 = textareaRef.current) === null || _textareaRef$current2 === void 0 ? void 0 : _textareaRef$current2.focus();
|
|
648
|
+
}, [activeQuickKey, activeQuickKeyConfig, inlineTags, mentions, setMentions, value, quickKeyTriggerIdx, quickKeyKeyword, setValue]);
|
|
607
649
|
|
|
608
650
|
// 处理输入框变化(含快捷键检测)
|
|
609
651
|
var handleInputChange = function handleInputChange(e) {
|
|
@@ -614,10 +656,10 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
614
656
|
detectQuickKey(newValue, e.target.selectionStart || 0);
|
|
615
657
|
};
|
|
616
658
|
var handleInlineInputChange = function handleInlineInputChange(newValue) {
|
|
617
|
-
var _inlineInputRef$
|
|
659
|
+
var _inlineInputRef$curre7;
|
|
618
660
|
setValue(newValue);
|
|
619
661
|
// contenteditable 的 selection 不一定和 React state 同步,需实时读取内部光标 offset。
|
|
620
|
-
detectQuickKey(newValue, ((_inlineInputRef$
|
|
662
|
+
detectQuickKey(newValue, ((_inlineInputRef$curre7 = inlineInputRef.current) === null || _inlineInputRef$curre7 === void 0 ? void 0 : _inlineInputRef$curre7.getCursorOffset()) || newValue.length);
|
|
621
663
|
};
|
|
622
664
|
var handleQuickKeyByText = function handleQuickKeyByText(text, cursorPos) {
|
|
623
665
|
var quickKeyChars = quickKeys.map(function (qk) {
|
|
@@ -652,17 +694,17 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
652
694
|
handleQuickKeyByText(target.value || "", target.selectionStart || 0);
|
|
653
695
|
};
|
|
654
696
|
var handleInlineKeyUp = function handleInlineKeyUp(e) {
|
|
655
|
-
var _inlineInputRef$
|
|
697
|
+
var _inlineInputRef$curre8, _inlineInputRef$curre9;
|
|
656
698
|
if (activeQuickKey && isQuickListControlKey(e.key)) return;
|
|
657
699
|
// inline 输入区不是 textarea,不能读 event.target.value,只能从 ref 取纯文本。
|
|
658
|
-
var text = ((_inlineInputRef$
|
|
659
|
-
var cursorPos = ((_inlineInputRef$
|
|
700
|
+
var text = ((_inlineInputRef$curre8 = inlineInputRef.current) === null || _inlineInputRef$curre8 === void 0 ? void 0 : _inlineInputRef$curre8.getText()) || "";
|
|
701
|
+
var cursorPos = ((_inlineInputRef$curre9 = inlineInputRef.current) === null || _inlineInputRef$curre9 === void 0 ? void 0 : _inlineInputRef$curre9.getCursorOffset()) || text.length;
|
|
660
702
|
handleQuickKeyByText(text, cursorPos);
|
|
661
703
|
};
|
|
662
704
|
|
|
663
705
|
// 处理提交
|
|
664
706
|
var handleSubmit = function handleSubmit() {
|
|
665
|
-
if (!value.trim() && files.length === 0 &&
|
|
707
|
+
if (!value.trim() && files.length === 0 && mentions.length === 0) {
|
|
666
708
|
message.warning("请输入消息或选择文件");
|
|
667
709
|
return;
|
|
668
710
|
}
|
|
@@ -684,7 +726,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
684
726
|
onSubmit(createSubmitData(formattedFiles));
|
|
685
727
|
}
|
|
686
728
|
setValue("");
|
|
687
|
-
|
|
729
|
+
setMentions([]);
|
|
688
730
|
setFiles(function (prev) {
|
|
689
731
|
return prev.filter(function (f) {
|
|
690
732
|
return f.status !== "success";
|
|
@@ -701,7 +743,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
701
743
|
onSubmit(createSubmitData(formattedFiles));
|
|
702
744
|
}
|
|
703
745
|
setValue("");
|
|
704
|
-
|
|
746
|
+
setMentions([]);
|
|
705
747
|
setFiles(function (prev) {
|
|
706
748
|
return prev.filter(function (f) {
|
|
707
749
|
return f.status !== "success";
|
|
@@ -770,15 +812,11 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
770
812
|
var renderFileList = function renderFileList() {
|
|
771
813
|
if (files.length === 0) return null;
|
|
772
814
|
return /*#__PURE__*/_jsx("div", {
|
|
773
|
-
|
|
774
|
-
display: "flex",
|
|
775
|
-
flexWrap: "wrap",
|
|
776
|
-
gap: "8px",
|
|
777
|
-
padding: "12px 0"
|
|
778
|
-
},
|
|
815
|
+
className: styles.contextFiles,
|
|
779
816
|
children: files.map(function (file) {
|
|
780
817
|
return /*#__PURE__*/_jsx(FileGallery, {
|
|
781
818
|
file: file,
|
|
819
|
+
size: "small",
|
|
782
820
|
removable: true,
|
|
783
821
|
onRemove: handleRemoveFile
|
|
784
822
|
}, file.id);
|
|
@@ -794,8 +832,8 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
794
832
|
var hasFiles = files.some(function (f) {
|
|
795
833
|
return f.status === "success";
|
|
796
834
|
});
|
|
797
|
-
var
|
|
798
|
-
var canSend = hasContent || hasFiles ||
|
|
835
|
+
var hasMentions = mentions.length > 0;
|
|
836
|
+
var canSend = hasContent || hasFiles || hasMentions;
|
|
799
837
|
|
|
800
838
|
// 定义按钮组件
|
|
801
839
|
var SendButton = function SendButton(props) {
|
|
@@ -872,6 +910,8 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
872
910
|
}
|
|
873
911
|
return slot;
|
|
874
912
|
};
|
|
913
|
+
var headerNode = renderSlot(header, false);
|
|
914
|
+
var fileListNode = allowUpload && files.length > 0 ? renderFileList() : null;
|
|
875
915
|
|
|
876
916
|
// 默认后缀仅保留发送/停止按钮;上传与清空统一放到底部 actionBar,方便业务扩展左侧按钮组。
|
|
877
917
|
var defaultSuffix = /*#__PURE__*/_jsx("div", {
|
|
@@ -911,7 +951,7 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
911
951
|
onDragOver: allowUpload && draggable ? handleDragOver : undefined,
|
|
912
952
|
onDragLeave: allowUpload && draggable ? handleDragLeave : undefined,
|
|
913
953
|
onDrop: allowUpload && draggable ? handleDrop : undefined,
|
|
914
|
-
children: [
|
|
954
|
+
children: [allowUpload && /*#__PURE__*/_jsx("input", {
|
|
915
955
|
ref: fileInputRef,
|
|
916
956
|
type: "file",
|
|
917
957
|
multiple: true,
|
|
@@ -929,22 +969,29 @@ var XAdkSender = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
929
969
|
className: styles.mainArea,
|
|
930
970
|
children: /*#__PURE__*/_jsxs("div", {
|
|
931
971
|
className: styles.senderWrap,
|
|
932
|
-
children: [
|
|
933
|
-
|
|
934
|
-
|
|
972
|
+
children: [(headerNode || fileListNode) && /*#__PURE__*/_jsxs("div", {
|
|
973
|
+
className: styles.contextBar,
|
|
974
|
+
children: [headerNode && /*#__PURE__*/_jsx("div", {
|
|
975
|
+
className: styles.contextHeader,
|
|
976
|
+
children: headerNode
|
|
977
|
+
}), fileListNode]
|
|
978
|
+
}), !inlineTags && /*#__PURE__*/_jsx(InputTags, {
|
|
979
|
+
mentions: mentions,
|
|
980
|
+
onRemove: handleRemoveMention
|
|
935
981
|
}), /*#__PURE__*/_jsxs("div", {
|
|
936
982
|
className: styles.inputAndButtons,
|
|
937
983
|
children: [renderSlot(prefix, false), inlineTags ? /*#__PURE__*/_jsx(InlineTagInput, {
|
|
938
984
|
ref: inlineInputRef,
|
|
939
985
|
value: value,
|
|
940
|
-
|
|
986
|
+
mentions: mentions,
|
|
987
|
+
defaultInputParts: defaultInputParts,
|
|
941
988
|
placeholder: placeholder,
|
|
942
989
|
disabled: isDisabled,
|
|
943
990
|
onChange: handleInlineInputChange,
|
|
944
|
-
|
|
991
|
+
onMentionsChange: setMentions,
|
|
945
992
|
onKeyDown: handleKeyDown,
|
|
946
993
|
onKeyUp: handleInlineKeyUp,
|
|
947
|
-
|
|
994
|
+
renderMention: renderMention !== null && renderMention !== void 0 ? renderMention : renderTag
|
|
948
995
|
}) : /*#__PURE__*/_jsx("div", {
|
|
949
996
|
className: styles.textAreaWrapper,
|
|
950
997
|
children: /*#__PURE__*/_jsx(Input.TextArea, {
|