@core-pilot/client-vue 0.0.16 → 0.0.18

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.
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),t=require("vue-element-plus-x"),a=require("./source/index.vue.js"),l=require("../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.24_typescript@5.6.3_/node_modules/@element-plus/icons-vue/dist/index.js"),n=require("element-plus");/* empty css *//* empty css *//* empty css */;/* empty css */const i=require("./LoadingButton/index.vue.js");;/* empty css */const s=e.defineComponent({props:{loading:{type:Boolean,default:!1},actionUrl:{type:String,default:"/openapi/v1/app/files/upload"},acceptFileType:{type:String,default:".txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.xls,.doc,.docx,.csv,.eml,.msg,.pptx,.ppt,.xml,.epub,.jpg,.jpeg,.png,.gif,.webp,.svg"},agentName:{type:String,default:"知识问答智能体"},limit:{type:Number,default:5},customStyle:{type:Object,default:()=>({maxHeight:"75px"})},inputData:{type:String,default:""},placeholder:{type:String,default:"请尝试输入任务、问题或想法,我会帮你搞定"},tagList:{type:Array,default:()=>[{id:"1",name:"问产品"},{id:"2",name:"问品类"},{id:"3",name:"问品牌"},{id:"4",name:"找物料"},{id:"5",name:"问知识"},{id:"6",name:"遇客诉"}]},sceneList:{type:Array,default:()=>[{id:"ANC",name:"ANC"},{id:"BNC",name:"BNC"}]},scene:{type:String,default:void 0},user:{type:String,default:""},authToken:{type:String,default:""},appId:{type:String,default:""}},emits:["cancel","submit","sceneChange","update:scene"],setup(a,{emit:s}){const o=e.useTemplateRef("editorSender"),r=e.useTemplateRef("editorSenderWrapper"),d=e.useTemplateRef("fileUpload"),c=e.computed(()=>({Authorization:`Bearer ${a.authToken}`,appId:a.appId})),p=e.computed(()=>({user:a.user})),u=e.ref((()=>{if(a.scene){const e=a.sceneList.find(e=>e.id===a.scene);if(e)return e}return a.sceneList[0]})()),m=e.ref(!0),v=e.ref([]),f=e.ref(a.tagList[0]);e.watch(()=>a.agentName,t=>{e.nextTick(()=>{var e;const a=null==(e=r.value)?void 0:e.querySelector(".el-editor-sender-chat-room");null==a||a.setAttribute("datatype",t)})},{immediate:!0}),e.watch(()=>a.inputData,t=>{e.nextTick(()=>{var e,a;null==(e=o.value)||e.clear(),null==(a=o.value)||a.setText(t)})}),e.watch(()=>a.scene,e=>{if(e){const t=a.sceneList.find(t=>t.id===e);t&&(u.value=t)}}),e.watch(()=>a.sceneList,e=>{if(e.length>0){if(a.scene){const t=e.find(e=>e.id===a.scene);if(t)return void(u.value=t)}u.value=e[0]}},{immediate:!0});const g=()=>{s("cancel")},h=e=>{if(m.value||a.loading)return;const t={text:e.text,file:v.value.map(e=>e.response)};var l,n;s("submit",t),null==(l=o.value)||l.clear(),v.value=[],null==(n=d.value)||n.clearFiles()},y=()=>{n.ElNotification({title:"",message:"上传文件失败",type:"error"})},x=(e,t,a)=>{v.value=a},N=e=>{if(t=e.type,!new Set(["text/plain","text/markdown","application/pdf","text/html","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","text/csv","message/rfc822","application/vnd.ms-outlook","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-powerpoint","application/xml","text/xml","application/epub+zip","image/jpeg","image/png","image/gif","image/webp","image/svg+xml"]).has(null==t?void 0:t.trim().toLowerCase()))return n.ElNotification({title:"",message:"无法解析上传",type:"warning"}),!1;var t;const a=e.type.includes("image"),l=!a,i=e.size/1024/1024<15,s=e.size/1024/1024<10;return l&&!i?(n.ElNotification({title:"",message:"上传文档大小不能超过 15MB!",type:"warning"}),!1):!(a&&!s)||(n.ElNotification({title:"",message:"上传图片大小不能超过 10MB!",type:"warning"}),!1)},_=()=>{n.ElNotification({title:"",message:"最多上传5个文件",type:"warning"})},w=({name:e})=>{var t;const a=v.value.find(t=>t.name===e);a&&(null==(t=d.value)||t.handleRemove(a))},S=(e,t)=>{v.value=t},b=()=>{var e;const t=null==(e=o.value)?void 0:e.getCurrentValue();h(t)};return{isEmpty:m,fileList:v,activeTag:f,cancelHandler:g,submitHandler:h,changeHandler:()=>{var e,t;m.value=null==(t=null==(e=o.value)?void 0:e.chatState)?void 0:t.isEmpty},handleUploadError:y,handleUploadSuccess:x,handleUploadBefore:N,handleUploadExceed:_,removeFile:w,handleUploadRemove:S,submitBtnClick:b,getSlots:()=>{const o={"action-list":()=>e.createVNode("div",{class:"sender-action-wrapper"},[e.createVNode("div",{class:"sender-action-left"},[e.createVNode(n.ElUpload,{ref:"fileUpload",disabled:v.value.length>5,action:a.actionUrl,"show-file-list":!1,multiple:!0,limit:a.limit-v.value.length,data:p.value,beforeUpload:N,headers:c.value,onError:y,onSuccess:x,onExceed:_,onRemove:S,accept:a.acceptFileType},{default:()=>[e.createVNode(n.ElIcon,{class:"sender-file-icon"},{default:()=>[e.createVNode(l.Paperclip,null,null)]})]}),a.sceneList.length>0?e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"split-line"},null),e.createVNode("div",{class:"scene-list"},[a.sceneList.map(t=>e.createVNode("span",{class:u.value.id===t.id?"scene-item active":"scene-item",onClick:()=>{return e=t,u.value=e,s("sceneChange",e),void s("update:scene",e.id);var e}},[t.name]))])]):null]),a.loading?e.createVNode(i,{class:"sender-cancel",onCancel:g},null):e.createVNode("div",{class:{"sender-btn":!0,active:!m.value},onClick:b},null)])};return(v.value.length>0||a.tagList.length>0)&&(o.header=()=>e.createVNode("div",{class:"sender-header-wrapper"},[e.createVNode("div",{class:"sender-file-list"},[v.value.map(a=>e.createVNode(t.FilesCard,{name:a.name,"show-del-icon":!0,status:"done",onDelete:w},null))]),e.createVNode("div",{class:"tag-list-wrapper"},[a.tagList.map(t=>e.createVNode("span",{class:f.value.id===t.id?"tag-item active":"tag-item",onClick:()=>{f.value=t}},[t.name]))])])),o}}},render(){let t;return e.createVNode("div",{class:"editor-sender-wrapper",ref:"editorSenderWrapper"},[e.createVNode(a,{ref:"editorSender",variant:"updown",loading:this.loading,placeholder:this.placeholder,activeTag:this.activeTag,onSubmit:this.submitHandler,onCancel:this.cancelHandler,onChange:this.changeHandler,"custom-style":this.customStyle},(l=t=this.getSlots(),"function"==typeof l||"[object Object]"===Object.prototype.toString.call(l)&&!e.isVNode(l)?t:{default:()=>[t]}))]);var l}});module.exports=s;
1
+ "use strict";const e=require("vue"),t=require("vue-element-plus-x"),a=require("./source/index.vue.js"),l=require("../../node_modules/.pnpm/@element-plus_icons-vue@2.3.2_vue@3.5.24_typescript@5.6.3_/node_modules/@element-plus/icons-vue/dist/index.js"),n=require("element-plus");/* empty css *//* empty css *//* empty css */;/* empty css */const i=require("./LoadingButton/index.vue.js");;/* empty css */const s=e.defineComponent({props:{loading:{type:Boolean,default:!1},actionUrl:{type:String,default:"/openapi/v1/app/files/upload"},acceptFileType:{type:String,default:".txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.xls,.doc,.docx,.csv,.eml,.msg,.pptx,.ppt,.xml,.epub,.jpg,.jpeg,.png,.gif,.webp,.svg"},agentName:{type:String,default:"知识问答智能体"},limit:{type:Number,default:5},customStyle:{type:Object,default:()=>({maxHeight:"75px"})},inputData:{type:String,default:""},placeholder:{type:String,default:"请尝试输入任务、问题或想法,我会帮你搞定"},tagList:{type:Array,default:()=>[{id:"1",name:"问产品"},{id:"2",name:"问品类"},{id:"3",name:"问品牌"},{id:"4",name:"找物料"},{id:"5",name:"问知识"},{id:"6",name:"遇客诉"}]},sceneList:{type:Array,default:()=>[{id:"ANC",name:"ANC"},{id:"BNC",name:"BNC"}]},scene:{type:String,default:void 0},user:{type:String,default:""},authToken:{type:String,default:""},appId:{type:String,default:""},showUpload:{type:Boolean,default:!0}},emits:["cancel","submit","sceneChange","update:scene"],setup(a,{emit:s}){const o=e.useTemplateRef("editorSender"),r=e.useTemplateRef("editorSenderWrapper"),d=e.useTemplateRef("fileUpload"),c=e.computed(()=>({Authorization:`Bearer ${a.authToken}`,appId:a.appId})),p=e.computed(()=>({user:a.user})),u=e.ref((()=>{if(a.scene){const e=a.sceneList.find(e=>e.id===a.scene);if(e)return e}return a.sceneList[0]})()),m=e.ref(!0),v=e.ref([]),f=e.ref(a.tagList[0]);e.watch(()=>a.agentName,t=>{e.nextTick(()=>{var e;const a=null==(e=r.value)?void 0:e.querySelector(".el-editor-sender-chat-room");null==a||a.setAttribute("datatype",t)})},{immediate:!0}),e.watch(()=>a.inputData,t=>{e.nextTick(()=>{var e,a;null==(e=o.value)||e.clear(),null==(a=o.value)||a.setText(t)})}),e.watch(()=>a.scene,e=>{if(e){const t=a.sceneList.find(t=>t.id===e);t&&(u.value=t)}}),e.watch(()=>a.sceneList,e=>{if(e.length>0){if(a.scene){const t=e.find(e=>e.id===a.scene);if(t)return void(u.value=t)}u.value=e[0]}},{immediate:!0});const g=()=>{s("cancel")},h=e=>{if(m.value||a.loading)return;const t={text:e.text,file:v.value.map(e=>e.response)};var l,n;s("submit",t),null==(l=o.value)||l.clear(),v.value=[],null==(n=d.value)||n.clearFiles()},y=()=>{n.ElNotification({title:"",message:"上传文件失败",type:"error"})},x=(e,t,a)=>{v.value=a},N=e=>{if(t=e.type,!new Set(["text/plain","text/markdown","application/pdf","text/html","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","text/csv","message/rfc822","application/vnd.ms-outlook","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-powerpoint","application/xml","text/xml","application/epub+zip","image/jpeg","image/png","image/gif","image/webp","image/svg+xml"]).has(null==t?void 0:t.trim().toLowerCase()))return n.ElNotification({title:"",message:"无法解析上传",type:"warning"}),!1;var t;const a=e.type.includes("image"),l=!a,i=e.size/1024/1024<15,s=e.size/1024/1024<10;return l&&!i?(n.ElNotification({title:"",message:"上传文档大小不能超过 15MB!",type:"warning"}),!1):!(a&&!s)||(n.ElNotification({title:"",message:"上传图片大小不能超过 10MB!",type:"warning"}),!1)},w=()=>{n.ElNotification({title:"",message:"最多上传5个文件",type:"warning"})},_=({name:e})=>{var t;const a=v.value.find(t=>t.name===e);a&&(null==(t=d.value)||t.handleRemove(a))},S=(e,t)=>{v.value=t},b=()=>{var e;const t=null==(e=o.value)?void 0:e.getCurrentValue();h(t)};return{isEmpty:m,fileList:v,activeTag:f,cancelHandler:g,submitHandler:h,changeHandler:()=>{var e,t;m.value=null==(t=null==(e=o.value)?void 0:e.chatState)?void 0:t.isEmpty},handleUploadError:y,handleUploadSuccess:x,handleUploadBefore:N,handleUploadExceed:w,removeFile:_,handleUploadRemove:S,submitBtnClick:b,getSlots:()=>{const o={"action-list":()=>e.createVNode("div",{class:"sender-action-wrapper"},[e.createVNode("div",{class:"sender-action-left"},[a.showUpload?e.createVNode(n.ElUpload,{ref:"fileUpload",disabled:v.value.length>5,action:a.actionUrl,"show-file-list":!1,multiple:!0,limit:a.limit-v.value.length,data:p.value,beforeUpload:N,headers:c.value,onError:y,onSuccess:x,onExceed:w,onRemove:S,accept:a.acceptFileType},{default:()=>[e.createVNode(n.ElIcon,{class:"sender-file-icon"},{default:()=>[e.createVNode(l.Paperclip,null,null)]})]}):null,a.showUpload&&a.sceneList.length>0?e.createVNode("div",{class:"split-line"},null):null,a.sceneList.length>0?e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"scene-list"},[a.sceneList.map(t=>e.createVNode("span",{class:u.value.id===t.id?"scene-item active":"scene-item",onClick:()=>{return e=t,u.value=e,s("sceneChange",e),void s("update:scene",e.id);var e}},[t.name]))])]):null]),a.loading?e.createVNode(i,{class:"sender-cancel",onCancel:g},null):e.createVNode("div",{class:{"sender-btn":!0,active:!m.value},onClick:b},null)])};return(v.value.length>0||a.tagList.length>0)&&(o.header=()=>e.createVNode("div",{class:"sender-header-wrapper"},[e.createVNode("div",{class:"sender-file-list"},[v.value.map(a=>e.createVNode(t.FilesCard,{name:a.name,"show-del-icon":!0,status:"done",onDelete:_},null))]),e.createVNode("div",{class:"tag-list-wrapper"},[a.tagList.map(t=>e.createVNode("span",{class:f.value.id===t.id?"tag-item active":"tag-item",onClick:()=>{f.value=t}},[t.name]))])])),o}}},render(){let t;return e.createVNode("div",{class:"editor-sender-wrapper",ref:"editorSenderWrapper"},[e.createVNode(a,{ref:"editorSender",variant:"updown",loading:this.loading,placeholder:this.placeholder,activeTag:this.activeTag,onSubmit:this.submitHandler,onCancel:this.cancelHandler,onChange:this.changeHandler,"custom-style":this.customStyle},(l=t=this.getSlots(),"function"==typeof l||"[object Object]"===Object.prototype.toString.call(l)&&!e.isVNode(l)?t:{default:()=>[t]}))]);var l}});module.exports=s;
2
2
  //# sourceMappingURL=index.js.map
@@ -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 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":["index","props","loading","type","Boolean","default","actionUrl","String","acceptFileType","agentName","limit","Number","customStyle","Object","maxHeight","inputData","placeholder","tagList","Array","id","name","sceneList","scene","undefined","user","authToken","appId","emits","setup","emit","editorSender","useTemplateRef","editorSenderWrapper","fileUpload","headers","computed","Authorization","extendData","activeScene","ref","getInitialScene","found","find","item","isEmpty","fileList","activeTag","watch","val","nextTick","target","value","querySelector","setAttribute","immediate","clear","setText","length","cancelHandler","submitHandler","res","text","file","map","response","initSender","clearFiles","handleUploadError","ElNotification","title","message","handleUploadSuccess","list","handleUploadBefore","mimeType","Set","has","trim","toLowerCase","isImg","includes","isDoc","isLt15M","size","isLt10M","handleUploadExceed","removeFile","handleRemove","handleUploadRemove","files","submitBtnClick","context","getCurrentValue","changeHandler","chatState","getSlots","slots","action-list","_createVNode","class","ElUpload","disabled","action","multiple","data","beforeUpload","onError","onSuccess","onExceed","onRemove","accept","ElIcon","Paperclip","_Fragment","onClick","triggerSceneChange","LoadingBtn","onCancel","active","FilesCard","status","onDelete","render","_slot","EditorSender","variant","this","onSubmit","onChange","s","prototype","toString","call","_isVNode"],"mappings":"o6BAWA,MAAAA,oBAA+B,CAC7BC,MAAO,CACLC,QAAS,CACPC,KAAMC,QACNC,SAAS,GAEXC,UAAW,CACTH,KAAMI,OACNF,QAAS,gCAQXG,eAAgB,CACdL,KAAMI,OACNF,QAAS,iIASXI,UAAW,CACTN,KAAMI,OACNF,QAAS,WAEXK,MAAO,CACLP,KAAMQ,OACNN,QAAS,GAEXO,YAAa,CACXT,KAAMU,OACNR,QAASA,KAAAA,CACPS,UAAW,UAGfC,UAAW,CACTZ,KAAMI,OACNF,QAAS,IAEXW,YAAa,CACXb,KAAMI,OACNF,QAAS,wBAEXY,QAAS,CACPd,KAAMe,MACNb,QAASA,IAAO,CACd,CACEc,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,SAIZC,UAAW,CACTlB,KAAMe,MAINb,QAASA,IAAO,CACd,CACEc,GAAI,MACJC,KAAM,OAER,CACED,GAAI,MACJC,KAAM,SAIZE,MAAO,CACLnB,KAAMI,OACNF,aAASkB,GAEXC,KAAM,CACJrB,KAAMI,OACNF,QAAS,IAEXoB,UAAW,CACTtB,KAAMI,OACNF,QAAS,IAEXqB,MAAO,CACLvB,KAAMI,OACNF,QAAS,KAGbsB,MAAO,CAAC,SAAU,SAAU,cAAe,gBAC3CC,KAAAA,CAAM3B,GAAO4B,KAAEA,IACb,MAAMC,EAAeC,EAAAA,eAAoC,gBACnDC,EAAsBD,EAAAA,eAA4B,uBAClDE,EAAaF,EAAAA,eAAgC,cAC7CG,EAAUC,EAAAA,SAAS,KAChB,CACLC,cAAe,UAAUnC,EAAMwB,YAC/BC,MAAOzB,EAAMyB,SAGXW,EAAaF,EAAAA,SAAS,KACnB,CACLX,KAAMvB,EAAMuB,QAYVc,EAAcC,MAPIC,MACtB,GAAIvC,EAAMqB,MAAO,CACf,MAAMmB,EAAQxC,EAAMoB,UAAUqB,QAAaC,EAAKxB,KAAOlB,EAAMqB,OAC7D,GAAImB,EAAO,OAAOA,CACpB,CACA,OAAOxC,EAAMoB,UAAU,IAEDmB,IAElBI,EAAUL,EAAAA,KAAI,GACdM,EAAWN,EAAAA,IAAiB,IAC5BO,EAAYP,EAAAA,IAAItC,EAAMgB,QAAQ,IAEpC8B,EAAAA,MAAM,IAAM9C,EAAMQ,UAAYuC,IAC5BC,EAAAA,SAAS,WACP,MAAMC,EAASlB,OAAAA,EAAAA,EAAoBmB,YAApBnB,EAAAA,EAA2BoB,cAAc,+BACxDF,MAAAA,GAAAA,EAAQG,aAAa,WAAYL,MAElC,CACDM,WAAW,IAGbP,EAAAA,MAAM,IAAM9C,EAAMc,UAAYiC,IAC5BC,EAAAA,SAAS,aACPnB,OAAAA,EAAAA,EAAaqB,QAAbrB,EAAoByB,QACpBzB,OAAAA,EAAAA,EAAaqB,UAAOK,QAAQR,OAKhCD,EAAAA,MAAM,IAAM9C,EAAMqB,MAAQ0B,IACxB,GAAIA,EAAK,CACP,MAAMP,EAAQxC,EAAMoB,UAAUqB,KAAKC,GAAQA,EAAKxB,KAAO6B,GACnDP,IACFH,EAAYa,MAAQV,EAExB,IAGFM,EAAAA,MAAM,IAAM9C,EAAMoB,UAAY2B,IAC5B,GAAIA,EAAIS,OAAS,EAAG,CAElB,GAAIxD,EAAMqB,MAAO,CACf,MAAMmB,EAAQO,EAAIN,QAAaC,EAAKxB,KAAOlB,EAAMqB,OACjD,GAAImB,EAEF,YADAH,EAAYa,MAAQV,EAGxB,CACAH,EAAYa,MAAQH,EAAI,EAC1B,GACC,CACDM,WAAW,IAGb,MAAMI,EAAgBA,KACpB7B,EAAK,WASD8B,EAAiBX,IACrB,GAAIJ,EAAQO,OAASlD,EAAMC,QAAS,OACpC,MAAM0D,EAAM,CACVC,KAAMb,EAAIa,KACVC,KAAMjB,EAASM,MAAMY,IAAKpB,GAASA,EAAKqB,WAVzBC,QAYjBpC,EAAK,SAAU+B,GAXf9B,OAAAA,EAAAA,EAAaqB,QAAbrB,EAAoByB,QACpBV,EAASM,MAAQ,GACjBlB,OAAAA,EAAAA,EAAWkB,QAAXlB,EAAkBiC,cAiBdC,EAAoBA,KACxBC,iBAAe,CACbC,MAAO,GACPC,QAAS,SACTnE,KAAM,WAIJoE,EAAsBA,CAACP,EAAUF,EAAMU,KAC3C3B,EAASM,MAAQqB,GAiCbC,EAAsBX,IAC1B,GA/BuBY,EA+BFZ,EAAK3D,UA7BHwE,IAAI,CACzB,aACA,gBACA,kBACA,YACA,oEACA,2BACA,qBACA,0EACA,WACA,iBACA,6BACA,4EACA,gCACA,kBACA,WACA,uBACA,aACA,YACA,YACA,aACA,kBAIgBC,IAAIF,MAAAA,OAAAA,EAAAA,EAAUG,OAAOC,eAUrC,OALAV,iBAAe,CACbC,MAAO,GACPC,QAAS,SACTnE,KAAM,aAED,EArCcuE,IAAAA,EAuCvB,MAAMK,EAAQjB,EAAK3D,KAAK6E,SAAS,SAC3BC,GAASF,EACTG,EAAUpB,EAAKqB,KAAO,KAAO,KAAO,GACpCC,EAAUtB,EAAKqB,KAAO,KAAO,KAAO,GAC1C,OAAIF,IAAUC,GACZd,iBAAe,CACbC,MAAO,GACPC,QAAS,mBACTnE,KAAM,aAED,KAEL4E,IAAUK,KACZhB,iBAAe,CACbC,MAAO,GACPC,QAAS,mBACTnE,KAAM,aAED,IAKLkF,EAAqBA,KACzBjB,iBAAe,CACbC,MAAO,GACPC,QAAS,WACTnE,KAAM,aAKJmF,EAAaA,EAAGlE,iBACpB,MAAM8B,EAASL,EAASM,MAAMT,KAAMC,GAASA,EAAKvB,OAASA,GACvD8B,IACFjB,OAAAA,EAAAA,EAAWkB,UAAOoC,aAAarC,KAI7BsC,EAAqBA,CAAC1B,EAAM2B,KAChC5C,EAASM,MAAQsC,GAGbC,EAAiBA,WACrB,MAAMC,EAAU7D,OAAAA,EAAAA,EAAaqB,YAAbrB,EAAAA,EAAoB8D,kBACpCjC,EAAcgC,IAkHhB,MAAO,CACL/C,UACAC,WACAC,YACAY,gBACAC,gBACAkC,cA5NoBA,aACpBjD,EAAQO,MAAQrB,OAAAA,EAAAA,OAAAA,EAAAA,EAAaqB,YAAbrB,EAAAA,EAAoBgE,gBAApBhE,EAAAA,EAA+Bc,SA4N/CuB,oBACAI,sBACAE,qBACAY,qBACAC,aACAE,qBACAE,iBACAK,SApHeA,KACf,MAAMC,EAAQ,CACZ,cAAeC,IAAAC,EAAAA,YAAA,MAAA,CAAAC,MAAA,yBAAA,CAAAD,EAAAA,YAAA,MAAA,CAAAC,MAAA,sBAAA,CAAAD,EAAAA,YAAAE,WAAA,CAAA7D,IAAA,aAAA8D,SAKGxD,EAASM,MAAMM,OAAS,EAAC6C,OAC3BrG,EAAMK,UAAS,kBACP,EAAKiG,UAAA,EAAA7F,MAEdT,EAAMS,MAAQmC,EAASM,MAAMM,OAAM+C,KACpCnE,EAAWc,MAAKsD,aACRhC,EAAkBvC,QACvBA,EAAQiB,MAAKuD,QACbvC,EAAiBwC,UACfpC,EAAmBqC,SACpBvB,EAAkBwB,SAClBrB,EAAkBsB,OACpB7G,EAAMO,gBAAc,CAAAH,QAAAA,IAAA,CAAA6F,EAAAA,YAAAa,SAAA,CAAAZ,MAAA,oBAAA,CAAA9F,QAAAA,IAAA,CAAA6F,EAAAA,YAAAc,EAAAA,UAAA,KAAA,YAS5B/G,EAAMoB,UAAUoC,OAAS,EAACyC,cAAAe,EAAAA,SAAA,KAAA,CAAAf,EAAAA,YAAA,MAAA,CAAAC,MAAA,cAAA,MAAAD,EAAAA,YAAA,MAAA,CAAAC,MAAA,cAAA,CAKlBlG,EAAMoB,UAAU0C,IAAKpB,GAAIuD,EAAAA,YAAA,OAAA,CAAAC,MAEhB7D,EAAYa,MAAMhC,KAAOwB,EAAKxB,GAAK,oBAAsB,aAAY+F,QACnEA,KAAMC,OA7CT7F,EA6C4BqB,EAzCtDL,EAAYa,MAAQ7B,EACpBO,EAAK,cAAeP,QACpBO,EAAK,eAAgBP,EAAMH,IANDG,IAAAA,IA6CiC,CAEpCqB,EAAKvB,YAMd,OAINnB,EAAMC,QAAOgG,EAAAA,YAAAkB,EAAA,CAAAjB,MAAA,gBAAAkB,SAGC3D,GAAa,MAAAwC,EAAAA,YAAA,MAAA,CAAAC,MAGhB,CAAE,cAAc,EAAMmB,QAAW1E,EAAQO,OAAO+D,QAC9CxB,GAAc,SA4CnC,OArCI7C,EAASM,MAAMM,OAAS,GAAKxD,EAAMgB,QAAQwC,OAAS,KACtDuC,EAAc,OAAI,IAChBE,EAAAA,YAAA,MAAA,CAAAC,MAAA,yBAAA,CAAAD,EAAAA,YAAA,MAAA,CAAAC,MAAA,oBAAA,CAMQtD,EAASM,MAAMY,IAAKpB,GAAIuD,EAAAA,YAAAqB,YAAA,CAAAnG,KAEduB,EAAKvB,KAAI,iBAAA,EAAAoG,OAAA,OAAAC,SAGLnC,GAAU,SAEtBY,EAAAA,YAAA,MAAA,CAAAC,MAAA,oBAAA,CAKFlG,EAAMgB,QAAQ8C,IAAKpB,GAAIuD,EAAAA,YAAA,OAAA,CAAAC,MAEZrD,EAAUK,MAAMhC,KAAOwB,EAAKxB,GAAK,kBAAoB,WAAU+F,QAC7DA,KACPpE,EAAUK,MAAQR,IACnB,CAEAA,EAAKvB,aAUf4E,GAmBX,EAEA0B,MAAAA,GAAS,IAAAC,EACP,OAAAzB,EAAAA,YAAA,MAAA,CAAAC,MAAA,wBAAA5D,IAAA,uBAAA,CAAA2D,EAAAA,YAAA0B,EAAA,CAAArF,IAAA,eAAAsF,QAAA,SAAA3H,QAQe4H,KAAK5H,QAAOc,YACR8G,KAAK9G,YAAW8B,UAClBgF,KAAKhF,UAASiF,SACfD,KAAKnE,cAAa0D,SAClBS,KAAKpE,cAAasE,SAClBF,KAAKjC,cAAa,eACdiC,KAAKlH,cAvcFqH,EAucaN,EAG5BG,KAAK/B,WA1cU,mBAAAkC,GAAA,oBAAApH,OAAAqH,UAAAC,SAAAC,KAAAH,KAAAI,EAAAA,QAAAJ,GA0cAN,EAAA,CAAAtH,QAAAA,IAAA,CAAAsH,QA1cA,IAAAM,CAgdzB"}
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 showUpload: {\n type: Boolean,\n default: true,\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 {\n props.showUpload ? (\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 ) : null\n }\n {\n props.showUpload && props.sceneList.length > 0 ? (\n <div class=\"split-line\"></div>\n ) : null\n }\n {\n props.sceneList.length > 0 ? (\n <>\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":["index","props","loading","type","Boolean","default","actionUrl","String","acceptFileType","agentName","limit","Number","customStyle","Object","maxHeight","inputData","placeholder","tagList","Array","id","name","sceneList","scene","undefined","user","authToken","appId","showUpload","emits","setup","emit","editorSender","useTemplateRef","editorSenderWrapper","fileUpload","headers","computed","Authorization","extendData","activeScene","ref","getInitialScene","found","find","item","isEmpty","fileList","activeTag","watch","val","nextTick","target","value","querySelector","setAttribute","immediate","clear","setText","length","cancelHandler","submitHandler","res","text","file","map","response","initSender","clearFiles","handleUploadError","ElNotification","title","message","handleUploadSuccess","list","handleUploadBefore","mimeType","Set","has","trim","toLowerCase","isImg","includes","isDoc","isLt15M","size","isLt10M","handleUploadExceed","removeFile","handleRemove","handleUploadRemove","files","submitBtnClick","context","getCurrentValue","changeHandler","chatState","getSlots","slots","action-list","_createVNode","class","ElUpload","disabled","action","multiple","data","beforeUpload","onError","onSuccess","onExceed","onRemove","accept","ElIcon","Paperclip","_Fragment","onClick","triggerSceneChange","LoadingBtn","onCancel","active","FilesCard","status","onDelete","render","_slot","EditorSender","variant","this","onSubmit","onChange","s","prototype","toString","call","_isVNode"],"mappings":"o6BAWA,MAAAA,oBAA+B,CAC7BC,MAAO,CACLC,QAAS,CACPC,KAAMC,QACNC,SAAS,GAEXC,UAAW,CACTH,KAAMI,OACNF,QAAS,gCAQXG,eAAgB,CACdL,KAAMI,OACNF,QAAS,iIASXI,UAAW,CACTN,KAAMI,OACNF,QAAS,WAEXK,MAAO,CACLP,KAAMQ,OACNN,QAAS,GAEXO,YAAa,CACXT,KAAMU,OACNR,QAASA,KAAAA,CACPS,UAAW,UAGfC,UAAW,CACTZ,KAAMI,OACNF,QAAS,IAEXW,YAAa,CACXb,KAAMI,OACNF,QAAS,wBAEXY,QAAS,CACPd,KAAMe,MACNb,QAASA,IAAO,CACd,CACEc,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,OAER,CACED,GAAI,IACJC,KAAM,SAIZC,UAAW,CACTlB,KAAMe,MAINb,QAASA,IAAO,CACd,CACEc,GAAI,MACJC,KAAM,OAER,CACED,GAAI,MACJC,KAAM,SAIZE,MAAO,CACLnB,KAAMI,OACNF,aAASkB,GAEXC,KAAM,CACJrB,KAAMI,OACNF,QAAS,IAEXoB,UAAW,CACTtB,KAAMI,OACNF,QAAS,IAEXqB,MAAO,CACLvB,KAAMI,OACNF,QAAS,IAEXsB,WAAY,CACVxB,KAAMC,QACNC,SAAS,IAGbuB,MAAO,CAAC,SAAU,SAAU,cAAe,gBAC3CC,KAAAA,CAAM5B,GAAO6B,KAAEA,IACb,MAAMC,EAAeC,EAAAA,eAAoC,gBACnDC,EAAsBD,EAAAA,eAA4B,uBAClDE,EAAaF,EAAAA,eAAgC,cAC7CG,EAAUC,EAAAA,SAAS,KAChB,CACLC,cAAe,UAAUpC,EAAMwB,YAC/BC,MAAOzB,EAAMyB,SAGXY,EAAaF,EAAAA,SAAS,KACnB,CACLZ,KAAMvB,EAAMuB,QAYVe,EAAcC,MAPIC,MACtB,GAAIxC,EAAMqB,MAAO,CACf,MAAMoB,EAAQzC,EAAMoB,UAAUsB,QAAaC,EAAKzB,KAAOlB,EAAMqB,OAC7D,GAAIoB,EAAO,OAAOA,CACpB,CACA,OAAOzC,EAAMoB,UAAU,IAEDoB,IAElBI,EAAUL,EAAAA,KAAI,GACdM,EAAWN,EAAAA,IAAiB,IAC5BO,EAAYP,EAAAA,IAAIvC,EAAMgB,QAAQ,IAEpC+B,EAAAA,MAAM,IAAM/C,EAAMQ,UAAYwC,IAC5BC,EAAAA,SAAS,WACP,MAAMC,EAASlB,OAAAA,EAAAA,EAAoBmB,YAApBnB,EAAAA,EAA2BoB,cAAc,+BACxDF,MAAAA,GAAAA,EAAQG,aAAa,WAAYL,MAElC,CACDM,WAAW,IAGbP,EAAAA,MAAM,IAAM/C,EAAMc,UAAYkC,IAC5BC,EAAAA,SAAS,aACPnB,OAAAA,EAAAA,EAAaqB,QAAbrB,EAAoByB,QACpBzB,OAAAA,EAAAA,EAAaqB,UAAOK,QAAQR,OAKhCD,EAAAA,MAAM,IAAM/C,EAAMqB,MAAQ2B,IACxB,GAAIA,EAAK,CACP,MAAMP,EAAQzC,EAAMoB,UAAUsB,KAAKC,GAAQA,EAAKzB,KAAO8B,GACnDP,IACFH,EAAYa,MAAQV,EAExB,IAGFM,EAAAA,MAAM,IAAM/C,EAAMoB,UAAY4B,IAC5B,GAAIA,EAAIS,OAAS,EAAG,CAElB,GAAIzD,EAAMqB,MAAO,CACf,MAAMoB,EAAQO,EAAIN,QAAaC,EAAKzB,KAAOlB,EAAMqB,OACjD,GAAIoB,EAEF,YADAH,EAAYa,MAAQV,EAGxB,CACAH,EAAYa,MAAQH,EAAI,EAC1B,GACC,CACDM,WAAW,IAGb,MAAMI,EAAgBA,KACpB7B,EAAK,WASD8B,EAAiBX,IACrB,GAAIJ,EAAQO,OAASnD,EAAMC,QAAS,OACpC,MAAM2D,EAAM,CACVC,KAAMb,EAAIa,KACVC,KAAMjB,EAASM,MAAMY,IAAKpB,GAASA,EAAKqB,WAVzBC,QAYjBpC,EAAK,SAAU+B,GAXf9B,OAAAA,EAAAA,EAAaqB,QAAbrB,EAAoByB,QACpBV,EAASM,MAAQ,GACjBlB,OAAAA,EAAAA,EAAWkB,QAAXlB,EAAkBiC,cAiBdC,EAAoBA,KACxBC,iBAAe,CACbC,MAAO,GACPC,QAAS,SACTpE,KAAM,WAIJqE,EAAsBA,CAACP,EAAUF,EAAMU,KAC3C3B,EAASM,MAAQqB,GAiCbC,EAAsBX,IAC1B,GA/BuBY,EA+BFZ,EAAK5D,UA7BHyE,IAAI,CACzB,aACA,gBACA,kBACA,YACA,oEACA,2BACA,qBACA,0EACA,WACA,iBACA,6BACA,4EACA,gCACA,kBACA,WACA,uBACA,aACA,YACA,YACA,aACA,kBAIgBC,IAAIF,MAAAA,OAAAA,EAAAA,EAAUG,OAAOC,eAUrC,OALAV,iBAAe,CACbC,MAAO,GACPC,QAAS,SACTpE,KAAM,aAED,EArCcwE,IAAAA,EAuCvB,MAAMK,EAAQjB,EAAK5D,KAAK8E,SAAS,SAC3BC,GAASF,EACTG,EAAUpB,EAAKqB,KAAO,KAAO,KAAO,GACpCC,EAAUtB,EAAKqB,KAAO,KAAO,KAAO,GAC1C,OAAIF,IAAUC,GACZd,iBAAe,CACbC,MAAO,GACPC,QAAS,mBACTpE,KAAM,aAED,KAEL6E,IAAUK,KACZhB,iBAAe,CACbC,MAAO,GACPC,QAAS,mBACTpE,KAAM,aAED,IAKLmF,EAAqBA,KACzBjB,iBAAe,CACbC,MAAO,GACPC,QAAS,WACTpE,KAAM,aAKJoF,EAAaA,EAAGnE,iBACpB,MAAM+B,EAASL,EAASM,MAAMT,KAAMC,GAASA,EAAKxB,OAASA,GACvD+B,IACFjB,OAAAA,EAAAA,EAAWkB,UAAOoC,aAAarC,KAI7BsC,EAAqBA,CAAC1B,EAAM2B,KAChC5C,EAASM,MAAQsC,GAGbC,EAAiBA,WACrB,MAAMC,EAAU7D,OAAAA,EAAAA,EAAaqB,YAAbrB,EAAAA,EAAoB8D,kBACpCjC,EAAcgC,IA0HhB,MAAO,CACL/C,UACAC,WACAC,YACAY,gBACAC,gBACAkC,cApOoBA,aACpBjD,EAAQO,MAAQrB,OAAAA,EAAAA,OAAAA,EAAAA,EAAaqB,YAAbrB,EAAAA,EAAoBgE,gBAApBhE,EAAAA,EAA+Bc,SAoO/CuB,oBACAI,sBACAE,qBACAY,qBACAC,aACAE,qBACAE,iBACAK,SA5HeA,KACf,MAAMC,EAAQ,CACZ,cAAeC,IAAAC,EAAAA,YAAA,MAAA,CAAAC,MAAA,yBAAA,CAAAD,EAAAA,YAAA,MAAA,CAAAC,MAAA,sBAAA,CAIPnG,EAAM0B,WAAUwE,EAAAA,YAAAE,EAAAA,SAAA,CAAA7D,IAAA,aAAA8D,SAGFxD,EAASM,MAAMM,OAAS,EAAC6C,OAC3BtG,EAAMK,UAAS,kBACP,EAAKkG,UAAA,EAAA9F,MAEdT,EAAMS,MAAQoC,EAASM,MAAMM,OAAM+C,KACpCnE,EAAWc,MAAKsD,aACRhC,EAAkBvC,QACvBA,EAAQiB,MAAKuD,QACbvC,EAAiBwC,UACfpC,EAAmBqC,SACpBvB,EAAkBwB,SAClBrB,EAAkBsB,OACpB9G,EAAMO,gBAAc,CAAAH,QAAAA,IAAA,CAAA8F,EAAAA,YAAAa,SAAA,CAAAZ,MAAA,oBAAA,CAAA/F,QAAAA,IAAA,CAAA8F,EAAAA,YAAAc,EAAAA,UAAA,KAAA,YAQ5B,KAGJhH,EAAM0B,YAAc1B,EAAMoB,UAAUqC,OAAS,EAACyC,EAAAA,YAAA,MAAA,CAAAC,MAAA,cAAA,MAE1C,KAGJnG,EAAMoB,UAAUqC,OAAS,EAACyC,EAAAA,YAAAe,EAAAA,eAAAf,EAAAA,YAAA,MAAA,CAAAC,MAAA,cAAA,CAIlBnG,EAAMoB,UAAU2C,IAAKpB,GAAIuD,EAAAA,YAAA,OAAA,CAAAC,MAEhB7D,EAAYa,MAAMjC,KAAOyB,EAAKzB,GAAK,oBAAsB,aAAYgG,QACnEA,KAAMC,OArDT9F,EAqD4BsB,EAjDtDL,EAAYa,MAAQ9B,EACpBQ,EAAK,cAAeR,QACpBQ,EAAK,eAAgBR,EAAMH,IANDG,IAAAA,IAqDiC,CAEpCsB,EAAKxB,YAMd,OAINnB,EAAMC,QAAOiG,EAAAA,YAAAkB,EAAA,CAAAjB,MAAA,gBAAAkB,SAGC3D,GAAa,MAAAwC,EAAAA,YAAA,MAAA,CAAAC,MAGhB,CAAE,cAAc,EAAMmB,QAAW1E,EAAQO,OAAO+D,QAC9CxB,GAAc,SA4CnC,OArCI7C,EAASM,MAAMM,OAAS,GAAKzD,EAAMgB,QAAQyC,OAAS,KACtDuC,EAAc,OAAI,IAChBE,EAAAA,YAAA,MAAA,CAAAC,MAAA,yBAAA,CAAAD,EAAAA,YAAA,MAAA,CAAAC,MAAA,oBAAA,CAMQtD,EAASM,MAAMY,IAAKpB,GAAIuD,EAAAA,YAAAqB,YAAA,CAAApG,KAEdwB,EAAKxB,KAAI,iBAAA,EAAAqG,OAAA,OAAAC,SAGLnC,GAAU,SAEtBY,EAAAA,YAAA,MAAA,CAAAC,MAAA,oBAAA,CAKFnG,EAAMgB,QAAQ+C,IAAKpB,GAAIuD,EAAAA,YAAA,OAAA,CAAAC,MAEZrD,EAAUK,MAAMjC,KAAOyB,EAAKzB,GAAK,kBAAoB,WAAUgG,QAC7DA,KACPpE,EAAUK,MAAQR,IACnB,CAEAA,EAAKxB,aAUf6E,GAmBX,EAEA0B,MAAAA,GAAS,IAAAC,EACP,OAAAzB,EAAAA,YAAA,MAAA,CAAAC,MAAA,wBAAA5D,IAAA,uBAAA,CAAA2D,EAAAA,YAAA0B,EAAA,CAAArF,IAAA,eAAAsF,QAAA,SAAA5H,QAQe6H,KAAK7H,QAAOc,YACR+G,KAAK/G,YAAW+B,UAClBgF,KAAKhF,UAASiF,SACfD,KAAKnE,cAAa0D,SAClBS,KAAKpE,cAAasE,SAClBF,KAAKjC,cAAa,eACdiC,KAAKnH,cAndFsH,EAmdaN,EAG5BG,KAAK/B,WAtdU,mBAAAkC,GAAA,oBAAArH,OAAAsH,UAAAC,SAAAC,KAAAH,KAAAI,EAAAA,QAAAJ,GAsdAN,EAAA,CAAAvH,QAAAA,IAAA,CAAAuH,QAtdA,IAAAM,CA4dzB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("element-plus");/* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/form-item.scss.js"),/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/date-picker.scss.js"),/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/config-provider.scss.js"),/* empty css */;/* empty css */const l=require("../../../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"),s=require("../../core-text/index.js"),t=require("../../core-tips/index.js"),o=require("../../core-result/index.js"),i=require("../../core-table/index.js"),p=require("../../core-chart/index.js"),n=require("../../core-card/index.js"),u=require("../../core-upload/index.js"),a=require("../../core-remote-select/index.js"),d=require("../composables/useConditionEvaluator.js"),m=require("../composables/useRemoteData.js"),c=require("../utils/parseCorePilotSchema.js"),_=require("../utils/jsonUtils.js"),h=require("../utils/disabledUtils.js"),v=()=>e.h("div",{class:"hitl-skeleton"},[e.h("div",{class:"skeleton-header"},[e.h("div",{class:"skeleton-avatar"}),e.h("div",{class:"skeleton-title"})]),e.h("div",{class:"skeleton-item skeleton-item-long"}),e.h("div",{class:"skeleton-item skeleton-item-medium"}),e.h("div",{class:"skeleton-item skeleton-item-short"}),e.h("div",{class:"skeleton-item skeleton-item-long"}),e.h("div",{class:"skeleton-item skeleton-item-medium"})]),f=(k,g,b,j)=>{var q,y,N,E,C,x,P,D,w,V,S,T,U,R,I,F,L,O,z,A,B,G,J,H,M,K,Q;if(!k)return null;const{hitlData:W,formRefs:X,curIndex:Y,getCurInit:Z,btnClick:$,uploadHeaders:ee,uploadExtendData:re,disabledContext:le}=g;let se=[];var te,oe;switch(["sub","pre","text","ElForm"].includes(k.tagName)||(te=k.children||[],oe=b,se=te&&0!==te.length?te.map((e,r)=>f(e,g,void 0!==oe?oe:b,j)):[]),k.type){case"root":return e.h("div",{class:"markdown-body"},e.h(r.ElConfigProvider,{locale:l},se));case"element":if("sub"===k.tagName){const r=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...k.children||[]].map(e=>f(e,g,b));return e.h("span",{...k.properties,class:"x-markdown-sub"},r)}if("span"===k.tagName)return e.h("span",{...k.properties},se);if("img"===k.tagName)return e.h("img",{...k.properties,class:"markdown-image","data-processed":"false"});if("a"===k.tagName){const r=(null==(q=k.properties)?void 0:q.href)||"",l=r?r.split(".").pop():null;return e.h("a",{...k.properties,class:"file-link","data-file-type":l},se)}if("ElTimeline"===k.tagName)return e.h(r.ElTimeline,{...k.properties},se);if("table"===k.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",se)]);if("view"===k.tagName)return e.h("div",{class:"custom-view-container"},[se[Y]]);if("ElRow"===k.tagName)return e.h(r.ElRow,{...k.properties},se);if("ElCol"===k.tagName)return e.h(r.ElCol,{...k.properties},se);if("ElCard"===k.tagName)return e.h(r.ElCard,{...k.properties},se);if("ElTag"===k.tagName)return e.h(r.ElTag,{...k.properties},se);if("CoreCard"===k.tagName){const r={};return(null==(y=k.slots)?void 0:y.header)&&(r.header=()=>k.slots.header.map(e=>f(e,g,b))),se&&se.length>0&&(r.default=()=>se),e.h(n,{...k.properties},r)}if("ElForm"===k.tagName){const l=Z(),s=(k.children||[]).map(e=>f(e,g,l));return e.h(r.ElForm,{ref:X.set,model:W[l],...k.properties,disabled:h.checkDisabled(k,le)},s)}if("ElFormItem"===k.tagName){const l={...k.properties},s=k.properties&&k.properties.dependencies||void 0;if((null==(N=null==s?void 0:s.behavior)?void 0:N.visible)&&void 0!==b){const e=W[b]||{};if(!d.evaluateCondition(s.behavior.visible,e))return null}return e.h(r.ElFormItem,l,se)}if("ElButton"===k.tagName){let l=null==(E=k.properties)?void 0:E.payload;"table"===k.parentScope&&(l={...l,...j});const s="form"===k.parentScope?b:void 0,t=(null==(C=k.properties)?void 0:C.skipValidation)||!1;return e.h(r.ElButton,{...k.properties,disabled:h.checkDisabled(k,le),onClick:()=>{var e;$(void 0!==s?s:void 0!==b?b:0,null==(e=k.properties)?void 0:e.action,l,k.parentScope,t)}},se)}if("ElSelect"===k.tagName){if(null==(x=k.properties)?void 0:x.remote)return e.h(a,{...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(D=W[b])?void 0:D[null==(P=k.properties)?void 0:P.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)},formData:W[b]||{}});const l={...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(V=W[b])?void 0:V[null==(w=k.properties)?void 0:w.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)}},s=(null==(S=k.properties)?void 0:S.options)?k.properties.options.map(l=>e.h(r.ElOption,{label:l.label,value:l.value})):se;return e.h(r.ElSelect,l,s)}if("ElDatePicker"===k.tagName)return e.h(r.ElDatePicker,{...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(U=W[b])?void 0:U[null==(T=k.properties)?void 0:T.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)}},se);if("ElInput"===k.tagName)return e.h(r.ElInput,{...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(I=W[b])?void 0:I[null==(R=k.properties)?void 0:R.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)}},se);if("ElRadioGroup"===k.tagName)return e.h(r.ElRadioGroup,{...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(L=W[b])?void 0:L[null==(F=k.properties)?void 0:F.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)}},se);if("ElRadio"===k.tagName)return e.h(r.ElRadio,{...k.properties,disabled:h.checkDisabled(k,le)},se);if("ElCascader"===k.tagName){const l={...k.properties,disabled:h.checkDisabled(k,le),modelValue:null==(z=W[b])?void 0:z[null==(O=k.properties)?void 0:O.formProp],"onUpdate:modelValue":e=>{var r;W[b]&&(W[b][null==(r=k.properties)?void 0:r.formProp]=e)}},s=k;if(null==(A=s.properties)?void 0:A.remote){const r=e.computed(()=>W[b]||{});l.props.lazyLoad=m.createCascaderLazyLoad(s.properties.remote,r)}return console.log("====>",l),e.h(r.ElCascader,l,se)}if("ElTable"===k.tagName)return e.h(i,{...k.properties},se);if("ElTableColumn"===k.tagName)return e.h(r.ElTableColumn,{...k.properties},{default:e=>{var r,l,s;const t=e.row[null==(r=k.properties)?void 0:r.prop];if(Array.isArray(t))return t.map(e=>{var r;return null==(r=k.children)?void 0:r.find(r=>r.value===e&&void 0!==r.value)}).map(r=>f(r,g,-1/0,e.row));const o=(k.children||[]).findIndex(r=>{var l;return r.value===e.row[null==(l=k.properties)?void 0:l.prop]&&void 0!==r.value});return-1!==o?f(null==(l=k.children)?void 0:l[o],g,-1/0,e.row):null==(s=k.children)?void 0:s.map(r=>f(r,g,-1/0,e.row))}});if("CoreText"===k.tagName)return e.h(s,{...k.properties});if("CoreTips"===k.tagName)return e.h(t,{...k.properties});if("CoreResult"===k.tagName)return e.h(o,{...k.properties});if("CoreChart"===k.tagName)return e.h(p,{...k.properties});if("CoreUpload"===k.tagName){if("form"===k.parentScope&&(null==(B=k.properties)?void 0:B.formProp)){const r=k.properties.formProp;return e.h(u,{headers:ee,extendData:re,...k.properties,disabled:h.checkDisabled(k,le),fileList:(null==(G=W[b])?void 0:G[r])||[],"onUpdate:fileList":e=>{W[b]||(W[b]={}),W[b].__files__||(W[b].__files__={}),W[b].__files__[r]=e,W[b][r]=e}})}return e.h(u,{...k.properties,disabled:h.checkDisabled(k,le)})}if("pre"===k.tagName){const r=null==(J=k.children)?void 0:J.find(e=>"code"===e.tagName);if(r&&(null==(M=null==(H=r.properties)?void 0:H.className)?void 0:M.includes("language-CorePilot"))){const l=(null==(Q=null==(K=r.children)?void 0:K[0])?void 0:Q.value)||"";if(!_.isCompleteJSON(l))return v();try{const r=JSON.parse(l),s=c.parseCorePilot(r),t=f(s,g);return e.h("div",{class:"hitl-wrapper"},[t])}catch(ie){return v()}}}return e.h(k.tagName,k.properties,se);case"text":return k.value.trim();default:return null}};exports.hastToVNode=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),r=require("element-plus");/* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/form-item.scss.js"),/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/date-picker.scss.js"),/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */require("../../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/config-provider.scss.js"),/* empty css */;/* empty css */const l=require("../../../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"),s=require("../../core-text/index.js"),t=require("../../core-tips/index.js"),o=require("../../core-result/index.js"),i=require("../../core-table/index.js"),p=require("../../core-chart/index.js"),n=require("../../core-card/index.js"),u=require("../../core-upload/index.js"),a=require("../../core-remote-select/index.js"),d=require("../composables/useConditionEvaluator.js"),m=require("../composables/useRemoteData.js"),c=require("../utils/parseCorePilotSchema.js"),h=require("../utils/jsonUtils.js"),_=require("../utils/disabledUtils.js"),v=()=>e.h("div",{class:"hitl-skeleton"},[e.h("div",{class:"skeleton-header"},[e.h("div",{class:"skeleton-avatar"}),e.h("div",{class:"skeleton-title"})]),e.h("div",{class:"skeleton-item skeleton-item-long"}),e.h("div",{class:"skeleton-item skeleton-item-medium"}),e.h("div",{class:"skeleton-item skeleton-item-short"}),e.h("div",{class:"skeleton-item skeleton-item-long"}),e.h("div",{class:"skeleton-item skeleton-item-medium"})]),f=(k,g,b,j)=>{var q,y,N,E,C,x,P,D,w,V,S,T,U,R,I,F,L,O,z,A,B,G,J,H,M,K,Q,W,X;if(!k)return null;const{hitlData:Y,formRefs:Z,curIndex:$,getCurInit:ee,btnClick:re,uploadHeaders:le,uploadExtendData:se,disabledContext:te}=g;let oe=[];var ie,pe;switch(["sub","pre","text","ElForm"].includes(k.tagName)||(ie=k.children||[],pe=b,oe=ie&&0!==ie.length?ie.map((e,r)=>f(e,g,void 0!==pe?pe:b,j)):[]),k.type){case"root":return e.h("div",{class:"markdown-body"},e.h(r.ElConfigProvider,{locale:l},oe));case"element":if("sub"===k.tagName){const r=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...k.children||[]].map(e=>f(e,g,b));return e.h("span",{...k.properties,class:"x-markdown-sub"},r)}if("span"===k.tagName)return e.h("span",{...k.properties},oe);if("img"===k.tagName)return e.h("img",{...k.properties,class:"markdown-image","data-processed":"false"});if("a"===k.tagName){const r=(null==(q=k.properties)?void 0:q.href)||"",l=r?r.split(".").pop():null;return e.h("a",{...k.properties,class:"file-link","data-file-type":l},oe)}if("ElTimeline"===k.tagName)return e.h(r.ElTimeline,{...k.properties},oe);if("table"===k.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",oe)]);if("view"===k.tagName)return e.h("div",{class:"custom-view-container"},[oe[$]]);if("ElRow"===k.tagName)return e.h(r.ElRow,{...k.properties},oe);if("ElCol"===k.tagName)return e.h(r.ElCol,{...k.properties},oe);if("ElCard"===k.tagName)return e.h(r.ElCard,{...k.properties},oe);if("ElTag"===k.tagName)return e.h(r.ElTag,{...k.properties},oe);if("CoreCard"===k.tagName){const r={};return(null==(y=k.slots)?void 0:y.header)&&(r.header=()=>k.slots.header.map(e=>f(e,g,b))),oe&&oe.length>0&&(r.default=()=>oe),e.h(n,{...k.properties},r)}if("ElForm"===k.tagName){const l=ee(),s=(k.children||[]).map(e=>f(e,g,l));return e.h(r.ElForm,{ref:Z.set,model:Y[l],...k.properties,disabled:_.checkDisabled(k,te)},s)}if("ElFormItem"===k.tagName){const l={...k.properties},s=k.properties&&k.properties.dependencies||void 0;if((null==(N=null==s?void 0:s.behavior)?void 0:N.visible)&&void 0!==b){const e=Y[b]||{};if(!d.evaluateCondition(s.behavior.visible,e))return null}return e.h(r.ElFormItem,l,oe)}if("ElButton"===k.tagName){let l=null==(E=k.properties)?void 0:E.payload;"table"===k.parentScope&&(l={...l,...j});const s="form"===k.parentScope?b:void 0,t=(null==(C=k.properties)?void 0:C.skipValidation)||!1;return e.h(r.ElButton,{...k.properties,disabled:_.checkDisabled(k,te),onClick:()=>{var e;re(void 0!==s?s:void 0!==b?b:0,null==(e=k.properties)?void 0:e.action,l,k.parentScope,t)}},oe)}if("ElSelect"===k.tagName){if(null==(x=k.properties)?void 0:x.remote)return e.h(a,{...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(D=Y[b])?void 0:D[null==(P=k.properties)?void 0:P.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)},formData:Y[b]||{}});const l={...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(V=Y[b])?void 0:V[null==(w=k.properties)?void 0:w.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)}},s=(null==(S=k.properties)?void 0:S.options)?k.properties.options.map(l=>e.h(r.ElOption,{label:l.label,value:l.value})):oe;return e.h(r.ElSelect,l,s)}if("ElDatePicker"===k.tagName)return e.h(r.ElDatePicker,{...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(U=Y[b])?void 0:U[null==(T=k.properties)?void 0:T.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)}},oe);if("ElInput"===k.tagName)return e.h(r.ElInput,{...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(I=Y[b])?void 0:I[null==(R=k.properties)?void 0:R.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)}},oe);if("ElRadioGroup"===k.tagName)return e.h(r.ElRadioGroup,{...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(L=Y[b])?void 0:L[null==(F=k.properties)?void 0:F.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)}},oe);if("ElRadio"===k.tagName)return e.h(r.ElRadio,{...k.properties,disabled:_.checkDisabled(k,te)},oe);if("ElCascader"===k.tagName){const l={...k.properties,disabled:_.checkDisabled(k,te),modelValue:null==(z=Y[b])?void 0:z[null==(O=k.properties)?void 0:O.formProp],"onUpdate:modelValue":e=>{var r;Y[b]&&(Y[b][null==(r=k.properties)?void 0:r.formProp]=e)}},s=k;if(null==(A=s.properties)?void 0:A.remote){const r=e.computed(()=>Y[b]||{});l.props.lazyLoad=m.createCascaderLazyLoad(s.properties.remote,r)}return console.log("====>",l),e.h(r.ElCascader,l,oe)}if("ElTable"===k.tagName)return e.h(i,{...k.properties},oe);if("ElTableColumn"===k.tagName)return e.h(r.ElTableColumn,{...k.properties},{default:e=>{var r,l,s;const t=e.row[null==(r=k.properties)?void 0:r.prop];if(Array.isArray(t))return t.map(e=>{var r;return null==(r=k.children)?void 0:r.find(r=>r.value===e&&void 0!==r.value)}).map(r=>f(r,g,-1/0,e.row));const o=(k.children||[]).findIndex(r=>{var l;return r.value===e.row[null==(l=k.properties)?void 0:l.prop]&&void 0!==r.value});return-1!==o?f(null==(l=k.children)?void 0:l[o],g,-1/0,e.row):null==(s=k.children)?void 0:s.map(r=>f(r,g,-1/0,e.row))}});if("CoreText"===k.tagName)return e.h(s,{...k.properties});if("CoreTips"===k.tagName)return e.h(t,{...k.properties});if("CoreResult"===k.tagName)return e.h(o,{...k.properties});if("CoreChart"===k.tagName)return e.h(p,{...k.properties});if("CoreUpload"===k.tagName){if("form"===k.parentScope&&(null==(B=k.properties)?void 0:B.formProp)){const r=k.properties.formProp;return e.h(u,{headers:le,extendData:se,...k.properties,disabled:_.checkDisabled(k,te),fileList:(null==(G=Y[b])?void 0:G[r])||[],"onUpdate:fileList":e=>{Y[b]||(Y[b]={}),Y[b].__files__||(Y[b].__files__={}),Y[b].__files__[r]=e,Y[b][r]=e}})}return e.h(u,{...k.properties,disabled:_.checkDisabled(k,te)})}if("pre"===k.tagName){const r=null==(J=k.children)?void 0:J.find(e=>"code"===e.tagName);if(r){if(null==(M=null==(H=r.properties)?void 0:H.className)?void 0:M.includes("language-CorePilot")){const l=(null==(Q=null==(K=r.children)?void 0:K[0])?void 0:Q.value)||"";if(!h.isCompleteJSON(l))return v();try{const r=JSON.parse(l),s=c.parseCorePilot(r),t=f(s,g);return e.h("div",{class:"hitl-wrapper"},[t])}catch(ne){return v()}}return e.h("pre",{...k.properties},(null==(X=null==(W=r.children)?void 0:W[0])?void 0:X.value)||"")}}return e.h(k.tagName,k.properties,oe);case"text":return k.value.trim();default:return null}};exports.hastToVNode=f;
2
2
  //# sourceMappingURL=hastRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hastRenderer.js","sources":["../../../../../src/components/x-markdown/renderers/hastRenderer.ts"],"sourcesContent":["/**\n * HAST (HTML AST) 渲染器\n * 将 HAST 节点转换为 Vue VNode\n * 优化了复杂表单的性能问题\n */\n\nimport { h } from 'vue';\nimport {\n ElMessage,\n ElForm,\n ElFormItem,\n ElInput,\n ElCard,\n ElButton,\n ElSelect,\n ElOption,\n ElDatePicker,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider,\n ElTag,\n ElCascader,\n} from 'element-plus';\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\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 CoreRemoteSelect from '../../core-remote-select';\nimport { evaluateCondition } from '../composables/useConditionEvaluator';\nimport { createCascaderLazyLoad } from '../composables/useRemoteData';\nimport { parseCorePilot } from '../utils/parseCorePilotSchema';\nimport { isCompleteJSON } from '../utils/jsonUtils';\nimport { checkDisabled, DisabledCheckContext } from '../utils/disabledUtils';\nimport { InputSchema, CascaderSchema } from '@/types/index.ts';\nimport { computed, Ref } from 'vue';\n\n/**\n * 渲染骨架屏组件\n */\nconst 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 * 渲染器配置接口\n */\nexport interface RendererConfig {\n hitlData: Array<Record<string, any>>;\n formRefs: any;\n curIndex: number;\n getCurInit: () => number;\n btnClick: (index: number, action: string, payload: any, parentScope?: 'form' | 'table', skipValidation?: boolean) => void;\n uploadHeaders: Record<string, string>;\n uploadExtendData: Record<string, any>;\n disabledContext: DisabledCheckContext;\n}\n\n/**\n * 将hast(HTML AST)转换为Vue VNode\n * 性能优化:\n * 1. 使用缓存避免重复计算\n * 2. 延迟子节点渲染(仅在需要时渲染)\n * 3. 优化递归深度\n * \n * @param node - hast节点\n * @param config - 渲染器配置\n * @param index - 表单索引\n * @param row - 表格行数据\n * @returns Vue虚拟节点\n */\nexport const hastToVNode = (\n node: any,\n config: RendererConfig,\n index?: number,\n row?: any\n): any => {\n if (!node) return null;\n\n const {\n hitlData,\n formRefs,\n curIndex,\n getCurInit,\n btnClick,\n uploadHeaders,\n uploadExtendData,\n disabledContext,\n } = config;\n\n // 缓存子节点渲染函数,避免重复计算\n const renderChildren = (children: any[], formIndex?: number) => {\n if (!children || children.length === 0) return [];\n \n // 对于复杂表单,使用批量渲染优化\n // 优先使用传入的 formIndex,如果没有则使用当前的 index\n return children.map((child, idx) => {\n return hastToVNode(child, config, formIndex !== undefined ? formIndex : index, row);\n });\n };\n\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n let children: any[] = [];\n\n if (!blackTagNames.includes(node.tagName)) {\n // 如果当前节点在表单中(index 是数字),继续传递这个 index 给子节点\n // 这样可以确保表单内的所有子节点(包括按钮)都能获取到正确的表单索引\n children = renderChildren(node.children || [], index);\n }\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 // 处理 sub 标签(引用标记)\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 subChildren = formatChildren.map(child => hastToVNode(child, config, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, subChildren);\n }\n\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\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\n if (node.tagName === 'ElTimeline') {\n return h(ElTimeline, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'table') {\n return h(\n \"div\",\n { class: 'custom-table-container' },\n [h(\"table\", children)]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n { class: 'custom-view-container' },\n [children[curIndex]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(ElRow, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCol') {\n return h(ElCol, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCard') {\n return h(ElCard, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElTag') {\n return h(\n ElTag,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'CoreCard') {\n const slots: any = {};\n \n if (node.slots?.header) {\n slots.header = () => {\n return node.slots.header.map((slotItem: any) => {\n return hastToVNode(slotItem, config, index);\n });\n };\n }\n \n if (children && children.length > 0) {\n slots.default = () => children;\n }\n \n return h(CoreCard, {\n ...node.properties,\n }, slots);\n }\n\n // 表单相关元素\n if (node.tagName === 'ElForm') {\n const formIndex = getCurInit();\n const formChildren = (node.children || []).map((child: any) => \n hastToVNode(child, config, formIndex)\n );\n \n return h(\n ElForm,\n {\n ref: formRefs.set,\n model: hitlData[formIndex],\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n formChildren\n );\n }\n\n if (node.tagName === 'ElFormItem') {\n const formItemProps: any = {\n ...node.properties,\n };\n\n // 条件控制:根据 dependencies.behavior.visible 决定是否渲染\n const dependencies = (node.properties && (node.properties as any).dependencies) || undefined;\n if (dependencies?.behavior?.visible && index !== undefined) {\n const formData = hitlData[index] || {};\n const visible = evaluateCondition(dependencies.behavior.visible, formData);\n if (!visible) {\n // 不可见时直接不渲染该表单项\n return null;\n }\n }\n\n return h(ElFormItem, formItemProps, children);\n }\n\n // 表单控件\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = {\n ...payload,\n ...row,\n };\n }\n // 确保按钮在表单中使用正确的表单索引\n // 当 parentScope 是 'form' 时,index 应该是表单索引(从表单渲染时传递下来的)\n // 当 parentScope 不是 'form' 时,index 可能是 undefined 或其他值,但不会用于表单验证\n const buttonFormIndex = node.parentScope === 'form' ? index : undefined;\n const skipValidation = node.properties?.skipValidation || false;\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n onClick: () => {\n // 如果按钮在表单中(parentScope === 'form'),必须使用正确的表单索引进行验证\n // 如果不在表单中,使用 0 作为默认值(但不会触发表单验证,因为 btnClick 会检查 parentScope)\n // 关键:index 在表单渲染时已经正确传递,所以 buttonFormIndex 应该是正确的表单索引\n // 如果 skipValidation 为 true,则跳过表单验证\n const validateIndex = buttonFormIndex !== undefined ? buttonFormIndex : (index !== undefined ? index : 0);\n btnClick(validateIndex, node.properties?.action, payload, node.parentScope, skipValidation);\n },\n },\n children\n );\n }\n\n if (node.tagName === 'ElSelect') {\n // 如果有 remote 配置,使用 CoreRemoteSelect 组件\n if (node.properties?.remote) {\n return h(CoreRemoteSelect, {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n formData: hitlData[index!] || {},\n });\n }\n\n // 静态 options(向后兼容)\n const selectProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n const selectChildren = node.properties?.options\n ? node.properties.options.map((opt: any) =>\n h(ElOption, {\n label: opt.label,\n value: opt.value,\n })\n )\n : children;\n\n return h(ElSelect, selectProps, selectChildren);\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value as string;\n }\n }\n },\n children\n );\n }\n\n if (node.tagName === 'ElRadio') {\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n children\n );\n }\n\n if (node.tagName === 'ElCascader') {\n const cascaderProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n // 处理懒加载\n const cascaderSchema = node as CascaderSchema;\n if (cascaderSchema.properties?.remote) {\n const formDataRef = computed(() => hitlData[index!] || {}) as Ref<Record<string, any>>;\n // TODO: 这里需要优化,因为 createCascaderLazyLoad 返回的是一个函数,而 ElCascader 的 lazyLoad 属性需要一个函数\n cascaderProps.props.lazyLoad = createCascaderLazyLoad(\n cascaderSchema.properties.remote,\n formDataRef\n );\n }\n\n console.log('====>', cascaderProps);\n\n return h(ElCascader, cascaderProps, 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: any) => {\n const value = scope.row[node.properties?.prop];\n if (Array.isArray(value)) {\n return value.map((item: any) => {\n return node.children?.find((child: any) => child.value === item && child.value !== undefined);\n }).map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n }\n\n const childIndex = (node.children || []).findIndex(\n (child: any) => child.value === scope.row[node.properties?.prop] && child.value !== undefined\n );\n if (childIndex !== -1) {\n return hastToVNode(node.children?.[childIndex], config, -Infinity, scope.row);\n }\n return node.children?.map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n },\n }\n );\n }\n\n // 自定义组件\n if (node.tagName === 'CoreText') {\n return h(CoreText, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreTips') {\n return h(CoreTips, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreResult') {\n return h(CoreResult, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreChart') {\n return h(CoreChart, {\n ...node.properties,\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,\n extendData: uploadExtendData,\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n fileList: hitlData[index!]?.[formProp] || [],\n 'onUpdate:fileList': (value: any) => {\n if (!hitlData[index!]) {\n hitlData[index!] = {};\n }\n // 针对目前上传的文件解析,CA 这边必须得放在files 属性中,故被迫需要进行兼容\n // 这里将基于 __files__ 去识别,后续在coreagent 的 adapter 中进行处理\n if (!hitlData[index!].__files__) {\n hitlData[index!].__files__ = {};\n }\n hitlData[index!].__files__[formProp] = value;\n hitlData[index!][formProp] = value;\n },\n }\n );\n }\n // 非表单场景,直接渲染\n return h(\n CoreUpload,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n }\n );\n }\n\n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find((child: any) => 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 corePilotChildren = hastToVNode(viewTree, config);\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [corePilotChildren]);\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"],"names":["renderSkeleton","h","class","hastToVNode","node","config","index","row","hitlData","formRefs","curIndex","getCurInit","btnClick","uploadHeaders","uploadExtendData","disabledContext","children","formIndex","includes","tagName","length","map","child","idx","type","ElConfigProvider","locale","zhCN","subChildren","properties","href","_a","fileType","split","pop","ElTimeline","ElRow","ElCol","ElCard","ElTag","slots","_b","header","slotItem","default","CoreCard","formChildren","ElForm","ref","set","model","disabled","checkDisabled","formItemProps","dependencies","_c","behavior","visible","formData","evaluateCondition","ElFormItem","payload","_d","parentScope","buttonFormIndex","skipValidation","_e","ElButton","onClick","action","_f","remote","CoreRemoteSelect","modelValue","_h","_g","formProp","value","selectProps","_j","_i","selectChildren","_k","options","opt","ElOption","label","ElSelect","ElDatePicker","_m","_l","ElInput","_o","_n","ElRadioGroup","_q","_p","ElRadio","cascaderProps","_s","_r","cascaderSchema","_t","formDataRef","computed","props","lazyLoad","createCascaderLazyLoad","console","log","ElCascader","CoreTable","ElTableColumn","scope","prop","Array","isArray","item","find","Infinity","childIndex","findIndex","CoreText","CoreTips","CoreResult","CoreChart","_u","CoreUpload","headers","extendData","fileList","_v","__files__","codeNode","_w","_y","_x","className","code","_A","_z","isCompleteJSON","schema","JSON","parse","viewTree","parseCorePilot","corePilotChildren","error","trim"],"mappings":"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"}
1
+ {"version":3,"file":"hastRenderer.js","sources":["../../../../../src/components/x-markdown/renderers/hastRenderer.ts"],"sourcesContent":["/**\n * HAST (HTML AST) 渲染器\n * 将 HAST 节点转换为 Vue VNode\n * 优化了复杂表单的性能问题\n */\n\nimport { h } from 'vue';\nimport {\n ElMessage,\n ElForm,\n ElFormItem,\n ElInput,\n ElCard,\n ElButton,\n ElSelect,\n ElOption,\n ElDatePicker,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider,\n ElTag,\n ElCascader,\n} from 'element-plus';\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\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 CoreRemoteSelect from '../../core-remote-select';\nimport { evaluateCondition } from '../composables/useConditionEvaluator';\nimport { createCascaderLazyLoad } from '../composables/useRemoteData';\nimport { parseCorePilot } from '../utils/parseCorePilotSchema';\nimport { isCompleteJSON } from '../utils/jsonUtils';\nimport { checkDisabled, DisabledCheckContext } from '../utils/disabledUtils';\nimport { InputSchema, CascaderSchema } from '@/types/index.ts';\nimport { computed, Ref } from 'vue';\n\n/**\n * 渲染骨架屏组件\n */\nconst 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 * 渲染器配置接口\n */\nexport interface RendererConfig {\n hitlData: Array<Record<string, any>>;\n formRefs: any;\n curIndex: number;\n getCurInit: () => number;\n btnClick: (index: number, action: string, payload: any, parentScope?: 'form' | 'table', skipValidation?: boolean) => void;\n uploadHeaders: Record<string, string>;\n uploadExtendData: Record<string, any>;\n disabledContext: DisabledCheckContext;\n}\n\n/**\n * 将hast(HTML AST)转换为Vue VNode\n * 性能优化:\n * 1. 使用缓存避免重复计算\n * 2. 延迟子节点渲染(仅在需要时渲染)\n * 3. 优化递归深度\n * \n * @param node - hast节点\n * @param config - 渲染器配置\n * @param index - 表单索引\n * @param row - 表格行数据\n * @returns Vue虚拟节点\n */\nexport const hastToVNode = (\n node: any,\n config: RendererConfig,\n index?: number,\n row?: any\n): any => {\n if (!node) return null;\n\n const {\n hitlData,\n formRefs,\n curIndex,\n getCurInit,\n btnClick,\n uploadHeaders,\n uploadExtendData,\n disabledContext,\n } = config;\n\n // 缓存子节点渲染函数,避免重复计算\n const renderChildren = (children: any[], formIndex?: number) => {\n if (!children || children.length === 0) return [];\n \n // 对于复杂表单,使用批量渲染优化\n // 优先使用传入的 formIndex,如果没有则使用当前的 index\n return children.map((child, idx) => {\n return hastToVNode(child, config, formIndex !== undefined ? formIndex : index, row);\n });\n };\n\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n let children: any[] = [];\n\n if (!blackTagNames.includes(node.tagName)) {\n // 如果当前节点在表单中(index 是数字),继续传递这个 index 给子节点\n // 这样可以确保表单内的所有子节点(包括按钮)都能获取到正确的表单索引\n children = renderChildren(node.children || [], index);\n }\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 // 处理 sub 标签(引用标记)\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 subChildren = formatChildren.map(child => hastToVNode(child, config, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, subChildren);\n }\n\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\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\n if (node.tagName === 'ElTimeline') {\n return h(ElTimeline, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'table') {\n return h(\n \"div\",\n { class: 'custom-table-container' },\n [h(\"table\", children)]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n { class: 'custom-view-container' },\n [children[curIndex]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(ElRow, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCol') {\n return h(ElCol, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCard') {\n return h(ElCard, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElTag') {\n return h(\n ElTag,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'CoreCard') {\n const slots: any = {};\n \n if (node.slots?.header) {\n slots.header = () => {\n return node.slots.header.map((slotItem: any) => {\n return hastToVNode(slotItem, config, index);\n });\n };\n }\n \n if (children && children.length > 0) {\n slots.default = () => children;\n }\n \n return h(CoreCard, {\n ...node.properties,\n }, slots);\n }\n\n // 表单相关元素\n if (node.tagName === 'ElForm') {\n const formIndex = getCurInit();\n const formChildren = (node.children || []).map((child: any) => \n hastToVNode(child, config, formIndex)\n );\n \n return h(\n ElForm,\n {\n ref: formRefs.set,\n model: hitlData[formIndex],\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n formChildren\n );\n }\n\n if (node.tagName === 'ElFormItem') {\n const formItemProps: any = {\n ...node.properties,\n };\n\n // 条件控制:根据 dependencies.behavior.visible 决定是否渲染\n const dependencies = (node.properties && (node.properties as any).dependencies) || undefined;\n if (dependencies?.behavior?.visible && index !== undefined) {\n const formData = hitlData[index] || {};\n const visible = evaluateCondition(dependencies.behavior.visible, formData);\n if (!visible) {\n // 不可见时直接不渲染该表单项\n return null;\n }\n }\n\n return h(ElFormItem, formItemProps, children);\n }\n\n // 表单控件\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = {\n ...payload,\n ...row,\n };\n }\n // 确保按钮在表单中使用正确的表单索引\n // 当 parentScope 是 'form' 时,index 应该是表单索引(从表单渲染时传递下来的)\n // 当 parentScope 不是 'form' 时,index 可能是 undefined 或其他值,但不会用于表单验证\n const buttonFormIndex = node.parentScope === 'form' ? index : undefined;\n const skipValidation = node.properties?.skipValidation || false;\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n onClick: () => {\n // 如果按钮在表单中(parentScope === 'form'),必须使用正确的表单索引进行验证\n // 如果不在表单中,使用 0 作为默认值(但不会触发表单验证,因为 btnClick 会检查 parentScope)\n // 关键:index 在表单渲染时已经正确传递,所以 buttonFormIndex 应该是正确的表单索引\n // 如果 skipValidation 为 true,则跳过表单验证\n const validateIndex = buttonFormIndex !== undefined ? buttonFormIndex : (index !== undefined ? index : 0);\n btnClick(validateIndex, node.properties?.action, payload, node.parentScope, skipValidation);\n },\n },\n children\n );\n }\n\n if (node.tagName === 'ElSelect') {\n // 如果有 remote 配置,使用 CoreRemoteSelect 组件\n if (node.properties?.remote) {\n return h(CoreRemoteSelect, {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n formData: hitlData[index!] || {},\n });\n }\n\n // 静态 options(向后兼容)\n const selectProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n const selectChildren = node.properties?.options\n ? node.properties.options.map((opt: any) =>\n h(ElOption, {\n label: opt.label,\n value: opt.value,\n })\n )\n : children;\n\n return h(ElSelect, selectProps, selectChildren);\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value as string;\n }\n }\n },\n children\n );\n }\n\n if (node.tagName === 'ElRadio') {\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n children\n );\n }\n\n if (node.tagName === 'ElCascader') {\n const cascaderProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n // 处理懒加载\n const cascaderSchema = node as CascaderSchema;\n if (cascaderSchema.properties?.remote) {\n const formDataRef = computed(() => hitlData[index!] || {}) as Ref<Record<string, any>>;\n // TODO: 这里需要优化,因为 createCascaderLazyLoad 返回的是一个函数,而 ElCascader 的 lazyLoad 属性需要一个函数\n cascaderProps.props.lazyLoad = createCascaderLazyLoad(\n cascaderSchema.properties.remote,\n formDataRef\n );\n }\n\n console.log('====>', cascaderProps);\n\n return h(ElCascader, cascaderProps, 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: any) => {\n const value = scope.row[node.properties?.prop];\n if (Array.isArray(value)) {\n return value.map((item: any) => {\n return node.children?.find((child: any) => child.value === item && child.value !== undefined);\n }).map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n }\n\n const childIndex = (node.children || []).findIndex(\n (child: any) => child.value === scope.row[node.properties?.prop] && child.value !== undefined\n );\n if (childIndex !== -1) {\n return hastToVNode(node.children?.[childIndex], config, -Infinity, scope.row);\n }\n return node.children?.map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n },\n }\n );\n }\n\n // 自定义组件\n if (node.tagName === 'CoreText') {\n return h(CoreText, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreTips') {\n return h(CoreTips, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreResult') {\n return h(CoreResult, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreChart') {\n return h(CoreChart, {\n ...node.properties,\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,\n extendData: uploadExtendData,\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n fileList: hitlData[index!]?.[formProp] || [],\n 'onUpdate:fileList': (value: any) => {\n if (!hitlData[index!]) {\n hitlData[index!] = {};\n }\n // 针对目前上传的文件解析,CA 这边必须得放在files 属性中,故被迫需要进行兼容\n // 这里将基于 __files__ 去识别,后续在coreagent 的 adapter 中进行处理\n if (!hitlData[index!].__files__) {\n hitlData[index!].__files__ = {};\n }\n hitlData[index!].__files__[formProp] = value;\n hitlData[index!][formProp] = value;\n },\n }\n );\n }\n // 非表单场景,直接渲染\n return h(\n CoreUpload,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n }\n );\n }\n\n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find((child: any) => 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 corePilotChildren = hastToVNode(viewTree, config);\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [corePilotChildren]);\n } catch (error) {\n // JSON 解析失败,可能是格式错误,显示骨架屏\n return renderSkeleton();\n }\n }\n // 其他情况,直接渲染代码块\n return h(\"pre\", {\n ...node.properties,\n }, codeNode.children?.[0]?.value || '');\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"],"names":["renderSkeleton","h","class","hastToVNode","node","config","index","row","hitlData","formRefs","curIndex","getCurInit","btnClick","uploadHeaders","uploadExtendData","disabledContext","children","formIndex","includes","tagName","length","map","child","idx","type","ElConfigProvider","locale","zhCN","subChildren","properties","href","_a","fileType","split","pop","ElTimeline","ElRow","ElCol","ElCard","ElTag","slots","_b","header","slotItem","default","CoreCard","formChildren","ElForm","ref","set","model","disabled","checkDisabled","formItemProps","dependencies","_c","behavior","visible","formData","evaluateCondition","ElFormItem","payload","_d","parentScope","buttonFormIndex","skipValidation","_e","ElButton","onClick","action","_f","remote","CoreRemoteSelect","modelValue","_h","_g","formProp","value","selectProps","_j","_i","selectChildren","_k","options","opt","ElOption","label","ElSelect","ElDatePicker","_m","_l","ElInput","_o","_n","ElRadioGroup","_q","_p","ElRadio","cascaderProps","_s","_r","cascaderSchema","_t","formDataRef","computed","props","lazyLoad","createCascaderLazyLoad","console","log","ElCascader","CoreTable","ElTableColumn","scope","prop","Array","isArray","item","find","Infinity","childIndex","findIndex","CoreText","CoreTips","CoreResult","CoreChart","_u","CoreUpload","headers","extendData","fileList","_v","__files__","codeNode","_w","_y","_x","className","code","_A","_z","isCompleteJSON","schema","JSON","parse","viewTree","parseCorePilot","corePilotChildren","error","_C","_B","trim"],"mappings":"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"}
@@ -108,6 +108,10 @@ const index = /* @__PURE__ */ defineComponent({
108
108
  appId: {
109
109
  type: String,
110
110
  default: ""
111
+ },
112
+ showUpload: {
113
+ type: Boolean,
114
+ default: true
111
115
  }
112
116
  },
113
117
  emits: ["cancel", "submit", "sceneChange", "update:scene"],
@@ -302,7 +306,7 @@ const index = /* @__PURE__ */ defineComponent({
302
306
  "class": "sender-action-wrapper"
303
307
  }, [createVNode("div", {
304
308
  "class": "sender-action-left"
305
- }, [createVNode(ElUpload, {
309
+ }, [props.showUpload ? createVNode(ElUpload, {
306
310
  "ref": "fileUpload",
307
311
  "disabled": fileList.value.length > 5,
308
312
  "action": props.actionUrl,
@@ -323,9 +327,9 @@ const index = /* @__PURE__ */ defineComponent({
323
327
  }, {
324
328
  default: () => [createVNode(paperclip_default, null, null)]
325
329
  })]
326
- }), props.sceneList.length > 0 ? createVNode(Fragment, null, [createVNode("div", {
330
+ }) : null, props.showUpload && props.sceneList.length > 0 ? createVNode("div", {
327
331
  "class": "split-line"
328
- }, null), createVNode("div", {
332
+ }, null) : null, props.sceneList.length > 0 ? createVNode(Fragment, null, [createVNode("div", {
329
333
  "class": "scene-list"
330
334
  }, [props.sceneList.map((item) => createVNode("span", {
331
335
  "class": activeScene.value.id === item.id ? "scene-item active" : "scene-item",
@@ -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 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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"}
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 showUpload: {\n type: Boolean,\n default: true,\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 {\n props.showUpload ? (\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 ) : null\n }\n {\n props.showUpload && props.sceneList.length > 0 ? (\n <div class=\"split-line\"></div>\n ) : null\n }\n {\n props.sceneList.length > 0 ? (\n <>\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","showUpload","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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"}
@@ -58,7 +58,7 @@ const renderSkeleton = () => {
58
58
  ]);
59
59
  };
60
60
  const hastToVNode = (node, config, index, row) => {
61
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A;
61
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
62
62
  if (!node) return null;
63
63
  const {
64
64
  hitlData,
@@ -474,6 +474,9 @@ const hastToVNode = (node, config, index, row) => {
474
474
  return renderSkeleton();
475
475
  }
476
476
  }
477
+ return h("pre", {
478
+ ...node.properties
479
+ }, ((_C = (_B = codeNode.children) == null ? void 0 : _B[0]) == null ? void 0 : _C.value) || "");
477
480
  }
478
481
  }
479
482
  return h(
@@ -1 +1 @@
1
- {"version":3,"file":"hastRenderer.js","sources":["../../../../../src/components/x-markdown/renderers/hastRenderer.ts"],"sourcesContent":["/**\n * HAST (HTML AST) 渲染器\n * 将 HAST 节点转换为 Vue VNode\n * 优化了复杂表单的性能问题\n */\n\nimport { h } from 'vue';\nimport {\n ElMessage,\n ElForm,\n ElFormItem,\n ElInput,\n ElCard,\n ElButton,\n ElSelect,\n ElOption,\n ElDatePicker,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider,\n ElTag,\n ElCascader,\n} from 'element-plus';\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\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 CoreRemoteSelect from '../../core-remote-select';\nimport { evaluateCondition } from '../composables/useConditionEvaluator';\nimport { createCascaderLazyLoad } from '../composables/useRemoteData';\nimport { parseCorePilot } from '../utils/parseCorePilotSchema';\nimport { isCompleteJSON } from '../utils/jsonUtils';\nimport { checkDisabled, DisabledCheckContext } from '../utils/disabledUtils';\nimport { InputSchema, CascaderSchema } from '@/types/index.ts';\nimport { computed, Ref } from 'vue';\n\n/**\n * 渲染骨架屏组件\n */\nconst 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 * 渲染器配置接口\n */\nexport interface RendererConfig {\n hitlData: Array<Record<string, any>>;\n formRefs: any;\n curIndex: number;\n getCurInit: () => number;\n btnClick: (index: number, action: string, payload: any, parentScope?: 'form' | 'table', skipValidation?: boolean) => void;\n uploadHeaders: Record<string, string>;\n uploadExtendData: Record<string, any>;\n disabledContext: DisabledCheckContext;\n}\n\n/**\n * 将hast(HTML AST)转换为Vue VNode\n * 性能优化:\n * 1. 使用缓存避免重复计算\n * 2. 延迟子节点渲染(仅在需要时渲染)\n * 3. 优化递归深度\n * \n * @param node - hast节点\n * @param config - 渲染器配置\n * @param index - 表单索引\n * @param row - 表格行数据\n * @returns Vue虚拟节点\n */\nexport const hastToVNode = (\n node: any,\n config: RendererConfig,\n index?: number,\n row?: any\n): any => {\n if (!node) return null;\n\n const {\n hitlData,\n formRefs,\n curIndex,\n getCurInit,\n btnClick,\n uploadHeaders,\n uploadExtendData,\n disabledContext,\n } = config;\n\n // 缓存子节点渲染函数,避免重复计算\n const renderChildren = (children: any[], formIndex?: number) => {\n if (!children || children.length === 0) return [];\n \n // 对于复杂表单,使用批量渲染优化\n // 优先使用传入的 formIndex,如果没有则使用当前的 index\n return children.map((child, idx) => {\n return hastToVNode(child, config, formIndex !== undefined ? formIndex : index, row);\n });\n };\n\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n let children: any[] = [];\n\n if (!blackTagNames.includes(node.tagName)) {\n // 如果当前节点在表单中(index 是数字),继续传递这个 index 给子节点\n // 这样可以确保表单内的所有子节点(包括按钮)都能获取到正确的表单索引\n children = renderChildren(node.children || [], index);\n }\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 // 处理 sub 标签(引用标记)\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 subChildren = formatChildren.map(child => hastToVNode(child, config, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, subChildren);\n }\n\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\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\n if (node.tagName === 'ElTimeline') {\n return h(ElTimeline, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'table') {\n return h(\n \"div\",\n { class: 'custom-table-container' },\n [h(\"table\", children)]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n { class: 'custom-view-container' },\n [children[curIndex]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(ElRow, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCol') {\n return h(ElCol, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCard') {\n return h(ElCard, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElTag') {\n return h(\n ElTag,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'CoreCard') {\n const slots: any = {};\n \n if (node.slots?.header) {\n slots.header = () => {\n return node.slots.header.map((slotItem: any) => {\n return hastToVNode(slotItem, config, index);\n });\n };\n }\n \n if (children && children.length > 0) {\n slots.default = () => children;\n }\n \n return h(CoreCard, {\n ...node.properties,\n }, slots);\n }\n\n // 表单相关元素\n if (node.tagName === 'ElForm') {\n const formIndex = getCurInit();\n const formChildren = (node.children || []).map((child: any) => \n hastToVNode(child, config, formIndex)\n );\n \n return h(\n ElForm,\n {\n ref: formRefs.set,\n model: hitlData[formIndex],\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n formChildren\n );\n }\n\n if (node.tagName === 'ElFormItem') {\n const formItemProps: any = {\n ...node.properties,\n };\n\n // 条件控制:根据 dependencies.behavior.visible 决定是否渲染\n const dependencies = (node.properties && (node.properties as any).dependencies) || undefined;\n if (dependencies?.behavior?.visible && index !== undefined) {\n const formData = hitlData[index] || {};\n const visible = evaluateCondition(dependencies.behavior.visible, formData);\n if (!visible) {\n // 不可见时直接不渲染该表单项\n return null;\n }\n }\n\n return h(ElFormItem, formItemProps, children);\n }\n\n // 表单控件\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = {\n ...payload,\n ...row,\n };\n }\n // 确保按钮在表单中使用正确的表单索引\n // 当 parentScope 是 'form' 时,index 应该是表单索引(从表单渲染时传递下来的)\n // 当 parentScope 不是 'form' 时,index 可能是 undefined 或其他值,但不会用于表单验证\n const buttonFormIndex = node.parentScope === 'form' ? index : undefined;\n const skipValidation = node.properties?.skipValidation || false;\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n onClick: () => {\n // 如果按钮在表单中(parentScope === 'form'),必须使用正确的表单索引进行验证\n // 如果不在表单中,使用 0 作为默认值(但不会触发表单验证,因为 btnClick 会检查 parentScope)\n // 关键:index 在表单渲染时已经正确传递,所以 buttonFormIndex 应该是正确的表单索引\n // 如果 skipValidation 为 true,则跳过表单验证\n const validateIndex = buttonFormIndex !== undefined ? buttonFormIndex : (index !== undefined ? index : 0);\n btnClick(validateIndex, node.properties?.action, payload, node.parentScope, skipValidation);\n },\n },\n children\n );\n }\n\n if (node.tagName === 'ElSelect') {\n // 如果有 remote 配置,使用 CoreRemoteSelect 组件\n if (node.properties?.remote) {\n return h(CoreRemoteSelect, {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n formData: hitlData[index!] || {},\n });\n }\n\n // 静态 options(向后兼容)\n const selectProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n const selectChildren = node.properties?.options\n ? node.properties.options.map((opt: any) =>\n h(ElOption, {\n label: opt.label,\n value: opt.value,\n })\n )\n : children;\n\n return h(ElSelect, selectProps, selectChildren);\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value as string;\n }\n }\n },\n children\n );\n }\n\n if (node.tagName === 'ElRadio') {\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n children\n );\n }\n\n if (node.tagName === 'ElCascader') {\n const cascaderProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n // 处理懒加载\n const cascaderSchema = node as CascaderSchema;\n if (cascaderSchema.properties?.remote) {\n const formDataRef = computed(() => hitlData[index!] || {}) as Ref<Record<string, any>>;\n // TODO: 这里需要优化,因为 createCascaderLazyLoad 返回的是一个函数,而 ElCascader 的 lazyLoad 属性需要一个函数\n cascaderProps.props.lazyLoad = createCascaderLazyLoad(\n cascaderSchema.properties.remote,\n formDataRef\n );\n }\n\n console.log('====>', cascaderProps);\n\n return h(ElCascader, cascaderProps, 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: any) => {\n const value = scope.row[node.properties?.prop];\n if (Array.isArray(value)) {\n return value.map((item: any) => {\n return node.children?.find((child: any) => child.value === item && child.value !== undefined);\n }).map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n }\n\n const childIndex = (node.children || []).findIndex(\n (child: any) => child.value === scope.row[node.properties?.prop] && child.value !== undefined\n );\n if (childIndex !== -1) {\n return hastToVNode(node.children?.[childIndex], config, -Infinity, scope.row);\n }\n return node.children?.map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n },\n }\n );\n }\n\n // 自定义组件\n if (node.tagName === 'CoreText') {\n return h(CoreText, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreTips') {\n return h(CoreTips, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreResult') {\n return h(CoreResult, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreChart') {\n return h(CoreChart, {\n ...node.properties,\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,\n extendData: uploadExtendData,\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n fileList: hitlData[index!]?.[formProp] || [],\n 'onUpdate:fileList': (value: any) => {\n if (!hitlData[index!]) {\n hitlData[index!] = {};\n }\n // 针对目前上传的文件解析,CA 这边必须得放在files 属性中,故被迫需要进行兼容\n // 这里将基于 __files__ 去识别,后续在coreagent 的 adapter 中进行处理\n if (!hitlData[index!].__files__) {\n hitlData[index!].__files__ = {};\n }\n hitlData[index!].__files__[formProp] = value;\n hitlData[index!][formProp] = value;\n },\n }\n );\n }\n // 非表单场景,直接渲染\n return h(\n CoreUpload,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n }\n );\n }\n\n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find((child: any) => 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 corePilotChildren = hastToVNode(viewTree, config);\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [corePilotChildren]);\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"],"names":["children","zhCN","_a","_b","_c"],"mappings":"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"}
1
+ {"version":3,"file":"hastRenderer.js","sources":["../../../../../src/components/x-markdown/renderers/hastRenderer.ts"],"sourcesContent":["/**\n * HAST (HTML AST) 渲染器\n * 将 HAST 节点转换为 Vue VNode\n * 优化了复杂表单的性能问题\n */\n\nimport { h } from 'vue';\nimport {\n ElMessage,\n ElForm,\n ElFormItem,\n ElInput,\n ElCard,\n ElButton,\n ElSelect,\n ElOption,\n ElDatePicker,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider,\n ElTag,\n ElCascader,\n} from 'element-plus';\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\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 CoreRemoteSelect from '../../core-remote-select';\nimport { evaluateCondition } from '../composables/useConditionEvaluator';\nimport { createCascaderLazyLoad } from '../composables/useRemoteData';\nimport { parseCorePilot } from '../utils/parseCorePilotSchema';\nimport { isCompleteJSON } from '../utils/jsonUtils';\nimport { checkDisabled, DisabledCheckContext } from '../utils/disabledUtils';\nimport { InputSchema, CascaderSchema } from '@/types/index.ts';\nimport { computed, Ref } from 'vue';\n\n/**\n * 渲染骨架屏组件\n */\nconst 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 * 渲染器配置接口\n */\nexport interface RendererConfig {\n hitlData: Array<Record<string, any>>;\n formRefs: any;\n curIndex: number;\n getCurInit: () => number;\n btnClick: (index: number, action: string, payload: any, parentScope?: 'form' | 'table', skipValidation?: boolean) => void;\n uploadHeaders: Record<string, string>;\n uploadExtendData: Record<string, any>;\n disabledContext: DisabledCheckContext;\n}\n\n/**\n * 将hast(HTML AST)转换为Vue VNode\n * 性能优化:\n * 1. 使用缓存避免重复计算\n * 2. 延迟子节点渲染(仅在需要时渲染)\n * 3. 优化递归深度\n * \n * @param node - hast节点\n * @param config - 渲染器配置\n * @param index - 表单索引\n * @param row - 表格行数据\n * @returns Vue虚拟节点\n */\nexport const hastToVNode = (\n node: any,\n config: RendererConfig,\n index?: number,\n row?: any\n): any => {\n if (!node) return null;\n\n const {\n hitlData,\n formRefs,\n curIndex,\n getCurInit,\n btnClick,\n uploadHeaders,\n uploadExtendData,\n disabledContext,\n } = config;\n\n // 缓存子节点渲染函数,避免重复计算\n const renderChildren = (children: any[], formIndex?: number) => {\n if (!children || children.length === 0) return [];\n \n // 对于复杂表单,使用批量渲染优化\n // 优先使用传入的 formIndex,如果没有则使用当前的 index\n return children.map((child, idx) => {\n return hastToVNode(child, config, formIndex !== undefined ? formIndex : index, row);\n });\n };\n\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n let children: any[] = [];\n\n if (!blackTagNames.includes(node.tagName)) {\n // 如果当前节点在表单中(index 是数字),继续传递这个 index 给子节点\n // 这样可以确保表单内的所有子节点(包括按钮)都能获取到正确的表单索引\n children = renderChildren(node.children || [], index);\n }\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 // 处理 sub 标签(引用标记)\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 subChildren = formatChildren.map(child => hastToVNode(child, config, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, subChildren);\n }\n\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\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\n if (node.tagName === 'ElTimeline') {\n return h(ElTimeline, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'table') {\n return h(\n \"div\",\n { class: 'custom-table-container' },\n [h(\"table\", children)]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n { class: 'custom-view-container' },\n [children[curIndex]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(ElRow, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCol') {\n return h(ElCol, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElCard') {\n return h(ElCard, {\n ...node.properties,\n }, children);\n }\n\n if (node.tagName === 'ElTag') {\n return h(\n ElTag,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'CoreCard') {\n const slots: any = {};\n \n if (node.slots?.header) {\n slots.header = () => {\n return node.slots.header.map((slotItem: any) => {\n return hastToVNode(slotItem, config, index);\n });\n };\n }\n \n if (children && children.length > 0) {\n slots.default = () => children;\n }\n \n return h(CoreCard, {\n ...node.properties,\n }, slots);\n }\n\n // 表单相关元素\n if (node.tagName === 'ElForm') {\n const formIndex = getCurInit();\n const formChildren = (node.children || []).map((child: any) => \n hastToVNode(child, config, formIndex)\n );\n \n return h(\n ElForm,\n {\n ref: formRefs.set,\n model: hitlData[formIndex],\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n formChildren\n );\n }\n\n if (node.tagName === 'ElFormItem') {\n const formItemProps: any = {\n ...node.properties,\n };\n\n // 条件控制:根据 dependencies.behavior.visible 决定是否渲染\n const dependencies = (node.properties && (node.properties as any).dependencies) || undefined;\n if (dependencies?.behavior?.visible && index !== undefined) {\n const formData = hitlData[index] || {};\n const visible = evaluateCondition(dependencies.behavior.visible, formData);\n if (!visible) {\n // 不可见时直接不渲染该表单项\n return null;\n }\n }\n\n return h(ElFormItem, formItemProps, children);\n }\n\n // 表单控件\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = {\n ...payload,\n ...row,\n };\n }\n // 确保按钮在表单中使用正确的表单索引\n // 当 parentScope 是 'form' 时,index 应该是表单索引(从表单渲染时传递下来的)\n // 当 parentScope 不是 'form' 时,index 可能是 undefined 或其他值,但不会用于表单验证\n const buttonFormIndex = node.parentScope === 'form' ? index : undefined;\n const skipValidation = node.properties?.skipValidation || false;\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n onClick: () => {\n // 如果按钮在表单中(parentScope === 'form'),必须使用正确的表单索引进行验证\n // 如果不在表单中,使用 0 作为默认值(但不会触发表单验证,因为 btnClick 会检查 parentScope)\n // 关键:index 在表单渲染时已经正确传递,所以 buttonFormIndex 应该是正确的表单索引\n // 如果 skipValidation 为 true,则跳过表单验证\n const validateIndex = buttonFormIndex !== undefined ? buttonFormIndex : (index !== undefined ? index : 0);\n btnClick(validateIndex, node.properties?.action, payload, node.parentScope, skipValidation);\n },\n },\n children\n );\n }\n\n if (node.tagName === 'ElSelect') {\n // 如果有 remote 配置,使用 CoreRemoteSelect 组件\n if (node.properties?.remote) {\n return h(CoreRemoteSelect, {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n formData: hitlData[index!] || {},\n });\n }\n\n // 静态 options(向后兼容)\n const selectProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n const selectChildren = node.properties?.options\n ? node.properties.options.map((opt: any) =>\n h(ElOption, {\n label: opt.label,\n value: opt.value,\n })\n )\n : children;\n\n return h(ElSelect, selectProps, selectChildren);\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\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 as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value as string;\n }\n }\n },\n children\n );\n }\n\n if (node.tagName === 'ElRadio') {\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n },\n children\n );\n }\n\n if (node.tagName === 'ElCascader') {\n const cascaderProps: any = {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n modelValue: hitlData[index!]?.[node.properties?.formProp],\n 'onUpdate:modelValue': (value: any) => {\n if (hitlData[index!]) {\n hitlData[index!][node.properties?.formProp] = value;\n }\n },\n };\n\n // 处理懒加载\n const cascaderSchema = node as CascaderSchema;\n if (cascaderSchema.properties?.remote) {\n const formDataRef = computed(() => hitlData[index!] || {}) as Ref<Record<string, any>>;\n // TODO: 这里需要优化,因为 createCascaderLazyLoad 返回的是一个函数,而 ElCascader 的 lazyLoad 属性需要一个函数\n cascaderProps.props.lazyLoad = createCascaderLazyLoad(\n cascaderSchema.properties.remote,\n formDataRef\n );\n }\n\n console.log('====>', cascaderProps);\n\n return h(ElCascader, cascaderProps, 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: any) => {\n const value = scope.row[node.properties?.prop];\n if (Array.isArray(value)) {\n return value.map((item: any) => {\n return node.children?.find((child: any) => child.value === item && child.value !== undefined);\n }).map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n }\n\n const childIndex = (node.children || []).findIndex(\n (child: any) => child.value === scope.row[node.properties?.prop] && child.value !== undefined\n );\n if (childIndex !== -1) {\n return hastToVNode(node.children?.[childIndex], config, -Infinity, scope.row);\n }\n return node.children?.map((child: any) => hastToVNode(child, config, -Infinity, scope.row));\n },\n }\n );\n }\n\n // 自定义组件\n if (node.tagName === 'CoreText') {\n return h(CoreText, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreTips') {\n return h(CoreTips, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreResult') {\n return h(CoreResult, {\n ...node.properties,\n });\n }\n\n if (node.tagName === 'CoreChart') {\n return h(CoreChart, {\n ...node.properties,\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,\n extendData: uploadExtendData,\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n fileList: hitlData[index!]?.[formProp] || [],\n 'onUpdate:fileList': (value: any) => {\n if (!hitlData[index!]) {\n hitlData[index!] = {};\n }\n // 针对目前上传的文件解析,CA 这边必须得放在files 属性中,故被迫需要进行兼容\n // 这里将基于 __files__ 去识别,后续在coreagent 的 adapter 中进行处理\n if (!hitlData[index!].__files__) {\n hitlData[index!].__files__ = {};\n }\n hitlData[index!].__files__[formProp] = value;\n hitlData[index!][formProp] = value;\n },\n }\n );\n }\n // 非表单场景,直接渲染\n return h(\n CoreUpload,\n {\n ...node.properties,\n disabled: checkDisabled(node as InputSchema, disabledContext),\n }\n );\n }\n\n // 处理CorePilot代码块\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find((child: any) => 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 corePilotChildren = hastToVNode(viewTree, config);\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [corePilotChildren]);\n } catch (error) {\n // JSON 解析失败,可能是格式错误,显示骨架屏\n return renderSkeleton();\n }\n }\n // 其他情况,直接渲染代码块\n return h(\"pre\", {\n ...node.properties,\n }, codeNode.children?.[0]?.value || '');\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"],"names":["children","zhCN","_a","_b","_c"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@core-pilot/client-vue",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/es/index.js",
6
6
  "browser": "dist/umd/index.js",