@hejiayue/x-markdown-test 0.0.1-beta.120 → 0.0.1-beta.124

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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/dist/x-markdown.cjs10.js +1 -1
  3. package/dist/x-markdown.cjs13.js +1 -1
  4. package/dist/x-markdown.cjs14.js +1 -1
  5. package/dist/x-markdown.cjs14.js.map +1 -1
  6. package/dist/x-markdown.cjs15.js +1 -1
  7. package/dist/x-markdown.cjs15.js.map +1 -1
  8. package/dist/x-markdown.cjs16.js +1 -1
  9. package/dist/x-markdown.cjs17.js +1 -1
  10. package/dist/x-markdown.cjs18.js +1 -1
  11. package/dist/x-markdown.cjs19.js +1 -1
  12. package/dist/x-markdown.cjs19.js.map +1 -1
  13. package/dist/x-markdown.cjs21.js +2 -0
  14. package/dist/x-markdown.cjs21.js.map +1 -0
  15. package/dist/x-markdown.cjs22.js +1 -1
  16. package/dist/x-markdown.cjs22.js.map +1 -1
  17. package/dist/{x-markdown.cjs25.js → x-markdown.cjs24.js} +2 -2
  18. package/dist/{x-markdown.cjs25.js.map → x-markdown.cjs24.js.map} +1 -1
  19. package/dist/x-markdown.cjs26.js +2 -0
  20. package/dist/x-markdown.cjs26.js.map +1 -0
  21. package/dist/x-markdown.cjs27.js +1 -1
  22. package/dist/x-markdown.cjs27.js.map +1 -1
  23. package/dist/x-markdown.cjs28.js +1 -1
  24. package/dist/x-markdown.cjs28.js.map +1 -1
  25. package/dist/x-markdown.cjs30.js +2 -0
  26. package/dist/x-markdown.cjs30.js.map +1 -0
  27. package/dist/x-markdown.cjs31.js +1 -1
  28. package/dist/x-markdown.cjs31.js.map +1 -1
  29. package/dist/{x-markdown.cjs34.js → x-markdown.cjs33.js} +2 -2
  30. package/dist/x-markdown.cjs33.js.map +1 -0
  31. package/dist/x-markdown.cjs7.js +1 -1
  32. package/dist/x-markdown.cjs7.js.map +1 -1
  33. package/dist/x-markdown.cjs9.js +1 -1
  34. package/dist/x-markdown.cjs9.js.map +1 -1
  35. package/dist/x-markdown.es10.js +1 -1
  36. package/dist/x-markdown.es13.js +3 -3
  37. package/dist/x-markdown.es14.js +28 -69
  38. package/dist/x-markdown.es14.js.map +1 -1
  39. package/dist/x-markdown.es15.js +2 -31
  40. package/dist/x-markdown.es15.js.map +1 -1
  41. package/dist/x-markdown.es16.js +2 -1
  42. package/dist/x-markdown.es16.js.map +1 -1
  43. package/dist/x-markdown.es17.js +4 -2
  44. package/dist/x-markdown.es17.js.map +1 -1
  45. package/dist/x-markdown.es18.js +4 -4
  46. package/dist/x-markdown.es19.js +204 -5
  47. package/dist/x-markdown.es19.js.map +1 -1
  48. package/dist/x-markdown.es21.js +11 -0
  49. package/dist/x-markdown.es21.js.map +1 -0
  50. package/dist/x-markdown.es22.js +71 -7
  51. package/dist/x-markdown.es22.js.map +1 -1
  52. package/dist/{x-markdown.es25.js → x-markdown.es24.js} +4 -4
  53. package/dist/{x-markdown.es25.js.map → x-markdown.es24.js.map} +1 -1
  54. package/dist/x-markdown.es26.js +160 -0
  55. package/dist/x-markdown.es26.js.map +1 -0
  56. package/dist/x-markdown.es27.js +5 -157
  57. package/dist/x-markdown.es27.js.map +1 -1
  58. package/dist/x-markdown.es28.js +139 -5
  59. package/dist/x-markdown.es28.js.map +1 -1
  60. package/dist/x-markdown.es30.js +78 -0
  61. package/dist/x-markdown.es30.js.map +1 -0
  62. package/dist/x-markdown.es31.js +121 -74
  63. package/dist/x-markdown.es31.js.map +1 -1
  64. package/dist/x-markdown.es33.js +6 -0
  65. package/dist/x-markdown.es33.js.map +1 -0
  66. package/dist/x-markdown.es7.js +26 -26
  67. package/dist/x-markdown.es7.js.map +1 -1
  68. package/dist/x-markdown.es9.js +2 -10
  69. package/dist/x-markdown.es9.js.map +1 -1
  70. package/package.json +87 -85
  71. package/dist/x-markdown.cjs20.js +0 -2
  72. package/dist/x-markdown.cjs20.js.map +0 -1
  73. package/dist/x-markdown.cjs23.js +0 -2
  74. package/dist/x-markdown.cjs23.js.map +0 -1
  75. package/dist/x-markdown.cjs29.js +0 -2
  76. package/dist/x-markdown.cjs29.js.map +0 -1
  77. package/dist/x-markdown.cjs32.js +0 -2
  78. package/dist/x-markdown.cjs32.js.map +0 -1
  79. package/dist/x-markdown.cjs34.js.map +0 -1
  80. package/dist/x-markdown.es20.js +0 -207
  81. package/dist/x-markdown.es20.js.map +0 -1
  82. package/dist/x-markdown.es23.js +0 -75
  83. package/dist/x-markdown.es23.js.map +0 -1
  84. package/dist/x-markdown.es29.js +0 -142
  85. package/dist/x-markdown.es29.js.map +0 -1
  86. package/dist/x-markdown.es32.js +0 -125
  87. package/dist/x-markdown.es32.js.map +0 -1
  88. package/dist/x-markdown.es34.js +0 -6
  89. package/dist/x-markdown.es34.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 element-plus-x
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("rehype-katex"),r=require("rehype-raw"),a=require("remark-breaks"),u=require("remark-gfm"),l=require("remark-math"),n=require("vue"),i=require("./x-markdown.cjs15.js");exports.usePlugins=function(t){const{allowHtml:s,enableAnimate:o,enableLatex:m,enableBreaks:g,enableGfm:v,rehypePlugins:p,remarkPlugins:k,rehypePluginsAhead:c,remarkPluginsAhead:d}=n.toRefs(t);return{rehypePlugins:n.computed(()=>[...c.value,s.value&&r,m.value&&e,o.value&&i.rehypeAnimatedPlugin,...p.value].filter(Boolean)),remarkPlugins:n.computed(()=>{const e=[m.value&&l,!1!==v.value&&[u,{singleTilde:!1}],g.value&&a].filter(Boolean);return[...d.value,...e,...k.value]})}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("rehype-katex"),r=require("rehype-raw"),a=require("remark-breaks"),u=require("remark-gfm"),l=require("remark-math"),n=require("vue"),i=require("./x-markdown.cjs14.js");exports.usePlugins=function(t){const{allowHtml:s,enableAnimate:o,enableLatex:m,enableBreaks:g,enableGfm:v,rehypePlugins:p,remarkPlugins:k,rehypePluginsAhead:c,remarkPluginsAhead:d}=n.toRefs(t);return{rehypePlugins:n.computed(()=>[...c.value,s.value&&r,m.value&&e,o.value&&i.rehypeAnimatedPlugin,...p.value].filter(Boolean)),remarkPlugins:n.computed(()=>{const e=[m.value&&l,!1!==v.value&&[u,{singleTilde:!1}],g.value&&a].filter(Boolean);return[...d.value,...e,...k.value]})}};
2
2
  //# sourceMappingURL=x-markdown.cjs10.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./x-markdown.cjs18.js"),i=require("./x-markdown.cjs19.js"),a=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./x-markdown.cjs17.js"))),o=e.defineComponent({props:{raw:{type:Object,default:()=>({})},codeXRender:{type:Object,default:()=>({})},isDark:{type:Boolean,default:!1},shikiTheme:{type:Array,default:()=>["vitesse-light","vitesse-dark"]},showCodeBlockHeader:{type:Boolean,default:!0},stickyCodeBlockHeader:{type:Boolean,default:!0},codeMaxHeight:{type:String,default:void 0},enableAnimate:{type:Boolean,default:!1},codeBlockActions:{type:Array,default:void 0},mermaidActions:{type:Array,default:void 0},mermaidConfig:{type:Object,default:void 0}},setup(o,{slots:r}){const{codeXRender:n}=o;return()=>{if(o.raw.inline){if(n&&n.inline){const t=n.inline;return"function"==typeof t?t(o):e.h(t,o)}return e.h(i.default,{raw:o.raw,isDark:o.isDark,shikiTheme:o.shikiTheme,enableAnimate:o.enableAnimate})}const{language:d}=o.raw;if(n&&n[d]){const t=n[d];return"function"==typeof t?t(o):e.h(t,o)}if("mermaid"===d){const t={};return Object.keys(r).forEach(e=>{e.startsWith("mermaid")&&(t[e]=r[e])}),e.h(a,{raw:o.raw,isDark:o.isDark,shikiTheme:o.shikiTheme,mermaidActions:o.mermaidActions,config:o.mermaidConfig},t)}return e.h(t.default,{code:o.raw.content||"",language:o.raw.language||"text",isDark:o.isDark,lightTheme:o.shikiTheme[0],darkTheme:o.shikiTheme[1],showCodeBlockHeader:o.showCodeBlockHeader,stickyCodeBlockHeader:o.stickyCodeBlockHeader,codeMaxHeight:o.codeMaxHeight,enableAnimate:o.enableAnimate,codeBlockActions:o.codeBlockActions},r)}}});exports.default=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./x-markdown.cjs17.js"),i=require("./x-markdown.cjs18.js"),a=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./x-markdown.cjs16.js"))),o=e.defineComponent({props:{raw:{type:Object,default:()=>({})},codeXRender:{type:Object,default:()=>({})},isDark:{type:Boolean,default:!1},shikiTheme:{type:Array,default:()=>["vitesse-light","vitesse-dark"]},showCodeBlockHeader:{type:Boolean,default:!0},stickyCodeBlockHeader:{type:Boolean,default:!0},codeMaxHeight:{type:String,default:void 0},enableAnimate:{type:Boolean,default:!1},codeBlockActions:{type:Array,default:void 0},mermaidActions:{type:Array,default:void 0},mermaidConfig:{type:Object,default:void 0}},setup(o,{slots:r}){const{codeXRender:n}=o;return()=>{if(o.raw.inline){if(n&&n.inline){const t=n.inline;return"function"==typeof t?t(o):e.h(t,o)}return e.h(i.default,{raw:o.raw,isDark:o.isDark,shikiTheme:o.shikiTheme,enableAnimate:o.enableAnimate})}const{language:d}=o.raw;if(n&&n[d]){const t=n[d];return"function"==typeof t?t(o):e.h(t,o)}if("mermaid"===d){const t={};return Object.keys(r).forEach(e=>{e.startsWith("mermaid")&&(t[e]=r[e])}),e.h(a,{raw:o.raw,isDark:o.isDark,shikiTheme:o.shikiTheme,mermaidActions:o.mermaidActions,config:o.mermaidConfig},t)}return e.h(t.default,{code:o.raw.content||"",language:o.raw.language||"text",isDark:o.isDark,lightTheme:o.shikiTheme[0],darkTheme:o.shikiTheme[1],showCodeBlockHeader:o.showCodeBlockHeader,stickyCodeBlockHeader:o.stickyCodeBlockHeader,codeMaxHeight:o.codeMaxHeight,enableAnimate:o.enableAnimate,codeBlockActions:o.codeBlockActions},r)}}});exports.default=o;
2
2
  //# sourceMappingURL=x-markdown.cjs13.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var t=Object.defineProperty,e=(e,s,a)=>((e,s,a)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[s]=a)(e,"symbol"!=typeof s?s+"":s,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class s{constructor(t){e(this,"options"),e(this,"tokensStable",[]),e(this,"tokensUnstable",[]),e(this,"lastUnstableCodeChunk",""),e(this,"lastStableGrammarState"),this.options=t}async enqueue(t){const e=(this.lastUnstableCodeChunk+t).split("\n"),s=[];let a=[];const n=this.tokensUnstable.length;return e.forEach((t,n)=>{const l=n===e.length-1,o=this.options.highlighter.codeToTokens(t,{...this.options,grammarState:this.lastStableGrammarState}),i=o.tokens[0];l||i.push({content:"\n",offset:0}),l?(a=i,this.lastUnstableCodeChunk=t):(this.lastStableGrammarState=o.grammarState,s.push(...i))}),this.tokensStable.push(...s),this.tokensUnstable=a,{recall:n,stable:s,unstable:a}}close(){const t=this.tokensUnstable;return this.tokensUnstable=[],this.lastUnstableCodeChunk="",this.lastStableGrammarState=void 0,{stable:t}}clear(){this.tokensStable=[],this.tokensUnstable=[],this.lastUnstableCodeChunk="",this.lastStableGrammarState=void 0}clone(){const t=new s(this.options);return t.lastUnstableCodeChunk=this.lastUnstableCodeChunk,t.tokensUnstable=this.tokensUnstable,t.tokensStable=this.tokensStable,t.lastStableGrammarState=this.lastStableGrammarState,t}}exports.ShikiStreamTokenizer=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("unist-util-visit");exports.rehypeAnimatedPlugin=function(){return t=>{e.visit(t,"element",e=>{if(["p","h1","h2","h3","h4","h5","h6","li","strong","th","td"].includes(e.tagName)&&e.children){const t=[];for(const n of e.children)"text"===n.type?[...new Intl.Segmenter("zh",{granularity:"word"}).segment(n.value)].map(e=>e.segment).filter(Boolean).forEach(e=>{t.push({children:[{type:"text",value:e}],properties:{className:"x-md-animated-word"},tagName:"span",type:"element"})}):t.push(n);e.children=t}})}};
2
2
  //# sourceMappingURL=x-markdown.cjs14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs14.js","sources":["../../../node_modules/.pnpm/shiki-stream@0.1.4_vue@3.5.25_typescript@5.9.3_/node_modules/shiki-stream/dist/index.mjs"],"sourcesContent":["class ShikiStreamTokenizer {\n options;\n tokensStable = [];\n tokensUnstable = [];\n lastUnstableCodeChunk = \"\";\n lastStableGrammarState;\n constructor(options) {\n this.options = options;\n }\n /**\n * Enqueue a chunk of code to the buffer.\n */\n async enqueue(chunk) {\n const chunkLines = (this.lastUnstableCodeChunk + chunk).split(\"\\n\");\n const stable = [];\n let unstable = [];\n const recall = this.tokensUnstable.length;\n chunkLines.forEach((line, i) => {\n const isLastLine = i === chunkLines.length - 1;\n const result = this.options.highlighter.codeToTokens(line, {\n ...this.options,\n grammarState: this.lastStableGrammarState\n });\n const tokens = result.tokens[0];\n if (!isLastLine)\n tokens.push({ content: \"\\n\", offset: 0 });\n if (!isLastLine) {\n this.lastStableGrammarState = result.grammarState;\n stable.push(...tokens);\n } else {\n unstable = tokens;\n this.lastUnstableCodeChunk = line;\n }\n });\n this.tokensStable.push(...stable);\n this.tokensUnstable = unstable;\n return {\n recall,\n stable,\n unstable\n };\n }\n close() {\n const stable = this.tokensUnstable;\n this.tokensUnstable = [];\n this.lastUnstableCodeChunk = \"\";\n this.lastStableGrammarState = void 0;\n return {\n stable\n };\n }\n clear() {\n this.tokensStable = [];\n this.tokensUnstable = [];\n this.lastUnstableCodeChunk = \"\";\n this.lastStableGrammarState = void 0;\n }\n clone() {\n const clone = new ShikiStreamTokenizer(\n this.options\n );\n clone.lastUnstableCodeChunk = this.lastUnstableCodeChunk;\n clone.tokensUnstable = this.tokensUnstable;\n clone.tokensStable = this.tokensStable;\n clone.lastStableGrammarState = this.lastStableGrammarState;\n return clone;\n }\n}\n\nclass CodeToTokenTransformStream extends TransformStream {\n tokenizer;\n options;\n constructor(options) {\n const tokenizer = new ShikiStreamTokenizer(options);\n const {\n allowRecalls = false\n } = options;\n super({\n async transform(chunk, controller) {\n const { stable, unstable: buffer, recall } = await tokenizer.enqueue(chunk);\n if (allowRecalls && recall > 0) {\n controller.enqueue({ recall });\n }\n for (const token of stable) {\n controller.enqueue(token);\n }\n if (allowRecalls) {\n for (const token of buffer) {\n controller.enqueue(token);\n }\n }\n },\n async flush(controller) {\n const { stable } = tokenizer.close();\n if (!allowRecalls) {\n for (const token of stable) {\n controller.enqueue(token);\n }\n }\n }\n });\n this.tokenizer = tokenizer;\n this.options = options;\n }\n}\n\nexport { CodeToTokenTransformStream, ShikiStreamTokenizer };\n"],"names":["ShikiStreamTokenizer","constructor","options","__publicField","this","enqueue","chunk","chunkLines","lastUnstableCodeChunk","split","stable","unstable","recall","tokensUnstable","length","forEach","line","i","isLastLine","result","highlighter","codeToTokens","grammarState","lastStableGrammarState","tokens","push","content","offset","tokensStable","close","clear","clone"],"mappings":"0OAAA,MAAMA,EAMJ,WAAAC,CAAYC,GALZC,EAAAC,KAAA,WACAD,EAAAC,KAAA,eAAe,IACfD,EAAAC,KAAA,iBAAiB,IACjBD,EAAAC,KAAA,wBAAwB,IACxBD,EAAAC,KAAA,0BAEEA,KAAKF,QAAUA,CACjB,CAIA,aAAMG,CAAQC,GACZ,MAAMC,GAAcH,KAAKI,sBAAwBF,GAAOG,MAAM,MACxDC,EAAS,GACf,IAAIC,EAAW,GACf,MAAMC,EAASR,KAAKS,eAAeC,OAoBnC,OAnBAP,EAAWQ,QAAQ,CAACC,EAAMC,KACxB,MAAMC,EAAaD,IAAMV,EAAWO,OAAS,EACvCK,EAASf,KAAKF,QAAQkB,YAAYC,aAAaL,EAAM,IACtDZ,KAAKF,QACRoB,aAAclB,KAAKmB,yBAEfC,EAASL,EAAOK,OAAO,GACxBN,GACHM,EAAOC,KAAK,CAAEC,QAAS,KAAMC,OAAQ,IAClCT,GAIHP,EAAWa,EACXpB,KAAKI,sBAAwBQ,IAJ7BZ,KAAKmB,uBAAyBJ,EAAOG,aACrCZ,EAAOe,QAAQD,MAMnBpB,KAAKwB,aAAaH,QAAQf,GAC1BN,KAAKS,eAAiBF,EACf,CACLC,SACAF,SACAC,WAEJ,CACA,KAAAkB,GACE,MAAMnB,EAASN,KAAKS,eAIpB,OAHAT,KAAKS,eAAiB,GACtBT,KAAKI,sBAAwB,GAC7BJ,KAAKmB,4BAAyB,EACvB,CACLb,SAEJ,CACA,KAAAoB,GACE1B,KAAKwB,aAAe,GACpBxB,KAAKS,eAAiB,GACtBT,KAAKI,sBAAwB,GAC7BJ,KAAKmB,4BAAyB,CAChC,CACA,KAAAQ,GACE,MAAMA,EAAQ,IAAI/B,EAChBI,KAAKF,SAMP,OAJA6B,EAAMvB,sBAAwBJ,KAAKI,sBACnCuB,EAAMlB,eAAiBT,KAAKS,eAC5BkB,EAAMH,aAAexB,KAAKwB,aAC1BG,EAAMR,uBAAyBnB,KAAKmB,uBAC7BQ,CACT","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"x-markdown.cjs14.js","sources":["../src/plugins/rehypePlugin.ts"],"sourcesContent":["// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\r\n// SPDX-License-Identifier: MIT\r\nimport type { Element, ElementContent, Root } from 'hast'\r\nimport type { BuildVisitor } from 'unist-util-visit'\r\nimport { visit } from 'unist-util-visit'\r\n\r\nexport function rehypeAnimatedPlugin() {\r\n return (tree: Root) => {\r\n visit(tree, 'element', ((node: Element) => {\r\n if (\r\n ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'strong', 'th', 'td'].includes(node.tagName) &&\r\n node.children\r\n ) {\r\n const newChildren: Array<ElementContent> = []\r\n for (const child of node.children) {\r\n if (child.type === 'text') {\r\n // @ts-expect-error Segmenter is not available in all environments\r\n const segmenter = new Intl.Segmenter('zh', { granularity: 'word' })\r\n const segments = segmenter.segment(child.value)\r\n const words = [...segments].map((segment) => segment.segment).filter(Boolean)\r\n words.forEach((word: string) => {\r\n newChildren.push({\r\n children: [{ type: 'text', value: word }],\r\n properties: {\r\n className: 'x-md-animated-word',\r\n },\r\n tagName: 'span',\r\n type: 'element',\r\n })\r\n })\r\n } else {\r\n newChildren.push(child)\r\n }\r\n }\r\n node.children = newChildren\r\n }\r\n }) as BuildVisitor<Root, 'element'>)\r\n }\r\n}\r\n"],"names":["tree","visit","node","includes","tagName","children","newChildren","child","type","Intl","Segmenter","granularity","segment","value","map","filter","Boolean","forEach","word","push","properties","className"],"mappings":"iJAMO,WACL,OAAQA,IACNC,EAAAA,MAAMD,EAAM,UAAaE,IACvB,GACE,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,KAAM,MAAMC,SAASD,EAAKE,UACpFF,EAAKG,SACL,CACA,MAAMC,EAAqC,GAC3C,IAAA,MAAWC,KAASL,EAAKG,SACJ,SAAfE,EAAMC,KAIM,IAFI,IAAIC,KAAKC,UAAU,KAAM,CAAEC,YAAa,SAC/BC,QAAQL,EAAMM,QACbC,IAAKF,GAAYA,EAAQA,SAASG,OAAOC,SAC/DC,QAASC,IACbZ,EAAYa,KAAK,CACfd,SAAU,CAAC,CAAEG,KAAM,OAAQK,MAAOK,IAClCE,WAAY,CACVC,UAAW,sBAEbjB,QAAS,OACTI,KAAM,cAIVF,EAAYa,KAAKZ,GAGrBL,EAAKG,SAAWC,CAClB,IAGN"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("unist-util-visit");exports.rehypeAnimatedPlugin=function(){return t=>{e.visit(t,"element",e=>{if(["p","h1","h2","h3","h4","h5","h6","li","strong","th","td"].includes(e.tagName)&&e.children){const t=[];for(const n of e.children)"text"===n.type?[...new Intl.Segmenter("zh",{granularity:"word"}).segment(n.value)].map(e=>e.segment).filter(Boolean).forEach(e=>{t.push({children:[{type:"text",value:e}],properties:{className:"x-md-animated-word"},tagName:"span",type:"element"})}):t.push(n);e.children=t}})}};
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs13.js");exports.default=e.default;
2
2
  //# sourceMappingURL=x-markdown.cjs15.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs15.js","sources":["../src/plugins/rehypePlugin.ts"],"sourcesContent":["// Copyright (c) 2025 Bytedance Ltd. and/or its affiliates\r\n// SPDX-License-Identifier: MIT\r\nimport type { Element, ElementContent, Root } from 'hast'\r\nimport type { BuildVisitor } from 'unist-util-visit'\r\nimport { visit } from 'unist-util-visit'\r\n\r\nexport function rehypeAnimatedPlugin() {\r\n return (tree: Root) => {\r\n visit(tree, 'element', ((node: Element) => {\r\n if (\r\n ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'strong', 'th', 'td'].includes(node.tagName) &&\r\n node.children\r\n ) {\r\n const newChildren: Array<ElementContent> = []\r\n for (const child of node.children) {\r\n if (child.type === 'text') {\r\n // @ts-expect-error Segmenter is not available in all environments\r\n const segmenter = new Intl.Segmenter('zh', { granularity: 'word' })\r\n const segments = segmenter.segment(child.value)\r\n const words = [...segments].map((segment) => segment.segment).filter(Boolean)\r\n words.forEach((word: string) => {\r\n newChildren.push({\r\n children: [{ type: 'text', value: word }],\r\n properties: {\r\n className: 'x-md-animated-word',\r\n },\r\n tagName: 'span',\r\n type: 'element',\r\n })\r\n })\r\n } else {\r\n newChildren.push(child)\r\n }\r\n }\r\n node.children = newChildren\r\n }\r\n }) as BuildVisitor<Root, 'element'>)\r\n }\r\n}\r\n"],"names":["tree","visit","node","includes","tagName","children","newChildren","child","type","Intl","Segmenter","granularity","segment","value","map","filter","Boolean","forEach","word","push","properties","className"],"mappings":"iJAMO,WACL,OAAQA,IACNC,EAAAA,MAAMD,EAAM,UAAaE,IACvB,GACE,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,KAAM,MAAMC,SAASD,EAAKE,UACpFF,EAAKG,SACL,CACA,MAAMC,EAAqC,GAC3C,IAAA,MAAWC,KAASL,EAAKG,SACJ,SAAfE,EAAMC,KAIM,IAFI,IAAIC,KAAKC,UAAU,KAAM,CAAEC,YAAa,SAC/BC,QAAQL,EAAMM,QACbC,IAAKF,GAAYA,EAAQA,SAASG,OAAOC,SAC/DC,QAASC,IACbZ,EAAYa,KAAK,CACfd,SAAU,CAAC,CAAEG,KAAM,OAAQK,MAAOK,IAClCE,WAAY,CACVC,UAAW,sBAEbjB,QAAS,OACTI,KAAM,cAIVF,EAAYa,KAAKZ,GAGrBL,EAAKG,SAAWC,CAClB,IAGN"}
1
+ {"version":3,"file":"x-markdown.cjs15.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs13.js");exports.default=e.default;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs24.js");,/* empty css */exports.default=e.default;
2
2
  //# sourceMappingURL=x-markdown.cjs16.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs25.js");,/* empty css */exports.default=e.default;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs19.js");;/* empty css */const r=require("./x-markdown.cjs21.js").default(e.default,[["__scopeId","data-v-8b0fb0b9"]]);exports.default=r;
2
2
  //# sourceMappingURL=x-markdown.cjs17.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs20.js");;/* empty css */const r=require("./x-markdown.cjs22.js").default(e.default,[["__scopeId","data-v-8b0fb0b9"]]);exports.default=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs22.js");;/* empty css */const r=require("./x-markdown.cjs21.js").default(e.default,[["__scopeId","data-v-97166d5b"]]);exports.default=r;
2
2
  //# sourceMappingURL=x-markdown.cjs18.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./x-markdown.cjs23.js");;/* empty css */const r=require("./x-markdown.cjs22.js").default(e.default,[["__scopeId","data-v-97166d5b"]]);exports.default=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=require("./x-markdown.cjs26.js"),l=require("./x-markdown.cjs27.js"),a={class:"x-md-code-header"},t={class:"x-md-code-header__left"},c=["title"],n={class:"x-md-code-lang"},d={class:"x-md-code-header__right"},r=["title","disabled","onClick"],s={key:0,class:"x-md-copy-icon",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},i={key:1,class:"x-md-copy-icon",width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},u=e.defineComponent({name:"CodeBlock",__name:"index",props:{code:{},language:{},lightTheme:{default:"vitesse-light"},darkTheme:{default:"vitesse-dark"},isDark:{type:Boolean,default:!1},colorReplacements:{},codeMaxHeight:{},showCodeBlockHeader:{type:Boolean,default:!0},enableAnimate:{type:Boolean,default:!1},codeBlockActions:{default:void 0},stickyCodeBlockHeader:{type:Boolean,default:!0}},setup(u,{expose:m}){const{copy:p,copied:k}=o.useClipboard({copiedDuring:2e3}),h=e.ref(!1),v=e.ref(null),g=()=>{h.value=!h.value},f=u,x=e.computed(()=>f.code.trim()),y=e.computed(()=>f.language||"text"),B=e.computed(()=>f.codeBlockActions||[]),C=e.computed(()=>B.value.filter(e=>!e.show||e.show(b.value))),b=e.computed(()=>({language:y.value,code:x.value,copy:p,copied:k.value,collapsed:h.value,toggleCollapse:g}));function w(o){if(!o.icon)return null;if("string"==typeof o.icon)return e.h("span",{class:"x-md-action-icon",innerHTML:o.icon});if("function"==typeof o.icon){try{const e=o.icon(b.value);if(e&&"object"==typeof e&&"__v_isVNode"in e)return e}catch{}return e.h(o.icon)}return e.h(o.icon)}return m({copy:p,copied:k,collapsed:h,toggleCollapse:g,syntaxCodeBlockRef:v}),(o,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["x-md-code-block",{"x-md-code-block--dark":f.isDark}])},[u.showCodeBlockHeader?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["x-md-code-header-wrapper",[{"x-md-code-header-wrapper--sticky":f.stickyCodeBlockHeader},{"x-md-code-header-wrapper--collapsed":h.value}]])},[e.createElementVNode("div",a,[e.renderSlot(o.$slots,"codeHeader",{language:y.value,code:x.value,copy:e.unref(p),copied:e.unref(k),collapsed:h.value,toggleCollapse:g},()=>[e.createElementVNode("div",t,[e.createElementVNode("button",{class:e.normalizeClass(["x-md-collapse-btn",{"x-md-collapse-btn--collapsed":h.value}]),onClick:g,title:h.value?"展开代码":"折叠代码"},[...m[1]||(m[1]=[e.createElementVNode("svg",{class:"x-md-collapse-icon",viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])],10,c),e.createElementVNode("span",n,e.toDisplayString(y.value),1)]),e.createElementVNode("div",d,[e.renderSlot(o.$slots,"codeActions",{code:x.value,copy:e.unref(p),copied:e.unref(k)},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,o=>(e.openBlock(),e.createElementBlock("button",{key:o.key,class:e.normalizeClass(["x-md-action-btn",[o.class,{"x-md-action-btn--disabled":o.disabled}]]),style:e.normalizeStyle(o.style),title:o.title,disabled:o.disabled,onClick:e=>function(e){e.disabled||e.onClick?.(b.value)}(o)},[o.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(w(o)),{key:0})):e.createCommentVNode("",!0)],14,r))),128)),e.createElementVNode("button",{class:e.normalizeClass(["x-md-copy-btn",{"x-md-copy-btn--copied":e.unref(k)}]),onClick:m[0]||(m[0]=o=>e.unref(p)(x.value))},[e.unref(k)?(e.openBlock(),e.createElementBlock("svg",s,[...m[2]||(m[2]=[e.createElementVNode("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",i,[...m[3]||(m[3]=[e.createElementVNode("path",{fill:"currentColor",d:"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"},null,-1),e.createElementVNode("path",{fill:"currentColor",d:"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"},null,-1)])]))],2)],!0)])],!0)])],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["x-md-code-body",{"x-md-code-body--collapsed":h.value}])},[e.createVNode(l.default,{ref_key:"syntaxCodeBlockRef",ref:v,code:x.value,language:y.value,"light-theme":f.lightTheme,"dark-theme":f.darkTheme,"is-dark":f.isDark,"color-replacements":f.colorReplacements,"code-max-height":f.codeMaxHeight,"enable-animate":f.enableAnimate},null,8,["code","language","light-theme","dark-theme","is-dark","color-replacements","code-max-height","enable-animate"])],2)],2))}});exports.default=u;
2
2
  //# sourceMappingURL=x-markdown.cjs19.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs19.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs19.js","sources":["../src/components/CodeBlock/index.vue"],"sourcesContent":["<template>\r\n <div class=\"x-md-code-block\" :class=\"{ 'x-md-code-block--dark': props.isDark }\">\r\n <!-- 头部区域:支持完全自定义或默认渲染 -->\r\n <div\r\n v-if=\"showCodeBlockHeader\"\r\n class=\"x-md-code-header-wrapper\"\r\n :class=\"[{'x-md-code-header-wrapper--sticky': props.stickyCodeBlockHeader }, { 'x-md-code-header-wrapper--collapsed': collapsed }]\"\r\n >\r\n <div class=\"x-md-code-header\">\r\n <slot\r\n name=\"codeHeader\"\r\n :language=\"language\"\r\n :code=\"code\"\r\n :copy=\"copy\"\r\n :copied=\"copied\"\r\n :collapsed=\"collapsed\"\r\n :toggleCollapse=\"toggleCollapse\"\r\n >\r\n <div class=\"x-md-code-header__left\">\r\n <button\r\n class=\"x-md-collapse-btn\"\r\n :class=\"{ 'x-md-collapse-btn--collapsed': collapsed }\"\r\n @click=\"toggleCollapse\"\r\n :title=\"collapsed ? '展开代码' : '折叠代码'\"\r\n >\r\n <svg\r\n class=\"x-md-collapse-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"14\"\r\n height=\"14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"6 9 12 15 18 9\"></polyline>\r\n </svg>\r\n </button>\r\n <span class=\"x-md-code-lang\">{{ language }}</span>\r\n </div>\r\n <div class=\"x-md-code-header__right\">\r\n <slot name=\"codeActions\" :code=\"code\" :copy=\"copy\" :copied=\"copied\">\r\n <button\r\n v-for=\"action in filteredActions\"\r\n :key=\"action.key\"\r\n class=\"x-md-action-btn\"\r\n :class=\"[action.class, { 'x-md-action-btn--disabled': action.disabled }]\"\r\n :style=\"action.style\"\r\n :title=\"action.title\"\r\n :disabled=\"action.disabled\"\r\n @click=\"handleActionClick(action)\"\r\n >\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </button>\r\n <button class=\"x-md-copy-btn\" :class=\"{ 'x-md-copy-btn--copied': copied }\" @click=\"copy(code)\">\r\n <svg\r\n v-if=\"copied\"\r\n class=\"x-md-copy-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\r\n />\r\n </svg>\r\n <svg\r\n v-else\r\n class=\"x-md-copy-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\"\r\n />\r\n </svg>\r\n </button>\r\n </slot>\r\n </div>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"x-md-code-body\" :class=\"{ 'x-md-code-body--collapsed': collapsed }\">\r\n <SyntaxCodeBlock\r\n ref=\"syntaxCodeBlockRef\"\r\n :code=\"code\"\r\n :language=\"language\"\r\n :light-theme=\"props.lightTheme\"\r\n :dark-theme=\"props.darkTheme\"\r\n :is-dark=\"props.isDark\"\r\n :color-replacements=\"props.colorReplacements\"\r\n :code-max-height=\"props.codeMaxHeight\"\r\n :enable-animate=\"props.enableAnimate\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, h, type VNode } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\nimport type { CodeBlockProps, CodeBlockAction, CodeBlockSlotProps } from './types'\r\nimport SyntaxCodeBlock from './SyntaxCodeBlock.vue'\r\n\r\ndefineOptions({\r\n name: 'CodeBlock',\r\n})\r\n\r\nconst { copy, copied } = useClipboard({ copiedDuring: 2000 })\r\n\r\nconst collapsed = ref(false)\r\n\r\nconst syntaxCodeBlockRef = ref<InstanceType<typeof SyntaxCodeBlock> | null>(null)\r\n\r\nconst toggleCollapse = () => {\r\n collapsed.value = !collapsed.value\r\n}\r\n\r\nconst props = withDefaults(defineProps<CodeBlockProps>(), {\r\n lightTheme: 'vitesse-light',\r\n darkTheme: 'vitesse-dark',\r\n isDark: false,\r\n showCodeBlockHeader: true,\r\n enableAnimate: false,\r\n codeBlockActions: undefined,\r\n stickyCodeBlockHeader: true,\r\n})\r\n\r\nconst code = computed(() => props.code.trim())\r\n\r\nconst language = computed(() => props.language || 'text')\r\n\r\nconst normalizedActions = computed<CodeBlockAction[]>(() => {\r\n return props.codeBlockActions || []\r\n})\r\n\r\nconst filteredActions = computed<CodeBlockAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<CodeBlockSlotProps>(() => ({\r\n language: language.value,\r\n code: code.value,\r\n copy,\r\n copied: copied.value,\r\n collapsed: collapsed.value,\r\n toggleCollapse,\r\n}))\r\n\r\nfunction renderActionIcon(action: CodeBlockAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'x-md-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: CodeBlockSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {\r\n }\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: CodeBlockAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\ndefineExpose({\r\n copy,\r\n copied,\r\n collapsed,\r\n toggleCollapse,\r\n syntaxCodeBlockRef,\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.x-md-code-block {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.x-md-code-header-wrapper--sticky {\r\n background: #fff;\r\n position: sticky;\r\n top: 0;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky {\r\n background: #1a1a1a;\r\n}\r\n\r\n.x-md-code-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.x-md-code-block .x-md-code-header-wrapper--sticky .x-md-code-header{\r\n background: rgba(235, 235, 235);\r\n border-radius: 8px 8px 0 0;\r\n}\r\n\r\n.x-md-code-block:has(.x-md-code-header-wrapper--sticky) {\r\n overflow: visible;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky .x-md-code-header {\r\n background: rgba(44, 44, 44);\r\n}\r\n\r\n.x-md-code-block .x-md-code-header-wrapper--collapsed .x-md-code-header {\r\n border-radius: 8px;\r\n}\r\n\r\n.x-md-code-header__left,\r\n.x-md-code-header__right {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n}\r\n\r\n.x-md-code-lang {\r\n font-size: 12px;\r\n font-weight: 500;\r\n opacity: 0.6;\r\n text-transform: lowercase;\r\n}\r\n\r\n.x-md-copy-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-copy-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-copy-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-copy-btn.x-md-copy-btn--copied {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.x-md-copy-icon {\r\n flex-shrink: 0;\r\n}\r\n\r\n.x-md-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-action-btn.x-md-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.x-md-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.x-md-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.x-md-collapse-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 20px;\r\n height: 20px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n opacity: 0.5;\r\n transition: all 0.2s ease;\r\n}\r\n\r\n.x-md-collapse-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.x-md-code-block.x-md-code-block--dark .x-md-collapse-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.x-md-collapse-icon {\r\n transition: transform 0.2s ease;\r\n}\r\n\r\n.x-md-collapse-btn--collapsed .x-md-collapse-icon {\r\n transform: rotate(-90deg);\r\n}\r\n\r\n.x-md-code-body {\r\n overflow: hidden;\r\n transition:\r\n max-height 0.3s ease,\r\n opacity 0.2s ease;\r\n}\r\n\r\n.x-md-code-body--collapsed {\r\n max-height: 0 !important;\r\n opacity: 0;\r\n}\r\n</style>"],"names":["copy","copied","useClipboard","copiedDuring","collapsed","ref","syntaxCodeBlockRef","toggleCollapse","value","props","__props","code","computed","trim","language","normalizedActions","codeBlockActions","filteredActions","filter","action","show","slotProps","renderActionIcon","icon","h","class","innerHTML","result","__expose","_createElementBlock","_normalizeClass","isDark","showCodeBlockHeader","stickyCodeBlockHeader","_createElementVNode","_hoisted_1","_renderSlot","_ctx","$slots","_unref","_hoisted_2","onClick","title","viewBox","width","height","fill","stroke","points","_hoisted_4","_toDisplayString","_hoisted_5","_Fragment","_renderList","key","disabled","style","_normalizeStyle","$event","handleActionClick","_createBlock","_resolveDynamicComponent","_cache","_openBlock","_hoisted_7","d","_hoisted_8","_createVNode","SyntaxCodeBlock","lightTheme","darkTheme","colorReplacements","codeMaxHeight","enableAnimate"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[r,s]of t)o[r]=s;return o};
2
+ //# sourceMappingURL=x-markdown.cjs21.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-markdown.cjs21.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[r,s]of t)o[r]=s;return o};
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./x-markdown.cjs7.js"),n=e.defineComponent({__name:"index",props:{raw:{default:()=>({})},isDark:{type:Boolean,default:!1},shikiTheme:{default:()=>["vitesse-light","vitesse-dark"]},enableAnimate:{type:Boolean,default:!1}},setup(n){let a=null;e.onMounted(async()=>{const e=await Function("return import('@shikijs/core')")().catch(()=>({getTokenStyleObject:()=>({})}));a=e.getTokenStyleObject});const l=n,o=e.computed(()=>l.raw?.content??""),r=e.computed(()=>l.raw?.language||"ts"),i=e.computed(()=>l.isDark?l.shikiTheme[1]:l.shikiTheme[0]),{lines:s,preStyle:c}=t.useHighlight(o,{language:r,theme:i}),u=e.computed(()=>s.value.flat()),m=e.computed(()=>c.value||{}),d=e=>{const t={};return Object.entries(e).forEach(([e,n])=>{const a=e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());t[a]=n}),t},p=e=>{if(e.htmlStyle)return d(e.htmlStyle);if(!a)return{};const t=a(e);return d(t)};return(t,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["x-md-inline-code",{"x-md-inline-code--dark":l.isDark,"x-md-animated-word":l.enableAnimate}])},[e.createElementVNode("code",{style:e.normalizeStyle(m.value)},[u.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(u.value,(t,n)=>(e.openBlock(),e.createElementBlock("span",{key:n,style:e.normalizeStyle(p(t)),class:e.normalizeClass({"x-md-animated-word":l.enableAnimate})},e.toDisplayString(t.content),7))),128)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(o.value),1)],64))],4)],2))}});exports.default=n;
2
2
  //# sourceMappingURL=x-markdown.cjs22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs22.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"x-markdown.cjs22.js","sources":["../src/components/CodeLine/index.vue"],"sourcesContent":["<template>\r\n <!-- 行内代码容器 - 支持深浅色主题和语法高亮 -->\r\n <div\r\n class=\"x-md-inline-code\"\r\n :class=\"{\r\n 'x-md-inline-code--dark': props.isDark,\r\n 'x-md-animated-word': props.enableAnimate,\r\n }\"\r\n >\r\n <code :style=\"codeStyle\">\r\n <!-- 无高亮时显示纯文本 -->\r\n <template v-if=\"!flatTokens.length\">{{ content }}</template>\r\n <!-- 有高亮时渲染 token -->\r\n <template v-else>\r\n <span\r\n v-for=\"(token, i) in flatTokens\"\r\n :key=\"i\"\r\n :style=\"getTokenStyle(token)\"\r\n :class=\"{ 'x-md-animated-word': props.enableAnimate }\"\r\n >{{ token.content }}</span\r\n >\r\n </template>\r\n </code>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, onMounted, type CSSProperties } from 'vue'\r\nimport { useHighlight } from '../../hooks/useHighlight'\r\nimport type { CodeLineProps } from './types'\r\n\r\nconst SHIKI_CORE_PKG = '@shikijs/core'\r\n\r\nlet getTokenStyleObjectFn: any = null\r\n\r\nonMounted(async () => {\r\n const mod = await (Function(`return import('${SHIKI_CORE_PKG}')`)())\r\n .catch(() => {\r\n return { getTokenStyleObject: () => ({}) }\r\n })\r\n getTokenStyleObjectFn = mod.getTokenStyleObject\r\n})\r\n\r\nconst props = withDefaults(defineProps<CodeLineProps>(), {\r\n raw: () => ({}),\r\n isDark: false,\r\n shikiTheme: () => ['vitesse-light', 'vitesse-dark'],\r\n enableAnimate: false,\r\n})\r\n\r\nconst content = computed(() => props.raw?.content ?? '')\r\nconst language = computed(() => props.raw?.language || 'ts')\r\nconst actualTheme = computed(() => (props.isDark ? props.shikiTheme[1] : props.shikiTheme[0]))\r\n\r\nconst { lines, preStyle } = useHighlight(content, {\r\n language,\r\n theme: actualTheme,\r\n})\r\n\r\nconst flatTokens = computed(() => lines.value.flat())\r\nconst codeStyle = computed<CSSProperties>(() => preStyle.value || {})\r\n\r\nconst normalizeStyleKeys = (style: Record<string, string | number>): CSSProperties => {\r\n const normalized: CSSProperties = {}\r\n Object.entries(style).forEach(([key, value]) => {\r\n const camelKey = key.replace(/-([a-z])/g, (_, char) => char.toUpperCase())\r\n ;(normalized as Record<string, string | number>)[camelKey] = value\r\n })\r\n return normalized\r\n}\r\n\r\nconst getTokenStyle = (token: ThemedToken): CSSProperties => {\r\n if (token.htmlStyle) {\r\n return normalizeStyleKeys(token.htmlStyle)\r\n }\r\n\r\n if (!getTokenStyleObjectFn) {\r\n return {}\r\n }\r\n\r\n const rawStyle = getTokenStyleObjectFn(token)\r\n return normalizeStyleKeys(rawStyle)\r\n}\r\n</script>\r\n<style scoped>\r\n.x-md-inline-code {\r\n display: inline-block;\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 14px;\r\n background: rgba(0, 0, 0, 0.03);\r\n vertical-align: sub;\r\n}\r\n\r\n.x-md-inline-code.x-md-inline-code--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n.x-md-inline-code code {\r\n background: transparent !important;\r\n}\r\n</style>\r\n"],"names":["getTokenStyleObjectFn","onMounted","async","mod","Function","catch","getTokenStyleObject","props","__props","content","computed","raw","language","actualTheme","isDark","shikiTheme","lines","preStyle","useHighlight","theme","flatTokens","value","flat","codeStyle","normalizeStyleKeys","style","normalized","Object","entries","forEach","key","camelKey","replace","_","char","toUpperCase","getTokenStyle","token","htmlStyle","rawStyle","_createElementBlock","class","enableAnimate","_createElementVNode","length","_openBlock","_Fragment","_renderList","i","_normalizeStyle","_normalizeClass","_toDisplayString"],"mappings":"oXAiCA,IAAIA,EAA6B,KAEjCC,EAAAA,UAAUC,UACR,MAAMC,QAAaC,SAAS,iCAATA,GAChBC,MAAM,KACE,CAAEC,oBAAqB,KAAA,CAAO,MAEzCN,EAAwBG,EAAIG,sBAG9B,MAAMC,EAAQC,EAORC,EAAUC,EAAAA,SAAS,IAAMH,EAAMI,KAAKF,SAAW,IAC/CG,EAAWF,EAAAA,SAAS,IAAMH,EAAMI,KAAKC,UAAY,MACjDC,EAAcH,EAAAA,SAAS,IAAOH,EAAMO,OAASP,EAAMQ,WAAW,GAAKR,EAAMQ,WAAW,KAEpFC,MAAEA,EAAAC,SAAOA,GAAaC,EAAAA,aAAaT,EAAS,CAChDG,WACAO,MAAON,IAGHO,EAAaV,EAAAA,SAAS,IAAMM,EAAMK,MAAMC,QACxCC,EAAYb,EAAAA,SAAwB,IAAMO,EAASI,OAAS,CAAA,GAE5DG,EAAsBC,IAC1B,MAAMC,EAA4B,CAAA,EAKlC,OAJAC,OAAOC,QAAQH,GAAOI,QAAQ,EAAEC,EAAKT,MACnC,MAAMU,EAAWD,EAAIE,QAAQ,YAAa,CAACC,EAAGC,IAASA,EAAKC,eAC1DT,EAA+CK,GAAYV,IAExDK,GAGHU,EAAiBC,IACrB,GAAIA,EAAMC,UACR,OAAOd,EAAmBa,EAAMC,WAGlC,IAAKtC,EACH,MAAO,CAAA,EAGT,MAAMuC,EAAWvC,EAAsBqC,GACvC,OAAOb,EAAmBe,gCA/E1BC,EAAAA,mBAqBM,MAAA,CApBJC,wBAAM,mBAAkB,CACmB,yBAAAlC,EAAMO,OAAqC,qBAAAP,EAAMmC,mBAK5FC,EAAAA,mBAaO,OAAA,CAbAlB,uBAAOF,EAAAF,SAEKD,EAAAC,MAAWuB,QAG1BC,EAAAA,WAAA,GAAAL,EAAAA,mBAKuCM,EAAAA,SAAA,CAAAhB,IAAA,GAAAiB,EAAAA,WAJhB3B,EAAAC,MAAU,CAAvBgB,EAAOW,mBADjBR,EAAAA,mBAKuC,OAAA,CAHpCV,IAAKkB,EACLvB,MAAKwB,EAAAA,eAAEb,EAAcC,IACrBI,MAAKS,EAAAA,eAAA,CAAA,qBAA0B3C,EAAMmC,iBAClCS,kBAAAd,EAAM5B,SAAO,0BARrB+B,EAAAA,mBAA4DM,WAAA,CAAAhB,IAAA,GAAA,qCAArBrB,EAAAY,OAAO"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./x-markdown.cjs27.js"),o=require("./x-markdown.cjs9.js"),a=require("./x-markdown.cjs29.js");;/* empty css */const l=require("./x-markdown.cjs18.js"),n={class:"toolbar-container"},r={class:"mermaid-toolbar"},i={class:"toolbar-left"},c={class:"segmented-control"},d={class:"toolbar-right"},s=["title","onClick"],u={key:0,width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},m={key:1,width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},v={class:"mermaid-source-code"},h=e.defineComponent({__name:"index",props:{isDark:{type:Boolean,default:!1},shikiTheme:{default:()=>["vitesse-light","vitesse-dark"]},config:{default:()=>({})},mermaidActions:{default:void 0},raw:{default:()=>({})}},setup(h){const k=h,w=e.ref(null),p=e.ref(!1),g=e.ref(!1),f=e.computed(()=>k.raw?.content||""),V=e.computed(()=>`mermaid-${k.raw?.key||"default"}`),C=e.computed(()=>w.value?.isLoading??!0),E=e.computed(()=>w.value?.svg??""),N=e.computed(()=>p.value?"code":"diagram");function y(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.zoomIn()}function b(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.zoomOut()}function B(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.reset()}function x(){p.value||w.value?.fullscreen()}function z(){p.value=!p.value}const{copy:L,copied:M}=t.useClipboard({copiedDuring:1500});function j(e){"code"!==e||p.value?"diagram"===e&&p.value&&(p.value=!1):p.value=!0}async function D(e){e?.stopPropagation(),e?.preventDefault(),M.value||k.raw.content&&await L(k.raw.content)}function P(){w.value?.download()}const S=e.computed(()=>k.mermaidActions||[]),_=e.computed(()=>S.value.filter(e=>!e.show||e.show(H.value))),H=e.computed(()=>({showSourceCode:p.value,svg:E.value,rawContent:k.raw.content||"",isLoading:C.value,copied:M.value,zoomIn:y,zoomOut:b,reset:B,fullscreen:x,toggleCode:z,copyCode:D,download:P,raw:k.raw}));function T(t){if(!t.icon)return null;if("string"==typeof t.icon)return e.h("span",{class:"mermaid-action-icon",innerHTML:t.icon});if("function"==typeof t.icon){try{const e=t.icon(H.value);if(e&&"object"==typeof e&&"__v_isVNode"in e)return e}catch{}return e.h(t.icon)}return e.h(t.icon)}const q=e.computed(()=>({showSourceCode:p.value,svg:E.value,rawContent:k.raw.content||"",isLoading:C.value,copied:M.value,zoomIn:y,zoomOut:b,reset:B,fullscreen:x,toggleCode:z,copyCode:D,download:P,raw:k.raw}));return e.onMounted(async()=>{const e=await o.checkMermaidAvailable();g.value=!e}),(t,o)=>g.value?(e.openBlock(),e.createBlock(l.default,{key:0,code:k.raw?.content||"",language:"mermaid","is-dark":k.isDark,"light-theme":k.shikiTheme[0],"dark-theme":k.shikiTheme[1]},null,8,["code","is-dark","light-theme","dark-theme"])):(e.openBlock(),e.createElementBlock("div",{key:k.raw.key,class:e.normalizeClass(["markdown-mermaid",{"markdown-mermaid--dark":k.isDark}])},[e.createVNode(e.Transition,{name:"toolbar",appear:""},{default:e.withCtx(()=>[e.createElementVNode("div",n,[e.renderSlot(t.$slots,"mermaidHeader",e.normalizeProps(e.guardReactiveProps(q.value)),()=>[e.createElementVNode("div",r,[e.createElementVNode("div",i,[e.createElementVNode("div",c,[e.createElementVNode("div",{class:e.normalizeClass(["segmented-slider",{"slide-right":"code"===N.value}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["segment-item",{active:"diagram"===N.value}]),onClick:o[0]||(o[0]=e=>j("diagram"))},[...o[6]||(o[6]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M12 2L2 7L12 12L22 7L12 2Z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M2 17L12 22L22 17",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M2 12L12 17L22 12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),e.createElementVNode("span",null,"预览",-1)])],2),e.createElementVNode("div",{class:e.normalizeClass(["segment-item",{active:"code"===N.value}]),onClick:o[1]||(o[1]=e=>j("code"))},[...o[7]||(o[7]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M16 18L22 12L16 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M8 6L2 12L8 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),e.createElementVNode("span",null,"代码",-1)])],2)])]),e.createElementVNode("div",d,[e.renderSlot(t.$slots,"mermaidActions",e.normalizeProps(e.guardReactiveProps(q.value)),()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,t=>(e.openBlock(),e.createElementBlock("div",{key:t.key,class:e.normalizeClass(["toolbar-action-btn",[t.class,{"toolbar-action-btn--disabled":t.disabled}]]),style:e.normalizeStyle(t.style),title:t.title,onClick:e=>function(e){e.disabled||e.onClick?.(H.value)}(t)},[t.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(T(t)),{key:0})):e.createCommentVNode("",!0)],14,s))),128)),p.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["toolbar-action-btn",{"copy-success":e.unref(M)}]),title:"复制代码",onClick:o[2]||(o[2]=e=>D(e))},[e.unref(M)?(e.openBlock(),e.createElementBlock("svg",u,[...o[8]||(o[8]=[e.createElementVNode("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",m,[...o[9]||(o[9]=[e.createElementVNode("path",{fill:"currentColor",d:"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"},null,-1),e.createElementVNode("path",{fill:"currentColor",d:"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"},null,-1)])]))],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:"toolbar-action-btn",title:"缩小",onClick:o[3]||(o[3]=e=>b(e))},[...o[10]||(o[10]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"放大",onClick:o[4]||(o[4]=e=>y(e))},[...o[11]||(o[11]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"重置",onClick:o[5]||(o[5]=e=>B(e))},[...o[12]||(o[12]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),e.createElementVNode("path",{fill:"currentColor",d:"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"下载",onClick:P},[...o[13]||(o[13]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"})],-1)])])],64))])])])])])]),_:3}),e.withDirectives(e.createElementVNode("div",v,[e.createVNode(l.default,{code:k.raw?.content||"",language:"mermaid","is-dark":k.isDark,"light-theme":k.shikiTheme[0],"dark-theme":k.shikiTheme[1],"show-code-block-header":!1,"sticky-code-block-header":!1},null,8,["code","is-dark","light-theme","dark-theme"])],512),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(a.default,{ref_key:"syntaxMermaidRef",ref:w,content:f.value,id:V.value,"is-dark":k.isDark,config:k.config},null,8,["content","id","is-dark","config"]),[[e.vShow,!p.value]])],2))}});exports.default=h;
2
- //# sourceMappingURL=x-markdown.cjs25.js.map
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("./x-markdown.cjs26.js"),o=require("./x-markdown.cjs9.js"),a=require("./x-markdown.cjs28.js");;/* empty css */const l=require("./x-markdown.cjs17.js"),n={class:"toolbar-container"},r={class:"mermaid-toolbar"},i={class:"toolbar-left"},c={class:"segmented-control"},d={class:"toolbar-right"},s=["title","onClick"],u={key:0,width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},m={key:1,width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},v={class:"mermaid-source-code"},h=e.defineComponent({__name:"index",props:{isDark:{type:Boolean,default:!1},shikiTheme:{default:()=>["vitesse-light","vitesse-dark"]},config:{default:()=>({})},mermaidActions:{default:void 0},raw:{default:()=>({})}},setup(h){const k=h,w=e.ref(null),p=e.ref(!1),g=e.ref(!1),f=e.computed(()=>k.raw?.content||""),V=e.computed(()=>`mermaid-${k.raw?.key||"default"}`),C=e.computed(()=>w.value?.isLoading??!0),E=e.computed(()=>w.value?.svg??""),N=e.computed(()=>p.value?"code":"diagram");function y(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.zoomIn()}function b(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.zoomOut()}function B(e){e?.stopPropagation(),e?.preventDefault(),p.value||w.value?.reset()}function x(){p.value||w.value?.fullscreen()}function z(){p.value=!p.value}const{copy:L,copied:M}=t.useClipboard({copiedDuring:1500});function j(e){"code"!==e||p.value?"diagram"===e&&p.value&&(p.value=!1):p.value=!0}async function D(e){e?.stopPropagation(),e?.preventDefault(),M.value||k.raw.content&&await L(k.raw.content)}function P(){w.value?.download()}const S=e.computed(()=>k.mermaidActions||[]),_=e.computed(()=>S.value.filter(e=>!e.show||e.show(H.value))),H=e.computed(()=>({showSourceCode:p.value,svg:E.value,rawContent:k.raw.content||"",isLoading:C.value,copied:M.value,zoomIn:y,zoomOut:b,reset:B,fullscreen:x,toggleCode:z,copyCode:D,download:P,raw:k.raw}));function T(t){if(!t.icon)return null;if("string"==typeof t.icon)return e.h("span",{class:"mermaid-action-icon",innerHTML:t.icon});if("function"==typeof t.icon){try{const e=t.icon(H.value);if(e&&"object"==typeof e&&"__v_isVNode"in e)return e}catch{}return e.h(t.icon)}return e.h(t.icon)}const q=e.computed(()=>({showSourceCode:p.value,svg:E.value,rawContent:k.raw.content||"",isLoading:C.value,copied:M.value,zoomIn:y,zoomOut:b,reset:B,fullscreen:x,toggleCode:z,copyCode:D,download:P,raw:k.raw}));return e.onMounted(async()=>{const e=await o.checkMermaidAvailable();g.value=!e}),(t,o)=>g.value?(e.openBlock(),e.createBlock(l.default,{key:0,code:k.raw?.content||"",language:"mermaid","is-dark":k.isDark,"light-theme":k.shikiTheme[0],"dark-theme":k.shikiTheme[1]},null,8,["code","is-dark","light-theme","dark-theme"])):(e.openBlock(),e.createElementBlock("div",{key:k.raw.key,class:e.normalizeClass(["markdown-mermaid",{"markdown-mermaid--dark":k.isDark}])},[e.createVNode(e.Transition,{name:"toolbar",appear:""},{default:e.withCtx(()=>[e.createElementVNode("div",n,[e.renderSlot(t.$slots,"mermaidHeader",e.normalizeProps(e.guardReactiveProps(q.value)),()=>[e.createElementVNode("div",r,[e.createElementVNode("div",i,[e.createElementVNode("div",c,[e.createElementVNode("div",{class:e.normalizeClass(["segmented-slider",{"slide-right":"code"===N.value}])},null,2),e.createElementVNode("div",{class:e.normalizeClass(["segment-item",{active:"diagram"===N.value}]),onClick:o[0]||(o[0]=e=>j("diagram"))},[...o[6]||(o[6]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M12 2L2 7L12 12L22 7L12 2Z",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M2 17L12 22L22 17",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M2 12L12 17L22 12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),e.createElementVNode("span",null,"预览",-1)])],2),e.createElementVNode("div",{class:e.normalizeClass(["segment-item",{active:"code"===N.value}]),onClick:o[1]||(o[1]=e=>j("code"))},[...o[7]||(o[7]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{d:"M16 18L22 12L16 6",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),e.createElementVNode("path",{d:"M8 6L2 12L8 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1),e.createElementVNode("span",null,"代码",-1)])],2)])]),e.createElementVNode("div",d,[e.renderSlot(t.$slots,"mermaidActions",e.normalizeProps(e.guardReactiveProps(q.value)),()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,t=>(e.openBlock(),e.createElementBlock("div",{key:t.key,class:e.normalizeClass(["toolbar-action-btn",[t.class,{"toolbar-action-btn--disabled":t.disabled}]]),style:e.normalizeStyle(t.style),title:t.title,onClick:e=>function(e){e.disabled||e.onClick?.(H.value)}(t)},[t.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(T(t)),{key:0})):e.createCommentVNode("",!0)],14,s))),128)),p.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["toolbar-action-btn",{"copy-success":e.unref(M)}]),title:"复制代码",onClick:o[2]||(o[2]=e=>D(e))},[e.unref(M)?(e.openBlock(),e.createElementBlock("svg",u,[...o[8]||(o[8]=[e.createElementVNode("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",m,[...o[9]||(o[9]=[e.createElementVNode("path",{fill:"currentColor",d:"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z"},null,-1),e.createElementVNode("path",{fill:"currentColor",d:"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64"},null,-1)])]))],2)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:"toolbar-action-btn",title:"缩小",onClick:o[3]||(o[3]=e=>b(e))},[...o[10]||(o[10]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"放大",onClick:o[4]||(o[4]=e=>y(e))},[...o[11]||(o[11]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"重置",onClick:o[5]||(o[5]=e=>B(e))},[...o[12]||(o[12]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),e.createElementVNode("path",{fill:"currentColor",d:"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32"})],-1)])]),e.createElementVNode("div",{class:"toolbar-action-btn",title:"下载",onClick:P},[...o[13]||(o[13]=[e.createElementVNode("svg",{width:"16",height:"16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z"})],-1)])])],64))])])])])])]),_:3}),e.withDirectives(e.createElementVNode("div",v,[e.createVNode(l.default,{code:k.raw?.content||"",language:"mermaid","is-dark":k.isDark,"light-theme":k.shikiTheme[0],"dark-theme":k.shikiTheme[1],"show-code-block-header":!1,"sticky-code-block-header":!1},null,8,["code","is-dark","light-theme","dark-theme"])],512),[[e.vShow,p.value]]),e.withDirectives(e.createVNode(a.default,{ref_key:"syntaxMermaidRef",ref:w,content:f.value,id:V.value,"is-dark":k.isDark,config:k.config},null,8,["content","id","is-dark","config"]),[[e.vShow,!p.value]])],2))}});exports.default=h;
2
+ //# sourceMappingURL=x-markdown.cjs24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-markdown.cjs25.js","sources":["../src/components/Mermaid/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { MdComponent, MermaidExposeProps, MermaidAction, MermaidSlotProps } from './types'\r\nimport type { VNode } from 'vue'\r\nimport { computed, ref, h, onMounted } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\n// 使用运行时检测\r\nimport { checkMermaidAvailable } from '../../hooks/useMermaid'\r\nimport SyntaxMermaid from './SyntaxMermaid.vue'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\n\r\ninterface MermaidProps extends MdComponent {\r\n isDark?: boolean\r\n shikiTheme?: [string, string]\r\n config?: Record<string, any>\r\n mermaidActions?: MermaidAction[]\r\n}\r\n\r\nconst props = withDefaults(defineProps<MermaidProps>(), {\r\n raw: () => ({}),\r\n isDark: false,\r\n shikiTheme: () => ['vitesse-light', 'vitesse-dark'],\r\n config: () => ({}),\r\n mermaidActions: undefined,\r\n})\r\n\r\nconst syntaxMermaidRef = ref<InstanceType<typeof SyntaxMermaid> | null>(null)\r\nconst showSourceCode = ref(false)\r\n// 运行时检测 mermaid 是否可用\r\nconst isDegraded = ref(false)\r\nconst mermaidContent = computed(() => props.raw?.content || '')\r\nconst mermaidId = computed(() => `mermaid-${props.raw?.key || 'default'}`)\r\nconst isLoading = computed(() => syntaxMermaidRef.value?.isLoading ?? true)\r\nconst svg = computed(() => syntaxMermaidRef.value?.svg ?? '')\r\nconst activeTab = computed(() => (showSourceCode.value ? 'code' : 'diagram'))\r\n\r\nfunction handleZoomIn(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomIn()\r\n }\r\n}\r\n\r\nfunction handleZoomOut(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomOut()\r\n }\r\n}\r\n\r\nfunction handleReset(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.reset()\r\n }\r\n}\r\n\r\nfunction handleFullscreen() {\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.fullscreen()\r\n }\r\n}\r\n\r\nfunction handleToggleCode() {\r\n showSourceCode.value = !showSourceCode.value\r\n}\r\n\r\nconst { copy: copyCode, copied } = useClipboard({ copiedDuring: 1500 })\r\n\r\nfunction handleTabClick(tabName: string) {\r\n if (tabName === 'code' && !showSourceCode.value) {\r\n showSourceCode.value = true\r\n } else if (tabName === 'diagram' && showSourceCode.value) {\r\n showSourceCode.value = false\r\n }\r\n}\r\n\r\nasync function handleCopyCode(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n\r\n if (copied.value) {\r\n return\r\n }\r\n\r\n if (!props.raw.content) {\r\n return\r\n }\r\n await copyCode(props.raw.content)\r\n}\r\n\r\nfunction handleDownload() {\r\n syntaxMermaidRef.value?.download()\r\n}\r\n\r\nconst normalizedActions = computed<MermaidAction[]>(() => {\r\n return props.mermaidActions || []\r\n})\r\n\r\nconst filteredActions = computed<MermaidAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<MermaidSlotProps>(() => ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n}))\r\n\r\nfunction renderActionIcon(action: MermaidAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'mermaid-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: MermaidSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {}\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: MermaidAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\nconst exposedMethods = computed(\r\n () =>\r\n ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n }) satisfies MermaidExposeProps,\r\n)\r\n\r\n// 组件挂载时检测 mermaid 是否可用\r\nonMounted(async () => {\r\n const hasMermaid = await checkMermaidAvailable()\r\n isDegraded.value = !hasMermaid\r\n})\r\n</script>\r\n\r\n<template>\r\n <!-- 当 Mermaid 不可用时(降级),渲染 CodeBlock -->\r\n <CodeBlock\r\n v-if=\"isDegraded\"\r\n :code=\"props.raw?.content || ''\"\r\n language=\"mermaid\"\r\n :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\"\r\n :dark-theme=\"props.shikiTheme[1]\"\r\n />\r\n\r\n <!-- 当 Mermaid 可用时,渲染完整的 Mermaid 组件 -->\r\n <div v-else :key=\"props.raw.key\" class=\"markdown-mermaid\" :class=\"{ 'markdown-mermaid--dark': props.isDark }\">\r\n <Transition name=\"toolbar\" appear>\r\n <div class=\"toolbar-container\">\r\n <slot name=\"mermaidHeader\" v-bind=\"exposedMethods\">\r\n <div class=\"mermaid-toolbar\">\r\n <div class=\"toolbar-left\">\r\n <div class=\"segmented-control\">\r\n <div class=\"segmented-slider\" :class=\"{ 'slide-right': activeTab === 'code' }\" />\r\n <div\r\n class=\"segment-item\"\r\n :class=\"{ active: activeTab === 'diagram' }\"\r\n @click=\"handleTabClick('diagram')\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12 2L2 7L12 12L22 7L12 2Z\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2 17L12 22L22 17\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2 12L12 17L22 12\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span>预览</span>\r\n </div>\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'code' }\" @click=\"handleTabClick('code')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M16 18L22 12L16 6\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M8 6L2 12L8 18\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span>代码</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-right\">\r\n <slot name=\"mermaidActions\" v-bind=\"exposedMethods\">\r\n <div\r\n v-for=\"action in filteredActions\"\r\n :key=\"action.key\"\r\n class=\"toolbar-action-btn\"\r\n :class=\"[action.class, { 'toolbar-action-btn--disabled': action.disabled }]\"\r\n :style=\"action.style\"\r\n :title=\"action.title\"\r\n @click=\"handleActionClick(action)\"\r\n >\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </div>\r\n\r\n <template v-if=\"showSourceCode\">\r\n <div\r\n class=\"toolbar-action-btn\"\r\n :class=\"{ 'copy-success': copied }\"\r\n title=\"复制代码\"\r\n @click=\"handleCopyCode($event)\"\r\n >\r\n <svg\r\n v-if=\"copied\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\r\n />\r\n </svg>\r\n <svg v-else width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\"\r\n />\r\n </svg>\r\n </div>\r\n </template>\r\n\r\n <template v-else>\r\n <div class=\"toolbar-action-btn\" title=\"缩小\" @click=\"handleZoomOut($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"放大\" @click=\"handleZoomIn($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"重置\" @click=\"handleReset($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"下载\" @click=\"handleDownload\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z\"\r\n />\r\n </svg>\r\n </div>\r\n </template>\r\n </slot>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </Transition>\r\n\r\n <div v-show=\"showSourceCode\" class=\"mermaid-source-code\">\r\n <CodeBlock\r\n :code=\"props.raw?.content || ''\"\r\n language=\"mermaid\"\r\n :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\"\r\n :dark-theme=\"props.shikiTheme[1]\"\r\n :show-code-block-header=\"false\"\r\n :sticky-code-block-header=\"false\"\r\n />\r\n </div>\r\n\r\n <SyntaxMermaid\r\n v-show=\"!showSourceCode\"\r\n ref=\"syntaxMermaidRef\"\r\n :content=\"mermaidContent\"\r\n :id=\"mermaidId\"\r\n :is-dark=\"props.isDark\"\r\n :config=\"props.config\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.markdown-mermaid {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.markdown-mermaid .toolbar-container {\r\n position: relative;\r\n z-index: 10;\r\n flex-shrink: 0;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .toolbar-container {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: transparent;\r\n color: inherit;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-left {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-control {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n background: rgba(0, 0, 0, 0.06);\r\n border-radius: 6px;\r\n padding: 3px;\r\n gap: 2px;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-control {\r\n background: rgba(255, 255, 255, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider {\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: calc(50% - 4px);\r\n height: calc(100% - 6px);\r\n background: #fff;\r\n border-radius: 4px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 0;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-slider {\r\n background: rgba(255, 255, 255, 0.15);\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider.slide-right {\r\n transform: translateX(calc(100% + 2px));\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n font-size: 12px;\r\n border: none;\r\n color: inherit;\r\n min-width: 60px;\r\n text-align: center;\r\n box-sizing: border-box;\r\n font-weight: 500;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 5px 12px;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n opacity: 0.6;\r\n user-select: none;\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item.active {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segment-item.active {\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item:hover {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item svg {\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-right {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n opacity: 0.7;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.copy-success {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .toolbar-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.toolbar-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-source-code {\r\n position: relative;\r\n z-index: 1;\r\n flex: 1;\r\n width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.toolbar-enter-active,\r\n.toolbar-leave-active {\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.toolbar-enter-from,\r\n.toolbar-leave-to {\r\n opacity: 0;\r\n}\r\n</style>\r\n"],"names":["props","__props","syntaxMermaidRef","ref","showSourceCode","isDegraded","mermaidContent","computed","raw","content","mermaidId","key","isLoading","value","svg","activeTab","handleZoomIn","event","stopPropagation","preventDefault","zoomIn","handleZoomOut","zoomOut","handleReset","reset","handleFullscreen","fullscreen","handleToggleCode","copy","copyCode","copied","useClipboard","copiedDuring","handleTabClick","tabName","async","handleCopyCode","handleDownload","download","normalizedActions","mermaidActions","filteredActions","filter","action","show","slotProps","rawContent","toggleCode","renderActionIcon","icon","h","class","innerHTML","result","exposedMethods","onMounted","hasMermaid","checkMermaidAvailable","_createBlock","CodeBlock","code","language","isDark","shikiTheme","_createElementBlock","_normalizeClass","_createVNode","_Transition","name","appear","_createElementVNode","_hoisted_1","_renderSlot","_ctx","$slots","_normalizeProps","_guardReactiveProps","_hoisted_2","_hoisted_3","_hoisted_4","active","onClick","width","height","viewBox","fill","xmlns","d","stroke","_hoisted_5","_Fragment","_renderList","disabled","style","_normalizeStyle","title","$event","handleActionClick","_resolveDynamicComponent","_unref","_cache","_openBlock","_hoisted_7","_hoisted_8","_withDirectives","_hoisted_9","SyntaxMermaid","id","config"],"mappings":"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"}
1
+ {"version":3,"file":"x-markdown.cjs24.js","sources":["../src/components/Mermaid/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { MdComponent, MermaidExposeProps, MermaidAction, MermaidSlotProps } from './types'\r\nimport type { VNode } from 'vue'\r\nimport { computed, ref, h, onMounted } from 'vue'\r\nimport { useClipboard } from '@vueuse/core'\r\n// 使用运行时检测\r\nimport { checkMermaidAvailable } from '../../hooks/useMermaid'\r\nimport SyntaxMermaid from './SyntaxMermaid.vue'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\n\r\ninterface MermaidProps extends MdComponent {\r\n isDark?: boolean\r\n shikiTheme?: [string, string]\r\n config?: Record<string, any>\r\n mermaidActions?: MermaidAction[]\r\n}\r\n\r\nconst props = withDefaults(defineProps<MermaidProps>(), {\r\n raw: () => ({}),\r\n isDark: false,\r\n shikiTheme: () => ['vitesse-light', 'vitesse-dark'],\r\n config: () => ({}),\r\n mermaidActions: undefined,\r\n})\r\n\r\nconst syntaxMermaidRef = ref<InstanceType<typeof SyntaxMermaid> | null>(null)\r\nconst showSourceCode = ref(false)\r\n// 运行时检测 mermaid 是否可用\r\nconst isDegraded = ref(false)\r\nconst mermaidContent = computed(() => props.raw?.content || '')\r\nconst mermaidId = computed(() => `mermaid-${props.raw?.key || 'default'}`)\r\nconst isLoading = computed(() => syntaxMermaidRef.value?.isLoading ?? true)\r\nconst svg = computed(() => syntaxMermaidRef.value?.svg ?? '')\r\nconst activeTab = computed(() => (showSourceCode.value ? 'code' : 'diagram'))\r\n\r\nfunction handleZoomIn(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomIn()\r\n }\r\n}\r\n\r\nfunction handleZoomOut(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.zoomOut()\r\n }\r\n}\r\n\r\nfunction handleReset(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.reset()\r\n }\r\n}\r\n\r\nfunction handleFullscreen() {\r\n if (!showSourceCode.value) {\r\n syntaxMermaidRef.value?.fullscreen()\r\n }\r\n}\r\n\r\nfunction handleToggleCode() {\r\n showSourceCode.value = !showSourceCode.value\r\n}\r\n\r\nconst { copy: copyCode, copied } = useClipboard({ copiedDuring: 1500 })\r\n\r\nfunction handleTabClick(tabName: string) {\r\n if (tabName === 'code' && !showSourceCode.value) {\r\n showSourceCode.value = true\r\n } else if (tabName === 'diagram' && showSourceCode.value) {\r\n showSourceCode.value = false\r\n }\r\n}\r\n\r\nasync function handleCopyCode(event?: Event) {\r\n event?.stopPropagation()\r\n event?.preventDefault()\r\n\r\n if (copied.value) {\r\n return\r\n }\r\n\r\n if (!props.raw.content) {\r\n return\r\n }\r\n await copyCode(props.raw.content)\r\n}\r\n\r\nfunction handleDownload() {\r\n syntaxMermaidRef.value?.download()\r\n}\r\n\r\nconst normalizedActions = computed<MermaidAction[]>(() => {\r\n return props.mermaidActions || []\r\n})\r\n\r\nconst filteredActions = computed<MermaidAction[]>(() => {\r\n return normalizedActions.value.filter((action) => {\r\n if (!action.show) return true\r\n return action.show(slotProps.value)\r\n })\r\n})\r\n\r\nconst slotProps = computed<MermaidSlotProps>(() => ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n}))\r\n\r\nfunction renderActionIcon(action: MermaidAction): VNode | null {\r\n if (!action.icon) return null\r\n\r\n if (typeof action.icon === 'string') {\r\n return h('span', {\r\n class: 'mermaid-action-icon',\r\n innerHTML: action.icon,\r\n })\r\n }\r\n\r\n if (typeof action.icon === 'function') {\r\n try {\r\n const result = (action.icon as (props: MermaidSlotProps) => VNode)(slotProps.value)\r\n if (result && typeof result === 'object' && '__v_isVNode' in result) {\r\n return result\r\n }\r\n } catch {}\r\n return h(action.icon as any)\r\n }\r\n\r\n return h(action.icon as any)\r\n}\r\n\r\nfunction handleActionClick(action: MermaidAction) {\r\n if (action.disabled) return\r\n action.onClick?.(slotProps.value)\r\n}\r\n\r\nconst exposedMethods = computed(\r\n () =>\r\n ({\r\n showSourceCode: showSourceCode.value,\r\n svg: svg.value,\r\n rawContent: props.raw.content || '',\r\n isLoading: isLoading.value,\r\n copied: copied.value,\r\n zoomIn: handleZoomIn,\r\n zoomOut: handleZoomOut,\r\n reset: handleReset,\r\n fullscreen: handleFullscreen,\r\n toggleCode: handleToggleCode,\r\n copyCode: handleCopyCode,\r\n download: handleDownload,\r\n raw: props.raw,\r\n }) satisfies MermaidExposeProps,\r\n)\r\n\r\n// 组件挂载时检测 mermaid 是否可用\r\nonMounted(async () => {\r\n const hasMermaid = await checkMermaidAvailable()\r\n isDegraded.value = !hasMermaid\r\n})\r\n</script>\r\n\r\n<template>\r\n <!-- 当 Mermaid 不可用时(降级),渲染 CodeBlock -->\r\n <CodeBlock\r\n v-if=\"isDegraded\"\r\n :code=\"props.raw?.content || ''\"\r\n language=\"mermaid\"\r\n :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\"\r\n :dark-theme=\"props.shikiTheme[1]\"\r\n />\r\n\r\n <!-- 当 Mermaid 可用时,渲染完整的 Mermaid 组件 -->\r\n <div v-else :key=\"props.raw.key\" class=\"markdown-mermaid\" :class=\"{ 'markdown-mermaid--dark': props.isDark }\">\r\n <Transition name=\"toolbar\" appear>\r\n <div class=\"toolbar-container\">\r\n <slot name=\"mermaidHeader\" v-bind=\"exposedMethods\">\r\n <div class=\"mermaid-toolbar\">\r\n <div class=\"toolbar-left\">\r\n <div class=\"segmented-control\">\r\n <div class=\"segmented-slider\" :class=\"{ 'slide-right': activeTab === 'code' }\" />\r\n <div\r\n class=\"segment-item\"\r\n :class=\"{ active: activeTab === 'diagram' }\"\r\n @click=\"handleTabClick('diagram')\"\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12 2L2 7L12 12L22 7L12 2Z\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2 17L12 22L22 17\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M2 12L12 17L22 12\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span>预览</span>\r\n </div>\r\n <div class=\"segment-item\" :class=\"{ active: activeTab === 'code' }\" @click=\"handleTabClick('code')\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M16 18L22 12L16 6\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M8 6L2 12L8 18\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n <span>代码</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"toolbar-right\">\r\n <slot name=\"mermaidActions\" v-bind=\"exposedMethods\">\r\n <div\r\n v-for=\"action in filteredActions\"\r\n :key=\"action.key\"\r\n class=\"toolbar-action-btn\"\r\n :class=\"[action.class, { 'toolbar-action-btn--disabled': action.disabled }]\"\r\n :style=\"action.style\"\r\n :title=\"action.title\"\r\n @click=\"handleActionClick(action)\"\r\n >\r\n <component :is=\"renderActionIcon(action)\" v-if=\"action.icon\" />\r\n </div>\r\n\r\n <template v-if=\"showSourceCode\">\r\n <div\r\n class=\"toolbar-action-btn\"\r\n :class=\"{ 'copy-success': copied }\"\r\n title=\"复制代码\"\r\n @click=\"handleCopyCode($event)\"\r\n >\r\n <svg\r\n v-if=\"copied\"\r\n width=\"16\"\r\n height=\"16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 1024 1024\"\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"\r\n />\r\n </svg>\r\n <svg v-else width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64z\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64\"\r\n />\r\n </svg>\r\n </div>\r\n </template>\r\n\r\n <template v-else>\r\n <div class=\"toolbar-action-btn\" title=\"缩小\" @click=\"handleZoomOut($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"放大\" @click=\"handleZoomIn($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"重置\" @click=\"handleReset($event)\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32m0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32M96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32m576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <div class=\"toolbar-action-btn\" title=\"下载\" @click=\"handleDownload\">\r\n <svg width=\"16\" height=\"16\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z\"\r\n />\r\n </svg>\r\n </div>\r\n </template>\r\n </slot>\r\n </div>\r\n </div>\r\n </slot>\r\n </div>\r\n </Transition>\r\n\r\n <div v-show=\"showSourceCode\" class=\"mermaid-source-code\">\r\n <CodeBlock\r\n :code=\"props.raw?.content || ''\"\r\n language=\"mermaid\"\r\n :is-dark=\"props.isDark\"\r\n :light-theme=\"props.shikiTheme[0]\"\r\n :dark-theme=\"props.shikiTheme[1]\"\r\n :show-code-block-header=\"false\"\r\n :sticky-code-block-header=\"false\"\r\n />\r\n </div>\r\n\r\n <SyntaxMermaid\r\n v-show=\"!showSourceCode\"\r\n ref=\"syntaxMermaidRef\"\r\n :content=\"mermaidContent\"\r\n :id=\"mermaidId\"\r\n :is-dark=\"props.isDark\"\r\n :config=\"props.config\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style>\r\n.markdown-mermaid {\r\n border-radius: 8px;\r\n overflow: hidden;\r\n font-size: 0;\r\n background: rgba(0, 0, 0, 0.03);\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark {\r\n background: rgba(255, 255, 255, 0.13);\r\n}\r\n\r\n.markdown-mermaid .toolbar-container {\r\n position: relative;\r\n z-index: 10;\r\n flex-shrink: 0;\r\n background: rgba(0, 0, 0, 0.05);\r\n color: #333;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .toolbar-container {\r\n background: rgba(0, 0, 0, 0.25);\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n background: transparent;\r\n color: inherit;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-left {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-control {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n background: rgba(0, 0, 0, 0.06);\r\n border-radius: 6px;\r\n padding: 3px;\r\n gap: 2px;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-control {\r\n background: rgba(255, 255, 255, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider {\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: calc(50% - 4px);\r\n height: calc(100% - 6px);\r\n background: #fff;\r\n border-radius: 4px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r\n z-index: 0;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-slider {\r\n background: rgba(255, 255, 255, 0.15);\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segmented-slider.slide-right {\r\n transform: translateX(calc(100% + 2px));\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 4px;\r\n font-size: 12px;\r\n border: none;\r\n color: inherit;\r\n min-width: 60px;\r\n text-align: center;\r\n box-sizing: border-box;\r\n font-weight: 500;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 5px 12px;\r\n transition: all 0.2s ease;\r\n background: transparent;\r\n opacity: 0.6;\r\n user-select: none;\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item.active {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segment-item.active {\r\n color: #fff;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item:hover {\r\n opacity: 1;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .segment-item svg {\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-right {\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n padding: 0;\r\n border: none;\r\n border-radius: 4px;\r\n background: transparent;\r\n color: inherit;\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n opacity: 0.7;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn:hover {\r\n opacity: 1;\r\n background: rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.copy-success {\r\n opacity: 1;\r\n color: #22c55e;\r\n}\r\n\r\n.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .toolbar-action-btn:hover {\r\n background: rgba(255, 255, 255, 0.1);\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.toolbar-action-btn--disabled {\r\n opacity: 0.3;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.markdown-mermaid .mermaid-toolbar .mermaid-action-icon :deep(svg) {\r\n width: 16px;\r\n height: 16px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.markdown-mermaid .mermaid-source-code {\r\n position: relative;\r\n z-index: 1;\r\n flex: 1;\r\n width: 100%;\r\n overflow: auto;\r\n box-sizing: border-box;\r\n}\r\n\r\n.toolbar-enter-active,\r\n.toolbar-leave-active {\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.toolbar-enter-from,\r\n.toolbar-leave-to {\r\n opacity: 0;\r\n}\r\n</style>\r\n"],"names":["props","__props","syntaxMermaidRef","ref","showSourceCode","isDegraded","mermaidContent","computed","raw","content","mermaidId","key","isLoading","value","svg","activeTab","handleZoomIn","event","stopPropagation","preventDefault","zoomIn","handleZoomOut","zoomOut","handleReset","reset","handleFullscreen","fullscreen","handleToggleCode","copy","copyCode","copied","useClipboard","copiedDuring","handleTabClick","tabName","async","handleCopyCode","handleDownload","download","normalizedActions","mermaidActions","filteredActions","filter","action","show","slotProps","rawContent","toggleCode","renderActionIcon","icon","h","class","innerHTML","result","exposedMethods","onMounted","hasMermaid","checkMermaidAvailable","_createBlock","CodeBlock","code","language","isDark","shikiTheme","_createElementBlock","_normalizeClass","_createVNode","_Transition","name","appear","_createElementVNode","_hoisted_1","_renderSlot","_ctx","$slots","_normalizeProps","_guardReactiveProps","_hoisted_2","_hoisted_3","_hoisted_4","active","onClick","width","height","viewBox","fill","xmlns","d","stroke","_hoisted_5","_Fragment","_renderList","disabled","style","_normalizeStyle","title","$event","handleActionClick","_resolveDynamicComponent","_unref","_cache","_openBlock","_hoisted_7","_hoisted_8","_withDirectives","_hoisted_9","SyntaxMermaid","id","config"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./x-markdown.cjs30.js"),t=require("vue"),o=e.isClient?window:void 0,n=e.isClient?window.navigator:void 0;function r(e){var o;const n=t.toValue(e);return null!==(o=null==n?void 0:n.$el)&&void 0!==o?o:n}function a(...n){const a=t.computed(()=>{const o=e.toArray(t.toValue(n[0])).filter(e=>null!=e);return o.every(e=>"string"!=typeof e)?o:void 0});return e.watchImmediate(()=>{var l,i;return[null!==(l=null===(i=a.value)||void 0===i?void 0:i.map(e=>r(e)))&&void 0!==l?l:[o].filter(e=>null!=e),e.toArray(t.toValue(a.value?n[1]:n[0])),e.toArray(t.unref(a.value?n[2]:n[1])),t.toValue(a.value?n[3]:n[2])]},([t,o,n,r],a,l)=>{if(!(null==t?void 0:t.length)||!(null==o?void 0:o.length)||!(null==n?void 0:n.length))return;const i=e.isObject(r)?{...r}:r,u=t.flatMap(e=>o.flatMap(t=>n.map(o=>((e,t,o,n)=>(e.addEventListener(t,o,n),()=>e.removeEventListener(t,o,n)))(e,t,o,i))));l(()=>{u.forEach(e=>e())})},{flush:"post"})}function l(){const e=t.shallowRef(!1),o=t.getCurrentInstance();return o&&t.onMounted(()=>{e.value=!0},o),e}function i(e){const o=l();return t.computed(()=>(o.value,Boolean(e())))}function u(o,r={}){const{controls:l=!1,navigator:u=n}=r,s=i(()=>u&&"permissions"in u),c=t.shallowRef(),d="string"==typeof o?{name:o}:o,v=t.shallowRef(),p=()=>{var e,t;v.value=null!==(e=null===(t=c.value)||void 0===t?void 0:t.state)&&void 0!==e?e:"prompt"};a(c,"change",p,{passive:!0});const m=e.createSingletonPromise(async()=>{if(s.value){if(!c.value)try{c.value=await u.permissions.query(d)}catch(e){c.value=void 0}finally{p()}return l?t.toRaw(c.value):void 0}});return m(),l?{state:v,isSupported:s,query:m}:v}exports.createSingletonPromise=e.createSingletonPromise,exports.isClient=e.isClient,exports.isObject=e.isObject,exports.toArray=e.toArray,exports.tryOnScopeDispose=e.tryOnScopeDispose,exports.useTimeoutFn=e.useTimeoutFn,exports.watchImmediate=e.watchImmediate,exports.defaultNavigator=n,exports.defaultWindow=o,exports.unrefElement=r,exports.useClipboard=function(o={}){const{navigator:r=n,read:l=!1,source:s,copiedDuring:c=1500,legacy:d=!1}=o,v=i(()=>r&&"clipboard"in r),p=u("clipboard-read"),m=u("clipboard-write"),f=t.computed(()=>v.value||d),y=t.shallowRef(""),x=t.shallowRef(!1),g=e.useTimeoutFn(()=>x.value=!1,c,{immediate:!1});function w(e){return"granted"===e||"prompt"===e}return f.value&&l&&a(["copy","cut"],async function(){let e=!(v.value&&w(p.value));if(!e)try{y.value=await r.clipboard.readText()}catch(a){e=!0}var t,o,n;e&&(y.value=null!==(t=null===(o=document)||void 0===o||null===(n=o.getSelection)||void 0===n||null===(n=n.call(o))||void 0===n?void 0:n.toString())&&void 0!==t?t:"")},{passive:!0}),{isSupported:f,text:t.readonly(y),copied:t.readonly(x),copy:async function(e=t.toValue(s)){if(f.value&&null!=e){let t=!(v.value&&w(m.value));if(!t)try{await r.clipboard.writeText(e)}catch(o){t=!0}t&&function(e){const t=document.createElement("textarea");t.value=e,t.style.position="absolute",t.style.opacity="0",t.setAttribute("readonly",""),document.body.appendChild(t),t.select(),document.execCommand("copy"),t.remove()}(e),y.value=e,x.value=!0,g.start()}}}},exports.useEventListener=a,exports.useMounted=l,exports.usePermission=u,exports.useSupported=i;
2
+ //# sourceMappingURL=x-markdown.cjs26.js.map