@core-pilot/client-vue 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cjs/client-vue.css +1 -1
  2. package/dist/cjs/components/bubble-list/index.js +1 -1
  3. package/dist/cjs/components/bubble-list/index.js.map +1 -1
  4. package/dist/cjs/components/core-card/index.js +1 -1
  5. package/dist/cjs/components/core-card/index.js.map +1 -1
  6. package/dist/cjs/components/core-upload/assets/delete.svg.js +2 -0
  7. package/dist/cjs/components/core-upload/assets/delete.svg.js.map +1 -0
  8. package/dist/cjs/components/core-upload/assets/temp.svg.js +2 -0
  9. package/dist/cjs/components/core-upload/assets/temp.svg.js.map +1 -0
  10. package/dist/cjs/components/core-upload/assets/upload.svg.js +2 -0
  11. package/dist/cjs/components/core-upload/assets/upload.svg.js.map +1 -0
  12. package/dist/cjs/components/core-upload/index.js +2 -0
  13. package/dist/cjs/components/core-upload/index.js.map +1 -0
  14. package/dist/cjs/components/editor-sender/index.js +1 -1
  15. package/dist/cjs/components/editor-sender/index.js.map +1 -1
  16. package/dist/cjs/components/index.js +1 -1
  17. package/dist/cjs/components/x-markdown/index.js +1 -1
  18. package/dist/cjs/components/x-markdown/index.js.map +1 -1
  19. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js +1 -1
  20. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  21. package/dist/cjs/index.js +1 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/es/client-vue.css +1 -1
  24. package/dist/es/components/bubble-list/index.js +3 -0
  25. package/dist/es/components/bubble-list/index.js.map +1 -1
  26. package/dist/es/components/core-card/index.js +9 -4
  27. package/dist/es/components/core-card/index.js.map +1 -1
  28. package/dist/es/components/core-upload/assets/delete.svg.js +5 -0
  29. package/dist/es/components/core-upload/assets/delete.svg.js.map +1 -0
  30. package/dist/es/components/core-upload/assets/temp.svg.js +5 -0
  31. package/dist/es/components/core-upload/assets/temp.svg.js.map +1 -0
  32. package/dist/es/components/core-upload/assets/upload.svg.js +5 -0
  33. package/dist/es/components/core-upload/assets/upload.svg.js.map +1 -0
  34. package/dist/es/components/core-upload/index.js +267 -0
  35. package/dist/es/components/core-upload/index.js.map +1 -0
  36. package/dist/es/components/editor-sender/index.js +39 -16
  37. package/dist/es/components/editor-sender/index.js.map +1 -1
  38. package/dist/es/components/index.js +2 -0
  39. package/dist/es/components/index.js.map +1 -1
  40. package/dist/es/components/x-markdown/index.js +75 -17
  41. package/dist/es/components/x-markdown/index.js.map +1 -1
  42. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js +20 -1
  43. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  44. package/dist/es/index.js +2 -0
  45. package/dist/es/index.js.map +1 -1
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/editor-sender/index.tsx"],"sourcesContent":["import { defineComponent, ref, computed, useTemplateRef, watch, nextTick } from 'vue';\nimport { FilesCard } from 'vue-element-plus-x';\nimport EditorSender from './source/index.vue';\nimport { Paperclip } from '@element-plus/icons-vue'\nimport { ElIcon, ElUpload, ElNotification, UploadFiles, ElButton, ElTag } from 'element-plus'\nimport LoadingBtn from './LoadingButton/index.vue'\n\nimport './style/index.less'\nimport { SubmitResult, TagInfo } from 'vue-element-plus-x/types/EditorSender';\nimport { FilesCardProps } from 'vue-element-plus-x/types/FilesCard';\n\nexport default defineComponent({\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n actionUrl: {\n type: String,\n default: '/openapi/v1/app/files/upload',\n },\n extendData: {\n type: Object,\n default: () => ({\n \"user\": \"abc-123\",\n }),\n },\n acceptFileType: {\n type: String,\n default: '.txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.xls,.doc,.docx,.csv,.eml,.msg,.pptx,.ppt,.xml,.epub,.jpg,.jpeg,.png,.gif,.webp,.svg'\n },\n headers: {\n type: Object,\n default: () => ({\n Authorization: 'Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf',\n appId: '9a673565-d4f6-4382-bc67-f1beb07df435'\n }),\n },\n agentName: {\n type: String,\n default: '知识问答智能体',\n },\n limit: {\n type: Number,\n default: 5,\n },\n customStyle: {\n type: Object,\n default: () => ({\n maxHeight: '75px'\n }),\n },\n inputData: {\n type: String,\n default: '',\n },\n placeholder: {\n type: String,\n default: '请尝试输入任务、问题或想法,我会帮你搞定',\n },\n tagList: {\n type: Array<TagInfo>,\n default: () => ([\n {\n id: '1',\n name: '问产品',\n },\n {\n id: '2',\n name: '问品类',\n },\n {\n id: '3',\n name: '问品牌',\n },\n {\n id: '4',\n name: '找物料',\n },\n {\n id: '5',\n name: '问知识',\n },\n {\n id: '6',\n name: '遇客诉',\n }\n ])\n },\n sceneList: {\n type: Array<{\n id: string,\n name: string,\n }>,\n default: () => ([\n {\n id: 'ANC',\n name: 'ANC',\n },\n {\n id: 'BNC',\n name: 'BNC',\n },\n ])\n },\n scene: {\n type: String,\n default: undefined,\n },\n },\n emits: ['cancel', 'submit', 'sceneChange', 'update:scene'],\n setup(props, { emit }) {\n const editorSender = useTemplateRef<typeof EditorSender>('editorSender');\n const editorSenderWrapper = useTemplateRef<HTMLElement>('editorSenderWrapper');\n const fileUpload = useTemplateRef<typeof ElUpload>('fileUpload');\n \n // 初始化 activeScene:优先使用传入的 scene prop,否则使用 sceneList 的第一个\n const getInitialScene = () => {\n if (props.scene) {\n const found = props.sceneList.find(item => item.id === props.scene);\n if (found) return found;\n }\n return props.sceneList[0];\n };\n const activeScene = ref(getInitialScene());\n\n const isEmpty = ref(true);\n const fileList = ref<UploadFiles>([]);\n const activeTag = ref(props.tagList[0]);\n\n watch(() => props.agentName, (val) => {\n nextTick(() => {\n const target = editorSenderWrapper.value?.querySelector('.el-editor-sender-chat-room');\n target?.setAttribute('datatype', val)\n })\n }, {\n immediate: true\n });\n\n watch(() => props.inputData, (val) => {\n nextTick(() => {\n editorSender.value?.clear() as SubmitResult;\n editorSender.value?.setText(val)\n })\n })\n\n // 监听外部传入的 scene prop 变化\n watch(() => props.scene, (val) => {\n if (val) {\n const found = props.sceneList.find(item => item.id === val);\n if (found) {\n activeScene.value = found;\n }\n }\n });\n\n watch(() => props.sceneList, (val) => {\n if (val.length > 0) {\n // 如果当前 scene prop 存在,优先使用它;否则使用第一个\n if (props.scene) {\n const found = val.find(item => item.id === props.scene);\n if (found) {\n activeScene.value = found;\n return;\n }\n }\n activeScene.value = val[0];\n }\n }, {\n immediate: true\n });\n\n const cancelHandler = () => {\n emit('cancel')\n }\n\n const initSender = () => {\n editorSender.value?.clear() as SubmitResult;\n fileList.value = [];\n fileUpload.value?.clearFiles();\n }\n\n const submitHandler = (val: SubmitResult) => {\n if (isEmpty.value || props.loading) return;\n const res = {\n text: val.text,\n file: fileList.value.map((item) => item.response)\n }\n emit('submit', res)\n initSender()\n }\n\n const changeHandler = () => {\n isEmpty.value = editorSender.value?.chatState?.isEmpty;\n }\n\n const handleUploadError = () => {\n ElNotification({\n title: '',\n message: '上传文件失败',\n type: 'error',\n })\n }\n\n const handleUploadSuccess = (response, file, list: UploadFiles) => {\n fileList.value = list;\n }\n\n const isValidMimeType = (mimeType: string) => {\n // 包含所有有效MIME类型的集合\n const validTypes = new Set([\n 'text/plain',\n 'text/markdown', // 非标准但常见的markdown类型\n 'application/pdf',\n 'text/html',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'message/rfc822',\n 'application/vnd.ms-outlook',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint',\n 'application/xml',\n 'text/xml',\n 'application/epub+zip',\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml'\n ]);\n\n // 去除可能的空格并转为小写后检查\n return validTypes.has(mimeType?.trim().toLowerCase());\n }\n\n const handleUploadBefore = (file: File) => {\n if (!isValidMimeType(file.type)) {\n ElNotification({\n title: '',\n message: '无法解析上传',\n type: 'warning',\n })\n return false;\n }\n const isImg = file.type.includes('image');\n const isDoc = !isImg;\n const isLt15M = file.size / 1024 / 1024 < 15;\n const isLt10M = file.size / 1024 / 1024 < 10;\n if (isDoc && !isLt15M) {\n ElNotification({\n title: '',\n message: '上传文档大小不能超过 15MB!',\n type: 'warning',\n })\n return false;\n }\n if (isImg && !isLt10M) {\n ElNotification({\n title: '',\n message: '上传图片大小不能超过 10MB!',\n type: 'warning',\n })\n return false;\n }\n return true;\n }\n\n const handleUploadExceed = () => {\n ElNotification({\n title: '',\n message: `最多上传5个文件`,\n type: 'warning',\n })\n }\n\n // 删除文件\n const removeFile = ({ name }: FilesCardProps) => {\n const target = fileList.value.find((item) => item.name === name);\n if (target) {\n fileUpload.value?.handleRemove(target);\n }\n }\n\n const handleUploadRemove = (file, files) => {\n fileList.value = files;\n }\n\n const submitBtnClick = () => {\n const context = editorSender.value?.getCurrentValue() as SubmitResult;\n submitHandler(context);\n }\n\n const triggerSceneChange = (scene: {\n id: string,\n name: string,\n }) => {\n activeScene.value = scene;\n emit('sceneChange', scene);\n emit('update:scene', scene.id);\n }\n\n const getSlots = () => {\n const slots = {\n 'action-list': () => (\n <div class=\"sender-action-wrapper\">\n <div class=\"sender-action-left\">\n <ElUpload\n ref=\"fileUpload\"\n disabled={fileList.value.length > 5}\n action={props.actionUrl}\n show-file-list={false}\n multiple\n limit={props.limit - fileList.value.length}\n data={props.extendData}\n beforeUpload={handleUploadBefore}\n headers={props.headers}\n onError={handleUploadError}\n onSuccess={handleUploadSuccess}\n onExceed={handleUploadExceed}\n onRemove={handleUploadRemove}\n accept={props.acceptFileType}\n >\n <ElIcon\n class=\"sender-file-icon\"\n >\n <Paperclip />\n </ElIcon>\n </ElUpload>\n {\n props.sceneList.length > 0 ? (\n <>\n <div class=\"split-line\"></div>\n <div class=\"scene-list\">\n {\n props.sceneList.map((item) => (\n <span \n class={activeScene.value.id === item.id ? 'scene-item active' : 'scene-item'}\n onClick={() => triggerSceneChange(item)}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </>\n ) : null\n }\n </div>\n {\n props.loading ?\n <LoadingBtn\n class='sender-cancel'\n onCancel={cancelHandler}\n /> :\n <div\n class={{ 'sender-btn': true, 'active': !isEmpty.value }}\n onClick={submitBtnClick}\n >\n </div>\n }\n </div>\n ),\n }\n if (fileList.value.length > 0 || props.tagList.length > 0) {\n slots['header'] = () => {\n return (\n <div class=\"sender-header-wrapper\">\n <div\n class=\"sender-file-list\"\n >\n {\n fileList.value.map((item) => (\n <FilesCard\n name={item.name}\n show-del-icon\n status=\"done\"\n onDelete={removeFile}\n />\n ))\n }\n </div>\n <div class=\"tag-list-wrapper\">\n {\n props.tagList.map((item) => (\n <span\n class={activeTag.value.id === item.id ? 'tag-item active' : 'tag-item'}\n onClick={() => {\n activeTag.value = item;\n }}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </div>\n )\n }\n }\n\n return slots;\n }\n\n return {\n isEmpty,\n fileList,\n activeTag,\n cancelHandler,\n submitHandler,\n changeHandler,\n handleUploadError,\n handleUploadSuccess,\n handleUploadBefore,\n handleUploadExceed,\n removeFile,\n handleUploadRemove,\n submitBtnClick,\n getSlots,\n };\n },\n\n render() {\n return (\n <div\n class=\"editor-sender-wrapper\"\n ref=\"editorSenderWrapper\"\n >\n <EditorSender\n ref=\"editorSender\"\n variant=\"updown\"\n loading={this.loading}\n placeholder={this.placeholder}\n activeTag={this.activeTag}\n onSubmit={this.submitHandler}\n onCancel={this.cancelHandler}\n onChange={this.changeHandler}\n custom-style={this.customStyle}\n >\n {\n this.getSlots()\n }\n\n </EditorSender>\n </div>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","props","loading","type","Boolean","default","actionUrl","String","extendData","acceptFileType","headers","Authorization","appId","agentName","limit","Number","customStyle","maxHeight","inputData","placeholder","tagList","Array","id","name","sceneList","scene","undefined","emits","setup","emit","editorSender","useTemplateRef","editorSenderWrapper","fileUpload","getInitialScene","found","find","item","activeScene","ref","isEmpty","fileList","activeTag","watch","val","nextTick","target","value","querySelector","setAttribute","immediate","clear","setText","length","cancelHandler","initSender","clearFiles","submitHandler","res","text","file","map","response","changeHandler","chatState","handleUploadError","ElNotification","title","message","handleUploadSuccess","list","isValidMimeType","mimeType","validTypes","Set","has","trim","toLowerCase","handleUploadBefore","isImg","includes","isDoc","isLt15M","size","isLt10M","handleUploadExceed","removeFile","handleRemove","handleUploadRemove","files","submitBtnClick","context","getCurrentValue","triggerSceneChange","getSlots","slots","action-list","_createVNode","ElUpload","ElIcon","Paperclip","_Fragment","onClick","LoadingBtn","FilesCard","render","_slot","EditorSender"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/editor-sender/index.tsx"],"sourcesContent":["import { defineComponent, ref, computed, useTemplateRef, watch, nextTick } from 'vue';\nimport { FilesCard } from 'vue-element-plus-x';\nimport EditorSender from './source/index.vue';\nimport { Paperclip } from '@element-plus/icons-vue'\nimport { ElIcon, ElUpload, ElNotification, UploadFiles, ElButton, ElTag } from 'element-plus'\nimport LoadingBtn from './LoadingButton/index.vue'\n\nimport './style/index.less'\nimport { SubmitResult, TagInfo } from 'vue-element-plus-x/types/EditorSender';\nimport { FilesCardProps } from 'vue-element-plus-x/types/FilesCard';\n\nexport default defineComponent({\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n actionUrl: {\n type: String,\n default: '/openapi/v1/app/files/upload',\n },\n // extendData: {\n // type: Object,\n // default: () => ({\n // \"user\": \"abc-123\",\n // }),\n // },\n acceptFileType: {\n type: String,\n default: '.txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.xls,.doc,.docx,.csv,.eml,.msg,.pptx,.ppt,.xml,.epub,.jpg,.jpeg,.png,.gif,.webp,.svg'\n },\n // headers: {\n // type: Object,\n // default: () => ({\n // Authorization: 'Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf',\n // appId: '9a673565-d4f6-4382-bc67-f1beb07df435'\n // }),\n // },\n agentName: {\n type: String,\n default: '知识问答智能体',\n },\n limit: {\n type: Number,\n default: 5,\n },\n customStyle: {\n type: Object,\n default: () => ({\n maxHeight: '75px'\n }),\n },\n inputData: {\n type: String,\n default: '',\n },\n placeholder: {\n type: String,\n default: '请尝试输入任务、问题或想法,我会帮你搞定',\n },\n tagList: {\n type: Array<TagInfo>,\n default: () => ([\n {\n id: '1',\n name: '问产品',\n },\n {\n id: '2',\n name: '问品类',\n },\n {\n id: '3',\n name: '问品牌',\n },\n {\n id: '4',\n name: '找物料',\n },\n {\n id: '5',\n name: '问知识',\n },\n {\n id: '6',\n name: '遇客诉',\n }\n ])\n },\n sceneList: {\n type: Array<{\n id: string,\n name: string,\n }>,\n default: () => ([\n {\n id: 'ANC',\n name: 'ANC',\n },\n {\n id: 'BNC',\n name: 'BNC',\n },\n ])\n },\n scene: {\n type: String,\n default: undefined,\n },\n user: {\n type: String,\n default: '',\n },\n authToken: {\n type: String,\n default: '',\n },\n appId: {\n type: String,\n default: '',\n },\n },\n emits: ['cancel', 'submit', 'sceneChange', 'update:scene'],\n setup(props, { emit }) {\n const editorSender = useTemplateRef<typeof EditorSender>('editorSender');\n const editorSenderWrapper = useTemplateRef<HTMLElement>('editorSenderWrapper');\n const fileUpload = useTemplateRef<typeof ElUpload>('fileUpload');\n const headers = computed(() => {\n return {\n Authorization: `Bearer ${props.authToken}`,\n appId: props.appId,\n }\n })\n const extendData = computed(() => {\n return {\n user: props.user,\n }\n })\n \n // 初始化 activeScene:优先使用传入的 scene prop,否则使用 sceneList 的第一个\n const getInitialScene = () => {\n if (props.scene) {\n const found = props.sceneList.find(item => item.id === props.scene);\n if (found) return found;\n }\n return props.sceneList[0];\n };\n const activeScene = ref(getInitialScene());\n\n const isEmpty = ref(true);\n const fileList = ref<UploadFiles>([]);\n const activeTag = ref(props.tagList[0]);\n\n watch(() => props.agentName, (val) => {\n nextTick(() => {\n const target = editorSenderWrapper.value?.querySelector('.el-editor-sender-chat-room');\n target?.setAttribute('datatype', val)\n })\n }, {\n immediate: true\n });\n\n watch(() => props.inputData, (val) => {\n nextTick(() => {\n editorSender.value?.clear() as SubmitResult;\n editorSender.value?.setText(val)\n })\n })\n\n // 监听外部传入的 scene prop 变化\n watch(() => props.scene, (val) => {\n if (val) {\n const found = props.sceneList.find(item => item.id === val);\n if (found) {\n activeScene.value = found;\n }\n }\n });\n\n watch(() => props.sceneList, (val) => {\n if (val.length > 0) {\n // 如果当前 scene prop 存在,优先使用它;否则使用第一个\n if (props.scene) {\n const found = val.find(item => item.id === props.scene);\n if (found) {\n activeScene.value = found;\n return;\n }\n }\n activeScene.value = val[0];\n }\n }, {\n immediate: true\n });\n\n const cancelHandler = () => {\n emit('cancel')\n }\n\n const initSender = () => {\n editorSender.value?.clear() as SubmitResult;\n fileList.value = [];\n fileUpload.value?.clearFiles();\n }\n\n const submitHandler = (val: SubmitResult) => {\n if (isEmpty.value || props.loading) return;\n const res = {\n text: val.text,\n file: fileList.value.map((item) => item.response)\n }\n emit('submit', res)\n initSender()\n }\n\n const changeHandler = () => {\n isEmpty.value = editorSender.value?.chatState?.isEmpty;\n }\n\n const handleUploadError = () => {\n ElNotification({\n title: '',\n message: '上传文件失败',\n type: 'error',\n })\n }\n\n const handleUploadSuccess = (response, file, list: UploadFiles) => {\n fileList.value = list;\n }\n\n const isValidMimeType = (mimeType: string) => {\n // 包含所有有效MIME类型的集合\n const validTypes = new Set([\n 'text/plain',\n 'text/markdown', // 非标准但常见的markdown类型\n 'application/pdf',\n 'text/html',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'message/rfc822',\n 'application/vnd.ms-outlook',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint',\n 'application/xml',\n 'text/xml',\n 'application/epub+zip',\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml'\n ]);\n\n // 去除可能的空格并转为小写后检查\n return validTypes.has(mimeType?.trim().toLowerCase());\n }\n\n const handleUploadBefore = (file: File) => {\n if (!isValidMimeType(file.type)) {\n ElNotification({\n title: '',\n message: '无法解析上传',\n type: 'warning',\n })\n return false;\n }\n const isImg = file.type.includes('image');\n const isDoc = !isImg;\n const isLt15M = file.size / 1024 / 1024 < 15;\n const isLt10M = file.size / 1024 / 1024 < 10;\n if (isDoc && !isLt15M) {\n ElNotification({\n title: '',\n message: '上传文档大小不能超过 15MB!',\n type: 'warning',\n })\n return false;\n }\n if (isImg && !isLt10M) {\n ElNotification({\n title: '',\n message: '上传图片大小不能超过 10MB!',\n type: 'warning',\n })\n return false;\n }\n return true;\n }\n\n const handleUploadExceed = () => {\n ElNotification({\n title: '',\n message: `最多上传5个文件`,\n type: 'warning',\n })\n }\n\n // 删除文件\n const removeFile = ({ name }: FilesCardProps) => {\n const target = fileList.value.find((item) => item.name === name);\n if (target) {\n fileUpload.value?.handleRemove(target);\n }\n }\n\n const handleUploadRemove = (file, files) => {\n fileList.value = files;\n }\n\n const submitBtnClick = () => {\n const context = editorSender.value?.getCurrentValue() as SubmitResult;\n submitHandler(context);\n }\n\n const triggerSceneChange = (scene: {\n id: string,\n name: string,\n }) => {\n activeScene.value = scene;\n emit('sceneChange', scene);\n emit('update:scene', scene.id);\n }\n\n const getSlots = () => {\n const slots = {\n 'action-list': () => (\n <div class=\"sender-action-wrapper\">\n <div class=\"sender-action-left\">\n <ElUpload\n ref=\"fileUpload\"\n disabled={fileList.value.length > 5}\n action={props.actionUrl}\n show-file-list={false}\n multiple\n limit={props.limit - fileList.value.length}\n data={extendData.value}\n beforeUpload={handleUploadBefore}\n headers={headers.value}\n onError={handleUploadError}\n onSuccess={handleUploadSuccess}\n onExceed={handleUploadExceed}\n onRemove={handleUploadRemove}\n accept={props.acceptFileType}\n >\n <ElIcon\n class=\"sender-file-icon\"\n >\n <Paperclip />\n </ElIcon>\n </ElUpload>\n {\n props.sceneList.length > 0 ? (\n <>\n <div class=\"split-line\"></div>\n <div class=\"scene-list\">\n {\n props.sceneList.map((item) => (\n <span \n class={activeScene.value.id === item.id ? 'scene-item active' : 'scene-item'}\n onClick={() => triggerSceneChange(item)}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </>\n ) : null\n }\n </div>\n {\n props.loading ?\n <LoadingBtn\n class='sender-cancel'\n onCancel={cancelHandler}\n /> :\n <div\n class={{ 'sender-btn': true, 'active': !isEmpty.value }}\n onClick={submitBtnClick}\n >\n </div>\n }\n </div>\n ),\n }\n if (fileList.value.length > 0 || props.tagList.length > 0) {\n slots['header'] = () => {\n return (\n <div class=\"sender-header-wrapper\">\n <div\n class=\"sender-file-list\"\n >\n {\n fileList.value.map((item) => (\n <FilesCard\n name={item.name}\n show-del-icon\n status=\"done\"\n onDelete={removeFile}\n />\n ))\n }\n </div>\n <div class=\"tag-list-wrapper\">\n {\n props.tagList.map((item) => (\n <span\n class={activeTag.value.id === item.id ? 'tag-item active' : 'tag-item'}\n onClick={() => {\n activeTag.value = item;\n }}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </div>\n )\n }\n }\n\n return slots;\n }\n\n return {\n isEmpty,\n fileList,\n activeTag,\n cancelHandler,\n submitHandler,\n changeHandler,\n handleUploadError,\n handleUploadSuccess,\n handleUploadBefore,\n handleUploadExceed,\n removeFile,\n handleUploadRemove,\n submitBtnClick,\n getSlots,\n };\n },\n\n render() {\n return (\n <div\n class=\"editor-sender-wrapper\"\n ref=\"editorSenderWrapper\"\n >\n <EditorSender\n ref=\"editorSender\"\n variant=\"updown\"\n loading={this.loading}\n placeholder={this.placeholder}\n activeTag={this.activeTag}\n onSubmit={this.submitHandler}\n onCancel={this.cancelHandler}\n onChange={this.changeHandler}\n custom-style={this.customStyle}\n >\n {\n this.getSlots()\n }\n\n </EditorSender>\n </div>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","props","loading","type","Boolean","default","actionUrl","String","acceptFileType","agentName","limit","Number","customStyle","maxHeight","inputData","placeholder","tagList","Array","id","name","sceneList","scene","undefined","user","authToken","appId","emits","setup","emit","editorSender","useTemplateRef","editorSenderWrapper","fileUpload","headers","computed","Authorization","extendData","getInitialScene","found","find","item","activeScene","ref","isEmpty","fileList","activeTag","watch","val","nextTick","target","value","querySelector","setAttribute","immediate","clear","setText","length","cancelHandler","initSender","clearFiles","submitHandler","res","text","file","map","response","changeHandler","chatState","handleUploadError","ElNotification","title","message","handleUploadSuccess","list","isValidMimeType","mimeType","validTypes","Set","has","trim","toLowerCase","handleUploadBefore","isImg","includes","isDoc","isLt15M","size","isLt10M","handleUploadExceed","removeFile","handleRemove","handleUploadRemove","files","submitBtnClick","context","getCurrentValue","triggerSceneChange","getSlots","slots","action-list","_createVNode","ElUpload","ElIcon","Paperclip","_Fragment","onClick","LoadingBtn","FilesCard","render","_slot","EditorSender"],"mappings":"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"}
@@ -9,6 +9,7 @@ import { default as default9 } from "./core-result/index.js";
9
9
  import { default as default10 } from "./core-table/index.js";
10
10
  import { default as default11 } from "./core-chart/index.js";
11
11
  import { default as default12 } from "./core-card/index.js";
12
+ import { default as default13 } from "./core-upload/index.js";
12
13
  export {
13
14
  default2 as BubbleList,
14
15
  default12 as CoreCard,
@@ -17,6 +18,7 @@ export {
17
18
  default10 as CoreTable,
18
19
  default7 as CoreText,
19
20
  default8 as CoreTips,
21
+ default13 as CoreUpload,
20
22
  default5 as EditorSender,
21
23
  default6 as FileCard,
22
24
  default4 as FilePreview,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -37,6 +37,7 @@ import CoreResult from "../core-result/index.js";
37
37
  import CoreTable from "../core-table/index.js";
38
38
  import CoreChart from "../core-chart/index.js";
39
39
  import CoreCard from "../core-card/index.js";
40
+ import CoreUpload from "../core-upload/index.js";
40
41
  /* empty css */
41
42
  import zhCn from "../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/es/locale/lang/zh-cn.js";
42
43
  import { unified } from "../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js";
@@ -105,6 +106,18 @@ const XMarkdown = /* @__PURE__ */ defineComponent({
105
106
  historyInputs: {
106
107
  type: Object,
107
108
  default: () => ({})
109
+ },
110
+ user: {
111
+ type: String,
112
+ default: "default"
113
+ },
114
+ authToken: {
115
+ type: String,
116
+ default: "ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf"
117
+ },
118
+ appId: {
119
+ type: String,
120
+ default: "9a673565-d4f6-4382-bc67-f1beb07df435"
108
121
  }
109
122
  },
110
123
  expose: ["getContentText"],
@@ -128,6 +141,17 @@ const XMarkdown = /* @__PURE__ */ defineComponent({
128
141
  const streamCall = (stream) => {
129
142
  context.value = context.value + stream;
130
143
  };
144
+ const uploadHeaders = computed(() => {
145
+ return {
146
+ Authorization: `Bearer ${props.authToken}`,
147
+ appId: props.appId
148
+ };
149
+ });
150
+ const uploadExtendData = computed(() => {
151
+ return {
152
+ user: props.user
153
+ };
154
+ });
131
155
  const streamGener = ref(createStreamGenerator(streamCall, props.speed));
132
156
  const updateSummaryClasses = (mdText) => {
133
157
  const summaryDivReg = /(<summary[^>]*>[\s\S]*?<\/summary>)\s*(<div>[\s\S]*?)(<\/div>|$)/g;
@@ -293,7 +317,6 @@ ${divContent}${divEnd}`;
293
317
  }
294
318
  if (action === "inner_rewrite") {
295
319
  isRewrite.value = true;
296
- console.log("isRewrite", isRewrite.value);
297
320
  return;
298
321
  }
299
322
  let res = {
@@ -502,7 +525,7 @@ ${divContent}${divEnd}`;
502
525
  ]);
503
526
  };
504
527
  const hastToVNode = (node, index, row) => {
505
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
528
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
506
529
  if (!node) return null;
507
530
  let children = [];
508
531
  const blackTagNames = ["sub", "pre", "text", "ElForm"];
@@ -584,12 +607,23 @@ ${divContent}${divEnd}`;
584
607
  }, children);
585
608
  }
586
609
  if (node.tagName === "CoreCard") {
610
+ const slots = {};
611
+ if ((_d = node.slots) == null ? void 0 : _d.header) {
612
+ slots.header = () => {
613
+ return node.slots.header.map((slotItem) => {
614
+ return hastToVNode(slotItem, index);
615
+ });
616
+ };
617
+ }
618
+ if (children && children.length > 0) {
619
+ slots.default = () => children;
620
+ }
587
621
  return h(CoreCard, {
588
622
  ...node.properties
589
- }, children);
623
+ }, slots);
590
624
  }
591
625
  if (node.tagName === "ElForm") {
592
- const children2 = (_d = node.children) == null ? void 0 : _d.map((child) => hastToVNode(child, curInit));
626
+ const children2 = (_e = node.children) == null ? void 0 : _e.map((child) => hastToVNode(child, curInit));
593
627
  curInit++;
594
628
  return h(ElForm, {
595
629
  ref: formRefs.value.set,
@@ -604,7 +638,7 @@ ${divContent}${divEnd}`;
604
638
  }, children);
605
639
  }
606
640
  if (node.tagName === "ElButton") {
607
- let payload = (_e = node.properties) == null ? void 0 : _e.payload;
641
+ let payload = (_f = node.properties) == null ? void 0 : _f.payload;
608
642
  if (node.parentScope === "table") {
609
643
  payload = row;
610
644
  }
@@ -621,7 +655,7 @@ ${divContent}${divEnd}`;
621
655
  return h(ElSelect, {
622
656
  ...node.properties,
623
657
  disabled: checkDisabled(node),
624
- modelValue: hitlData.value[index][(_f = node.properties) == null ? void 0 : _f.formProp],
658
+ modelValue: hitlData.value[index][(_g = node.properties) == null ? void 0 : _g.formProp],
625
659
  "onUpdate:modelValue": (value) => {
626
660
  var _a2;
627
661
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -632,7 +666,7 @@ ${divContent}${divEnd}`;
632
666
  return h(ElDatePicker, {
633
667
  ...node.properties,
634
668
  disabled: checkDisabled(node),
635
- modelValue: hitlData.value[index][(_g = node.properties) == null ? void 0 : _g.formProp],
669
+ modelValue: hitlData.value[index][(_h = node.properties) == null ? void 0 : _h.formProp],
636
670
  "onUpdate:modelValue": (value) => {
637
671
  var _a2;
638
672
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -643,7 +677,7 @@ ${divContent}${divEnd}`;
643
677
  return h(ElInput, {
644
678
  ...node.properties,
645
679
  disabled: checkDisabled(node),
646
- modelValue: hitlData.value[index][(_h = node.properties) == null ? void 0 : _h.formProp],
680
+ modelValue: hitlData.value[index][(_i = node.properties) == null ? void 0 : _i.formProp],
647
681
  "onUpdate:modelValue": (value) => {
648
682
  var _a2;
649
683
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -654,7 +688,7 @@ ${divContent}${divEnd}`;
654
688
  return h(ElRadioGroup, {
655
689
  ...node.properties,
656
690
  disabled: checkDisabled(node),
657
- modelValue: hitlData.value[index][(_i = node.properties) == null ? void 0 : _i.formProp],
691
+ modelValue: hitlData.value[index][(_j = node.properties) == null ? void 0 : _j.formProp],
658
692
  "onUpdate:modelValue": (value) => {
659
693
  var _a2;
660
694
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -679,14 +713,12 @@ ${divContent}${divEnd}`;
679
713
  default: (scope) => {
680
714
  var _a2, _b2;
681
715
  const children2 = (_a2 = node.children) == null ? void 0 : _a2.map((child) => hastToVNode(child, curInit, scope.row));
716
+ console.log("children", children2, node.children);
682
717
  const index2 = (_b2 = node.children) == null ? void 0 : _b2.findIndex((child) => {
683
718
  var _a3;
684
- return child.value === scope.row[(_a3 = node.properties) == null ? void 0 : _a3.prop];
719
+ return child.value === scope.row[(_a3 = node.properties) == null ? void 0 : _a3.prop] && child.value !== void 0;
685
720
  });
686
- if (index2 === -1) {
687
- return children2;
688
- }
689
- return children2 == null ? void 0 : children2[index2];
721
+ return index2 === -1 ? children2 : children2 == null ? void 0 : children2[index2];
690
722
  }
691
723
  });
692
724
  }
@@ -710,11 +742,37 @@ ${divContent}${divEnd}`;
710
742
  ...node.properties
711
743
  });
712
744
  }
745
+ if (node.tagName === "CoreUpload") {
746
+ if (node.parentScope === "form" && ((_k = node.properties) == null ? void 0 : _k.formProp)) {
747
+ const formProp = node.properties.formProp;
748
+ return h(CoreUpload, {
749
+ headers: uploadHeaders.value,
750
+ extendData: uploadExtendData.value,
751
+ ...node.properties,
752
+ disabled: checkDisabled(node),
753
+ fileList: ((_l = hitlData.value[index]) == null ? void 0 : _l[formProp]) || [],
754
+ "onUpdate:fileList": (value) => {
755
+ if (!hitlData.value[index]) {
756
+ hitlData.value[index] = {};
757
+ }
758
+ if (!hitlData.value[index].__files__) {
759
+ hitlData.value[index].__files__ = {};
760
+ }
761
+ hitlData.value[index].__files__[formProp] = value;
762
+ hitlData.value[index][formProp] = value;
763
+ }
764
+ });
765
+ }
766
+ return h(CoreUpload, {
767
+ ...node.properties,
768
+ disabled: checkDisabled(node)
769
+ });
770
+ }
713
771
  if (node.tagName === "pre") {
714
- const codeNode = (_j = node.children) == null ? void 0 : _j.find((child) => child.tagName === "code");
772
+ const codeNode = (_m = node.children) == null ? void 0 : _m.find((child) => child.tagName === "code");
715
773
  if (codeNode) {
716
- if ((_l = (_k = codeNode.properties) == null ? void 0 : _k.className) == null ? void 0 : _l.includes("language-CorePilot")) {
717
- const code = ((_n = (_m = codeNode.children) == null ? void 0 : _m[0]) == null ? void 0 : _n.value) || "";
774
+ if ((_o = (_n = codeNode.properties) == null ? void 0 : _n.className) == null ? void 0 : _o.includes("language-CorePilot")) {
775
+ const code = ((_q = (_p = codeNode.children) == null ? void 0 : _p[0]) == null ? void 0 : _q.value) || "";
718
776
  if (!isCompleteJSON(code)) {
719
777
  return renderSkeleton();
720
778
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/x-markdown/index.tsx"],"sourcesContent":["import { \n defineComponent, \n ref, computed, watch, \n onMounted, onBeforeUnmount, \n useTemplateRef, h, nextTick,\n onUpdated,\n} from 'vue';\nimport debounce from 'lodash/debounce';\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport remarkGemoji from \"remark-gemoji\";\nimport remarkRehype from \"remark-rehype\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeKatex from \"rehype-katex\";\nimport rehypeStringify from \"rehype-stringify\";\nimport { useTemplateRefsList } from '@vueuse/core'\n\nimport { \n ElMessage, \n ElForm,\n ElFormItem, \n ElInput, \n ElCard,\n ElButton,\n ElSelect,\n ElDatePicker,\n ElTable,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider\n} from 'element-plus';\nimport './style/index.less';\nimport './theme/index.less';\nimport { createStreamGenerator } from './utils/mockStream.ts';\nimport { parseCorePilot } from './utils/parseCorePilotSchema.ts';\nimport { Accordion } from './utils/animation.ts';\nimport CoreText from '../core-text';\nimport CoreTips from '../core-tips';\nimport CoreResult from '../core-result';\nimport CoreTable from '../core-table';\nimport CoreChart from '../core-chart';\nimport CoreCard from '../core-card';\nimport 'katex/dist/katex.min.css'\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\nimport { InputSchema } from '@/types/index.ts';\n\nconst checkAndReturnRefList = (text: string) => {\n const reg = /<div hidden>([\\s\\S]*?)<\\/div>/g;\n const match = reg.exec(text);\n if (!match) {\n return [];\n }\n const refListStr = match[1];\n try {\n const refList = JSON.parse(refListStr);\n return refList;\n } catch (error) {\n return [];\n }\n}\n\n/**\n * 检测 JSON 字符串是否完整\n * 使用最高效的方式:快速检查基本结构后直接尝试解析\n */\nconst isCompleteJSON = (jsonStr: string): boolean => {\n if (!jsonStr || jsonStr.trim().length === 0) {\n return false;\n }\n \n const trimmed = jsonStr.trim();\n \n // 快速检查:必须以 { 或 [ 开头\n const firstChar = trimmed[0];\n if (firstChar !== '{' && firstChar !== '[') {\n return false;\n }\n \n // 直接尝试解析,如果成功就是完整的 JSON\n try {\n JSON.parse(trimmed);\n return true;\n } catch (error) {\n // 解析失败,说明 JSON 不完整或格式错误\n return false;\n }\n}\n\ninterface RefConfig {\n title: string,\n link: string,\n time: string,\n author: string,\n}\n\nexport default defineComponent({\n name: 'XMarkdown',\n props: {\n text: {\n type: String,\n default: '',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n typing: {\n type: Boolean,\n default: false,\n },\n speed: {\n type: Number,\n default: 200,\n },\n isHistoryMessage: {\n type: Boolean,\n default: false,\n },\n historyInputs: {\n type: Object,\n default: () => ({}),\n },\n },\n expose: [\n 'getContentText'\n ],\n emits: ['hoverActiveRefTrigger', 'clickActiveRefTrigger', 'refConfigUpdate', 'downloadFile', 'coreSubmit'],\n setup(props, { emit }) {\n const container = useTemplateRef<HTMLElement>('x-markdown-container');\n const startTime = ref<number>(Date.now());\n const endTime = ref<number>(-Infinity);\n const context = ref('');\n const pendingImages = new Set(); // 存储待处理的图片\n const isInitAnimation = ref(false);\n const tagComplete = ref(false);\n const hitlData = ref<Array<Record<string, string>>>([]);\n const formRefs = useTemplateRefsList<typeof ElForm>();\n const curIndex = ref(0);\n let curInit = 0;\n const ast = ref<any>(null);\n const isRewrite = ref(false);\n\n const streamCall = (stream: string) => {\n context.value = context.value + stream;\n }\n\n const streamGener = ref<ReturnType<typeof createStreamGenerator>>(createStreamGenerator(streamCall, props.speed));\n\n const updateSummaryClasses = (mdText: string) => {\n const summaryDivReg = /(<summary[^>]*>[\\s\\S]*?<\\/summary>)\\s*(<div>[\\s\\S]*?)(<\\/div>|$)/g;\n let isFirstSummary = true;\n\n return mdText.replace(summaryDivReg, (match, summaryTag, divContent, divEnd) => {\n const isDivComplete = divEnd === '</div>'; // 直接判断闭合标签是否存在\n const updatedSummary = summaryTag.replace(\n /(<summary)/g,\n (match) => {\n if (isFirstSummary) {\n isFirstSummary = false;\n return match;\n }\n return `<summary class=\"${isDivComplete ? 'loaded' : 'loading'}\"`\n }\n );\n return `${updatedSummary}\\n${divContent}${divEnd}`; // 重组时拼接闭合部分\n });\n }\n\n const formatText = computed(() => {\n if (!props.autoHideThinking) return context.value;\n let content = context.value;\n content = updateSummaryClasses(content);\n content = content.replace(/[\\u00A0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g, ' ');\n if (content.includes('</details>')) {\n if (endTime.value === -Infinity) {\n endTime.value = Date.now();\n }\n\n const res = checkAndReturnRefList(content);\n\n let text = content.replace(/<details open>([\\s\\S]*?)<\\/details>/g, (match, content) => {\n // 将 content 中的第一个 <summary> 中的内容替换为 具体的秒数\n content = content.replace(/<summary>([\\s\\S]*?)<\\/summary>/, (match, content) => {\n const duration = ((endTime.value - startTime.value) / 1000).toFixed(0);\n return `<summary style=\"color: #8D90A0;font-weight: 300; font-size: 16px;\">\n 已完成思考 ${duration > '0' ? duration + 's' : ''} ${res.length ? `<span style=\"display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;\"></span> 引用文档:${res?.length} 个` : ''}\n </summary>`;\n })\n\n content = content.replace(/<summary>完成<\\/summary>/, '<summary class=\"loaded\">完成</summary>')\n\n return `<details>${content}</details>`;\n });\n \n return text;\n }\n return content;\n })\n\n // TODO 后续需要规范相关定义\n // 如果当前是历史消息, 且父级作用域为form,则禁用点击事件\n const checkDisabled = (node: InputSchema) => {\n const { properties = {}, parentScope } = node;\n const { disabled } = properties;\n if (disabled) {\n return true;\n }\n if (parentScope === 'form') {\n return props.isHistoryMessage && !isRewrite.value;\n }\n return false;\n }\n\n watch(() => [props.text, props.typing], (v, o) => {\n const [text, typing] = v;\n const [oldText] = o || [];\n if (!(text as string).startsWith(oldText as string)) {\n streamGener.value?.reset();\n context.value = '';\n }\n if (text) {\n streamGener.value?.update(text);\n if (!typing) {\n streamGener.value?.stop();\n return;\n }\n // 资料整合 标签之后,采用服务端流式速度\n const checkReg = /<summary>资料整合<\\/summary>\\r?\\n(.|\\s)+?/;\n if (!tagComplete.value && checkReg.test(text as string)) {\n tagComplete.value = true;\n streamGener.value?.setSpeed(500);\n return;\n }\n }\n }, {\n immediate: true,\n })\n\n // 获取所有的ref配置\n const refConfig = ref<Array<RefConfig>>([]);\n\n const getRefConfig = () => {\n const refContainer = (container.value as HTMLElement)?.querySelector('div[hidden]');\n refConfig.value = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', refConfig.value);\n }\n const renderComplete = debounce(() => {\n getRefConfig();\n }, 100);\n\n // 获取当前激活的索引文件\n const activeRef = ref<HTMLElement | null>(null);\n\n watch(() => context.value, renderComplete, {\n immediate: true,\n });\n\n watch(activeRef, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n const text = newVal.getAttribute('dataherf');\n const target = refConfig.value.find((item) => {\n return item.link === text;\n });\n emit('hoverActiveRefTrigger', target);\n } else {\n emit('hoverActiveRefTrigger', '');\n }\n }\n });\n\n const getTargeElement = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'SPAN') {\n const isInRefContainer = target.classList.contains('x-markdown-split');\n const isRefContainer = target.classList.contains('x-markdown-sub')\n if (isInRefContainer || isRefContainer) {\n if (!isRefContainer) {\n return target.parentElement as HTMLElement;\n }\n return target;\n }\n }\n };\n\n const handleMouseOver = (e: MouseEvent) => {\n const target = getTargeElement(e);\n if (target) {\n activeRef.value = target;\n return;\n }\n activeRef.value = null;\n }\n\n const handleAClick = async (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const target = e.target as HTMLElement;\n const href = target.getAttribute('href');\n const id = target.getAttribute('data-id') || target.getAttribute('dataid');\n const title = target.getAttribute('data-name') || target.getAttribute('dataname');\n if (!href) {\n return;\n }\n // const fileExt = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'png', 'gif', 'jpg', 'jpeg', 'webp', 'svg'];\n const ext = href.split('.').pop();\n // 如果id不存在,则使用a标签新打开浏览器页面兜底\n if (!id) {\n window.open(href, '_blank');\n return;\n }\n ElMessage('文件下载中...');\n\n emit('downloadFile', {\n title,\n id,\n ext,\n href,\n });\n\n // downloadFile(href);\n return;\n }\n\n const btnClick = async (index: number, action: string, payload: any, parentScope?: 'form' | 'table') => {\n if (action === 'inner_next') {\n curIndex.value += 1;\n return;\n }\n if (action === 'inner_prev') {\n curIndex.value -= 1;\n return;\n }\n if (action === 'inner_rewrite') {\n isRewrite.value = true;\n console.log('isRewrite', isRewrite.value);\n return;\n }\n\n let res = {\n action,\n payload: {},\n };\n // 区分是否为form组件的按钮,如果带有payload 则约定为非form组件的按钮\n if (payload && parentScope !== 'form') {\n res = {\n action,\n payload,\n }\n } else {\n await formRefs.value[index]?.validate();\n res = {\n action,\n payload: {\n ...hitlData.value[index],\n ...payload,\n }\n }\n }\n if (isRewrite.value && action.startsWith('core_')) {\n isRewrite.value = false;\n }\n emit('coreSubmit', res)\n }\n\n const handleClick = (e: MouseEvent) => {\n // 如果当前点击的是a标签,则根据a标签的href属性直接下载文件\n if ((e.target as HTMLElement).tagName === 'A') {\n handleAClick(e);\n return;\n }\n\n const target = getTargeElement(e);\n if (target) {\n const text = target.getAttribute('dataherf');\n const highlight = JSON.parse(target.getAttribute('datahighlight') || '[]') as Array<string>;\n const page = Number(target.getAttribute('datanumber'));\n const id = target.getAttribute('id');\n const source = refConfig.value.find((item) => {\n return item.link === text;\n });\n const data = {\n ...source,\n highlight,\n page,\n id,\n }\n emit('clickActiveRefTrigger', data);\n }\n }\n\n const getContentText = () => {\n return container.value?.innerText;\n }\n\n onMounted(() => {\n (container.value as HTMLElement).addEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick);\n });\n\n onBeforeUnmount(() => {\n (container.value as HTMLElement).removeEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick)\n })\n\n /**\n * 处理新加载的图片\n * 核心逻辑:设置占位尺寸,渐进式加载\n */\n const processNewImages = () => {\n if (!container.value) return;\n \n const newImages = container.value.querySelectorAll(\n \"img:not([data-processed='true'])\"\n ) as NodeListOf<HTMLImageElement>;\n \n newImages.forEach((img) => {\n if (pendingImages.has(img)) return;\n pendingImages.add(img);\n \n // 设置占位尺寸,避免布局重排\n setPlaceholderDimensions(img);\n \n // 处理已加载的图片\n if (img.complete) {\n handleImageLoad(img);\n } else {\n img.addEventListener(\"load\", () => handleImageLoad(img));\n img.addEventListener(\"error\", () => handleImageError(img));\n }\n });\n };\n \n // 设置图片占位尺寸\n const setPlaceholderDimensions = (img) => {\n const containerWidth = img.parentElement.offsetWidth;\n if (img.naturalWidth > containerWidth) {\n img.style.maxWidth = \"100%\";\n }\n \n if (img.naturalWidth && img.naturalHeight) {\n const ratio = img.naturalHeight / img.naturalWidth;\n img.style.maxHeight = `${Math.min(500, containerWidth * ratio)}px`;\n }\n };\n \n // 图片加载成功处理\n const handleImageLoad = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"loaded\");\n img.style.opacity = \"1\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n \n // 图片加载失败处理\n const handleImageError = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"load-error\");\n img.style.maxHeight = \"200px\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n\n // 初始化unified处理链\n const md = unified()\n .use(remarkParse) // 解析Markdown为AST\n .use(remarkBreaks) // 处理换行符\n .use(remarkGfm, { singleTilde: false }) // GitHub Flavored Markdown支持\n .use(remarkMath) // 数学公式支持\n .use(remarkGemoji) // Emoji支持\n .use(remarkRehype, { allowDangerousHtml: true }) // 转换为HTML AST\n .use(rehypeRaw)\n .use(rehypeKatex)\n .use(rehypeStringify)\n\n /**\n * 递归遍历 schema,收集所有 form 表单及其 data 属性\n * @param schema - CorePilot schema 对象\n * @param formDataList - 用于存储收集到的 form data 的数组\n * @returns void\n */\n const collectFormsFromSchema = (schema: any, formDataList: Array<Record<string, any>>) => {\n if (!schema || typeof schema !== 'object') return;\n \n // 如果当前节点是 form,收集其 data 属性并停止向下递归(form 内部不会嵌套 form)\n if (schema.type === 'form') {\n const formData = {\n ...schema.properties?.data || {},\n // FIXME 目前只有卡片里面仅有可能出现单个表单,需要需要支持多表单场景\n ...props.historyInputs || {},\n };\n formDataList.push(formData);\n return; // form 内部不会再嵌套 form,直接返回\n }\n \n // 递归遍历 children 数组\n if (Array.isArray(schema.children)) {\n schema.children.forEach((child) => {\n collectFormsFromSchema(child, formDataList);\n });\n }\n }\n\n /**\n * 计算 markdown AST 中所有 form 表单的数量,并提取每个 form 的预定义数据\n * @param mdAst - markdown AST 对象\n * @returns { length: number, formDataList: Array<Record<string, any>> } - form 数量和 form data 列表\n */\n const computedForm = (mdAst: any) => {\n const formDataList: Array<Record<string, any>> = [];\n \n // 高效检索:直接查找所有 pre 标签\n const preNodes: any[] = [];\n const findPreNodes = (node: any) => {\n if (!node) return;\n if (node.tagName === \"pre\") {\n preNodes.push(node);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(findPreNodes);\n }\n };\n \n // 遍历 mdAst 查找所有 pre 节点\n if (Array.isArray(mdAst.children)) {\n mdAst.children.forEach(findPreNodes);\n }\n \n // 处理每个 pre 节点中的 CorePilot 代码块\n preNodes.forEach((preNode: any) => {\n const codeNode = preNode.children?.find((child: any) => child.tagName === \"code\");\n if (codeNode?.properties?.className?.includes(\"language-CorePilot\")) {\n try {\n const code = codeNode.children?.[0]?.value || '';\n if (code) {\n const schema = JSON.parse(code);\n // 递归收集所有 form\n collectFormsFromSchema(schema, formDataList);\n }\n } catch (error) {\n console.error('Failed to parse CorePilot schema:', error);\n }\n }\n });\n \n return formDataList\n }\n\n watch(\n () => formatText.value!,\n async (text) => {\n // 处理Markdown到hast再到VNode的转换\n curInit = 0;\n const mdAst = await md.run(md.parse(text));\n // 递归遍历所有 CorePilot schema,收集 form 表单及其预定义数据\n const formDataList = computedForm(mdAst);\n hitlData.value = formDataList;\n\n await nextTick();\n ast.value = mdAst;\n \n // 等待DOM更新后处理图片\n nextTick(processNewImages);\n nextTick(() => {\n const details = container.value?.querySelector('details');\n const summary = details?.querySelector('summary');\n if (summary && !isInitAnimation.value) {\n isInitAnimation.value = true;\n new Accordion(details!);\n }\n })\n },\n { immediate: true }\n );\n\n /**\n * 渲染骨架屏组件\n * @returns {VNode} 骨架屏虚拟节点\n */\n const renderSkeleton = () => {\n return h(\"div\", {\n class: \"hitl-skeleton\",\n }, [\n // 头部骨架\n h(\"div\", {\n class: \"skeleton-header\",\n }, [\n h(\"div\", { class: \"skeleton-avatar\" }),\n h(\"div\", { class: \"skeleton-title\" }),\n ]),\n // 内容骨架\n h(\"div\", { class: \"skeleton-item skeleton-item-long\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-medium\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-short\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-long\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-medium\" }),\n ]);\n };\n\n /**\n * 将hast(HTML AST)转换为Vue VNode\n * @param {Object} node hast节点\n * @returns {VNode} Vue虚拟节点\n */\n // FIXME ⚠️⚠️⚠️ 复杂表单存在性能问题 ⚠️⚠️⚠️\n const hastToVNode = (node, index?: number, row?: any) => {\n if (!node) return null;\n let children: any[] = [];\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n\n if (!blackTagNames.includes(node.tagName)) {\n children = node.children?.map?.(child => hastToVNode(child, index)) || [];\n }\n switch (node.type) {\n case \"root\":\n return h(\n \"div\",\n { class: \"markdown-body\" },\n h(ElConfigProvider, {\n locale: zhCN,\n }, children)\n );\n \n case \"element\":\n if (node.tagName === \"sub\") {\n const formatChildren = [\n {\n type: \"element\",\n tagName: \"span\",\n properties: {\n class: \"x-markdown-split\",\n },\n }, \n ...node.children\n ]\n const children = formatChildren?.map(child => hastToVNode(child, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, children);\n }\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\n }, \n children\n );\n }\n // 处理特殊元素:图片、链接、代码块等\n if (node.tagName === \"img\") {\n return h(\"img\", {\n ...node.properties,\n class: \"markdown-image\",\n \"data-processed\": \"false\" // 标记未处理图片\n });\n }\n \n if (node.tagName === \"a\") {\n const href = node.properties?.href || ''; // 获取链接地址\n const fileType = href ? href.split('.').pop() : null; // 标记文件类型\n return h(\n \"a\",\n {\n ...node.properties,\n class: 'file-link',\n 'data-file-type': fileType,\n },\n children\n );\n }\n if (node.tagName === 'ElTimeline') {\n return h(\n ElTimeline,\n {\n ...node.properties,\n },\n children\n );\n }\n if (node.tagName === 'table') {\n return h(\n \"div\",\n {\n class: 'custom-table-container',\n },\n [\n h(\n \"table\",\n children\n ),\n ]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n {\n class: 'custom-view-container',\n },\n [children[curIndex.value]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(\n ElRow,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCol') {\n return h(\n ElCol,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCard') {\n \n return h(\n ElCard,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'CoreCard') {\n return h(\n CoreCard,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElForm') {\n const children = node.children?.map(child => hastToVNode(child, curInit));\n curInit++;\n return h(\n ElForm,\n {\n ref: formRefs.value.set,\n model: hitlData.value[index!],\n ...node.properties,\n disabled: checkDisabled(node),\n },\n children\n )\n }\n\n if (node.tagName === 'ElFormItem') {\n return h(\n ElFormItem,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = row;\n }\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n onClick: () => {\n btnClick(index!, node.properties?.action, payload, node.parentScope);\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElSelect') {\n return h(\n ElSelect,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElInput') {\n return h(\n ElInput,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadioGroup') {\n return h(\n ElRadioGroup,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value as string;\n }\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadio') {\n\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n },\n children\n )\n }\n \n if (node.tagName === 'ElTable') {\n return h(\n CoreTable,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElTableColumn') {\n return h(\n ElTableColumn,\n {\n ...node.properties,\n },\n {\n default: (scope) => {\n const children = node.children?.map(child => hastToVNode(child, curInit, scope.row));\n const index = node.children?.findIndex(child => child.value === scope.row[node.properties?.prop]);\n if (index === -1) {\n return children;\n }\n return children?.[index];\n },\n }\n )\n }\n\n if (node.tagName === 'CoreText') {\n return h(\n CoreText,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreTips') {\n return h(\n CoreTips,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreResult') {\n return h(\n CoreResult,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreChart') {\n return h(\n CoreChart,\n {\n ...node.properties,\n }\n )\n }\n \n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find(child => child.tagName === \"code\");\n if (codeNode) {\n if (codeNode.properties?.className?.includes(\"language-CorePilot\")) {\n const code = codeNode.children?.[0]?.value || '';\n // 检查 JSON 是否完整\n if (!isCompleteJSON(code)) {\n // JSON 不完整,显示骨架屏\n return renderSkeleton();\n }\n try {\n const schema = JSON.parse(code);\n const viewTree = parseCorePilot(schema);\n const children = hastToVNode(viewTree, curInit)\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [children]);\n } catch (error) {\n // JSON 解析失败,可能是格式错误,显示骨架屏\n return renderSkeleton();\n }\n }\n }\n }\n \n // 其他普通元素\n return h(\n node.tagName,\n node.properties,\n children\n );\n \n case \"text\":\n return node.value.trim();\n \n default:\n return null;\n }\n };\n\n onUpdated(() => {\n curInit = 0;\n })\n\n return {\n hastToVNode,\n ast,\n container,\n renderComplete,\n isRewrite,\n getContentText,\n };\n },\n render() {\n return (\n <div\n ref=\"x-markdown-container\"\n class=\"x-markdown\"\n >\n {\n this.hastToVNode(this.ast)\n }\n </div>\n );\n },\n});"],"names":["checkAndReturnRefList","text","reg","match","exec","refListStr","refList","JSON","parse","error","isCompleteJSON","jsonStr","trim","length","trimmed","firstChar","name","props","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","historyInputs","Object","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","isRewrite","streamCall","stream","value","streamGener","createStreamGenerator","updateSummaryClasses","mdText","summaryDivReg","isFirstSummary","replace","summaryTag","divContent","divEnd","isDivComplete","updatedSummary","formatText","computed","content","includes","res","duration","toFixed","checkDisabled","node","properties","parentScope","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","getRefConfig","refContainer","querySelector","textContent","renderComplete","debounce","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleAClick","stopPropagation","preventDefault","href","id","title","ext","split","pop","window","open","ElMessage","btnClick","index","action","payload","console","log","validate","handleClick","highlight","page","source","data","getContentText","innerText","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","newImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","push","Array","isArray","children","child","computedForm","mdAst","preNodes","findPreNodes","preNode","codeNode","className","code","run","nextTick","details","summary","Accordion","renderSkeleton","h","class","hastToVNode","row","blackTagNames","map","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","CoreCard","ElForm","set","model","ElFormItem","ElButton","onClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","findIndex","prop","CoreText","CoreTips","CoreResult","CoreChart","viewTree","parseCorePilot","onUpdated","render","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAMA,wBAAyBC,UAAiB;AAC9C,QAAMC,MAAM;AACZ,QAAMC,QAAQD,IAAIE,KAAKH,IAAI;AAC3B,MAAI,CAACE,OAAO;AACV,WAAO,CAAA;AAAA,EACT;AACA,QAAME,aAAaF,MAAM,CAAC;AAC1B,MAAI;AACF,UAAMG,UAAUC,KAAKC,MAAMH,UAAU;AACrC,WAAOC;AAAAA,EACT,SAASG,OAAO;AACd,WAAO,CAAA;AAAA,EACT;AACF;AAMA,MAAMC,iBAAkBC,aAA6B;AACnD,MAAI,CAACA,WAAWA,QAAQC,KAAI,EAAGC,WAAW,GAAG;AAC3C,WAAO;AAAA,EACT;AAEA,QAAMC,UAAUH,QAAQC,KAAI;AAG5B,QAAMG,YAAYD,QAAQ,CAAC;AAC3B,MAAIC,cAAc,OAAOA,cAAc,KAAK;AAC1C,WAAO;AAAA,EACT;AAGA,MAAI;AACFR,SAAKC,MAAMM,OAAO;AAClB,WAAO;AAAA,EACT,SAASL,OAAO;AAEd,WAAO;AAAA,EACT;AACF;AASA,MAAA,4CAA+B;AAAA,EAC7BO,MAAM;AAAA,EACNC,OAAO;AAAA,IACLhB,MAAM;AAAA,MACJiB,MAAMC;AAAAA,MACNC,SAAS;AAAA;IAEXC,kBAAkB;AAAA,MAChBH,MAAMI;AAAAA,MACNF,SAAS;AAAA;IAEXG,QAAQ;AAAA,MACNL,MAAMI;AAAAA,MACNF,SAAS;AAAA;IAEXI,OAAO;AAAA,MACLN,MAAMO;AAAAA,MACNL,SAAS;AAAA;IAEXM,kBAAkB;AAAA,MAChBR,MAAMI;AAAAA,MACNF,SAAS;AAAA;IAEXO,eAAe;AAAA,MACbT,MAAMU;AAAAA,MACNR,SAASA,OAAO,CAAA;AAAA,IAClB;AAAA;EAEFS,QAAQ,CACN,gBAAgB;AAAA,EAElBC,OAAO,CAAC,yBAAyB,yBAAyB,mBAAmB,gBAAgB,YAAY;AAAA,EACzGC,MAAMd,OAAO;AAAA,IAAEe;AAAAA,EAAK,GAAG;AACrB,UAAMC,YAAYC,eAA4B,sBAAsB;AACpE,UAAMC,YAAYC,IAAYC,KAAKC,IAAG,CAAE;AACxC,UAAMC,UAAUH,IAAY,SAAS;AACrC,UAAMI,UAAUJ,IAAI,EAAE;AACtB,UAAMK,gBAAgB,oBAAIC;AAC1B,UAAMC,kBAAkBP,IAAI,KAAK;AACjC,UAAMQ,cAAcR,IAAI,KAAK;AAC7B,UAAMS,WAAWT,IAAmC,EAAE;AACtD,UAAMU,WAAWC,oBAAmB;AACpC,UAAMC,WAAWZ,IAAI,CAAC;AACtB,QAAIa,UAAU;AACd,UAAMC,MAAMd,IAAS,IAAI;AACzB,UAAMe,YAAYf,IAAI,KAAK;AAE3B,UAAMgB,aAAcC,YAAmB;AACrCb,cAAQc,QAAQd,QAAQc,QAAQD;AAAAA,IAClC;AAEA,UAAME,cAAcnB,IAA8CoB,sBAAsBJ,YAAYnC,MAAMO,KAAK,CAAC;AAEhH,UAAMiC,uBAAwBC,YAAmB;AAC/C,YAAMC,gBAAgB;AACtB,UAAIC,iBAAiB;AAErB,aAAOF,OAAOG,QAAQF,eAAe,CAACxD,OAAO2D,YAAYC,YAAYC,WAAW;AAC9E,cAAMC,gBAAgBD,WAAW;AACjC,cAAME,iBAAiBJ,WAAWD,QAChC,eACC1D,CAAAA,WAAU;AACT,cAAIyD,gBAAgB;AAClBA,6BAAiB;AACjB,mBAAOzD;AAAAA,UACT;AACA,iBAAO,mBAAmB8D,gBAAgB,WAAW,SAAS;AAAA,QAChE,CACF;AACA,eAAO,GAAGC,cAAc;AAAA,EAAKH,UAAU,GAAGC,MAAM;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,UAAMG,aAAaC,SAAS,MAAM;AAChC,UAAI,CAACnD,MAAMI,iBAAkB,QAAOmB,QAAQc;AAC5C,UAAIe,UAAU7B,QAAQc;AACtBe,gBAAUZ,qBAAqBY,OAAO;AACtCA,gBAAUA,QAAQR,QAAQ,kDAAkD,GAAG;AAC/E,UAAIQ,QAAQC,SAAS,YAAY,GAAG;AAClC,YAAI/B,QAAQe,UAAU,WAAW;AAC/Bf,kBAAQe,QAAQjB,KAAKC,IAAG;AAAA,QAC1B;AAEA,cAAMiC,MAAMvE,sBAAsBqE,OAAO;AAEzC,YAAIpE,OAAOoE,QAAQR,QAAQ,wCAAwC,CAAC1D,OAAOkE,aAAY;AAErFA,UAAAA,WAAUA,SAAQR,QAAQ,kCAAkC,CAAC1D,QAAOkE,aAAY;AAC9E,kBAAMG,aAAajC,QAAQe,QAAQnB,UAAUmB,SAAS,KAAMmB,QAAQ,CAAC;AACrE,mBAAO;AAAA,sBACGD,WAAW,MAAMA,WAAW,MAAM,EAAE,IAAID,IAAI1D,SAAS,0HAA0H0D,2BAAK1D,MAAM,OAAO,EAAE;AAAA;AAAA,UAE/M,CAAC;AAEDwD,UAAAA,WAAUA,SAAQR,QAAQ,0BAA0B,sCAAsC;AAE1F,iBAAO,YAAYQ,QAAO;AAAA,QAC5B,CAAC;AAED,eAAOpE;AAAAA,MACT;AACA,aAAOoE;AAAAA,IACT,CAAC;AAID,UAAMK,gBAAiBC,UAAsB;AAC3C,YAAM;AAAA,QAAEC,aAAa,CAAA;AAAA,QAAIC;AAAAA,MAAY,IAAIF;AACzC,YAAM;AAAA,QAAEG;AAAAA,MAAS,IAAIF;AACrB,UAAIE,UAAU;AACZ,eAAO;AAAA,MACT;AACA,UAAID,gBAAgB,QAAQ;AAC1B,eAAO5D,MAAMS,oBAAoB,CAACyB,UAAUG;AAAAA,MAC9C;AACA,aAAO;AAAA,IACT;AAEAyB,UAAM,MAAM,CAAC9D,MAAMhB,MAAMgB,MAAMM,MAAM,GAAG,CAACyD,GAAGC,MAAM;;AAChD,YAAM,CAAChF,MAAMsB,MAAM,IAAIyD;AACvB,YAAM,CAACE,OAAO,IAAID,KAAK,CAAA;AACvB,UAAI,CAAEhF,KAAgBkF,WAAWD,OAAiB,GAAG;AACnD3B,0BAAYD,UAAZC,mBAAmB6B;AACnB5C,gBAAQc,QAAQ;AAAA,MAClB;AACA,UAAIrD,MAAM;AACRsD,0BAAYD,UAAZC,mBAAmB8B,OAAOpF;AAC1B,YAAI,CAACsB,QAAQ;AACXgC,4BAAYD,UAAZC,mBAAmB+B;AACnB;AAAA,QACF;AAEA,cAAMC,WAAW;AACjB,YAAI,CAAC3C,YAAYU,SAASiC,SAASC,KAAKvF,IAAc,GAAG;AACvD2C,sBAAYU,QAAQ;AACpBC,4BAAYD,UAAZC,mBAAmBkC,SAAS;AAC5B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACDC,WAAW;AAAA,IACb,CAAC;AAGD,UAAMC,YAAYvD,IAAsB,EAAE;AAE1C,UAAMwD,eAAeA,MAAM;;AACzB,YAAMC,gBAAgB5D,eAAUqB,UAAVrB,mBAAiC6D,cAAc;AACrEH,gBAAUrC,QAAQ/C,KAAKC,OAAMqF,6CAAcE,gBAAe,IAAI;AAC9D/D,WAAK,mBAAmB2D,UAAUrC,KAAK;AAAA,IACzC;AACA,UAAM0C,iBAAiBC,SAAS,MAAM;AACpCL,mBAAY;AAAA,IACd,GAAG,GAAG;AAGN,UAAMM,YAAY9D,IAAwB,IAAI;AAE9C2C,UAAM,MAAMvC,QAAQc,OAAO0C,gBAAgB;AAAA,MACzCN,WAAW;AAAA,IACb,CAAC;AAEDX,UAAMmB,WAAW,CAACC,QAAQC,WAAW;AACnC,UAAID,WAAWC,QAAQ;AACrB,YAAID,QAAQ;AACV,gBAAMlG,OAAOkG,OAAOE,aAAa,UAAU;AAC3C,gBAAMC,SAASX,UAAUrC,MAAMiD,KAAMC,UAAS;AAC5C,mBAAOA,KAAKC,SAASxG;AAAAA,UACvB,CAAC;AACD+B,eAAK,yBAAyBsE,MAAM;AAAA,QACtC,OAAO;AACLtE,eAAK,yBAAyB,EAAE;AAAA,QAClC;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM0E,kBAAmBC,OAAkB;AACzC,YAAML,SAASK,EAAEL;AACjB,UAAIA,OAAOM,YAAY,QAAQ;AAC7B,cAAMC,mBAAmBP,OAAOQ,UAAUC,SAAS,kBAAkB;AACrE,cAAMC,iBAAiBV,OAAOQ,UAAUC,SAAS,gBAAgB;AACjE,YAAIF,oBAAoBG,gBAAgB;AACtC,cAAI,CAACA,gBAAgB;AACnB,mBAAOV,OAAOW;AAAAA,UAChB;AACA,iBAAOX;AAAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,UAAMY,kBAAmBP,OAAkB;AACzC,YAAML,SAASI,gBAAgBC,CAAC;AAChC,UAAIL,QAAQ;AACVJ,kBAAU5C,QAAQgD;AAClB;AAAA,MACF;AACAJ,gBAAU5C,QAAQ;AAAA,IACpB;AAEA,UAAM6D,eAAe,OAAOR,MAAkB;AAC5CA,QAAES,gBAAe;AACjBT,QAAEU,eAAc;AAChB,YAAMf,SAASK,EAAEL;AACjB,YAAMgB,OAAOhB,OAAOD,aAAa,MAAM;AACvC,YAAMkB,KAAKjB,OAAOD,aAAa,SAAS,KAAKC,OAAOD,aAAa,QAAQ;AACzE,YAAMmB,QAAQlB,OAAOD,aAAa,WAAW,KAAKC,OAAOD,aAAa,UAAU;AAChF,UAAI,CAACiB,MAAM;AACT;AAAA,MACF;AAEA,YAAMG,MAAMH,KAAKI,MAAM,GAAG,EAAEC,IAAG;AAE/B,UAAI,CAACJ,IAAI;AACPK,eAAOC,KAAKP,MAAM,QAAQ;AAC1B;AAAA,MACF;AACAQ,gBAAU,UAAU;AAEpB9F,WAAK,gBAAgB;AAAA,QACnBwF;AAAAA,QACAD;AAAAA,QACAE;AAAAA,QACAH;AAAAA,MACF,CAAC;AAGD;AAAA,IACF;AAEA,UAAMS,WAAW,OAAOC,OAAeC,QAAgBC,SAAcrD,gBAAmC;;AACtG,UAAIoD,WAAW,cAAc;AAC3BjF,iBAASM,SAAS;AAClB;AAAA,MACF;AACA,UAAI2E,WAAW,cAAc;AAC3BjF,iBAASM,SAAS;AAClB;AAAA,MACF;AACA,UAAI2E,WAAW,iBAAiB;AAC9B9E,kBAAUG,QAAQ;AAClB6E,gBAAQC,IAAI,aAAajF,UAAUG,KAAK;AACxC;AAAA,MACF;AAEA,UAAIiB,MAAM;AAAA,QACR0D;AAAAA,QACAC,SAAS,CAAA;AAAA;AAGX,UAAIA,WAAWrD,gBAAgB,QAAQ;AACrCN,cAAM;AAAA,UACJ0D;AAAAA,UACAC;AAAAA;MAEJ,OAAO;AACL,gBAAMpF,cAASQ,MAAM0E,KAAK,MAApBlF,mBAAuBuF;AAC7B9D,cAAM;AAAA,UACJ0D;AAAAA,UACAC,SAAS;AAAA,YACP,GAAGrF,SAASS,MAAM0E,KAAK;AAAA,YACvB,GAAGE;AAAAA,UACL;AAAA;MAEJ;AACA,UAAI/E,UAAUG,SAAS2E,OAAO9C,WAAW,OAAO,GAAG;AACjDhC,kBAAUG,QAAQ;AAAA,MACpB;AACAtB,WAAK,cAAcuC,GAAG;AAAA,IACxB;AAEA,UAAM+D,cAAe3B,OAAkB;AAErC,UAAKA,EAAEL,OAAuBM,YAAY,KAAK;AAC7CO,qBAAaR,CAAC;AACd;AAAA,MACF;AAEA,YAAML,SAASI,gBAAgBC,CAAC;AAChC,UAAIL,QAAQ;AACV,cAAMrG,OAAOqG,OAAOD,aAAa,UAAU;AAC3C,cAAMkC,YAAYhI,KAAKC,MAAM8F,OAAOD,aAAa,eAAe,KAAK,IAAI;AACzE,cAAMmC,OAAO/G,OAAO6E,OAAOD,aAAa,YAAY,CAAC;AACrD,cAAMkB,KAAKjB,OAAOD,aAAa,IAAI;AACnC,cAAMoC,SAAS9C,UAAUrC,MAAMiD,KAAMC,UAAS;AAC5C,iBAAOA,KAAKC,SAASxG;AAAAA,QACvB,CAAC;AACD,cAAMyI,OAAO;AAAA,UACX,GAAGD;AAAAA,UACHF;AAAAA,UACAC;AAAAA,UACAjB;AAAAA;AAEFvF,aAAK,yBAAyB0G,IAAI;AAAA,MACpC;AAAA,IACF;AAEA,UAAMC,iBAAiBA,MAAM;;AAC3B,cAAO1G,eAAUqB,UAAVrB,mBAAiB2G;AAAAA,IAC1B;AAEAC,cAAU,MAAM;AACb5G,gBAAUqB,MAAsBwF,iBAAiB,aAAa5B,eAAe;AAC7EjF,gBAAUqB,MAAsBwF,iBAAiB,SAASR,WAAW;AAAA,IACxE,CAAC;AAEDS,oBAAgB,MAAM;AACnB9G,gBAAUqB,MAAsB0F,oBAAoB,aAAa9B,eAAe;AAChFjF,gBAAUqB,MAAsBwF,iBAAiB,SAASR,WAAW;AAAA,IACxE,CAAC;AAMD,UAAMW,mBAAmBA,MAAM;AAC7B,UAAI,CAAChH,UAAUqB,MAAO;AAEtB,YAAM4F,YAAYjH,UAAUqB,MAAM6F,iBAChC,kCACF;AAEAD,gBAAUE,QAASC,SAAQ;AACzB,YAAI5G,cAAc6G,IAAID,GAAG,EAAG;AAC5B5G,sBAAc8G,IAAIF,GAAG;AAGrBG,iCAAyBH,GAAG;AAG5B,YAAIA,IAAII,UAAU;AAChBC,0BAAgBL,GAAG;AAAA,QACrB,OAAO;AACLA,cAAIP,iBAAiB,QAAQ,MAAMY,gBAAgBL,GAAG,CAAC;AACvDA,cAAIP,iBAAiB,SAAS,MAAMa,iBAAiBN,GAAG,CAAC;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,IACH;AAGA,UAAMG,2BAA4BH,SAAQ;AACxC,YAAMO,iBAAiBP,IAAIpC,cAAc4C;AACzC,UAAIR,IAAIS,eAAeF,gBAAgB;AACrCP,YAAIU,MAAMC,WAAW;AAAA,MACvB;AAEA,UAAIX,IAAIS,gBAAgBT,IAAIY,eAAe;AACzC,cAAMC,QAAQb,IAAIY,gBAAgBZ,IAAIS;AACtCT,YAAIU,MAAMI,YAAY,GAAGC,KAAKC,IAAI,KAAKT,iBAAiBM,KAAK,CAAC;AAAA,MAChE;AAAA,IACF;AAGA,UAAMR,kBAAmBL,SAAQ;AAC/B5G,oBAAc6H,OAAOjB,GAAG;AACxBA,UAAIkB,aAAa,kBAAkB,MAAM;AACzClB,UAAIvC,UAAUyC,IAAI,QAAQ;AAC1BF,UAAIU,MAAMS,UAAU;AACpBnB,UAAIL,oBAAoB,QAAQU,eAAe;AAC/CL,UAAIL,oBAAoB,SAASW,gBAAgB;AAAA,IACnD;AAGA,UAAMA,mBAAoBN,SAAQ;AAChC5G,oBAAc6H,OAAOjB,GAAG;AACxBA,UAAIkB,aAAa,kBAAkB,MAAM;AACzClB,UAAIvC,UAAUyC,IAAI,YAAY;AAC9BF,UAAIU,MAAMI,YAAY;AACtBd,UAAIL,oBAAoB,QAAQU,eAAe;AAC/CL,UAAIL,oBAAoB,SAASW,gBAAgB;AAAA,IACnD;AAGA,UAAMc,KAAKC,UACRC,IAAIC,WAAW,EACfD,IAAIE,YAAY,EAChBF,IAAIG,WAAW;AAAA,MAAEC,aAAa;AAAA,IAAM,CAAC,EACrCJ,IAAIK,UAAU,EACdL,IAAIM,YAAY,EAChBN,IAAIO,cAAc;AAAA,MAAEC,oBAAoB;AAAA,IAAK,CAAC,EAC9CR,IAAIS,SAAS,EACbT,IAAIU,WAAW,EACfV,IAAIW,eAAe;AAQtB,UAAMC,yBAAyBA,CAACC,QAAaC,iBAA6C;;AACxF,UAAI,CAACD,UAAU,OAAOA,WAAW,SAAU;AAG3C,UAAIA,OAAOtK,SAAS,QAAQ;AAC1B,cAAMwK,WAAW;AAAA,UACf,KAAGF,YAAO5G,eAAP4G,mBAAmB9C,SAAQ;;UAE9B,GAAGzH,MAAMU,iBAAiB,CAAA;AAAA;AAE5B8J,qBAAaE,KAAKD,QAAQ;AAC1B;AAAA,MACF;AAGA,UAAIE,MAAMC,QAAQL,OAAOM,QAAQ,GAAG;AAClCN,eAAOM,SAAS1C,QAAS2C,WAAU;AACjCR,iCAAuBQ,OAAON,YAAY;AAAA,QAC5C,CAAC;AAAA,MACH;AAAA,IACF;AAOA,UAAMO,eAAgBC,WAAe;AACnC,YAAMR,eAA2C,CAAA;AAGjD,YAAMS,WAAkB,CAAA;AACxB,YAAMC,eAAgBxH,UAAc;AAClC,YAAI,CAACA,KAAM;AACX,YAAIA,KAAKiC,YAAY,OAAO;AAC1BsF,mBAASP,KAAKhH,IAAI;AAAA,QACpB;AACA,YAAIiH,MAAMC,QAAQlH,KAAKmH,QAAQ,GAAG;AAChCnH,eAAKmH,SAAS1C,QAAQ+C,YAAY;AAAA,QACpC;AAAA,MACF;AAGA,UAAIP,MAAMC,QAAQI,MAAMH,QAAQ,GAAG;AACjCG,cAAMH,SAAS1C,QAAQ+C,YAAY;AAAA,MACrC;AAGAD,eAAS9C,QAASgD,aAAiB;;AACjC,cAAMC,YAAWD,aAAQN,aAARM,mBAAkB7F,KAAMwF,WAAeA,MAAMnF,YAAY;AAC1E,aAAIyF,gDAAUzH,eAAVyH,mBAAsBC,cAAtBD,mBAAiC/H,SAAS,uBAAuB;AACnE,cAAI;AACF,kBAAMiI,SAAOF,oBAASP,aAATO,mBAAoB,OAApBA,mBAAwB/I,UAAS;AAC9C,gBAAIiJ,MAAM;AACR,oBAAMf,SAASjL,KAAKC,MAAM+L,IAAI;AAE9BhB,qCAAuBC,QAAQC,YAAY;AAAA,YAC7C;AAAA,UACF,SAAShL,OAAO;AACd0H,oBAAQ1H,MAAM,qCAAqCA,KAAK;AAAA,UAC1D;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAOgL;AAAAA,IACT;AAEA1G,UACE,MAAMZ,WAAWb,OACjB,OAAOrD,SAAS;AAEdgD,gBAAU;AACV,YAAMgJ,QAAQ,MAAMxB,GAAG+B,IAAI/B,GAAGjK,MAAMP,IAAI,CAAC;AAEzC,YAAMwL,eAAeO,aAAaC,KAAK;AACvCpJ,eAASS,QAAQmI;AAEjB,YAAMgB,SAAQ;AACdvJ,UAAII,QAAQ2I;AAGZQ,eAASxD,gBAAgB;AACzBwD,eAAS,MAAM;;AACb,cAAMC,WAAUzK,eAAUqB,UAAVrB,mBAAiB6D,cAAc;AAC/C,cAAM6G,UAAUD,mCAAS5G,cAAc;AACvC,YAAI6G,WAAW,CAAChK,gBAAgBW,OAAO;AACrCX,0BAAgBW,QAAQ;AACxB,cAAIsJ,UAAUF,OAAQ;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,GACA;AAAA,MAAEhH,WAAW;AAAA,IAAK,CACpB;AAMA,UAAMmH,iBAAiBA,MAAM;AAC3B,aAAOC,EAAE,OAAO;AAAA,QACdC,OAAO;AAAA,MACT,GAAG;AAAA;AAAA,QAEDD,EAAE,OAAO;AAAA,UACPC,OAAO;AAAA,QACT,GAAG,CACDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAkB,CAAC,GACrCD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,SAAkB,CAAC,CACtC;AAAA;AAAA,QAEDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAmC,CAAC;AAAA,QACtDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAqC,CAAC;AAAA,QACxDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAoC,CAAC;AAAA,QACvDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,QAAmC,CAAC;AAAA,QACtDD,EAAE,OAAO;AAAA,UAAEC,OAAO;AAAA,SAAsC;AAAA,MAAC,CAC1D;AAAA,IACH;AAQA,UAAMC,cAAcA,CAACrI,MAAMqD,OAAgBiF,QAAc;;AACvD,UAAI,CAACtI,KAAM,QAAO;AAClB,UAAImH,WAAkB,CAAA;AACtB,YAAMoB,gBAAgB,CAAC,OAAO,OAAO,QAAQ,QAAQ;AAErD,UAAI,CAACA,cAAc5I,SAASK,KAAKiC,OAAO,GAAG;AACzCkF,qBAAWnH,gBAAKmH,aAALnH,mBAAewI,QAAfxI,4BAAqBoH,WAASiB,YAAYjB,OAAO/D,KAAK,OAAM,CAAA;AAAA,MACzE;AACA,cAAQrD,KAAKzD,MAAI;AAAA,QACf,KAAK;AACH,iBAAO4L,EACL,OACA;AAAA,YAAEC,OAAO;AAAA,UAAgB,GACzBD,EAAEM,kBAAkB;AAAA,YAClBC,QAAQC;AAAAA,aACPxB,QAAQ,CACb;AAAA,QAEF,KAAK;AACH,cAAInH,KAAKiC,YAAY,OAAO;AAC1B,kBAAM2G,iBAAiB,CACrB;AAAA,cACErM,MAAM;AAAA,cACN0F,SAAS;AAAA,cACThC,YAAY;AAAA,gBACVmI,OAAO;AAAA,cACT;AAAA,YACF,GACA,GAAGpI,KAAKmH,QAAQ;AAElB,kBAAMA,YAAWyB,iDAAgBJ,IAAIpB,WAASiB,YAAYjB,OAAO/D,KAAK;AACtE,mBAAO8E,EAAE,QAAQ;AAAA,cACf,GAAGnI,KAAKC;AAAAA,cACRmI,OAAO;AAAA,eACNjB,SAAQ;AAAA,UACb;AACA,cAAInH,KAAKiC,YAAY,QAAQ;AAC3B,mBAAOkG,EAAE,QAAQ;AAAA,cACb,GAAGnI,KAAKC;AAAAA,eAEVkH,QACJ;AAAA,UACA;AAEA,cAAInH,KAAKiC,YAAY,OAAO;AAC1B,mBAAOkG,EAAE,OAAO;AAAA,cACd,GAAGnI,KAAKC;AAAAA,cACRmI,OAAO;AAAA,cACP,kBAAkB;AAAA;AAAA,YACpB,CAAC;AAAA,UACH;AAEA,cAAIpI,KAAKiC,YAAY,KAAK;AACxB,kBAAMU,SAAO3C,UAAKC,eAALD,mBAAiB2C,SAAQ;AACtC,kBAAMkG,WAAWlG,OAAOA,KAAKI,MAAM,GAAG,EAAEC,IAAG,IAAK;AAChD,mBAAOmF,EACL,KACA;AAAA,cACE,GAAGnI,KAAKC;AAAAA,cACRmI,OAAO;AAAA,cACP,kBAAkBS;AAAAA,eAEpB1B,QACF;AAAA,UACF;AACA,cAAInH,KAAKiC,YAAY,cAAc;AACjC,mBAAOkG,EACLW,YACA;AAAA,cACE,GAAG9I,KAAKC;AAAAA,eAEVkH,QACF;AAAA,UACF;AACA,cAAInH,KAAKiC,YAAY,SAAS;AAC5B,mBAAOkG,EACL,OACA;AAAA,cACEC,OAAO;AAAA,eAET,CACED,EACE,SACAhB,QACF,CAAC,CAEL;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,QAAQ;AAC3B,mBAAOkG,EACL,OACA;AAAA,cACEC,OAAO;AAAA,eAET,CAACjB,SAAS9I,SAASM,KAAK,CAAC,CAC3B;AAAA,UACF;AAEA,cAAIqB,KAAKiC,YAAY,SAAS;AAC5B,mBAAOkG,EACLY,OACA;AAAA,cACA,GAAG/I,KAAKC;AAAAA,eAERkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,SAAS;AAC5B,mBAAOkG,EACLa,OACA;AAAA,cACD,GAAGhJ,KAAKC;AAAAA,eAEPkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,UAAU;AAE7B,mBAAOkG,EACLc,QACA;AAAA,cACE,GAAGjJ,KAAKC;AAAAA,eAEVkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,YAAY;AAC/B,mBAAOkG,EACLe,UACA;AAAA,cACE,GAAGlJ,KAAKC;AAAAA,eAEVkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,UAAU;AAC7B,kBAAMkF,aAAWnH,UAAKmH,aAALnH,mBAAewI,IAAIpB,WAASiB,YAAYjB,OAAO9I,OAAO;AACvEA;AACA,mBAAO6J,EACLgB,QACA;AAAA,cACE1L,KAAKU,SAASQ,MAAMyK;AAAAA,cACpBC,OAAOnL,SAASS,MAAM0E,KAAK;AAAA,cAC3B,GAAGrD,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,eAE9BmH,SACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,cAAc;AACjC,mBAAOkG,EACLmB,YACA;AAAA,cACE,GAAGtJ,KAAKC;AAAAA,eAEVkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,YAAY;AAC/B,gBAAIsB,WAAUvD,UAAKC,eAALD,mBAAiBuD;AAC/B,gBAAIvD,KAAKE,gBAAgB,SAAS;AAChCqD,wBAAU+E;AAAAA,YACZ;AACA,mBAAOH,EACLoB,UACA;AAAA,cACC,GAAGvJ,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,cAC3BwJ,SAASA,MAAM;;AACbpG,yBAASC,QAAQrD,MAAAA,KAAKC,eAALD,gBAAAA,IAAiBsD,QAAQC,SAASvD,KAAKE,WAAW;AAAA,cACrE;AAAA,eAEFiH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,YAAY;AAC/B,mBAAOkG,EACLsB,UACA;AAAA,cACA,GAAGzJ,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,cAC1B0J,YAAYxL,SAASS,MAAM0E,KAAK,GAAGrD,UAAKC,eAALD,mBAAiB2J,QAAQ;AAAA,cAC5D,uBAAwBhL,WAAU;;AAChCT,yBAASS,MAAM0E,KAAK,GAAGrD,MAAAA,KAAKC,eAALD,gBAAAA,IAAiB2J,QAAQ,IAAIhL;AAAAA,cACtD;AAAA,eAEFwI,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,gBAAgB;AACnC,mBAAOkG,EACLyB,cACA;AAAA,cACA,GAAG5J,KAAKC;AAAAA,cACNE,UAAUJ,cAAcC,IAAI;AAAA,cAC5B0J,YAAYxL,SAASS,MAAM0E,KAAK,GAAGrD,UAAKC,eAALD,mBAAiB2J,QAAQ;AAAA,cAC5D,uBAAwBhL,WAAU;;AAChCT,yBAASS,MAAM0E,KAAK,GAAGrD,MAAAA,KAAKC,eAALD,gBAAAA,IAAiB2J,QAAQ,IAAIhL;AAAAA,cACtD;AAAA,eAEFwI,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,WAAW;AAC9B,mBAAOkG,EACL0B,SACA;AAAA,cACE,GAAG7J,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,cAC5B0J,YAAYxL,SAASS,MAAM0E,KAAK,GAAGrD,UAAKC,eAALD,mBAAiB2J,QAAQ;AAAA,cAC5D,uBAAwBhL,WAAU;;AAChCT,yBAASS,MAAM0E,KAAK,GAAGrD,MAAAA,KAAKC,eAALD,gBAAAA,IAAiB2J,QAAQ,IAAIhL;AAAAA,cACtD;AAAA,eAEFwI,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,gBAAgB;AACnC,mBAAOkG,EACL2B,cACA;AAAA,cACE,GAAG9J,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,cAC5B0J,YAAYxL,SAASS,MAAM0E,KAAK,GAAGrD,UAAKC,eAALD,mBAAiB2J,QAAQ;AAAA,cAC5D,uBAAwBhL,WAAU;;AAChCT,yBAASS,MAAM0E,KAAK,GAAGrD,MAAAA,KAAKC,eAALD,gBAAAA,IAAiB2J,QAAQ,IAAIhL;AAAAA,cACtD;AAAA,eAEFwI,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,WAAW;AAE9B,mBAAOkG,EACL4B,SACA;AAAA,cACE,GAAG/J,KAAKC;AAAAA,cACRE,UAAUJ,cAAcC,IAAI;AAAA,eAE9BmH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,WAAW;AAC9B,mBAAOkG,EACL6B,WACA;AAAA,cACC,GAAGhK,KAAKC;AAAAA,eAETkH,QACF;AAAA,UACF;AAEA,cAAInH,KAAKiC,YAAY,iBAAiB;AACpC,mBAAOkG,EACL8B,eACA;AAAA,cACA,GAAGjK,KAAKC;AAAAA,YACR,GACA;AAAA,cACExD,SAAUyN,WAAU;;AAClB,sBAAM/C,aAAWnH,MAAAA,KAAKmH,aAALnH,gBAAAA,IAAewI,IAAIpB,WAASiB,YAAYjB,OAAO9I,SAAS4L,MAAM5B,GAAG;AAClF,sBAAMjF,UAAQrD,MAAAA,KAAKmH,aAALnH,gBAAAA,IAAemK,UAAU/C,WAAK;;AAAIA,+BAAMzI,UAAUuL,MAAM5B,KAAItI,MAAAA,KAAKC,eAALD,gBAAAA,IAAiBoK,IAAI;AAAA;AAC/F,oBAAI/G,WAAU,IAAI;AAChB,yBAAO8D;AAAAA,gBACT;AACA,uBAAOA,aAAAA,gBAAAA,UAAW9D;AAAAA,cACpB;AAAA,YACF,CACF;AAAA,UACF;AAEA,cAAIrD,KAAKiC,YAAY,YAAY;AAC/B,mBAAOkG,EACLkC,UACA;AAAA,cACE,GAAGrK,KAAKC;AAAAA,YACV,CACF;AAAA,UACF;AAEA,cAAID,KAAKiC,YAAY,YAAY;AAC/B,mBAAOkG,EACLmC,UACA;AAAA,cACC,GAAGtK,KAAKC;AAAAA,YACT,CACF;AAAA,UACF;AAEA,cAAID,KAAKiC,YAAY,cAAc;AACjC,mBAAOkG,EACLoC,YACA;AAAA,cACE,GAAGvK,KAAKC;AAAAA,YACV,CACF;AAAA,UACF;AAEA,cAAID,KAAKiC,YAAY,aAAa;AAChC,mBAAOkG,EACLqC,WACA;AAAA,cACE,GAAGxK,KAAKC;AAAAA,YACV,CACF;AAAA,UACF;AAGA,cAAID,KAAKiC,YAAY,OAAO;AAC1B,kBAAMyF,YAAW1H,UAAKmH,aAALnH,mBAAe4B,KAAKwF,WAASA,MAAMnF,YAAY;AAChE,gBAAIyF,UAAU;AACZ,mBAAIA,oBAASzH,eAATyH,mBAAqBC,cAArBD,mBAAgC/H,SAAS,uBAAuB;AAClE,sBAAMiI,SAAOF,oBAASP,aAATO,mBAAoB,OAApBA,mBAAwB/I,UAAS;AAE9C,oBAAI,CAAC5C,eAAe6L,IAAI,GAAG;AAEzB,yBAAOM,eAAc;AAAA,gBACvB;AACA,oBAAI;AACF,wBAAMrB,SAASjL,KAAKC,MAAM+L,IAAI;AAC9B,wBAAM6C,WAAWC,eAAe7D,MAAM;AACtC,wBAAMM,YAAWkB,YAAYoC,UAAUnM,OAAO;AAC9C,yBAAO6J,EAAE,OAAO;AAAA,oBACdC,OAAO;AAAA,kBACT,GAAG,CAACjB,SAAQ,CAAC;AAAA,gBACf,SAASrL,OAAO;AAEd,yBAAOoM,eAAc;AAAA,gBACvB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAGA,iBAAOC,EACLnI,KAAKiC,SACLjC,KAAKC,YACLkH,QACF;AAAA,QAEF,KAAK;AACH,iBAAOnH,KAAKrB,MAAM1C,KAAI;AAAA,QAExB;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAEA0O,cAAU,MAAM;AACdrM,gBAAU;AAAA,IACZ,CAAC;AAED,WAAO;AAAA,MACL+J;AAAAA,MACA9J;AAAAA,MACAjB;AAAAA,MACA+D;AAAAA,MACA7C;AAAAA,MACAwF;AAAAA;EAEJ;AAAA,EACA4G,SAAS;AACP,WAAAC,YAAA,OAAA;AAAA,MAAA,OAAA;AAAA,MAAA,SAAA;AAAA,IAAA,GAAA,CAMM,KAAKxC,YAAY,KAAK9J,GAAG,CAAC,CAAA;AAAA,EAIlC;AACF,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/x-markdown/index.tsx"],"sourcesContent":["import { \n defineComponent, \n ref, computed, watch, \n onMounted, onBeforeUnmount, \n useTemplateRef, h, nextTick,\n onUpdated,\n} from 'vue';\nimport debounce from 'lodash/debounce';\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport remarkGemoji from \"remark-gemoji\";\nimport remarkRehype from \"remark-rehype\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeKatex from \"rehype-katex\";\nimport rehypeStringify from \"rehype-stringify\";\nimport { useTemplateRefsList } from '@vueuse/core'\n\nimport { \n ElMessage, \n ElForm,\n ElFormItem, \n ElInput, \n ElCard,\n ElButton,\n ElSelect,\n ElDatePicker,\n ElTable,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider\n} from 'element-plus';\nimport './style/index.less';\nimport './theme/index.less';\nimport { createStreamGenerator } from './utils/mockStream.ts';\nimport { parseCorePilot } from './utils/parseCorePilotSchema.ts';\nimport { Accordion } from './utils/animation.ts';\nimport CoreText from '../core-text';\nimport CoreTips from '../core-tips';\nimport CoreResult from '../core-result';\nimport CoreTable from '../core-table';\nimport CoreChart from '../core-chart';\nimport CoreCard from '../core-card';\nimport CoreUpload from '../core-upload';\nimport 'katex/dist/katex.min.css'\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\nimport { InputSchema } from '@/types/index.ts';\n\nconst checkAndReturnRefList = (text: string) => {\n const reg = /<div hidden>([\\s\\S]*?)<\\/div>/g;\n const match = reg.exec(text);\n if (!match) {\n return [];\n }\n const refListStr = match[1];\n try {\n const refList = JSON.parse(refListStr);\n return refList;\n } catch (error) {\n return [];\n }\n}\n\n/**\n * 检测 JSON 字符串是否完整\n * 使用最高效的方式:快速检查基本结构后直接尝试解析\n */\nconst isCompleteJSON = (jsonStr: string): boolean => {\n if (!jsonStr || jsonStr.trim().length === 0) {\n return false;\n }\n \n const trimmed = jsonStr.trim();\n \n // 快速检查:必须以 { 或 [ 开头\n const firstChar = trimmed[0];\n if (firstChar !== '{' && firstChar !== '[') {\n return false;\n }\n \n // 直接尝试解析,如果成功就是完整的 JSON\n try {\n JSON.parse(trimmed);\n return true;\n } catch (error) {\n // 解析失败,说明 JSON 不完整或格式错误\n return false;\n }\n}\n\ninterface RefConfig {\n title: string,\n link: string,\n time: string,\n author: string,\n}\n\nexport default defineComponent({\n name: 'XMarkdown',\n props: {\n text: {\n type: String,\n default: '',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n typing: {\n type: Boolean,\n default: false,\n },\n speed: {\n type: Number,\n default: 200,\n },\n isHistoryMessage: {\n type: Boolean,\n default: false,\n },\n historyInputs: {\n type: Object,\n default: () => ({}),\n },\n user: {\n type: String,\n default: 'default',\n },\n authToken: {\n type: String,\n default: 'ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf',\n },\n appId: {\n type: String,\n default: '9a673565-d4f6-4382-bc67-f1beb07df435',\n },\n },\n expose: [\n 'getContentText'\n ],\n emits: ['hoverActiveRefTrigger', 'clickActiveRefTrigger', 'refConfigUpdate', 'downloadFile', 'coreSubmit'],\n setup(props, { emit }) {\n const container = useTemplateRef<HTMLElement>('x-markdown-container');\n const startTime = ref<number>(Date.now());\n const endTime = ref<number>(-Infinity);\n const context = ref('');\n const pendingImages = new Set(); // 存储待处理的图片\n const isInitAnimation = ref(false);\n const tagComplete = ref(false);\n const hitlData = ref<Array<Record<string, any>>>([]);\n const formRefs = useTemplateRefsList<typeof ElForm>();\n const curIndex = ref(0);\n let curInit = 0;\n const ast = ref<any>(null);\n const isRewrite = ref(false);\n\n const streamCall = (stream: string) => {\n context.value = context.value + stream;\n }\n\n const uploadHeaders = computed(() => {\n return {\n Authorization: `Bearer ${props.authToken}`,\n appId: props.appId,\n }\n })\n\n const uploadExtendData = computed(() => {\n return {\n user: props.user,\n }\n })\n\n const streamGener = ref<ReturnType<typeof createStreamGenerator>>(createStreamGenerator(streamCall, props.speed));\n\n const updateSummaryClasses = (mdText: string) => {\n const summaryDivReg = /(<summary[^>]*>[\\s\\S]*?<\\/summary>)\\s*(<div>[\\s\\S]*?)(<\\/div>|$)/g;\n let isFirstSummary = true;\n\n return mdText.replace(summaryDivReg, (match, summaryTag, divContent, divEnd) => {\n const isDivComplete = divEnd === '</div>'; // 直接判断闭合标签是否存在\n const updatedSummary = summaryTag.replace(\n /(<summary)/g,\n (match) => {\n if (isFirstSummary) {\n isFirstSummary = false;\n return match;\n }\n return `<summary class=\"${isDivComplete ? 'loaded' : 'loading'}\"`\n }\n );\n return `${updatedSummary}\\n${divContent}${divEnd}`; // 重组时拼接闭合部分\n });\n }\n\n const formatText = computed(() => {\n if (!props.autoHideThinking) return context.value;\n let content = context.value;\n content = updateSummaryClasses(content);\n content = content.replace(/[\\u00A0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g, ' ');\n if (content.includes('</details>')) {\n if (endTime.value === -Infinity) {\n endTime.value = Date.now();\n }\n\n const res = checkAndReturnRefList(content);\n\n let text = content.replace(/<details open>([\\s\\S]*?)<\\/details>/g, (match, content) => {\n // 将 content 中的第一个 <summary> 中的内容替换为 具体的秒数\n content = content.replace(/<summary>([\\s\\S]*?)<\\/summary>/, (match, content) => {\n const duration = ((endTime.value - startTime.value) / 1000).toFixed(0);\n return `<summary style=\"color: #8D90A0;font-weight: 300; font-size: 16px;\">\n 已完成思考 ${duration > '0' ? duration + 's' : ''} ${res.length ? `<span style=\"display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;\"></span> 引用文档:${res?.length} 个` : ''}\n </summary>`;\n })\n\n content = content.replace(/<summary>完成<\\/summary>/, '<summary class=\"loaded\">完成</summary>')\n\n return `<details>${content}</details>`;\n });\n \n return text;\n }\n return content;\n })\n\n // TODO 后续需要规范相关定义\n // 如果当前是历史消息, 且父级作用域为form,则禁用点击事件\n const checkDisabled = (node: InputSchema) => {\n const { properties = {}, parentScope } = node;\n const { disabled } = properties;\n if (disabled) {\n return true;\n }\n if (parentScope === 'form') {\n return props.isHistoryMessage && !isRewrite.value;\n }\n return false;\n }\n\n watch(() => [props.text, props.typing], (v, o) => {\n const [text, typing] = v;\n const [oldText] = o || [];\n if (!(text as string).startsWith(oldText as string)) {\n streamGener.value?.reset();\n context.value = '';\n }\n if (text) {\n streamGener.value?.update(text);\n if (!typing) {\n streamGener.value?.stop();\n return;\n }\n // 资料整合 标签之后,采用服务端流式速度\n const checkReg = /<summary>资料整合<\\/summary>\\r?\\n(.|\\s)+?/;\n if (!tagComplete.value && checkReg.test(text as string)) {\n tagComplete.value = true;\n streamGener.value?.setSpeed(500);\n return;\n }\n }\n }, {\n immediate: true,\n })\n\n // 获取所有的ref配置\n const refConfig = ref<Array<RefConfig>>([]);\n\n const getRefConfig = () => {\n const refContainer = (container.value as HTMLElement)?.querySelector('div[hidden]');\n refConfig.value = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', refConfig.value);\n }\n const renderComplete = debounce(() => {\n getRefConfig();\n }, 100);\n\n // 获取当前激活的索引文件\n const activeRef = ref<HTMLElement | null>(null);\n\n watch(() => context.value, renderComplete, {\n immediate: true,\n });\n\n watch(activeRef, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n const text = newVal.getAttribute('dataherf');\n const target = refConfig.value.find((item) => {\n return item.link === text;\n });\n emit('hoverActiveRefTrigger', target);\n } else {\n emit('hoverActiveRefTrigger', '');\n }\n }\n });\n\n const getTargeElement = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'SPAN') {\n const isInRefContainer = target.classList.contains('x-markdown-split');\n const isRefContainer = target.classList.contains('x-markdown-sub')\n if (isInRefContainer || isRefContainer) {\n if (!isRefContainer) {\n return target.parentElement as HTMLElement;\n }\n return target;\n }\n }\n };\n\n const handleMouseOver = (e: MouseEvent) => {\n const target = getTargeElement(e);\n if (target) {\n activeRef.value = target;\n return;\n }\n activeRef.value = null;\n }\n\n const handleAClick = async (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const target = e.target as HTMLElement;\n const href = target.getAttribute('href');\n const id = target.getAttribute('data-id') || target.getAttribute('dataid');\n const title = target.getAttribute('data-name') || target.getAttribute('dataname');\n if (!href) {\n return;\n }\n // const fileExt = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'png', 'gif', 'jpg', 'jpeg', 'webp', 'svg'];\n const ext = href.split('.').pop();\n // 如果id不存在,则使用a标签新打开浏览器页面兜底\n if (!id) {\n window.open(href, '_blank');\n return;\n }\n ElMessage('文件下载中...');\n\n emit('downloadFile', {\n title,\n id,\n ext,\n href,\n });\n\n // downloadFile(href);\n return;\n }\n\n const btnClick = async (index: number, action: string, payload: any, parentScope?: 'form' | 'table') => {\n if (action === 'inner_next') {\n curIndex.value += 1;\n return;\n }\n if (action === 'inner_prev') {\n curIndex.value -= 1;\n return;\n }\n if (action === 'inner_rewrite') {\n isRewrite.value = true;\n return;\n }\n\n let res = {\n action,\n payload: {},\n };\n // 区分是否为form组件的按钮,如果带有payload 则约定为非form组件的按钮\n if (payload && parentScope !== 'form') {\n res = {\n action,\n payload,\n }\n } else {\n await formRefs.value[index]?.validate();\n res = {\n action,\n payload: {\n ...hitlData.value[index],\n ...payload,\n }\n }\n }\n if (isRewrite.value && action.startsWith('core_')) {\n isRewrite.value = false;\n }\n emit('coreSubmit', res)\n }\n\n const handleClick = (e: MouseEvent) => {\n // 如果当前点击的是a标签,则根据a标签的href属性直接下载文件\n if ((e.target as HTMLElement).tagName === 'A') {\n handleAClick(e);\n return;\n }\n\n const target = getTargeElement(e);\n if (target) {\n const text = target.getAttribute('dataherf');\n const highlight = JSON.parse(target.getAttribute('datahighlight') || '[]') as Array<string>;\n const page = Number(target.getAttribute('datanumber'));\n const id = target.getAttribute('id');\n const source = refConfig.value.find((item) => {\n return item.link === text;\n });\n const data = {\n ...source,\n highlight,\n page,\n id,\n }\n emit('clickActiveRefTrigger', data);\n }\n }\n\n const getContentText = () => {\n return container.value?.innerText;\n }\n\n onMounted(() => {\n (container.value as HTMLElement).addEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick);\n });\n\n onBeforeUnmount(() => {\n (container.value as HTMLElement).removeEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick)\n })\n\n /**\n * 处理新加载的图片\n * 核心逻辑:设置占位尺寸,渐进式加载\n */\n const processNewImages = () => {\n if (!container.value) return;\n \n const newImages = container.value.querySelectorAll(\n \"img:not([data-processed='true'])\"\n ) as NodeListOf<HTMLImageElement>;\n \n newImages.forEach((img) => {\n if (pendingImages.has(img)) return;\n pendingImages.add(img);\n \n // 设置占位尺寸,避免布局重排\n setPlaceholderDimensions(img);\n \n // 处理已加载的图片\n if (img.complete) {\n handleImageLoad(img);\n } else {\n img.addEventListener(\"load\", () => handleImageLoad(img));\n img.addEventListener(\"error\", () => handleImageError(img));\n }\n });\n };\n \n // 设置图片占位尺寸\n const setPlaceholderDimensions = (img) => {\n const containerWidth = img.parentElement.offsetWidth;\n if (img.naturalWidth > containerWidth) {\n img.style.maxWidth = \"100%\";\n }\n \n if (img.naturalWidth && img.naturalHeight) {\n const ratio = img.naturalHeight / img.naturalWidth;\n img.style.maxHeight = `${Math.min(500, containerWidth * ratio)}px`;\n }\n };\n \n // 图片加载成功处理\n const handleImageLoad = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"loaded\");\n img.style.opacity = \"1\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n \n // 图片加载失败处理\n const handleImageError = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"load-error\");\n img.style.maxHeight = \"200px\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n\n // 初始化unified处理链\n const md = unified()\n .use(remarkParse) // 解析Markdown为AST\n .use(remarkBreaks) // 处理换行符\n .use(remarkGfm, { singleTilde: false }) // GitHub Flavored Markdown支持\n .use(remarkMath) // 数学公式支持\n .use(remarkGemoji) // Emoji支持\n .use(remarkRehype, { allowDangerousHtml: true }) // 转换为HTML AST\n .use(rehypeRaw)\n .use(rehypeKatex)\n .use(rehypeStringify)\n\n /**\n * 递归遍历 schema,收集所有 form 表单及其 data 属性\n * @param schema - CorePilot schema 对象\n * @param formDataList - 用于存储收集到的 form data 的数组\n * @returns void\n */\n const collectFormsFromSchema = (schema: any, formDataList: Array<Record<string, any>>) => {\n if (!schema || typeof schema !== 'object') return;\n \n // 如果当前节点是 form,收集其 data 属性并停止向下递归(form 内部不会嵌套 form)\n if (schema.type === 'form') {\n const formData = {\n ...schema.properties?.data || {},\n // FIXME 目前只有卡片里面仅有可能出现单个表单,需要需要支持多表单场景\n ...props.historyInputs || {},\n };\n formDataList.push(formData);\n return; // form 内部不会再嵌套 form,直接返回\n }\n \n // 递归遍历 children 数组\n if (Array.isArray(schema.children)) {\n schema.children.forEach((child) => {\n collectFormsFromSchema(child, formDataList);\n });\n }\n }\n\n /**\n * 计算 markdown AST 中所有 form 表单的数量,并提取每个 form 的预定义数据\n * @param mdAst - markdown AST 对象\n * @returns { length: number, formDataList: Array<Record<string, any>> } - form 数量和 form data 列表\n */\n const computedForm = (mdAst: any) => {\n const formDataList: Array<Record<string, any>> = [];\n \n // 高效检索:直接查找所有 pre 标签\n const preNodes: any[] = [];\n const findPreNodes = (node: any) => {\n if (!node) return;\n if (node.tagName === \"pre\") {\n preNodes.push(node);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(findPreNodes);\n }\n };\n \n // 遍历 mdAst 查找所有 pre 节点\n if (Array.isArray(mdAst.children)) {\n mdAst.children.forEach(findPreNodes);\n }\n \n // 处理每个 pre 节点中的 CorePilot 代码块\n preNodes.forEach((preNode: any) => {\n const codeNode = preNode.children?.find((child: any) => child.tagName === \"code\");\n if (codeNode?.properties?.className?.includes(\"language-CorePilot\")) {\n try {\n const code = codeNode.children?.[0]?.value || '';\n if (code) {\n const schema = JSON.parse(code);\n // 递归收集所有 form\n collectFormsFromSchema(schema, formDataList);\n }\n } catch (error) {\n console.error('Failed to parse CorePilot schema:', error);\n }\n }\n });\n \n return formDataList\n }\n\n watch(\n () => formatText.value!,\n async (text) => {\n // 处理Markdown到hast再到VNode的转换\n curInit = 0;\n const mdAst = await md.run(md.parse(text));\n // 递归遍历所有 CorePilot schema,收集 form 表单及其预定义数据\n const formDataList = computedForm(mdAst);\n hitlData.value = formDataList;\n\n await nextTick();\n ast.value = mdAst;\n \n // 等待DOM更新后处理图片\n nextTick(processNewImages);\n nextTick(() => {\n const details = container.value?.querySelector('details');\n const summary = details?.querySelector('summary');\n if (summary && !isInitAnimation.value) {\n isInitAnimation.value = true;\n new Accordion(details!);\n }\n })\n },\n { immediate: true }\n );\n\n /**\n * 渲染骨架屏组件\n * @returns {VNode} 骨架屏虚拟节点\n */\n const renderSkeleton = () => {\n return h(\"div\", {\n class: \"hitl-skeleton\",\n }, [\n // 头部骨架\n h(\"div\", {\n class: \"skeleton-header\",\n }, [\n h(\"div\", { class: \"skeleton-avatar\" }),\n h(\"div\", { class: \"skeleton-title\" }),\n ]),\n // 内容骨架\n h(\"div\", { class: \"skeleton-item skeleton-item-long\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-medium\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-short\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-long\" }),\n h(\"div\", { class: \"skeleton-item skeleton-item-medium\" }),\n ]);\n };\n\n /**\n * 将hast(HTML AST)转换为Vue VNode\n * @param {Object} node hast节点\n * @returns {VNode} Vue虚拟节点\n */\n // FIXME ⚠️⚠️⚠️ 复杂表单存在性能问题 ⚠️⚠️⚠️\n const hastToVNode = (node, index?: number, row?: any) => {\n if (!node) return null;\n let children: any[] = [];\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n\n if (!blackTagNames.includes(node.tagName)) {\n children = node.children?.map?.(child => hastToVNode(child, index)) || [];\n }\n switch (node.type) {\n case \"root\":\n return h(\n \"div\",\n { class: \"markdown-body\" },\n h(ElConfigProvider, {\n locale: zhCN,\n }, children)\n );\n \n case \"element\":\n if (node.tagName === \"sub\") {\n const formatChildren = [\n {\n type: \"element\",\n tagName: \"span\",\n properties: {\n class: \"x-markdown-split\",\n },\n }, \n ...node.children\n ]\n const children = formatChildren?.map(child => hastToVNode(child, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, children);\n }\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\n }, \n children\n );\n }\n // 处理特殊元素:图片、链接、代码块等\n if (node.tagName === \"img\") {\n return h(\"img\", {\n ...node.properties,\n class: \"markdown-image\",\n \"data-processed\": \"false\" // 标记未处理图片\n });\n }\n \n if (node.tagName === \"a\") {\n const href = node.properties?.href || ''; // 获取链接地址\n const fileType = href ? href.split('.').pop() : null; // 标记文件类型\n return h(\n \"a\",\n {\n ...node.properties,\n class: 'file-link',\n 'data-file-type': fileType,\n },\n children\n );\n }\n if (node.tagName === 'ElTimeline') {\n return h(\n ElTimeline,\n {\n ...node.properties,\n },\n children\n );\n }\n if (node.tagName === 'table') {\n return h(\n \"div\",\n {\n class: 'custom-table-container',\n },\n [\n h(\n \"table\",\n children\n ),\n ]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n {\n class: 'custom-view-container',\n },\n [children[curIndex.value]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(\n ElRow,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCol') {\n return h(\n ElCol,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCard') {\n \n return h(\n ElCard,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'CoreCard') {\n const slots: any = {};\n \n // 处理 header 插槽\n if (node.slots?.header) {\n slots.header = () => {\n return node.slots.header.map((slotItem: any) => {\n return hastToVNode(slotItem, index);\n });\n };\n }\n \n // 处理默认插槽\n if (children && children.length > 0) {\n slots.default = () => children;\n }\n \n return h(\n CoreCard,\n {\n ...node.properties,\n },\n slots\n );\n }\n\n if (node.tagName === 'ElForm') {\n const children = node.children?.map(child => hastToVNode(child, curInit));\n curInit++;\n return h(\n ElForm,\n {\n ref: formRefs.value.set,\n model: hitlData.value[index!],\n ...node.properties,\n disabled: checkDisabled(node),\n },\n children\n )\n }\n\n if (node.tagName === 'ElFormItem') {\n return h(\n ElFormItem,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = row;\n }\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n onClick: () => {\n btnClick(index!, node.properties?.action, payload, node.parentScope);\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElSelect') {\n return h(\n ElSelect,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElInput') {\n return h(\n ElInput,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadioGroup') {\n return h(\n ElRadioGroup,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value as string;\n }\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadio') {\n\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n },\n children\n )\n }\n \n if (node.tagName === 'ElTable') {\n return h(\n CoreTable,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElTableColumn') {\n return h(\n ElTableColumn,\n {\n ...node.properties,\n },\n {\n default: (scope) => {\n const children = node.children?.map(child => hastToVNode(child, curInit, scope.row));\n console.log('children', children, node.children);\n const index = node.children?.findIndex(child => child.value === scope.row[node.properties?.prop] && child.value !== undefined);\n return index === -1 ? children : children?.[index];\n },\n }\n )\n }\n\n if (node.tagName === 'CoreText') {\n return h(\n CoreText,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreTips') {\n return h(\n CoreTips,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreResult') {\n return h(\n CoreResult,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreChart') {\n return h(\n CoreChart,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreUpload') {\n // 如果在表单中,需要处理 formProp 和双向绑定\n if (node.parentScope === 'form' && node.properties?.formProp) {\n const formProp = node.properties.formProp;\n return h(\n CoreUpload,\n {\n headers: uploadHeaders.value,\n extendData: uploadExtendData.value,\n ...node.properties,\n disabled: checkDisabled(node),\n fileList: hitlData.value[index!]?.[formProp] || [],\n 'onUpdate:fileList': (value: any) => {\n if (!hitlData.value[index!]) {\n hitlData.value[index!] = {};\n }\n // 针对目前上传的文件解析,CA 这边必须得放在files 属性中,故被迫需要进行兼容\n // 这里将基于 __files__ 去识别,后续在coreagent 的 adapter 中进行处理\n if (!hitlData.value[index!].__files__) {\n hitlData.value[index!].__files__ = {};\n }\n hitlData.value[index!].__files__[formProp] = value;\n hitlData.value[index!][formProp] = value;\n },\n }\n );\n }\n // 非表单场景,直接渲染\n return h(\n CoreUpload,\n {\n ...node.properties,\n disabled: checkDisabled(node),\n }\n );\n }\n \n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find(child => child.tagName === \"code\");\n if (codeNode) {\n if (codeNode.properties?.className?.includes(\"language-CorePilot\")) {\n const code = codeNode.children?.[0]?.value || '';\n // 检查 JSON 是否完整\n if (!isCompleteJSON(code)) {\n // JSON 不完整,显示骨架屏\n return renderSkeleton();\n }\n try {\n const schema = JSON.parse(code);\n const viewTree = parseCorePilot(schema);\n const children = hastToVNode(viewTree, curInit)\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [children]);\n } catch (error) {\n // JSON 解析失败,可能是格式错误,显示骨架屏\n return renderSkeleton();\n }\n }\n }\n }\n \n // 其他普通元素\n return h(\n node.tagName,\n node.properties,\n children\n );\n \n case \"text\":\n return node.value.trim();\n \n default:\n return null;\n }\n };\n\n onUpdated(() => {\n curInit = 0;\n })\n\n return {\n hastToVNode,\n ast,\n container,\n renderComplete,\n isRewrite,\n getContentText,\n };\n },\n render() {\n return (\n <div\n ref=\"x-markdown-container\"\n class=\"x-markdown\"\n >\n {\n this.hastToVNode(this.ast)\n }\n </div>\n );\n },\n});"],"names":["checkAndReturnRefList","text","reg","match","exec","refListStr","refList","JSON","parse","error","isCompleteJSON","jsonStr","trim","length","trimmed","firstChar","name","props","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","historyInputs","Object","user","authToken","appId","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","isRewrite","streamCall","stream","value","uploadHeaders","computed","Authorization","uploadExtendData","streamGener","createStreamGenerator","updateSummaryClasses","mdText","summaryDivReg","isFirstSummary","replace","summaryTag","divContent","divEnd","isDivComplete","updatedSummary","formatText","content","includes","res","duration","toFixed","checkDisabled","node","properties","parentScope","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","getRefConfig","refContainer","querySelector","textContent","renderComplete","debounce","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleAClick","stopPropagation","preventDefault","href","id","title","ext","split","pop","window","open","ElMessage","btnClick","index","action","payload","validate","handleClick","highlight","page","source","data","getContentText","innerText","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","newImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","push","Array","isArray","children","child","computedForm","mdAst","preNodes","findPreNodes","preNode","codeNode","className","code","console","run","nextTick","details","summary","Accordion","renderSkeleton","h","class","hastToVNode","row","blackTagNames","map","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","slots","header","slotItem","CoreCard","ElForm","set","model","ElFormItem","ElButton","onClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","log","findIndex","prop","undefined","CoreText","CoreTips","CoreResult","CoreChart","CoreUpload","headers","extendData","fileList","__files__","viewTree","parseCorePilot","onUpdated","render","_createVNode"],"mappings":"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"}