import{useDarkMode as h,decodeData as s,LoadingIcon as w,isFunction as f}from"@vuepress/helper/client";import{watchImmediate as M}from"@vueuse/core";import{defineComponent as b,useId as C,shallowRef as L,computed as E,ref as S,h as a,onMounted as k}from"vue";import"../styles/mermaid.css";import{u as x}from"../mermaid-D26-9yYy.js";const z=c=>`data:image/svg+xml;charset=utf8,${c.replace(/ /g," ").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(//g,"%3E")}`,V='',_='',r={useMaxWidth:!1};var I=b({name:"Mermaid",props:{code:{type:String,required:!0},title:String},setup(c){const n=C(),l=h(),{themeVariables:o,...d}=x(),m=L(),u=E(()=>s(c.code)),i=S(""),p=async()=>{if(__VUEPRESS_SSR__)return;const{default:t}=await import("mermaid/dist/mermaid.esm.min.mjs");t.initialize({theme:l.value?"dark":"default",themeVariables:{dark:l.value,...f(o)?o(l.value):o},flowchart:r,sequence:r,journey:r,gantt:r,er:r,pie:r,...d,startOnLoad:!1}),i.value=(await t.render(n,u.value)).svg},v=()=>{const{body:t}=document,e=document.createElement("div");e.classList.add("mermaid-preview"),e.innerHTML=i.value,t.appendChild(e),e.addEventListener("click",()=>{t.removeChild(e)})},g=()=>{const t=z(i.value),e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download",`${c.title?s(c.title):n}.svg`),e.click()};return k(()=>{M(l,p,{flush:"post"})}),()=>[a("div",{class:"mermaid-actions"},[a("button",{class:"preview-button",title:"preview",innerHTML:V,onClick:v}),a("button",{class:"download-button",title:"download",innerHTML:_,onClick:g})]),a("div",{ref:m,class:"mermaid-wrapper"},i.value?a("div",{class:"mermaid-content",innerHTML:i.value}):a(w,{class:"mermaid-loading",height:96}))]}});export{I as default};
//# sourceMappingURL=Mermaid.js.map