@core-pilot/client-vue 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/client-vue.css +1 -1
- package/dist/cjs/components/core-chart/index.js +2 -0
- package/dist/cjs/components/core-chart/index.js.map +1 -0
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/x-markdown/index.js +1 -1
- package/dist/cjs/components/x-markdown/index.js.map +1 -1
- package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js +1 -1
- package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/client-vue.css +1 -1
- package/dist/es/components/core-chart/index.js +130 -0
- package/dist/es/components/core-chart/index.js.map +1 -0
- package/dist/es/components/index.js +2 -0
- package/dist/es/components/index.js.map +1 -1
- package/dist/es/components/x-markdown/index.js +16 -6
- package/dist/es/components/x-markdown/index.js.map +1 -1
- package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js +10 -0
- package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
- package/dist/es/index.js +2 -0
- package/dist/es/index.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("vue");require("../../node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/index.js");/* empty css */const t=require("../../node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/lib/core/echarts.js"),o=e.defineComponent({name:"CoreChart",props:{autoResize:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},style:{type:Object,default:()=>({})},option:{type:Object,default:()=>({})},theme:{type:String,default:void 0}},setup(o){const n=e.ref(null),i=e.ref(null);let l=null;const s=()=>{i.value&&i.value.resize()};e.onMounted(()=>{(()=>{if(!n.value)return;const{theme:e,option:l}=o||{};i.value=t.init(n.value,"string"==typeof e?e:void 0,{renderer:"canvas"}),e&&"object"==typeof e&&(t.registerTheme("custom",e),i.value.dispose(),i.value=t.init(n.value,"custom")),l&&i.value.setOption(l),o.loading?i.value.showLoading():i.value.hideLoading()})(),n.value&&o.autoResize&&(l=new ResizeObserver(()=>{s()}),l.observe(n.value)),!1!==o.autoResize&&window.addEventListener("resize",s)}),e.onUnmounted(()=>{l&&n.value&&(l.unobserve(n.value),l.disconnect()),!1!==o.autoResize&&window.removeEventListener("resize",s),i.value&&(i.value.dispose(),i.value=null)}),e.watch(()=>o.option,()=>{(()=>{if(!i.value)return;const{option:e,loading:t}=o;e&&i.value.setOption(e,!0),t?i.value.showLoading():i.value.hideLoading()})()},{immediate:!0,deep:!0});const u=()=>{const e=o.style||{};return{width:(null==e?void 0:e.width)||"100%",height:(null==e?void 0:e.height)||"400px",minHeight:(null==e?void 0:e.minHeight)||"300px",...e}};return()=>e.createVNode("div",{class:"core-chart-container"},[e.createVNode("div",{ref:n,class:"core-chart",style:u()},null)])}});module.exports=o;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/core-chart/index.tsx"],"sourcesContent":["import { defineComponent, ref, onMounted, onUnmounted, watch, PropType, CSSProperties } from 'vue';\nimport * as echarts from 'echarts';\nimport type { EChartsOption, EChartsType } from 'echarts';\nimport './style.less';\n\nexport default defineComponent({\n name: 'CoreChart',\n props: {\n autoResize: {\n type: Boolean,\n default: true,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n style: {\n type: Object as PropType<CSSProperties>,\n default: () => ({}),\n },\n option: {\n type: Object as PropType<EChartsOption>,\n default: () => ({}),\n },\n theme: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const chartRef = ref<HTMLDivElement | null>(null);\n const chartInstance = ref<EChartsType | null>(null);\n let resizeObserver: ResizeObserver | null = null;\n\n // 初始化图表\n const initChart = () => {\n if (!chartRef.value) return;\n const { theme, option } = props || {};\n\n // 创建图表实例\n chartInstance.value = echarts.init(\n chartRef.value,\n typeof theme === 'string' ? theme : undefined,\n {\n renderer: 'canvas',\n }\n );\n\n // 设置主题(如果是对象形式)\n if (theme && typeof theme === 'object') {\n echarts.registerTheme('custom', theme);\n chartInstance.value.dispose();\n chartInstance.value = echarts.init(chartRef.value, 'custom');\n }\n\n // 设置配置项\n if (option) {\n chartInstance.value.setOption(option as EChartsOption);\n }\n\n // 处理加载状态\n if (props.loading) {\n chartInstance.value.showLoading();\n } else {\n chartInstance.value.hideLoading();\n }\n };\n\n // 更新图表\n const updateChart = () => {\n if (!chartInstance.value) return;\n const { option, loading } = props;\n\n if (option) {\n chartInstance.value.setOption(option as EChartsOption, true);\n }\n\n if (loading) {\n chartInstance.value.showLoading();\n } else {\n chartInstance.value.hideLoading();\n }\n };\n\n // 调整图表大小\n const resizeChart = () => {\n if (chartInstance.value) {\n chartInstance.value.resize();\n }\n };\n\n // 监听容器大小变化\n const observeResize = () => {\n if (!chartRef.value || !props.autoResize) return;\n\n resizeObserver = new ResizeObserver(() => {\n resizeChart();\n });\n\n resizeObserver.observe(chartRef.value);\n };\n\n // 组件挂载\n onMounted(() => {\n initChart();\n observeResize();\n\n // 监听窗口大小变化\n if (props.autoResize !== false) {\n window.addEventListener('resize', resizeChart);\n }\n });\n\n // 组件卸载\n onUnmounted(() => {\n if (resizeObserver && chartRef.value) {\n resizeObserver.unobserve(chartRef.value);\n resizeObserver.disconnect();\n }\n\n if (props.autoResize !== false) {\n window.removeEventListener('resize', resizeChart);\n }\n\n if (chartInstance.value) {\n chartInstance.value.dispose();\n chartInstance.value = null;\n }\n });\n\n // 监听配置变化\n watch(\n () => props.option,\n () => {\n // 支持异步/深度更新的场景(例如只修改 option 内部字段而不更换引用)\n updateChart();\n },\n {\n immediate: true,\n deep: true,\n }\n );\n\n // 获取容器样式\n const getContainerStyle = () => {\n const style = props.style || {};\n return {\n width: style?.width || '100%',\n height: style?.height || '400px',\n minHeight: style?.minHeight || '300px',\n ...style,\n };\n };\n\n return () => (\n <div class=\"core-chart-container\">\n <div\n ref={chartRef}\n class=\"core-chart\"\n style={getContainerStyle()}\n />\n </div>\n );\n },\n});\n\n\n"],"names":["CoreChart","name","props","autoResize","type","Boolean","default","loading","style","Object","option","theme","String","undefined","setup","chartRef","ref","chartInstance","resizeObserver","resizeChart","value","resize","onMounted","initChart","echarts","renderer","dispose","setOption","showLoading","hideLoading","ResizeObserver","observe","window","addEventListener","onUnmounted","unobserve","disconnect","removeEventListener","watch","updateChart","immediate","deep","getContainerStyle","width","height","minHeight","_createVNode","class"],"mappings":"kPAKAA,oBAA+B,CAC7BC,KAAM,YACNC,MAAO,CACLC,WAAY,CACVC,KAAMC,QACNC,SAAS,GAEXC,QAAS,CACPH,KAAMC,QACNC,SAAS,GAEXE,MAAO,CACLJ,KAAMK,OACNH,QAASA,MAAO,IAElBI,OAAQ,CACNN,KAAMK,OACNH,QAASA,MAAO,IAElBK,MAAO,CACLP,KAAMQ,OACNN,aAASO,IAGbC,KAAAA,CAAMZ,GACJ,MAAMa,EAAWC,EAAAA,IAA2B,MACtCC,EAAgBD,EAAAA,IAAwB,MAC9C,IAAIE,EAAwC,KAG5C,MAkDMC,EAAcA,KACdF,EAAcG,OAChBH,EAAcG,MAAMC,UAgBxBC,EAAAA,UAAU,KApEQC,MAChB,IAAKR,EAASK,MAAO,OACrB,MAAMT,MAAEA,EAAAA,OAAOD,GAAWR,GAAS,CAAA,EAGnCe,EAAcG,MAAQI,EAAAA,KACpBT,EAASK,MACQ,iBAAVT,EAAqBA,OAAQE,EACpC,CACEY,SAAU,WAKVd,GAA0B,iBAAVA,IAClBa,EAAAA,cAAsB,SAAUb,GAChCM,EAAcG,MAAMM,UACpBT,EAAcG,MAAQI,EAAAA,KAAaT,EAASK,MAAO,WAIjDV,GACFO,EAAcG,MAAMO,UAAUjB,GAI5BR,EAAMK,QACRU,EAAcG,MAAMQ,cAEpBX,EAAcG,MAAMS,eAwCtBN,GAXKR,EAASK,OAAUlB,EAAMC,aAE9Be,EAAiB,IAAIY,eAAe,KAClCX,MAGFD,EAAea,QAAQhB,EAASK,SASP,IAArBlB,EAAMC,YACR6B,OAAOC,iBAAiB,SAAUd,KAKtCe,EAAAA,YAAY,KACNhB,GAAkBH,EAASK,QAC7BF,EAAeiB,UAAUpB,EAASK,OAClCF,EAAekB,eAGQ,IAArBlC,EAAMC,YACR6B,OAAOK,oBAAoB,SAAUlB,GAGnCF,EAAcG,QAChBH,EAAcG,MAAMM,UACpBT,EAAcG,MAAQ,QAK1BkB,QACE,IAAMpC,EAAMQ,OACZ,KAhEkB6B,MAClB,IAAKtB,EAAcG,MAAO,OAC1B,MAAMV,OAAEA,EAAAA,QAAQH,GAAYL,EAExBQ,GACFO,EAAcG,MAAMO,UAAUjB,GAAyB,GAGrDH,EACFU,EAAcG,MAAMQ,cAEpBX,EAAcG,MAAMS,eAuDpBU,IAEF,CACEC,WAAW,EACXC,MAAM,IAKV,MAAMC,EAAoBA,KACxB,MAAMlC,EAAQN,EAAMM,OAAS,CAAA,EAC7B,MAAO,CACLmC,aAAOnC,WAAOmC,QAAS,OACvBC,cAAQpC,WAAOoC,SAAU,QACzBC,iBAAWrC,WAAOqC,YAAa,WAC5BrC,IAIP,MAAO,IAAAsC,EAAAA,YAAA,MAAA,CAAAC,MAAA,wBAAA,CAAAD,EAAAA,YAAA,MAAA,CAAA9B,IAGID,EAAQgC,MAAA,aAAAvC,MAENkC,KAAmB,OAIlC"}
|
|
@@ -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"),s=require("./editor-sender/index.js"),t=require("./file-card/index.js"),o=require("./core-text/index.js"),x=require("./core-tips/index.js"),d=require("./core-result/index.js"),n=require("./core-table/index.js");exports.BubbleList=e,exports.XMarkdown=r,exports.FilePreview=i,exports.EditorSender=s,exports.FileCard=t,exports.CoreText=o,exports.CoreTips=x,exports.CoreResult=d,exports.CoreTable=n;
|
|
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"),s=require("./editor-sender/index.js"),t=require("./file-card/index.js"),o=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");exports.BubbleList=e,exports.XMarkdown=r,exports.FilePreview=i,exports.EditorSender=s,exports.FileCard=t,exports.CoreText=o,exports.CoreTips=x,exports.CoreResult=d,exports.CoreTable=n,exports.CoreChart=u;
|
|
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"),l=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 s=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");;/* empty css */const p=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"),m=require("../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js"),c=require("../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js"),v=require("../../node_modules/.pnpm/remark-breaks@4.0.0/node_modules/remark-breaks/lib/index.js"),h=require("../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.js"),_=require("../../node_modules/.pnpm/remark-math@6.0.0/node_modules/remark-math/lib/index.js"),f=require("../../node_modules/.pnpm/remark-gemoji@8.0.0/node_modules/remark-gemoji/lib/index.js"),g=require("../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js"),y=require("../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js"),k=require("../../node_modules/.pnpm/rehype-katex@7.0.1/node_modules/rehype-katex/lib/index.js"),b=require("../../node_modules/.pnpm/rehype-stringify@10.0.1/node_modules/rehype-stringify/lib/index.js"),x=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}},expose:["getContentText"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","refConfigUpdate","downloadFile","coreSubmit"],setup(x,{emit:q}){const j=e.useTemplateRef("x-markdown-container"),E=e.ref(Date.now()),N=e.ref(-1/0),w=e.ref(""),A=new Set,S=e.ref(!1),C=e.ref(!1),T=e.ref([]),P=t.useTemplateRefsList(),L=e.ref(0);let R=0;const F=e.ref(null),V=e.ref(s.createStreamGenerator(e=>{w.value=w.value+e},x.speed)),$=e.computed(()=>{if(!x.autoHideThinking)return w.value;let e=w.value;if(e=(e=>{let r=!0;return e.replace(/(<summary[^>]*>[\s\S]*?<\/summary>)\s*(<div>[\s\S]*?)(<\/div>|$)/g,(e,t,l,s)=>{const n="</div>"===s;return`${t.replace(/(<summary)/g,e=>r?(r=!1,e):`<summary class="${n?"loaded":"loading"}"`)}\n${l}${s}`})})(e),e=e.replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g," "),e.includes("</details>")){N.value===-1/0&&(N.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(l){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 l=((N.value-E.value)/1e3).toFixed(0);return`<summary style="color: #8D90A0;font-weight: 300; font-size: 16px;">\n 已完成思考 ${l>"0"?l+"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}),D=e.computed(()=>x.isHistoryMessage);e.watch(()=>[x.text,x.typing],(e,r)=>{var t,l,s,n;const[o,i]=e,[a]=r||[];if(o.startsWith(a)||(null==(t=V.value)||t.reset(),w.value=""),o){if(null==(l=V.value)||l.update(o),!i)return void(null==(s=V.value)||s.stop());const e=/<summary>资料整合<\/summary>\r?\n(.|\s)+?/;if(!C.value&&e.test(o))return C.value=!0,void(null==(n=V.value)||n.setSpeed(500))}},{immediate:!0});const H=e.ref([]),U=r(()=>{(()=>{var e;const r=null==(e=j.value)?void 0:e.querySelector("div[hidden]");H.value=JSON.parse((null==r?void 0:r.textContent)||"[]"),q("refConfigUpdate",H.value)})()},100),B=e.ref(null);e.watch(()=>w.value,U,{immediate:!0}),e.watch(B,(e,r)=>{if(e!==r)if(e){const r=e.getAttribute("dataherf"),t=H.value.find(e=>e.link===r);q("hoverActiveRefTrigger",t)}else q("hoverActiveRefTrigger","")});const M=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}},W=e=>{const r=M(e);B.value=r||null},I=e=>{if("A"===e.target.tagName)return void(async e=>{e.stopPropagation(),e.preventDefault();const r=e.target,t=r.getAttribute("href"),s=r.getAttribute("data-id")||r.getAttribute("dataid"),n=r.getAttribute("data-name")||r.getAttribute("dataname");if(!t)return;const o=t.split(".").pop();s?(l.ElMessage("文件下载中..."),q("downloadFile",{title:n,id:s,ext:o,href:t})):window.open(t,"_blank")})(e);const r=M(e);if(r){const e=r.getAttribute("dataherf"),t=JSON.parse(r.getAttribute("datahighlight")||"[]"),l=Number(r.getAttribute("datanumber")),s=r.getAttribute("id"),n={...H.value.find(r=>r.link===e),highlight:t,page:l,id:s};q("clickActiveRefTrigger",n)}};e.onMounted(()=>{j.value.addEventListener("mouseover",W),j.value.addEventListener("click",I)}),e.onBeforeUnmount(()=>{j.value.removeEventListener("mouseover",W),j.value.addEventListener("click",I)});const J=()=>{if(!j.value)return;j.value.querySelectorAll("img:not([data-processed='true'])").forEach(e=>{A.has(e)||(A.add(e),O(e),e.complete?G(e):(e.addEventListener("load",()=>G(e)),e.addEventListener("error",()=>z(e))))})},O=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`}},G=e=>{A.delete(e),e.setAttribute("data-processed","true"),e.classList.add("loaded"),e.style.opacity="1",e.removeEventListener("load",G),e.removeEventListener("error",z)},z=e=>{A.delete(e),e.setAttribute("data-processed","true"),e.classList.add("load-error"),e.style.maxHeight="200px",e.removeEventListener("load",G),e.removeEventListener("error",z)},X=m.unified().use(c).use(v).use(h,{singleTilde:!1}).use(_).use(f).use(g,{allowDangerousHtml:!0}).use(y).use(k).use(b),K=(e,r)=>{var t;if(e&&"object"==typeof e){if("form"===e.type){const l=(null==(t=e.properties)?void 0:t.data)||{};return void r.push(l)}Array.isArray(e.children)&&e.children.forEach(e=>{K(e,r)})}};e.watch(()=>$.value,async r=>{R=0;const t=await X.run(X.parse(r)),l=(e=>{const r=[],t=[],l=e=>{e&&("pre"===e.tagName&&t.push(e),Array.isArray(e.children)&&e.children.forEach(l))};return Array.isArray(e.children)&&e.children.forEach(l),t.forEach(e=>{var t,l,s,n,o;const i=null==(t=e.children)?void 0:t.find(e=>"code"===e.tagName);if(null==(s=null==(l=null==i?void 0:i.properties)?void 0:l.className)?void 0:s.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);K(t,r)}}catch(a){console.error("Failed to parse CorePilot schema:",a)}}),r})(t);T.value=l,await e.nextTick(),F.value=t,e.nextTick(J),e.nextTick(()=>{var e;const r=null==(e=j.value)?void 0:e.querySelector("details");(null==r?void 0:r.querySelector("summary"))&&!S.value&&(S.value=!0,new o.Accordion(r))})},{immediate:!0});const Q=(r,t,s)=>{var o,m,c,v,h,_,f,g,y,k,b,x,j,E,N,w,A,S,C,F,V;if(!r)return null;let $=[];switch(["sub","pre","text","ElForm"].includes(r.tagName)||($=(null==(m=null==(o=r.children)?void 0:o.map)?void 0:m.call(o,e=>Q(e,t)))||[]),r.type){case"root":return e.h("div",{class:"markdown-body"},e.h(l.ElConfigProvider,{locale:p},$));case"element":if("sub"===r.tagName){const l=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...r.children],s=null==l?void 0:l.map(e=>Q(e,t));return e.h("span",{...r.properties,class:"x-markdown-sub"},s)}if("span"===r.tagName)return e.h("span",{...r.properties},$);if("img"===r.tagName)return e.h("img",{...r.properties,class:"markdown-image","data-processed":"false"});if("a"===r.tagName){const t=(null==(c=r.properties)?void 0:c.href)||"",l=t?t.split(".").pop():null;return e.h("a",{...r.properties,class:"file-link","data-file-type":l},$)}if("ElTimeline"===r.tagName)return e.h(l.ElTimeline,{...r.properties},$);if("table"===r.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",$)]);if("view"===r.tagName)return e.h("div",{class:"custom-view-container"},[$[L.value]]);if("ElRow"===r.tagName)return e.h(l.ElRow,{...r.properties},$);if("ElCol"===r.tagName)return e.h(l.ElCol,{...r.properties},$);if("ElCard"===r.tagName)return e.h(l.ElCard,{...r.properties},$);if("ElForm"===r.tagName){const s=null==(v=r.children)?void 0:v.map(e=>Q(e,R));return R++,e.h(l.ElForm,{ref:P.value.set,model:T.value[t],...r.properties,disabled:(null==(h=r.properties)?void 0:h.disabled)||D.value},s)}if("ElFormItem"===r.tagName)return e.h(l.ElFormItem,{...r.properties},$);if("ElButton"===r.tagName){let n=null==(_=r.properties)?void 0:_.payload;return"table"===r.parentScope&&(n=s),e.h(l.ElButton,{...r.properties,disabled:(null==(f=r.properties)?void 0:f.disabled)||D.value,onClick:()=>{var e;(async(e,r,t,l)=>{var s;if("inner_next"===r)return void(L.value+=1);if("inner_prev"===r)return void(L.value-=1);let n={action:r,payload:{}};t&&"form"!==l?n={action:r,payload:t}:(await(null==(s=P.value[e])?void 0:s.validate()),n={action:r,payload:{...T.value[e],...t}}),q("coreSubmit",n)})(t,null==(e=r.properties)?void 0:e.action,n,r.parentScope)}},$)}if("ElSelect"===r.tagName)return e.h(l.ElSelect,{...r.properties,disabled:(null==(g=r.properties)?void 0:g.disabled)||D.value,modelValue:T.value[t][null==(y=r.properties)?void 0:y.formProp],"onUpdate:modelValue":e=>{var l;T.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},$);if("ElDatePicker"===r.tagName)return e.h(l.ElDatePicker,{...r.properties,disabled:(null==(k=r.properties)?void 0:k.disabled)||D.value,modelValue:T.value[t][null==(b=r.properties)?void 0:b.formProp],"onUpdate:modelValue":e=>{var l;T.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},$);if("ElInput"===r.tagName)return e.h(l.ElInput,{...r.properties,disabled:(null==(x=r.properties)?void 0:x.disabled)||D.value,modelValue:T.value[t][null==(j=r.properties)?void 0:j.formProp],"onUpdate:modelValue":e=>{var l;T.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},$);if("ElRadioGroup"===r.tagName)return e.h(l.ElRadioGroup,{...r.properties,disabled:(null==(E=r.properties)?void 0:E.disabled)||D.value,modelValue:T.value[t][null==(N=r.properties)?void 0:N.formProp],"onUpdate:modelValue":e=>{var l;T.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},$);if("ElRadio"===r.tagName)return e.h(l.ElRadio,{...r.properties,disabled:(null==(w=r.properties)?void 0:w.disabled)||D.value},$);if("ElTable"===r.tagName)return e.h(d,{...r.properties},$);if("ElTableColumn"===r.tagName)return e.h(l.ElTableColumn,{...r.properties},{default:e=>{var t,l;const s=null==(t=r.children)?void 0:t.map(r=>Q(r,R,e.row)),n=null==(l=r.children)?void 0:l.findIndex(t=>{var l;return t.value===e.row[null==(l=r.properties)?void 0:l.prop]});return-1===n?s:null==s?void 0:s[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("pre"===r.tagName){const t=null==(A=r.children)?void 0:A.find(e=>"code"===e.tagName);if(t&&(null==(C=null==(S=t.properties)?void 0:S.className)?void 0:C.includes("language-CorePilot"))){const r=(null==(V=null==(F=t.children)?void 0:F[0])?void 0:V.value)||"",l=JSON.parse(r),s=n.parseCorePilot(l),o=Q(s,R);return e.h("div",{class:"hitl-wrapper"},[o])}}return e.h(r.tagName,r.properties,$);case"text":return r.value.trim();default:return null}};return e.onUpdated(()=>{R=0}),{hastToVNode:Q,ast:F,container:j,renderComplete:U,getContentText:()=>{var e;return null==(e=j.value)?void 0:e.innerText}}},render(){return e.createVNode("div",{ref:"x-markdown-container",class:"x-markdown"},[this.hastToVNode(this.ast)])}});module.exports=x;
|
|
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"),l=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 s=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");;/* empty css */const m=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"),c=require("../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js"),v=require("../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js"),h=require("../../node_modules/.pnpm/remark-breaks@4.0.0/node_modules/remark-breaks/lib/index.js"),_=require("../../node_modules/.pnpm/remark-gfm@4.0.1/node_modules/remark-gfm/lib/index.js"),f=require("../../node_modules/.pnpm/remark-math@6.0.0/node_modules/remark-math/lib/index.js"),g=require("../../node_modules/.pnpm/remark-gemoji@8.0.0/node_modules/remark-gemoji/lib/index.js"),y=require("../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js"),k=require("../../node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js"),b=require("../../node_modules/.pnpm/rehype-katex@7.0.1/node_modules/rehype-katex/lib/index.js"),x=require("../../node_modules/.pnpm/rehype-stringify@10.0.1/node_modules/rehype-stringify/lib/index.js"),q=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}},expose:["getContentText"],emits:["hoverActiveRefTrigger","clickActiveRefTrigger","refConfigUpdate","downloadFile","coreSubmit"],setup(q,{emit:j}){const E=e.useTemplateRef("x-markdown-container"),N=e.ref(Date.now()),w=e.ref(-1/0),A=e.ref(""),C=new Set,S=e.ref(!1),T=e.ref(!1),P=e.ref([]),L=t.useTemplateRefsList(),R=e.ref(0);let F=0;const V=e.ref(null),$=e.ref(s.createStreamGenerator(e=>{A.value=A.value+e},q.speed)),D=e.computed(()=>{if(!q.autoHideThinking)return A.value;let e=A.value;if(e=(e=>{let r=!0;return e.replace(/(<summary[^>]*>[\s\S]*?<\/summary>)\s*(<div>[\s\S]*?)(<\/div>|$)/g,(e,t,l,s)=>{const n="</div>"===s;return`${t.replace(/(<summary)/g,e=>r?(r=!1,e):`<summary class="${n?"loaded":"loading"}"`)}\n${l}${s}`})})(e),e=e.replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g," "),e.includes("</details>")){w.value===-1/0&&(w.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(l){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 l=((w.value-N.value)/1e3).toFixed(0);return`<summary style="color: #8D90A0;font-weight: 300; font-size: 16px;">\n 已完成思考 ${l>"0"?l+"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}),H=e.computed(()=>q.isHistoryMessage);e.watch(()=>[q.text,q.typing],(e,r)=>{var t,l,s,n;const[o,i]=e,[a]=r||[];if(o.startsWith(a)||(null==(t=$.value)||t.reset(),A.value=""),o){if(null==(l=$.value)||l.update(o),!i)return void(null==(s=$.value)||s.stop());const e=/<summary>资料整合<\/summary>\r?\n(.|\s)+?/;if(!T.value&&e.test(o))return T.value=!0,void(null==(n=$.value)||n.setSpeed(500))}},{immediate:!0});const U=e.ref([]),B=r(()=>{(()=>{var e;const r=null==(e=E.value)?void 0:e.querySelector("div[hidden]");U.value=JSON.parse((null==r?void 0:r.textContent)||"[]"),j("refConfigUpdate",U.value)})()},100),M=e.ref(null);e.watch(()=>A.value,B,{immediate:!0}),e.watch(M,(e,r)=>{if(e!==r)if(e){const r=e.getAttribute("dataherf"),t=U.value.find(e=>e.link===r);j("hoverActiveRefTrigger",t)}else j("hoverActiveRefTrigger","")});const W=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}},I=e=>{const r=W(e);M.value=r||null},J=e=>{if("A"===e.target.tagName)return void(async e=>{e.stopPropagation(),e.preventDefault();const r=e.target,t=r.getAttribute("href"),s=r.getAttribute("data-id")||r.getAttribute("dataid"),n=r.getAttribute("data-name")||r.getAttribute("dataname");if(!t)return;const o=t.split(".").pop();s?(l.ElMessage("文件下载中..."),j("downloadFile",{title:n,id:s,ext:o,href:t})):window.open(t,"_blank")})(e);const r=W(e);if(r){const e=r.getAttribute("dataherf"),t=JSON.parse(r.getAttribute("datahighlight")||"[]"),l=Number(r.getAttribute("datanumber")),s=r.getAttribute("id"),n={...U.value.find(r=>r.link===e),highlight:t,page:l,id:s};j("clickActiveRefTrigger",n)}};e.onMounted(()=>{E.value.addEventListener("mouseover",I),E.value.addEventListener("click",J)}),e.onBeforeUnmount(()=>{E.value.removeEventListener("mouseover",I),E.value.addEventListener("click",J)});const O=()=>{if(!E.value)return;E.value.querySelectorAll("img:not([data-processed='true'])").forEach(e=>{C.has(e)||(C.add(e),G(e),e.complete?z(e):(e.addEventListener("load",()=>z(e)),e.addEventListener("error",()=>X(e))))})},G=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`}},z=e=>{C.delete(e),e.setAttribute("data-processed","true"),e.classList.add("loaded"),e.style.opacity="1",e.removeEventListener("load",z),e.removeEventListener("error",X)},X=e=>{C.delete(e),e.setAttribute("data-processed","true"),e.classList.add("load-error"),e.style.maxHeight="200px",e.removeEventListener("load",z),e.removeEventListener("error",X)},K=c.unified().use(v).use(h).use(_,{singleTilde:!1}).use(f).use(g).use(y,{allowDangerousHtml:!0}).use(k).use(b).use(x),Q=(e,r)=>{var t;if(e&&"object"==typeof e){if("form"===e.type){const l=(null==(t=e.properties)?void 0:t.data)||{};return void r.push(l)}Array.isArray(e.children)&&e.children.forEach(e=>{Q(e,r)})}};e.watch(()=>D.value,async r=>{F=0;const t=await K.run(K.parse(r)),l=(e=>{const r=[],t=[],l=e=>{e&&("pre"===e.tagName&&t.push(e),Array.isArray(e.children)&&e.children.forEach(l))};return Array.isArray(e.children)&&e.children.forEach(l),t.forEach(e=>{var t,l,s,n,o;const i=null==(t=e.children)?void 0:t.find(e=>"code"===e.tagName);if(null==(s=null==(l=null==i?void 0:i.properties)?void 0:l.className)?void 0:s.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);Q(t,r)}}catch(a){console.error("Failed to parse CorePilot schema:",a)}}),r})(t);P.value=l,await e.nextTick(),V.value=t,e.nextTick(O),e.nextTick(()=>{var e;const r=null==(e=E.value)?void 0:e.querySelector("details");(null==r?void 0:r.querySelector("summary"))&&!S.value&&(S.value=!0,new o.Accordion(r))})},{immediate:!0});const Y=(r,t,s)=>{var o,c,v,h,_,f,g,y,k,b,x,q,E,N,w,A,C,S,T,V,$;if(!r)return null;let D=[];switch(["sub","pre","text","ElForm"].includes(r.tagName)||(D=(null==(c=null==(o=r.children)?void 0:o.map)?void 0:c.call(o,e=>Y(e,t)))||[]),r.type){case"root":return e.h("div",{class:"markdown-body"},e.h(l.ElConfigProvider,{locale:m},D));case"element":if("sub"===r.tagName){const l=[{type:"element",tagName:"span",properties:{class:"x-markdown-split"}},...r.children],s=null==l?void 0:l.map(e=>Y(e,t));return e.h("span",{...r.properties,class:"x-markdown-sub"},s)}if("span"===r.tagName)return e.h("span",{...r.properties},D);if("img"===r.tagName)return e.h("img",{...r.properties,class:"markdown-image","data-processed":"false"});if("a"===r.tagName){const t=(null==(v=r.properties)?void 0:v.href)||"",l=t?t.split(".").pop():null;return e.h("a",{...r.properties,class:"file-link","data-file-type":l},D)}if("ElTimeline"===r.tagName)return e.h(l.ElTimeline,{...r.properties},D);if("table"===r.tagName)return e.h("div",{class:"custom-table-container"},[e.h("table",D)]);if("view"===r.tagName)return e.h("div",{class:"custom-view-container"},[D[R.value]]);if("ElRow"===r.tagName)return e.h(l.ElRow,{...r.properties},D);if("ElCol"===r.tagName)return e.h(l.ElCol,{...r.properties},D);if("ElCard"===r.tagName)return e.h(l.ElCard,{...r.properties},D);if("ElForm"===r.tagName){const s=null==(h=r.children)?void 0:h.map(e=>Y(e,F));return F++,e.h(l.ElForm,{ref:L.value.set,model:P.value[t],...r.properties,disabled:(null==(_=r.properties)?void 0:_.disabled)||H.value},s)}if("ElFormItem"===r.tagName)return e.h(l.ElFormItem,{...r.properties},D);if("ElButton"===r.tagName){let n=null==(f=r.properties)?void 0:f.payload;return"table"===r.parentScope&&(n=s),e.h(l.ElButton,{...r.properties,disabled:(null==(g=r.properties)?void 0:g.disabled)||H.value,onClick:()=>{var e;(async(e,r,t,l)=>{var s;if("inner_next"===r)return void(R.value+=1);if("inner_prev"===r)return void(R.value-=1);let n={action:r,payload:{}};t&&"form"!==l?n={action:r,payload:t}:(await(null==(s=L.value[e])?void 0:s.validate()),n={action:r,payload:{...P.value[e],...t}}),j("coreSubmit",n)})(t,null==(e=r.properties)?void 0:e.action,n,r.parentScope)}},D)}if("ElSelect"===r.tagName)return e.h(l.ElSelect,{...r.properties,disabled:(null==(y=r.properties)?void 0:y.disabled)||H.value,modelValue:P.value[t][null==(k=r.properties)?void 0:k.formProp],"onUpdate:modelValue":e=>{var l;P.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},D);if("ElDatePicker"===r.tagName)return e.h(l.ElDatePicker,{...r.properties,disabled:(null==(b=r.properties)?void 0:b.disabled)||H.value,modelValue:P.value[t][null==(x=r.properties)?void 0:x.formProp],"onUpdate:modelValue":e=>{var l;P.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},D);if("ElInput"===r.tagName)return e.h(l.ElInput,{...r.properties,disabled:(null==(q=r.properties)?void 0:q.disabled)||H.value,modelValue:P.value[t][null==(E=r.properties)?void 0:E.formProp],"onUpdate:modelValue":e=>{var l;P.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},D);if("ElRadioGroup"===r.tagName)return e.h(l.ElRadioGroup,{...r.properties,disabled:(null==(N=r.properties)?void 0:N.disabled)||H.value,modelValue:P.value[t][null==(w=r.properties)?void 0:w.formProp],"onUpdate:modelValue":e=>{var l;P.value[t][null==(l=r.properties)?void 0:l.formProp]=e}},D);if("ElRadio"===r.tagName)return e.h(l.ElRadio,{...r.properties,disabled:(null==(A=r.properties)?void 0:A.disabled)||H.value},D);if("ElTable"===r.tagName)return e.h(d,{...r.properties},D);if("ElTableColumn"===r.tagName)return e.h(l.ElTableColumn,{...r.properties},{default:e=>{var t,l;const s=null==(t=r.children)?void 0:t.map(r=>Y(r,F,e.row)),n=null==(l=r.children)?void 0:l.findIndex(t=>{var l;return t.value===e.row[null==(l=r.properties)?void 0:l.prop]});return-1===n?s:null==s?void 0:s[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==(C=r.children)?void 0:C.find(e=>"code"===e.tagName);if(t&&(null==(T=null==(S=t.properties)?void 0:S.className)?void 0:T.includes("language-CorePilot"))){const r=(null==($=null==(V=t.children)?void 0:V[0])?void 0:$.value)||"";try{const t=JSON.parse(r),l=n.parseCorePilot(t),s=Y(l,F);return e.h("div",{class:"hitl-wrapper"},[s])}catch(U){return null}}}return e.h(r.tagName,r.properties,D);case"text":return r.value.trim();default:return null}};return e.onUpdated(()=>{F=0}),{hastToVNode:Y,ast:V,container:E,renderComplete:B,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=q;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/x-markdown/index.tsx"],"sourcesContent":["import { \n defineComponent, \n ref, computed, watch, \n onMounted, onBeforeUnmount, \n useTemplateRef, h, nextTick,\n onUpdated,\n} from 'vue';\nimport debounce from 'lodash/debounce';\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport remarkGemoji from \"remark-gemoji\";\nimport remarkRehype from \"remark-rehype\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeKatex from \"rehype-katex\";\nimport rehypeStringify from \"rehype-stringify\";\nimport { useTemplateRefsList } from '@vueuse/core'\n\nimport { \n ElMessage, \n ElForm,\n ElFormItem, \n ElInput, \n ElCard,\n ElButton,\n ElSelect,\n ElDatePicker,\n ElTable,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider\n} from 'element-plus';\nimport './style/index.less';\nimport './theme/index.less';\nimport { createStreamGenerator } from './utils/mockStream.ts';\nimport { parseCorePilot } from './utils/parseCorePilotSchema.ts';\nimport { Accordion } from './utils/animation.ts';\nimport CoreText from '../core-text';\nimport CoreTips from '../core-tips';\nimport CoreResult from '../core-result';\nimport CoreTable from '../core-table';\nimport 'katex/dist/katex.min.css'\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\n\nconst checkAndReturnRefList = (text: string) => {\n const reg = /<div hidden>([\\s\\S]*?)<\\/div>/g;\n const match = reg.exec(text);\n if (!match) {\n return [];\n }\n const refListStr = match[1];\n try {\n const refList = JSON.parse(refListStr);\n return refList;\n } catch (error) {\n return [];\n }\n}\n\ninterface RefConfig {\n title: string,\n link: string,\n time: string,\n author: string,\n}\n\nexport default defineComponent({\n name: 'XMarkdown',\n props: {\n text: {\n type: String,\n default: '',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n typing: {\n type: Boolean,\n default: false,\n },\n speed: {\n type: Number,\n default: 200,\n },\n isHistoryMessage: {\n type: Boolean,\n default: false,\n },\n },\n expose: [\n 'getContentText'\n ],\n emits: ['hoverActiveRefTrigger', 'clickActiveRefTrigger', 'refConfigUpdate', 'downloadFile', 'coreSubmit'],\n setup(props, { emit }) {\n const container = useTemplateRef<HTMLElement>('x-markdown-container');\n const startTime = ref<number>(Date.now());\n const endTime = ref<number>(-Infinity);\n const context = ref('');\n const pendingImages = new Set(); // 存储待处理的图片\n const isInitAnimation = ref(false);\n const tagComplete = ref(false);\n const hitlData = ref<Array<Record<string, string>>>([]);\n const formRefs = useTemplateRefsList<typeof ElForm>();\n const curIndex = ref(0);\n let curInit = 0;\n const ast = ref<any>(null)\n\n const streamCall = (stream: string) => {\n context.value = context.value + stream;\n }\n\n const streamGener = ref<ReturnType<typeof createStreamGenerator>>(createStreamGenerator(streamCall, props.speed));\n\n const updateSummaryClasses = (mdText: string) => {\n const summaryDivReg = /(<summary[^>]*>[\\s\\S]*?<\\/summary>)\\s*(<div>[\\s\\S]*?)(<\\/div>|$)/g;\n let isFirstSummary = true;\n\n return mdText.replace(summaryDivReg, (match, summaryTag, divContent, divEnd) => {\n const isDivComplete = divEnd === '</div>'; // 直接判断闭合标签是否存在\n const updatedSummary = summaryTag.replace(\n /(<summary)/g,\n (match) => {\n if (isFirstSummary) {\n isFirstSummary = false;\n return match;\n }\n return `<summary class=\"${isDivComplete ? 'loaded' : 'loading'}\"`\n }\n );\n return `${updatedSummary}\\n${divContent}${divEnd}`; // 重组时拼接闭合部分\n });\n }\n\n const formatText = computed(() => {\n if (!props.autoHideThinking) return context.value;\n let content = context.value;\n content = updateSummaryClasses(content);\n content = content.replace(/[\\u00A0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g, ' ');\n if (content.includes('</details>')) {\n if (endTime.value === -Infinity) {\n endTime.value = Date.now();\n }\n\n const res = checkAndReturnRefList(content);\n\n let text = content.replace(/<details open>([\\s\\S]*?)<\\/details>/g, (match, content) => {\n // 将 content 中的第一个 <summary> 中的内容替换为 具体的秒数\n content = content.replace(/<summary>([\\s\\S]*?)<\\/summary>/, (match, content) => {\n const duration = ((endTime.value - startTime.value) / 1000).toFixed(0);\n return `<summary style=\"color: #8D90A0;font-weight: 300; font-size: 16px;\">\n 已完成思考 ${duration > '0' ? duration + 's' : ''} ${res.length ? `<span style=\"display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;\"></span> 引用文档:${res?.length} 个` : ''}\n </summary>`;\n })\n\n content = content.replace(/<summary>完成<\\/summary>/, '<summary class=\"loaded\">完成</summary>')\n\n return `<details>${content}</details>`;\n });\n \n return text;\n }\n return content;\n })\n\n // 如果当前是历史消息,则禁用点击事件\n const disabled = computed(() => {\n return props.isHistoryMessage;\n })\n\n watch(() => [props.text, props.typing], (v, o) => {\n const [text, typing] = v;\n const [oldText] = o || [];\n if (!(text as string).startsWith(oldText as string)) {\n streamGener.value?.reset();\n context.value = '';\n }\n if (text) {\n streamGener.value?.update(text);\n if (!typing) {\n streamGener.value?.stop();\n return;\n }\n // 资料整合 标签之后,采用服务端流式速度\n const checkReg = /<summary>资料整合<\\/summary>\\r?\\n(.|\\s)+?/;\n if (!tagComplete.value && checkReg.test(text as string)) {\n tagComplete.value = true;\n streamGener.value?.setSpeed(500);\n return;\n }\n }\n }, {\n immediate: true,\n })\n\n // 获取所有的ref配置\n const refConfig = ref<Array<RefConfig>>([]);\n\n const getRefConfig = () => {\n const refContainer = (container.value as HTMLElement)?.querySelector('div[hidden]');\n refConfig.value = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', refConfig.value);\n }\n const renderComplete = debounce(() => {\n getRefConfig();\n }, 100);\n\n // 获取当前激活的索引文件\n const activeRef = ref<HTMLElement | null>(null);\n\n watch(() => context.value, renderComplete, {\n immediate: true,\n });\n\n watch(activeRef, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n const text = newVal.getAttribute('dataherf');\n const target = refConfig.value.find((item) => {\n return item.link === text;\n });\n emit('hoverActiveRefTrigger', target);\n } else {\n emit('hoverActiveRefTrigger', '');\n }\n }\n });\n\n const getTargeElement = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'SPAN') {\n const isInRefContainer = target.classList.contains('x-markdown-split');\n const isRefContainer = target.classList.contains('x-markdown-sub')\n if (isInRefContainer || isRefContainer) {\n if (!isRefContainer) {\n return target.parentElement as HTMLElement;\n }\n return target;\n }\n }\n };\n\n const handleMouseOver = (e: MouseEvent) => {\n const target = getTargeElement(e);\n if (target) {\n activeRef.value = target;\n return;\n }\n activeRef.value = null;\n }\n\n const handleAClick = async (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const target = e.target as HTMLElement;\n const href = target.getAttribute('href');\n const id = target.getAttribute('data-id') || target.getAttribute('dataid');\n const title = target.getAttribute('data-name') || target.getAttribute('dataname');\n if (!href) {\n return;\n }\n // const fileExt = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'png', 'gif', 'jpg', 'jpeg', 'webp', 'svg'];\n const ext = href.split('.').pop();\n // 如果id不存在,则使用a标签新打开浏览器页面兜底\n if (!id) {\n window.open(href, '_blank');\n return;\n }\n ElMessage('文件下载中...');\n\n emit('downloadFile', {\n title,\n id,\n ext,\n href,\n });\n\n // downloadFile(href);\n return;\n }\n\n const btnClick = async (index: number, action: string, payload: any, parentScope?: 'form' | 'table') => {\n if (action === 'inner_next') {\n curIndex.value += 1;\n return;\n }\n if (action === 'inner_prev') {\n curIndex.value -= 1;\n return;\n }\n let res = {\n action,\n payload: {},\n };\n // 区分是否为form组件的按钮,如果带有payload 则约定为非form组件的按钮\n if (payload && parentScope !== 'form') {\n res = {\n action,\n payload,\n }\n } else {\n await formRefs.value[index]?.validate();\n res = {\n action,\n payload: {\n ...hitlData.value[index],\n ...payload,\n }\n }\n }\n \n emit('coreSubmit', res)\n }\n\n const handleClick = (e: MouseEvent) => {\n // 如果当前点击的是a标签,则根据a标签的href属性直接下载文件\n if ((e.target as HTMLElement).tagName === 'A') {\n handleAClick(e);\n return;\n }\n\n const target = getTargeElement(e);\n if (target) {\n const text = target.getAttribute('dataherf');\n const highlight = JSON.parse(target.getAttribute('datahighlight') || '[]') as Array<string>;\n const page = Number(target.getAttribute('datanumber'));\n const id = target.getAttribute('id');\n const source = refConfig.value.find((item) => {\n return item.link === text;\n });\n const data = {\n ...source,\n highlight,\n page,\n id,\n }\n emit('clickActiveRefTrigger', data);\n }\n }\n\n const getContentText = () => {\n return container.value?.innerText;\n }\n\n onMounted(() => {\n (container.value as HTMLElement).addEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick);\n });\n\n onBeforeUnmount(() => {\n (container.value as HTMLElement).removeEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick)\n })\n\n /**\n * 处理新加载的图片\n * 核心逻辑:设置占位尺寸,渐进式加载\n */\n const processNewImages = () => {\n if (!container.value) return;\n \n const newImages = container.value.querySelectorAll(\n \"img:not([data-processed='true'])\"\n ) as NodeListOf<HTMLImageElement>;\n \n newImages.forEach((img) => {\n if (pendingImages.has(img)) return;\n pendingImages.add(img);\n \n // 设置占位尺寸,避免布局重排\n setPlaceholderDimensions(img);\n \n // 处理已加载的图片\n if (img.complete) {\n handleImageLoad(img);\n } else {\n img.addEventListener(\"load\", () => handleImageLoad(img));\n img.addEventListener(\"error\", () => handleImageError(img));\n }\n });\n };\n \n // 设置图片占位尺寸\n const setPlaceholderDimensions = (img) => {\n const containerWidth = img.parentElement.offsetWidth;\n if (img.naturalWidth > containerWidth) {\n img.style.maxWidth = \"100%\";\n }\n \n if (img.naturalWidth && img.naturalHeight) {\n const ratio = img.naturalHeight / img.naturalWidth;\n img.style.maxHeight = `${Math.min(500, containerWidth * ratio)}px`;\n }\n };\n \n // 图片加载成功处理\n const handleImageLoad = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"loaded\");\n img.style.opacity = \"1\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n \n // 图片加载失败处理\n const handleImageError = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"load-error\");\n img.style.maxHeight = \"200px\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n\n // 初始化unified处理链\n const md = unified()\n .use(remarkParse) // 解析Markdown为AST\n .use(remarkBreaks) // 处理换行符\n .use(remarkGfm, { singleTilde: false }) // GitHub Flavored Markdown支持\n .use(remarkMath) // 数学公式支持\n .use(remarkGemoji) // Emoji支持\n .use(remarkRehype, { allowDangerousHtml: true }) // 转换为HTML AST\n .use(rehypeRaw)\n .use(rehypeKatex)\n .use(rehypeStringify)\n\n /**\n * 递归遍历 schema,收集所有 form 表单及其 data 属性\n * @param schema - CorePilot schema 对象\n * @param formDataList - 用于存储收集到的 form data 的数组\n * @returns void\n */\n const collectFormsFromSchema = (schema: any, formDataList: Array<Record<string, any>>) => {\n if (!schema || typeof schema !== 'object') return;\n \n // 如果当前节点是 form,收集其 data 属性并停止向下递归(form 内部不会嵌套 form)\n if (schema.type === 'form') {\n const formData = schema.properties?.data || {};\n formDataList.push(formData);\n return; // form 内部不会再嵌套 form,直接返回\n }\n \n // 递归遍历 children 数组\n if (Array.isArray(schema.children)) {\n schema.children.forEach((child) => {\n collectFormsFromSchema(child, formDataList);\n });\n }\n }\n\n /**\n * 计算 markdown AST 中所有 form 表单的数量,并提取每个 form 的预定义数据\n * @param mdAst - markdown AST 对象\n * @returns { length: number, formDataList: Array<Record<string, any>> } - form 数量和 form data 列表\n */\n const computedForm = (mdAst: any) => {\n const formDataList: Array<Record<string, any>> = [];\n \n // 高效检索:直接查找所有 pre 标签\n const preNodes: any[] = [];\n const findPreNodes = (node: any) => {\n if (!node) return;\n if (node.tagName === \"pre\") {\n preNodes.push(node);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(findPreNodes);\n }\n };\n \n // 遍历 mdAst 查找所有 pre 节点\n if (Array.isArray(mdAst.children)) {\n mdAst.children.forEach(findPreNodes);\n }\n \n // 处理每个 pre 节点中的 CorePilot 代码块\n preNodes.forEach((preNode: any) => {\n const codeNode = preNode.children?.find((child: any) => child.tagName === \"code\");\n if (codeNode?.properties?.className?.includes(\"language-CorePilot\")) {\n try {\n const code = codeNode.children?.[0]?.value || '';\n if (code) {\n const schema = JSON.parse(code);\n // 递归收集所有 form\n collectFormsFromSchema(schema, formDataList);\n }\n } catch (error) {\n console.error('Failed to parse CorePilot schema:', error);\n }\n }\n });\n \n return formDataList\n }\n\n watch(\n () => formatText.value!,\n async (text) => {\n // 处理Markdown到hast再到VNode的转换\n curInit = 0;\n const mdAst = await md.run(md.parse(text));\n // 递归遍历所有 CorePilot schema,收集 form 表单及其预定义数据\n const formDataList = computedForm(mdAst);\n hitlData.value = formDataList;\n\n await nextTick();\n ast.value = mdAst;\n \n // 等待DOM更新后处理图片\n nextTick(processNewImages);\n nextTick(() => {\n const details = container.value?.querySelector('details');\n const summary = details?.querySelector('summary');\n if (summary && !isInitAnimation.value) {\n isInitAnimation.value = true;\n new Accordion(details!);\n }\n })\n },\n { immediate: true }\n );\n\n /**\n * 将hast(HTML AST)转换为Vue VNode\n * @param {Object} node hast节点\n * @returns {VNode} Vue虚拟节点\n */\n // FIXME ⚠️⚠️⚠️ 复杂表单存在性能问题 ⚠️⚠️⚠️\n const hastToVNode = (node, index?: number, row?: any) => {\n if (!node) return null;\n let children: any[] = [];\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n\n if (!blackTagNames.includes(node.tagName)) {\n children = node.children?.map?.(child => hastToVNode(child, index)) || [];\n }\n switch (node.type) {\n case \"root\":\n return h(\n \"div\",\n { class: \"markdown-body\" },\n h(ElConfigProvider, {\n locale: zhCN,\n }, children)\n );\n \n case \"element\":\n if (node.tagName === \"sub\") {\n const formatChildren = [\n {\n type: \"element\",\n tagName: \"span\",\n properties: {\n class: \"x-markdown-split\",\n },\n }, \n ...node.children\n ]\n const children = formatChildren?.map(child => hastToVNode(child, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, children);\n }\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\n }, \n children\n );\n }\n // 处理特殊元素:图片、链接、代码块等\n if (node.tagName === \"img\") {\n return h(\"img\", {\n ...node.properties,\n class: \"markdown-image\",\n \"data-processed\": \"false\" // 标记未处理图片\n });\n }\n \n if (node.tagName === \"a\") {\n const href = node.properties?.href || ''; // 获取链接地址\n const fileType = href ? href.split('.').pop() : null; // 标记文件类型\n return h(\n \"a\",\n {\n ...node.properties,\n class: 'file-link',\n 'data-file-type': fileType,\n },\n children\n );\n }\n if (node.tagName === 'ElTimeline') {\n return h(\n ElTimeline,\n {\n ...node.properties,\n },\n children\n );\n }\n if (node.tagName === 'table') {\n return h(\n \"div\",\n {\n class: 'custom-table-container',\n },\n [\n h(\n \"table\",\n children\n ),\n ]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n {\n class: 'custom-view-container',\n },\n [children[curIndex.value]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(\n ElRow,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCol') {\n return h(\n ElCol,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCard') {\n \n return h(\n ElCard,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElForm') {\n const children = node.children?.map(child => hastToVNode(child, curInit));\n curInit++;\n return h(\n ElForm,\n {\n ref: formRefs.value.set,\n model: hitlData.value[index!],\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n },\n children\n )\n }\n\n if (node.tagName === 'ElFormItem') {\n return h(\n ElFormItem,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = row;\n }\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n onClick: () => {\n btnClick(index!, node.properties?.action, payload, node.parentScope);\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElSelect') {\n return h(\n ElSelect,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElInput') {\n return h(\n ElInput,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadioGroup') {\n return h(\n ElRadioGroup,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value as string;\n }\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadio') {\n\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n },\n children\n )\n }\n \n if (node.tagName === 'ElTable') {\n return h(\n CoreTable,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElTableColumn') {\n return h(\n ElTableColumn,\n {\n ...node.properties,\n },\n {\n default: (scope) => {\n const children = node.children?.map(child => hastToVNode(child, curInit, scope.row));\n const index = node.children?.findIndex(child => child.value === scope.row[node.properties?.prop]);\n if (index === -1) {\n return children;\n }\n return children?.[index];\n },\n }\n )\n }\n\n if (node.tagName === 'CoreText') {\n return h(\n CoreText,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreTips') {\n return h(\n CoreTips,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreResult') {\n return h(\n CoreResult,\n {\n ...node.properties,\n }\n )\n }\n \n // 处理代码块(包含Mermaid图表和数学公式)\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find(child => child.tagName === \"code\");\n if (codeNode) {\n if (codeNode.properties?.className?.includes(\"language-CorePilot\")) {\n const code = codeNode.children?.[0]?.value || '';\n const schema = JSON.parse(code);\n const viewTree = parseCorePilot(schema);\n const children = hastToVNode(viewTree, curInit)\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [children]);\n }\n }\n }\n \n // 其他普通元素\n return h(\n node.tagName,\n node.properties,\n children\n );\n \n case \"text\":\n return node.value.trim();\n \n default:\n return null;\n }\n };\n\n onUpdated(() => {\n curInit = 0;\n })\n\n return {\n hastToVNode,\n ast,\n container,\n renderComplete,\n getContentText,\n };\n },\n render() {\n return (\n <div\n ref=\"x-markdown-container\"\n class=\"x-markdown\"\n >\n {\n this.hastToVNode(this.ast)\n }\n </div>\n );\n },\n});"],"names":["XMarkdown","name","props","text","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","Infinity","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","streamGener","createStreamGenerator","stream","value","formatText","computed","content","mdText","isFirstSummary","replace","match","summaryTag","divContent","divEnd","isDivComplete","updateSummaryClasses","includes","res","exec","refListStr","JSON","parse","error","checkAndReturnRefList","duration","toFixed","length","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","renderComplete","debounce","getRefConfig","refContainer","querySelector","textContent","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleClick","async","stopPropagation","preventDefault","href","id","title","ext","split","pop","ElMessage","window","open","handleAClick","highlight","page","data","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","properties","push","Array","isArray","children","child","mdAst","run","preNodes","findPreNodes","node","preNode","codeNode","className","code","console","computedForm","nextTick","details","Accordion","hastToVNode","index","row","map","h","class","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","ElForm","set","model","ElFormItem","payload","parentScope","ElButton","onClick","action","validate","btnClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","findIndex","prop","CoreText","CoreTips","CoreResult","viewTree","parseCorePilot","trim","onUpdated","getContentText","innerText","render","_createVNode","this"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/x-markdown/index.tsx"],"sourcesContent":["import { \n defineComponent, \n ref, computed, watch, \n onMounted, onBeforeUnmount, \n useTemplateRef, h, nextTick,\n onUpdated,\n} from 'vue';\nimport debounce from 'lodash/debounce';\nimport { unified } from \"unified\";\nimport remarkParse from \"remark-parse\";\nimport remarkBreaks from \"remark-breaks\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\nimport remarkGemoji from \"remark-gemoji\";\nimport remarkRehype from \"remark-rehype\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeKatex from \"rehype-katex\";\nimport rehypeStringify from \"rehype-stringify\";\nimport { useTemplateRefsList } from '@vueuse/core'\n\nimport { \n ElMessage, \n ElForm,\n ElFormItem, \n ElInput, \n ElCard,\n ElButton,\n ElSelect,\n ElDatePicker,\n ElTable,\n ElTableColumn,\n ElTimeline,\n ElRow,\n ElCol,\n ElRadioGroup,\n ElRadio,\n ElConfigProvider\n} from 'element-plus';\nimport './style/index.less';\nimport './theme/index.less';\nimport { createStreamGenerator } from './utils/mockStream.ts';\nimport { parseCorePilot } from './utils/parseCorePilotSchema.ts';\nimport { Accordion } from './utils/animation.ts';\nimport CoreText from '../core-text';\nimport CoreTips from '../core-tips';\nimport CoreResult from '../core-result';\nimport CoreTable from '../core-table';\nimport CoreChart from '../core-chart';\nimport 'katex/dist/katex.min.css'\nimport zhCN from 'element-plus/es/locale/lang/zh-cn';\n\nconst checkAndReturnRefList = (text: string) => {\n const reg = /<div hidden>([\\s\\S]*?)<\\/div>/g;\n const match = reg.exec(text);\n if (!match) {\n return [];\n }\n const refListStr = match[1];\n try {\n const refList = JSON.parse(refListStr);\n return refList;\n } catch (error) {\n return [];\n }\n}\n\ninterface RefConfig {\n title: string,\n link: string,\n time: string,\n author: string,\n}\n\nexport default defineComponent({\n name: 'XMarkdown',\n props: {\n text: {\n type: String,\n default: '',\n },\n autoHideThinking: {\n type: Boolean,\n default: true,\n },\n typing: {\n type: Boolean,\n default: false,\n },\n speed: {\n type: Number,\n default: 200,\n },\n isHistoryMessage: {\n type: Boolean,\n default: false,\n },\n },\n expose: [\n 'getContentText'\n ],\n emits: ['hoverActiveRefTrigger', 'clickActiveRefTrigger', 'refConfigUpdate', 'downloadFile', 'coreSubmit'],\n setup(props, { emit }) {\n const container = useTemplateRef<HTMLElement>('x-markdown-container');\n const startTime = ref<number>(Date.now());\n const endTime = ref<number>(-Infinity);\n const context = ref('');\n const pendingImages = new Set(); // 存储待处理的图片\n const isInitAnimation = ref(false);\n const tagComplete = ref(false);\n const hitlData = ref<Array<Record<string, string>>>([]);\n const formRefs = useTemplateRefsList<typeof ElForm>();\n const curIndex = ref(0);\n let curInit = 0;\n const ast = ref<any>(null)\n\n const streamCall = (stream: string) => {\n context.value = context.value + stream;\n }\n\n const streamGener = ref<ReturnType<typeof createStreamGenerator>>(createStreamGenerator(streamCall, props.speed));\n\n const updateSummaryClasses = (mdText: string) => {\n const summaryDivReg = /(<summary[^>]*>[\\s\\S]*?<\\/summary>)\\s*(<div>[\\s\\S]*?)(<\\/div>|$)/g;\n let isFirstSummary = true;\n\n return mdText.replace(summaryDivReg, (match, summaryTag, divContent, divEnd) => {\n const isDivComplete = divEnd === '</div>'; // 直接判断闭合标签是否存在\n const updatedSummary = summaryTag.replace(\n /(<summary)/g,\n (match) => {\n if (isFirstSummary) {\n isFirstSummary = false;\n return match;\n }\n return `<summary class=\"${isDivComplete ? 'loaded' : 'loading'}\"`\n }\n );\n return `${updatedSummary}\\n${divContent}${divEnd}`; // 重组时拼接闭合部分\n });\n }\n\n const formatText = computed(() => {\n if (!props.autoHideThinking) return context.value;\n let content = context.value;\n content = updateSummaryClasses(content);\n content = content.replace(/[\\u00A0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/g, ' ');\n if (content.includes('</details>')) {\n if (endTime.value === -Infinity) {\n endTime.value = Date.now();\n }\n\n const res = checkAndReturnRefList(content);\n\n let text = content.replace(/<details open>([\\s\\S]*?)<\\/details>/g, (match, content) => {\n // 将 content 中的第一个 <summary> 中的内容替换为 具体的秒数\n content = content.replace(/<summary>([\\s\\S]*?)<\\/summary>/, (match, content) => {\n const duration = ((endTime.value - startTime.value) / 1000).toFixed(0);\n return `<summary style=\"color: #8D90A0;font-weight: 300; font-size: 16px;\">\n 已完成思考 ${duration > '0' ? duration + 's' : ''} ${res.length ? `<span style=\"display: inline-block;margin: 0 8px;border-left: 1px solid #CDCFD7;width: 1px;height: 16px;\"></span> 引用文档:${res?.length} 个` : ''}\n </summary>`;\n })\n\n content = content.replace(/<summary>完成<\\/summary>/, '<summary class=\"loaded\">完成</summary>')\n\n return `<details>${content}</details>`;\n });\n \n return text;\n }\n return content;\n })\n\n // 如果当前是历史消息,则禁用点击事件\n const disabled = computed(() => {\n return props.isHistoryMessage;\n })\n\n watch(() => [props.text, props.typing], (v, o) => {\n const [text, typing] = v;\n const [oldText] = o || [];\n if (!(text as string).startsWith(oldText as string)) {\n streamGener.value?.reset();\n context.value = '';\n }\n if (text) {\n streamGener.value?.update(text);\n if (!typing) {\n streamGener.value?.stop();\n return;\n }\n // 资料整合 标签之后,采用服务端流式速度\n const checkReg = /<summary>资料整合<\\/summary>\\r?\\n(.|\\s)+?/;\n if (!tagComplete.value && checkReg.test(text as string)) {\n tagComplete.value = true;\n streamGener.value?.setSpeed(500);\n return;\n }\n }\n }, {\n immediate: true,\n })\n\n // 获取所有的ref配置\n const refConfig = ref<Array<RefConfig>>([]);\n\n const getRefConfig = () => {\n const refContainer = (container.value as HTMLElement)?.querySelector('div[hidden]');\n refConfig.value = JSON.parse(refContainer?.textContent || '[]');\n emit('refConfigUpdate', refConfig.value);\n }\n const renderComplete = debounce(() => {\n getRefConfig();\n }, 100);\n\n // 获取当前激活的索引文件\n const activeRef = ref<HTMLElement | null>(null);\n\n watch(() => context.value, renderComplete, {\n immediate: true,\n });\n\n watch(activeRef, (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal) {\n const text = newVal.getAttribute('dataherf');\n const target = refConfig.value.find((item) => {\n return item.link === text;\n });\n emit('hoverActiveRefTrigger', target);\n } else {\n emit('hoverActiveRefTrigger', '');\n }\n }\n });\n\n const getTargeElement = (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'SPAN') {\n const isInRefContainer = target.classList.contains('x-markdown-split');\n const isRefContainer = target.classList.contains('x-markdown-sub')\n if (isInRefContainer || isRefContainer) {\n if (!isRefContainer) {\n return target.parentElement as HTMLElement;\n }\n return target;\n }\n }\n };\n\n const handleMouseOver = (e: MouseEvent) => {\n const target = getTargeElement(e);\n if (target) {\n activeRef.value = target;\n return;\n }\n activeRef.value = null;\n }\n\n const handleAClick = async (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const target = e.target as HTMLElement;\n const href = target.getAttribute('href');\n const id = target.getAttribute('data-id') || target.getAttribute('dataid');\n const title = target.getAttribute('data-name') || target.getAttribute('dataname');\n if (!href) {\n return;\n }\n // const fileExt = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'png', 'gif', 'jpg', 'jpeg', 'webp', 'svg'];\n const ext = href.split('.').pop();\n // 如果id不存在,则使用a标签新打开浏览器页面兜底\n if (!id) {\n window.open(href, '_blank');\n return;\n }\n ElMessage('文件下载中...');\n\n emit('downloadFile', {\n title,\n id,\n ext,\n href,\n });\n\n // downloadFile(href);\n return;\n }\n\n const btnClick = async (index: number, action: string, payload: any, parentScope?: 'form' | 'table') => {\n if (action === 'inner_next') {\n curIndex.value += 1;\n return;\n }\n if (action === 'inner_prev') {\n curIndex.value -= 1;\n return;\n }\n let res = {\n action,\n payload: {},\n };\n // 区分是否为form组件的按钮,如果带有payload 则约定为非form组件的按钮\n if (payload && parentScope !== 'form') {\n res = {\n action,\n payload,\n }\n } else {\n await formRefs.value[index]?.validate();\n res = {\n action,\n payload: {\n ...hitlData.value[index],\n ...payload,\n }\n }\n }\n \n emit('coreSubmit', res)\n }\n\n const handleClick = (e: MouseEvent) => {\n // 如果当前点击的是a标签,则根据a标签的href属性直接下载文件\n if ((e.target as HTMLElement).tagName === 'A') {\n handleAClick(e);\n return;\n }\n\n const target = getTargeElement(e);\n if (target) {\n const text = target.getAttribute('dataherf');\n const highlight = JSON.parse(target.getAttribute('datahighlight') || '[]') as Array<string>;\n const page = Number(target.getAttribute('datanumber'));\n const id = target.getAttribute('id');\n const source = refConfig.value.find((item) => {\n return item.link === text;\n });\n const data = {\n ...source,\n highlight,\n page,\n id,\n }\n emit('clickActiveRefTrigger', data);\n }\n }\n\n const getContentText = () => {\n return container.value?.innerText;\n }\n\n onMounted(() => {\n (container.value as HTMLElement).addEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick);\n });\n\n onBeforeUnmount(() => {\n (container.value as HTMLElement).removeEventListener('mouseover', handleMouseOver);\n (container.value as HTMLElement).addEventListener('click', handleClick)\n })\n\n /**\n * 处理新加载的图片\n * 核心逻辑:设置占位尺寸,渐进式加载\n */\n const processNewImages = () => {\n if (!container.value) return;\n \n const newImages = container.value.querySelectorAll(\n \"img:not([data-processed='true'])\"\n ) as NodeListOf<HTMLImageElement>;\n \n newImages.forEach((img) => {\n if (pendingImages.has(img)) return;\n pendingImages.add(img);\n \n // 设置占位尺寸,避免布局重排\n setPlaceholderDimensions(img);\n \n // 处理已加载的图片\n if (img.complete) {\n handleImageLoad(img);\n } else {\n img.addEventListener(\"load\", () => handleImageLoad(img));\n img.addEventListener(\"error\", () => handleImageError(img));\n }\n });\n };\n \n // 设置图片占位尺寸\n const setPlaceholderDimensions = (img) => {\n const containerWidth = img.parentElement.offsetWidth;\n if (img.naturalWidth > containerWidth) {\n img.style.maxWidth = \"100%\";\n }\n \n if (img.naturalWidth && img.naturalHeight) {\n const ratio = img.naturalHeight / img.naturalWidth;\n img.style.maxHeight = `${Math.min(500, containerWidth * ratio)}px`;\n }\n };\n \n // 图片加载成功处理\n const handleImageLoad = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"loaded\");\n img.style.opacity = \"1\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n \n // 图片加载失败处理\n const handleImageError = (img) => {\n pendingImages.delete(img);\n img.setAttribute(\"data-processed\", \"true\");\n img.classList.add(\"load-error\");\n img.style.maxHeight = \"200px\";\n img.removeEventListener(\"load\", handleImageLoad);\n img.removeEventListener(\"error\", handleImageError);\n };\n\n // 初始化unified处理链\n const md = unified()\n .use(remarkParse) // 解析Markdown为AST\n .use(remarkBreaks) // 处理换行符\n .use(remarkGfm, { singleTilde: false }) // GitHub Flavored Markdown支持\n .use(remarkMath) // 数学公式支持\n .use(remarkGemoji) // Emoji支持\n .use(remarkRehype, { allowDangerousHtml: true }) // 转换为HTML AST\n .use(rehypeRaw)\n .use(rehypeKatex)\n .use(rehypeStringify)\n\n /**\n * 递归遍历 schema,收集所有 form 表单及其 data 属性\n * @param schema - CorePilot schema 对象\n * @param formDataList - 用于存储收集到的 form data 的数组\n * @returns void\n */\n const collectFormsFromSchema = (schema: any, formDataList: Array<Record<string, any>>) => {\n if (!schema || typeof schema !== 'object') return;\n \n // 如果当前节点是 form,收集其 data 属性并停止向下递归(form 内部不会嵌套 form)\n if (schema.type === 'form') {\n const formData = schema.properties?.data || {};\n formDataList.push(formData);\n return; // form 内部不会再嵌套 form,直接返回\n }\n \n // 递归遍历 children 数组\n if (Array.isArray(schema.children)) {\n schema.children.forEach((child) => {\n collectFormsFromSchema(child, formDataList);\n });\n }\n }\n\n /**\n * 计算 markdown AST 中所有 form 表单的数量,并提取每个 form 的预定义数据\n * @param mdAst - markdown AST 对象\n * @returns { length: number, formDataList: Array<Record<string, any>> } - form 数量和 form data 列表\n */\n const computedForm = (mdAst: any) => {\n const formDataList: Array<Record<string, any>> = [];\n \n // 高效检索:直接查找所有 pre 标签\n const preNodes: any[] = [];\n const findPreNodes = (node: any) => {\n if (!node) return;\n if (node.tagName === \"pre\") {\n preNodes.push(node);\n }\n if (Array.isArray(node.children)) {\n node.children.forEach(findPreNodes);\n }\n };\n \n // 遍历 mdAst 查找所有 pre 节点\n if (Array.isArray(mdAst.children)) {\n mdAst.children.forEach(findPreNodes);\n }\n \n // 处理每个 pre 节点中的 CorePilot 代码块\n preNodes.forEach((preNode: any) => {\n const codeNode = preNode.children?.find((child: any) => child.tagName === \"code\");\n if (codeNode?.properties?.className?.includes(\"language-CorePilot\")) {\n try {\n const code = codeNode.children?.[0]?.value || '';\n if (code) {\n const schema = JSON.parse(code);\n // 递归收集所有 form\n collectFormsFromSchema(schema, formDataList);\n }\n } catch (error) {\n console.error('Failed to parse CorePilot schema:', error);\n }\n }\n });\n \n return formDataList\n }\n\n watch(\n () => formatText.value!,\n async (text) => {\n // 处理Markdown到hast再到VNode的转换\n curInit = 0;\n const mdAst = await md.run(md.parse(text));\n // 递归遍历所有 CorePilot schema,收集 form 表单及其预定义数据\n const formDataList = computedForm(mdAst);\n hitlData.value = formDataList;\n\n await nextTick();\n ast.value = mdAst;\n \n // 等待DOM更新后处理图片\n nextTick(processNewImages);\n nextTick(() => {\n const details = container.value?.querySelector('details');\n const summary = details?.querySelector('summary');\n if (summary && !isInitAnimation.value) {\n isInitAnimation.value = true;\n new Accordion(details!);\n }\n })\n },\n { immediate: true }\n );\n\n /**\n * 将hast(HTML AST)转换为Vue VNode\n * @param {Object} node hast节点\n * @returns {VNode} Vue虚拟节点\n */\n // FIXME ⚠️⚠️⚠️ 复杂表单存在性能问题 ⚠️⚠️⚠️\n const hastToVNode = (node, index?: number, row?: any) => {\n if (!node) return null;\n let children: any[] = [];\n const blackTagNames = ['sub', 'pre', 'text', 'ElForm'];\n\n if (!blackTagNames.includes(node.tagName)) {\n children = node.children?.map?.(child => hastToVNode(child, index)) || [];\n }\n switch (node.type) {\n case \"root\":\n return h(\n \"div\",\n { class: \"markdown-body\" },\n h(ElConfigProvider, {\n locale: zhCN,\n }, children)\n );\n \n case \"element\":\n if (node.tagName === \"sub\") {\n const formatChildren = [\n {\n type: \"element\",\n tagName: \"span\",\n properties: {\n class: \"x-markdown-split\",\n },\n }, \n ...node.children\n ]\n const children = formatChildren?.map(child => hastToVNode(child, index));\n return h(\"span\", {\n ...node.properties,\n class: \"x-markdown-sub\",\n }, children);\n }\n if (node.tagName === \"span\") {\n return h(\"span\", {\n ...node.properties,\n }, \n children\n );\n }\n // 处理特殊元素:图片、链接、代码块等\n if (node.tagName === \"img\") {\n return h(\"img\", {\n ...node.properties,\n class: \"markdown-image\",\n \"data-processed\": \"false\" // 标记未处理图片\n });\n }\n \n if (node.tagName === \"a\") {\n const href = node.properties?.href || ''; // 获取链接地址\n const fileType = href ? href.split('.').pop() : null; // 标记文件类型\n return h(\n \"a\",\n {\n ...node.properties,\n class: 'file-link',\n 'data-file-type': fileType,\n },\n children\n );\n }\n if (node.tagName === 'ElTimeline') {\n return h(\n ElTimeline,\n {\n ...node.properties,\n },\n children\n );\n }\n if (node.tagName === 'table') {\n return h(\n \"div\",\n {\n class: 'custom-table-container',\n },\n [\n h(\n \"table\",\n children\n ),\n ]\n );\n }\n\n if (node.tagName === 'view') {\n return h(\n 'div',\n {\n class: 'custom-view-container',\n },\n [children[curIndex.value]]\n );\n }\n\n if (node.tagName === 'ElRow') {\n return h(\n ElRow,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCol') {\n return h(\n ElCol,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElCard') {\n \n return h(\n ElCard,\n {\n ...node.properties,\n },\n children\n );\n }\n\n if (node.tagName === 'ElForm') {\n const children = node.children?.map(child => hastToVNode(child, curInit));\n curInit++;\n return h(\n ElForm,\n {\n ref: formRefs.value.set,\n model: hitlData.value[index!],\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n },\n children\n )\n }\n\n if (node.tagName === 'ElFormItem') {\n return h(\n ElFormItem,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElButton') {\n let payload = node.properties?.payload;\n if (node.parentScope === 'table') {\n payload = row;\n }\n return h(\n ElButton,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n onClick: () => {\n btnClick(index!, node.properties?.action, payload, node.parentScope);\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElSelect') {\n return h(\n ElSelect,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElDatePicker') {\n return h(\n ElDatePicker,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElInput') {\n return h(\n ElInput,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value;\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadioGroup') {\n return h(\n ElRadioGroup,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n modelValue: hitlData.value[index!][node.properties?.formProp],\n 'onUpdate:modelValue': (value) => {\n hitlData.value[index!][node.properties?.formProp] = value as string;\n }\n },\n children\n )\n }\n\n if (node.tagName === 'ElRadio') {\n\n return h(\n ElRadio,\n {\n ...node.properties,\n disabled: node.properties?.disabled || disabled.value,\n },\n children\n )\n }\n \n if (node.tagName === 'ElTable') {\n return h(\n CoreTable,\n {\n ...node.properties,\n },\n children\n )\n }\n\n if (node.tagName === 'ElTableColumn') {\n return h(\n ElTableColumn,\n {\n ...node.properties,\n },\n {\n default: (scope) => {\n const children = node.children?.map(child => hastToVNode(child, curInit, scope.row));\n const index = node.children?.findIndex(child => child.value === scope.row[node.properties?.prop]);\n if (index === -1) {\n return children;\n }\n return children?.[index];\n },\n }\n )\n }\n\n if (node.tagName === 'CoreText') {\n return h(\n CoreText,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreTips') {\n return h(\n CoreTips,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreResult') {\n return h(\n CoreResult,\n {\n ...node.properties,\n }\n )\n }\n\n if (node.tagName === 'CoreChart') {\n return h(\n CoreChart,\n {\n ...node.properties,\n }\n )\n }\n \n // 处理代码块(包含Mermaid图表和数学公式)\n if (node.tagName === \"pre\") {\n const codeNode = node.children?.find(child => child.tagName === \"code\");\n if (codeNode) {\n if (codeNode.properties?.className?.includes(\"language-CorePilot\")) {\n const code = codeNode.children?.[0]?.value || '';\n try {\n const schema = JSON.parse(code);\n const viewTree = parseCorePilot(schema);\n const children = hastToVNode(viewTree, curInit)\n return h(\"div\", {\n class: \"hitl-wrapper\",\n }, [children]);\n } catch (error) {\n return null;\n }\n }\n }\n }\n \n // 其他普通元素\n return h(\n node.tagName,\n node.properties,\n children\n );\n \n case \"text\":\n return node.value.trim();\n \n default:\n return null;\n }\n };\n\n onUpdated(() => {\n curInit = 0;\n })\n\n return {\n hastToVNode,\n ast,\n container,\n renderComplete,\n getContentText,\n };\n },\n render() {\n return (\n <div\n ref=\"x-markdown-container\"\n class=\"x-markdown\"\n >\n {\n this.hastToVNode(this.ast)\n }\n </div>\n );\n },\n});"],"names":["XMarkdown","name","props","text","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","Infinity","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","streamGener","createStreamGenerator","stream","value","formatText","computed","content","mdText","isFirstSummary","replace","match","summaryTag","divContent","divEnd","isDivComplete","updateSummaryClasses","includes","res","exec","refListStr","JSON","parse","error","checkAndReturnRefList","duration","toFixed","length","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","renderComplete","debounce","getRefConfig","refContainer","querySelector","textContent","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleClick","async","stopPropagation","preventDefault","href","id","title","ext","split","pop","ElMessage","window","open","handleAClick","highlight","page","data","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","properties","push","Array","isArray","children","child","mdAst","run","preNodes","findPreNodes","node","preNode","codeNode","className","code","console","computedForm","nextTick","details","Accordion","hastToVNode","index","row","map","h","class","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","ElForm","set","model","ElFormItem","payload","parentScope","ElButton","onClick","action","validate","btnClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","findIndex","prop","CoreText","CoreTips","CoreResult","CoreChart","viewTree","parseCorePilot","trim","onUpdated","getContentText","innerText","render","_createVNode","this"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=(e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=(e,v)=>{switch(e.type){case"view":return t(e);case"form":return p(e);case"card":return l(e);case"table":return c(e);case"input":return a(e,v);case"select":return o(e,v);case"dateTimePicker":return n(e,v);case"button":return i(e,v);case"tips":return m(e,v);case"text":return u(e,v);case"formfield":return d(e,v);case"column":return s(e,v);case"row":return g(e,v);case"col":return h(e,v);case"result":return r(e,v);case"tag":return S(e,v);case"radioGroup":return y(e,v);case"radio":return N(e,v);case"echart":return E(e,v);default:const b=e;console.error(b)}},r=(e,r)=>({tagName:"CoreResult",type:"element",properties:e.properties,parentScope:r}),t=r=>({tagName:"view",type:"element",properties:{title:r.title},children:r.children.map(r=>e(r))}),p=r=>{const t=[];r.fields.forEach(r=>{t.push(e(r,"form"))});const p={tagName:"div",type:"element",properties:{class:"hitl-btn-list"},children:r.actions.map(r=>e(r,"form"))};return t.push(p),{tagName:"ElForm",type:"element",properties:{labelPosition:"right",...r.properties},children:t}},a=(e,r)=>({tagName:"ElInput",type:"element",properties:e.properties,parentScope:r}),o=(e,r)=>({tagName:"ElSelect",type:"element",properties:e.properties,parentScope:r}),n=(e,r)=>({tagName:"ElDatePicker",type:"element",properties:e.properties,parentScope:r}),i=(r,t)=>{var p,a;return{tagName:"ElButton",type:"element",properties:{...r.properties,action:r.action,payload:r.payload},parentScope:t,children:null==(a=null==(p=r.children)?void 0:p.map)?void 0:a.call(p,r=>e(r,t))}},l=r=>({tagName:"ElCard",type:"element",properties:r.properties,children:r.children.map(r=>e(r))}),s=(r,t)=>{var p;return{tagName:"ElTableColumn",type:"element",properties:r.properties,parentScope:t,children:null==(p=r.children)?void 0:p.map(r=>e(r,t))}},c=r=>({tagName:"ElTable",type:"element",properties:r.properties,children:r.children.map(r=>e(r,"table"))}),m=(e,r)=>({tagName:"CoreTips",type:"element",properties:e.properties,parentScope:r}),u=(e,r)=>({tagName:"CoreText",type:"element",properties:e.properties,parentScope:r}),d=(r,t)=>{const p=r.properties.prop,a=((e,r)=>e.map(e=>({...e,properties:{...e.properties,formProp:r}})))(r.children,p);return{tagName:"ElFormItem",type:"element",properties:{...r.properties,rules:(o=r.properties.rules,null==o?void 0:o.map(e=>"pattern"in e&&e.pattern?{pattern:new RegExp(e.pattern),message:e.message,trigger:e.trigger}:e))},parentScope:t,children:[e(a[0],t)]};var o},g=(r,t)=>({tagName:"ElRow",type:"element",properties:r.properties,children:r.children.map(r=>e(r,t))}),h=(r,t)=>({tagName:"ElCol",type:"element",properties:r.properties,parentScope:t,children:r.children.map(r=>e(r,t))}),y=(r,t)=>{var p;return{tagName:"ElRadioGroup",type:"element",properties:r.properties,parentScope:t,children:null==(p=r.properties.options)?void 0:p.map(r=>e({type:"radio",properties:r},t))}},N=(e,r)=>({tagName:"ElRadio",type:"element",properties:e.properties,parentScope:r}),S=(r,t)=>{const p={tagName:"ElTag",type:"element",properties:r.properties,parentScope:t,children:r.children.map(r=>e(r,t))};return"table"===t&&(p.value=r.value),p},E=(e,r)=>({tagName:"CoreChart",type:"element",properties:e.properties,parentScope:r});exports.parseCorePilot=r=>e(r);
|
|
2
2
|
//# sourceMappingURL=parseCorePilotSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseCorePilotSchema.js","sources":["../../../../../src/components/x-markdown/utils/parseCorePilotSchema.ts"],"sourcesContent":["import { \n FormSchema, \n ViewSchema,\n FormFieldSchema, \n CardSchema, \n ButtonSchema, \n TableSchema, \n TipsSchema, \n TextSchema, \n InputSchema, \n SelectSchema, \n DateTimePickerSchema, \n TableColumnSchema, \n RowSchema, \n ColSchema, \n ResultSchema, \n TagSchema,\n RadioGroupSchema,\n RadioSchema\n} from '@/types/index';\n\ntype ElementSchema = ViewSchema<any> | FormSchema | FormFieldSchema | CardSchema | ButtonSchema | TableSchema | TipsSchema | TextSchema | InputSchema | SelectSchema | DateTimePickerSchema | TableColumnSchema | RowSchema | ColSchema | ResultSchema | TagSchema | RadioGroupSchema | RadioSchema;\n\ntype ParentScopeType = 'form' | 'table';\n\nconst parseSchema = (schema: ElementSchema, type?: ParentScopeType) => {\n switch (schema.type) {\n case 'view':\n return parseView(schema);\n case 'form':\n return parseForm(schema);\n case 'card':\n return parseCard(schema);\n case 'table':\n return parseTable(schema);\n case 'input':\n return parseInput(schema, type);\n case 'select':\n return parseSelect(schema, type);\n case 'dateTimePicker':\n return parseDate(schema, type);\n case 'button':\n return parseButton(schema, type);\n case 'tips':\n return parseTips(schema, type);\n case 'text':\n return parseText(schema, type);\n case 'formfield':\n return parseFormItem(schema, type);\n case 'column':\n return parseTableColumn(schema, type);\n case 'row':\n return parseRow(schema, type);\n case 'col':\n return parseCol(schema, type);\n case 'result':\n return parseResult(schema, type);\n case 'tag':\n return parseTag(schema, type);\n case 'radioGroup':\n return parseRadioGroup(schema, type);\n case 'radio':\n return parseRadio(schema, type);\n default:\n const _: never = schema;\n console.error(_);\n }\n}\n\n// result组件解析\nconst parseResult = (schema: ResultSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreResult',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\n// view组件解析\nconst parseView = (schema: ViewSchema<any>) => {\n return {\n tagName: 'view',\n type: 'element',\n properties: {\n title: schema.title,\n },\n children: schema.children.map((item) => {\n return parseSchema(item);\n })\n }\n}\n\n// form组件解析\nconst parseForm = (schema: FormSchema) => {\n const children: any[] = [] \n schema.fields.forEach((item) => {\n children.push(parseSchema(item, 'form'));\n });\n const actionChild = {\n tagName: 'div',\n type: 'element',\n properties: {\n class: 'hitl-btn-list',\n },\n children: schema.actions.map((item) => {\n return parseSchema(item, 'form');\n })\n }\n children.push(actionChild);\n return {\n tagName: 'ElForm',\n type: 'element',\n properties: {\n labelPosition: 'right',\n ...schema.properties,\n },\n children,\n }\n}\n\nconst parseInput = (schema: InputSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElInput',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseSelect = (schema: SelectSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElSelect',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseDate = (schema: DateTimePickerSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElDatePicker',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseButton = (schema: ButtonSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElButton',\n type: 'element',\n properties: {\n ...schema.properties,\n action: schema.action,\n payload: schema.payload,\n },\n // TODO 记录父级作用域,用于在form、table 组件中使用\n parentScope: type,\n children: schema.children?.map?.((item) => {\n return parseSchema(item, type);\n })\n }\n}\n\nconst parseCard = (schema: CardSchema) => {\n return {\n tagName: 'ElCard',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item);\n })\n }\n}\n\nconst parseTableColumn = (schema: TableColumnSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElTableColumn',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children?.map((item) => {\n return parseSchema(item, parentType);\n })\n }\n}\n\nconst parseTable = (schema: TableSchema) => {\n return {\n tagName: 'ElTable',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item, 'table');\n })\n }\n}\n\n\nconst parseTips = (schema: TipsSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreTips',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\nconst parseText = (schema: TextSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreText',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\nconst injectFormProp = (schema: FormFieldSchema['children'], prop: string) => {\n return schema.map((item) => {\n return {\n ...item,\n properties: {\n ...item.properties,\n formProp: prop,\n },\n }\n })\n}\nconst parseFormItem = (schema: FormFieldSchema, parentType?: ParentScopeType) => {\n const prop = schema.properties.prop;\n const children = injectFormProp(schema.children, prop);\n const formatRules = (rules: FormFieldSchema['properties']['rules']) => {\n return rules?.map((item) => {\n if ('pattern' in item && item.pattern) {\n return {\n pattern: new RegExp(item.pattern),\n message: item.message,\n trigger: item.trigger,\n }\n }\n return item;\n })\n }\n return {\n tagName: 'ElFormItem',\n type: 'element',\n properties: {\n ...schema.properties,\n rules: formatRules(schema.properties.rules),\n },\n parentScope: parentType,\n children: [\n parseSchema(children[0] as InputSchema, parentType),\n ]\n }\n}\n\nconst parseRow = (schema: RowSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRow',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item, parentType);\n })\n }\n}\n\nconst parseCol = (schema: ColSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElCol',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children.map((item) => {\n return parseSchema(item as ElementSchema, parentType);\n })\n }\n}\n\nconst parseRadioGroup = (schema: RadioGroupSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRadioGroup',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.properties.options?.map((item) => {\n return parseSchema({\n type: 'radio',\n properties: item,\n } as RadioSchema, parentType);\n })\n }\n}\n\nconst parseRadio = (schema: RadioSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRadio',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\nconst parseTag = (schema: TagSchema, parentType?: ParentScopeType) => {\n const formatSchema = {\n tagName: 'ElTag',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children.map((item) => {\n return parseSchema(item as TextSchema, parentType);\n })\n }\n if (parentType === 'table') {\n formatSchema.value = schema.value;\n }\n return formatSchema;\n}\n\nexport const parseCorePilot = (schema: ViewSchema<any>) => {\n return parseSchema(schema);\n}"],"names":["parseSchema","schema","type","parseView","parseForm","parseCard","parseTable","parseInput","parseSelect","parseDate","parseButton","parseTips","parseText","parseFormItem","parseTableColumn","parseRow","parseCol","parseResult","parseTag","parseRadioGroup","parseRadio","_","console","error","parentType","tagName","properties","parentScope","title","children","map","item","fields","forEach","push","actionChild","class","actions","labelPosition","action","payload","_b","_a","call","prop","formProp","injectFormProp","rules","pattern","RegExp","message","trigger","options","formatSchema","value"],"mappings":"gFAyBA,MAAMA,EAAc,CAACC,EAAuBC,KAC1C,OAAQD,EAAOC,MACb,IAAK,OACH,OAAOC,EAAUF,GACnB,IAAK,OACH,OAAOG,EAAUH,GACnB,IAAK,OACH,OAAOI,EAAUJ,GACnB,IAAK,QACH,OAAOK,EAAWL,GACpB,IAAK,QACH,OAAOM,EAAWN,EAAQC,GAC5B,IAAK,SACH,OAAOM,EAAYP,EAAQC,GAC7B,IAAK,iBACH,OAAOO,EAAUR,EAAQC,GAC3B,IAAK,SACH,OAAOQ,EAAYT,EAAQC,GAC7B,IAAK,OACH,OAAOS,EAAUV,EAAQC,GAC3B,IAAK,OACH,OAAOU,EAAUX,EAAQC,GAC3B,IAAK,YACH,OAAOW,EAAcZ,EAAQC,GAC/B,IAAK,SACH,OAAOY,EAAiBb,EAAQC,GAClC,IAAK,MACH,OAAOa,EAASd,EAAQC,GAC1B,IAAK,MACH,OAAOc,EAASf,EAAQC,GAC1B,IAAK,SACH,OAAOe,EAAYhB,EAAQC,GAC7B,IAAK,MACH,OAAOgB,EAASjB,EAAQC,GAC1B,IAAK,aACH,OAAOiB,EAAgBlB,EAAQC,GACjC,IAAK,QACH,OAAOkB,EAAWnB,EAAQC,GAC5B,QACE,MAAMmB,EAAWpB,EACjBqB,QAAQC,MAAMF,KAKdJ,EAAc,CAAChB,EAAsBuB,KAClC,CACLC,QAAS,aACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,IAKXrB,EAAaF,IACV,CACLwB,QAAS,OACTvB,KAAM,UACNwB,WAAY,CACVE,MAAO3B,EAAO2B,OAEhBC,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,MAMnB3B,EAAaH,IACjB,MAAM4B,EAAkB,GACxB5B,EAAO+B,OAAOC,QAASF,IACrBF,EAASK,KAAKlC,EAAY+B,EAAM,WAElC,MAAMI,EAAc,CAClBV,QAAS,MACTvB,KAAM,UACNwB,WAAY,CACVU,MAAO,iBAETP,SAAU5B,EAAOoC,QAAQP,IAAKC,GACrB/B,EAAY+B,EAAM,UAI7B,OADAF,EAASK,KAAKC,GACP,CACLV,QAAS,SACTvB,KAAM,UACNwB,WAAY,CACVY,cAAe,WACZrC,EAAOyB,YAEZG,aAIEtB,EAAa,CAACN,EAAqBC,KAChC,CACLuB,QAAS,UACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAazB,IAIXM,EAAc,CAACP,EAAsBC,KAClC,CACLuB,QAAS,WACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAazB,IAIXO,EAAY,CAACR,EAA8BC,KACxC,CACLuB,QAAS,eACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAazB,IAIXQ,EAAc,CAACT,EAAsBC,aACzC,MAAO,CACLuB,QAAS,WACTvB,KAAM,UACNwB,WAAY,IACPzB,EAAOyB,WACVa,OAAQtC,EAAOsC,OACfC,QAASvC,EAAOuC,SAGlBb,YAAazB,EACb2B,SAAU,OAAAY,EAAA,OAAAC,EAAAzC,EAAO4B,mBAAUC,UAAjB,EAAAW,EAAAE,KAAAD,EAAwBX,GACzB/B,EAAY+B,EAAM7B,MAKzBG,EAAaJ,IACV,CACLwB,QAAS,SACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBG,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,MAKnBjB,EAAmB,CAACb,EAA2BuB,WACnD,MAAO,CACLC,QAAS,gBACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,EACbK,SAAU,OAAAa,EAAAzC,EAAO4B,eAAP,EAAAa,EAAiBZ,IAAKC,GACvB/B,EAAY+B,EAAMP,MAKzBlB,EAAcL,IACX,CACLwB,QAAS,UACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBG,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,EAAM,YAMzBpB,EAAY,CAACV,EAAoBuB,KAC9B,CACLC,QAAS,WACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,IAIXZ,EAAY,CAACX,EAAoBuB,KAC9B,CACLC,QAAS,WACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,IAcXX,EAAgB,CAACZ,EAAyBuB,KAC9C,MAAMoB,EAAO3C,EAAOyB,WAAWkB,KACzBf,EAbe,EAAC5B,EAAqC2C,IACpD3C,EAAO6B,IAAKC,IACV,IACFA,EACHL,WAAY,IACPK,EAAKL,WACRmB,SAAUD,MAOCE,CAAe7C,EAAO4B,SAAUe,GAajD,MAAO,CACLnB,QAAS,aACTvB,KAAM,UACNwB,WAAY,IACPzB,EAAOyB,WACVqB,OAjBiBA,EAiBE9C,EAAOyB,WAAWqB,MAhBhC,MAAAA,OAAA,EAAAA,EAAOjB,IAAKC,GACb,YAAaA,GAAQA,EAAKiB,QACrB,CACLA,QAAS,IAAIC,OAAOlB,EAAKiB,SACzBE,QAASnB,EAAKmB,QACdC,QAASpB,EAAKoB,SAGXpB,KAUTJ,YAAaH,EACbK,SAAU,CACR7B,EAAY6B,EAAS,GAAmBL,KArBxB,IAACuB,GA0BjBhC,EAAW,CAACd,EAAmBuB,KAC5B,CACLC,QAAS,QACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBG,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,EAAMP,MAKzBR,EAAW,CAACf,EAAmBuB,KAC5B,CACLC,QAAS,QACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,EACbK,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,EAAuBP,MAK1CL,EAAkB,CAAClB,EAA0BuB,WACjD,MAAO,CACLC,QAAS,eACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,EACbK,SAAU,OAAAa,EAAAzC,EAAOyB,WAAW0B,cAAlB,EAAAV,EAA2BZ,IAAKC,GACjC/B,EAAY,CACjBE,KAAM,QACNwB,WAAYK,GACIP,MAKlBJ,EAAa,CAACnB,EAAqBuB,KAChC,CACLC,QAAS,UACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,IAIXN,EAAW,CAACjB,EAAmBuB,KACnC,MAAM6B,EAAe,CACnB5B,QAAS,QACTvB,KAAM,UACNwB,WAAYzB,EAAOyB,WACnBC,YAAaH,EACbK,SAAU5B,EAAO4B,SAASC,IAAKC,GACtB/B,EAAY+B,EAAoBP,KAM3C,MAHmB,UAAfA,IACF6B,EAAaC,MAAQrD,EAAOqD,OAEvBD,0BAGsBpD,GACtBD,EAAYC"}
|
|
1
|
+
{"version":3,"file":"parseCorePilotSchema.js","sources":["../../../../../src/components/x-markdown/utils/parseCorePilotSchema.ts"],"sourcesContent":["import { \n FormSchema, \n ViewSchema,\n FormFieldSchema, \n CardSchema, \n ButtonSchema, \n TableSchema, \n TipsSchema, \n TextSchema, \n InputSchema, \n SelectSchema, \n DateTimePickerSchema, \n TableColumnSchema, \n RowSchema, \n ColSchema, \n ResultSchema, \n TagSchema,\n RadioGroupSchema,\n RadioSchema,\n EChartsSchema,\n} from '@/types/index';\n\ntype ElementSchema = \n | ViewSchema<any> \n | FormSchema \n | FormFieldSchema \n | CardSchema \n | ButtonSchema \n | TableSchema \n | TipsSchema \n | TextSchema \n | InputSchema \n | SelectSchema \n | DateTimePickerSchema \n | TableColumnSchema \n | RowSchema \n | ColSchema \n | ResultSchema \n | TagSchema \n | RadioGroupSchema \n | RadioSchema\n | EChartsSchema;\n\ntype ParentScopeType = 'form' | 'table';\n\nconst parseSchema = (schema: ElementSchema, type?: ParentScopeType) => {\n switch (schema.type) {\n case 'view':\n return parseView(schema);\n case 'form':\n return parseForm(schema);\n case 'card':\n return parseCard(schema);\n case 'table':\n return parseTable(schema);\n case 'input':\n return parseInput(schema, type);\n case 'select':\n return parseSelect(schema, type);\n case 'dateTimePicker':\n return parseDate(schema, type);\n case 'button':\n return parseButton(schema, type);\n case 'tips':\n return parseTips(schema, type);\n case 'text':\n return parseText(schema, type);\n case 'formfield':\n return parseFormItem(schema, type);\n case 'column':\n return parseTableColumn(schema, type);\n case 'row':\n return parseRow(schema, type);\n case 'col':\n return parseCol(schema, type);\n case 'result':\n return parseResult(schema, type);\n case 'tag':\n return parseTag(schema, type);\n case 'radioGroup':\n return parseRadioGroup(schema, type);\n case 'radio':\n return parseRadio(schema, type);\n case 'echart':\n return parseECharts(schema, type);\n default:\n const _: never = schema;\n console.error(_);\n }\n}\n\n// result组件解析\nconst parseResult = (schema: ResultSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreResult',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\n// view组件解析\nconst parseView = (schema: ViewSchema<any>) => {\n return {\n tagName: 'view',\n type: 'element',\n properties: {\n title: schema.title,\n },\n children: schema.children.map((item) => {\n return parseSchema(item);\n })\n }\n}\n\n// form组件解析\nconst parseForm = (schema: FormSchema) => {\n const children: any[] = [] \n schema.fields.forEach((item) => {\n children.push(parseSchema(item, 'form'));\n });\n const actionChild = {\n tagName: 'div',\n type: 'element',\n properties: {\n class: 'hitl-btn-list',\n },\n children: schema.actions.map((item) => {\n return parseSchema(item, 'form');\n })\n }\n children.push(actionChild);\n return {\n tagName: 'ElForm',\n type: 'element',\n properties: {\n labelPosition: 'right',\n ...schema.properties,\n },\n children,\n }\n}\n\nconst parseInput = (schema: InputSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElInput',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseSelect = (schema: SelectSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElSelect',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseDate = (schema: DateTimePickerSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElDatePicker',\n type: 'element',\n properties: schema.properties,\n parentScope: type,\n }\n}\n\nconst parseButton = (schema: ButtonSchema, type?: ParentScopeType) => {\n return {\n tagName: 'ElButton',\n type: 'element',\n properties: {\n ...schema.properties,\n action: schema.action,\n payload: schema.payload,\n },\n // TODO 记录父级作用域,用于在form、table 组件中使用\n parentScope: type,\n children: schema.children?.map?.((item) => {\n return parseSchema(item, type);\n })\n }\n}\n\nconst parseCard = (schema: CardSchema) => {\n return {\n tagName: 'ElCard',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item);\n })\n }\n}\n\nconst parseTableColumn = (schema: TableColumnSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElTableColumn',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children?.map((item) => {\n return parseSchema(item, parentType);\n })\n }\n}\n\nconst parseTable = (schema: TableSchema) => {\n return {\n tagName: 'ElTable',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item, 'table');\n })\n }\n}\n\n\nconst parseTips = (schema: TipsSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreTips',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\nconst parseText = (schema: TextSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreText',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\nconst injectFormProp = (schema: FormFieldSchema['children'], prop: string) => {\n return schema.map((item) => {\n return {\n ...item,\n properties: {\n ...item.properties,\n formProp: prop,\n },\n }\n })\n}\nconst parseFormItem = (schema: FormFieldSchema, parentType?: ParentScopeType) => {\n const prop = schema.properties.prop;\n const children = injectFormProp(schema.children, prop);\n const formatRules = (rules: FormFieldSchema['properties']['rules']) => {\n return rules?.map((item) => {\n if ('pattern' in item && item.pattern) {\n return {\n pattern: new RegExp(item.pattern),\n message: item.message,\n trigger: item.trigger,\n }\n }\n return item;\n })\n }\n return {\n tagName: 'ElFormItem',\n type: 'element',\n properties: {\n ...schema.properties,\n rules: formatRules(schema.properties.rules),\n },\n parentScope: parentType,\n children: [\n parseSchema(children[0] as InputSchema, parentType),\n ]\n }\n}\n\nconst parseRow = (schema: RowSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRow',\n type: 'element',\n properties: schema.properties,\n children: schema.children.map((item) => {\n return parseSchema(item, parentType);\n })\n }\n}\n\nconst parseCol = (schema: ColSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElCol',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children.map((item) => {\n return parseSchema(item as ElementSchema, parentType);\n })\n }\n}\n\nconst parseRadioGroup = (schema: RadioGroupSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRadioGroup',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.properties.options?.map((item) => {\n return parseSchema({\n type: 'radio',\n properties: item,\n } as RadioSchema, parentType);\n })\n }\n}\n\nconst parseRadio = (schema: RadioSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'ElRadio',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n }\n}\n\nconst parseTag = (schema: TagSchema, parentType?: ParentScopeType) => {\n const formatSchema = {\n tagName: 'ElTag',\n type: 'element',\n properties: schema.properties,\n parentScope: parentType,\n children: schema.children.map((item) => {\n return parseSchema(item as TextSchema, parentType);\n })\n }\n if (parentType === 'table') {\n formatSchema.value = schema.value;\n }\n return formatSchema;\n}\n\n// ECharts 图表解析\nconst parseECharts = (schema: EChartsSchema, parentType?: ParentScopeType) => {\n return {\n tagName: 'CoreChart',\n type: 'element' as const,\n properties: schema.properties,\n parentScope: parentType,\n };\n}\n\nexport const parseCorePilot = (schema: ViewSchema<any>) => {\n return parseSchema(schema);\n}"],"names":["parseSchema","schema","type","parseView","parseForm","parseCard","parseTable","parseInput","parseSelect","parseDate","parseButton","parseTips","parseText","parseFormItem","parseTableColumn","parseRow","parseCol","parseResult","parseTag","parseRadioGroup","parseRadio","parseECharts","_","console","error","parentType","tagName","properties","parentScope","title","children","map","item","fields","forEach","push","actionChild","class","actions","labelPosition","action","payload","_b","_a","call","prop","formProp","injectFormProp","rules","pattern","RegExp","message","trigger","options","formatSchema","value"],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./components/index.js"),r=require("./components/bubble-list/index.js"),o=require("./components/x-markdown/index.js"),s=require("./components/file-preview/index.js"),t=require("./components/editor-sender/index.js"),n=require("./components/file-card/index.js"),i=require("./components/core-text/index.js"),p=require("./components/core-tips/index.js"),x=require("./components/core-result/index.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./components/index.js"),r=require("./components/bubble-list/index.js"),o=require("./components/x-markdown/index.js"),s=require("./components/file-preview/index.js"),t=require("./components/editor-sender/index.js"),n=require("./components/file-card/index.js"),i=require("./components/core-text/index.js"),p=require("./components/core-tips/index.js"),x=require("./components/core-result/index.js"),c=require("./components/core-table/index.js"),d=require("./components/core-chart/index.js"),l=(r,o)=>{Object.keys(e).forEach(o=>{r.component(o,e[o])})},u={install:l};exports.BubbleList=r,exports.XMarkdown=o,exports.FilePreview=s,exports.EditorSender=t,exports.FileCard=n,exports.CoreText=i,exports.CoreTips=p,exports.CoreResult=x,exports.CoreTable=c,exports.CoreChart=d,exports.default=u,exports.install=l;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { type Plugin } from 'vue';\nimport * as Components from './components';\n\nexport * from './components';\n\nexport const install: Plugin = (app, options) => {\n Object.keys(Components).forEach((name) => {\n app.component(name, Components[name]);\n });\n};\n\nexport default {\n install,\n} as Plugin;\n"],"names":["install","app","options","Object","keys","Components","forEach","name","component","index"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { type Plugin } from 'vue';\nimport * as Components from './components';\n\nexport * from './components';\n\nexport const install: Plugin = (app, options) => {\n Object.keys(Components).forEach((name) => {\n app.component(name, Components[name]);\n });\n};\n\nexport default {\n install,\n} as Plugin;\n"],"names":["install","app","options","Object","keys","Components","forEach","name","component","index"],"mappings":"qmBAKaA,EAAkB,CAACC,EAAKC,KACnCC,OAAOC,KAAKC,GAAYC,QAASC,IAC/BN,EAAIO,UAAUD,EAAMF,EAAWE,OAInCE,EAAe,CACbT"}
|