@core-pilot/client-vue 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/client-vue.css +1 -1
  2. package/dist/cjs/components/bubble-list/index.js +1 -1
  3. package/dist/cjs/components/bubble-list/index.js.map +1 -1
  4. package/dist/cjs/components/core-table/index.js +2 -0
  5. package/dist/cjs/components/core-table/index.js.map +1 -0
  6. package/dist/cjs/components/core-tips/index.js.map +1 -1
  7. package/dist/cjs/components/editor-sender/index.js +1 -1
  8. package/dist/cjs/components/editor-sender/index.js.map +1 -1
  9. package/dist/cjs/components/index.js +1 -1
  10. package/dist/cjs/components/x-markdown/index.js +1 -1
  11. package/dist/cjs/components/x-markdown/index.js.map +1 -1
  12. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js +1 -1
  13. package/dist/cjs/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/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 +2 -0
  17. package/dist/cjs/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.map +1 -0
  18. package/dist/cjs/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 +2 -0
  19. package/dist/cjs/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.map +1 -0
  20. package/dist/es/client-vue.css +1 -1
  21. package/dist/es/components/bubble-list/index.js +1 -0
  22. package/dist/es/components/bubble-list/index.js.map +1 -1
  23. package/dist/es/components/core-table/index.js +107 -0
  24. package/dist/es/components/core-table/index.js.map +1 -0
  25. package/dist/es/components/core-tips/index.js.map +1 -1
  26. package/dist/es/components/editor-sender/index.js +34 -3
  27. package/dist/es/components/editor-sender/index.js.map +1 -1
  28. package/dist/es/components/index.js +2 -0
  29. package/dist/es/components/index.js.map +1 -1
  30. package/dist/es/components/x-markdown/index.js +48 -25
  31. package/dist/es/components/x-markdown/index.js.map +1 -1
  32. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js +65 -54
  33. package/dist/es/components/x-markdown/utils/parseCorePilotSchema.js.map +1 -1
  34. package/dist/es/index.js +2 -0
  35. package/dist/es/index.js.map +1 -1
  36. package/dist/es/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 +189 -0
  37. package/dist/es/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.map +1 -0
  38. package/dist/es/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 +2 -0
  39. package/dist/es/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.map +1 -0
  40. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, createVNode, useTemplateRef, ref, computed, watch, onMounted, onBeforeUnmount, nextTick, onUpdated, h } from "vue";
2
2
  import debounce from "../../_virtual/debounce.js";
3
3
  import { useTemplateRefsList } from "../../node_modules/.pnpm/@vueuse_core@14.0.0_vue@3.5.24_typescript@5.6.3_/node_modules/@vueuse/core/dist/index.js";
4
- import { ElTimeline, ElRow, ElCol, ElCard, ElForm, ElFormItem, ElButton, ElSelect, ElDatePicker, ElInput, ElRadioGroup, ElRadio, ElTable, ElTableColumn, ElMessage } from "element-plus";
4
+ import { ElTimeline, ElRow, ElCol, ElCard, ElForm, ElFormItem, ElButton, ElSelect, ElDatePicker, ElInput, ElRadioGroup, ElRadio, ElTableColumn, ElConfigProvider, ElMessage } from "element-plus";
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
@@ -18,15 +18,14 @@ import "../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3
18
18
  /* empty css */
19
19
  import "../../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";
20
20
  /* empty css */
21
- /* empty css */
22
- /* empty css */
23
- import "../../node_modules/.pnpm/element-plus@2.11.8_vue@3.5.24_typescript@5.6.3_/node_modules/element-plus/theme-chalk/src/tooltip.scss.js";
24
21
  /* empty css */
25
22
  /* empty css */
23
+ /* empty css */
26
24
  /* empty css */
27
25
  /* empty css */
28
26
  /* empty css */
29
27
  /* empty css */
28
+ import "../../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";
30
29
  /* empty css */
31
30
  /* empty css */
32
31
  import { createStreamGenerator } from "./utils/mockStream.js";
@@ -35,7 +34,9 @@ import { Accordion } from "./utils/animation.js";
35
34
  import CoreText from "../core-text/index.js";
36
35
  import CoreTips from "../core-tips/index.js";
37
36
  import CoreResult from "../core-result/index.js";
37
+ import CoreTable from "../core-table/index.js";
38
38
  /* empty css */
39
+ 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";
39
40
  import { unified } from "../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js";
40
41
  import remarkParse from "../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js";
41
42
  import remarkBreaks from "../../node_modules/.pnpm/remark-breaks@4.0.0/node_modules/remark-breaks/lib/index.js";
@@ -78,6 +79,10 @@ const XMarkdown = /* @__PURE__ */ defineComponent({
78
79
  speed: {
79
80
  type: Number,
80
81
  default: 200
82
+ },
83
+ isHistoryMessage: {
84
+ type: Boolean,
85
+ default: false
81
86
  }
82
87
  },
83
88
  expose: ["getContentText"],
@@ -141,18 +146,27 @@ ${divContent}${divEnd}`;
141
146
  }
142
147
  return content;
143
148
  });
144
- watch(() => [props.text, props.typing], ([text, typing]) => {
145
- var _a, _b, _c;
149
+ const disabled = computed(() => {
150
+ return props.isHistoryMessage;
151
+ });
152
+ watch(() => [props.text, props.typing], (v, o) => {
153
+ var _a, _b, _c, _d;
154
+ const [text, typing] = v;
155
+ const [oldText] = o || [];
156
+ if (!text.startsWith(oldText)) {
157
+ (_a = streamGener.value) == null ? void 0 : _a.reset();
158
+ context.value = "";
159
+ }
146
160
  if (text) {
147
- (_a = streamGener.value) == null ? void 0 : _a.update(text);
161
+ (_b = streamGener.value) == null ? void 0 : _b.update(text);
148
162
  if (!typing) {
149
- (_b = streamGener.value) == null ? void 0 : _b.stop();
163
+ (_c = streamGener.value) == null ? void 0 : _c.stop();
150
164
  return;
151
165
  }
152
166
  const checkReg = /<summary>资料整合<\/summary>\r?\n(.|\s)+?/;
153
167
  if (!tagComplete.value && checkReg.test(text)) {
154
168
  tagComplete.value = true;
155
- (_c = streamGener.value) == null ? void 0 : _c.setSpeed(500);
169
+ (_d = streamGener.value) == null ? void 0 : _d.setSpeed(500);
156
170
  return;
157
171
  }
158
172
  }
@@ -231,7 +245,7 @@ ${divContent}${divEnd}`;
231
245
  });
232
246
  return;
233
247
  };
234
- const btnClick = async (index, action, payload) => {
248
+ const btnClick = async (index, action, payload, parentScope) => {
235
249
  var _a;
236
250
  if (action === "inner_next") {
237
251
  curIndex.value += 1;
@@ -245,7 +259,7 @@ ${divContent}${divEnd}`;
245
259
  action,
246
260
  payload: {}
247
261
  };
248
- if (payload) {
262
+ if (payload && parentScope !== "form") {
249
263
  res = {
250
264
  action,
251
265
  payload
@@ -410,7 +424,7 @@ ${divContent}${divEnd}`;
410
424
  immediate: true
411
425
  });
412
426
  const hastToVNode = (node, index, row) => {
413
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
427
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
414
428
  if (!node) return null;
415
429
  let children = [];
416
430
  const blackTagNames = ["sub", "pre", "text", "ElForm"];
@@ -421,7 +435,9 @@ ${divContent}${divEnd}`;
421
435
  case "root":
422
436
  return h("div", {
423
437
  class: "markdown-body"
424
- }, children);
438
+ }, h(ElConfigProvider, {
439
+ locale: zhCn
440
+ }, children));
425
441
  case "element":
426
442
  if (node.tagName === "sub") {
427
443
  const formatChildren = [{
@@ -495,7 +511,8 @@ ${divContent}${divEnd}`;
495
511
  return h(ElForm, {
496
512
  ref: formRefs.value.set,
497
513
  model: hitlData.value[index],
498
- ...node.properties
514
+ ...node.properties,
515
+ disabled: ((_e = node.properties) == null ? void 0 : _e.disabled) || disabled.value
499
516
  }, children2);
500
517
  }
501
518
  if (node.tagName === "ElFormItem") {
@@ -504,22 +521,24 @@ ${divContent}${divEnd}`;
504
521
  }, children);
505
522
  }
506
523
  if (node.tagName === "ElButton") {
507
- let payload = (_e = node.properties) == null ? void 0 : _e.payload;
524
+ let payload = (_f = node.properties) == null ? void 0 : _f.payload;
508
525
  if (node.parentScope === "table") {
509
526
  payload = row;
510
527
  }
511
528
  return h(ElButton, {
512
529
  ...node.properties,
530
+ disabled: ((_g = node.properties) == null ? void 0 : _g.disabled) || disabled.value,
513
531
  onClick: () => {
514
532
  var _a2;
515
- btnClick(index, (_a2 = node.properties) == null ? void 0 : _a2.action, payload);
533
+ btnClick(index, (_a2 = node.properties) == null ? void 0 : _a2.action, payload, node.parentScope);
516
534
  }
517
535
  }, children);
518
536
  }
519
537
  if (node.tagName === "ElSelect") {
520
538
  return h(ElSelect, {
521
539
  ...node.properties,
522
- modelValue: hitlData.value[index][(_f = node.properties) == null ? void 0 : _f.formProp],
540
+ disabled: ((_h = node.properties) == null ? void 0 : _h.disabled) || disabled.value,
541
+ modelValue: hitlData.value[index][(_i = node.properties) == null ? void 0 : _i.formProp],
523
542
  "onUpdate:modelValue": (value) => {
524
543
  var _a2;
525
544
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -529,7 +548,8 @@ ${divContent}${divEnd}`;
529
548
  if (node.tagName === "ElDatePicker") {
530
549
  return h(ElDatePicker, {
531
550
  ...node.properties,
532
- modelValue: hitlData.value[index][(_g = node.properties) == null ? void 0 : _g.formProp],
551
+ disabled: ((_j = node.properties) == null ? void 0 : _j.disabled) || disabled.value,
552
+ modelValue: hitlData.value[index][(_k = node.properties) == null ? void 0 : _k.formProp],
533
553
  "onUpdate:modelValue": (value) => {
534
554
  var _a2;
535
555
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -539,7 +559,8 @@ ${divContent}${divEnd}`;
539
559
  if (node.tagName === "ElInput") {
540
560
  return h(ElInput, {
541
561
  ...node.properties,
542
- modelValue: hitlData.value[index][(_h = node.properties) == null ? void 0 : _h.formProp],
562
+ disabled: ((_l = node.properties) == null ? void 0 : _l.disabled) || disabled.value,
563
+ modelValue: hitlData.value[index][(_m = node.properties) == null ? void 0 : _m.formProp],
543
564
  "onUpdate:modelValue": (value) => {
544
565
  var _a2;
545
566
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -549,7 +570,8 @@ ${divContent}${divEnd}`;
549
570
  if (node.tagName === "ElRadioGroup") {
550
571
  return h(ElRadioGroup, {
551
572
  ...node.properties,
552
- modelValue: hitlData.value[index][(_i = node.properties) == null ? void 0 : _i.formProp],
573
+ disabled: ((_n = node.properties) == null ? void 0 : _n.disabled) || disabled.value,
574
+ modelValue: hitlData.value[index][(_o = node.properties) == null ? void 0 : _o.formProp],
553
575
  "onUpdate:modelValue": (value) => {
554
576
  var _a2;
555
577
  hitlData.value[index][(_a2 = node.properties) == null ? void 0 : _a2.formProp] = value;
@@ -558,11 +580,12 @@ ${divContent}${divEnd}`;
558
580
  }
559
581
  if (node.tagName === "ElRadio") {
560
582
  return h(ElRadio, {
561
- ...node.properties
583
+ ...node.properties,
584
+ disabled: ((_p = node.properties) == null ? void 0 : _p.disabled) || disabled.value
562
585
  }, children);
563
586
  }
564
587
  if (node.tagName === "ElTable") {
565
- return h(ElTable, {
588
+ return h(CoreTable, {
566
589
  ...node.properties
567
590
  }, children);
568
591
  }
@@ -600,10 +623,10 @@ ${divContent}${divEnd}`;
600
623
  });
601
624
  }
602
625
  if (node.tagName === "pre") {
603
- const codeNode = (_j = node.children) == null ? void 0 : _j.find((child) => child.tagName === "code");
626
+ const codeNode = (_q = node.children) == null ? void 0 : _q.find((child) => child.tagName === "code");
604
627
  if (codeNode) {
605
- if ((_l = (_k = codeNode.properties) == null ? void 0 : _k.className) == null ? void 0 : _l.includes("language-CorePilot")) {
606
- const code = ((_n = (_m = codeNode.children) == null ? void 0 : _m[0]) == null ? void 0 : _n.value) || "";
628
+ if ((_s = (_r = codeNode.properties) == null ? void 0 : _r.className) == null ? void 0 : _s.includes("language-CorePilot")) {
629
+ const code = ((_u = (_t = codeNode.children) == null ? void 0 : _t[0]) == null ? void 0 : _u.value) || "";
607
630
  const schema = JSON.parse(code);
608
631
  const viewTree = parseCorePilot(schema);
609
632
  const children2 = hastToVNode(viewTree, curInit);
@@ -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} 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 'katex/dist/katex.min.css'\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 },\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 watch(() => [props.text, props.typing], ([text, typing]) => {\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, action, payload: any) => {\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) {\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 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 },\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 onClick: () => {\n btnClick(index!, node.properties?.action, payload);\n },\n },\n children\n )\n }\n\n if (node.tagName === 'ElSelect') {\n return h(\n ElSelect,\n {\n ...node.properties,\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 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 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 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 },\n children\n )\n }\n \n if (node.tagName === 'ElTable') {\n return h(\n ElTable,\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","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","watch","update","stop","checkReg","test","setSpeed","immediate","refConfig","getRefConfig","refContainer","querySelector","textContent","renderComplete","debounce","activeRef","newVal","oldVal","getAttribute","target","find","item","link","getTargeElement","e","tagName","isInRefContainer","classList","contains","isRefContainer","parentElement","handleMouseOver","handleAClick","stopPropagation","preventDefault","href","id","title","ext","split","pop","window","open","ElMessage","btnClick","index","action","payload","validate","handleClick","highlight","page","source","data","getContentText","innerText","onMounted","addEventListener","onBeforeUnmount","removeEventListener","processNewImages","newImages","querySelectorAll","forEach","img","has","add","setPlaceholderDimensions","complete","handleImageLoad","handleImageError","containerWidth","offsetWidth","naturalWidth","style","maxWidth","naturalHeight","ratio","maxHeight","Math","min","delete","setAttribute","opacity","md","unified","use","remarkParse","remarkBreaks","remarkGfm","singleTilde","remarkMath","remarkGemoji","remarkRehype","allowDangerousHtml","rehypeRaw","rehypeKatex","rehypeStringify","collectFormsFromSchema","schema","formDataList","formData","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","formatChildren","fileType","ElTimeline","ElRow","ElCol","ElCard","ElForm","set","model","ElFormItem","parentScope","ElButton","onClick","ElSelect","modelValue","formProp","ElDatePicker","ElInput","ElRadioGroup","ElRadio","ElTable","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 '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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"}