@core-pilot/client-vue 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/cjs/client-vue.css +1 -1
  2. package/dist/cjs/components/bubble-list/index.js +1 -1
  3. package/dist/cjs/components/bubble-list/index.js.map +1 -1
  4. package/dist/cjs/components/core-card/index.js +1 -1
  5. package/dist/cjs/components/core-card/index.js.map +1 -1
  6. package/dist/cjs/components/core-upload/assets/delete.svg.js +2 -0
  7. package/dist/cjs/components/core-upload/assets/delete.svg.js.map +1 -0
  8. package/dist/cjs/components/core-upload/assets/temp.svg.js +2 -0
  9. package/dist/cjs/components/core-upload/assets/temp.svg.js.map +1 -0
  10. package/dist/cjs/components/core-upload/assets/upload.svg.js +2 -0
  11. package/dist/cjs/components/core-upload/assets/upload.svg.js.map +1 -0
  12. package/dist/cjs/components/core-upload/index.js +2 -0
  13. package/dist/cjs/components/core-upload/index.js.map +1 -0
  14. package/dist/cjs/components/editor-sender/index.js +1 -1
  15. package/dist/cjs/components/editor-sender/index.js.map +1 -1
  16. package/dist/cjs/components/index.js +1 -1
  17. package/dist/cjs/components/x-markdown/index.js +1 -1
  18. package/dist/cjs/components/x-markdown/index.js.map +1 -1
  19. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js +1 -1
  20. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  21. package/dist/cjs/index.js +1 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/es/client-vue.css +1 -1
  24. package/dist/es/components/bubble-list/index.js +3 -0
  25. package/dist/es/components/bubble-list/index.js.map +1 -1
  26. package/dist/es/components/core-card/index.js +9 -4
  27. package/dist/es/components/core-card/index.js.map +1 -1
  28. package/dist/es/components/core-upload/assets/delete.svg.js +5 -0
  29. package/dist/es/components/core-upload/assets/delete.svg.js.map +1 -0
  30. package/dist/es/components/core-upload/assets/temp.svg.js +5 -0
  31. package/dist/es/components/core-upload/assets/temp.svg.js.map +1 -0
  32. package/dist/es/components/core-upload/assets/upload.svg.js +5 -0
  33. package/dist/es/components/core-upload/assets/upload.svg.js.map +1 -0
  34. package/dist/es/components/core-upload/index.js +267 -0
  35. package/dist/es/components/core-upload/index.js.map +1 -0
  36. package/dist/es/components/editor-sender/index.js +39 -16
  37. package/dist/es/components/editor-sender/index.js.map +1 -1
  38. package/dist/es/components/index.js +2 -0
  39. package/dist/es/components/index.js.map +1 -1
  40. package/dist/es/components/x-markdown/index.js +75 -17
  41. package/dist/es/components/x-markdown/index.js.map +1 -1
  42. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js +20 -1
  43. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  44. package/dist/es/index.js +2 -0
  45. package/dist/es/index.js.map +1 -1
  46. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),t=require("vue-element-plus-x");;/* empty css */const i=require("./actionBar.js"),o=require("../x-markdown/index.js"),s=e.defineComponent({props:{list:{type:Array,default:()=>[]},btnLoading:{type:Boolean,default:!0},maxHeight:{type:String,default:"500px"},autoHideThinking:{type:Boolean,default:!0},speed:{type:Number,default:200},disLikeFeedbackList:{type:Array,default:()=>{}},likeFeedbackList:{type:Array,default:()=>{}}},expose:["showLastActionGroup","scrollToBottom","hideLastActionGroup"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","like","dislike","regenerate","copy","refConfigUpdate","questionClick","downloadFile","coreSubmit"],setup(t,{emit:o}){const s=e.useTemplateRef("bubbleList"),n=e.useTemplateRef("bubbleListContainer"),l=e.ref(!1),r=e.ref(null),a=e.ref(()=>{});e.watch(()=>r.value,(e,t)=>{var i;if(null===e)return;if(t===e)return;const s=null==(i=r.value)?void 0:i.querySelector("div[hidden]"),n=JSON.parse((null==s?void 0:s.textContent)||"[]");o("refConfigUpdate",n)}),e.watch(()=>t.list.length,()=>{console.log("props.list.length",t.list.length),e.nextTick(()=>{a.value(),a.value=g()})});const c=(e,t,i,s)=>{o(e,{content:t,message:s,cancel:i})},u=e=>{o("questionClick",e)},d=e=>t.list[t.list.length-1]===e,g=()=>{const e=n.value.querySelectorAll(".el-bubble-start"),t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const t=e.boundingClientRect.bottom,i=e.target.clientHeight,o=n.value.getBoundingClientRect().bottom;Math.abs(t-o)<i&&(r.value=e.target)}})},{root:n.value,threshold:[.1,.9]});return e.forEach(e=>{t.observe(e)}),()=>{t.disconnect()}};return e.onMounted(()=>{a.value=g()}),{hoverActiveRefTrigger:e=>{o("hoverActiveRefTrigger",e)},showLastActionGroup:()=>{l.value=!0},hideLastActionGroup:()=>{l.value=!1},showLastBubbleFooter:l,clickActiveRefTrigger:e=>{o("clickActiveRefTrigger",e)},clickAction:c,scrollToBottom:()=>{var e;null==(e=s.value)||e.scrollToBottom()},lastRefConfigUpdate:(e,i)=>{t.list[t.list.length-1]===i&&o("refConfigUpdate",e)},getQuestions:t=>t.questions&&t.questions.length>0?e.createVNode("div",{class:"question-list"},[t.questions.map((t,i)=>e.createVNode("span",{class:"question-item",key:i,onClick:()=>u(t)},[t,e.createVNode("span",{class:"icon"},null)]))]):null,questionClick:u,isLastItem:d,getActionBar:o=>{if("boolean"==typeof o.showActions&&!o.showActions)return null;const s=d(o);return s&&l.value?e.createVNode(i,{isLast:s,content:o.content,message:o,disLikeFeedbackList:t.disLikeFeedbackList,likeFeedbackList:t.likeFeedbackList,onClick:(e,t,i)=>c(e,t,i,o)},null):s?void 0:e.createVNode(i,{isLast:s,content:o.content,message:o,disLikeFeedbackList:t.disLikeFeedbackList,likeFeedbackList:t.likeFeedbackList,onClick:(e,t,i)=>c(e,t,i,o)},null)},onDownloadFile:e=>{o("downloadFile",e)},coreSubmit:(e,t)=>{o("coreSubmit",e,t)}}},render(){return e.createVNode("div",{ref:"bubbleListContainer",class:"bubble-list"},[e.createVNode(t.BubbleList,{ref:"bubbleList",list:this.list,btnLoading:this.btnLoading,maxHeight:this.maxHeight},{header:({item:i})=>{var o;return(null==(o=i.files)?void 0:o.length)?e.createVNode("div",{class:"bubble-item-header"},[i.files.map(i=>e.createVNode(t.FilesCard,{name:i.name,status:"done"},null))]):null},content:({item:t})=>e.createVNode(o,{key:t.id,typing:t.typing,speed:this.speed,text:t.content,historyInputs:t.historyInputs,isHistoryMessage:t.isHistoryMessage,autoHideThinking:this.autoHideThinking,onHoverActiveRefTrigger:this.hoverActiveRefTrigger,onClickActiveRefTrigger:this.clickActiveRefTrigger,onRefConfigUpdate:e=>this.lastRefConfigUpdate(e,t),onDownloadFile:this.onDownloadFile,onCoreSubmit:e=>this.coreSubmit(e,t)},null),footer:({item:t})=>"ai"===t.role?e.createVNode("div",null,[this.getActionBar(t),this.getQuestions(t)]):null})])}});module.exports=s;
1
+ "use strict";const e=require("vue"),t=require("vue-element-plus-x");;/* empty css */const i=require("./actionBar.js"),o=require("../x-markdown/index.js"),s=e.defineComponent({props:{list:{type:Array,default:()=>[]},btnLoading:{type:Boolean,default:!0},maxHeight:{type:String,default:"500px"},autoHideThinking:{type:Boolean,default:!0},speed:{type:Number,default:200},disLikeFeedbackList:{type:Array,default:()=>{}},likeFeedbackList:{type:Array,default:()=>{}}},expose:["showLastActionGroup","scrollToBottom","hideLastActionGroup"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","like","dislike","regenerate","copy","refConfigUpdate","questionClick","downloadFile","coreSubmit"],setup(t,{emit:o}){const s=e.useTemplateRef("bubbleList"),n=e.useTemplateRef("bubbleListContainer"),l=e.ref(!1),r=e.ref(null),a=e.ref(()=>{});e.watch(()=>r.value,(e,t)=>{var i;if(null===e)return;if(t===e)return;const s=null==(i=r.value)?void 0:i.querySelector("div[hidden]"),n=JSON.parse((null==s?void 0:s.textContent)||"[]");o("refConfigUpdate",n)}),e.watch(()=>t.list.length,()=>{console.log("props.list.length",t.list.length),e.nextTick(()=>{a.value(),a.value=g()})});const c=(e,t,i,s)=>{o(e,{content:t,message:s,cancel:i})},u=e=>{o("questionClick",e)},d=e=>t.list[t.list.length-1]===e,g=()=>{const e=n.value.querySelectorAll(".el-bubble-start"),t=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const t=e.boundingClientRect.bottom,i=e.target.clientHeight,o=n.value.getBoundingClientRect().bottom;Math.abs(t-o)<i&&(r.value=e.target)}})},{root:n.value,threshold:[.1,.9]});return e.forEach(e=>{t.observe(e)}),()=>{t.disconnect()}};return e.onMounted(()=>{a.value=g()}),{hoverActiveRefTrigger:e=>{o("hoverActiveRefTrigger",e)},showLastActionGroup:()=>{l.value=!0},hideLastActionGroup:()=>{l.value=!1},showLastBubbleFooter:l,clickActiveRefTrigger:e=>{o("clickActiveRefTrigger",e)},clickAction:c,scrollToBottom:()=>{var e;null==(e=s.value)||e.scrollToBottom()},lastRefConfigUpdate:(e,i)=>{t.list[t.list.length-1]===i&&o("refConfigUpdate",e)},getQuestions:t=>t.questions&&t.questions.length>0?e.createVNode("div",{class:"question-list"},[t.questions.map((t,i)=>e.createVNode("span",{class:"question-item",key:i,onClick:()=>u(t)},[t,e.createVNode("span",{class:"icon"},null)]))]):null,questionClick:u,isLastItem:d,getActionBar:o=>{if("boolean"==typeof o.showActions&&!o.showActions)return null;const s=d(o);return s&&l.value?e.createVNode(i,{isLast:s,content:o.content,message:o,disLikeFeedbackList:t.disLikeFeedbackList,likeFeedbackList:t.likeFeedbackList,onClick:(e,t,i)=>c(e,t,i,o)},null):s?void 0:e.createVNode(i,{isLast:s,content:o.content,message:o,disLikeFeedbackList:t.disLikeFeedbackList,likeFeedbackList:t.likeFeedbackList,onClick:(e,t,i)=>c(e,t,i,o)},null)},onDownloadFile:e=>{o("downloadFile",e)},coreSubmit:(e,t)=>{o("coreSubmit",e,t)}}},render(){return e.createVNode("div",{ref:"bubbleListContainer",class:"bubble-list"},[e.createVNode(t.BubbleList,{ref:"bubbleList",list:this.list,btnLoading:this.btnLoading,maxHeight:this.maxHeight},{header:({item:i})=>{var o;return(null==(o=i.files)?void 0:o.length)?e.createVNode("div",{class:"bubble-item-header"},[i.files.map(i=>e.createVNode(t.FilesCard,{name:i.name,status:"done"},null))]):null},content:({item:t})=>e.createVNode(o,{key:t.id,typing:t.typing,speed:this.speed,text:t.content,historyInputs:t.historyInputs,isHistoryMessage:t.isHistoryMessage,autoHideThinking:this.autoHideThinking,user:this.user,authToken:this.authToken,appId:this.appId,onHoverActiveRefTrigger:this.hoverActiveRefTrigger,onClickActiveRefTrigger:this.clickActiveRefTrigger,onRefConfigUpdate:e=>this.lastRefConfigUpdate(e,t),onDownloadFile:this.onDownloadFile,onCoreSubmit:e=>this.coreSubmit(e,t)},null),footer:({item:t})=>"ai"===t.role?e.createVNode("div",null,[this.getActionBar(t),this.getQuestions(t)]):null})])}});module.exports=s;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/bubble-list/index.tsx"],"sourcesContent":["import { defineComponent, nextTick, onMounted, ref, useTemplateRef, watch } from 'vue';\nimport { BubbleList, FilesCard } from 'vue-element-plus-x';\nimport type { BubbleListItemProps } from 'vue-element-plus-x/types/BubbleList';\nimport './style/index.less';\nimport ActionBar, { BtnItemConfig } from './actionBar';\nimport XMarkdown from '../x-markdown';\n\nexport interface FeedbackItem {\n title: string;\n content: string;\n checked: boolean;\n // showInput?: boolean; // 是否显示输入框\n}\n\nexport interface MessageItem extends BubbleListItemProps {\n role: 'user' | 'ai';\n questions?: Array<string>;\n speed?: number;\n id: string;\n showActions?: boolean;\n feedback?: 'like' | 'dislike';\n files?: Array<{\n id: string,\n extension: string,\n name: string,\n }>;\n isHistoryMessage?: boolean;\n historyInputs?: Record<string, any>;\n}\n\nexport default defineComponent({\n props: {\n list: {\n type: Array as () => Array<MessageItem>,\n default: () => [],\n },\n btnLoading: {\n type: Boolean,\n default: true,\n },\n maxHeight: {\n type: String,\n default: '500px',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n speed: {\n type: Number,\n default: 200,\n },\n disLikeFeedbackList: {\n type: Array as () => Array<FeedbackItem>,\n default: () => undefined,\n },\n likeFeedbackList: {\n type: Array as () => Array<FeedbackItem>,\n default: () => undefined,\n },\n },\n expose: ['showLastActionGroup', 'scrollToBottom', 'hideLastActionGroup'],\n emits: [\n 'hoverActiveRefTrigger',\n 'clickActiveRefTrigger',\n 'like',\n 'dislike',\n 'regenerate',\n 'copy',\n 'refConfigUpdate',\n 'questionClick',\n 'downloadFile',\n 'coreSubmit',\n ],\n setup(props, { emit }) {\n const bubbleList = useTemplateRef<typeof BubbleList>('bubbleList');\n const bubbleListContainer = useTemplateRef<Element>('bubbleListContainer');\n const showLastBubbleFooter = ref(false);\n const curActiveItem = ref<Element | null>(null);\n const destoryObserver = ref<Function>(() => {});\n\n watch(() => curActiveItem.value, (newVal, oldVal) => {\n if (newVal === null) {\n return;\n }\n if (oldVal === newVal) {\n return;\n }\n const refContainer = (curActiveItem.value as HTMLElement)?.querySelector('div[hidden]');\n const curRefList = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', curRefList);\n })\n\n watch(() => props.list.length, () => {\n console.log('props.list.length', props.list.length);\n nextTick(() => {\n destoryObserver.value();\n destoryObserver.value = scrollTrigger();\n })\n })\n\n const hoverActiveRefTrigger = (item) => {\n emit('hoverActiveRefTrigger', item);\n }\n\n const clickActiveRefTrigger = (item) => {\n emit('clickActiveRefTrigger', item);\n }\n\n const showLastActionGroup = () => {\n showLastBubbleFooter.value = true;\n }\n\n const hideLastActionGroup = () => {\n showLastBubbleFooter.value = false;\n }\n\n const clickAction = (type: BtnItemConfig['type'], content, cancel, item) => {\n emit(type, { content, message: item, cancel })\n }\n\n const scrollToBottom = () => {\n (bubbleList.value as any)?.scrollToBottom();\n }\n\n const lastRefConfigUpdate = (refList, item) => {\n // 更新最后一条消息的引用列表\n if (props.list[props.list.length - 1] === item) {\n emit('refConfigUpdate', refList);\n }\n }\n\n const getQuestions = (item) => {\n if (item.questions && item.questions.length > 0) {\n return (\n <div class='question-list'>\n {\n item.questions.map((question, index) => {\n return (\n <span\n class='question-item'\n key={index}\n onClick={() => questionClick(question)}\n >\n {question}\n <span class='icon'></span>\n </span>\n )\n })\n }\n </div>\n )\n }\n return null;\n }\n\n const questionClick = (q) => {\n emit('questionClick', q)\n }\n\n const isLastItem = (item: MessageItem) => {\n return props.list[props.list.length - 1] === item;\n }\n\n const getActionBar = (item: MessageItem) => {\n // 如果当前项中明确指定不显示actionbar,则不显示\n if (typeof item.showActions === 'boolean' && !item.showActions) {\n return null;\n }\n const isLast = isLastItem(item);\n if (isLast && showLastBubbleFooter.value) {\n return (\n <ActionBar\n isLast={isLast}\n content={item.content}\n message={item}\n disLikeFeedbackList={props.disLikeFeedbackList}\n likeFeedbackList={props.likeFeedbackList}\n onClick={(type, content, cancel) => clickAction(type, content, cancel, item)}\n />\n )\n }\n if (!isLast) {\n return (\n <ActionBar\n isLast={isLast}\n content={item.content}\n message={item}\n disLikeFeedbackList={props.disLikeFeedbackList}\n likeFeedbackList={props.likeFeedbackList}\n onClick={(type, content, cancel) => clickAction(type, content, cancel, item)}\n />\n );\n }\n }\n\n const onDownloadFile = (payload) => {\n emit('downloadFile', payload);\n }\n\n const scrollTrigger = () => {\n const messageItems = bubbleListContainer.value!.querySelectorAll('.el-bubble-start');\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const itemBottom = entry.boundingClientRect.bottom;\n const height = entry.target.clientHeight;\n const listBottom = bubbleListContainer.value!.getBoundingClientRect().bottom;\n \n if (Math.abs(itemBottom - listBottom) < height) {\n curActiveItem.value = entry.target;\n }\n }\n });\n }, {\n root: bubbleListContainer.value!,\n threshold: [0.1, 0.9]\n });\n\n // 3. 为所有消息项添加监听\n messageItems.forEach(item => {\n observer.observe(item);\n });\n\n return () => {\n observer.disconnect();\n }\n }\n\n const coreSubmit = (payload, item) => {\n emit('coreSubmit', payload, item);\n }\n\n onMounted(() => {\n destoryObserver.value = scrollTrigger();\n })\n\n return {\n hoverActiveRefTrigger,\n showLastActionGroup,\n hideLastActionGroup,\n showLastBubbleFooter,\n clickActiveRefTrigger,\n clickAction,\n scrollToBottom,\n lastRefConfigUpdate,\n getQuestions,\n questionClick,\n isLastItem,\n getActionBar,\n onDownloadFile,\n coreSubmit,\n };\n },\n\n render() {\n return (\n <div\n ref=\"bubbleListContainer\"\n class=\"bubble-list\"\n >\n <BubbleList\n ref=\"bubbleList\"\n list={this.list}\n btnLoading={this.btnLoading}\n maxHeight={this.maxHeight}\n >\n {{\n header: ({ item }: { item: MessageItem }) => {\n if (!item.files?.length) {\n return null;\n }\n return (\n <div class=\"bubble-item-header\">\n {\n item.files.map((item) => (\n <FilesCard\n name={item.name}\n status=\"done\"\n />\n ))\n }\n </div>\n )\n },\n content: ({ item }: { item: MessageItem }) => (\n <XMarkdown\n key={item.id}\n typing={item.typing as boolean}\n speed={this.speed}\n text={item.content}\n historyInputs={item.historyInputs}\n isHistoryMessage={item.isHistoryMessage}\n autoHideThinking={this.autoHideThinking}\n onHoverActiveRefTrigger={this.hoverActiveRefTrigger}\n onClickActiveRefTrigger={this.clickActiveRefTrigger}\n onRefConfigUpdate={(refList) => this.lastRefConfigUpdate(refList, item)}\n onDownloadFile={this.onDownloadFile}\n onCoreSubmit={(payload) => this.coreSubmit(payload, item)}\n />\n ),\n footer: ({ item }: { item: MessageItem }) => {\n if (item.role === 'ai') {\n return (\n <div>\n {\n this.getActionBar(item)\n }\n {\n this.getQuestions(item)\n }\n </div>\n )\n }\n return null;\n }\n }}\n </BubbleList>\n </div>\n );\n }\n});"],"names":["index","props","list","type","Array","default","btnLoading","Boolean","maxHeight","String","autoHideThinking","speed","Number","disLikeFeedbackList","likeFeedbackList","expose","emits","setup","emit","bubbleList","useTemplateRef","bubbleListContainer","showLastBubbleFooter","ref","curActiveItem","destoryObserver","watch","value","newVal","oldVal","refContainer","querySelector","curRefList","JSON","parse","textContent","length","console","log","nextTick","scrollTrigger","clickAction","content","cancel","item","message","questionClick","q","isLastItem","messageItems","querySelectorAll","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","itemBottom","boundingClientRect","bottom","height","target","clientHeight","listBottom","getBoundingClientRect","Math","abs","root","threshold","observe","disconnect","onMounted","hoverActiveRefTrigger","showLastActionGroup","hideLastActionGroup","clickActiveRefTrigger","scrollToBottom","lastRefConfigUpdate","refList","getQuestions","questions","_createVNode","class","map","question","key","onClick","getActionBar","showActions","isLast","ActionBar","onDownloadFile","payload","coreSubmit","render","BubbleList","this","header","files","FilesCard","name","status","XMarkdown","id","typing","text","historyInputs","isHistoryMessage","onHoverActiveRefTrigger","onClickActiveRefTrigger","onRefConfigUpdate","onCoreSubmit","footer","role"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/bubble-list/index.tsx"],"sourcesContent":["import { defineComponent, nextTick, onMounted, ref, useTemplateRef, watch } from 'vue';\nimport { BubbleList, FilesCard } from 'vue-element-plus-x';\nimport type { BubbleListItemProps } from 'vue-element-plus-x/types/BubbleList';\nimport './style/index.less';\nimport ActionBar, { BtnItemConfig } from './actionBar';\nimport XMarkdown from '../x-markdown';\n\nexport interface FeedbackItem {\n title: string;\n content: string;\n checked: boolean;\n // showInput?: boolean; // 是否显示输入框\n}\n\nexport interface MessageItem extends BubbleListItemProps {\n role: 'user' | 'ai';\n questions?: Array<string>;\n speed?: number;\n id: string;\n showActions?: boolean;\n feedback?: 'like' | 'dislike';\n files?: Array<{\n id: string,\n extension: string,\n name: string,\n }>;\n isHistoryMessage?: boolean;\n historyInputs?: Record<string, any>;\n user?: string;\n authToken?: string;\n appId?: string;\n}\n\nexport default defineComponent({\n props: {\n list: {\n type: Array as () => Array<MessageItem>,\n default: () => [],\n },\n btnLoading: {\n type: Boolean,\n default: true,\n },\n maxHeight: {\n type: String,\n default: '500px',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n speed: {\n type: Number,\n default: 200,\n },\n disLikeFeedbackList: {\n type: Array as () => Array<FeedbackItem>,\n default: () => undefined,\n },\n likeFeedbackList: {\n type: Array as () => Array<FeedbackItem>,\n default: () => undefined,\n },\n },\n expose: ['showLastActionGroup', 'scrollToBottom', 'hideLastActionGroup'],\n emits: [\n 'hoverActiveRefTrigger',\n 'clickActiveRefTrigger',\n 'like',\n 'dislike',\n 'regenerate',\n 'copy',\n 'refConfigUpdate',\n 'questionClick',\n 'downloadFile',\n 'coreSubmit',\n ],\n setup(props, { emit }) {\n const bubbleList = useTemplateRef<typeof BubbleList>('bubbleList');\n const bubbleListContainer = useTemplateRef<Element>('bubbleListContainer');\n const showLastBubbleFooter = ref(false);\n const curActiveItem = ref<Element | null>(null);\n const destoryObserver = ref<Function>(() => {});\n\n watch(() => curActiveItem.value, (newVal, oldVal) => {\n if (newVal === null) {\n return;\n }\n if (oldVal === newVal) {\n return;\n }\n const refContainer = (curActiveItem.value as HTMLElement)?.querySelector('div[hidden]');\n const curRefList = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', curRefList);\n })\n\n watch(() => props.list.length, () => {\n console.log('props.list.length', props.list.length);\n nextTick(() => {\n destoryObserver.value();\n destoryObserver.value = scrollTrigger();\n })\n })\n\n const hoverActiveRefTrigger = (item) => {\n emit('hoverActiveRefTrigger', item);\n }\n\n const clickActiveRefTrigger = (item) => {\n emit('clickActiveRefTrigger', item);\n }\n\n const showLastActionGroup = () => {\n showLastBubbleFooter.value = true;\n }\n\n const hideLastActionGroup = () => {\n showLastBubbleFooter.value = false;\n }\n\n const clickAction = (type: BtnItemConfig['type'], content, cancel, item) => {\n emit(type, { content, message: item, cancel })\n }\n\n const scrollToBottom = () => {\n (bubbleList.value as any)?.scrollToBottom();\n }\n\n const lastRefConfigUpdate = (refList, item) => {\n // 更新最后一条消息的引用列表\n if (props.list[props.list.length - 1] === item) {\n emit('refConfigUpdate', refList);\n }\n }\n\n const getQuestions = (item) => {\n if (item.questions && item.questions.length > 0) {\n return (\n <div class='question-list'>\n {\n item.questions.map((question, index) => {\n return (\n <span\n class='question-item'\n key={index}\n onClick={() => questionClick(question)}\n >\n {question}\n <span class='icon'></span>\n </span>\n )\n })\n }\n </div>\n )\n }\n return null;\n }\n\n const questionClick = (q) => {\n emit('questionClick', q)\n }\n\n const isLastItem = (item: MessageItem) => {\n return props.list[props.list.length - 1] === item;\n }\n\n const getActionBar = (item: MessageItem) => {\n // 如果当前项中明确指定不显示actionbar,则不显示\n if (typeof item.showActions === 'boolean' && !item.showActions) {\n return null;\n }\n const isLast = isLastItem(item);\n if (isLast && showLastBubbleFooter.value) {\n return (\n <ActionBar\n isLast={isLast}\n content={item.content}\n message={item}\n disLikeFeedbackList={props.disLikeFeedbackList}\n likeFeedbackList={props.likeFeedbackList}\n onClick={(type, content, cancel) => clickAction(type, content, cancel, item)}\n />\n )\n }\n if (!isLast) {\n return (\n <ActionBar\n isLast={isLast}\n content={item.content}\n message={item}\n disLikeFeedbackList={props.disLikeFeedbackList}\n likeFeedbackList={props.likeFeedbackList}\n onClick={(type, content, cancel) => clickAction(type, content, cancel, item)}\n />\n );\n }\n }\n\n const onDownloadFile = (payload) => {\n emit('downloadFile', payload);\n }\n\n const scrollTrigger = () => {\n const messageItems = bubbleListContainer.value!.querySelectorAll('.el-bubble-start');\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const itemBottom = entry.boundingClientRect.bottom;\n const height = entry.target.clientHeight;\n const listBottom = bubbleListContainer.value!.getBoundingClientRect().bottom;\n \n if (Math.abs(itemBottom - listBottom) < height) {\n curActiveItem.value = entry.target;\n }\n }\n });\n }, {\n root: bubbleListContainer.value!,\n threshold: [0.1, 0.9]\n });\n\n // 3. 为所有消息项添加监听\n messageItems.forEach(item => {\n observer.observe(item);\n });\n\n return () => {\n observer.disconnect();\n }\n }\n\n const coreSubmit = (payload, item) => {\n emit('coreSubmit', payload, item);\n }\n\n onMounted(() => {\n destoryObserver.value = scrollTrigger();\n })\n\n return {\n hoverActiveRefTrigger,\n showLastActionGroup,\n hideLastActionGroup,\n showLastBubbleFooter,\n clickActiveRefTrigger,\n clickAction,\n scrollToBottom,\n lastRefConfigUpdate,\n getQuestions,\n questionClick,\n isLastItem,\n getActionBar,\n onDownloadFile,\n coreSubmit,\n };\n },\n\n render() {\n return (\n <div\n ref=\"bubbleListContainer\"\n class=\"bubble-list\"\n >\n <BubbleList\n ref=\"bubbleList\"\n list={this.list}\n btnLoading={this.btnLoading}\n maxHeight={this.maxHeight}\n >\n {{\n header: ({ item }: { item: MessageItem }) => {\n if (!item.files?.length) {\n return null;\n }\n return (\n <div class=\"bubble-item-header\">\n {\n item.files.map((item) => (\n <FilesCard\n name={item.name}\n status=\"done\"\n />\n ))\n }\n </div>\n )\n },\n content: ({ item }: { item: MessageItem }) => (\n <XMarkdown\n key={item.id}\n typing={item.typing as boolean}\n speed={this.speed}\n text={item.content}\n historyInputs={item.historyInputs}\n isHistoryMessage={item.isHistoryMessage}\n autoHideThinking={this.autoHideThinking}\n user={this.user}\n authToken={this.authToken}\n appId={this.appId}\n onHoverActiveRefTrigger={this.hoverActiveRefTrigger}\n onClickActiveRefTrigger={this.clickActiveRefTrigger}\n onRefConfigUpdate={(refList) => this.lastRefConfigUpdate(refList, item)}\n onDownloadFile={this.onDownloadFile}\n onCoreSubmit={(payload) => this.coreSubmit(payload, item)}\n />\n ),\n footer: ({ item }: { item: MessageItem }) => {\n if (item.role === 'ai') {\n return (\n <div>\n {\n this.getActionBar(item)\n }\n {\n this.getQuestions(item)\n }\n </div>\n )\n }\n return null;\n }\n }}\n </BubbleList>\n </div>\n );\n }\n});"],"names":["index","props","list","type","Array","default","btnLoading","Boolean","maxHeight","String","autoHideThinking","speed","Number","disLikeFeedbackList","likeFeedbackList","expose","emits","setup","emit","bubbleList","useTemplateRef","bubbleListContainer","showLastBubbleFooter","ref","curActiveItem","destoryObserver","watch","value","newVal","oldVal","refContainer","querySelector","curRefList","JSON","parse","textContent","length","console","log","nextTick","scrollTrigger","clickAction","content","cancel","item","message","questionClick","q","isLastItem","messageItems","querySelectorAll","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","itemBottom","boundingClientRect","bottom","height","target","clientHeight","listBottom","getBoundingClientRect","Math","abs","root","threshold","observe","disconnect","onMounted","hoverActiveRefTrigger","showLastActionGroup","hideLastActionGroup","clickActiveRefTrigger","scrollToBottom","lastRefConfigUpdate","refList","getQuestions","questions","_createVNode","class","map","question","key","onClick","getActionBar","showActions","isLast","ActionBar","onDownloadFile","payload","coreSubmit","render","BubbleList","this","header","files","FilesCard","name","status","XMarkdown","id","typing","text","historyInputs","isHistoryMessage","user","authToken","appId","onHoverActiveRefTrigger","onClickActiveRefTrigger","onRefConfigUpdate","onCoreSubmit","footer","role"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),s=require("element-plus");/* empty css *//* empty css */;/* empty css */const l=e.defineComponent({name:"CoreCard",props:{header:{type:String,default:""},shadow:{type:String,default:"always"},collapsible:{type:Boolean,default:!0},defaultCollapsed:{type:Boolean,default:!1}},setup(s,{slots:l}){const a=e.ref(s.defaultCollapsed),o=e.computed(()=>a.value?"core-card__collapse-icon--collapsed":"core-card__collapse-icon--expanded");return{isCollapsed:a,toggleCollapse:()=>{s.collapsible&&(a.value=!a.value)},collapseIconClass:o}},render(){const l=this.header||this.$slots.header;return e.createVNode(s.ElCard,{class:"core-card",shadow:this.shadow},{header:l?()=>e.createVNode("div",{class:"core-card__header",onClick:this.toggleCollapse,style:this.collapsible?{cursor:"pointer"}:{}},[e.createVNode("span",{class:"core-card__header-text"},[this.$slots.header?this.$slots.header():this.header]),this.collapsible&&e.createVNode("i",{class:`core-card__collapse-icon ${this.collapseIconClass}`},null)]):void 0,default:()=>{var s,l;return e.createVNode("div",{class:{"core-card__body":!0,"core-card__body--collapsed":this.isCollapsed}},[null==(l=(s=this.$slots).default)?void 0:l.call(s)])}})}});module.exports=l;
1
+ "use strict";const e=require("vue"),s=require("element-plus");/* empty css *//* empty css */;/* empty css */const l=e.defineComponent({name:"CoreCard",props:{header:{type:String,default:""},shadow:{type:String,default:"always"},collapsible:{type:Boolean,default:!0},defaultCollapsed:{type:Boolean,default:!1}},setup(s,{slots:l}){const a=e.ref(s.defaultCollapsed),o=e.computed(()=>a.value?"core-card__collapse-icon--collapsed":"core-card__collapse-icon--expanded");return{isCollapsed:a,toggleCollapse:()=>{s.collapsible&&(a.value=!a.value)},collapseIconClass:o}},render(){const l=this.header||this.$slots.header;return e.createVNode(s.ElCard,{class:"core-card",shadow:this.shadow},{header:l?()=>e.createVNode("div",{class:"core-card__header"},[e.createVNode("div",{class:"core-card__header-left",onClick:this.toggleCollapse,style:this.collapsible?{cursor:"pointer"}:{}},[e.createVNode("span",{class:"core-card__header-text",title:this.header},[this.header]),this.collapsible&&e.createVNode("i",{class:`core-card__collapse-icon ${this.collapseIconClass}`},null)]),this.$slots.header&&e.createVNode("div",{class:"core-card__header-right"},[this.$slots.header()])]):void 0,default:()=>{var s,l;return e.createVNode("div",{class:{"core-card__body":!0,"core-card__body--collapsed":this.isCollapsed}},[null==(l=(s=this.$slots).default)?void 0:l.call(s)])}})}});module.exports=l;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/core-card/index.tsx"],"sourcesContent":["import { defineComponent, ref, PropType, computed } from 'vue';\nimport { ElCard } from 'element-plus';\nimport './style.less';\n\nexport default defineComponent({\n name: 'CoreCard',\n props: {\n header: {\n type: String,\n default: '',\n },\n shadow: {\n type: String as PropType<'always' | 'never' | 'hover'>,\n default: 'always',\n },\n collapsible: {\n type: Boolean,\n default: true,\n },\n defaultCollapsed: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const isCollapsed = ref(props.defaultCollapsed);\n\n const toggleCollapse = () => {\n if (props.collapsible) {\n isCollapsed.value = !isCollapsed.value;\n }\n };\n\n const collapseIconClass = computed(() => {\n return isCollapsed.value ? 'core-card__collapse-icon--collapsed' : 'core-card__collapse-icon--expanded';\n });\n\n return {\n isCollapsed,\n toggleCollapse,\n collapseIconClass,\n };\n },\n render() {\n const hasHeader = this.header || this.$slots.header;\n \n return (\n <ElCard\n class=\"core-card\"\n shadow={this.shadow}\n >\n {{\n header: hasHeader ? () => (\n <div \n class=\"core-card__header\" \n onClick={this.toggleCollapse}\n style={this.collapsible ? { cursor: 'pointer' } : {}}\n >\n <span class=\"core-card__header-text\">\n {this.$slots.header ? this.$slots.header() : this.header}\n </span>\n {this.collapsible && (\n <i class={`core-card__collapse-icon ${this.collapseIconClass}`}></i>\n )}\n </div>\n ) : undefined,\n default: () => (\n <div\n class={{\n 'core-card__body': true,\n 'core-card__body--collapsed': this.isCollapsed,\n }}\n >\n {this.$slots.default?.()}\n </div>\n ),\n }}\n </ElCard>\n );\n },\n});\n\n"],"names":["CoreCard","name","props","header","type","String","default","shadow","collapsible","Boolean","defaultCollapsed","setup","slots","isCollapsed","ref","collapseIconClass","computed","value","toggleCollapse","render","hasHeader","this","$slots","_createVNode","ElCard","class","onClick","style","cursor","undefined","_b","_a"],"mappings":"iXAIA,MAAAA,oBAA+B,CAC7BC,KAAM,WACNC,MAAO,CACLC,OAAQ,CACNC,KAAMC,OACNC,QAAS,IAEXC,OAAQ,CACNH,KAAMC,OACNC,QAAS,UAEXE,YAAa,CACXJ,KAAMK,QACNH,SAAS,GAEXI,iBAAkB,CAChBN,KAAMK,QACNH,SAAS,IAGbK,KAAAA,CAAMT,GAAOU,MAAEA,IACb,MAAMC,EAAcC,EAAAA,IAAIZ,EAAMQ,kBAQxBK,EAAoBC,EAAAA,SAAS,IAC1BH,EAAYI,MAAQ,sCAAwC,sCAGrE,MAAO,CACLJ,cACAK,eAZqBA,KACjBhB,EAAMM,cACRK,EAAYI,OAASJ,EAAYI,QAWnCF,oBAEJ,EACAI,MAAAA,GACE,MAAMC,EAAYC,KAAKlB,QAAUkB,KAAKC,OAAOnB,OAE7C,OAAAoB,EAAAA,YAAAC,EAAAA,OAAA,CAAAC,MAAA,YAAAlB,OAGYc,KAAKd,QAAM,CAGjBJ,OAAQiB,EAAY,IAAAG,EAAAA,YAAA,MAAA,CAAAE,MAAA,oBAAAC,QAGPL,KAAKH,eAAcS,MACrBN,KAAKb,YAAc,CAAEoB,OAAQ,WAAc,CAAA,GAAE,CAAAL,EAAAA,YAAA,OAAA,CAAAE,MAAA,0BAAA,CAGjDJ,KAAKC,OAAOnB,OAASkB,KAAKC,OAAOnB,SAAWkB,KAAKlB,SAEnDkB,KAAKb,aAAWe,EAAAA,YAAA,IAAA,CAAAE,MACL,4BAA4BJ,KAAKN,qBAAmB,aAGhEc,EACJvB,QAASA,aAAAiB,OAAAA,EAAAA,YAAA,MAAA,CAAAE,MAEE,CACL,mBAAmB,EACnB,6BAA8BJ,KAAKR,cACpC,CAEA,OAAAiB,GAAAC,EAAAV,KAAKC,QAAOhB,8BAMzB"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/core-card/index.tsx"],"sourcesContent":["import { defineComponent, ref, PropType, computed } from 'vue';\nimport { ElCard } from 'element-plus';\nimport './style.less';\n\nexport default defineComponent({\n name: 'CoreCard',\n props: {\n header: {\n type: String,\n default: '',\n },\n shadow: {\n type: String as PropType<'always' | 'never' | 'hover'>,\n default: 'always',\n },\n collapsible: {\n type: Boolean,\n default: true,\n },\n defaultCollapsed: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const isCollapsed = ref(props.defaultCollapsed);\n\n const toggleCollapse = () => {\n if (props.collapsible) {\n isCollapsed.value = !isCollapsed.value;\n }\n };\n\n const collapseIconClass = computed(() => {\n return isCollapsed.value ? 'core-card__collapse-icon--collapsed' : 'core-card__collapse-icon--expanded';\n });\n\n return {\n isCollapsed,\n toggleCollapse,\n collapseIconClass,\n };\n },\n render() {\n const hasHeader = this.header || this.$slots.header;\n \n return (\n <ElCard\n class=\"core-card\"\n shadow={this.shadow}\n >\n {{\n header: hasHeader ? () => (\n <div class=\"core-card__header\">\n <div \n class=\"core-card__header-left\"\n onClick={this.toggleCollapse}\n style={this.collapsible ? { cursor: 'pointer' } : {}}\n >\n <span \n class=\"core-card__header-text\"\n title={this.header}\n >\n {this.header}\n </span>\n {this.collapsible && (\n <i class={`core-card__collapse-icon ${this.collapseIconClass}`}></i>\n )}\n </div>\n {this.$slots.header && (\n <div class=\"core-card__header-right\">\n {this.$slots.header()}\n </div>\n )}\n </div>\n ) : undefined,\n default: () => (\n <div\n class={{\n 'core-card__body': true,\n 'core-card__body--collapsed': this.isCollapsed,\n }}\n >\n {this.$slots.default?.()}\n </div>\n ),\n }}\n </ElCard>\n );\n },\n});\n\n"],"names":["CoreCard","name","props","header","type","String","default","shadow","collapsible","Boolean","defaultCollapsed","setup","slots","isCollapsed","ref","collapseIconClass","computed","value","toggleCollapse","render","hasHeader","this","$slots","_createVNode","ElCard","class","onClick","style","cursor","title","undefined","_b","_a"],"mappings":"iXAIA,MAAAA,oBAA+B,CAC7BC,KAAM,WACNC,MAAO,CACLC,OAAQ,CACNC,KAAMC,OACNC,QAAS,IAEXC,OAAQ,CACNH,KAAMC,OACNC,QAAS,UAEXE,YAAa,CACXJ,KAAMK,QACNH,SAAS,GAEXI,iBAAkB,CAChBN,KAAMK,QACNH,SAAS,IAGbK,KAAAA,CAAMT,GAAOU,MAAEA,IACb,MAAMC,EAAcC,EAAAA,IAAIZ,EAAMQ,kBAQxBK,EAAoBC,EAAAA,SAAS,IAC1BH,EAAYI,MAAQ,sCAAwC,sCAGrE,MAAO,CACLJ,cACAK,eAZqBA,KACjBhB,EAAMM,cACRK,EAAYI,OAASJ,EAAYI,QAWnCF,oBAEJ,EACAI,MAAAA,GACE,MAAMC,EAAYC,KAAKlB,QAAUkB,KAAKC,OAAOnB,OAE7C,OAAAoB,EAAAA,YAAAC,EAAAA,OAAA,CAAAC,MAAA,YAAAlB,OAGYc,KAAKd,QAAM,CAGjBJ,OAAQiB,EAAY,IAAAG,EAAAA,YAAA,MAAA,CAAAE,MAAA,qBAAA,CAAAF,EAAAA,YAAA,MAAA,CAAAE,MAAA,yBAAAC,QAILL,KAAKH,eAAcS,MACrBN,KAAKb,YAAc,CAAEoB,OAAQ,WAAc,CAAA,GAAE,CAAAL,EAAAA,YAAA,OAAA,CAAAE,MAAA,yBAAAI,MAI3CR,KAAKlB,QAAM,CAEjBkB,KAAKlB,SAEPkB,KAAKb,aAAWe,EAAAA,YAAA,IAAA,CAAAE,MACL,4BAA4BJ,KAAKN,qBAAmB,QAGjEM,KAAKC,OAAOnB,QAAMoB,EAAAA,YAAA,MAAA,CAAAE,MAAA,2BAAA,CAEdJ,KAAKC,OAAOnB,kBAIjB2B,EACJxB,QAASA,aAAAiB,OAAAA,EAAAA,YAAA,MAAA,CAAAE,MAEE,CACL,mBAAmB,EACnB,6BAA8BJ,KAAKR,cACpC,CAEA,OAAAkB,GAAAC,EAAAX,KAAKC,QAAOhB,8BAMzB"}
@@ -0,0 +1,2 @@
1
+ "use strict";module.exports="data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.66602%203.66666H13.3327'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6%201.66666H10'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4%205.66666H12V13.3333C12%2013.8856%2011.5523%2014.3333%2011%2014.3333H5C4.4477%2014.3333%204%2013.8856%204%2013.3333V5.66666Z'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linejoin='round'/%3e%3c/svg%3e";
2
+ //# sourceMappingURL=delete.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.svg.js","sources":["../../../../../src/components/core-upload/assets/delete.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2.66602%203.66666H13.3327'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6%201.66666H10'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4%205.66666H12V13.3333C12%2013.8856%2011.5523%2014.3333%2011%2014.3333H5C4.4477%2014.3333%204%2013.8856%204%2013.3333V5.66666Z'%20stroke='%23ADB0BB'%20stroke-width='1.33333'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":[],"mappings":"4BAAe"}
@@ -0,0 +1,2 @@
1
+ "use strict";module.exports="data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%202H3C2.44772%202%202%202.44772%202%203V13C2%2013.5523%202.44772%2014%203%2014H13C13.5523%2014%2014%2013.5523%2014%2013V3C14%202.44772%2013.5523%202%2013%202Z'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2%204.66666H13.3333'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%207.58334H11'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%2010.25H11'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.66602%202V14'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
2
+ //# sourceMappingURL=temp.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temp.svg.js","sources":["../../../../../src/components/core-upload/assets/temp.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13%202H3C2.44772%202%202%202.44772%202%203V13C2%2013.5523%202.44772%2014%203%2014H13C13.5523%2014%2014%2013.5523%2014%2013V3C14%202.44772%2013.5523%202%2013%202Z'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2%204.66666H13.3333'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%207.58334H11'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%2010.25H11'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.66602%202V14'%20stroke='%2353576A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":[],"mappings":"4BAAe"}
@@ -0,0 +1,2 @@
1
+ "use strict";module.exports="data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.89322%206.75699C2.42557%207.10602%201.33398%208.42552%201.33398%209.99999C1.33398%2011.8409%202.82637%2013.3333%204.66732%2013.3333C4.98312%2013.3333%205.28865%2013.2894%205.57815%2013.2074'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12.0189%206.75699C13.4866%207.10602%2014.5782%208.42552%2014.5782%209.99999C14.5782%2011.8409%2013.0858%2013.3333%2011.2448%2013.3333C10.929%2013.3333%2010.6235%2013.2894%2010.334%2013.2074'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12%206.66666C12%204.45752%2010.2091%202.66666%208%202.66666C5.79087%202.66666%204%204.45752%204%206.66666'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5.6875%209.29374L7.999%206.97461L10.3763%209.33341'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%2012.6667V8.15396'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e";
2
+ //# sourceMappingURL=upload.svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.svg.js","sources":["../../../../../src/components/core-upload/assets/upload.svg"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.89322%206.75699C2.42557%207.10602%201.33398%208.42552%201.33398%209.99999C1.33398%2011.8409%202.82637%2013.3333%204.66732%2013.3333C4.98312%2013.3333%205.28865%2013.2894%205.57815%2013.2074'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12.0189%206.75699C13.4866%207.10602%2014.5782%208.42552%2014.5782%209.99999C14.5782%2011.8409%2013.0858%2013.3333%2011.2448%2013.3333C10.929%2013.3333%2010.6235%2013.2894%2010.334%2013.2074'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12%206.66666C12%204.45752%2010.2091%202.66666%208%202.66666C5.79087%202.66666%204%204.45752%204%206.66666'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5.6875%209.29374L7.999%206.97461L10.3763%209.33341'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8%2012.6667V8.15396'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\""],"names":[],"mappings":"4BAAe"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("vue"),t=require("element-plus");/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */;/* empty css */const s=require("./assets/upload.svg.js"),l=require("./assets/temp.svg.js"),a=require("./assets/delete.svg.js");;/* empty css */const i=e.defineComponent({name:"CoreUpload",props:{action:{type:String,default:"/openapi/v1/app/files/upload"},accept:{type:String,default:".xlsx,.xls,.csv"},maxSize:{type:Number,default:10},multiple:{type:Boolean,default:!0},fileList:{type:Array,default:()=>[]},templateUrl:{type:String,default:""},templateFileName:{type:String,default:"模板文件"},tips:{type:String,default:""},disabled:{type:Boolean,default:!1},httpRequest:{type:Function,default:void 0},headers:{type:Object,default:()=>({Authorization:"Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf",appId:"9a673565-d4f6-4382-bc67-f1beb07df435"})},extendData:{type:Object,default:()=>({user:"abc-123"})}},emits:["update:fileList","success","remove","download-template","error"],setup(s,{emit:l}){const a=e.ref(),i=e.ref(s.fileList||[]);e.watch(()=>s.fileList,e=>{e&&JSON.stringify(e)!==JSON.stringify(i.value)&&(i.value=[...e||[]])},{deep:!0,immediate:!0});const r=e.computed(()=>{if(s.tips)return s.tips;return`支持 ${s.accept.split(",").map(e=>e.replace(".","").toUpperCase()).join(" 或 ")} 格式。文件大小不超过 ${s.maxSize}MB。`});return{uploadRef:a,fileList:i,tipsText:r,formatFileSize:e=>e<1024?e+" B":e<1048576?(e/1024).toFixed(2)+" KB":(e/1048576).toFixed(2)+" MB",beforeUpload:e=>!!(e=>{const l=s.accept.split(",").map(e=>e.trim().toLowerCase()),a=(e=>{const t=e.lastIndexOf(".");return-1!==t?e.substring(t).toLowerCase():""})(e.name);if(!l.some(t=>t.startsWith(".")?t===a:e.type&&e.type.includes(t.replace(".","")))){const e=s.accept.split(",").map(e=>e.replace(".","").toUpperCase()).join(" 或 ");return t.ElMessage.error(`只能上传 ${e} 格式的文件!`),!1}return!0})(e)&&!!(e=>{const l=1024*s.maxSize*1024;return!(e.size>l&&(t.ElMessage.error(`文件大小不能超过 ${s.maxSize}MB!`),1))})(e),handleRemove:(e,t)=>{i.value=t.map(e=>({name:e.name,...e.response||{}})),l("update:fileList",i.value),l("remove",e,t)},handleError:(e,s)=>{t.ElMessage.error(`文件 ${s.name} 上传失败:${e.message}`),l("error",e,s)},handleSuccess:(e,t,s)=>{i.value=s.map(t=>({name:t.name,...e||{}})),l("update:fileList",i.value),l("success",e,t,i)},handleDownloadTemplate:()=>{if(!s.templateUrl)return void t.ElMessage.warning("模板文件地址未配置");l("download-template",s.templateUrl);const e=document.createElement("a");e.href=s.templateUrl,e.download=s.templateFileName,document.body.appendChild(e),e.click(),document.body.removeChild(e)},handleDelete:e=>{const t=i.value.findIndex(t=>t.uid===e.uid);-1!==t&&(i.value.splice(t,1),l("update:fileList",i.value),l("remove",e,i.value))}}},render(){return e.createVNode("div",{class:"core-upload"},[e.createVNode("div",{class:"core-upload__actions"},[e.createVNode(t.ElUpload,{ref:"uploadRef",class:"core-upload__upload",action:this.action,accept:this.accept,headers:this.headers,data:this.extendData,multiple:this.multiple,fileList:this.fileList,beforeUpload:this.beforeUpload,onRemove:this.handleRemove,onError:this.handleError,onSuccess:this.handleSuccess,httpRequest:this.httpRequest,disabled:this.disabled,showFileList:!1},{trigger:()=>e.createVNode(t.ElButton,{type:"primary",icon:e.createVNode("img",{src:s,alt:"upload"},null),disabled:this.disabled},{default:()=>[e.createTextVNode("上传文件")]})}),e.createVNode(t.ElButton,{icon:e.createVNode("img",{src:l,alt:"download"},null),onClick:this.handleDownloadTemplate,disabled:this.disabled},{default:()=>[e.createTextVNode("下载模板")]})]),this.tipsText&&e.createVNode("div",{class:"core-upload__tips"},[this.tipsText]),this.fileList&&this.fileList.length>0&&e.createVNode("div",{class:"core-upload__file-list"},[this.fileList.map(t=>e.createVNode("div",{key:t.uid,class:"core-upload__file-item"},[e.createVNode("div",{class:"core-upload__file-info"},[e.createVNode("span",{class:"core-upload__file-icon"},[e.createTextVNode("📄")]),e.createVNode("span",{class:"core-upload__file-name",title:t.name},[t.name])]),e.createVNode("img",{onClick:()=>this.handleDelete(t),src:a,alt:"delete",class:"core-upload__file-delete"},null)]))])])}});module.exports=i;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/core-upload/index.tsx"],"sourcesContent":["import { defineComponent, ref, PropType, computed, watch } from 'vue';\nimport { ElUpload, ElButton, ElMessage, ElIcon } from 'element-plus';\nimport type { UploadFile, UploadFiles, UploadRequestOptions } from 'element-plus';\n// @ts-ignore\nimport uploadIcon from './assets/upload.svg';\n// @ts-ignore\nimport tempIcon from './assets/temp.svg';\n// @ts-ignore\nimport deleteIcon from './assets/delete.svg';\nimport './style.less';\n\nexport interface UploadFileItem {\n name: string;\n url?: string;\n response?: any;\n [key: string]: any;\n}\n\nexport default defineComponent({\n name: 'CoreUpload',\n props: {\n // 上传地址\n action: {\n type: String,\n default: '/openapi/v1/app/files/upload',\n },\n // 允许上传的文件类型\n accept: {\n type: String,\n default: '.xlsx,.xls,.csv',\n },\n // 文件大小限制(单位:MB)\n maxSize: {\n type: Number,\n default: 10,\n },\n // 是否支持多文件上传\n multiple: {\n type: Boolean,\n default: true,\n },\n // 文件列表\n fileList: {\n type: Array as PropType<UploadFileItem[]>,\n default: () => [],\n },\n // 下载模板的URL\n templateUrl: {\n type: String,\n default: '',\n },\n // 下载模板的文件名\n templateFileName: {\n type: String,\n default: '模板文件',\n },\n // 提示文本\n tips: {\n type: String,\n default: '',\n },\n // 是否禁用\n disabled: {\n type: Boolean,\n default: false,\n },\n // 自定义上传请求\n httpRequest: {\n type: Function as PropType<(options: UploadRequestOptions) => void>,\n default: undefined,\n },\n headers: {\n type: Object,\n default: () => ({\n Authorization: 'Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf',\n appId: '9a673565-d4f6-4382-bc67-f1beb07df435'\n }),\n },\n extendData: {\n type: Object,\n default: () => ({\n \"user\": \"abc-123\",\n }),\n },\n },\n emits: ['update:fileList', 'success', 'remove', 'download-template', 'error'],\n setup(props, { emit }) {\n const uploadRef = ref<InstanceType<typeof ElUpload>>();\n const fileList = ref<UploadFileItem[]>(props.fileList || []);\n\n // 监听外部 fileList 变化\n watch(\n () => props.fileList,\n (newFileList) => {\n if (newFileList && JSON.stringify(newFileList) !== JSON.stringify(fileList.value)) {\n fileList.value = [...(newFileList || [])];\n }\n },\n { deep: true, immediate: true }\n );\n\n // 生成提示文本\n const tipsText = computed(() => {\n if (props.tips) {\n return props.tips;\n }\n const acceptTypes = props.accept\n .split(',')\n .map((type) => type.replace('.', '').toUpperCase())\n .join(' 或 ');\n return `支持 ${acceptTypes} 格式。文件大小不超过 ${props.maxSize}MB。`;\n });\n\n // 格式化文件大小\n const formatFileSize = (size: number): string => {\n if (size < 1024) {\n return size + ' B';\n } else if (size < 1024 * 1024) {\n return (size / 1024).toFixed(2) + ' KB';\n } else {\n return (size / (1024 * 1024)).toFixed(2) + ' MB';\n }\n };\n\n // 获取文件扩展名\n const getFileExtension = (filename: string): string => {\n const lastDot = filename.lastIndexOf('.');\n return lastDot !== -1 ? filename.substring(lastDot).toLowerCase() : '';\n };\n\n // 验证文件类型\n const validateFileType = (file: File): boolean => {\n const acceptTypes = props.accept.split(',').map((type) => type.trim().toLowerCase());\n const fileExt = getFileExtension(file.name);\n const isValid = acceptTypes.some((type) => {\n if (type.startsWith('.')) {\n return type === fileExt;\n }\n // 支持 MIME 类型\n return file.type && file.type.includes(type.replace('.', ''));\n });\n\n if (!isValid) {\n const acceptTypesText = props.accept\n .split(',')\n .map((type) => type.replace('.', '').toUpperCase())\n .join(' 或 ');\n ElMessage.error(`只能上传 ${acceptTypesText} 格式的文件!`);\n return false;\n }\n return true;\n };\n\n // 验证文件大小\n const validateFileSize = (file: File): boolean => {\n const maxSizeBytes = props.maxSize * 1024 * 1024;\n if (file.size > maxSizeBytes) {\n ElMessage.error(`文件大小不能超过 ${props.maxSize}MB!`);\n return false;\n }\n return true;\n };\n\n // 上传前的校验\n const beforeUpload = (file: File): boolean => {\n // 类型校验\n if (!validateFileType(file)) {\n return false;\n }\n // 大小校验\n if (!validateFileSize(file)) {\n return false;\n }\n return true;\n };\n\n // 文件移除时的钩子\n const handleRemove = (uploadFile: UploadFile, uploadFiles: UploadFiles) => {\n fileList.value = uploadFiles.map((file) => ({\n name: file.name,\n ...(file.response || {} as any),\n }));\n emit('update:fileList', fileList.value);\n emit('remove', uploadFile, uploadFiles);\n };\n\n // 上传失败时的钩子\n const handleError = (error: Error, uploadFile: UploadFile) => {\n ElMessage.error(`文件 ${uploadFile.name} 上传失败:${error.message}`);\n emit('error', error, uploadFile);\n };\n\n // 下载模板\n const handleDownloadTemplate = () => {\n if (!props.templateUrl) {\n ElMessage.warning('模板文件地址未配置');\n return;\n }\n emit('download-template', props.templateUrl);\n \n // 如果没有自定义下载处理,则使用默认下载方式\n const link = document.createElement('a');\n link.href = props.templateUrl;\n link.download = props.templateFileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n // 删除文件\n const handleDelete = (file: UploadFileItem) => {\n const index = fileList.value.findIndex((item) => item.uid === file.uid);\n if (index !== -1) {\n fileList.value.splice(index, 1);\n emit('update:fileList', fileList.value);\n emit('remove', file, fileList.value);\n }\n };\n\n // 上传成功时的钩子\n const handleSuccess = (response: any, file: UploadFile, fileLists: UploadFiles) => {\n fileList.value = fileLists.map((file) => ({\n name: file.name,\n ...(response || {} as any),\n }));\n emit('update:fileList', fileList.value);\n emit('success', response, file, fileList);\n };\n\n return {\n uploadRef,\n fileList,\n tipsText,\n formatFileSize,\n beforeUpload,\n handleRemove,\n handleError,\n handleSuccess,\n handleDownloadTemplate,\n handleDelete,\n };\n },\n render() {\n return (\n <div class=\"core-upload\">\n {/* 第一层:上传文件、下载模板按钮 */}\n <div class=\"core-upload__actions\">\n <ElUpload\n ref=\"uploadRef\"\n class=\"core-upload__upload\"\n action={this.action}\n accept={this.accept}\n headers={this.headers}\n data={this.extendData}\n multiple={this.multiple}\n fileList={this.fileList}\n beforeUpload={this.beforeUpload}\n onRemove={this.handleRemove}\n onError={this.handleError}\n onSuccess={this.handleSuccess}\n httpRequest={this.httpRequest}\n disabled={this.disabled}\n showFileList={false}\n >\n {{\n trigger: () => (\n <ElButton\n type=\"primary\"\n icon={<img src={uploadIcon} alt=\"upload\" />}\n disabled={this.disabled}\n >\n 上传文件\n </ElButton>\n ),\n }}\n </ElUpload>\n <ElButton\n icon={<img src={tempIcon} alt=\"download\" />}\n onClick={this.handleDownloadTemplate}\n disabled={this.disabled}\n >\n 下载模板\n </ElButton>\n </div>\n\n {/* 第二层:tips 简要描述当前上传限制 */}\n {this.tipsText && (\n <div class=\"core-upload__tips\">\n {this.tipsText}\n </div>\n )}\n\n {/* 第三层:已经上传的列表,支持删除 */}\n {this.fileList && this.fileList.length > 0 && (\n <div class=\"core-upload__file-list\">\n {this.fileList.map((file) => (\n <div key={file.uid} class=\"core-upload__file-item\">\n <div class=\"core-upload__file-info\">\n <span class=\"core-upload__file-icon\">📄</span>\n <span\n class=\"core-upload__file-name\"\n title={file.name}\n >\n {file.name}\n </span>\n </div>\n <img onClick={() => this.handleDelete(file)} src={deleteIcon} alt=\"delete\" class=\"core-upload__file-delete\" />\n </div>\n ))}\n </div>\n )}\n </div>\n );\n },\n});\n\n"],"names":["CoreUpload","name","props","action","type","String","default","accept","maxSize","Number","multiple","Boolean","fileList","Array","templateUrl","templateFileName","tips","disabled","httpRequest","Function","undefined","headers","Object","Authorization","appId","extendData","user","emits","setup","emit","uploadRef","ref","watch","newFileList","JSON","stringify","value","deep","immediate","tipsText","computed","split","map","replace","toUpperCase","join","formatFileSize","size","toFixed","beforeUpload","file","acceptTypes","trim","toLowerCase","fileExt","filename","lastDot","lastIndexOf","substring","getFileExtension","some","startsWith","includes","acceptTypesText","ElMessage","error","validateFileType","maxSizeBytes","validateFileSize","handleRemove","uploadFile","uploadFiles","response","handleError","message","handleSuccess","fileLists","handleDownloadTemplate","warning","link","document","createElement","href","download","body","appendChild","click","removeChild","handleDelete","index","findIndex","item","uid","splice","render","_createVNode","class","ElUpload","this","data","onRemove","onError","onSuccess","showFileList","trigger","ElButton","icon","src","uploadIcon","alt","_createTextVNode","tempIcon","onClick","length","key","title","deleteIcon"],"mappings":"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"}
@@ -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"},extendData:{type:Object,default:()=>({user:"abc-123"})},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"},headers:{type:Object,default:()=>({Authorization:"Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf",appId:"9a673565-d4f6-4382-bc67-f1beb07df435"})},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}},emits:["cancel","submit","sceneChange","update:scene"],setup(a,{emit:s}){const r=e.useTemplateRef("editorSender"),o=e.useTemplateRef("editorSenderWrapper"),d=e.useTemplateRef("fileUpload"),c=e.ref((()=>{if(a.scene){const e=a.sceneList.find(e=>e.id===a.scene);if(e)return e}return a.sceneList[0]})()),p=e.ref(!0),u=e.ref([]),m=e.ref(a.tagList[0]);e.watch(()=>a.agentName,t=>{e.nextTick(()=>{var e;const a=null==(e=o.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=r.value)||e.clear(),null==(a=r.value)||a.setText(t)})}),e.watch(()=>a.scene,e=>{if(e){const t=a.sceneList.find(t=>t.id===e);t&&(c.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(c.value=t)}c.value=e[0]}},{immediate:!0});const v=()=>{s("cancel")},f=e=>{if(p.value||a.loading)return;const t={text:e.text,file:u.value.map(e=>e.response)};var l,n;s("submit",t),null==(l=r.value)||l.clear(),u.value=[],null==(n=d.value)||n.clearFiles()},g=()=>{n.ElNotification({title:"",message:"上传文件失败",type:"error"})},h=(e,t,a)=>{u.value=a},y=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)},x=()=>{n.ElNotification({title:"",message:"最多上传5个文件",type:"warning"})},N=({name:e})=>{var t;const a=u.value.find(t=>t.name===e);a&&(null==(t=d.value)||t.handleRemove(a))},_=(e,t)=>{u.value=t},b=()=>{var e;const t=null==(e=r.value)?void 0:e.getCurrentValue();f(t)};return{isEmpty:p,fileList:u,activeTag:m,cancelHandler:v,submitHandler:f,changeHandler:()=>{var e,t;p.value=null==(t=null==(e=r.value)?void 0:e.chatState)?void 0:t.isEmpty},handleUploadError:g,handleUploadSuccess:h,handleUploadBefore:y,handleUploadExceed:x,removeFile:N,handleUploadRemove:_,submitBtnClick:b,getSlots:()=>{const r={"action-list":()=>e.createVNode("div",{class:"sender-action-wrapper"},[e.createVNode("div",{class:"sender-action-left"},[e.createVNode(n.ElUpload,{ref:"fileUpload",disabled:u.value.length>5,action:a.actionUrl,"show-file-list":!1,multiple:!0,limit:a.limit-u.value.length,data:a.extendData,beforeUpload:y,headers:a.headers,onError:g,onSuccess:h,onExceed:x,onRemove:_,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:c.value.id===t.id?"scene-item active":"scene-item",onClick:()=>{return e=t,c.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:v},null):e.createVNode("div",{class:{"sender-btn":!0,active:!p.value},onClick:b},null)])};return(u.value.length>0||a.tagList.length>0)&&(r.header=()=>e.createVNode("div",{class:"sender-header-wrapper"},[e.createVNode("div",{class:"sender-file-list"},[u.value.map(a=>e.createVNode(t.FilesCard,{name:a.name,"show-del-icon":!0,status:"done",onDelete:N},null))]),e.createVNode("div",{class:"tag-list-wrapper"},[a.tagList.map(t=>e.createVNode("span",{class:m.value.id===t.id?"tag-item active":"tag-item",onClick:()=>{m.value=t}},[t.name]))])])),r}}},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:""}},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;
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 },\n emits: ['cancel', 'submit', 'sceneChange', 'update:scene'],\n setup(props, { emit }) {\n const editorSender = useTemplateRef<typeof EditorSender>('editorSender');\n const editorSenderWrapper = useTemplateRef<HTMLElement>('editorSenderWrapper');\n const fileUpload = useTemplateRef<typeof ElUpload>('fileUpload');\n \n // 初始化 activeScene:优先使用传入的 scene prop,否则使用 sceneList 的第一个\n const getInitialScene = () => {\n if (props.scene) {\n const found = props.sceneList.find(item => item.id === props.scene);\n if (found) return found;\n }\n return props.sceneList[0];\n };\n const activeScene = ref(getInitialScene());\n\n const isEmpty = ref(true);\n const fileList = ref<UploadFiles>([]);\n const activeTag = ref(props.tagList[0]);\n\n watch(() => props.agentName, (val) => {\n nextTick(() => {\n const target = editorSenderWrapper.value?.querySelector('.el-editor-sender-chat-room');\n target?.setAttribute('datatype', val)\n })\n }, {\n immediate: true\n });\n\n watch(() => props.inputData, (val) => {\n nextTick(() => {\n editorSender.value?.clear() as SubmitResult;\n editorSender.value?.setText(val)\n })\n })\n\n // 监听外部传入的 scene prop 变化\n watch(() => props.scene, (val) => {\n if (val) {\n const found = props.sceneList.find(item => item.id === val);\n if (found) {\n activeScene.value = found;\n }\n }\n });\n\n watch(() => props.sceneList, (val) => {\n if (val.length > 0) {\n // 如果当前 scene prop 存在,优先使用它;否则使用第一个\n if (props.scene) {\n const found = val.find(item => item.id === props.scene);\n if (found) {\n activeScene.value = found;\n return;\n }\n }\n activeScene.value = val[0];\n }\n }, {\n immediate: true\n });\n\n const cancelHandler = () => {\n emit('cancel')\n }\n\n const initSender = () => {\n editorSender.value?.clear() as SubmitResult;\n fileList.value = [];\n fileUpload.value?.clearFiles();\n }\n\n const submitHandler = (val: SubmitResult) => {\n if (isEmpty.value || props.loading) return;\n const res = {\n text: val.text,\n file: fileList.value.map((item) => item.response)\n }\n emit('submit', res)\n initSender()\n }\n\n const changeHandler = () => {\n isEmpty.value = editorSender.value?.chatState?.isEmpty;\n }\n\n const handleUploadError = () => {\n ElNotification({\n title: '',\n message: '上传文件失败',\n type: 'error',\n })\n }\n\n const handleUploadSuccess = (response, file, list: UploadFiles) => {\n fileList.value = list;\n }\n\n const isValidMimeType = (mimeType: string) => {\n // 包含所有有效MIME类型的集合\n const validTypes = new Set([\n 'text/plain',\n 'text/markdown', // 非标准但常见的markdown类型\n 'application/pdf',\n 'text/html',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'message/rfc822',\n 'application/vnd.ms-outlook',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint',\n 'application/xml',\n 'text/xml',\n 'application/epub+zip',\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml'\n ]);\n\n // 去除可能的空格并转为小写后检查\n return validTypes.has(mimeType?.trim().toLowerCase());\n }\n\n const handleUploadBefore = (file: File) => {\n if (!isValidMimeType(file.type)) {\n ElNotification({\n title: '',\n message: '无法解析上传',\n type: 'warning',\n })\n return false;\n }\n const isImg = file.type.includes('image');\n const isDoc = !isImg;\n const isLt15M = file.size / 1024 / 1024 < 15;\n const isLt10M = file.size / 1024 / 1024 < 10;\n if (isDoc && !isLt15M) {\n ElNotification({\n title: '',\n message: '上传文档大小不能超过 15MB!',\n type: 'warning',\n })\n return false;\n }\n if (isImg && !isLt10M) {\n ElNotification({\n title: '',\n message: '上传图片大小不能超过 10MB!',\n type: 'warning',\n })\n return false;\n }\n return true;\n }\n\n const handleUploadExceed = () => {\n ElNotification({\n title: '',\n message: `最多上传5个文件`,\n type: 'warning',\n })\n }\n\n // 删除文件\n const removeFile = ({ name }: FilesCardProps) => {\n const target = fileList.value.find((item) => item.name === name);\n if (target) {\n fileUpload.value?.handleRemove(target);\n }\n }\n\n const handleUploadRemove = (file, files) => {\n fileList.value = files;\n }\n\n const submitBtnClick = () => {\n const context = editorSender.value?.getCurrentValue() as SubmitResult;\n submitHandler(context);\n }\n\n const triggerSceneChange = (scene: {\n id: string,\n name: string,\n }) => {\n activeScene.value = scene;\n emit('sceneChange', scene);\n emit('update:scene', scene.id);\n }\n\n const getSlots = () => {\n const slots = {\n 'action-list': () => (\n <div class=\"sender-action-wrapper\">\n <div class=\"sender-action-left\">\n <ElUpload\n ref=\"fileUpload\"\n disabled={fileList.value.length > 5}\n action={props.actionUrl}\n show-file-list={false}\n multiple\n limit={props.limit - fileList.value.length}\n data={props.extendData}\n beforeUpload={handleUploadBefore}\n headers={props.headers}\n onError={handleUploadError}\n onSuccess={handleUploadSuccess}\n onExceed={handleUploadExceed}\n onRemove={handleUploadRemove}\n accept={props.acceptFileType}\n >\n <ElIcon\n class=\"sender-file-icon\"\n >\n <Paperclip />\n </ElIcon>\n </ElUpload>\n {\n props.sceneList.length > 0 ? (\n <>\n <div class=\"split-line\"></div>\n <div class=\"scene-list\">\n {\n props.sceneList.map((item) => (\n <span \n class={activeScene.value.id === item.id ? 'scene-item active' : 'scene-item'}\n onClick={() => triggerSceneChange(item)}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </>\n ) : null\n }\n </div>\n {\n props.loading ?\n <LoadingBtn\n class='sender-cancel'\n onCancel={cancelHandler}\n /> :\n <div\n class={{ 'sender-btn': true, 'active': !isEmpty.value }}\n onClick={submitBtnClick}\n >\n </div>\n }\n </div>\n ),\n }\n if (fileList.value.length > 0 || props.tagList.length > 0) {\n slots['header'] = () => {\n return (\n <div class=\"sender-header-wrapper\">\n <div\n class=\"sender-file-list\"\n >\n {\n fileList.value.map((item) => (\n <FilesCard\n name={item.name}\n show-del-icon\n status=\"done\"\n onDelete={removeFile}\n />\n ))\n }\n </div>\n <div class=\"tag-list-wrapper\">\n {\n props.tagList.map((item) => (\n <span\n class={activeTag.value.id === item.id ? 'tag-item active' : 'tag-item'}\n onClick={() => {\n activeTag.value = item;\n }}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </div>\n )\n }\n }\n\n return slots;\n }\n\n return {\n isEmpty,\n fileList,\n activeTag,\n cancelHandler,\n submitHandler,\n changeHandler,\n handleUploadError,\n handleUploadSuccess,\n handleUploadBefore,\n handleUploadExceed,\n removeFile,\n handleUploadRemove,\n submitBtnClick,\n getSlots,\n };\n },\n\n render() {\n return (\n <div\n class=\"editor-sender-wrapper\"\n ref=\"editorSenderWrapper\"\n >\n <EditorSender\n ref=\"editorSender\"\n variant=\"updown\"\n loading={this.loading}\n placeholder={this.placeholder}\n activeTag={this.activeTag}\n onSubmit={this.submitHandler}\n onCancel={this.cancelHandler}\n onChange={this.changeHandler}\n custom-style={this.customStyle}\n >\n {\n this.getSlots()\n }\n\n </EditorSender>\n </div>\n );\n }\n});\n"],"names":["index","props","loading","type","Boolean","default","actionUrl","String","extendData","Object","user","acceptFileType","headers","Authorization","appId","agentName","limit","Number","customStyle","maxHeight","inputData","placeholder","tagList","Array","id","name","sceneList","scene","undefined","emits","setup","emit","editorSender","useTemplateRef","editorSenderWrapper","fileUpload","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":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/editor-sender/index.tsx"],"sourcesContent":["import { defineComponent, ref, computed, useTemplateRef, watch, nextTick } from 'vue';\nimport { FilesCard } from 'vue-element-plus-x';\nimport EditorSender from './source/index.vue';\nimport { Paperclip } from '@element-plus/icons-vue'\nimport { ElIcon, ElUpload, ElNotification, UploadFiles, ElButton, ElTag } from 'element-plus'\nimport LoadingBtn from './LoadingButton/index.vue'\n\nimport './style/index.less'\nimport { SubmitResult, TagInfo } from 'vue-element-plus-x/types/EditorSender';\nimport { FilesCardProps } from 'vue-element-plus-x/types/FilesCard';\n\nexport default defineComponent({\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n actionUrl: {\n type: String,\n default: '/openapi/v1/app/files/upload',\n },\n // extendData: {\n // type: Object,\n // default: () => ({\n // \"user\": \"abc-123\",\n // }),\n // },\n acceptFileType: {\n type: String,\n default: '.txt,.md,.mdx,.markdown,.pdf,.html,.xlsx,.xls,.doc,.docx,.csv,.eml,.msg,.pptx,.ppt,.xml,.epub,.jpg,.jpeg,.png,.gif,.webp,.svg'\n },\n // headers: {\n // type: Object,\n // default: () => ({\n // Authorization: 'Bearer ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf',\n // appId: '9a673565-d4f6-4382-bc67-f1beb07df435'\n // }),\n // },\n agentName: {\n type: String,\n default: '知识问答智能体',\n },\n limit: {\n type: Number,\n default: 5,\n },\n customStyle: {\n type: Object,\n default: () => ({\n maxHeight: '75px'\n }),\n },\n inputData: {\n type: String,\n default: '',\n },\n placeholder: {\n type: String,\n default: '请尝试输入任务、问题或想法,我会帮你搞定',\n },\n tagList: {\n type: Array<TagInfo>,\n default: () => ([\n {\n id: '1',\n name: '问产品',\n },\n {\n id: '2',\n name: '问品类',\n },\n {\n id: '3',\n name: '问品牌',\n },\n {\n id: '4',\n name: '找物料',\n },\n {\n id: '5',\n name: '问知识',\n },\n {\n id: '6',\n name: '遇客诉',\n }\n ])\n },\n sceneList: {\n type: Array<{\n id: string,\n name: string,\n }>,\n default: () => ([\n {\n id: 'ANC',\n name: 'ANC',\n },\n {\n id: 'BNC',\n name: 'BNC',\n },\n ])\n },\n scene: {\n type: String,\n default: undefined,\n },\n user: {\n type: String,\n default: '',\n },\n authToken: {\n type: String,\n default: '',\n },\n appId: {\n type: String,\n default: '',\n },\n },\n emits: ['cancel', 'submit', 'sceneChange', 'update:scene'],\n setup(props, { emit }) {\n const editorSender = useTemplateRef<typeof EditorSender>('editorSender');\n const editorSenderWrapper = useTemplateRef<HTMLElement>('editorSenderWrapper');\n const fileUpload = useTemplateRef<typeof ElUpload>('fileUpload');\n const headers = computed(() => {\n return {\n Authorization: `Bearer ${props.authToken}`,\n appId: props.appId,\n }\n })\n const extendData = computed(() => {\n return {\n user: props.user,\n }\n })\n \n // 初始化 activeScene:优先使用传入的 scene prop,否则使用 sceneList 的第一个\n const getInitialScene = () => {\n if (props.scene) {\n const found = props.sceneList.find(item => item.id === props.scene);\n if (found) return found;\n }\n return props.sceneList[0];\n };\n const activeScene = ref(getInitialScene());\n\n const isEmpty = ref(true);\n const fileList = ref<UploadFiles>([]);\n const activeTag = ref(props.tagList[0]);\n\n watch(() => props.agentName, (val) => {\n nextTick(() => {\n const target = editorSenderWrapper.value?.querySelector('.el-editor-sender-chat-room');\n target?.setAttribute('datatype', val)\n })\n }, {\n immediate: true\n });\n\n watch(() => props.inputData, (val) => {\n nextTick(() => {\n editorSender.value?.clear() as SubmitResult;\n editorSender.value?.setText(val)\n })\n })\n\n // 监听外部传入的 scene prop 变化\n watch(() => props.scene, (val) => {\n if (val) {\n const found = props.sceneList.find(item => item.id === val);\n if (found) {\n activeScene.value = found;\n }\n }\n });\n\n watch(() => props.sceneList, (val) => {\n if (val.length > 0) {\n // 如果当前 scene prop 存在,优先使用它;否则使用第一个\n if (props.scene) {\n const found = val.find(item => item.id === props.scene);\n if (found) {\n activeScene.value = found;\n return;\n }\n }\n activeScene.value = val[0];\n }\n }, {\n immediate: true\n });\n\n const cancelHandler = () => {\n emit('cancel')\n }\n\n const initSender = () => {\n editorSender.value?.clear() as SubmitResult;\n fileList.value = [];\n fileUpload.value?.clearFiles();\n }\n\n const submitHandler = (val: SubmitResult) => {\n if (isEmpty.value || props.loading) return;\n const res = {\n text: val.text,\n file: fileList.value.map((item) => item.response)\n }\n emit('submit', res)\n initSender()\n }\n\n const changeHandler = () => {\n isEmpty.value = editorSender.value?.chatState?.isEmpty;\n }\n\n const handleUploadError = () => {\n ElNotification({\n title: '',\n message: '上传文件失败',\n type: 'error',\n })\n }\n\n const handleUploadSuccess = (response, file, list: UploadFiles) => {\n fileList.value = list;\n }\n\n const isValidMimeType = (mimeType: string) => {\n // 包含所有有效MIME类型的集合\n const validTypes = new Set([\n 'text/plain',\n 'text/markdown', // 非标准但常见的markdown类型\n 'application/pdf',\n 'text/html',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'message/rfc822',\n 'application/vnd.ms-outlook',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.ms-powerpoint',\n 'application/xml',\n 'text/xml',\n 'application/epub+zip',\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml'\n ]);\n\n // 去除可能的空格并转为小写后检查\n return validTypes.has(mimeType?.trim().toLowerCase());\n }\n\n const handleUploadBefore = (file: File) => {\n if (!isValidMimeType(file.type)) {\n ElNotification({\n title: '',\n message: '无法解析上传',\n type: 'warning',\n })\n return false;\n }\n const isImg = file.type.includes('image');\n const isDoc = !isImg;\n const isLt15M = file.size / 1024 / 1024 < 15;\n const isLt10M = file.size / 1024 / 1024 < 10;\n if (isDoc && !isLt15M) {\n ElNotification({\n title: '',\n message: '上传文档大小不能超过 15MB!',\n type: 'warning',\n })\n return false;\n }\n if (isImg && !isLt10M) {\n ElNotification({\n title: '',\n message: '上传图片大小不能超过 10MB!',\n type: 'warning',\n })\n return false;\n }\n return true;\n }\n\n const handleUploadExceed = () => {\n ElNotification({\n title: '',\n message: `最多上传5个文件`,\n type: 'warning',\n })\n }\n\n // 删除文件\n const removeFile = ({ name }: FilesCardProps) => {\n const target = fileList.value.find((item) => item.name === name);\n if (target) {\n fileUpload.value?.handleRemove(target);\n }\n }\n\n const handleUploadRemove = (file, files) => {\n fileList.value = files;\n }\n\n const submitBtnClick = () => {\n const context = editorSender.value?.getCurrentValue() as SubmitResult;\n submitHandler(context);\n }\n\n const triggerSceneChange = (scene: {\n id: string,\n name: string,\n }) => {\n activeScene.value = scene;\n emit('sceneChange', scene);\n emit('update:scene', scene.id);\n }\n\n const getSlots = () => {\n const slots = {\n 'action-list': () => (\n <div class=\"sender-action-wrapper\">\n <div class=\"sender-action-left\">\n <ElUpload\n ref=\"fileUpload\"\n disabled={fileList.value.length > 5}\n action={props.actionUrl}\n show-file-list={false}\n multiple\n limit={props.limit - fileList.value.length}\n data={extendData.value}\n beforeUpload={handleUploadBefore}\n headers={headers.value}\n onError={handleUploadError}\n onSuccess={handleUploadSuccess}\n onExceed={handleUploadExceed}\n onRemove={handleUploadRemove}\n accept={props.acceptFileType}\n >\n <ElIcon\n class=\"sender-file-icon\"\n >\n <Paperclip />\n </ElIcon>\n </ElUpload>\n {\n props.sceneList.length > 0 ? (\n <>\n <div class=\"split-line\"></div>\n <div class=\"scene-list\">\n {\n props.sceneList.map((item) => (\n <span \n class={activeScene.value.id === item.id ? 'scene-item active' : 'scene-item'}\n onClick={() => triggerSceneChange(item)}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </>\n ) : null\n }\n </div>\n {\n props.loading ?\n <LoadingBtn\n class='sender-cancel'\n onCancel={cancelHandler}\n /> :\n <div\n class={{ 'sender-btn': true, 'active': !isEmpty.value }}\n onClick={submitBtnClick}\n >\n </div>\n }\n </div>\n ),\n }\n if (fileList.value.length > 0 || props.tagList.length > 0) {\n slots['header'] = () => {\n return (\n <div class=\"sender-header-wrapper\">\n <div\n class=\"sender-file-list\"\n >\n {\n fileList.value.map((item) => (\n <FilesCard\n name={item.name}\n show-del-icon\n status=\"done\"\n onDelete={removeFile}\n />\n ))\n }\n </div>\n <div class=\"tag-list-wrapper\">\n {\n props.tagList.map((item) => (\n <span\n class={activeTag.value.id === item.id ? 'tag-item active' : 'tag-item'}\n onClick={() => {\n activeTag.value = item;\n }}\n >\n {item.name}\n </span>\n ))\n }\n </div>\n </div>\n )\n }\n }\n\n return slots;\n }\n\n return {\n isEmpty,\n fileList,\n activeTag,\n cancelHandler,\n submitHandler,\n changeHandler,\n handleUploadError,\n handleUploadSuccess,\n handleUploadBefore,\n handleUploadExceed,\n removeFile,\n handleUploadRemove,\n submitBtnClick,\n getSlots,\n };\n },\n\n render() {\n return (\n <div\n class=\"editor-sender-wrapper\"\n ref=\"editorSenderWrapper\"\n >\n <EditorSender\n ref=\"editorSender\"\n variant=\"updown\"\n loading={this.loading}\n placeholder={this.placeholder}\n activeTag={this.activeTag}\n onSubmit={this.submitHandler}\n onCancel={this.cancelHandler}\n onChange={this.changeHandler}\n custom-style={this.customStyle}\n >\n {\n this.getSlots()\n }\n\n </EditorSender>\n </div>\n );\n }\n});\n"],"names":["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":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bubble-list/index.js"),r=require("./x-markdown/index.js"),i=require("./file-preview/index.js"),o=require("./editor-sender/index.js"),s=require("./file-card/index.js"),t=require("./core-text/index.js"),x=require("./core-tips/index.js"),d=require("./core-result/index.js"),n=require("./core-table/index.js"),u=require("./core-chart/index.js"),p=require("./core-card/index.js");exports.BubbleList=e,exports.XMarkdown=r,exports.FilePreview=i,exports.EditorSender=o,exports.FileCard=s,exports.CoreText=t,exports.CoreTips=x,exports.CoreResult=d,exports.CoreTable=n,exports.CoreChart=u,exports.CoreCard=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bubble-list/index.js"),r=require("./x-markdown/index.js"),i=require("./file-preview/index.js"),o=require("./editor-sender/index.js"),s=require("./file-card/index.js"),t=require("./core-text/index.js"),x=require("./core-tips/index.js"),d=require("./core-result/index.js"),u=require("./core-table/index.js"),n=require("./core-chart/index.js"),p=require("./core-card/index.js"),l=require("./core-upload/index.js");exports.BubbleList=e,exports.XMarkdown=r,exports.FilePreview=i,exports.EditorSender=o,exports.FileCard=s,exports.CoreText=t,exports.CoreTips=x,exports.CoreResult=d,exports.CoreTable=u,exports.CoreChart=n,exports.CoreCard=p,exports.CoreUpload=l;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),r=require("../../_virtual/debounce.js"),t=require("../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.24_typescript@5.6.3_/node_modules/@vueuse/core/dist/index.js"),s=require("element-plus");/* 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/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("./utils/mockStream.js"),n=require("./utils/parseCorePilotSchema.js"),o=require("./utils/animation.js"),i=require("../core-text/index.js"),a=require("../core-tips/index.js"),u=require("../core-result/index.js"),d=require("../core-table/index.js"),p=require("../core-chart/index.js"),m=require("../core-card/index.js");;/* empty css */const c=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"),v=require("../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js"),h=require("../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js"),_=require("../../node_modules/.pnpm/remark-breaks@4.0.0/node_modules/remark-breaks/lib/index.js"),f=require("../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.js"),g=require("../../node_modules/.pnpm/remark-math@6.0.0/node_modules/remark-math/lib/index.js"),y=require("../../node_modules/.pnpm/remark-gemoji@8.0.0/node_modules/remark-gemoji/lib/index.js"),k=require("../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js"),b=require("../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js"),x=require("../../node_modules/.pnpm/rehype-katex@7.0.1/node_modules/rehype-katex/lib/index.js"),q=require("../../node_modules/.pnpm/rehype-stringify@10.0.1/node_modules/rehype-stringify/lib/index.js"),j=e.defineComponent({name:"XMarkdown",props:{text:{type:String,default:""},autoHideThinking:{type:Boolean,default:!0},typing:{type:Boolean,default:!1},speed:{type:Number,default:200},isHistoryMessage:{type:Boolean,default:!1},historyInputs:{type:Object,default:()=>({})}},expose:["getContentText"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","refConfigUpdate","downloadFile","coreSubmit"],setup(j,{emit:N}){const E=e.useTemplateRef("x-markdown-container"),w=e.ref(Date.now()),A=e.ref(-1/0),C=e.ref(""),S=new Set,T=e.ref(!1),P=e.ref(!1),R=e.ref([]),L=t.useTemplateRefsList(),F=e.ref(0);let V=0;const $=e.ref(null),D=e.ref(!1),H=e.ref(l.createStreamGenerator(e=>{C.value=C.value+e},j.speed)),U=e.computed(()=>{if(!j.autoHideThinking)return C.value;let e=C.value;if(e=(e=>{let r=!0;return e.replace(/(<summary[^>]*>[\s\S]*?<\/summary>)\s*(<div>[\s\S]*?)(<\/div>|$)/g,(e,t,s,l)=>{const n="</div>"===l;return`${t.replace(/(<summary)/g,e=>r?(r=!1,e):`<summary class="${n?"loaded":"loading"}"`)}\n${s}${l}`})})(e),e=e.replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g," "),e.includes("</details>")){A.value===-1/0&&(A.value=Date.now());const r=(e=>{const r=/<div hidden>([\s\S]*?)<\/div>/g.exec(e);if(!r)return[];const t=r[1];try{return JSON.parse(t)}catch(s){return[]}})(e);return e.replace(/<details open>([\s\S]*?)<\/details>/g,(e,t)=>`<details>${t=(t=t.replace(/<summary>([\s\S]*?)<\/summary>/,(e,t)=>{const s=((A.value-w.value)/1e3).toFixed(0);return`<summary style="color: #8D90A0;font-weight: 300; font-size: 16px;">\n 已完成思考 ${s>"0"?s+"s":""} ${r.length?`<span style="display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;"></span> 引用文档:${null==r?void 0:r.length} 个`:""}\n </summary>`})).replace(/<summary>完成<\/summary>/,'<summary class="loaded">完成</summary>')}</details>`)}return e}),I=e=>{const{properties:r={},parentScope:t}=e,{disabled:s}=r;return!!s||"form"===t&&(j.isHistoryMessage&&!D.value)};e.watch(()=>[j.text,j.typing],(e,r)=>{var t,s,l,n;const[o,i]=e,[a]=r||[];if(o.startsWith(a)||(null==(t=H.value)||t.reset(),C.value=""),o){if(null==(s=H.value)||s.update(o),!i)return void(null==(l=H.value)||l.stop());const e=/<summary>资料整合<\/summary>\r?\n(.|\s)+?/;if(!P.value&&e.test(o))return P.value=!0,void(null==(n=H.value)||n.setSpeed(500))}},{immediate:!0});const O=e.ref([]),W=r(()=>{(()=>{var e;const r=null==(e=E.value)?void 0:e.querySelector("div[hidden]");O.value=JSON.parse((null==r?void 0:r.textContent)||"[]"),N("refConfigUpdate",O.value)})()},100),B=e.ref(null);e.watch(()=>C.value,W,{immediate:!0}),e.watch(B,(e,r)=>{if(e!==r)if(e){const r=e.getAttribute("dataherf"),t=O.value.find(e=>e.link===r);N("hoverActiveRefTrigger",t)}else N("hoverActiveRefTrigger","")});const J=e=>{const r=e.target;if("SPAN"===r.tagName){const e=r.classList.contains("x-markdown-split"),t=r.classList.contains("x-markdown-sub");if(e||t)return t?r:r.parentElement}},M=e=>{const r=J(e);B.value=r||null},G=e=>{if("A"===e.target.tagName)return void(async e=>{e.stopPropagation(),e.preventDefault();const r=e.target,t=r.getAttribute("href"),l=r.getAttribute("data-id")||r.getAttribute("dataid"),n=r.getAttribute("data-name")||r.getAttribute("dataname");if(!t)return;const o=t.split(".").pop();l?(s.ElMessage("文件下载中..."),N("downloadFile",{title:n,id:l,ext:o,href:t})):window.open(t,"_blank")})(e);const r=J(e);if(r){const e=r.getAttribute("dataherf"),t=JSON.parse(r.getAttribute("datahighlight")||"[]"),s=Number(r.getAttribute("datanumber")),l=r.getAttribute("id"),n={...O.value.find(r=>r.link===e),highlight:t,page:s,id:l};N("clickActiveRefTrigger",n)}};e.onMounted(()=>{E.value.addEventListener("mouseover",M),E.value.addEventListener("click",G)}),e.onBeforeUnmount(()=>{E.value.removeEventListener("mouseover",M),E.value.addEventListener("click",G)});const z=()=>{if(!E.value)return;E.value.querySelectorAll("img:not([data-processed='true'])").forEach(e=>{S.has(e)||(S.add(e),X(e),e.complete?K(e):(e.addEventListener("load",()=>K(e)),e.addEventListener("error",()=>Q(e))))})},X=e=>{const r=e.parentElement.offsetWidth;if(e.naturalWidth>r&&(e.style.maxWidth="100%"),e.naturalWidth&&e.naturalHeight){const t=e.naturalHeight/e.naturalWidth;e.style.maxHeight=`${Math.min(500,r*t)}px`}},K=e=>{S.delete(e),e.setAttribute("data-processed","true"),e.classList.add("loaded"),e.style.opacity="1",e.removeEventListener("load",K),e.removeEventListener("error",Q)},Q=e=>{S.delete(e),e.setAttribute("data-processed","true"),e.classList.add("load-error"),e.style.maxHeight="200px",e.removeEventListener("load",K),e.removeEventListener("error",Q)},Y=v.unified().use(h).use(_).use(f,{singleTilde:!1}).use(g).use(y).use(k,{allowDangerousHtml:!0}).use(b).use(x).use(q),Z=(e,r)=>{var t;if(e&&"object"==typeof e){if("form"===e.type){const s={...(null==(t=e.properties)?void 0:t.data)||{},...j.historyInputs||{}};return void r.push(s)}Array.isArray(e.children)&&e.children.forEach(e=>{Z(e,r)})}};e.watch(()=>U.value,async r=>{V=0;const t=await Y.run(Y.parse(r)),s=(e=>{const r=[],t=[],s=e=>{e&&("pre"===e.tagName&&t.push(e),Array.isArray(e.children)&&e.children.forEach(s))};return Array.isArray(e.children)&&e.children.forEach(s),t.forEach(e=>{var t,s,l,n,o;const i=null==(t=e.children)?void 0:t.find(e=>"code"===e.tagName);if(null==(l=null==(s=null==i?void 0:i.properties)?void 0:s.className)?void 0:l.includes("language-CorePilot"))try{const e=(null==(o=null==(n=i.children)?void 0:n[0])?void 0:o.value)||"";if(e){const t=JSON.parse(e);Z(t,r)}}catch(a){console.error("Failed to parse CorePilot schema:",a)}}),r})(t);R.value=s,await e.nextTick(),$.value=t,e.nextTick(z),e.nextTick(()=>{var e;const r=null==(e=E.value)?void 0:e.querySelector("details");(null==r?void 0:r.querySelector("summary"))&&!T.value&&(T.value=!0,new o.Accordion(r))})},{immediate:!0});const ee=()=>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"})]),re=(r,t,l)=>{var o,v,h,_,f,g,y,k,b,x,q,j,E,w;if(!r)return null;let A=[];switch(["sub","pre","text","ElForm"].includes(r.tagName)||(A=(null==(v=null==(o=r.children)?void 0:o.map)?void 0:v.call(o,e=>re(e,t)))||[]),r.type){case"root":return e.h("div",{class:"markdown-body"},e.h(s.ElConfigProvider,{locale:c},A));case"element":if("sub"===r.tagName){const s=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...r.children],l=null==s?void 0:s.map(e=>re(e,t));return e.h("span",{...r.properties,class:"x-markdown-sub"},l)}if("span"===r.tagName)return e.h("span",{...r.properties},A);if("img"===r.tagName)return e.h("img",{...r.properties,class:"markdown-image","data-processed":"false"});if("a"===r.tagName){const t=(null==(h=r.properties)?void 0:h.href)||"",s=t?t.split(".").pop():null;return e.h("a",{...r.properties,class:"file-link","data-file-type":s},A)}if("ElTimeline"===r.tagName)return e.h(s.ElTimeline,{...r.properties},A);if("table"===r.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",A)]);if("view"===r.tagName)return e.h("div",{class:"custom-view-container"},[A[F.value]]);if("ElRow"===r.tagName)return e.h(s.ElRow,{...r.properties},A);if("ElCol"===r.tagName)return e.h(s.ElCol,{...r.properties},A);if("ElCard"===r.tagName)return e.h(s.ElCard,{...r.properties},A);if("CoreCard"===r.tagName)return e.h(m,{...r.properties},A);if("ElForm"===r.tagName){const l=null==(_=r.children)?void 0:_.map(e=>re(e,V));return V++,e.h(s.ElForm,{ref:L.value.set,model:R.value[t],...r.properties,disabled:I(r)},l)}if("ElFormItem"===r.tagName)return e.h(s.ElFormItem,{...r.properties},A);if("ElButton"===r.tagName){let n=null==(f=r.properties)?void 0:f.payload;return"table"===r.parentScope&&(n=l),e.h(s.ElButton,{...r.properties,disabled:I(r),onClick:()=>{var e;(async(e,r,t,s)=>{var l;if("inner_next"===r)return void(F.value+=1);if("inner_prev"===r)return void(F.value-=1);if("inner_rewrite"===r)return D.value=!0,void console.log("isRewrite",D.value);let n={action:r,payload:{}};t&&"form"!==s?n={action:r,payload:t}:(await(null==(l=L.value[e])?void 0:l.validate()),n={action:r,payload:{...R.value[e],...t}}),D.value&&r.startsWith("core_")&&(D.value=!1),N("coreSubmit",n)})(t,null==(e=r.properties)?void 0:e.action,n,r.parentScope)}},A)}if("ElSelect"===r.tagName)return e.h(s.ElSelect,{...r.properties,disabled:I(r),modelValue:R.value[t][null==(g=r.properties)?void 0:g.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},A);if("ElDatePicker"===r.tagName)return e.h(s.ElDatePicker,{...r.properties,disabled:I(r),modelValue:R.value[t][null==(y=r.properties)?void 0:y.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},A);if("ElInput"===r.tagName)return e.h(s.ElInput,{...r.properties,disabled:I(r),modelValue:R.value[t][null==(k=r.properties)?void 0:k.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},A);if("ElRadioGroup"===r.tagName)return e.h(s.ElRadioGroup,{...r.properties,disabled:I(r),modelValue:R.value[t][null==(b=r.properties)?void 0:b.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},A);if("ElRadio"===r.tagName)return e.h(s.ElRadio,{...r.properties,disabled:I(r)},A);if("ElTable"===r.tagName)return e.h(d,{...r.properties},A);if("ElTableColumn"===r.tagName)return e.h(s.ElTableColumn,{...r.properties},{default:e=>{var t,s;const l=null==(t=r.children)?void 0:t.map(r=>re(r,V,e.row)),n=null==(s=r.children)?void 0:s.findIndex(t=>{var s;return t.value===e.row[null==(s=r.properties)?void 0:s.prop]});return-1===n?l:null==l?void 0:l[n]}});if("CoreText"===r.tagName)return e.h(i,{...r.properties});if("CoreTips"===r.tagName)return e.h(a,{...r.properties});if("CoreResult"===r.tagName)return e.h(u,{...r.properties});if("CoreChart"===r.tagName)return e.h(p,{...r.properties});if("pre"===r.tagName){const t=null==(x=r.children)?void 0:x.find(e=>"code"===e.tagName);if(t&&(null==(j=null==(q=t.properties)?void 0:q.className)?void 0:j.includes("language-CorePilot"))){const r=(null==(w=null==(E=t.children)?void 0:E[0])?void 0:w.value)||"";if(!(e=>{if(!e||0===e.trim().length)return!1;const r=e.trim(),t=r[0];if("{"!==t&&"["!==t)return!1;try{return JSON.parse(r),!0}catch(s){return!1}})(r))return ee();try{const t=JSON.parse(r),s=n.parseCorePilot(t),l=re(s,V);return e.h("div",{class:"hitl-wrapper"},[l])}catch(C){return ee()}}}return e.h(r.tagName,r.properties,A);case"text":return r.value.trim();default:return null}};return e.onUpdated(()=>{V=0}),{hastToVNode:re,ast:$,container:E,renderComplete:W,isRewrite:D,getContentText:()=>{var e;return null==(e=E.value)?void 0:e.innerText}}},render(){return e.createVNode("div",{ref:"x-markdown-container",class:"x-markdown"},[this.hastToVNode(this.ast)])}});module.exports=j;
1
+ "use strict";const e=require("vue"),r=require("../../_virtual/debounce.js"),t=require("../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.24_typescript@5.6.3_/node_modules/@vueuse/core/dist/index.js"),s=require("element-plus");/* 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/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("./utils/mockStream.js"),n=require("./utils/parseCorePilotSchema.js"),o=require("./utils/animation.js"),i=require("../core-text/index.js"),a=require("../core-tips/index.js"),u=require("../core-result/index.js"),d=require("../core-table/index.js"),p=require("../core-chart/index.js"),m=require("../core-card/index.js"),c=require("../core-upload/index.js");;/* empty css */const v=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"),h=require("../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js"),_=require("../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js"),f=require("../../node_modules/.pnpm/remark-breaks@4.0.0/node_modules/remark-breaks/lib/index.js"),g=require("../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.js"),y=require("../../node_modules/.pnpm/remark-math@6.0.0/node_modules/remark-math/lib/index.js"),k=require("../../node_modules/.pnpm/remark-gemoji@8.0.0/node_modules/remark-gemoji/lib/index.js"),b=require("../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js"),x=require("../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js"),q=require("../../node_modules/.pnpm/rehype-katex@7.0.1/node_modules/rehype-katex/lib/index.js"),j=require("../../node_modules/.pnpm/rehype-stringify@10.0.1/node_modules/rehype-stringify/lib/index.js"),N=e.defineComponent({name:"XMarkdown",props:{text:{type:String,default:""},autoHideThinking:{type:Boolean,default:!0},typing:{type:Boolean,default:!1},speed:{type:Number,default:200},isHistoryMessage:{type:Boolean,default:!1},historyInputs:{type:Object,default:()=>({})},user:{type:String,default:"default"},authToken:{type:String,default:"ApiSecretKey_mEKsrCMvxNLzzUUKeQmpzaUZqwZxFyJf"},appId:{type:String,default:"9a673565-d4f6-4382-bc67-f1beb07df435"}},expose:["getContentText"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","refConfigUpdate","downloadFile","coreSubmit"],setup(N,{emit:E}){const w=e.useTemplateRef("x-markdown-container"),S=e.ref(Date.now()),A=e.ref(-1/0),C=e.ref(""),T=new Set,P=e.ref(!1),L=e.ref(!1),R=e.ref([]),F=t.useTemplateRefsList(),U=e.ref(0);let V=0;const $=e.ref(null),D=e.ref(!1),I=e.computed(()=>({Authorization:`Bearer ${N.authToken}`,appId:N.appId})),H=e.computed(()=>({user:N.user})),B=e.ref(l.createStreamGenerator(e=>{C.value=C.value+e},N.speed)),J=e.computed(()=>{if(!N.autoHideThinking)return C.value;let e=C.value;if(e=(e=>{let r=!0;return e.replace(/(<summary[^>]*>[\s\S]*?<\/summary>)\s*(<div>[\s\S]*?)(<\/div>|$)/g,(e,t,s,l)=>{const n="</div>"===l;return`${t.replace(/(<summary)/g,e=>r?(r=!1,e):`<summary class="${n?"loaded":"loading"}"`)}\n${s}${l}`})})(e),e=e.replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g," "),e.includes("</details>")){A.value===-1/0&&(A.value=Date.now());const r=(e=>{const r=/<div hidden>([\s\S]*?)<\/div>/g.exec(e);if(!r)return[];const t=r[1];try{return JSON.parse(t)}catch(s){return[]}})(e);return e.replace(/<details open>([\s\S]*?)<\/details>/g,(e,t)=>`<details>${t=(t=t.replace(/<summary>([\s\S]*?)<\/summary>/,(e,t)=>{const s=((A.value-S.value)/1e3).toFixed(0);return`<summary style="color: #8D90A0;font-weight: 300; font-size: 16px;">\n 已完成思考 ${s>"0"?s+"s":""} ${r.length?`<span style="display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;"></span> 引用文档:${null==r?void 0:r.length} 个`:""}\n </summary>`})).replace(/<summary>完成<\/summary>/,'<summary class="loaded">完成</summary>')}</details>`)}return e}),M=e=>{const{properties:r={},parentScope:t}=e,{disabled:s}=r;return!!s||"form"===t&&(N.isHistoryMessage&&!D.value)};e.watch(()=>[N.text,N.typing],(e,r)=>{var t,s,l,n;const[o,i]=e,[a]=r||[];if(o.startsWith(a)||(null==(t=B.value)||t.reset(),C.value=""),o){if(null==(s=B.value)||s.update(o),!i)return void(null==(l=B.value)||l.stop());const e=/<summary>资料整合<\/summary>\r?\n(.|\s)+?/;if(!L.value&&e.test(o))return L.value=!0,void(null==(n=B.value)||n.setSpeed(500))}},{immediate:!0});const O=e.ref([]),W=r(()=>{(()=>{var e;const r=null==(e=w.value)?void 0:e.querySelector("div[hidden]");O.value=JSON.parse((null==r?void 0:r.textContent)||"[]"),E("refConfigUpdate",O.value)})()},100),z=e.ref(null);e.watch(()=>C.value,W,{immediate:!0}),e.watch(z,(e,r)=>{if(e!==r)if(e){const r=e.getAttribute("dataherf"),t=O.value.find(e=>e.link===r);E("hoverActiveRefTrigger",t)}else E("hoverActiveRefTrigger","")});const G=e=>{const r=e.target;if("SPAN"===r.tagName){const e=r.classList.contains("x-markdown-split"),t=r.classList.contains("x-markdown-sub");if(e||t)return t?r:r.parentElement}},K=e=>{const r=G(e);z.value=r||null},Z=e=>{if("A"===e.target.tagName)return void(async e=>{e.stopPropagation(),e.preventDefault();const r=e.target,t=r.getAttribute("href"),l=r.getAttribute("data-id")||r.getAttribute("dataid"),n=r.getAttribute("data-name")||r.getAttribute("dataname");if(!t)return;const o=t.split(".").pop();l?(s.ElMessage("文件下载中..."),E("downloadFile",{title:n,id:l,ext:o,href:t})):window.open(t,"_blank")})(e);const r=G(e);if(r){const e=r.getAttribute("dataherf"),t=JSON.parse(r.getAttribute("datahighlight")||"[]"),s=Number(r.getAttribute("datanumber")),l=r.getAttribute("id"),n={...O.value.find(r=>r.link===e),highlight:t,page:s,id:l};E("clickActiveRefTrigger",n)}};e.onMounted(()=>{w.value.addEventListener("mouseover",K),w.value.addEventListener("click",Z)}),e.onBeforeUnmount(()=>{w.value.removeEventListener("mouseover",K),w.value.addEventListener("click",Z)});const Q=()=>{if(!w.value)return;w.value.querySelectorAll("img:not([data-processed='true'])").forEach(e=>{T.has(e)||(T.add(e),X(e),e.complete?Y(e):(e.addEventListener("load",()=>Y(e)),e.addEventListener("error",()=>ee(e))))})},X=e=>{const r=e.parentElement.offsetWidth;if(e.naturalWidth>r&&(e.style.maxWidth="100%"),e.naturalWidth&&e.naturalHeight){const t=e.naturalHeight/e.naturalWidth;e.style.maxHeight=`${Math.min(500,r*t)}px`}},Y=e=>{T.delete(e),e.setAttribute("data-processed","true"),e.classList.add("loaded"),e.style.opacity="1",e.removeEventListener("load",Y),e.removeEventListener("error",ee)},ee=e=>{T.delete(e),e.setAttribute("data-processed","true"),e.classList.add("load-error"),e.style.maxHeight="200px",e.removeEventListener("load",Y),e.removeEventListener("error",ee)},re=h.unified().use(_).use(f).use(g,{singleTilde:!1}).use(y).use(k).use(b,{allowDangerousHtml:!0}).use(x).use(q).use(j),te=(e,r)=>{var t;if(e&&"object"==typeof e){if("form"===e.type){const s={...(null==(t=e.properties)?void 0:t.data)||{},...N.historyInputs||{}};return void r.push(s)}Array.isArray(e.children)&&e.children.forEach(e=>{te(e,r)})}};e.watch(()=>J.value,async r=>{V=0;const t=await re.run(re.parse(r)),s=(e=>{const r=[],t=[],s=e=>{e&&("pre"===e.tagName&&t.push(e),Array.isArray(e.children)&&e.children.forEach(s))};return Array.isArray(e.children)&&e.children.forEach(s),t.forEach(e=>{var t,s,l,n,o;const i=null==(t=e.children)?void 0:t.find(e=>"code"===e.tagName);if(null==(l=null==(s=null==i?void 0:i.properties)?void 0:s.className)?void 0:l.includes("language-CorePilot"))try{const e=(null==(o=null==(n=i.children)?void 0:n[0])?void 0:o.value)||"";if(e){const t=JSON.parse(e);te(t,r)}}catch(a){console.error("Failed to parse CorePilot schema:",a)}}),r})(t);R.value=s,await e.nextTick(),$.value=t,e.nextTick(Q),e.nextTick(()=>{var e;const r=null==(e=w.value)?void 0:e.querySelector("details");(null==r?void 0:r.querySelector("summary"))&&!P.value&&(P.value=!0,new o.Accordion(r))})},{immediate:!0});const se=()=>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"})]),le=(r,t,l)=>{var o,h,_,f,g,y,k,b,x,q,j,N,w,S,A,C,T;if(!r)return null;let P=[];switch(["sub","pre","text","ElForm"].includes(r.tagName)||(P=(null==(h=null==(o=r.children)?void 0:o.map)?void 0:h.call(o,e=>le(e,t)))||[]),r.type){case"root":return e.h("div",{class:"markdown-body"},e.h(s.ElConfigProvider,{locale:v},P));case"element":if("sub"===r.tagName){const s=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...r.children],l=null==s?void 0:s.map(e=>le(e,t));return e.h("span",{...r.properties,class:"x-markdown-sub"},l)}if("span"===r.tagName)return e.h("span",{...r.properties},P);if("img"===r.tagName)return e.h("img",{...r.properties,class:"markdown-image","data-processed":"false"});if("a"===r.tagName){const t=(null==(_=r.properties)?void 0:_.href)||"",s=t?t.split(".").pop():null;return e.h("a",{...r.properties,class:"file-link","data-file-type":s},P)}if("ElTimeline"===r.tagName)return e.h(s.ElTimeline,{...r.properties},P);if("table"===r.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",P)]);if("view"===r.tagName)return e.h("div",{class:"custom-view-container"},[P[U.value]]);if("ElRow"===r.tagName)return e.h(s.ElRow,{...r.properties},P);if("ElCol"===r.tagName)return e.h(s.ElCol,{...r.properties},P);if("ElCard"===r.tagName)return e.h(s.ElCard,{...r.properties},P);if("CoreCard"===r.tagName){const s={};return(null==(f=r.slots)?void 0:f.header)&&(s.header=()=>r.slots.header.map(e=>le(e,t))),P&&P.length>0&&(s.default=()=>P),e.h(m,{...r.properties},s)}if("ElForm"===r.tagName){const l=null==(g=r.children)?void 0:g.map(e=>le(e,V));return V++,e.h(s.ElForm,{ref:F.value.set,model:R.value[t],...r.properties,disabled:M(r)},l)}if("ElFormItem"===r.tagName)return e.h(s.ElFormItem,{...r.properties},P);if("ElButton"===r.tagName){let n=null==(y=r.properties)?void 0:y.payload;return"table"===r.parentScope&&(n=l),e.h(s.ElButton,{...r.properties,disabled:M(r),onClick:()=>{var e;(async(e,r,t,s)=>{var l;if("inner_next"===r)return void(U.value+=1);if("inner_prev"===r)return void(U.value-=1);if("inner_rewrite"===r)return void(D.value=!0);let n={action:r,payload:{}};t&&"form"!==s?n={action:r,payload:t}:(await(null==(l=F.value[e])?void 0:l.validate()),n={action:r,payload:{...R.value[e],...t}}),D.value&&r.startsWith("core_")&&(D.value=!1),E("coreSubmit",n)})(t,null==(e=r.properties)?void 0:e.action,n,r.parentScope)}},P)}if("ElSelect"===r.tagName)return e.h(s.ElSelect,{...r.properties,disabled:M(r),modelValue:R.value[t][null==(k=r.properties)?void 0:k.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},P);if("ElDatePicker"===r.tagName)return e.h(s.ElDatePicker,{...r.properties,disabled:M(r),modelValue:R.value[t][null==(b=r.properties)?void 0:b.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},P);if("ElInput"===r.tagName)return e.h(s.ElInput,{...r.properties,disabled:M(r),modelValue:R.value[t][null==(x=r.properties)?void 0:x.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},P);if("ElRadioGroup"===r.tagName)return e.h(s.ElRadioGroup,{...r.properties,disabled:M(r),modelValue:R.value[t][null==(q=r.properties)?void 0:q.formProp],"onUpdate:modelValue":e=>{var s;R.value[t][null==(s=r.properties)?void 0:s.formProp]=e}},P);if("ElRadio"===r.tagName)return e.h(s.ElRadio,{...r.properties,disabled:M(r)},P);if("ElTable"===r.tagName)return e.h(d,{...r.properties},P);if("ElTableColumn"===r.tagName)return e.h(s.ElTableColumn,{...r.properties},{default:e=>{var t,s;const l=null==(t=r.children)?void 0:t.map(r=>le(r,V,e.row));console.log("children",l,r.children);const n=null==(s=r.children)?void 0:s.findIndex(t=>{var s;return t.value===e.row[null==(s=r.properties)?void 0:s.prop]&&void 0!==t.value});return-1===n?l:null==l?void 0:l[n]}});if("CoreText"===r.tagName)return e.h(i,{...r.properties});if("CoreTips"===r.tagName)return e.h(a,{...r.properties});if("CoreResult"===r.tagName)return e.h(u,{...r.properties});if("CoreChart"===r.tagName)return e.h(p,{...r.properties});if("CoreUpload"===r.tagName){if("form"===r.parentScope&&(null==(j=r.properties)?void 0:j.formProp)){const s=r.properties.formProp;return e.h(c,{headers:I.value,extendData:H.value,...r.properties,disabled:M(r),fileList:(null==(N=R.value[t])?void 0:N[s])||[],"onUpdate:fileList":e=>{R.value[t]||(R.value[t]={}),R.value[t].__files__||(R.value[t].__files__={}),R.value[t].__files__[s]=e,R.value[t][s]=e}})}return e.h(c,{...r.properties,disabled:M(r)})}if("pre"===r.tagName){const t=null==(w=r.children)?void 0:w.find(e=>"code"===e.tagName);if(t&&(null==(A=null==(S=t.properties)?void 0:S.className)?void 0:A.includes("language-CorePilot"))){const r=(null==(T=null==(C=t.children)?void 0:C[0])?void 0:T.value)||"";if(!(e=>{if(!e||0===e.trim().length)return!1;const r=e.trim(),t=r[0];if("{"!==t&&"["!==t)return!1;try{return JSON.parse(r),!0}catch(s){return!1}})(r))return se();try{const t=JSON.parse(r),s=n.parseCorePilot(t),l=le(s,V);return e.h("div",{class:"hitl-wrapper"},[l])}catch(L){return se()}}}return e.h(r.tagName,r.properties,P);case"text":return r.value.trim();default:return null}};return e.onUpdated(()=>{V=0}),{hastToVNode:le,ast:$,container:w,renderComplete:W,isRewrite:D,getContentText:()=>{var e;return null==(e=w.value)?void 0:e.innerText}}},render(){return e.createVNode("div",{ref:"x-markdown-container",class:"x-markdown"},[this.hastToVNode(this.ast)])}});module.exports=N;
2
2
  //# sourceMappingURL=index.js.map