@core-pilot/client-vue 0.0.5 → 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 +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { defineComponent, ref, onMounted, onUnmounted, watch, createVNode } from "vue";
|
|
2
|
+
import "../../node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/index.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import { init, registerTheme } from "../../node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/lib/core/echarts.js";
|
|
5
|
+
const CoreChart = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "CoreChart",
|
|
7
|
+
props: {
|
|
8
|
+
autoResize: {
|
|
9
|
+
type: Boolean,
|
|
10
|
+
default: true
|
|
11
|
+
},
|
|
12
|
+
loading: {
|
|
13
|
+
type: Boolean,
|
|
14
|
+
default: false
|
|
15
|
+
},
|
|
16
|
+
style: {
|
|
17
|
+
type: Object,
|
|
18
|
+
default: () => ({})
|
|
19
|
+
},
|
|
20
|
+
option: {
|
|
21
|
+
type: Object,
|
|
22
|
+
default: () => ({})
|
|
23
|
+
},
|
|
24
|
+
theme: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: void 0
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
setup(props) {
|
|
30
|
+
const chartRef = ref(null);
|
|
31
|
+
const chartInstance = ref(null);
|
|
32
|
+
let resizeObserver = null;
|
|
33
|
+
const initChart = () => {
|
|
34
|
+
if (!chartRef.value) return;
|
|
35
|
+
const {
|
|
36
|
+
theme,
|
|
37
|
+
option
|
|
38
|
+
} = props || {};
|
|
39
|
+
chartInstance.value = init(chartRef.value, typeof theme === "string" ? theme : void 0, {
|
|
40
|
+
renderer: "canvas"
|
|
41
|
+
});
|
|
42
|
+
if (theme && typeof theme === "object") {
|
|
43
|
+
registerTheme("custom", theme);
|
|
44
|
+
chartInstance.value.dispose();
|
|
45
|
+
chartInstance.value = init(chartRef.value, "custom");
|
|
46
|
+
}
|
|
47
|
+
if (option) {
|
|
48
|
+
chartInstance.value.setOption(option);
|
|
49
|
+
}
|
|
50
|
+
if (props.loading) {
|
|
51
|
+
chartInstance.value.showLoading();
|
|
52
|
+
} else {
|
|
53
|
+
chartInstance.value.hideLoading();
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const updateChart = () => {
|
|
57
|
+
if (!chartInstance.value) return;
|
|
58
|
+
const {
|
|
59
|
+
option,
|
|
60
|
+
loading
|
|
61
|
+
} = props;
|
|
62
|
+
if (option) {
|
|
63
|
+
chartInstance.value.setOption(option, true);
|
|
64
|
+
}
|
|
65
|
+
if (loading) {
|
|
66
|
+
chartInstance.value.showLoading();
|
|
67
|
+
} else {
|
|
68
|
+
chartInstance.value.hideLoading();
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const resizeChart = () => {
|
|
72
|
+
if (chartInstance.value) {
|
|
73
|
+
chartInstance.value.resize();
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const observeResize = () => {
|
|
77
|
+
if (!chartRef.value || !props.autoResize) return;
|
|
78
|
+
resizeObserver = new ResizeObserver(() => {
|
|
79
|
+
resizeChart();
|
|
80
|
+
});
|
|
81
|
+
resizeObserver.observe(chartRef.value);
|
|
82
|
+
};
|
|
83
|
+
onMounted(() => {
|
|
84
|
+
initChart();
|
|
85
|
+
observeResize();
|
|
86
|
+
if (props.autoResize !== false) {
|
|
87
|
+
window.addEventListener("resize", resizeChart);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
onUnmounted(() => {
|
|
91
|
+
if (resizeObserver && chartRef.value) {
|
|
92
|
+
resizeObserver.unobserve(chartRef.value);
|
|
93
|
+
resizeObserver.disconnect();
|
|
94
|
+
}
|
|
95
|
+
if (props.autoResize !== false) {
|
|
96
|
+
window.removeEventListener("resize", resizeChart);
|
|
97
|
+
}
|
|
98
|
+
if (chartInstance.value) {
|
|
99
|
+
chartInstance.value.dispose();
|
|
100
|
+
chartInstance.value = null;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
watch(() => props.option, () => {
|
|
104
|
+
updateChart();
|
|
105
|
+
}, {
|
|
106
|
+
immediate: true,
|
|
107
|
+
deep: true
|
|
108
|
+
});
|
|
109
|
+
const getContainerStyle = () => {
|
|
110
|
+
const style = props.style || {};
|
|
111
|
+
return {
|
|
112
|
+
width: (style == null ? void 0 : style.width) || "100%",
|
|
113
|
+
height: (style == null ? void 0 : style.height) || "400px",
|
|
114
|
+
minHeight: (style == null ? void 0 : style.minHeight) || "300px",
|
|
115
|
+
...style
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
return () => createVNode("div", {
|
|
119
|
+
"class": "core-chart-container"
|
|
120
|
+
}, [createVNode("div", {
|
|
121
|
+
"ref": chartRef,
|
|
122
|
+
"class": "core-chart",
|
|
123
|
+
"style": getContainerStyle()
|
|
124
|
+
}, null)]);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
export {
|
|
128
|
+
CoreChart as default
|
|
129
|
+
};
|
|
130
|
+
//# 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":["name","props","autoResize","type","Boolean","default","loading","style","Object","option","theme","String","undefined","setup","chartRef","ref","chartInstance","resizeObserver","initChart","value","echarts","renderer","dispose","setOption","showLoading","hideLoading","updateChart","resizeChart","resize","observeResize","ResizeObserver","observe","onMounted","window","addEventListener","onUnmounted","unobserve","disconnect","removeEventListener","watch","immediate","deep","getContainerStyle","width","height","minHeight","_createVNode"],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ import { default as default7 } from "./core-text/index.js";
|
|
|
7
7
|
import { default as default8 } from "./core-tips/index.js";
|
|
8
8
|
import { default as default9 } from "./core-result/index.js";
|
|
9
9
|
import { default as default10 } from "./core-table/index.js";
|
|
10
|
+
import { default as default11 } from "./core-chart/index.js";
|
|
10
11
|
export {
|
|
11
12
|
default2 as BubbleList,
|
|
13
|
+
default11 as CoreChart,
|
|
12
14
|
default9 as CoreResult,
|
|
13
15
|
default10 as CoreTable,
|
|
14
16
|
default7 as CoreText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -35,6 +35,7 @@ import CoreText from "../core-text/index.js";
|
|
|
35
35
|
import CoreTips from "../core-tips/index.js";
|
|
36
36
|
import CoreResult from "../core-result/index.js";
|
|
37
37
|
import CoreTable from "../core-table/index.js";
|
|
38
|
+
import CoreChart from "../core-chart/index.js";
|
|
38
39
|
/* empty css */
|
|
39
40
|
import zhCn from "../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/es/locale/lang/zh-cn.js";
|
|
40
41
|
import { unified } from "../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js";
|
|
@@ -622,17 +623,26 @@ ${divContent}${divEnd}`;
|
|
|
622
623
|
...node.properties
|
|
623
624
|
});
|
|
624
625
|
}
|
|
626
|
+
if (node.tagName === "CoreChart") {
|
|
627
|
+
return h(CoreChart, {
|
|
628
|
+
...node.properties
|
|
629
|
+
});
|
|
630
|
+
}
|
|
625
631
|
if (node.tagName === "pre") {
|
|
626
632
|
const codeNode = (_q = node.children) == null ? void 0 : _q.find((child) => child.tagName === "code");
|
|
627
633
|
if (codeNode) {
|
|
628
634
|
if ((_s = (_r = codeNode.properties) == null ? void 0 : _r.className) == null ? void 0 : _s.includes("language-CorePilot")) {
|
|
629
635
|
const code = ((_u = (_t = codeNode.children) == null ? void 0 : _t[0]) == null ? void 0 : _u.value) || "";
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
+
try {
|
|
637
|
+
const schema = JSON.parse(code);
|
|
638
|
+
const viewTree = parseCorePilot(schema);
|
|
639
|
+
const children2 = hastToVNode(viewTree, curInit);
|
|
640
|
+
return h("div", {
|
|
641
|
+
class: "hitl-wrapper"
|
|
642
|
+
}, [children2]);
|
|
643
|
+
} catch (error) {
|
|
644
|
+
return null;
|
|
645
|
+
}
|
|
636
646
|
}
|
|
637
647
|
}
|
|
638
648
|
}
|
|
@@ -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":["checkAndReturnRefList","text","reg","match","exec","refListStr","refList","JSON","parse","error","name","props","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","streamCall","stream","value","streamGener","createStreamGenerator","updateSummaryClasses","mdText","summaryDivReg","isFirstSummary","replace","summaryTag","divContent","divEnd","isDivComplete","updatedSummary","formatText","computed","content","includes","res","duration","toFixed","length","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","getRefConfig","refContainer","querySelector","textContent","renderComplete","debounce","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleAClick","stopPropagation","preventDefault","href","id","title","ext","split","pop","window","open","ElMessage","btnClick","index","action","payload","parentScope","validate","handleClick","highlight","page","source","data","getContentText","innerText","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","newImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","properties","push","Array","isArray","children","child","computedForm","mdAst","preNodes","findPreNodes","node","preNode","codeNode","className","code","console","run","nextTick","details","summary","Accordion","hastToVNode","row","blackTagNames","map","h","class","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","ElForm","set","model","ElFormItem","ElButton","onClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","findIndex","prop","CoreText","CoreTips","CoreResult","viewTree","parseCorePilot","trim","onUpdated","render","_createVNode"],"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":["checkAndReturnRefList","text","reg","match","exec","refListStr","refList","JSON","parse","error","name","props","type","String","default","autoHideThinking","Boolean","typing","speed","Number","isHistoryMessage","expose","emits","setup","emit","container","useTemplateRef","startTime","ref","Date","now","endTime","context","pendingImages","Set","isInitAnimation","tagComplete","hitlData","formRefs","useTemplateRefsList","curIndex","curInit","ast","streamCall","stream","value","streamGener","createStreamGenerator","updateSummaryClasses","mdText","summaryDivReg","isFirstSummary","replace","summaryTag","divContent","divEnd","isDivComplete","updatedSummary","formatText","computed","content","includes","res","duration","toFixed","length","disabled","watch","v","o","oldText","startsWith","reset","update","stop","checkReg","test","setSpeed","immediate","refConfig","getRefConfig","refContainer","querySelector","textContent","renderComplete","debounce","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleAClick","stopPropagation","preventDefault","href","id","title","ext","split","pop","window","open","ElMessage","btnClick","index","action","payload","parentScope","validate","handleClick","highlight","page","source","data","getContentText","innerText","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","newImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","properties","push","Array","isArray","children","child","computedForm","mdAst","preNodes","findPreNodes","node","preNode","codeNode","className","code","console","run","nextTick","details","summary","Accordion","hastToVNode","row","blackTagNames","map","h","class","ElConfigProvider","locale","zhCN","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","ElForm","set","model","ElFormItem","ElButton","onClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","CoreTable","ElTableColumn","scope","findIndex","prop","CoreText","CoreTips","CoreResult","CoreChart","viewTree","parseCorePilot","trim","onUpdated","render","_createVNode"],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ const parseSchema = (schema, type) => {
|
|
|
36
36
|
return parseRadioGroup(schema, type);
|
|
37
37
|
case "radio":
|
|
38
38
|
return parseRadio(schema, type);
|
|
39
|
+
case "echart":
|
|
40
|
+
return parseECharts(schema, type);
|
|
39
41
|
default:
|
|
40
42
|
const _ = schema;
|
|
41
43
|
console.error(_);
|
|
@@ -274,6 +276,14 @@ const parseTag = (schema, parentType) => {
|
|
|
274
276
|
}
|
|
275
277
|
return formatSchema;
|
|
276
278
|
};
|
|
279
|
+
const parseECharts = (schema, parentType) => {
|
|
280
|
+
return {
|
|
281
|
+
tagName: "CoreChart",
|
|
282
|
+
type: "element",
|
|
283
|
+
properties: schema.properties,
|
|
284
|
+
parentScope: parentType
|
|
285
|
+
};
|
|
286
|
+
};
|
|
277
287
|
const parseCorePilot = (schema) => {
|
|
278
288
|
return parseSchema(schema);
|
|
279
289
|
};
|
|
@@ -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":[],"mappings":"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"}
|
|
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":[],"mappings":"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"}
|
package/dist/es/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { default as default7 } from "./components/core-text/index.js";
|
|
|
8
8
|
import { default as default8 } from "./components/core-tips/index.js";
|
|
9
9
|
import { default as default9 } from "./components/core-result/index.js";
|
|
10
10
|
import { default as default10 } from "./components/core-table/index.js";
|
|
11
|
+
import { default as default11 } from "./components/core-chart/index.js";
|
|
11
12
|
const install = (app, options) => {
|
|
12
13
|
Object.keys(index$1).forEach((name) => {
|
|
13
14
|
app.component(name, index$1[name]);
|
|
@@ -18,6 +19,7 @@ const index = {
|
|
|
18
19
|
};
|
|
19
20
|
export {
|
|
20
21
|
default2 as BubbleList,
|
|
22
|
+
default11 as CoreChart,
|
|
21
23
|
default9 as CoreResult,
|
|
22
24
|
default10 as CoreTable,
|
|
23
25
|
default7 as CoreText,
|
package/dist/es/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":["Components"],"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":["Components"],"mappings":";;;;;;;;;;;AAKO,MAAM,UAAkB,CAAC,KAAK,YAAY;AAC/C,SAAO,KAAKA,OAAU,EAAE,QAAQ,CAAC,SAAS;AACxC,QAAI,UAAU,MAAMA,QAAW,IAAI,CAAC;AAAA,EACtC,CAAC;AACH;AAEA,MAAA,QAAe;AAAA,EACb;AACF;"}
|