livecode-static/livecodes/lang-diagrams-compiler-esm.aa9e8f85aaeda2c0c80b0f00a3ef5ce4.js
2025-06-11 22:23:49 +08:00

13 lines
15 KiB
JavaScript

var lt=typeof atob=="function",pt=typeof btoa=="function",U=typeof Buffer=="function",R=typeof TextDecoder=="function"?new TextDecoder:void 0,q=typeof TextEncoder=="function"?new TextEncoder:void 0,dt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",k=Array.prototype.slice.call(dt),T=(t=>{let e={};return t.forEach((s,o)=>e[s]=o),e})(k),mt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,p=String.fromCharCode.bind(String),N=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),ut=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),F=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),gt=t=>{let e,s,o,i,r="",n=t.length%3;for(let c=0;c<t.length;){if((s=t.charCodeAt(c++))>255||(o=t.charCodeAt(c++))>255||(i=t.charCodeAt(c++))>255)throw new TypeError("invalid character found");e=s<<16|o<<8|i,r+=k[e>>18&63]+k[e>>12&63]+k[e>>6&63]+k[e&63]}return n?r.slice(0,n-3)+"===".substring(n):r},H=pt?t=>btoa(t):U?t=>Buffer.from(t,"binary").toString("base64"):gt,ft=U?t=>Buffer.from(t).toString("base64"):t=>{let s=[];for(let o=0,i=t.length;o<i;o+=4096)s.push(p.apply(null,t.subarray(o,o+4096)));return H(s.join(""))};var ht=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?p(192|e>>>6)+p(128|e&63):p(224|e>>>12&15)+p(128|e>>>6&63)+p(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return p(240|e>>>18&7)+p(128|e>>>12&63)+p(128|e>>>6&63)+p(128|e&63)}},xt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,yt=t=>t.replace(xt,ht),P=U?t=>Buffer.from(t,"utf8").toString("base64"):q?t=>ft(q.encode(t)):t=>H(yt(t)),I=(t,e=!1)=>e?ut(P(t)):P(t);var bt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,vt=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),s=e-65536;return p((s>>>10)+55296)+p((s&1023)+56320);case 3:return p((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return p((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},wt=t=>t.replace(bt,vt),Ut=t=>{if(t=t.replace(/\s+/g,""),!mt.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,s="",o,i;for(let r=0;r<t.length;)e=T[t.charAt(r++)]<<18|T[t.charAt(r++)]<<12|(o=T[t.charAt(r++)])<<6|(i=T[t.charAt(r++)]),s+=o===64?p(e>>16&255):i===64?p(e>>16&255,e>>8&255):p(e>>16&255,e>>8&255,e&255);return s},_=lt?t=>atob(F(t)):U?t=>Buffer.from(t,"base64").toString("binary"):Ut,jt=U?t=>N(Buffer.from(t,"base64")):t=>N(_(t).split("").map(e=>e.charCodeAt(0)));var Ct=U?t=>Buffer.from(t,"base64").toString("utf8"):R?t=>R.decode(jt(t)):t=>wt(_(t)),kt=t=>F(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),O=t=>Ct(kt(t));var W=t=>t.replace(/'[^'"]*'(?=(?:[^"]*"[^"]*")*[^"]*$)/g,function(s){return'"'+s.substring(1,s.length-1)+'"'}).replace(/(\w+(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$))(\s*:)(?!(\w*)(?:"))/gm,function(s){return'"'+s.substring(0,s.length-1).trimEnd()+'":'}).replace(/,\s*([\]}])/g,"$1");var d=(t,e)=>new Promise((s,o)=>{if(e&&globalThis[e])return s(globalThis[e]);if(typeof globalThis.importScripts=="function")return globalThis.importScripts(t),e&&globalThis[e]?s(globalThis[e]):s(globalThis);let i=document.createElement("script");i.src=t,i.async=!0;let r=()=>{i.removeEventListener("load",n),i.removeEventListener("error",c)},n=()=>{if(r(),!e)return s("loaded: "+t);let l=setInterval(()=>{if(window[e])return clearInterval(l),s(window[e])},5)},c=()=>{r(),o("failed to load: "+t)};i.addEventListener("load",n),i.addEventListener("error",c),document.head.appendChild(i)});var z=t=>new Promise((e,s)=>{let o=new FileReader;o.readAsDataURL(t),o.onload=()=>typeof o.result=="string"?e(o.result):s(),o.onerror=i=>s(i)});var L=(t,e="text/javascript")=>`data:${e};charset=UTF-8;base64,`+I(t),A=t=>L(`importScripts("${t}");`);var B=t=>t.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm,"$1");var V=(t,e)=>({...e.customSettings[t]});var J=(t,e)=>async s=>{try{return await t(s)}catch(o){return typeof e=="function"&&e(o),s}};var G=["esm.sh","skypack","esm.run","jsdelivr.esm","fastly.jsdelivr.esm","gcore.jsdelivr.esm","testingcf.jsdelivr.esm","jsdelivr.b-cdn.esm","jspm"],Z=["jsdelivr","fastly.jsdelivr","unpkg","gcore.jsdelivr","testingcf.jsdelivr","jsdelivr.b-cdn","npmcdn"],Q=["jsdelivr.gh","fastly.jsdelivr.gh","statically","gcore.jsdelivr.gh","testingcf.jsdelivr.gh","jsdelivr.b-cdn.gh"],v={getModuleUrl:(t,{isModule:e=!0,defaultCDN:s="esm.sh",external:o}={})=>{t=t.replace(/#nobundle/g,"");let i=n=>!o||!n.includes("https://esm.sh")?n:n.includes("?")?`${n}&external=${o}`:`${n}?external=${o}`,r=K(t,e,s);return r?i(r):e?i("https://esm.sh/"+t):"https://cdn.jsdelivr.net/npm/"+t},getUrl:(t,e)=>t.startsWith("http")||t.startsWith("data:")?t:K(t,!1,e||Tt())||t,cdnLists:{npm:Z,module:G,gh:Q},checkCDNs:async(t,e)=>{let s=[e,...v.cdnLists.npm].filter(Boolean);for(let o of s)try{if((await fetch(v.getUrl(t,o),{method:"HEAD"})).ok)return o}catch{}return v.cdnLists.npm[0]}},Tt=()=>{if(globalThis.appCDN)return globalThis.appCDN;try{return new URL(location.href).searchParams.get("appCDN")||v.cdnLists.npm[0]}catch{return v.cdnLists.npm[0]}},K=(t,e,s)=>{let o=e&&t.startsWith("unpkg:")?"?module":"";t.startsWith("gh:")?t=t.replace("gh",Q[0]):t.includes(":")||(t=(s||(e?G[0]:Z[0]))+":"+t);for(let i of St){let[r,n]=i;if(r.test(t))return t.replace(r,n)+o}return null},St=[[/^(esm\.sh:)(.+)/i,"https://esm.sh/$2"],[/^(npm:)(.+)/i,"https://esm.sh/$2"],[/^(node:)(.+)/i,"https://esm.sh/$2"],[/^(jsr:)(.+)/i,"https://esm.sh/jsr/$2"],[/^(skypack:)(.+)/i,"https://cdn.skypack.dev/$2"],[/^(jsdelivr:)(.+)/i,"https://cdn.jsdelivr.net/npm/$2"],[/^(fastly\.jsdelivr:)(.+)/i,"https://fastly.jsdelivr.net/npm/$2"],[/^(gcore\.jsdelivr:)(.+)/i,"https://gcore.jsdelivr.net/npm/$2"],[/^(testingcf\.jsdelivr:)(.+)/i,"https://testingcf.jsdelivr.net/npm/$2"],[/^(jsdelivr\.b-cdn:)(.+)/i,"https://jsdelivr.b-cdn.net/npm/$2"],[/^(jsdelivr\.gh:)(.+)/i,"https://cdn.jsdelivr.net/gh/$2"],[/^(fastly\.jsdelivr\.gh:)(.+)/i,"https://fastly.jsdelivr.net/gh/$2"],[/^(gcore\.jsdelivr\.gh:)(.+)/i,"https://gcore.jsdelivr.net/gh/$2"],[/^(testingcf\.jsdelivr\.gh:)(.+)/i,"https://testingcf.jsdelivr.net/gh/$2"],[/^(jsdelivr\.b-cdn\.gh:)(.+)/i,"https://jsdelivr.b-cdn.net/gh/$2"],[/^(statically:)(.+)/i,"https://cdn.statically.io/gh/$2"],[/^(esm\.run:)(.+)/i,"https://esm.run/$2"],[/^(jsdelivr\.esm:)(.+)/i,"https://cdn.jsdelivr.net/npm/$2/+esm"],[/^(fastly\.jsdelivr\.esm:)(.+)/i,"https://fastly.jsdelivr.net/npm/$2/+esm"],[/^(gcore\.jsdelivr\.esm:)(.+)/i,"https://gcore.jsdelivr.net/npm/$2/+esm"],[/^(testingcf\.jsdelivr\.esm:)(.+)/i,"https://testingcf.jsdelivr.net/npm/$2/+esm"],[/^(jsdelivr\.b-cdn\.esm:)(.+)/i,"https://jsdelivr.b-cdn.net/npm/$2/+esm"],[/^(jspm:)(.+)/i,"https://jspm.dev/$2"],[/^(esbuild:)(.+)/i,"https://esbuild.vercel.app/$2"],[/^(bundle\.run:)(.+)/i,"https://bundle.run/$2"],[/^(unpkg:)(.+)/i,"https://unpkg.com/$2"],[/^(npmcdn:)(.+)/i,"https://npmcdn.com/$2"],[/^(bundlejs:)(.+)/i,"https://deno.bundlejs.com/?file&q=$2"],[/^(bundle:)(.+)/i,"https://deno.bundlejs.com/?file&q=$2"],[/^(deno:)(.+)/i,"https://deno.bundlejs.com/?file&q=https://deno.land/x/$2/mod.ts"],[/^(https:\/\/deno\.land\/.+)/i,"https://deno.bundlejs.com/?file&q=$1"],[/^(github:|https:\/\/github\.com\/)(.[^\/]+?)\/(.[^\/]+?)\/(?!releases\/)(?:(?:blob|raw)\/)?(.+?\/.+)/i,"https://deno.bundlejs.com/?file&q=https://cdn.jsdelivr.net/gh/$2/$3@$4"],[/^(gist\.github:)(.+?\/[0-9a-f]+\/raw\/(?:[0-9a-f]+\/)?.+)$/i,"https://gist.githack.com/$2"],[/^(gitlab:|https:\/\/gitlab\.com\/)([^\/]+.*\/[^\/]+)\/(?:raw|blob)\/(.+?)(?:\?.*)?$/i,"https://deno.bundlejs.com/?file&q=https://gl.githack.com/$2/raw/$3"],[/^(bitbucket:|https:\/\/bitbucket\.org\/)([^\/]+\/[^\/]+)\/(?:raw|src)\/(.+?)(?:\?.*)?$/i,"https://deno.bundlejs.com/?file&q=https://bb.githack.com/$2/raw/$3"],[/^(bitbucket:)snippets\/([^\/]+\/[^\/]+)\/revisions\/([^\/\#\?]+)(?:\?[^#]*)?(?:\#file-(.+?))$/i,"https://bb.githack.com/!api/2.0/snippets/$2/$3/files/$4"],[/^(bitbucket:)snippets\/([^\/]+\/[^\/\#\?]+)(?:\?[^#]*)?(?:\#file-(.+?))$/i,"https://bb.githack.com/!api/2.0/snippets/$2/HEAD/files/$3"],[/^(bitbucket:)\!api\/2.0\/snippets\/([^\/]+\/[^\/]+\/[^\/]+)\/files\/(.+?)(?:\?.*)?$/i,"https://bb.githack.com/!api/2.0/snippets/$2/files/$3"],[/^(api\.bitbucket:)2.0\/snippets\/([^\/]+\/[^\/]+\/[^\/]+)\/files\/(.+?)(?:\?.*)?$/i,"https://bb.githack.com/!api/2.0/snippets/$2/files/$3"],[/^(rawgit:)(.+?\/[0-9a-f]+\/raw\/(?:[0-9a-f]+\/)?.+)$/i,"https://gist.githack.com/$2"],[/^(rawgit:|https:\/\/raw\.githubusercontent\.com)(\/[^\/]+\/[^\/]+|[0-9A-Za-z-]+\/[0-9a-f]+\/raw)\/(.+)/i,"https://deno.bundlejs.com/?file&q=https://raw.githack.com/$2/$3"]];var{getUrl:m,getModuleUrl:Vt}=v,S=m("@live-codes/browser-compilers@0.22.3/dist/");var X=m("cytoscape-svg@0.4.0/cytoscape-svg.js"),Y=m("cytoscape@3.25.0/dist/cytoscape.min.js");var M=m("elkjs@0.8.2/lib/");var tt=m("graphre@0.1.3/dist/graphre.js");var et=m("@hpcc-js/wasm@2.13.0/dist/index.js");var st=m("mermaid@10.2.2/dist/mermaid.esm.mjs");var ot=m("nomnoml@1.6.1/dist/nomnoml.js");var rt=m("@pintora/standalone@0.6.2/lib/pintora-standalone.umd.js"),nt=m("plotly.js@2.23.2/dist/plotly.js");var it=m("svgbob-wasm@0.4.1-a0/svgbob_wasm_bg.wasm");var $=m("vega@5.25.0/build/vega.js"),at=m("vega-lite@5.9.3/build/vega-lite.js");var D=m("wavedrom@3.2.0/");var ct=!1,Et=(t,e)=>{t.tagName.toLowerCase()==="img"?t.src=L(e,"image/svg+xml"):t.innerHTML=e},j=t=>W(B(t)),h=async(t,e,s,o,i=!1)=>{if(!t)return"";let r=document.createElement("div");r.innerHTML=t;let n=r.querySelectorAll(`script[type="application/diagram-${e}"]`);if(n.length===0)return r.remove(),t;await s();for(let l of n){if(!l.src&&!l.innerHTML.trim())continue;let u=l.dataset.output;if(!u)continue;let b=l.src?await fetch(l.src).then(a=>a.text()):l.innerHTML,x=await o(b,l),C=r.querySelectorAll(`[data-src="${u}"]`);for(let a of C)a.tagName.toLowerCase()!=="img"&&i&&(ct=!0,x=`<svg-container> ${x} </svg-container>`),Et(a,x);l.remove()}let c=r.innerHTML;return r.remove(),c},Lt=async t=>{let e=document.createElement("div");e.innerHTML=t,document.body.appendChild(e);let s=e.querySelectorAll('script[type="application/diagram-gnuplot"]');if(s.length===0)return e.remove(),t;let o=S+"gnuplot",i=await d(o+"/gnuplot_api.js","Gnuplot"),r=A(o+"/gnuplot.js"),n=window.gnuplot=window.gnuplot||new i(r),c=(a,g)=>new Promise(async y=>{await Promise.all(g.map(w=>new Promise(E=>{n.putFile(w.fileName,w.content,E)}))),n.run(a,y)}),l=a=>new Promise(g=>{n.getFile(a,function(y){if(!y?.content){g("");return}let w=new Uint8Array(y.content),E=new Blob([w],{type:"image/svg+xml"});z(E).then(g)})});await new Promise(a=>n.removeFiles(null,a));let u=[],b=e.querySelectorAll('script[type="application/diagram-gnuplot-file"]');for(let a of b){if(!a.dataset.file&&!a.src)continue;let g=a.src?await fetch(a.src).then(w=>w.text()):a.innerHTML,y=a.dataset.file||a.src?.split("/")[a.src?.split("/").length-1]||"data.txt";u.push({fileName:y,content:g}),a.remove()}for(let a of s){if(!a.src&&!a.innerHTML.trim())continue;let g=a.src?await fetch(a.src).then(y=>y.text()):a.innerHTML;await c(g,u),a.remove()}let x=e.querySelectorAll("[data-src]");for(let a of x){let g=await l(a.dataset.src||"");g&&(a.tagName.toLowerCase()==="img"?a.src=g:a.innerHTML=O(g.split(",")[1]))}let C=e.innerHTML;return e.remove(),C},At=async t=>{let e,s=async()=>{e=(await import(st)).default,e.initialize({startOnLoad:!1})},o=0,i=()=>o++;return h(t,"mermaid",s,async n=>{let c=document.createElement("div");c.id="livecodes-mermaid-chart-"+i(),document.body.appendChild(c);let{svg:l}=await e.render(c.id,n.trim());return c.remove(),l})},Bt=async t=>{let e;return h(t,"graphviz",async()=>{e=await(await import(et)).Graphviz.load()},(i,r)=>{let n=r.dataset.layout||"dot";return e.layout(i,"svg",n)})},Mt=async t=>{let e=document.createElement("div");e.innerHTML=t;let s=e.querySelectorAll('script[type="application/diagram-vega-lite"]'),o;if(s.length>0){o=await d($,"vega");let c=await d(at,"vegaLite");for(let l of s){if(!l.src&&!l.innerHTML.trim()||!l.dataset.output)continue;let b={};try{let x=l.src?await fetch(l.src).then(C=>C.json()):JSON.parse(j(l.innerHTML));l.innerHTML=JSON.stringify(c.compile(x,b).spec),l.type="application/diagram-vega",l.removeAttribute("src")}catch{throw l.remove(),new Error("failed to parse vegaLite specs.")}}}let i=async()=>{o=o||await d($,"vega")},r=async(c,l={})=>{let u=document.createElement("div");try{let b=JSON.parse(j(c));return await new o.View(o.parse(b),{...l,renderer:"svg",container:u}).runAsync(),u.querySelector("svg")?.outerHTML||""}catch{throw new Error("failed to parse vega specs.")}finally{u.remove()}},n=await h(e.innerHTML,"vega",i,r);return e.remove(),n},$t=async t=>{let e;return h(t,"plotly",async()=>{e=await d(nt,"Plotly")},i=>{let r=document.createElement("div");try{let n=JSON.parse(j(i));return e.newPlot(r,n.data,n.layout,{displayModeBar:!1}),r.querySelector("svg")?.outerHTML||""}catch{throw new Error("failed to parse plotly specs.")}finally{r.remove()}})},Dt=async t=>{let e;return h(t,"svgbob",async()=>{let{svgbobWasm:i}=await import(S+"svgbob-wasm/svgbob-wasm.js");e=await i(it)},i=>e.convert_string(i),!0)},Rt=async t=>{let e;return h(t,"wavedrom",async()=>{await d(D+"skins/default.js","WaveSkin"),e=await d(D+"wavedrom.min.js","WaveDrom")},i=>{let r=document.createElement("div");try{let n=JSON.parse(j(i));return r.id="diagram-id",document.body.appendChild(r),e.RenderWaveForm(r.id,n,""),r.innerHTML||""}catch{throw new Error("failed to parse WaveDrom specs.")}finally{r.remove()}})},qt=async t=>{let e;return h(t,"nomnoml",async()=>{await d(tt,"graphre"),e=await d(ot,"nomnoml")},i=>e.renderSvg(i))},Nt=async t=>{let e,s;return h(t,"elk",async()=>{let r=M+"elk-api.js",n=M+"elk-worker.min.js",c=S+"elkjs-svg/elkjs-svg.js",l=await d(r,"ELK"),u=await d(c,"elksvg");e=new l({workerUrl:A(n)}),s=new u.Renderer},r=>{try{let n=JSON.parse(j(r));return e.layout(n).then(c=>s.toSvg(c))}catch{throw new Error("failed to parse ELK JSON.")}},!0)},Pt=async t=>{let e,s;return h(t,"cytoscape",async()=>{[e,s]=await Promise.all([d(Y,"cytoscape"),d(X,"cytoscapeSvg")]),e.use(s)},r=>{let n=document.createElement("div");n.style.display="block",n.style.visibility="none",n.style.height="300px",n.style.width="300px",document.body.appendChild(n);try{let c={...JSON.parse(j(B(r))),container:n};return e(c).svg({scale:1,full:!0})}catch{throw new Error("failed to parse Cytoscape options.")}finally{n.remove()}})},Ft=async(t,e)=>{let s;return h(t,"pintora",async()=>{s=await d(rt,"pintora")},r=>{let n=document.createElement("div");s.default.renderTo(r,{container:n,config:{...V("pintora",e)}});let c=n.firstElementChild;return c?.setAttribute("xmlns","http://www.w3.org/2000/svg"),c?.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),n.innerHTML})},Ht=()=>ct?`
<script>
class SVGContainer extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({mode: 'closed'});
shadowRoot.append(...this.childNodes);
}
}
customElements.define('svg-container', SVGContainer);
<\/script>
`:"",f=t=>J(t,console.error),Qt=async(t,{config:e})=>await Promise.resolve(t).then(f(Lt)).then(f(At)).then(f(Bt)).then(f(Mt)).then(f($t)).then(f(Dt)).then(f(Rt)).then(f(qt)).then(f(Nt)).then(f(Pt)).then(f(o=>Ft(o,e))).catch(o=>(console.error(o),t))+Ht();export{Qt as diagramsCompiler};