@hejiayue/x-markdown-test 0.0.1-beta.113 → 0.0.1-beta.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/style.css +1 -1
- package/dist/x-markdown.cjs.js +1 -1
- package/dist/x-markdown.cjs10.js +2 -0
- package/dist/x-markdown.cjs10.js.map +1 -0
- package/dist/x-markdown.cjs11.js +2 -0
- package/dist/x-markdown.cjs11.js.map +1 -0
- package/dist/x-markdown.cjs13.js +2 -0
- package/dist/x-markdown.cjs13.js.map +1 -0
- package/dist/x-markdown.cjs14.js +2 -0
- package/dist/x-markdown.cjs14.js.map +1 -0
- package/dist/x-markdown.cjs15.js +2 -0
- package/dist/x-markdown.cjs15.js.map +1 -0
- package/dist/x-markdown.cjs16.js +2 -0
- package/dist/x-markdown.cjs16.js.map +1 -0
- package/dist/x-markdown.cjs17.js +2 -0
- package/dist/x-markdown.cjs17.js.map +1 -0
- package/dist/x-markdown.cjs18.js +2 -0
- package/dist/x-markdown.cjs18.js.map +1 -0
- package/dist/x-markdown.cjs19.js +2 -0
- package/dist/x-markdown.cjs19.js.map +1 -0
- package/dist/x-markdown.cjs2.js +2 -0
- package/dist/x-markdown.cjs2.js.map +1 -0
- package/dist/x-markdown.cjs21.js +2 -0
- package/dist/x-markdown.cjs21.js.map +1 -0
- package/dist/x-markdown.cjs22.js +2 -0
- package/dist/x-markdown.cjs22.js.map +1 -0
- package/dist/x-markdown.cjs24.js +2 -0
- package/dist/x-markdown.cjs24.js.map +1 -0
- package/dist/x-markdown.cjs26.js +2 -0
- package/dist/x-markdown.cjs26.js.map +1 -0
- package/dist/x-markdown.cjs27.js +2 -0
- package/dist/x-markdown.cjs27.js.map +1 -0
- package/dist/x-markdown.cjs28.js +2 -0
- package/dist/x-markdown.cjs28.js.map +1 -0
- package/dist/x-markdown.cjs3.js +2 -0
- package/dist/x-markdown.cjs3.js.map +1 -0
- package/dist/x-markdown.cjs30.js +2 -0
- package/dist/x-markdown.cjs30.js.map +1 -0
- package/dist/x-markdown.cjs31.js +2 -0
- package/dist/x-markdown.cjs31.js.map +1 -0
- package/dist/x-markdown.cjs33.js +2 -0
- package/dist/x-markdown.cjs33.js.map +1 -0
- package/dist/x-markdown.cjs4.js +2 -0
- package/dist/x-markdown.cjs4.js.map +1 -0
- package/dist/x-markdown.cjs5.js +2 -0
- package/dist/x-markdown.cjs5.js.map +1 -0
- package/dist/x-markdown.cjs6.js +2 -0
- package/dist/x-markdown.cjs6.js.map +1 -0
- package/dist/x-markdown.cjs7.js +2 -0
- package/dist/x-markdown.cjs7.js.map +1 -0
- package/dist/x-markdown.cjs8.js +2 -0
- package/dist/x-markdown.cjs8.js.map +1 -0
- package/dist/x-markdown.cjs9.js +2 -0
- package/dist/x-markdown.cjs9.js.map +1 -0
- package/dist/x-markdown.es.js +26 -17
- package/dist/x-markdown.es.js.map +1 -1
- package/dist/x-markdown.es10.js +49 -0
- package/dist/x-markdown.es10.js.map +1 -0
- package/dist/x-markdown.es11.js +54 -0
- package/dist/x-markdown.es11.js.map +1 -0
- package/dist/x-markdown.es13.js +89 -0
- package/dist/x-markdown.es13.js.map +1 -0
- package/dist/x-markdown.es14.js +34 -0
- package/dist/x-markdown.es14.js.map +1 -0
- package/dist/x-markdown.es15.js +5 -0
- package/dist/x-markdown.es15.js.map +1 -0
- package/dist/x-markdown.es16.js +6 -0
- package/dist/x-markdown.es16.js.map +1 -0
- package/dist/x-markdown.es17.js +8 -0
- package/dist/x-markdown.es17.js.map +1 -0
- package/dist/x-markdown.es18.js +8 -0
- package/dist/x-markdown.es18.js.map +1 -0
- package/dist/x-markdown.es19.js +207 -0
- package/dist/x-markdown.es19.js.map +1 -0
- package/dist/x-markdown.es2.js +83 -0
- package/dist/x-markdown.es2.js.map +1 -0
- package/dist/x-markdown.es21.js +11 -0
- package/dist/x-markdown.es21.js.map +1 -0
- package/dist/x-markdown.es22.js +75 -0
- package/dist/x-markdown.es22.js.map +1 -0
- package/dist/{index-SElRorTo.js → x-markdown.es24.js} +7 -139
- package/dist/x-markdown.es24.js.map +1 -0
- package/dist/x-markdown.es26.js +160 -0
- package/dist/x-markdown.es26.js.map +1 -0
- package/dist/x-markdown.es27.js +8 -0
- package/dist/x-markdown.es27.js.map +1 -0
- package/dist/x-markdown.es28.js +142 -0
- package/dist/x-markdown.es28.js.map +1 -0
- package/dist/x-markdown.es3.js +94 -0
- package/dist/x-markdown.es3.js.map +1 -0
- package/dist/x-markdown.es30.js +78 -0
- package/dist/x-markdown.es30.js.map +1 -0
- package/dist/x-markdown.es31.js +125 -0
- package/dist/x-markdown.es31.js.map +1 -0
- package/dist/x-markdown.es33.js +6 -0
- package/dist/x-markdown.es33.js.map +1 -0
- package/dist/x-markdown.es4.js +150 -0
- package/dist/x-markdown.es4.js.map +1 -0
- package/dist/x-markdown.es5.js +40 -0
- package/dist/x-markdown.es5.js.map +1 -0
- package/dist/x-markdown.es6.js +24 -0
- package/dist/x-markdown.es6.js.map +1 -0
- package/dist/x-markdown.es7.js +279 -0
- package/dist/x-markdown.es7.js.map +1 -0
- package/dist/x-markdown.es8.js +27 -0
- package/dist/x-markdown.es8.js.map +1 -0
- package/dist/x-markdown.es9.js +409 -0
- package/dist/x-markdown.es9.js.map +1 -0
- package/package.json +5 -5
- package/dist/index-D9u8JldH.cjs +0 -2
- package/dist/index-D9u8JldH.cjs.map +0 -1
- package/dist/index-SElRorTo.js.map +0 -1
- package/dist/index-lQ_FQFr2.js +0 -1882
- package/dist/index-lQ_FQFr2.js.map +0 -1
- package/dist/index-nZ5iH1aN.cjs +0 -2
- package/dist/index-nZ5iH1aN.cjs.map +0 -1
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.x-md-syntax-code-block[data-v-ddb364e9]{width:100%}.x-md-syntax-code-block pre[data-v-ddb364e9]{margin:0;padding:16px;overflow:auto;background:transparent!important}.x-md-code-content[data-v-ddb364e9]{display:flex;flex-direction:column}.x-md-code-line[data-v-ddb364e9]{width:100%;font-size:14px;line-height:1.5;display:flex}.x-md-code-block[data-v-8b0fb0b9]{border-radius:8px;overflow:hidden;font-size:0;background:#00000008}.x-md-code-block.x-md-code-block--dark[data-v-8b0fb0b9]{background:#ffffff21}.x-md-code-header-wrapper--sticky[data-v-8b0fb0b9]{background:#fff;position:sticky;top:0}.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky[data-v-8b0fb0b9]{background:#1a1a1a}.x-md-code-header[data-v-8b0fb0b9]{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:#0000000d;color:#333}.x-md-code-block .x-md-code-header-wrapper--sticky .x-md-code-header[data-v-8b0fb0b9]{background:#ebebeb;border-radius:8px 8px 0 0}.x-md-code-block[data-v-8b0fb0b9]:has(.x-md-code-header-wrapper--sticky){overflow:visible}.x-md-code-block.x-md-code-block--dark .x-md-code-header[data-v-8b0fb0b9]{background:#00000040;color:#fff}.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky .x-md-code-header[data-v-8b0fb0b9]{background:#2c2c2c}.x-md-code-block .x-md-code-header-wrapper--collapsed .x-md-code-header[data-v-8b0fb0b9]{border-radius:8px}.x-md-code-header__left[data-v-8b0fb0b9],.x-md-code-header__right[data-v-8b0fb0b9]{display:flex;align-items:center;gap:8px}.x-md-code-lang[data-v-8b0fb0b9]{font-size:12px;font-weight:500;opacity:.6;text-transform:lowercase}.x-md-copy-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.7;transition:all .2s ease}.x-md-copy-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-copy-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-copy-btn.x-md-copy-btn--copied[data-v-8b0fb0b9]{opacity:1;color:#22c55e}.x-md-copy-icon[data-v-8b0fb0b9]{flex-shrink:0}.x-md-action-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.7;transition:all .2s ease}.x-md-action-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-action-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-action-btn.x-md-action-btn--disabled[data-v-8b0fb0b9]{opacity:.3;cursor:not-allowed;pointer-events:none}.x-md-action-icon[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center}.x-md-action-icon[data-v-8b0fb0b9] svg{width:16px;height:16px;flex-shrink:0}.x-md-collapse-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.5;transition:all .2s ease}.x-md-collapse-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-collapse-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-collapse-icon[data-v-8b0fb0b9]{transition:transform .2s ease}.x-md-collapse-btn--collapsed .x-md-collapse-icon[data-v-8b0fb0b9]{transform:rotate(-90deg)}.x-md-code-body[data-v-8b0fb0b9]{overflow:hidden;transition:max-height .3s ease,opacity .2s ease}.x-md-code-body--collapsed[data-v-8b0fb0b9]{max-height:0!important;opacity:0}.x-md-inline-code[data-v-97166d5b]{display:inline-block;border-radius:8px;overflow:hidden;font-size:14px;background:#00000008;vertical-align:sub}.x-md-inline-code.x-md-inline-code--dark[data-v-97166d5b]{background:#ffffff21}.x-md-inline-code code[data-v-97166d5b]{background:transparent!important}
|
|
1
|
+
@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.x-md-animated-word{animation:fadeIn .3s ease-in-out}.x-md-renderer pre{margin:16px 0;padding:0;overflow:auto;background:transparent!important}.x-md-renderer pre:has(.x-md-code-header-wrapper--sticky){overflow:unset}.katex-error{color:var(--el-text-color-secondary)!important}.katex-html{overflow:auto hidden;padding:3px}.x-md-syntax-code-block[data-v-ddb364e9]{width:100%}.x-md-syntax-code-block pre[data-v-ddb364e9]{margin:0;padding:16px;overflow:auto;background:transparent!important}.x-md-code-content[data-v-ddb364e9]{display:flex;flex-direction:column}.x-md-code-line[data-v-ddb364e9]{width:100%;font-size:14px;line-height:1.5;display:flex}.x-md-code-block[data-v-8b0fb0b9]{border-radius:8px;overflow:hidden;font-size:0;background:#00000008}.x-md-code-block.x-md-code-block--dark[data-v-8b0fb0b9]{background:#ffffff21}.x-md-code-header-wrapper--sticky[data-v-8b0fb0b9]{background:#fff;position:sticky;top:0}.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky[data-v-8b0fb0b9]{background:#1a1a1a}.x-md-code-header[data-v-8b0fb0b9]{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:#0000000d;color:#333}.x-md-code-block .x-md-code-header-wrapper--sticky .x-md-code-header[data-v-8b0fb0b9]{background:#ebebeb;border-radius:8px 8px 0 0}.x-md-code-block[data-v-8b0fb0b9]:has(.x-md-code-header-wrapper--sticky){overflow:visible}.x-md-code-block.x-md-code-block--dark .x-md-code-header[data-v-8b0fb0b9]{background:#00000040;color:#fff}.x-md-code-block.x-md-code-block--dark .x-md-code-header-wrapper--sticky .x-md-code-header[data-v-8b0fb0b9]{background:#2c2c2c}.x-md-code-block .x-md-code-header-wrapper--collapsed .x-md-code-header[data-v-8b0fb0b9]{border-radius:8px}.x-md-code-header__left[data-v-8b0fb0b9],.x-md-code-header__right[data-v-8b0fb0b9]{display:flex;align-items:center;gap:8px}.x-md-code-lang[data-v-8b0fb0b9]{font-size:12px;font-weight:500;opacity:.6;text-transform:lowercase}.x-md-copy-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.7;transition:all .2s ease}.x-md-copy-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-copy-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-copy-btn.x-md-copy-btn--copied[data-v-8b0fb0b9]{opacity:1;color:#22c55e}.x-md-copy-icon[data-v-8b0fb0b9]{flex-shrink:0}.x-md-action-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.7;transition:all .2s ease}.x-md-action-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-action-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-action-btn.x-md-action-btn--disabled[data-v-8b0fb0b9]{opacity:.3;cursor:not-allowed;pointer-events:none}.x-md-action-icon[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center}.x-md-action-icon[data-v-8b0fb0b9] svg{width:16px;height:16px;flex-shrink:0}.x-md-collapse-btn[data-v-8b0fb0b9]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;opacity:.5;transition:all .2s ease}.x-md-collapse-btn[data-v-8b0fb0b9]:hover{opacity:1;background:#00000014}.x-md-code-block.x-md-code-block--dark .x-md-collapse-btn[data-v-8b0fb0b9]:hover{background:#ffffff1a}.x-md-collapse-icon[data-v-8b0fb0b9]{transition:transform .2s ease}.x-md-collapse-btn--collapsed .x-md-collapse-icon[data-v-8b0fb0b9]{transform:rotate(-90deg)}.x-md-code-body[data-v-8b0fb0b9]{overflow:hidden;transition:max-height .3s ease,opacity .2s ease}.x-md-code-body--collapsed[data-v-8b0fb0b9]{max-height:0!important;opacity:0}.x-md-inline-code[data-v-97166d5b]{display:inline-block;border-radius:8px;overflow:hidden;font-size:14px;background:#00000008;vertical-align:sub}.x-md-inline-code.x-md-inline-code--dark[data-v-97166d5b]{background:#ffffff21}.x-md-inline-code code[data-v-97166d5b]{background:transparent!important}.syntax-mermaid{display:flex;align-items:center;justify-content:center;min-height:200px;overflow:hidden;cursor:grab;position:relative}.syntax-mermaid__render-container{position:absolute;max-height:0;opacity:0;overflow:hidden;pointer-events:none}.syntax-mermaid:active{cursor:grabbing}.syntax-mermaid__content{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.syntax-mermaid__content svg{transform-origin:center center;max-width:100%;max-height:100%}.syntax-mermaid:fullscreen{max-height:100vh}.syntax-mermaid:fullscreen .syntax-mermaid__content{justify-content:center}.syntax-mermaid__loading{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:200px}.syntax-mermaid__loading-text{color:#666;font-size:14px}.syntax-mermaid--dark .syntax-mermaid__loading-text{color:#999}.markdown-mermaid{border-radius:8px;overflow:hidden;font-size:0;background:#00000008}.markdown-mermaid.markdown-mermaid--dark{background:#ffffff21}.markdown-mermaid .toolbar-container{position:relative;z-index:10;flex-shrink:0;background:#0000000d;color:#333}.markdown-mermaid.markdown-mermaid--dark .toolbar-container{background:#00000040;color:#fff}.markdown-mermaid .mermaid-toolbar{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:transparent;color:inherit}.markdown-mermaid .mermaid-toolbar .toolbar-left{display:flex;align-items:center}.markdown-mermaid .mermaid-toolbar .segmented-control{display:flex;align-items:center;position:relative;background:#0000000f;border-radius:6px;padding:3px;gap:2px}.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-control{background:#ffffff14}.markdown-mermaid .mermaid-toolbar .segmented-slider{position:absolute;top:3px;left:3px;width:calc(50% - 4px);height:calc(100% - 6px);background:#fff;border-radius:4px;box-shadow:0 1px 3px #0000001a;transition:transform .25s cubic-bezier(.4,0,.2,1);z-index:0}.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segmented-slider{background:#ffffff26;box-shadow:0 1px 3px #0003}.markdown-mermaid .mermaid-toolbar .segmented-slider.slide-right{transform:translate(calc(100% + 2px))}.markdown-mermaid .mermaid-toolbar .segment-item{display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;border:none;color:inherit;min-width:60px;text-align:center;box-sizing:border-box;font-weight:500;cursor:pointer;border-radius:4px;padding:5px 12px;transition:all .2s ease;background:transparent;opacity:.6;user-select:none;position:relative;z-index:1}.markdown-mermaid .mermaid-toolbar .segment-item.active{opacity:1}.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .segment-item.active{color:#fff}.markdown-mermaid .mermaid-toolbar .segment-item:hover{opacity:1}.markdown-mermaid .mermaid-toolbar .segment-item svg{flex-shrink:0}.markdown-mermaid .mermaid-toolbar .toolbar-right{display:flex;align-items:center;gap:16px}.markdown-mermaid .mermaid-toolbar .toolbar-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer;transition:all .2s ease;opacity:.7}.markdown-mermaid .mermaid-toolbar .toolbar-action-btn:hover{opacity:1;background:#00000014}.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.copy-success{opacity:1;color:#22c55e}.markdown-mermaid.markdown-mermaid--dark .mermaid-toolbar .toolbar-action-btn:hover{background:#ffffff1a}.markdown-mermaid .mermaid-toolbar .toolbar-action-btn.toolbar-action-btn--disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.markdown-mermaid .mermaid-toolbar .mermaid-action-icon{display:flex;align-items:center;justify-content:center}.markdown-mermaid .mermaid-toolbar .mermaid-action-icon :deep(svg){width:16px;height:16px;flex-shrink:0}.markdown-mermaid .mermaid-source-code{position:relative;z-index:1;flex:1;width:100%;overflow:auto;box-sizing:border-box}.toolbar-enter-active,.toolbar-leave-active{transition:opacity .3s ease}.toolbar-enter-from,.toolbar-leave-to{opacity:0}
|
package/dist/x-markdown.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./x-markdown.cjs2.js"),r=require("./x-markdown.cjs3.js"),s=require("./x-markdown.cjs4.js"),o=require("./x-markdown.cjs5.js"),n=require("./x-markdown.cjs6.js"),d=require("./x-markdown.cjs7.js"),u=require("./x-markdown.cjs8.js"),t=require("./x-markdown.cjs9.js"),a=require("./x-markdown.cjs10.js"),c=require("./x-markdown.cjs11.js");exports.VueMarkdown=e.VueMarkdown,exports.VueMarkdownAsync=e.VueMarkdownAsync,exports.MarkdownRenderer=r.MarkdownRenderer,exports.MarkdownRendererAsync=r.MarkdownRendererAsync,exports.getVNodeInfos=s.getVNodeInfos,exports.render=s.render,exports.renderChildren=s.renderChildren,exports.createProcessor=o.createProcessor,exports.useMarkdownProcessor=o.useMarkdownProcessor,exports.useComponents=n.useComponents,exports.useHighlight=d.useHighlight,exports.preprocessLaTeX=u.preprocessLaTeX,exports.useProcessMarkdown=u.useProcessMarkdown,exports.useMermaid=t.useMermaid,exports.usePlugins=a.usePlugins,exports.useTheme=c.useTheme;
|
|
2
2
|
//# sourceMappingURL=x-markdown.cjs.js.map
|
|
@@ -0,0 +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.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
|
+
//# sourceMappingURL=x-markdown.cjs10.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs10.js","sources":["../src/hooks/usePlugins.ts"],"sourcesContent":["import type { Pluggable } from 'unified'\r\nimport rehypeKatex from 'rehype-katex'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport remarkBreaks from 'remark-breaks'\r\nimport remarkGfm from 'remark-gfm'\r\nimport remarkMath from 'remark-math'\r\nimport { computed, toRefs } from 'vue'\r\nimport { rehypeAnimatedPlugin } from '../plugins/rehypePlugin'\r\n\r\nfunction usePlugins(props: any) {\r\n const {\r\n allowHtml,\r\n enableAnimate,\r\n enableLatex,\r\n enableBreaks,\r\n enableGfm,\r\n rehypePlugins,\r\n remarkPlugins,\r\n rehypePluginsAhead,\r\n remarkPluginsAhead,\r\n } = toRefs(props)\r\n\r\n const rehype = computed(() => {\r\n return [\r\n ...(rehypePluginsAhead.value as Pluggable[]),\r\n allowHtml.value && rehypeRaw,\r\n enableLatex.value && rehypeKatex,\r\n enableAnimate.value && rehypeAnimatedPlugin,\r\n ...(rehypePlugins.value as Pluggable[]),\r\n ].filter(Boolean) as Pluggable[]\r\n })\r\n\r\n const remark = computed(() => {\r\n const base: (Pluggable | { plugins: Pluggable[] })[] = [\r\n enableLatex.value && remarkMath,\r\n enableGfm.value !== false && [remarkGfm, { singleTilde: false }],\r\n enableBreaks.value && remarkBreaks,\r\n ].filter(Boolean) as (Pluggable | { plugins: Pluggable[] })[]\r\n\r\n return [\r\n ...(remarkPluginsAhead.value as (Pluggable | { plugins: Pluggable[] })[]),\r\n ...base,\r\n ...(remarkPlugins.value as (Pluggable | { plugins: Pluggable[] })[]),\r\n ]\r\n })\r\n\r\n return {\r\n rehypePlugins: rehype,\r\n remarkPlugins: remark,\r\n }\r\n}\r\nexport { usePlugins }\r\n"],"names":["props","allowHtml","enableAnimate","enableLatex","enableBreaks","enableGfm","rehypePlugins","remarkPlugins","rehypePluginsAhead","remarkPluginsAhead","toRefs","computed","value","rehypeRaw","rehypeKatex","rehypeAnimatedPlugin","filter","Boolean","base","remarkMath","remarkGfm","singleTilde","remarkBreaks"],"mappings":"2RASA,SAAoBA,GAClB,MAAMC,UACJA,EAAAC,cACAA,EAAAC,YACAA,EAAAC,aACAA,EAAAC,UACAA,EAAAC,cACAA,EAAAC,cACAA,EAAAC,mBACAA,EAAAC,mBACAA,GACEC,EAAAA,OAAOV,GA0BX,MAAO,CACLM,cAzBaK,EAAAA,SAAS,IACf,IACDH,EAAmBI,MACvBX,EAAUW,OAASC,EACnBV,EAAYS,OAASE,EACrBZ,EAAcU,OAASG,EAAAA,wBACnBT,EAAcM,OAClBI,OAAOC,UAmBTV,cAhBaI,EAAAA,SAAS,KACtB,MAAMO,EAAiD,CACrDf,EAAYS,OAASO,GACD,IAApBd,EAAUO,OAAmB,CAACQ,EAAW,CAAEC,aAAa,IACxDjB,EAAaQ,OAASU,GACtBN,OAAOC,SAET,MAAO,IACDR,EAAmBG,SACpBM,KACCX,EAAcK,SAQxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t={light:"vitesse-light",dark:"vitesse-dark"};exports.themeMap=t,exports.useTheme=function(a={}){const{lightTheme:o=t.light,darkTheme:u=t.dark}=a,d=e.ref(e.isRef(a.mode)?a.mode.value:a.mode||"auto"),l=e.computed({get:()=>e.isRef(a.mode)?a.mode.value:d.value,set:e=>{d.value=e}}),s=e.ref(!1);if("undefined"!=typeof window){const e=window.matchMedia("(prefers-color-scheme: dark)");s.value=e.matches,e.addEventListener("change",e=>{s.value=e.matches})}const r=e.computed(()=>"auto"===l.value?s.value:"dark"===l.value),i=e.computed(()=>(e.isRef(a.theme)?a.theme.value:a.theme)||(r.value?u:o));return{mode:l,isDark:r,actualTheme:i,setMode:e=>{d.value=e},toggleMode:()=>{const e=["light","dark","auto"],t=e.indexOf(l.value);d.value=e[(t+1)%e.length]}}};
|
|
2
|
+
//# sourceMappingURL=x-markdown.cjs11.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs11.js","sources":["../src/hooks/useTheme.ts"],"sourcesContent":["import { computed, isRef, ref, type Ref } from 'vue'\r\n\r\nexport type ThemeMode = 'light' | 'dark' | 'auto'\r\nexport type ShikiThemeName = string // Shiki 主题名称(字符串类型,支持动态导入)\r\n\r\n// 内置主题映射\r\nexport const themeMap = {\r\n light: 'vitesse-light',\r\n dark: 'vitesse-dark',\r\n} as const\r\n\r\nexport interface UseThemeOptions {\r\n mode?: ThemeMode | Ref<ThemeMode>\r\n theme?: ShikiThemeName | Ref<ShikiThemeName | undefined>\r\n lightTheme?: ShikiThemeName\r\n darkTheme?: ShikiThemeName\r\n}\r\n\r\nexport interface UseThemeReturn {\r\n mode: Ref<ThemeMode>\r\n isDark: Ref<boolean>\r\n actualTheme: Ref<ShikiThemeName>\r\n setMode: (mode: ThemeMode) => void\r\n toggleMode: () => void\r\n}\r\n\r\n/**\r\n * 主题管理 Hook\r\n * 支持 light/dark/auto 模式切换\r\n */\r\nexport function useTheme(options: UseThemeOptions = {}): UseThemeReturn {\r\n const { lightTheme = themeMap.light, darkTheme = themeMap.dark } = options\r\n\r\n // 内部 mode(用于 setMode/toggleMode 修改)\r\n const internalMode = ref<ThemeMode>(isRef(options.mode) ? options.mode.value : options.mode || 'auto')\r\n\r\n // 实际使用的 mode(优先使用外部传入的响应式值)\r\n const mode = computed<ThemeMode>({\r\n get: () => (isRef(options.mode) ? options.mode.value : internalMode.value),\r\n set: (val) => {\r\n internalMode.value = val\r\n },\r\n })\r\n\r\n // 系统是否为暗色模式\r\n const systemIsDark = ref(false)\r\n\r\n // 监听系统主题变化\r\n if (typeof window !== 'undefined') {\r\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\r\n systemIsDark.value = mediaQuery.matches\r\n\r\n mediaQuery.addEventListener('change', (e) => {\r\n systemIsDark.value = e.matches\r\n })\r\n }\r\n\r\n // 当前是否为暗色模式\r\n const isDark = computed(() => {\r\n if (mode.value === 'auto') {\r\n return systemIsDark.value\r\n }\r\n return mode.value === 'dark'\r\n })\r\n\r\n // 实际使用的 Shiki 主题\r\n const actualTheme = computed<ShikiThemeName>(() => {\r\n // 如果传入了具体的 theme,优先使用\r\n const customTheme = isRef(options.theme) ? options.theme.value : options.theme\r\n if (customTheme) return customTheme\r\n\r\n return isDark.value ? darkTheme : lightTheme\r\n })\r\n\r\n // 设置模式\r\n const setMode = (newMode: ThemeMode) => {\r\n internalMode.value = newMode\r\n }\r\n\r\n // 切换模式 (light -> dark -> auto -> light)\r\n const toggleMode = () => {\r\n const modes: ThemeMode[] = ['light', 'dark', 'auto']\r\n const currentIndex = modes.indexOf(mode.value)\r\n internalMode.value = modes[(currentIndex + 1) % modes.length]\r\n }\r\n\r\n return {\r\n mode,\r\n isDark,\r\n actualTheme,\r\n setMode,\r\n toggleMode,\r\n }\r\n}\r\n"],"names":["themeMap","light","dark","options","lightTheme","darkTheme","internalMode","ref","isRef","mode","value","computed","get","set","val","systemIsDark","window","mediaQuery","matchMedia","matches","addEventListener","e","isDark","actualTheme","theme","setMode","newMode","toggleMode","modes","currentIndex","indexOf","length"],"mappings":"uGAMaA,EAAW,CACtBC,MAAO,gBACPC,KAAM,oDAsBD,SAAkBC,EAA2B,IAClD,MAAMC,WAAEA,EAAaJ,EAASC,gBAAOI,EAAYL,EAASE,MAASC,EAG7DG,EAAeC,EAAAA,IAAeC,EAAAA,MAAML,EAAQM,MAAQN,EAAQM,KAAKC,MAAQP,EAAQM,MAAQ,QAGzFA,EAAOE,EAAAA,SAAoB,CAC/BC,IAAK,IAAOJ,QAAML,EAAQM,MAAQN,EAAQM,KAAKC,MAAQJ,EAAaI,MACpEG,IAAMC,IACJR,EAAaI,MAAQI,KAKnBC,EAAeR,EAAAA,KAAI,GAGzB,GAAsB,oBAAXS,OAAwB,CACjC,MAAMC,EAAaD,OAAOE,WAAW,gCACrCH,EAAaL,MAAQO,EAAWE,QAEhCF,EAAWG,iBAAiB,SAAWC,IACrCN,EAAaL,MAAQW,EAAEF,SAE3B,CAGA,MAAMG,EAASX,EAAAA,SAAS,IACH,SAAfF,EAAKC,MACAK,EAAaL,MAEA,SAAfD,EAAKC,OAIRa,EAAcZ,EAAAA,SAAyB,KAEvBH,QAAML,EAAQqB,OAASrB,EAAQqB,MAAMd,MAAQP,EAAQqB,SAGlEF,EAAOZ,MAAQL,EAAYD,IAepC,MAAO,CACLK,OACAa,SACAC,cACAE,QAfeC,IACfpB,EAAaI,MAAQgB,GAerBC,WAXiB,KACjB,MAAMC,EAAqB,CAAC,QAAS,OAAQ,QACvCC,EAAeD,EAAME,QAAQrB,EAAKC,OACxCJ,EAAaI,MAAQkB,GAAOC,EAAe,GAAKD,EAAMG,SAU1D"}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=x-markdown.cjs13.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs13.js","sources":["../src/components/CodeX/index.vue"],"sourcesContent":["<script lang=\"ts\">\r\nimport { defineComponent, h, type PropType, defineAsyncComponent } from 'vue'\r\nimport type { CodeBlockAction } from '../CodeBlock/types'\r\nimport type { MermaidAction } from '../Mermaid/types'\r\nimport CodeBlock from '../CodeBlock/index.vue'\r\nimport CodeLine from '../CodeLine/index.vue'\r\n// Mermaid 组件改为动态导入,实现按需加载\r\nconst Mermaid = defineAsyncComponent(() => import('../Mermaid/index.vue'))\r\n\r\nexport default defineComponent({\r\n props: {\r\n raw: { type: Object, default: () => ({}) },\r\n codeXRender: { type: Object, default: () => ({}) },\r\n isDark: { type: Boolean, default: false },\r\n shikiTheme: {\r\n type: Array as PropType<[string, string]>,\r\n default: () => ['vitesse-light', 'vitesse-dark'],\r\n },\r\n showCodeBlockHeader: { type: Boolean, default: true },\r\n stickyCodeBlockHeader: { type: Boolean, default: true },\r\n codeMaxHeight: { type: String, default: undefined },\r\n enableAnimate: { type: Boolean, default: false },\r\n codeBlockActions: { type: Array as PropType<CodeBlockAction[]>, default: undefined },\r\n mermaidActions: { type: Array as PropType<MermaidAction[]>, default: undefined },\r\n mermaidConfig: { type: Object as PropType<Record<string, any>>, default: undefined },\r\n },\r\n setup(props, { slots }) {\r\n const { codeXRender } = props\r\n\r\n return (): ReturnType<typeof h> | null => {\r\n // 处理行内代码\r\n if (props.raw.inline) {\r\n if (codeXRender && codeXRender.inline) {\r\n const renderer = codeXRender.inline\r\n if (typeof renderer === 'function') {\r\n return renderer(props)\r\n }\r\n return h(renderer, props)\r\n }\r\n // 传递完整的配置给 CodeLine,包括主题和动画设置\r\n return h(CodeLine, {\r\n raw: props.raw,\r\n isDark: props.isDark,\r\n shikiTheme: props.shikiTheme,\r\n enableAnimate: props.enableAnimate,\r\n })\r\n }\r\n\r\n const { language } = props.raw\r\n\r\n // 处理自定义渲染器\r\n if (codeXRender && codeXRender[language]) {\r\n const renderer = codeXRender[language]\r\n if (typeof renderer === 'function') {\r\n return renderer(props)\r\n }\r\n return h(renderer, props)\r\n }\r\n\r\n // 处理 Mermaid 图表\r\n if (language === 'mermaid') {\r\n const mermaidSlots: Record<string, any> = {}\r\n Object.keys(slots).forEach((key) => {\r\n if (key.startsWith('mermaid')) {\r\n mermaidSlots[key] = slots[key]\r\n }\r\n })\r\n\r\n return h(\r\n Mermaid,\r\n {\r\n raw: props.raw,\r\n isDark: props.isDark,\r\n shikiTheme: props.shikiTheme,\r\n mermaidActions: props.mermaidActions,\r\n config: props.mermaidConfig,\r\n },\r\n mermaidSlots,\r\n )\r\n }\r\n\r\n // 渲染标准代码块\r\n return h(\r\n CodeBlock,\r\n {\r\n code: props.raw.content || '',\r\n language: props.raw.language || 'text',\r\n isDark: props.isDark,\r\n lightTheme: props.shikiTheme[0],\r\n darkTheme: props.shikiTheme[1],\r\n showCodeBlockHeader: props.showCodeBlockHeader,\r\n stickyCodeBlockHeader: props.stickyCodeBlockHeader,\r\n codeMaxHeight: props.codeMaxHeight,\r\n enableAnimate: props.enableAnimate,\r\n codeBlockActions: props.codeBlockActions,\r\n },\r\n slots,\r\n )\r\n }\r\n },\r\n})\r\n</script>\r\n"],"names":["Mermaid","defineAsyncComponent","Promise","resolve","then","require","_sfc_main","defineComponent","props","raw","type","Object","default","codeXRender","isDark","Boolean","shikiTheme","Array","showCodeBlockHeader","stickyCodeBlockHeader","codeMaxHeight","String","enableAnimate","codeBlockActions","mermaidActions","mermaidConfig","setup","slots","inline","renderer","h","CodeLine","language","mermaidSlots","keys","forEach","key","startsWith","config","CodeBlock","code","content","lightTheme","darkTheme"],"mappings":"yMAOMA,EAAUC,EAAAA,qBAAqB,IAAMC,QAAAC,UAAAC,KAAA,IAAAC,QAAO,2BAElDC,EAAeC,kBAAgB,CAC7BC,MAAO,CACLC,IAAK,CAAEC,KAAMC,OAAQC,QAAS,KAAA,CAAO,IACrCC,YAAa,CAAEH,KAAMC,OAAQC,QAAS,KAAA,CAAO,IAC7CE,OAAQ,CAAEJ,KAAMK,QAASH,SAAS,GAClCI,WAAY,CACVN,KAAMO,MACNL,QAAS,IAAM,CAAC,gBAAiB,iBAEnCM,oBAAqB,CAAER,KAAMK,QAASH,SAAS,GAC/CO,sBAAuB,CAAET,KAAMK,QAASH,SAAS,GACjDQ,cAAe,CAAEV,KAAMW,OAAQT,aAAS,GACxCU,cAAe,CAAEZ,KAAMK,QAASH,SAAS,GACzCW,iBAAkB,CAAEb,KAAMO,MAAsCL,aAAS,GACzEY,eAAgB,CAAEd,KAAMO,MAAoCL,aAAS,GACrEa,cAAe,CAAEf,KAAMC,OAAyCC,aAAS,IAE3E,KAAAc,CAAMlB,GAAOmB,MAAEA,IACb,MAAMd,YAAEA,GAAgBL,EAExB,MAAO,KAEL,GAAIA,EAAMC,IAAImB,OAAQ,CACpB,GAAIf,GAAeA,EAAYe,OAAQ,CACrC,MAAMC,EAAWhB,EAAYe,OAC7B,MAAwB,mBAAbC,EACFA,EAASrB,GAEXsB,EAAAA,EAAED,EAAUrB,EACrB,CAEA,OAAOsB,EAAAA,EAAEC,EAAAA,QAAU,CACjBtB,IAAKD,EAAMC,IACXK,OAAQN,EAAMM,OACdE,WAAYR,EAAMQ,WAClBM,cAAed,EAAMc,eAEzB,CAEA,MAAMU,SAAEA,GAAaxB,EAAMC,IAG3B,GAAII,GAAeA,EAAYmB,GAAW,CACxC,MAAMH,EAAWhB,EAAYmB,GAC7B,MAAwB,mBAAbH,EACFA,EAASrB,GAEXsB,EAAAA,EAAED,EAAUrB,EACrB,CAGA,GAAiB,YAAbwB,EAAwB,CAC1B,MAAMC,EAAoC,CAAA,EAO1C,OANAtB,OAAOuB,KAAKP,GAAOQ,QAASC,IACtBA,EAAIC,WAAW,aACjBJ,EAAaG,GAAOT,EAAMS,MAIvBN,EAAAA,EACL9B,EACA,CACES,IAAKD,EAAMC,IACXK,OAAQN,EAAMM,OACdE,WAAYR,EAAMQ,WAClBQ,eAAgBhB,EAAMgB,eACtBc,OAAQ9B,EAAMiB,eAEhBQ,EAEJ,CAGA,OAAOH,EAAAA,EACLS,EAAAA,QACA,CACEC,KAAMhC,EAAMC,IAAIgC,SAAW,GAC3BT,SAAUxB,EAAMC,IAAIuB,UAAY,OAChClB,OAAQN,EAAMM,OACd4B,WAAYlC,EAAMQ,WAAW,GAC7B2B,UAAWnC,EAAMQ,WAAW,GAC5BE,oBAAqBV,EAAMU,oBAC3BC,sBAAuBX,EAAMW,sBAC7BC,cAAeZ,EAAMY,cACrBE,cAAed,EAAMc,cACrBC,iBAAkBf,EAAMe,kBAE1BI,GAGN"}
|
|
@@ -0,0 +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}})}};
|
|
2
|
+
//# sourceMappingURL=x-markdown.cjs14.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs15.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs16.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=x-markdown.cjs17.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs17.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=x-markdown.cjs18.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs18.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=x-markdown.cjs19.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),s=require("./x-markdown.cjs4.js"),t=require("./x-markdown.cjs5.js"),r={markdown:{type:String,default:""},customAttrs:{type:Object,default:()=>({})},remarkPlugins:{type:Array,default:()=>[]},rehypePlugins:{type:Array,default:()=>[]},rehypeOptions:{type:Object,default:()=>({})},sanitize:{type:Boolean,default:!1},sanitizeOptions:{type:Object,default:()=>({})}},n=e.defineComponent({name:"VueMarkdown",props:r,setup(r,{slots:n,attrs:a}){const{markdown:o,remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y,customAttrs:c}=e.toRefs(r),{processor:d}=t.useMarkdownProcessor({remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y});return()=>{const e=d.value.parse(o.value),t=d.value.runSync(e);return s.render(t,a,n,c.value)}}}),a=e.defineComponent({name:"VueMarkdownAsync",props:r,async setup(r,{slots:n,attrs:a}){const{markdown:o,remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y,customAttrs:c}=e.toRefs(r),{processor:d}=t.useMarkdownProcessor({remarkPlugins:u,rehypePlugins:i,rehypeOptions:l,sanitize:p,sanitizeOptions:y}),m=e.shallowRef(null),k=async()=>{const e=d.value.parse(o.value);m.value=await d.value.run(e)};return e.watch(()=>[o.value,d.value],k,{flush:"sync"}),await k(),()=>m.value?s.render(m.value,a,n,c.value):null}});exports.VueMarkdown=n,exports.VueMarkdownAsync=a;
|
|
2
|
+
//# sourceMappingURL=x-markdown.cjs2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs2.js","sources":["../src/core/components.ts"],"sourcesContent":["import type { Root } from 'hast'\r\nimport type { Options as TRehypeOptions } from 'mdast-util-to-hast'\r\nimport type { PluggableList } from 'unified'\r\nimport type { PropType } from 'vue'\r\n\r\nimport type { CustomAttrs, SanitizeOptions, TVueMarkdown } from './types'\r\nimport { defineComponent, shallowRef, toRefs, watch } from 'vue'\r\n// import { useMarkdownContext } from '../components/MarkdownProvider';\r\nimport { render } from './hast-to-vnode'\r\nimport { useMarkdownProcessor } from './useProcessor'\r\n\r\nexport type { CustomAttrs, SanitizeOptions, TVueMarkdown }\r\n\r\nconst sharedProps = {\r\n markdown: {\r\n type: String as PropType<string>,\r\n default: '',\r\n },\r\n customAttrs: {\r\n type: Object as PropType<CustomAttrs>,\r\n default: () => ({}),\r\n },\r\n remarkPlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypePlugins: {\r\n type: Array as PropType<PluggableList>,\r\n default: () => [],\r\n },\r\n rehypeOptions: {\r\n type: Object as PropType<Omit<TRehypeOptions, 'file'>>,\r\n default: () => ({}),\r\n },\r\n sanitize: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n sanitizeOptions: {\r\n type: Object as PropType<SanitizeOptions>,\r\n default: () => ({}),\r\n },\r\n}\r\nconst vueMarkdownImpl = defineComponent({\r\n name: 'VueMarkdown',\r\n props: sharedProps,\r\n setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n return () => {\r\n const mdast = processor.value.parse(markdown.value)\r\n const hast = processor.value.runSync(mdast) as Root\r\n return render(hast, attrs, slots, customAttrs.value)\r\n }\r\n },\r\n})\r\n\r\nconst vueMarkdownAsyncImpl = defineComponent({\r\n name: 'VueMarkdownAsync',\r\n props: sharedProps,\r\n async setup(props, { slots, attrs }) {\r\n const { markdown, remarkPlugins, rehypePlugins, rehypeOptions, sanitize, sanitizeOptions, customAttrs } =\r\n toRefs(props)\r\n const { processor } = useMarkdownProcessor({\r\n remarkPlugins,\r\n rehypePlugins,\r\n rehypeOptions,\r\n sanitize,\r\n sanitizeOptions,\r\n })\r\n\r\n const hast = shallowRef<Root | null>(null)\r\n const process = async (): Promise<void> => {\r\n const mdast = processor.value.parse(markdown.value)\r\n hast.value = (await processor.value.run(mdast)) as Root\r\n }\r\n\r\n watch(() => [markdown.value, processor.value], process, { flush: 'sync' })\r\n\r\n await process()\r\n\r\n return () => {\r\n return hast.value ? render(hast.value, attrs, slots, customAttrs.value) : null\r\n }\r\n },\r\n})\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdown: TVueMarkdown = vueMarkdownImpl as any\r\n\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nexport const VueMarkdownAsync: TVueMarkdown = vueMarkdownAsyncImpl as any\r\n"],"names":["sharedProps","markdown","type","String","default","customAttrs","Object","remarkPlugins","Array","rehypePlugins","rehypeOptions","sanitize","Boolean","sanitizeOptions","VueMarkdown","defineComponent","name","props","setup","slots","attrs","toRefs","processor","useMarkdownProcessor","mdast","value","parse","hast","runSync","render","VueMarkdownAsync","shallowRef","process","async","run","watch","flush"],"mappings":"2KAaMA,EAAc,CAClBC,SAAU,CACRC,KAAMC,OACNC,QAAS,IAEXC,YAAa,CACXH,KAAMI,OACNF,QAAS,MAAO,IAElBG,cAAe,CACbL,KAAMM,MACNJ,QAAS,IAAM,IAEjBK,cAAe,CACbP,KAAMM,MACNJ,QAAS,IAAM,IAEjBM,cAAe,CACbR,KAAMI,OACNF,QAAS,MAAO,IAElBO,SAAU,CACRT,KAAMU,QACNR,SAAS,GAEXS,gBAAiB,CACfX,KAAMI,OACNF,QAAS,MAAO,KA0DPU,EAvDWC,EAAAA,gBAAgB,CACtCC,KAAM,cACNC,MAAOjB,EACP,KAAAkB,CAAMD,GAAOE,MAAEA,EAAAC,MAAOA,IACpB,MAAMnB,SAAEA,EAAAM,cAAUA,EAAAE,cAAeA,EAAAC,cAAeA,EAAAC,SAAeA,EAAAE,gBAAUA,EAAAR,YAAiBA,GACxFgB,EAAAA,OAAOJ,IAEHK,UAAEA,GAAcC,uBAAqB,CACzChB,gBACAE,gBACAC,gBACAC,WACAE,oBAGF,MAAO,KACL,MAAMW,EAAQF,EAAUG,MAAMC,MAAMzB,EAASwB,OACvCE,EAAOL,EAAUG,MAAMG,QAAQJ,GACrC,OAAOK,EAAAA,OAAOF,EAAMP,EAAOD,EAAOd,EAAYoB,OAElD,IAuCWK,EApCgBf,EAAAA,gBAAgB,CAC3CC,KAAM,mBACNC,MAAOjB,EACP,WAAMkB,CAAMD,GAAOE,MAAEA,EAAAC,MAAOA,IAC1B,MAAMnB,SAAEA,EAAAM,cAAUA,EAAAE,cAAeA,EAAAC,cAAeA,EAAAC,SAAeA,EAAAE,gBAAUA,EAAAR,YAAiBA,GACxFgB,EAAAA,OAAOJ,IACHK,UAAEA,GAAcC,uBAAqB,CACzChB,gBACAE,gBACAC,gBACAC,WACAE,oBAGIc,EAAOI,EAAAA,WAAwB,MAC/BC,EAAUC,UACd,MAAMT,EAAQF,EAAUG,MAAMC,MAAMzB,EAASwB,OAC7CE,EAAKF,YAAeH,EAAUG,MAAMS,IAAIV,IAO1C,OAJAW,EAAAA,MAAM,IAAM,CAAClC,EAASwB,MAAOH,EAAUG,OAAQO,EAAS,CAAEI,MAAO,eAE3DJ,IAEC,IACEL,EAAKF,MAAQI,EAAAA,OAAOF,EAAKF,MAAOL,EAAOD,EAAOd,EAAYoB,OAAS,IAE9E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x-markdown.cjs21.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
+
//# sourceMappingURL=x-markdown.cjs22.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
|