22 lines
5.8 KiB
JavaScript
22 lines
5.8 KiB
JavaScript
import{encodeData as l,Logger as F,ensureEndingSlash as R,isModuleAvailable as _,addViteSsrNoExternal as I,addViteOptimizeDepsExclude as u,addViteSsrExternal as p,addViteOptimizeDepsInclude as q,isArray as J}from"@vuepress/helper";import{path as A,getDirname as O}from"vuepress/utils";import{container as k}from"@mdit/plugin-container";import{plantuml as L}from"@mdit/plugin-plantuml";const g=t=>{k(t,{name:"chartjs",openRender:(r,a)=>{const n=r[a].info.trimStart().slice(7).trim();let e="{}",o="";for(let s=a;s<r.length;s++){const{type:m,content:i,info:c}=r[s];if(m==="container_chartjs_close")break;i&&(m==="fence"&&(c==="json"?(e=l(i),o="json"):(c==="js"||c==="javascript")&&(e=l(i),o="js")),r[s].type="chartjs_empty",r[s].hidden=!0)}return`<ChartJS config="${e}" ${n?`title="${encodeURIComponent(n)}" `:""}type="${o}">`},closeRender:()=>"</ChartJS>"})},j=(t,r)=>{const{content:a,info:n}=t[r],e=n.trim().split(":",2)[1];return`<ECharts config="${l(a)}"${e?` title="${encodeURIComponent(e)}"`:""}></ECharts>`},C=t=>{const{fence:r}=t.renderer.rules;t.renderer.rules.fence=(...a)=>{const[n,e]=a,{info:o}=n[e];return o.split(":",2)[0]==="echarts"?j(n,e):r(...a)},t.renderer.rules.echarts=j,k(t,{name:"echarts",openRender:(a,n)=>{const e=a[n].info.trimStart().slice(7).trim();let o="{}",s=!1;for(let m=n;m<a.length;m++){const{type:i,content:c,info:h}=a[m];if(i==="container_echarts_close")break;c&&(i==="fence"&&(h==="json"?o=c:(h==="js"||h==="javascript")&&(o=c,s=!0)),a[m].type="echarts_empty",a[m].hidden=!0)}return`<ECharts config="${l(o)}"${e?` title="${encodeURIComponent(e)}"`:""}${s?' type="js"':""}>`},closeRender:()=>"</ECharts>"})},N=["ant","pie","vue"],w=(t,r)=>{const a=t[r],{content:n,info:e}=a,o=e.trim().split(":",2)[1];return`<FlowChart code="${l(n)}" preset="${N.includes(o)?o:"vue"}"></FlowChart>`},M=t=>{const{fence:r}=t.renderer.rules;t.renderer.rules.fence=(...a)=>{const[n,e]=a,{info:o}=n[e],[s]=o.split(":",2);return s==="flow"||s==="flowchart"?w(n,e):r(...a)},t.renderer.rules.flowchart=w},b=(t,r)=>`<MarkMap content="${l(t[r].content)}"></MarkMap>`,y=t=>{const{fence:r}=t.renderer.rules;t.renderer.rules.fence=(...a)=>{const[n,e]=a,{info:o}=n[e],[s]=o.split(":",2);return s==="markmap"?b(n,e):r(...a)},t.renderer.rules.markmap=b},U=(t,r)=>`<Mermaid code="${l(t[r].content)}"></Mermaid>`,v=({diagram:t="mermaid",content:r,title:a="",indent:n=t!=="mermaid"})=>{const[,e,o]=/^\s*---\n([^]*?)\n---\n\n([\s\S]*)\s*$/m.exec(r)??[null,"",r],s=(!a||/^title:\s*(.*)/m.test(e)?e:`title: ${a}
|
|
${e}`).trim();return`${s?`---
|
|
${s}
|
|
---
|
|
|
|
`:""}${t==="mermaid"?"":`${t}
|
|
`}${n?o.split(`
|
|
`).map(m=>m?` ${m}`:"").join(`
|
|
`):o}`},E=t=>`<Mermaid code="${l(v(t))}"${t.title?` title="${l(t.title)}"`:""}></Mermaid>`,f={class:["classDiagram"],c4c:["C4Context"],er:["erDiagram"],gantt:[""],"git-graph":["gitGraph"],journey:[""],mindmap:[""],kanban:[""],pie:[""],quadrant:["quadrantChart"],requirement:["requirementDiagram"],sequence:["sequenceDiagram"],state:["stateDiagram-v2"],timeline:[""],architecture:["architecture-beta"],block:["block-beta",!1],packet:["packet-beta",!1],sankey:["sankey-beta",!1],xy:["xychart-beta",!1],treemap:["treemap-beta",!1],radar:["radar-beta"]},S=t=>{const{fence:r}=t.renderer.rules;t.renderer.rules.fence=(...a)=>{const[n,e]=a,{content:o,info:s}=n[e],m=s.trim();if(m==="mermaid")return E({content:o,indent:!1});const[i,...c]=m.split(" ");return i in f?E({diagram:f[i][0]||i,title:c.join(" "),content:o,indent:f[i][1]??!0}):r(...a)},t.renderer.rules.mermaid=U},$=(t,r=["chronology","gantt","json","latex","math","mindmap","regex","salt","uml","wbs","yaml"].map(a=>({name:a})))=>{r.forEach(a=>{t.use(L,a)})},V=O(import.meta.url),x="@vuepress/plugin-markdown-chart",D=new F(x),d=R(A.resolve(V,"../client")),P=(t,r=!0)=>{const a=_(t,import.meta);return r&&!a&&D.error(`Package ${t} is not installed, please install it manually!`),a},z=async(t,r)=>{const a=new Set,n=new Set;return r.chartjs&&(a.add(`import ChartJS from "${d}components/ChartJS.js";`),n.add('app.component("ChartJS", ChartJS)')),r.echarts&&(a.add(`import ECharts from "${d}components/ECharts.js";`),n.add('app.component("ECharts", ECharts);')),r.flowchart&&(a.add(`import FlowChart from "${d}components/FlowChart.js";`),n.add('app.component("FlowChart", FlowChart);')),r.markmap&&(a.add(`import MarkMap from "${d}components/MarkMap.js";`),n.add('app.component("MarkMap", MarkMap);')),r.mermaid&&(a.add(`import Mermaid from "${d}components/Mermaid.js";`),n.add('app.component("Mermaid", Mermaid);')),t.writeTemp("markdown-chart/config.js",`import { defineClientConfig } from "vuepress/client";
|
|
${Array.from(a.values()).join(`
|
|
`)}
|
|
|
|
export default defineClientConfig({
|
|
enhance: ({ app }) => {
|
|
${Array.from(n.values()).map(e=>e.split(`
|
|
`).map(o=>` ${o}`)).flat().join(`
|
|
`)}
|
|
},
|
|
});
|
|
`)},G=(t={})=>r=>{r.env.isDebug&&D.info("Options:",t);const a=(e,o=[])=>{const s=!!t[e],m=o.every(i=>P(i,!!t[e]));return s&&m},n={chartjs:a("chartjs",["chart.js"]),echarts:a("echarts",["echarts"]),flowchart:a("flowchart",["flowchart.ts"]),markmap:a("markmap",["markmap-lib","markmap-toolbar","markmap-view"]),mermaid:a("mermaid",["mermaid"])};return{name:x,extendsMarkdown:e=>{n.chartjs&&e.use(g),n.echarts&&e.use(C),n.flowchart&&e.use(M),J(t.plantuml)?e.use($,t.plantuml):t.plantuml&&e.use($),n.markmap&&e.use(y),n.mermaid&&e.use(S)},extendsBundlerOptions:e=>{I(e,r,["@vuepress/helper","fflate"]),n.chartjs&&(u(e,r,"chart.js/auto/auto.mjs"),p(e,r,"chart.js")),n.echarts&&(u(e,r,"echarts"),p(e,r,"echarts")),n.flowchart&&(u(e,r,"flowchart.ts"),p(e,r,"flowchart.ts")),n.markmap&&(q(e,r,["markmap-lib","markmap-toolbar","markmap-view"]),p(e,r,["markmap-lib","markmap-toolbar","markmap-view"])),n.mermaid&&(u(e,r,"mermaid/dist/mermaid.esm.min.mjs"),p(e,r,"mermaid"))},clientConfigFile:()=>z(r,n)}};export{g as chartjs,C as echarts,M as flowchart,v as getMermaidContent,G as markdownChartPlugin,y as markmap,S as mermaid,$ as plantuml};
|
|
//# sourceMappingURL=index.js.map
|