@ai-group/chat-sdk 3.7.1-alpha9 → 3.7.3
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/XAdkChatbot/styles.js +8 -1
- package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +17 -50
- package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
- package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +3 -2
- package/dist/cjs/components/XAdkProvider/compound/Sender.js +81 -4
- package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +3 -3
- package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
- package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js +34 -0
- package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js.map +7 -0
- package/dist/cjs/components/XAdkProvider/context/index.d.ts +5 -4
- package/dist/cjs/components/XAdkProvider/context/index.js +3 -1
- package/dist/cjs/components/XAdkProvider/context/index.js.map +2 -2
- package/dist/cjs/components/XAdkSender/InlineTagInput.d.ts +4 -0
- package/dist/cjs/components/XAdkSender/InlineTagInput.js +28 -1
- package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +2 -2
- package/dist/cjs/components/XAdkSender/{QuickList.d.ts → InputSuggestionList.d.ts} +4 -3
- package/dist/cjs/components/XAdkSender/{QuickList.js → InputSuggestionList.js} +55 -30
- package/dist/cjs/components/XAdkSender/InputSuggestionList.js.map +7 -0
- package/dist/cjs/components/XAdkSender/index.js +35 -13
- package/dist/cjs/components/XAdkSender/index.js.map +3 -3
- package/dist/cjs/components/XAdkSender/styles.js +13 -1
- package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +1 -1
- package/dist/cjs/components/XAiConversations/index.js.map +2 -2
- package/dist/cjs/components/XAiConversations/styles.js +11 -1
- package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/presets/xgroup/index.d.ts +1 -0
- package/dist/cjs/presets/xgroup/index.js +2 -0
- package/dist/cjs/presets/xgroup/index.js.map +2 -2
- package/dist/cjs/presets/xgroup/knowledgeReference.js +3 -1
- package/dist/cjs/presets/xgroup/knowledgeReference.js.map +2 -2
- package/dist/cjs/presets/xgroup/webReference.d.ts +10 -0
- package/dist/cjs/presets/xgroup/webReference.js +85 -0
- package/dist/cjs/presets/xgroup/webReference.js.map +7 -0
- package/dist/cjs/types/XAdkSender.d.ts +4 -0
- package/dist/cjs/types/XAdkSender.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/styles.js +3 -3
- package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +16 -41
- package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
- package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +3 -2
- package/dist/esm/components/XAdkProvider/compound/Sender.js +70 -7
- package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -1
- package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
- package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js +9 -0
- package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js.map +1 -0
- package/dist/esm/components/XAdkProvider/context/index.d.ts +5 -4
- package/dist/esm/components/XAdkProvider/context/index.js +1 -0
- package/dist/esm/components/XAdkProvider/context/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/InlineTagInput.d.ts +4 -0
- package/dist/esm/components/XAdkSender/InlineTagInput.js +26 -7
- package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -1
- package/dist/esm/components/XAdkSender/{QuickList.d.ts → InputSuggestionList.d.ts} +4 -3
- package/dist/esm/components/XAdkSender/{QuickList.js → InputSuggestionList.js} +53 -28
- package/dist/esm/components/XAdkSender/InputSuggestionList.js.map +1 -0
- package/dist/esm/components/XAdkSender/index.js +39 -18
- package/dist/esm/components/XAdkSender/index.js.map +1 -1
- package/dist/esm/components/XAdkSender/styles.js +2 -2
- package/dist/esm/components/XAdkSender/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +2 -1
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiConversations/styles.js +3 -3
- package/dist/esm/components/XAiConversations/styles.js.map +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/presets/xgroup/index.d.ts +1 -0
- package/dist/esm/presets/xgroup/index.js +1 -0
- package/dist/esm/presets/xgroup/index.js.map +1 -1
- package/dist/esm/presets/xgroup/knowledgeReference.js +2 -1
- package/dist/esm/presets/xgroup/knowledgeReference.js.map +1 -1
- package/dist/esm/presets/xgroup/webReference.d.ts +10 -0
- package/dist/esm/presets/xgroup/webReference.js +46 -0
- package/dist/esm/presets/xgroup/webReference.js.map +1 -0
- package/dist/esm/types/XAdkSender.d.ts +4 -0
- package/dist/esm/types/XAdkSender.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/components/XAdkSender/QuickList.js.map +0 -7
- package/dist/esm/components/XAdkSender/QuickList.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","useMemo","useEffect","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","useStyles","FileGallery","QuickList","InputTags","InlineTagInput","getExt","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$draggable","draggable","onFileSelect","_ref$loading","loading","_ref$disabled","disabled","controlledValue","value","_ref$defaultValue","defaultValue","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$placeholder","placeholder","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","footerLeft","_ref$quickKeys","quickKeys","_ref$inlineTags","inlineTags","renderMention","renderTag","controlledMentions","mentions","controlledTags","tags","defaultMentions","_ref$defaultTags","defaultTags","defaultInputParts","onMentionsChange","onTagsChange","onQuickKeyTrigger","_ref$submitFormat","submitFormat","formatMention","formatTag","transformSubmitData","styles","isControlled","undefined","_useState","_useState2","_slicedToArray","internalValue","setInternalValue","setValue","newValue","resolvedControlledMentions","initialMentions","isMentionsControlled","_useState3","_useState4","internalMentions","setInternalMentions","setMentions","newMentions","_useState5","_useState6","files","setFiles","_useState7","_useState8","isDragOver","setIsDragOver","containerRef","textareaRef","inlineInputRef","_useState9","_useState10","activeQuickKey","setActiveQuickKey","_useState11","_useState12","quickKeyKeyword","setQuickKeyKeyword","_useState13","_useState14","quickKeyTriggerIdx","setQuickKeyTriggerIdx","_useState15","_useState16","quickKeyActiveIndex","setQuickKeyActiveIndex","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","escapeXml","text","replace","escapeMarkdownLabel","getMentionSubmitValue","mention","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_mention$value","_mention$data","_mention$data2","_mention$data3","String","uri","name","targetId","displayName","label","defaultFormatMention","format","index","concat","type","id","href","includes","encodeURIComponent","serializeMention","_ref10","_formatMention","getSubmitParts","_inlineInputRef$curre","parts","current","getParts","length","textParts","mentionParts","map","_toConsumableArray","serializeParts","reduce","content","part","tagIndex","result","join","createSubmitData","formattedFiles","rawText","standardData","_objectSpread","payload","checkFileType","file","ext","some","endsWith","startsWith","split","slice","isDuplicateFile","f","size","builtInValidators","_file","_ref11","maxSize","_ref12","allValidators","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","insertMention","_inlineInputRef$curre2","insertTag","_inlineInputRef$curre3","focus","_inlineInputRef$curre4","_textareaRef$current","_ref13","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleRemoveMention","item","activeQuickKeyConfig","find","qk","key","activeQuickKeyOptionsLength","options","getNextQuickKeyIndex","step","detectQuickKey","cursorPos","quickKeyChars","textBeforeCursor","found","i","char","test","keyword","triggerChar","handleQuickKeySelect","option","_ref14","_ref15","_option$value","_ref16","_option$targetId","_option$displayName","_activeQuickKeyConfig","_inlineInputRef$curre6","_textareaRef$current2","mentionType","tagType","newMention","skillNo","pluginNo","trigger","icon","onSelect","call","_inlineInputRef$curre5","start","end","handleInputChange","target","selectionStart","handleInlineInputChange","_inlineInputRef$curre7","getCursorOffset","handleQuickKeyByText","lastChar","isQuickListControlKey","handleKeyUp","handleInlineKeyUp","_inlineInputRef$curre8","_inlineInputRef$curre9","getText","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","okText","cancelText","onOk","formatFilesForServer","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleKeyDown","quickKeyOptions","min","shiftKey","renderFileList","className","contextFiles","children","removable","onRemove","containerClass","container","uploading","controlsDisabled","inputDisabled","hasContent","hasFiles","hasMentions","canSend","SendButton","props","onSend","iconButton","sendButton","onClick","spin","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","components","headerNode","fileListNode","defaultSuffix","buttonGroup","defaultActionBar","actionBar","actionBarLeft","actionBarRight","onDragOver","onDragLeave","onDrop","mainArea","senderWrap","contextBar","contextHeader","inputAndButtons","onKeyDown","onKeyUp","textAreaWrapper","TextArea","textArea","autoSize","minRows","maxRows","style","border","boxShadow","outline","padding","quickListWrapper","config","activeIndex","onClose","visible","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useEffect,\n} from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n MentionTag,\n XAdkSenderSubmitData,\n XAdkSenderSubmitFormat,\n XAdkSenderSubmitPart,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport QuickList from \"./QuickList\";\nimport InputTags from \"./InputTags\";\nimport InlineTagInput, { InlineTagInputRef } from \"./InlineTagInput\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(\n (\n {\n clearBtnShow = true,\n draggable = false,\n onFileSelect,\n loading = false,\n disabled = false,\n value: controlledValue,\n defaultValue = \"\",\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n placeholder = \"\",\n validators: customValidators = [],\n allowedFileTypes = [],\n maxFiles = Infinity,\n sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n footerLeft,\n quickKeys = [],\n inlineTags = false,\n renderMention,\n renderTag,\n mentions: controlledMentions,\n tags: controlledTags,\n defaultMentions,\n defaultTags = [],\n defaultInputParts,\n onMentionsChange,\n onTagsChange,\n onQuickKeyTrigger,\n submitFormat = \"text\",\n formatMention,\n formatTag,\n transformSubmitData,\n },\n ref,\n ) => {\n const styles = useStyles();\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const setValue = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // mentions 支持受控/非受控两种模式;inlineTags 打开时会和输入内容混排。\n const resolvedControlledMentions = controlledMentions ?? controlledTags;\n const initialMentions = defaultMentions ?? defaultTags;\n const isMentionsControlled = resolvedControlledMentions !== undefined;\n const [internalMentions, setInternalMentions] =\n useState<MentionTag[]>(initialMentions);\n const mentions = isMentionsControlled\n ? resolvedControlledMentions!\n : internalMentions;\n const setMentions = (newMentions: MentionTag[]) => {\n if (!isMentionsControlled) {\n setInternalMentions(newMentions);\n }\n onMentionsChange?.(newMentions);\n onTagsChange?.(newMentions);\n };\n\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<any>(null);\n const inlineInputRef = useRef<InlineTagInputRef>(null);\n\n // 快捷键弹层状态:记录触发字符、关键词,以及触发字符在纯文本中的位置。\n // SDK 不内置搜索框;业务方可在 onQuickKeyTrigger 中根据 keyword 自行更新 quickKeys.options。\n const [activeQuickKey, setActiveQuickKey] = useState<string | null>(null);\n const [quickKeyKeyword, setQuickKeyKeyword] = useState(\"\");\n const [quickKeyTriggerIdx, setQuickKeyTriggerIdx] = useState(-1);\n const [quickKeyActiveIndex, setQuickKeyActiveIndex] = useState(0);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n const escapeXml = (text: string) =>\n text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n\n const escapeMarkdownLabel = (text: string) =>\n text.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\");\n\n const getMentionSubmitValue = (mention: MentionTag) =>\n String(\n mention.value ??\n mention.uri ??\n mention.data?.uri ??\n mention.data?.value ??\n mention.data?.name ??\n mention.targetId ??\n mention.displayName ??\n mention.label ??\n \"\",\n );\n\n const defaultFormatMention = (\n mention: MentionTag,\n format: Exclude<XAdkSenderSubmitFormat, \"structured\">,\n index: number,\n ) => {\n const value = getMentionSubmitValue(mention);\n if (format === \"xml\") {\n return `<mention type=\"${escapeXml(mention.type)}\" id=\"${escapeXml(mention.id)}\" label=\"${escapeXml(mention.label)}\" value=\"${escapeXml(value)}\" />`;\n }\n\n if (format === \"markdown\") {\n const href =\n mention.uri ||\n (value.includes(\"://\")\n ? value\n : `xadk-mention://${encodeURIComponent(mention.type)}/${encodeURIComponent(mention.id)}`);\n return `[@${escapeMarkdownLabel(mention.displayName || mention.label)}](${href})`;\n }\n\n return `@${mention.displayName || value || `mention-${index + 1}`}`;\n };\n\n const serializeMention = (\n mention: MentionTag,\n format: Exclude<XAdkSenderSubmitFormat, \"structured\">,\n index: number,\n ) =>\n formatMention?.(mention, { format, index }) ??\n formatTag?.(mention, { format, index }) ??\n defaultFormatMention(mention, format, index);\n\n const getSubmitParts = useCallback((): XAdkSenderSubmitPart[] => {\n if (inlineTags) {\n const parts = inlineInputRef.current?.getParts() || [];\n if (parts.length > 0) return parts;\n }\n\n const textParts: XAdkSenderSubmitPart[] = value ? [{ type: \"text\", text: value }] : [];\n const mentionParts = mentions.map((mention) => ({\n type: \"mention\" as const,\n mention,\n }));\n return [...mentionParts, ...textParts];\n }, [inlineTags, mentions, value]);\n\n const serializeParts = (\n parts: XAdkSenderSubmitPart[],\n format: XAdkSenderSubmitFormat,\n ) => {\n if (format === \"structured\") {\n return parts.reduce(\n (content, part) => content + (part.type === \"text\" ? part.text : \"\"),\n \"\",\n );\n }\n\n let tagIndex = 0;\n return parts\n .map((part) => {\n if (part.type === \"text\") return part.text;\n const result = serializeMention(part.mention, format, tagIndex);\n tagIndex += 1;\n return result;\n })\n .join(\"\");\n };\n\n const createSubmitData = (formattedFiles: ServerFile[]): XAdkSenderSubmitData => {\n const parts = getSubmitParts();\n const rawText = parts.reduce(\n (content, part) => content + (part.type === \"text\" ? part.text : \"\"),\n \"\",\n );\n const standardData: Omit<XAdkSenderSubmitData, \"payload\"> = {\n text: serializeParts(parts, submitFormat),\n rawText,\n format: submitFormat,\n parts,\n files: formattedFiles,\n mentions,\n tags: mentions,\n };\n\n return {\n ...standardData,\n payload: transformSubmitData?.(standardData),\n };\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露给业务工具栏调用的命令式能力;外部 Popover 选择标签时可插入到当前光标位置。\n useImperativeHandle(\n ref,\n () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n insertMention: (mention: MentionTag) => {\n if (inlineTags) {\n inlineInputRef.current?.insertMention(mention);\n return;\n }\n setMentions([...mentions, mention]);\n },\n insertTag: (mention: MentionTag) => {\n if (inlineTags) {\n inlineInputRef.current?.insertMention(mention);\n return;\n }\n setMentions([...mentions, mention]);\n },\n focus: () => {\n inlineTags ? inlineInputRef.current?.focus() : textareaRef.current?.focus();\n },\n }),\n [handleFileSelect, inlineTags, setMentions, mentions],\n );\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n onFilesChange?.(next);\n return next;\n });\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (draggable) {\n setIsDragOver(true);\n }\n },\n [draggable],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (draggable) {\n setIsDragOver(false);\n }\n },\n [draggable],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n draggable &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n // 内核不再自行处理文件,交给外层(DefaultLayout/业务)通过 onFileSelect 决定\n onFileSelect?.(Array.from(e.dataTransfer.files));\n }\n },\n [draggable, onFileSelect],\n );\n\n // 删除标签\n const handleRemoveMention = useCallback(\n (id: string) => {\n setMentions(mentions.filter((item) => item.id !== id));\n },\n [mentions, setMentions],\n );\n\n // 查找当前活跃的快捷键配置\n const activeQuickKeyConfig = useMemo(() => {\n if (!activeQuickKey) return null;\n return quickKeys.find((qk) => qk.key === activeQuickKey) || null;\n }, [activeQuickKey, quickKeys]);\n\n const activeQuickKeyOptionsLength = activeQuickKeyConfig?.options.length || 0;\n\n useEffect(() => {\n setQuickKeyActiveIndex(0);\n }, [activeQuickKey]);\n\n useEffect(() => {\n if (activeQuickKeyOptionsLength <= 0) {\n setQuickKeyActiveIndex(0);\n return;\n }\n\n // 业务方可能在 onQuickKeyTrigger 中动态更新 options;\n // 这里只做越界归一化,不重置有效索引,避免键盘高亮移动后又跳回第一项。\n setQuickKeyActiveIndex(\n (prev) => ((prev % activeQuickKeyOptionsLength) + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength,\n );\n }, [activeQuickKeyOptionsLength]);\n\n const getNextQuickKeyIndex = useCallback(\n (current: number, step: number) => {\n if (activeQuickKeyOptionsLength <= 0) return 0;\n return (\n (current + step + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength\n );\n },\n [activeQuickKeyOptionsLength],\n );\n\n // 从当前光标前的连续文本片段中查找最近的快捷键,例如 abc@doc 会触发 @。\n const detectQuickKey = useCallback(\n (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n let found = false;\n for (let i = textBeforeCursor.length - 1; i >= 0; i--) {\n const char = textBeforeCursor[i];\n if (/\\s/.test(char)) break;\n if (quickKeyChars.includes(char)) {\n const keyword = textBeforeCursor.slice(i + 1);\n setActiveQuickKey(char);\n setQuickKeyKeyword(keyword);\n setQuickKeyTriggerIdx(i);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(char, keyword);\n found = true;\n break;\n }\n }\n\n if (!found && activeQuickKey) {\n const triggerChar = text[quickKeyTriggerIdx];\n const keyword = text.slice(quickKeyTriggerIdx + 1, cursorPos);\n if (\n quickKeyTriggerIdx < 0 ||\n !triggerChar ||\n !quickKeyChars.includes(triggerChar) ||\n /\\s/.test(keyword)\n ) {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n } else {\n setQuickKeyKeyword(keyword);\n }\n }\n },\n [activeQuickKey, onQuickKeyTrigger, quickKeyTriggerIdx, quickKeys],\n );\n\n // 选择快捷项后转成结构化 Mention;inline 模式会替换掉触发字符和关键词。\n const handleQuickKeySelect = useCallback(\n (option: any) => {\n const mentionType =\n activeQuickKeyConfig?.mentionType ||\n activeQuickKeyConfig?.tagType ||\n activeQuickKey ||\n \"unknown\";\n const newMention: MentionTag = {\n id: generateId(),\n label: option.label,\n type: mentionType,\n value: option.value ?? option.uri ?? option.name ?? option.label,\n uri: option.uri,\n targetId: option.targetId ?? option.skillNo ?? option.pluginNo,\n displayName: option.displayName ?? option.label,\n trigger: activeQuickKey || undefined,\n icon: option.icon,\n data: option,\n };\n activeQuickKeyConfig?.onSelect?.(option);\n\n if (inlineTags) {\n inlineInputRef.current?.insertMention(newMention, {\n start: quickKeyTriggerIdx,\n end: quickKeyTriggerIdx + 1 + quickKeyKeyword.length,\n });\n } else {\n setMentions([...mentions, newMention]);\n\n // 从输入框中删除快捷键字符和关键词\n if (quickKeyTriggerIdx >= 0) {\n const newValue =\n value.slice(0, quickKeyTriggerIdx) +\n value.slice(quickKeyTriggerIdx + 1 + quickKeyKeyword.length);\n setValue(newValue);\n }\n }\n\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n inlineTags\n ? inlineInputRef.current?.focus()\n : textareaRef.current?.focus();\n },\n [\n activeQuickKey,\n activeQuickKeyConfig,\n inlineTags,\n mentions,\n setMentions,\n value,\n quickKeyTriggerIdx,\n quickKeyKeyword,\n setValue,\n ],\n );\n\n // 处理输入框变化(含快捷键检测)\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n\n // 检测快捷键触发\n detectQuickKey(newValue, e.target.selectionStart || 0);\n };\n\n const handleInlineInputChange = (newValue: string) => {\n setValue(newValue);\n // contenteditable 的 selection 不一定和 React state 同步,需实时读取内部光标 offset。\n detectQuickKey(\n newValue,\n inlineInputRef.current?.getCursorOffset() || newValue.length,\n );\n };\n\n const handleQuickKeyByText = (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n\n // 检测刚输入的字符是否是快捷键\n const lastChar = textBeforeCursor[cursorPos - 1];\n if (lastChar && quickKeyChars.includes(lastChar)) {\n // 上下键导航后会触发 keyup,此时光标前仍是同一个快捷键字符;\n // 如果重复重置 activeIndex,视觉上会“移动一下又回到第一项”。\n if (activeQuickKey === lastChar && quickKeyTriggerIdx === cursorPos - 1) {\n return;\n }\n setActiveQuickKey(lastChar);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(cursorPos - 1);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(lastChar, \"\");\n }\n };\n\n // onChange 负责更新搜索词;onKeyUp 兜底捕获刚输入的快捷键字符。\n const isQuickListControlKey = (key: string) =>\n key === \"ArrowDown\" || key === \"ArrowUp\" || key === \"Enter\" || key === \"Escape\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n const target = e.target as HTMLTextAreaElement;\n handleQuickKeyByText(target.value || \"\", target.selectionStart || 0);\n };\n\n const handleInlineKeyUp = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n // inline 输入区不是 textarea,不能读 event.target.value,只能从 ref 取纯文本。\n const text = inlineInputRef.current?.getText() || \"\";\n const cursorPos =\n inlineInputRef.current?.getCursorOffset() || text.length;\n handleQuickKeyByText(text, cursorPos);\n };\n\n // 处理提交\n const handleSubmit = () => {\n // 生成期间允许继续编辑下一条消息,但停止按钮仍代表当前唯一可执行动作。\n if (loading) return;\n if (!value.trim() && files.length === 0 && mentions.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter(\n (file) => file.status === \"uploading\",\n );\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit(createSubmitData(formattedFiles));\n }\n\n setValue(\"\");\n setMentions([]);\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit(createSubmitData(formattedFiles));\n }\n\n setValue(\"\");\n setMentions([]);\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url ||\n \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const quickKeyOptions = activeQuickKeyConfig?.options || [];\n\n if (activeQuickKey && quickKeyOptions.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, 1));\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, -1));\n return;\n }\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleQuickKeySelect(\n quickKeyOptions[\n Math.min(quickKeyActiveIndex, quickKeyOptions.length - 1)\n ],\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n return;\n }\n }\n\n if (e.key === \"Enter\" && !e.shiftKey && !activeQuickKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div className={styles.contextFiles}>\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n size=\"small\"\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const controlsDisabled = disabled || uploading || loading;\n const inputDisabled = disabled || uploading;\n const hasContent = value.trim().length > 0;\n const hasFiles = files.some((f) => f.status === \"success\");\n const hasMentions = mentions.length > 0;\n const canSend = hasContent || hasFiles || hasMentions;\n\n // 定义按钮组件\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n };\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={controlsDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={controlsDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n const headerNode = renderSlot(header, false);\n const fileListNode = files.length > 0 ? renderFileList() : null;\n\n // 默认后缀仅保留发送/停止按钮;上传与清空统一放到底部 actionBar,方便业务扩展左侧按钮组。\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {sendButtonRender ? (\n sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })\n ) : (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n )}\n </div>\n );\n\n const defaultActionBar = (\n <div className={styles.actionBar}>\n <div className={styles.actionBarLeft}>\n {renderSlot(footerLeft, false)}\n </div>\n <div className={styles.actionBarRight}>\n {clearBtnShow && <ClearButton />}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onDragOver={draggable ? handleDragOver : undefined}\n onDragLeave={draggable ? handleDragLeave : undefined}\n onDrop={draggable ? handleDrop : undefined}\n >\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {(headerNode || fileListNode) && (\n <div className={styles.contextBar}>\n {/* 头部插槽与附件共享上下文行,便于知识库、文件等输入上下文统一展示。 */}\n {headerNode && (\n <div className={styles.contextHeader}>{headerNode}</div>\n )}\n {fileListNode}\n </div>\n )}\n\n {/* textarea 模式下保留历史标签展示;inlineTags 模式标签直接混排在输入区内 */}\n {!inlineTags && (\n <InputTags mentions={mentions} onRemove={handleRemoveMention} />\n )}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n {inlineTags ? (\n <InlineTagInput\n ref={inlineInputRef}\n value={value}\n mentions={mentions}\n defaultInputParts={defaultInputParts}\n placeholder={placeholder}\n disabled={inputDisabled}\n onChange={handleInlineInputChange}\n onMentionsChange={setMentions}\n onKeyDown={handleKeyDown as any}\n onKeyUp={handleInlineKeyUp}\n renderMention={renderMention ?? renderTag}\n />\n ) : (\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n ref={textareaRef}\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n )}\n </div>\n\n {/* 快捷键弹出列表 */}\n {activeQuickKey && activeQuickKeyConfig && (\n <div className={styles.quickListWrapper}>\n <QuickList\n config={activeQuickKeyConfig}\n activeIndex={quickKeyActiveIndex}\n onSelect={handleQuickKeySelect}\n onClose={() => {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n }}\n visible={true}\n />\n </div>\n )}\n\n {/* 底部操作行:左侧上传/业务按钮,右侧清空/发送按钮 */}\n {footer === false\n ? defaultActionBar\n : renderSlot(footer, defaultActionBar)}\n </div>\n </div>\n\n {/* 提示文案 */}\n {!footer && (\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n )}\n </div>\n );\n },\n);\n\nXAdkSender.displayName = \"XAdkSender\";\nexport default XAdkSender;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","useCallback","forwardRef","useImperativeHandle","useMemo","useEffect","Popconfirm","message","Tooltip","Input","Modal","ClearOutlined","LoadingOutlined","ArrowUpOutlined","useStyles","FileGallery","InputSuggestionList","InputTags","InlineTagInput","getExt","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","XAdkSender","_ref","ref","_ref$clearBtnShow","clearBtnShow","_ref$draggable","draggable","onFileSelect","_ref$loading","loading","_ref$disabled","disabled","controlledValue","value","_ref$defaultValue","defaultValue","_ref$uploadRequest","uploadRequest","onClear","onChange","onSubmit","onStop","onFilesChange","onUploadSuccess","onUploadError","_ref$maxFileSize","maxFileSize","_ref$placeholder","placeholder","_ref$validators","validators","customValidators","_ref$allowedFileTypes","allowedFileTypes","_ref$maxFiles","maxFiles","Infinity","sendButtonRender","suffix","header","prefix","footer","footerLeft","_ref$quickKeys","quickKeys","_ref$inlineTags","inlineTags","renderMention","renderTag","controlledMentions","mentions","controlledTags","tags","defaultMentions","_ref$defaultTags","defaultTags","defaultInputParts","onMentionsChange","onTagsChange","onQuickKeyTrigger","_ref$submitFormat","submitFormat","formatMention","formatTag","transformSubmitData","styles","isControlled","undefined","_useState","_useState2","_slicedToArray","internalValue","setInternalValue","setValue","newValue","resolvedControlledMentions","initialMentions","isMentionsControlled","_useState3","_useState4","internalMentions","setInternalMentions","setMentions","newMentions","_useState5","_useState6","files","setFiles","_useState7","_useState8","isDragOver","setIsDragOver","containerRef","textareaRef","inlineInputRef","_useState9","_useState10","activeQuickKey","setActiveQuickKey","_useState11","_useState12","quickKeyKeyword","setQuickKeyKeyword","_useState13","_useState14","quickKeyTriggerIdx","setQuickKeyTriggerIdx","_useState15","_useState16","quickKeyActiveIndex","setQuickKeyActiveIndex","closeQuickKeyList","generateId","Date","now","toString","Math","random","substr","normalizeUploadResponse","response","_response$data","_ref2","data","Array","isArray","escapeXml","text","replace","escapeMarkdownLabel","getMentionSubmitValue","mention","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_mention$value","_mention$data","_mention$data2","_mention$data3","String","uri","name","targetId","displayName","label","defaultFormatMention","format","index","concat","type","id","href","includes","encodeURIComponent","serializeMention","_ref10","_formatMention","getSubmitParts","_inlineInputRef$curre","parts","current","getParts","length","textParts","mentionParts","map","_toConsumableArray","serializeParts","reduce","content","part","tagIndex","result","join","createSubmitData","formattedFiles","rawText","standardData","_objectSpread","payload","checkFileType","file","ext","some","endsWith","startsWith","split","slice","isDuplicateFile","f","size","builtInValidators","_file","_ref11","maxSize","_ref12","allValidators","validateFile","_iterator","_createForOfIteratorHelper","_step","s","n","done","validator","error","valid","err","e","handleFileSelect","selectedFiles","fileArray","from","validFiles","forEach","validation","push","uid","progress","status","prev","next","uploadFiles","addFiles","rawFiles","insertMention","_inlineInputRef$curre2","insertTag","_inlineInputRef$curre3","focus","_inlineInputRef$curre4","_textareaRef$current","_ref13","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fileList","_iterator2","_step2","_loop","wrap","_callee$","_context2","localFile","_loop$","_context","onProgress","percent","onSuccess","responseData","fileId","tempUrl","fileUrl","url","onError","errorMessage","t0","console","Error","stop","delegateYield","t1","finish","_x","apply","arguments","handleRemoveFile","filter","handleDragOver","preventDefault","stopPropagation","handleDragLeave","handleDrop","dataTransfer","handleRemoveMention","item","activeQuickKeyConfig","find","qk","key","activeQuickKeyOptionsLength","options","getNextQuickKeyIndex","step","detectQuickKey","cursorPos","quickKeyChars","textBeforeCursor","found","i","char","test","keyword","triggerChar","handleQuickKeySelect","option","_ref14","_ref15","_option$value","_ref16","_option$targetId","_option$displayName","_option$onSelect","_activeQuickKeyConfig","_inlineInputRef$curre7","_textareaRef$current2","mentionType","tagType","newMention","skillNo","pluginNo","trigger","icon","onSelect","call","action","_inlineInputRef$curre5","deleteTextRange","start","end","_inlineInputRef$curre6","handleInputChange","target","selectionStart","handleInlineInputChange","_inlineInputRef$curre8","getCursorOffset","handleQuickKeyByText","lastChar","isQuickListControlKey","handleKeyUp","handleInlineKeyUp","_inlineInputRef$curre9","_inlineInputRef$curre10","getText","handleSubmit","trim","warning","successFiles","uploadingFiles","confirm","title","okText","cancelText","onOk","formatFilesForServer","onCancel","info","fileName","fileType","fileSize","mimeType","raw","handleKeyDown","nativeEvent","isComposing","keyCode","quickKeyOptions","min","shiftKey","renderFileList","className","contextFiles","children","removable","onRemove","containerClass","container","uploading","controlsDisabled","inputDisabled","hasContent","hasFiles","hasMentions","canSend","SendButton","props","onSend","iconButton","sendButton","onClick","spin","ClearButton","onConfirm","placement","clearButton","actionsComponents","renderSlot","slot","oriNode","components","headerNode","fileListNode","defaultSuffix","buttonGroup","defaultActionBar","actionBar","actionBarLeft","actionBarRight","onBlur","event","nextFocusedNode","relatedTarget","currentTarget","contains","onDragOver","onDragLeave","onDrop","mainArea","senderWrap","contextBar","contextHeader","inputAndButtons","onKeyDown","onKeyUp","textAreaWrapper","TextArea","textArea","autoSize","minRows","maxRows","style","border","boxShadow","outline","padding","quickListWrapper","config","activeIndex","onClose","visible","tip"],"sources":["../../../../src/components/XAdkSender/index.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useCallback,\n forwardRef,\n useImperativeHandle,\n useMemo,\n useEffect,\n} from \"react\";\nimport { Popconfirm, message, Tooltip, Input, Modal } from \"antd\";\nimport {\n ClearOutlined,\n LoadingOutlined,\n ArrowUpOutlined,\n} from \"@ant-design/icons\";\nimport {\n XAdkSenderProps,\n XAdkSenderHandle,\n ServerFile,\n LocalFile,\n ActionsComponents,\n FileValidator,\n UploadFileResult,\n MentionTag,\n XAdkSenderSubmitData,\n XAdkSenderSubmitFormat,\n XAdkSenderSubmitPart,\n} from \"@/types\";\nimport { useStyles } from \"./styles\";\nimport FileGallery from \"../FileGallery\";\nimport InputSuggestionList from \"./InputSuggestionList\";\nimport InputTags from \"./InputTags\";\nimport InlineTagInput, { InlineTagInputRef } from \"./InlineTagInput\";\nimport { getExt } from \"@/utils/file\";\n\nconst XAdkSender = forwardRef<XAdkSenderHandle, XAdkSenderProps>(\n (\n {\n clearBtnShow = true,\n draggable = false,\n onFileSelect,\n loading = false,\n disabled = false,\n value: controlledValue,\n defaultValue = \"\",\n uploadRequest = () => {},\n onClear,\n onChange,\n onSubmit,\n onStop,\n onFilesChange,\n onUploadSuccess,\n onUploadError,\n maxFileSize = 10,\n placeholder = \"\",\n validators: customValidators = [],\n allowedFileTypes = [],\n maxFiles = Infinity,\n sendButtonRender,\n suffix,\n header,\n prefix,\n footer,\n footerLeft,\n quickKeys = [],\n inlineTags = false,\n renderMention,\n renderTag,\n mentions: controlledMentions,\n tags: controlledTags,\n defaultMentions,\n defaultTags = [],\n defaultInputParts,\n onMentionsChange,\n onTagsChange,\n onQuickKeyTrigger,\n submitFormat = \"text\",\n formatMention,\n formatTag,\n transformSubmitData,\n },\n ref,\n ) => {\n const styles = useStyles();\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n const setValue = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // mentions 支持受控/非受控两种模式;inlineTags 打开时会和输入内容混排。\n const resolvedControlledMentions = controlledMentions ?? controlledTags;\n const initialMentions = defaultMentions ?? defaultTags;\n const isMentionsControlled = resolvedControlledMentions !== undefined;\n const [internalMentions, setInternalMentions] =\n useState<MentionTag[]>(initialMentions);\n const mentions = isMentionsControlled\n ? resolvedControlledMentions!\n : internalMentions;\n const setMentions = (newMentions: MentionTag[]) => {\n if (!isMentionsControlled) {\n setInternalMentions(newMentions);\n }\n onMentionsChange?.(newMentions);\n onTagsChange?.(newMentions);\n };\n\n const [files, setFiles] = useState<LocalFile[]>([]);\n const [isDragOver, setIsDragOver] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<any>(null);\n const inlineInputRef = useRef<InlineTagInputRef>(null);\n\n // 快捷键弹层状态:记录触发字符、关键词,以及触发字符在纯文本中的位置。\n // SDK 不内置搜索框;业务方可在 onQuickKeyTrigger 中根据 keyword 自行更新 quickKeys.options。\n const [activeQuickKey, setActiveQuickKey] = useState<string | null>(null);\n const [quickKeyKeyword, setQuickKeyKeyword] = useState(\"\");\n const [quickKeyTriggerIdx, setQuickKeyTriggerIdx] = useState(-1);\n const [quickKeyActiveIndex, setQuickKeyActiveIndex] = useState(0);\n\n const closeQuickKeyList = useCallback(() => {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n }, []);\n\n // 生成唯一ID\n const generateId = () => {\n return Date.now().toString(36) + Math.random().toString(36).substr(2);\n };\n\n const normalizeUploadResponse = (response: any): UploadFileResult => {\n const data = response?.data ?? response;\n return (Array.isArray(data) ? data[0] : data) ?? {};\n };\n\n const escapeXml = (text: string) =>\n text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n\n const escapeMarkdownLabel = (text: string) =>\n text.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\]/g, \"\\\\]\");\n\n const getMentionSubmitValue = (mention: MentionTag) =>\n String(\n mention.value ??\n mention.uri ??\n mention.data?.uri ??\n mention.data?.value ??\n mention.data?.name ??\n mention.targetId ??\n mention.displayName ??\n mention.label ??\n \"\",\n );\n\n const defaultFormatMention = (\n mention: MentionTag,\n format: Exclude<XAdkSenderSubmitFormat, \"structured\">,\n index: number,\n ) => {\n const value = getMentionSubmitValue(mention);\n if (format === \"xml\") {\n return `<mention type=\"${escapeXml(mention.type)}\" id=\"${escapeXml(mention.id)}\" label=\"${escapeXml(mention.label)}\" value=\"${escapeXml(value)}\" />`;\n }\n\n if (format === \"markdown\") {\n const href =\n mention.uri ||\n (value.includes(\"://\")\n ? value\n : `xadk-mention://${encodeURIComponent(mention.type)}/${encodeURIComponent(mention.id)}`);\n return `[@${escapeMarkdownLabel(mention.displayName || mention.label)}](${href})`;\n }\n\n return `@${mention.displayName || value || `mention-${index + 1}`}`;\n };\n\n const serializeMention = (\n mention: MentionTag,\n format: Exclude<XAdkSenderSubmitFormat, \"structured\">,\n index: number,\n ) =>\n formatMention?.(mention, { format, index }) ??\n formatTag?.(mention, { format, index }) ??\n defaultFormatMention(mention, format, index);\n\n const getSubmitParts = useCallback((): XAdkSenderSubmitPart[] => {\n if (inlineTags) {\n const parts = inlineInputRef.current?.getParts() || [];\n if (parts.length > 0) return parts;\n }\n\n const textParts: XAdkSenderSubmitPart[] = value\n ? [{ type: \"text\", text: value }]\n : [];\n const mentionParts = mentions.map((mention) => ({\n type: \"mention\" as const,\n mention,\n }));\n return [...mentionParts, ...textParts];\n }, [inlineTags, mentions, value]);\n\n const serializeParts = (\n parts: XAdkSenderSubmitPart[],\n format: XAdkSenderSubmitFormat,\n ) => {\n if (format === \"structured\") {\n return parts.reduce(\n (content, part) => content + (part.type === \"text\" ? part.text : \"\"),\n \"\",\n );\n }\n\n let tagIndex = 0;\n return parts\n .map((part) => {\n if (part.type === \"text\") return part.text;\n const result = serializeMention(part.mention, format, tagIndex);\n tagIndex += 1;\n return result;\n })\n .join(\"\");\n };\n\n const createSubmitData = (\n formattedFiles: ServerFile[],\n ): XAdkSenderSubmitData => {\n const parts = getSubmitParts();\n const rawText = parts.reduce(\n (content, part) => content + (part.type === \"text\" ? part.text : \"\"),\n \"\",\n );\n const standardData: Omit<XAdkSenderSubmitData, \"payload\"> = {\n text: serializeParts(parts, submitFormat),\n rawText,\n format: submitFormat,\n parts,\n files: formattedFiles,\n mentions,\n tags: mentions,\n };\n\n return {\n ...standardData,\n payload: transformSubmitData?.(standardData),\n };\n };\n\n // 检查文件类型\n const checkFileType = (file: File): boolean => {\n if (allowedFileTypes?.length > 0) {\n const ext = getExt(file);\n\n return allowedFileTypes.some((type) => {\n if (type.includes(\"/\")) {\n if (type.endsWith(\"/*\")) {\n return file.type.startsWith(type.split(\"/\")[0]);\n }\n return file.type === type;\n }\n\n if (type.startsWith(\".\")) {\n return ext === type.slice(1);\n }\n\n return false;\n });\n }\n return true;\n };\n\n // 重复文件检测\n const isDuplicateFile = (file: File, files: LocalFile[]) => {\n return files.some((f) => f.name === file.name && f.size === file.size);\n };\n\n // 内置校验器集合\n const builtInValidators: FileValidator[] = [\n (_file, { files }) => {\n if (files.length >= maxFiles) {\n return `最多只能上传 ${maxFiles} 个文件`;\n }\n return null;\n },\n (file) => {\n const maxSize = maxFileSize * 1024 * 1024;\n if (file.size > maxSize) {\n return `文件大小不能超过 ${maxFileSize}MB`;\n }\n return null;\n },\n (file) => {\n if (!checkFileType(file)) {\n return \"不支持的文件类型\";\n }\n return null;\n },\n (file, { files }) => {\n if (isDuplicateFile(file, files)) {\n return \"文件已存在\";\n }\n return null;\n },\n ];\n\n const allValidators = [...builtInValidators, ...customValidators];\n\n // 验证文件\n const validateFile = (file: File): { valid: boolean; message?: string } => {\n for (const validator of allValidators) {\n const error = validator(file, { files });\n if (error) {\n return { valid: false, message: error };\n }\n }\n return { valid: true };\n };\n\n // 处理文件选择\n const handleFileSelect = useCallback(\n (selectedFiles: File[]) => {\n const fileArray = Array.from(selectedFiles);\n\n if (files.length + fileArray.length > maxFiles) {\n message.error(`最多只能上传 ${maxFiles} 个文件`);\n return;\n }\n\n const validFiles: LocalFile[] = [];\n\n fileArray.forEach((file) => {\n const validation = validateFile(file);\n\n if (validation.valid) {\n validFiles.push({\n id: generateId(),\n uid: generateId(),\n name: file.name,\n size: file.size,\n type: file.type,\n file,\n progress: 0,\n status: \"pending\",\n response: null,\n });\n } else {\n message.error(validation.message);\n }\n });\n\n if (validFiles.length > 0) {\n setFiles((prev) => {\n const next = [...prev, ...validFiles];\n onFilesChange?.(next);\n return next;\n });\n uploadFiles(validFiles);\n }\n },\n [files, maxFiles, maxFileSize, allowedFileTypes],\n );\n\n // 暴露给业务工具栏调用的命令式能力;外部 Popover 选择标签时可插入到当前光标位置。\n useImperativeHandle(\n ref,\n () => ({\n addFiles: (rawFiles: File[]) => {\n handleFileSelect(rawFiles);\n },\n insertMention: (mention: MentionTag) => {\n if (inlineTags) {\n inlineInputRef.current?.insertMention(mention);\n return;\n }\n setMentions([...mentions, mention]);\n },\n insertTag: (mention: MentionTag) => {\n if (inlineTags) {\n inlineInputRef.current?.insertMention(mention);\n return;\n }\n setMentions([...mentions, mention]);\n },\n focus: () => {\n inlineTags\n ? inlineInputRef.current?.focus()\n : textareaRef.current?.focus();\n },\n }),\n [handleFileSelect, inlineTags, setMentions, mentions],\n );\n\n // 上传文件\n const uploadFiles = async (fileList: LocalFile[]) => {\n for (const localFile of fileList) {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, status: \"uploading\" } : f,\n ),\n );\n\n try {\n await uploadRequest({\n file: localFile.file,\n onProgress: (e) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id ? { ...f, progress: e.percent } : f,\n ),\n );\n },\n onSuccess: (response) => {\n const responseData = normalizeUploadResponse(response);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"success\",\n progress: 100,\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n }\n : f,\n ),\n );\n\n onUploadSuccess?.({\n ...localFile,\n status: \"success\",\n response,\n fileId: responseData.fileId || responseData.id,\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url,\n });\n },\n onError: (error) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage: error.message,\n }\n : f,\n ),\n );\n onUploadError?.(localFile, error);\n },\n });\n } catch (error) {\n console.error(\"上传处理错误:\", error);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === localFile.id\n ? {\n ...f,\n status: \"error\",\n errorMessage:\n error instanceof Error ? error.message : \"上传处理失败\",\n }\n : f,\n ),\n );\n message.error(`${localFile.name} 上传失败`);\n }\n }\n };\n\n // 删除文件\n const handleRemoveFile = (id: string) => {\n setFiles((prev) => {\n const next = prev.filter((file) => file.id !== id);\n onFilesChange?.(next);\n return next;\n });\n };\n\n // 处理拖拽事件\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (draggable) {\n setIsDragOver(true);\n }\n },\n [draggable],\n );\n\n const handleDragLeave = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (draggable) {\n setIsDragOver(false);\n }\n },\n [draggable],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragOver(false);\n\n if (\n draggable &&\n e.dataTransfer.files &&\n e.dataTransfer.files.length > 0\n ) {\n // 内核不再自行处理文件,交给外层(DefaultLayout/业务)通过 onFileSelect 决定\n onFileSelect?.(Array.from(e.dataTransfer.files));\n }\n },\n [draggable, onFileSelect],\n );\n\n // 删除标签\n const handleRemoveMention = useCallback(\n (id: string) => {\n setMentions(mentions.filter((item) => item.id !== id));\n },\n [mentions, setMentions],\n );\n\n // 查找当前活跃的快捷键配置\n const activeQuickKeyConfig = useMemo(() => {\n if (!activeQuickKey) return null;\n return quickKeys.find((qk) => qk.key === activeQuickKey) || null;\n }, [activeQuickKey, quickKeys]);\n\n const activeQuickKeyOptionsLength =\n activeQuickKeyConfig?.options.length || 0;\n\n useEffect(() => {\n setQuickKeyActiveIndex(0);\n }, [activeQuickKey]);\n\n useEffect(() => {\n if (activeQuickKeyOptionsLength <= 0) {\n setQuickKeyActiveIndex(0);\n return;\n }\n\n // 业务方可能在 onQuickKeyTrigger 中动态更新 options;\n // 这里只做越界归一化,不重置有效索引,避免键盘高亮移动后又跳回第一项。\n setQuickKeyActiveIndex(\n (prev) =>\n ((prev % activeQuickKeyOptionsLength) + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength,\n );\n }, [activeQuickKeyOptionsLength]);\n\n const getNextQuickKeyIndex = useCallback(\n (current: number, step: number) => {\n if (activeQuickKeyOptionsLength <= 0) return 0;\n return (\n (current + step + activeQuickKeyOptionsLength) %\n activeQuickKeyOptionsLength\n );\n },\n [activeQuickKeyOptionsLength],\n );\n\n // 从当前光标前的连续文本片段中查找最近的快捷键,例如 abc@doc 会触发 @。\n const detectQuickKey = useCallback(\n (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n let found = false;\n for (let i = textBeforeCursor.length - 1; i >= 0; i--) {\n const char = textBeforeCursor[i];\n if (/\\s/.test(char)) break;\n if (quickKeyChars.includes(char)) {\n const keyword = textBeforeCursor.slice(i + 1);\n setActiveQuickKey(char);\n setQuickKeyKeyword(keyword);\n setQuickKeyTriggerIdx(i);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(char, keyword);\n found = true;\n break;\n }\n }\n\n if (!found && activeQuickKey) {\n const triggerChar = text[quickKeyTriggerIdx];\n const keyword = text.slice(quickKeyTriggerIdx + 1, cursorPos);\n if (\n quickKeyTriggerIdx < 0 ||\n !triggerChar ||\n !quickKeyChars.includes(triggerChar) ||\n /\\s/.test(keyword)\n ) {\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n } else {\n setQuickKeyKeyword(keyword);\n }\n }\n },\n [activeQuickKey, onQuickKeyTrigger, quickKeyTriggerIdx, quickKeys],\n );\n\n // 选择快捷项后转成结构化 Mention;inline 模式会替换掉触发字符和关键词。\n const handleQuickKeySelect = useCallback(\n (option: any) => {\n const mentionType =\n activeQuickKeyConfig?.mentionType ||\n activeQuickKeyConfig?.tagType ||\n activeQuickKey ||\n \"unknown\";\n const newMention: MentionTag = {\n id: generateId(),\n label: option.label,\n type: mentionType,\n value: option.value ?? option.uri ?? option.name ?? option.label,\n uri: option.uri,\n targetId: option.targetId ?? option.skillNo ?? option.pluginNo,\n displayName: option.displayName ?? option.label,\n trigger: activeQuickKey || undefined,\n icon: option.icon,\n data: option,\n };\n option.onSelect?.(option);\n activeQuickKeyConfig?.onSelect?.(option);\n\n if (option.action === \"command\") {\n if (inlineTags) {\n inlineInputRef.current?.deleteTextRange({\n start: quickKeyTriggerIdx,\n end: quickKeyTriggerIdx + 1 + quickKeyKeyword.length,\n });\n } else if (quickKeyTriggerIdx >= 0) {\n setValue(\n value.slice(0, quickKeyTriggerIdx) +\n value.slice(quickKeyTriggerIdx + 1 + quickKeyKeyword.length),\n );\n }\n } else if (inlineTags) {\n inlineInputRef.current?.insertMention(newMention, {\n start: quickKeyTriggerIdx,\n end: quickKeyTriggerIdx + 1 + quickKeyKeyword.length,\n });\n } else {\n setMentions([...mentions, newMention]);\n\n // 从输入框中删除快捷键字符和关键词\n if (quickKeyTriggerIdx >= 0) {\n const newValue =\n value.slice(0, quickKeyTriggerIdx) +\n value.slice(quickKeyTriggerIdx + 1 + quickKeyKeyword.length);\n setValue(newValue);\n }\n }\n\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n inlineTags\n ? inlineInputRef.current?.focus()\n : textareaRef.current?.focus();\n },\n [\n activeQuickKey,\n activeQuickKeyConfig,\n inlineTags,\n mentions,\n setMentions,\n value,\n quickKeyTriggerIdx,\n quickKeyKeyword,\n setValue,\n ],\n );\n\n // 处理输入框变化(含快捷键检测)\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n\n // 检测快捷键触发\n detectQuickKey(newValue, e.target.selectionStart || 0);\n };\n\n const handleInlineInputChange = (newValue: string) => {\n setValue(newValue);\n // contenteditable 的 selection 不一定和 React state 同步,需实时读取内部光标 offset。\n detectQuickKey(\n newValue,\n inlineInputRef.current?.getCursorOffset() || newValue.length,\n );\n };\n\n const handleQuickKeyByText = (text: string, cursorPos: number) => {\n const quickKeyChars = quickKeys.map((qk) => qk.key);\n if (quickKeyChars.length === 0) return;\n\n const textBeforeCursor = text.slice(0, cursorPos);\n\n // 检测刚输入的字符是否是快捷键\n const lastChar = textBeforeCursor[cursorPos - 1];\n if (lastChar && quickKeyChars.includes(lastChar)) {\n // 上下键导航后会触发 keyup,此时光标前仍是同一个快捷键字符;\n // 如果重复重置 activeIndex,视觉上会“移动一下又回到第一项”。\n if (\n activeQuickKey === lastChar &&\n quickKeyTriggerIdx === cursorPos - 1\n ) {\n return;\n }\n setActiveQuickKey(lastChar);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(cursorPos - 1);\n setQuickKeyActiveIndex(0);\n onQuickKeyTrigger?.(lastChar, \"\");\n }\n };\n\n // onChange 负责更新搜索词;onKeyUp 兜底捕获刚输入的快捷键字符。\n const isQuickListControlKey = (key: string) =>\n key === \"ArrowDown\" ||\n key === \"ArrowUp\" ||\n key === \"Enter\" ||\n key === \"Escape\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n const target = e.target as HTMLTextAreaElement;\n handleQuickKeyByText(target.value || \"\", target.selectionStart || 0);\n };\n\n const handleInlineKeyUp = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (activeQuickKey && isQuickListControlKey(e.key)) return;\n // inline 输入区不是 textarea,不能读 event.target.value,只能从 ref 取纯文本。\n const text = inlineInputRef.current?.getText() || \"\";\n const cursorPos =\n inlineInputRef.current?.getCursorOffset() || text.length;\n handleQuickKeyByText(text, cursorPos);\n };\n\n // 处理提交\n const handleSubmit = () => {\n // 生成期间允许继续编辑下一条消息,但停止按钮仍代表当前唯一可执行动作。\n if (loading) return;\n if (!value.trim() && files.length === 0 && mentions.length === 0) {\n message.warning(\"请输入消息或选择文件\");\n return;\n }\n\n const successFiles = files.filter((file) => file.status === \"success\");\n const uploadingFiles = files.filter(\n (file) => file.status === \"uploading\",\n );\n\n if (uploadingFiles.length > 0) {\n Modal.confirm({\n title: \"文件上传中\",\n content: `还有 ${uploadingFiles.length} 个文件正在上传,是否继续发送?`,\n okText: \"发送已完成的\",\n cancelText: \"等待全部完成\",\n onOk: () => {\n const formattedFiles = formatFilesForServer(successFiles);\n if (onSubmit) {\n onSubmit(createSubmitData(formattedFiles));\n }\n\n setValue(\"\");\n setMentions([]);\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n },\n onCancel: () => {\n message.info(\"请等待文件上传完成后再发送\");\n },\n });\n } else {\n const formattedFiles = formatFilesForServer(successFiles);\n\n if (onSubmit) {\n onSubmit(createSubmitData(formattedFiles));\n }\n\n setValue(\"\");\n setMentions([]);\n setFiles((prev) => prev.filter((f) => f.status !== \"success\"));\n }\n };\n\n // 格式化文件列表为服务端格式\n const formatFilesForServer = (fileList: LocalFile[]): ServerFile[] => {\n return fileList\n .filter((file) => file.status === \"success\" && file.response)\n .map((file) => {\n const responseData = normalizeUploadResponse(file.response);\n\n return {\n fileName: responseData.fileName || file.name,\n fileId: responseData.fileId || responseData.id || \"\",\n tempUrl:\n responseData.tempUrl ||\n responseData.fileUrl ||\n responseData.url ||\n \"\",\n type: responseData.fileType || responseData.type || getExt(file),\n size: responseData.fileSize || responseData.size || file.size,\n mimeType: responseData.mimeType || file.type,\n raw: {\n ...responseData,\n },\n };\n });\n };\n\n // 处理回车键\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n // 输入法候选阶段的 Enter 用于确认候选词,不能触发快捷项选择或消息发送。\n if (e.nativeEvent.isComposing || e.keyCode === 229) return;\n\n const quickKeyOptions = activeQuickKeyConfig?.options || [];\n\n if (activeQuickKey && quickKeyOptions.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, 1));\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setQuickKeyActiveIndex((prev) => getNextQuickKeyIndex(prev, -1));\n return;\n }\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleQuickKeySelect(\n quickKeyOptions[\n Math.min(quickKeyActiveIndex, quickKeyOptions.length - 1)\n ],\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setActiveQuickKey(null);\n setQuickKeyKeyword(\"\");\n setQuickKeyTriggerIdx(-1);\n setQuickKeyActiveIndex(0);\n return;\n }\n }\n\n if (e.key === \"Enter\" && !e.shiftKey && !activeQuickKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n // 渲染文件列表\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <div className={styles.contextFiles}>\n {files.map((file) => (\n <FileGallery\n key={file.id}\n file={file}\n size=\"small\"\n removable\n onRemove={handleRemoveFile}\n />\n ))}\n </div>\n );\n };\n\n const containerClass = `${styles.container} ${isDragOver ? \"drag-over\" : \"\"}`;\n const uploading = files.some((f) => f.status === \"uploading\");\n const controlsDisabled = disabled || uploading || loading;\n const inputDisabled = disabled || uploading;\n const hasContent = value.trim().length > 0;\n const hasFiles = files.some((f) => f.status === \"success\");\n const hasMentions = mentions.length > 0;\n const canSend = hasContent || hasFiles || hasMentions;\n\n // 定义按钮组件\n const SendButton = (props: any) => {\n if (sendButtonRender) {\n return (\n <>\n {sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })}\n </>\n );\n }\n return (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n {...props}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n );\n };\n\n const ClearButton = (props: any) => (\n <Popconfirm\n title=\"确定要清空聊天记录吗?\"\n onConfirm={onClear}\n placement=\"top\"\n okText=\"确定\"\n cancelText=\"取消\"\n disabled={controlsDisabled}\n >\n <button\n className={`${styles.iconButton} ${styles.clearButton}`}\n disabled={controlsDisabled}\n aria-label=\"清空聊天记录\"\n {...props}\n >\n <ClearOutlined />\n </button>\n </Popconfirm>\n );\n\n const actionsComponents: ActionsComponents = {\n SendButton,\n ClearButton,\n };\n\n // 渲染插槽内容\n const renderSlot = (\n slot:\n | React.ReactNode\n | false\n | ((\n oriNode: React.ReactNode,\n info: { components: ActionsComponents },\n ) => React.ReactNode | false)\n | undefined,\n oriNode: React.ReactNode,\n ): React.ReactNode | null => {\n if (slot === false) return null;\n if (slot === undefined) return oriNode;\n if (typeof slot === \"function\") {\n const result = slot(oriNode, { components: actionsComponents });\n return result === false ? null : result;\n }\n return slot;\n };\n\n const headerNode = renderSlot(header, false);\n const fileListNode = files.length > 0 ? renderFileList() : null;\n\n // 默认后缀仅保留发送/停止按钮;上传与清空统一放到底部 actionBar,方便业务扩展左侧按钮组。\n const defaultSuffix = (\n <div className={styles.buttonGroup}>\n {sendButtonRender ? (\n sendButtonRender({\n loading,\n disabled: uploading || disabled,\n canSend,\n onSend: handleSubmit,\n onStop,\n })\n ) : (\n <Tooltip title={loading ? \"停止生成\" : \"发送消息\"}>\n <button\n className={`${styles.iconButton} ${styles.sendButton} ${loading ? \"stop\" : \"\"}`}\n onClick={loading ? onStop : handleSubmit}\n disabled={uploading || disabled}\n aria-label={loading ? \"停止生成\" : \"发送消息\"}\n >\n {loading ? <LoadingOutlined spin /> : <ArrowUpOutlined />}\n </button>\n </Tooltip>\n )}\n </div>\n );\n\n const defaultActionBar = (\n <div className={styles.actionBar}>\n <div className={styles.actionBarLeft}>\n {renderSlot(footerLeft, false)}\n </div>\n <div className={styles.actionBarRight}>\n {clearBtnShow && <ClearButton />}\n {renderSlot(suffix, defaultSuffix)}\n </div>\n </div>\n );\n\n return (\n <div\n ref={containerRef}\n className={containerClass}\n onBlur={(event) => {\n const nextFocusedNode = event.relatedTarget as Node | null;\n if (\n nextFocusedNode &&\n event.currentTarget.contains(nextFocusedNode)\n ) {\n return;\n }\n closeQuickKeyList();\n }}\n onDragOver={draggable ? handleDragOver : undefined}\n onDragLeave={draggable ? handleDragLeave : undefined}\n onDrop={draggable ? handleDrop : undefined}\n >\n <div className={styles.mainArea}>\n <div className={styles.senderWrap}>\n {(headerNode || fileListNode) && (\n <div className={styles.contextBar}>\n {/* 头部插槽与附件共享上下文行,便于知识库、文件等输入上下文统一展示。 */}\n {headerNode && (\n <div className={styles.contextHeader}>{headerNode}</div>\n )}\n {fileListNode}\n </div>\n )}\n\n {/* textarea 模式下保留历史标签展示;inlineTags 模式标签直接混排在输入区内 */}\n {!inlineTags && (\n <InputTags mentions={mentions} onRemove={handleRemoveMention} />\n )}\n\n <div className={styles.inputAndButtons}>\n {/* 前缀插槽 */}\n {renderSlot(prefix, false)}\n\n {inlineTags ? (\n <InlineTagInput\n ref={inlineInputRef}\n value={value}\n mentions={mentions}\n defaultInputParts={defaultInputParts}\n placeholder={placeholder}\n disabled={inputDisabled}\n onChange={handleInlineInputChange}\n onMentionsChange={setMentions}\n onKeyDown={handleKeyDown as any}\n onKeyUp={handleInlineKeyUp}\n renderMention={renderMention ?? renderTag}\n />\n ) : (\n <div className={styles.textAreaWrapper}>\n <Input.TextArea\n ref={textareaRef}\n className={styles.textArea}\n value={value}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={placeholder}\n autoSize={{ minRows: 1, maxRows: 4 }}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n outline: \"none\",\n padding: 0,\n }}\n />\n </div>\n )}\n </div>\n\n {/* 快捷键弹出列表 */}\n {activeQuickKey && activeQuickKeyConfig && (\n <div className={styles.quickListWrapper}>\n <InputSuggestionList\n config={activeQuickKeyConfig}\n activeIndex={quickKeyActiveIndex}\n onSelect={handleQuickKeySelect}\n onClose={closeQuickKeyList}\n visible={true}\n />\n </div>\n )}\n\n {/* 底部操作行:左侧上传/业务按钮,右侧清空/发送按钮 */}\n {footer === false\n ? defaultActionBar\n : renderSlot(footer, defaultActionBar)}\n </div>\n </div>\n\n {/* 提示文案 */}\n {!footer && (\n <div className={styles.tip}>\n 内容由AI生成,无法确保真实准确,仅供参考\n </div>\n )}\n </div>\n );\n },\n);\n\nXAdkSender.displayName = \"XAdkSender\";\nexport default XAdkSender;\n"],"mappings":"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"}
|
|
@@ -41,12 +41,12 @@ export var useStyles = withBasicStyles(function () {
|
|
|
41
41
|
// 快捷键弹出列表外层容器
|
|
42
42
|
quickListWrapper: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n "]))),
|
|
43
43
|
// 快捷键弹出列表
|
|
44
|
-
quickList: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n max-height: 320px;\n width:
|
|
44
|
+
quickList: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n max-height: 320px;\n width: 380px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n "]))),
|
|
45
45
|
quickListHeader: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n "]))),
|
|
46
46
|
quickListBody: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n "]))),
|
|
47
47
|
quickListEmpty: css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n "]))),
|
|
48
48
|
quickListGroup: css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral(["\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n "]))),
|
|
49
|
-
quickListItem: css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n flex: 1;\n min-width: 0;\n }\n\n .quick-list-item-label {\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n }\n\n .quick-list-item-desc {\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n }\n "]))),
|
|
49
|
+
quickListItem: css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: 12px;\n }\n\n .quick-list-item-label {\n flex: 0 0 112px;\n overflow: hidden;\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .quick-list-item-desc {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n "]))),
|
|
50
50
|
// 输入框内标签
|
|
51
51
|
inputTags: css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteral(["\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n "]))),
|
|
52
52
|
inputTag: css(_templateObject31 || (_templateObject31 = _taggedTemplateLiteral(["\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n "])))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","mainArea","_templateObject2","senderWrap","_templateObject3","contextBar","_templateObject4","contextHeader","_templateObject5","contextFiles","_templateObject6","inputAndButtons","_templateObject7","textAreaWrapper","_templateObject8","textArea","_templateObject9","inlineInputWrapper","_templateObject10","inlineInput","_templateObject11","inlinePlaceholder","_templateObject12","inlineTag","_templateObject13","buttonGroup","_templateObject14","iconButton","_templateObject15","clearButton","_templateObject16","uploadButton","_templateObject17","sendButton","_templateObject18","tip","_templateObject19","actionBar","_templateObject20","actionBarLeft","_templateObject21","actionBarRight","_templateObject22","quickListWrapper","_templateObject23","quickList","_templateObject24","quickListHeader","_templateObject25","quickListBody","_templateObject26","quickListEmpty","_templateObject27","quickListGroup","_templateObject28","quickListItem","_templateObject29","inputTags","_templateObject30","inputTag","_templateObject31"],"sources":["../../../../src/components/XAdkSender/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n padding: 0 15px 10px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n // 主内容区域\n mainArea: css`\n border-radius: 20px;\n overflow: visible;\n background: #fff;\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 10px 12px 8px;\n position: relative;\n z-index: 1;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n contextBar: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n contextHeader: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 0 0 auto;\n min-width: 0;\n `,\n\n contextFiles: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 1 1 auto;\n min-width: 0;\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 4px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n inlineInputWrapper: css`\n position: relative;\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n `,\n\n inlineInput: css`\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n `,\n\n inlinePlaceholder: css`\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n color: #bfbfbf;\n font-size: 14px;\n line-height: 24px;\n pointer-events: none;\n user-select: none;\n `,\n\n inlineTag: css`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n\n &[data-xadk-inline-mention-type=\"knowledge\"],\n &[data-xadk-inline-mention-type=\"knowledge_directory\"],\n &[data-xadk-inline-mention-type=\"knowledge_file\"],\n &[data-xadk-inline-mention-type=\"kb\"] {\n border-color: #f1f1f1;\n background: #f1f1f1;\n color: #1a1a1a;\n\n .xadk-inline-tag-close {\n color: #8c8c8c;\n }\n }\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n\n actionBar: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n `,\n\n actionBarLeft: css`\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n `,\n\n actionBarRight: css`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n `,\n\n // 快捷键弹出列表外层容器\n quickListWrapper: css`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n `,\n\n // 快捷键弹出列表\n quickList: css`\n max-height: 320px;\n width: 280px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n `,\n\n quickListHeader: css`\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n `,\n\n quickListBody: css`\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n `,\n\n quickListEmpty: css`\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n `,\n\n quickListGroup: css`\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n `,\n\n quickListItem: css`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n flex: 1;\n min-width: 0;\n }\n\n .quick-list-item-label {\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n }\n\n .quick-list-item-desc {\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n }\n `,\n\n // 输入框内标签\n inputTags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n `,\n\n inputTag: css`\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n `,\n}));\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["css","withBasicStyles","useStyles","container","_templateObject","_taggedTemplateLiteral","mainArea","_templateObject2","senderWrap","_templateObject3","contextBar","_templateObject4","contextHeader","_templateObject5","contextFiles","_templateObject6","inputAndButtons","_templateObject7","textAreaWrapper","_templateObject8","textArea","_templateObject9","inlineInputWrapper","_templateObject10","inlineInput","_templateObject11","inlinePlaceholder","_templateObject12","inlineTag","_templateObject13","buttonGroup","_templateObject14","iconButton","_templateObject15","clearButton","_templateObject16","uploadButton","_templateObject17","sendButton","_templateObject18","tip","_templateObject19","actionBar","_templateObject20","actionBarLeft","_templateObject21","actionBarRight","_templateObject22","quickListWrapper","_templateObject23","quickList","_templateObject24","quickListHeader","_templateObject25","quickListBody","_templateObject26","quickListEmpty","_templateObject27","quickListGroup","_templateObject28","quickListItem","_templateObject29","inputTags","_templateObject30","inputTag","_templateObject31"],"sources":["../../../../src/components/XAdkSender/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n padding: 0 15px 10px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n // 主内容区域\n mainArea: css`\n border-radius: 20px;\n overflow: visible;\n background: #fff;\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 10px 12px 8px;\n position: relative;\n z-index: 1;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n contextBar: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n contextHeader: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 0 0 auto;\n min-width: 0;\n `,\n\n contextFiles: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 1 1 auto;\n min-width: 0;\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 4px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n inlineInputWrapper: css`\n position: relative;\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n `,\n\n inlineInput: css`\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n `,\n\n inlinePlaceholder: css`\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n color: #bfbfbf;\n font-size: 14px;\n line-height: 24px;\n pointer-events: none;\n user-select: none;\n `,\n\n inlineTag: css`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n\n &[data-xadk-inline-mention-type=\"knowledge\"],\n &[data-xadk-inline-mention-type=\"knowledge_directory\"],\n &[data-xadk-inline-mention-type=\"knowledge_file\"],\n &[data-xadk-inline-mention-type=\"kb\"] {\n border-color: #f1f1f1;\n background: #f1f1f1;\n color: #1a1a1a;\n\n .xadk-inline-tag-close {\n color: #8c8c8c;\n }\n }\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n\n actionBar: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n `,\n\n actionBarLeft: css`\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n `,\n\n actionBarRight: css`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n `,\n\n // 快捷键弹出列表外层容器\n quickListWrapper: css`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n `,\n\n // 快捷键弹出列表\n quickList: css`\n max-height: 320px;\n width: 380px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n `,\n\n quickListHeader: css`\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n `,\n\n quickListBody: css`\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n `,\n\n quickListEmpty: css`\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n `,\n\n quickListGroup: css`\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n `,\n\n quickListItem: css`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: 12px;\n }\n\n .quick-list-item-label {\n flex: 0 0 112px;\n overflow: hidden;\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .quick-list-item-desc {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n\n // 输入框内标签\n inputTags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n `,\n\n inputTag: css`\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n `,\n}));\n"],"mappings":"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"}
|
|
@@ -78,8 +78,9 @@ var XAiConversations = function XAiConversations(props) {
|
|
|
78
78
|
})]
|
|
79
79
|
})]
|
|
80
80
|
}), /*#__PURE__*/_jsxs("div", {
|
|
81
|
+
// 展开时必须保持 flex 布局,scrollList 才能获得剩余高度并独立滚动。
|
|
81
82
|
style: {
|
|
82
|
-
display: listVisible ? '
|
|
83
|
+
display: listVisible ? 'flex' : 'none'
|
|
83
84
|
},
|
|
84
85
|
className: clsx(isNarrow ? styles.nWrapper : styles.fWrapper, animateDirection === 'in' && styles.slideIn, animateDirection === 'out' && styles.slideOut),
|
|
85
86
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Conversations","RedoOutlined","Spin","Divider","InfiniteScroll","clsx","useChatbotContext","logo","AddChatIcon","flashOpen","SESSION_PAGE_SIZE","useStyles","GlobalStyle","jsx","_jsx","jsxs","_jsxs","XAiConversations","props","styles","_useChatbotContext","mergedProps","_mergedProps$isNarrow","isNarrow","sessionList","style","onActiveChange","onNewChat","loadMoreSessions","activeKey","menu","_useState","_useState2","_slicedToArray","listVisible","setListVisible","_useState3","_useState4","animateDirection","setAnimateDirection","handleSwitchTab","key","handleNewChat","handleShowList","handleCloseList","setTimeout","className","conversationsWrapper","children","capWrapper","alt","src","w","h","capShape","capIcon","onClick","text","display","nWrapper","fWrapper","slideIn","slideOut","fheaderWrapper","addChatBtn","mr","tipTitle","scrollList","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","endMessage","plain","textColor","overflow","paddingBottom","v","items","_objectSpread","width","borderRadius","mask"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport clsx from 'clsx';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div className={styles.conversationsWrapper}>\n <GlobalStyle />\n {/** 顶部操作栏 */}\n {\n !listVisible && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n style={{ display: listVisible ? 'block' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut,\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={(\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n )}\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useState","Conversations","RedoOutlined","Spin","Divider","InfiniteScroll","clsx","useChatbotContext","logo","AddChatIcon","flashOpen","SESSION_PAGE_SIZE","useStyles","GlobalStyle","jsx","_jsx","jsxs","_jsxs","XAiConversations","props","styles","_useChatbotContext","mergedProps","_mergedProps$isNarrow","isNarrow","sessionList","style","onActiveChange","onNewChat","loadMoreSessions","activeKey","menu","_useState","_useState2","_slicedToArray","listVisible","setListVisible","_useState3","_useState4","animateDirection","setAnimateDirection","handleSwitchTab","key","handleNewChat","handleShowList","handleCloseList","setTimeout","className","conversationsWrapper","children","capWrapper","alt","src","w","h","capShape","capIcon","onClick","text","display","nWrapper","fWrapper","slideIn","slideOut","fheaderWrapper","addChatBtn","mr","tipTitle","scrollList","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","endMessage","plain","textColor","overflow","paddingBottom","v","items","_objectSpread","width","borderRadius","mask"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport clsx from 'clsx';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div className={styles.conversationsWrapper}>\n <GlobalStyle />\n {/** 顶部操作栏 */}\n {\n !listVisible && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n // 展开时必须保持 flex 布局,scrollList 才能获得剩余高度并独立滚动。\n style={{ display: listVisible ? 'flex' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut,\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={(\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n )}\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":"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"}
|
|
@@ -22,11 +22,11 @@ export var useStyles = withBasicStyles(function () {
|
|
|
22
22
|
capIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n "]))),
|
|
23
23
|
addChatBtn: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n "]))),
|
|
24
24
|
tipTitle: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n "]))),
|
|
25
|
-
fWrapper: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n border-right: 1px solid #f0f0f0;\n "]))),
|
|
26
|
-
nWrapper: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n "]))),
|
|
25
|
+
fWrapper: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex-shrink: 0;\n border-right: 1px solid #f0f0f0;\n "]))),
|
|
26
|
+
nWrapper: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n "]))),
|
|
27
27
|
mask: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.15);\n z-index: 999;\n cursor: pointer;\n "]))),
|
|
28
28
|
fheaderWrapper: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n "]))),
|
|
29
|
-
scrollList: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n
|
|
29
|
+
scrollList: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n /* \u4F7F\u7528\u4FA7\u680F\u7684\u771F\u5B9E\u5269\u4F59\u9AD8\u5EA6\uFF0C\u517C\u5BB9\u5168\u5C4F\u3001\u5F39\u7A97\u53CA\u4EFB\u610F\u9AD8\u5EA6\u7684\u5D4C\u5165\u5BB9\u5668\u3002 */\n flex: 1;\n min-height: 0;\n padding-bottom: 15px;\n box-sizing: border-box;\n overflow-y: auto;\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08Chrome, Edge, Safari\uFF09 */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08Firefox\uFF09 */\n scrollbar-width: none;\n\n /* \u9690\u85CF\u6EDA\u52A8\u6761\uFF08IE/Edge\uFF09 */\n -ms-overflow-style: none;\n "]))),
|
|
30
30
|
slideIn: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n animation: ", " 0.3s forwards;\n "])), slideInRight),
|
|
31
31
|
slideOut: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n animation: ", " 0.3s forwards;\n "])), slideOutRight)
|
|
32
32
|
};
|