Repository navigation
Expand file tree
/
Copy pathdrawio.plug.js
More file actions
54 lines (54 loc) · 24.6 KB
/
Copy pathdrawio.plug.js
File metadata and controls
54 lines (54 loc) · 24.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
var Y=Object.defineProperty;var I=(e,t)=>{for(var o in t)Y(e,o,{get:t[o],enumerable:!0})};function y(e){let t=atob(e),o=t.length,i=new Uint8Array(o);for(let n=0;n<o;n++)i[n]=t.charCodeAt(n);return i}function p(e){typeof e=="string"&&(e=new TextEncoder().encode(e));let t="",o=e.byteLength;for(let i=0;i<o;i++)t+=String.fromCharCode(e[i]);return btoa(t)}var c=e=>{throw new Error("Not initialized yet")},h=typeof window>"u"&&typeof globalThis.WebSocketPair>"u";typeof Deno>"u"&&(self.Deno={args:[],build:{arch:"x86_64"},env:{get(){}}});var A=new Map,u=0;h&&(globalThis.syscall=async(e,...t)=>await new Promise((o,i)=>{u++,A.set(u,{resolve:o,reject:i}),c({type:"sys",id:u,name:e,args:t})}));function W(e,t,o){h&&(c=o,self.addEventListener("message",i=>{(async()=>{let n=i.data;switch(n.type){case"inv":{let g=e[n.name];if(!g)throw new Error(`Function not loaded: ${n.name}`);try{let a=await Promise.resolve(g(...n.args||[]));c({type:"invr",id:n.id,result:a})}catch(a){console.error("An exception was thrown as a result of invoking function",n.name,"error:",a.message),c({type:"invr",id:n.id,error:a.message})}}break;case"sysr":{let g=n.id,a=A.get(g);if(!a)throw Error("Invalid request id");A.delete(g),n.error?a.reject(new Error(n.error)):a.resolve(n.result)}break}})().catch(console.error)}),c({type:"manifest",manifest:t}))}async function B(e,t){if(typeof e!="string"){let o=new Uint8Array(await e.arrayBuffer()),i=o.length>0?p(o):void 0;t={method:e.method,headers:Object.fromEntries(e.headers.entries()),base64Body:i},e=e.url}return syscall("sandboxFetch.fetch",e,t)}globalThis.nativeFetch=globalThis.fetch;function E(){globalThis.fetch=async function(e,t){let o=t&&t.body?p(new Uint8Array(await new Response(t.body).arrayBuffer())):void 0,i=await B(e,t&&{method:t.method,headers:t.headers,base64Body:o});return new Response(i.base64Body?y(i.base64Body):null,{status:i.status,headers:i.headers})}}h&&E();var s={};I(s,{alert:()=>ye,configureVimMode:()=>Ee,confirm:()=>be,copyToClipboard:()=>Te,deleteLine:()=>Se,dispatch:()=>Ze,downloadFile:()=>ae,filterBox:()=>le,flashNotification:()=>de,fold:()=>xe,foldAll:()=>Ue,getCurrentEditor:()=>Q,getCurrentPage:()=>X,getCurrentPageMeta:()=>v,getCurrentPath:()=>J,getCursor:()=>D,getRecentlyOpenedPages:()=>M,getSelection:()=>z,getText:()=>K,getUiOption:()=>We,goHistory:()=>se,hidePanel:()=>ce,insertAtCursor:()=>he,insertAtPos:()=>Ce,invokeCommand:()=>O,moveCursor:()=>ue,moveCursorToLine:()=>Ae,moveLineDown:()=>Ye,moveLineUp:()=>ke,navigate:()=>q,newWindow:()=>ne,openCommandPalette:()=>_,openPageNavigator:()=>$,openSearchPanel:()=>Pe,openUrl:()=>ie,prompt:()=>fe,rebuildEditorState:()=>re,redo:()=>Ge,reloadConfigAndCommands:()=>oe,reloadPage:()=>ee,reloadUI:()=>te,replaceRange:()=>pe,save:()=>L,sendMessage:()=>Xe,setSelection:()=>j,setText:()=>H,setUiOption:()=>Ve,showPanel:()=>me,showProgress:()=>Ie,toggleFold:()=>Re,undo:()=>Ne,unfold:()=>Fe,unfoldAll:()=>we,uploadFile:()=>ge,vimEx:()=>Be});typeof self>"u"&&(self={syscall:()=>{throw new Error("Not implemented here")}});function r(e,...t){return globalThis.syscall(e,...t)}function X(){return r("editor.getCurrentPage")}function v(){return r("editor.getCurrentPageMeta")}function J(){return r("editor.getCurrentPath")}function M(){return r("editor.getRecentlyOpenedPages")}function Q(){return r("editor.getCurrentEditor")}function K(){return r("editor.getText")}function H(e,t=!1){return r("editor.setText",e,t)}function D(){return r("editor.getCursor")}function z(){return r("editor.getSelection")}function j(e,t){return r("editor.setSelection",e,t)}function O(e,t){return r("editor.invokeCommand",e,t)}function L(){return r("editor.save")}function q(e,t=!1,o=!1){return r("editor.navigate",e,t,o)}function $(e="page"){return r("editor.openPageNavigator",e)}function _(){return r("editor.openCommandPalette")}function ee(){return r("editor.reloadPage")}function te(){return r("editor.reloadUI")}function re(){return r("editor.rebuildEditorState")}function oe(){return r("editor.reloadConfigAndCommands")}function ie(e,t=!1){return r("editor.openUrl",e,t)}function ne(){return r("editor.newWindow")}function se(e){return r("editor.goHistory",e)}function ae(e,t){return r("editor.downloadFile",e,t)}function ge(e,t){return r("editor.uploadFile",e,t)}function de(e,t="info"){return r("editor.flashNotification",e,t)}function le(e,t,o="",i=""){return r("editor.filterBox",e,t,o,i)}function me(e,t,o,i=""){return r("editor.showPanel",e,t,o,i)}function ce(e){return r("editor.hidePanel",e)}function Ie(e,t){return r("editor.showProgress",e,t)}function Ce(e,t){return r("editor.insertAtPos",e,t)}function pe(e,t,o){return r("editor.replaceRange",e,t,o)}function ue(e,t=!1){return r("editor.moveCursor",e,t)}function Ae(e,t=1,o=!1){return r("editor.moveCursorToLine",e,t,o)}function he(e,t=!1,o=!1){return r("editor.insertAtCursor",e,t,o)}function Ze(e){return r("editor.dispatch",e)}function fe(e,t=""){return r("editor.prompt",e,t)}function be(e){return r("editor.confirm",e)}function ye(e){return r("editor.alert",e)}function We(e){return r("editor.getUiOption",e)}function Ve(e,t){return r("editor.setUiOption",e,t)}function xe(){return r("editor.fold")}function Fe(){return r("editor.unfold")}function Re(){return r("editor.toggleFold")}function Ue(){return r("editor.foldAll")}function we(){return r("editor.unfoldAll")}function Ne(){return r("editor.undo")}function Ge(){return r("editor.redo")}function Pe(){return r("editor.openSearchPanel")}function Te(e){return r("editor.copyToClipboard",e)}function Se(){return r("editor.deleteLine")}function ke(){return r("editor.moveLineUp")}function Ye(){return r("editor.moveLineDown")}function Be(e){return r("editor.vimEx",e)}function Ee(){return r("editor.configureVimMode")}function Xe(e,t){return r("editor.sendMessage",e,t)}var l={};I(l,{deleteDocument:()=>$e,deleteFile:()=>ot,deletePage:()=>De,fileExists:()=>it,getDocumentMeta:()=>Oe,getFileMeta:()=>tt,getPageMeta:()=>Me,listDocuments:()=>je,listFiles:()=>_e,listPages:()=>Je,listPlugs:()=>ze,pageExists:()=>Qe,readDocument:()=>Le,readFile:()=>et,readPage:()=>Ke,writeDocument:()=>qe,writeFile:()=>rt,writePage:()=>He});function Je(){return r("space.listPages")}function Me(e){return r("space.getPageMeta",e)}function Qe(e){return r("space.pageExists",e)}function Ke(e){return r("space.readPage",e)}function He(e,t){return r("space.writePage",e,t)}function De(e){return r("space.deletePage",e)}function ze(){return r("space.listPlugs")}function je(){return r("space.listDocuments")}function Oe(e){return r("space.getDocumentMeta",e)}function Le(e){return r("space.readDocument",e)}function qe(e,t){return r("space.writeDocument",e,t)}function $e(e){return r("space.deleteDocument",e)}function _e(){return r("space.listFiles")}function et(e){return r("space.readFile",e)}function tt(e){return r("space.getFileMeta",e)}function rt(e,t){return r("space.writeFile",e,t)}function ot(e){return r("space.deleteFile",e)}function it(e){return r("space.fileExists",e)}var C={};I(C,{getConfig:()=>ct,getMode:()=>lt,getVersion:()=>mt,invokeCommand:()=>st,invokeFunction:()=>nt,listCommands:()=>at,listSyscalls:()=>gt,reloadPlugs:()=>dt,wipeClient:()=>It});function nt(e,...t){return r("system.invokeFunction",e,...t)}function st(e,t){return r("system.invokeCommand",e,t)}function at(){return r("system.listCommands")}function gt(){return r("system.listSyscalls")}function dt(){return r("system.reloadPlugs")}function lt(){return r("system.getMode")}function mt(){return r("system.getVersion")}function ct(e,t=void 0){return r("system.getConfig",e,t)}function It(e=!1){return r("system.wipeClient",e)}var d={};I(d,{getFileMeta:()=>bt,listFiles:()=>ft,readAsset:()=>Zt});function ht(e){let t=atob(e),o=t.length,i=new Uint8Array(o);for(let n=0;n<o;n++)i[n]=t.charCodeAt(n);return i}function V(e){let t=e.split(",",2)[1];return ht(t)}async function Zt(e,t,o="utf8"){let i=await r("asset.readAsset",e,t);switch(o){case"utf8":return new TextDecoder().decode(V(i));case"dataurl":return i}}async function ft(e){return await r("asset.listFiles",e)}async function bt(e,t){return await r("asset.getFileMeta",e,t)}function Z(e){return(e.split(".").pop()??"").toLowerCase()}function Nt(e){let t=/\(([^)]+)\)/g;return Array.from(e.matchAll(t)).map(o=>o[1]).filter(o=>{let i=Z(o);return i==="svg"||i==="png"||i==="drawio"})}async function f(){return(await C.getConfig("drawio",{}))?.editorUrl??"https://embed.diagrams.net/?embed=1&spin=1&proto=json&configure=1"}async function x(e){let t=await d.readAsset("drawio","assets/drawioframe.js"),o=await f();await s.showPanel("modal",1,`
<style>
iframe {
border: 0;
position: fixed;
inset: 0; /* shorthand for top/left/right/bottom: 0 */
width: 100%;
height: 100%;
}
</style>
<div>
<iframe
id="drawioiframe"
src="${o}&saveAndExit=1&noSaveBtn=1&noExitBtn=1"
drawio-path="${e}">
</iframe>
</div>
`,t)}async function F(){let e=await s.getCurrentPage(),t=e.substring(0,e.lastIndexOf("/")),o=await s.getText(),i=Nt(o),n="";if(i.length==0){s.flashNotification("No png or svg diagrams attached to this page!","error");return}if(i.length===1)n=t+"/"+i[0];else{let g=i.map(b=>({name:b,description:""})),a=await s.filterBox("Edit",g,"","");if(!a){await s.flashNotification("No diagram selected!","error");return}n=t+"/"+a.name}await x(n)}async function R(){let e=await d.readAsset("drawio","assets/drawioframe.js"),t=await f(),o=await s.getCurrentPage();return{html:`
<style>
iframe {
border: 0;
position: fixed;
inset: 0; /* shorthand for top/left/right/bottom: 0 */
width: 100%;
height: 100%;
}
</style>
<div>
<iframe
id="drawioiframe"
src="${t}&saveAndExit=0&noSaveBtn=1&noExitBtn=1"
drawio-path="${o}">
</iframe>
</div>
`,script:e}}async function U(e){let t=await s.getText(),o=await s.getSelection(),{from:i,to:n}=o,g=t.slice(i,n),a=await s.prompt("Enter a diagram name:",g||"");if(!a)return!1;a=Gt(a,e);let m=`${Pt(await s.getCurrentPage())}/${a}`;if(await Tt(m))return!1;let k=Z(m);await St(k,m),e==="Widget"?await kt(i,n,m):await Yt(i,n,a,m)}function Gt(e,t){let o=Z(e);return t==="Widget"?o==="drawio"?e:`${e}.drawio`:t==="Attachment"?o==="svg"||o==="png"?e:(s.flashNotification("No extension provided, svg chosen","info"),`${e}.svg`):e}function Pt(e){let t=e.lastIndexOf("/");return t!==-1?e.substring(0,t):e}async function Tt(e){return await l.fileExists(e)?!await s.confirm("File already exists! Do you want to overwrite?"):!1}async function St(e,t){let o=await d.readAsset("drawio",`assets/sample.${e}.base64`),i=atob(o),n=new TextEncoder().encode(i);await l.writeFile(t,n)}async function kt(e,t,o){let i=`\`\`\`drawio
url:${o}
\`\`\``;await s.replaceRange(e,t,i)}async function Yt(e,t,o,i){let n=``;await s.replaceRange(e,t,n),await x(i)}async function w(){U("Widget")}async function N(){U("Attachment")}async function G(e){let t=e.match(/url:\s*(.+)/i),o=t?t[1].trim():null;if(!o||!await l.fileExists(o))return{html:"<pre>File does not exist</pre>",script:""};let i=await d.readAsset("drawio","assets/drawioframe.js");return{html:`
<style>
iframe {
border: 0;
position: fixed;
inset: 0; /* shorthand for top/left/right/bottom: 0 */
width: 100%;
height: 100%;
}
</style>
<div style="width:100vw; height:500px;">
<iframe
id="drawioiframe"
src="${await f()}&ui=min&saveAndExit=0&noSaveBtn=1&noExitBtn=1"
drawio-path="${o}" drawio-type='widget'>
</iframe>
</div>
`,script:i}}function P(){return{options:[{label:"drawio",detail:"Create new Drawio diagram",invoke:"drawio.createDiagramAsWidget"}]}}var T={editdrawio:F,drawioEditor:R,createDiagramAsWidget:w,createDiagramAsAttachment:N,showWidget:G,drawioSlashCommand:P},S={name:"drawio",version:.1,assets:{"assets/drawioframe.js":{data:"data:application/javascript;base64,Y29uc3QgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYXdpb2lmcmFtZSIpOwppZnJhbWU/LnNldEF0dHJpYnV0ZSgiZnJhbWVib3JkZXIiLCAiMCIpOwoKZnVuY3Rpb24gZ2V0RXh0KGZpbGVuYW1lKSB7CiAgICBjb25zdCBpbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJyk7CiAgICBjb25zdCBleHQgPSBpbmRleCAhPT0gLTEgPyBmaWxlbmFtZS5zbGljZShpbmRleCArIDEpIDogJyc7CiAgICByZXR1cm4gZXh0Owp9CmNvbnN0IHR5cGUgPSBpZnJhbWUuZ2V0QXR0cmlidXRlKCdkcmF3aW8tdHlwZScpOwpsZXQgZmlsZW5hbWUgPSBpZnJhbWUuZ2V0QXR0cmlidXRlKCdkcmF3aW8tcGF0aCcpOwpsZXQgZXh0ID0gZ2V0RXh0KGZpbGVuYW1lKTsKCi8vIC0tLSBIZWxwZXJzIC0tLQpjb25zdCBzeXNjYWxsZXIgPSAodHlwZW9mIHNpbHZlcmJ1bGxldCAhPT0gInVuZGVmaW5lZCIgPyBzaWx2ZXJidWxsZXQuc3lzY2FsbCA6IHN5c2NhbGwpOwoKZnVuY3Rpb24gYmFzZTY0VG9QbmcoYmFzZTY0U3RyaW5nKSB7CiAgICBjb25zdCByYXcgPSBiYXNlNjRTdHJpbmcuc3BsaXQoIiwiKVsxXSA/PyAiIjsKICAgIGNvbnN0IGJ5dGVzID0gVWludDhBcnJheS5mcm9tKGF0b2IocmF3KSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpOwogICAgcmV0dXJuIG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogImltYWdlL3BuZyIgfSk7Cn0KCmZ1bmN0aW9uIGJhc2U2NFRvU3ZnKGJhc2U2NFN0cmluZykgewogICAgY29uc3QgcmF3ID0gYmFzZTY0U3RyaW5nLnN1YnN0cmluZyhiYXNlNjRTdHJpbmcuaW5kZXhPZigiLCIpICsgMSk7CiAgICBjb25zdCB0ZXh0ID0gYXRvYihyYXcpOwogICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0ZXh0KTsKfQoKYXN5bmMgZnVuY3Rpb24gY2xvc2UoKSB7CiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmUpOwogICAgYXdhaXQgc3lzY2FsbGVyKCJlZGl0b3IucmVsb2FkVUkiKTsKICAgIGF3YWl0IHN5c2NhbGxlcigiZWRpdG9yLmhpZGVQYW5lbCIsICJtb2RhbCIpOwp9Cgphc3luYyBmdW5jdGlvbiBjb252ZXJ0QmxvYlRvQmFzZTY0KGJsb2IpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gewogICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpOwogICAgICAgIH07CiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHsKICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpOwogICAgfSk7Cn0KCi8vIC0tLSBTQiBNZXNzYWdlIGhhbmRsZXIgLS0tCnRyeSB7CiAgICBnbG9iYWxUaGlzLnNpbHZlcmJ1bGxldC5hZGRFdmVudExpc3RlbmVyKCJmaWxlLW9wZW4iLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgICBmaWxlbmFtZSA9IGV2ZW50LmRldGFpbC5tZXRhLm5hbWU7CiAgICAgICAgZXh0ID0gZ2V0RXh0KGZpbGVuYW1lKTsKCiAgICAgICAgaWZyYW1lPy5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZSgKICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBhY3Rpb246ICJsb2FkIiwgYXV0b3NhdmU6IDEsIHhtbDogZXZlbnQuZGV0YWlsLmRhdGEgfSksCiAgICAgICAgICAgICIqIgogICAgICAgICk7CiAgICB9KTsKICAgIGdsb2JhbFRoaXMuc2lsdmVyYnVsbGV0LmFkZEV2ZW50TGlzdGVuZXIoImZpbGUtdXBkYXRlIiwgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgICAgZmlsZW5hbWUgPSBldmVudC5kZXRhaWwubWV0YS5uYW1lOwogICAgICAgIGV4dCA9IGdldEV4dChmaWxlbmFtZSk7CgogICAgICAgIGlmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoCiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsgYWN0aW9uOiAibG9hZCIsIGF1dG9zYXZlOiAxLCB4bWw6IGV2ZW50LmRldGFpbC5kYXRhIH0pLAogICAgICAgICAgICAiKiIKICAgICAgICApOwogICAgfSk7CiAgICBnbG9iYWxUaGlzLnNpbHZlcmJ1bGxldC5hZGRFdmVudExpc3RlbmVyKCJyZXF1ZXN0LXNhdmUiLCAoZXZlbnQpID0+IHsKICAgICAgICBzaWx2ZXJidWxsZXQuc2VuZE1lc3NhZ2UoImZpbGUtc2F2ZWQiLCB7IGRhdGE6IHdpbmRvdy5kaWFncmFtRGF0YSB9KTsKICAgIH0pOwp9IGNhdGNoIChlKSB7Cn0KCmFzeW5jIGZ1bmN0aW9uIGdldEZpbGUoZXh0LCBmaWxlbmFtZSkgewogICAgbGV0IGRhdGEgPSAiIjsKICAgIHRyeSB7CiAgICAgICAgZGF0YSA9IGF3YWl0IHN5c2NhbGxlcigic3BhY2UucmVhZEZpbGUiLCBmaWxlbmFtZSk7CgogICAgICAgIHN3aXRjaCAoZXh0KSB7CiAgICAgICAgICAgIGNhc2UgInN2ZyI6CiAgICAgICAgICAgICAgICBkYXRhID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICJkcmF3aW8iOgogICAgICAgICAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KQogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgInBuZyI6CiAgICAgICAgICAgICAgICBkYXRhID0gYXdhaXQgY29udmVydEJsb2JUb0Jhc2U2NChkYXRhKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgZXh0ZW5zaW9uOiAke2V4dH1gKTsKICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgIH0KICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGZpbGUgJHtmaWxlbmFtZX06YCwgZXJyKTsKICAgICAgICByZXR1cm4gZGF0YTsKICAgIH0KCiAgICByZXR1cm4gZGF0YTsKfQoKZnVuY3Rpb24gZ2V0RXhwb3J0RGF0YShleHQsIGRhdGEpIHsKICAgIHN3aXRjaCAoZXh0KSB7CiAgICAgICAgY2FzZSAic3ZnIjoKICAgICAgICAgICAgZGF0YSA9IGJhc2U2NFRvU3ZnKGRhdGEpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJwbmciOgogICAgICAgICAgICBkYXRhID0gYmFzZTY0VG9QbmcoZGF0YSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIGRhdGE7Cn0KCi8vIC0tLSBEcmF3LmlvIE1lc3NhZ2UgaGFuZGxlciAtLS0KYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZShldnQpIHsKICAgIGlmICghZXZ0LmRhdGEpIHJldHVybjsKCiAgICBsZXQgbXNnOwogICAgdHJ5IHsKICAgICAgICBtc2cgPSBKU09OLnBhcnNlKGV2dC5kYXRhKTsKICAgIH0gY2F0Y2ggewogICAgICAgIHJldHVybjsgLy8gaWdub3JlIGludmFsaWQgSlNPTgogICAgfQoKICAgIHN3aXRjaCAobXNnLmV2ZW50KSB7CiAgICAgICAgY2FzZSAiY29uZmlndXJlIjoKICAgICAgICAgICAgaWZyYW1lPy5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZSgKICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICJjb25maWd1cmUiLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZzogeyBkZWZhdWx0Rm9udHM6IFsiSHVtb3IgU2FucyIsICJIZWx2ZXRpY2EiLCAiVGltZXMgTmV3IFJvbWFuIl0gfSwKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICJpbml0IjogewogICAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IGdldEZpbGUoZXh0LCBmaWxlbmFtZSk7CiAgICAgICAgICAgIGlmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoCiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogImxvYWQiLCBhdXRvc2F2ZTogMSwgeG1sOiBkYXRhIH0pLAogICAgICAgICAgICAgICAgIioiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgY2FzZSAiZXhwb3J0IjogewogICAgICAgICAgICBjb25zdCBkYXRhID0gZ2V0RXhwb3J0RGF0YShleHQsIG1zZy5kYXRhKTsKICAgICAgICAgICAgYXdhaXQgc3lzY2FsbGVyKCJzcGFjZS53cml0ZUZpbGUiLCBmaWxlbmFtZSwgZGF0YSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgY2FzZSAiYXV0b3NhdmUiOgogICAgICAgIGNhc2UgInNhdmUiOgogICAgICAgICAgICBpZiAoZXh0ID09PSAnZHJhd2lvJykgewogICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd3aWRnZXQnKSB7CiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc3lzY2FsbGVyKCJzcGFjZS53cml0ZUZpbGUiLCBmaWxlbmFtZSwgbXNnLnhtbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlhZ3JhbURhdGEgPSBtc2cueG1sOwogICAgICAgICAgICAgICAgICAgIGdsb2JhbFRoaXMuc2lsdmVyYnVsbGV0LnNlbmRNZXNzYWdlKCJmaWxlLWNoYW5nZWQiLCB7IGRhdGE6IG1zZy54bWwgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZnJhbWU/LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKAogICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAiZXhwb3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBleHQgPT09ICJwbmciID8gInhtbHBuZyIgOiAieG1sc3ZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgeG1sOiBtc2cueG1sLCAvLyBteGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgc3BpbjogIlVwZGF0aW5nIHBhZ2UiLAogICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICIqIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBOb3RpZnkgc2F2ZSBpcyBkb25lCiAgICAgICAgICAgIGlmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoCiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IGFjdGlvbjogInN0YXR1cyIsIG1lc3NhZ2VLZXk6ICJhbGxDaGFuZ2VzU2F2ZWQiLCBtb2RpZmllZDogZmFsc2UgfSksCiAgICAgICAgICAgICAgICAiKiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKG1zZy5leGl0KSBjbG9zZSgpOwoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgImV4aXQiOgogICAgICAgICAgICBjbG9zZSgpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgYnJlYWs7CiAgICB9Cn0KCndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZSk7Cgo=",mtime:1757515852429},"assets/sample.drawio.base64":{data:"data:application/octet-stream;base64,UEcxNFptbHNaU0JvYjNOMFBTSmhjSEF1WkdsaFozSmhiWE11Ym1WMElpQmhaMlZ1ZEQwaVRXOTZhV3hzWVM4MUxqQWdLRmRwYm1SdmQzTWdUbFFnTVRBdU1Ec2dWMmx1TmpRN0lIZzJOQ2tnUVhCd2JHVlhaV0pMYVhRdk5UTTNMak0ySUNoTFNGUk5UQ3dnYkdsclpTQkhaV05yYnlrZ1EyaHliMjFsTHpFek9TNHdMakF1TUNCVFlXWmhjbWt2TlRNM0xqTTJJRVZrWnk4eE16a3VNQzR3TGpBaUlIWmxjbk5wYjI0OUlqSTRMakl1TUNJK0NpQWdQR1JwWVdkeVlXMGdibUZ0WlQwaVVHRm5aUzB4SWlCcFpEMGlOVE14YWxoNlFsVm1hbTF1TUV4aFExTXpObklpUGdvZ0lDQWdQRzE0UjNKaGNHaE5iMlJsYkNCa2VEMGlNVEF6TkNJZ1pIazlJall6TmlJZ1ozSnBaRDBpTVNJZ1ozSnBaRk5wZW1VOUlqRXdJaUJuZFdsa1pYTTlJakVpSUhSdmIyeDBhWEJ6UFNJeElpQmpiMjV1WldOMFBTSXhJaUJoY25KdmQzTTlJakVpSUdadmJHUTlJakVpSUhCaFoyVTlJakVpSUhCaFoyVlRZMkZzWlQwaU1TSWdjR0ZuWlZkcFpIUm9QU0l4TVRBd0lpQndZV2RsU0dWcFoyaDBQU0k0TlRBaUlHMWhkR2c5SWpBaUlITm9ZV1J2ZHowaU1DSStDaUFnSUNBZ0lEeHliMjkwUGdvZ0lDQWdJQ0FnSUR4dGVFTmxiR3dnYVdROUlqQWlJQzgrQ2lBZ0lDQWdJQ0FnUEcxNFEyVnNiQ0JwWkQwaU1TSWdjR0Z5Wlc1MFBTSXdJaUF2UGdvZ0lDQWdJQ0E4TDNKdmIzUStDaUFnSUNBOEwyMTRSM0poY0doTmIyUmxiRDRLSUNBOEwyUnBZV2R5WVcwK0Nqd3ZiWGhtYVd4bFBnbz0=",mtime:1757515852430},"assets/sample.png.base64":{data:"data:application/octet-stream;base64,aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQVlBQUFBZkZjU0pBQUFBQVhOU1IwSUFyczRjNlFBQUFtQjBSVmgwYlhobWFXeGxBQ1V6UTIxNFptbHNaU1V5TUdodmMzUWxNMFFsTWpKaGNIQXVaR2xoWjNKaGJYTXVibVYwSlRJeUpUSXdZV2RsYm5RbE0wUWxNakpOYjNwcGJHeGhKVEpHTlM0d0pUSXdLRmRwYm1SdmQzTWxNakJPVkNVeU1ERXdMakFsTTBJbE1qQlhhVzQyTkNVelFpVXlNSGcyTkNrbE1qQkJjSEJzWlZkbFlrdHBkQ1V5UmpVek55NHpOaVV5TUNoTFNGUk5UQ1V5UXlVeU1HeHBhMlVsTWpCSFpXTnJieWtsTWpCRGFISnZiV1VsTWtZeE16RXVNQzR3TGpBbE1qQlRZV1poY21rbE1rWTFNemN1TXpZbE1qQkZaR2NsTWtZeE16RXVNQzR3TGpBbE1qSWxNakIyWlhKemFXOXVKVE5FSlRJeU1qWXVNQzQxSlRJeUpUTkZKVE5EWkdsaFozSmhiU1V5TUc1aGJXVWxNMFFsTWpKUVlXZGxMVEVsTWpJbE1qQnBaQ1V6UkNVeU1tTXRha1Y1ZFZkUU5tMXhVRGxNTjA1algwMWpKVEl5SlRORlpHUklRa1Z2U1dkRlFVUlJjaVV5UWtkUGEyeFBaSHBtVEZONVZVNXVVbXBhYUVKc01FZGhZbE1sTWtKUWFEQjNXVFozVEhNM2VHUlhSMWxvVEVjbE1rWklhU1V5UWxaSFdHeEhRVXBwYTFaSk1rVnVhM0ZhU0hseFdqRm9jV1ZJWWt4bU16QkdaMnhRUTFWeVZrOXZSa0ZYYmxGb2VFeFJValJWVDFWVWRHeFpjWGw0TmpaQ01tdFlSbkpqV1dwTU4zRnFhbkp2V1ROelNVZHhOVzV4Y2s1NVYyTTVTSEpKTms5dmJIRkZXWFZ1VWsxaFRXa3habWxuVURCclozTmpkbTluVm1oUFZWY3dabTF2U0ZoUVVUZ2xNa0o1VjNWbWFIbzFlaVV5UmxwNk9FMXpaRTgzU0dkVGJGazNOVFF5TUZGbGVEUm5NQ1V6UkNVelF5VXlSbVJwWVdkeVlXMGxNMFVsTTBNbE1rWnRlR1pwYkdVbE0wWFNCLy95QUFBQUMwbEVRVlFZVjJOZ0FBSUFBQVVBQWFyVnlGRUFBQUFBU1VWT1JLNUNZSUk9",mtime:1757515852430},"assets/sample.svg.base64":{data:"data:application/octet-stream;base64,UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BDRXRMU0JFYnlCdWIzUWdaV1JwZENCMGFHbHpJR1pwYkdVZ2QybDBhQ0JsWkdsMGIzSnpJRzkwYUdWeUlIUm9ZVzRnWkhKaGR5NXBieUF0TFQ0S1BDRkVUME5VV1ZCRklITjJaeUJRVlVKTVNVTWdJaTB2TDFjelF5OHZSRlJFSUZOV1J5QXhMakV2TDBWT0lpQWlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZSM0poY0docFkzTXZVMVpITHpFdU1TOUVWRVF2YzNabk1URXVaSFJrSWo0S1BITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSE4wZVd4bFBTSmlZV05yWjNKdmRXNWtPaUIwY21GdWMzQmhjbVZ1ZERzZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RISmhibk53WVhKbGJuUTdJR052Ykc5eUxYTmphR1Z0WlRvZ2JHbG5hSFFnWkdGeWF6c2lJSGh0Ykc1ek9uaHNhVzVyUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklpQjJaWEp6YVc5dVBTSXhMakVpSUhkcFpIUm9QU0l4Y0hnaUlHaGxhV2RvZEQwaU1YQjRJaUIyYVdWM1FtOTRQU0l0TUM0MUlDMHdMalVnTVNBeElpQmpiMjUwWlc1MFBTSW1iSFE3YlhobWFXeGxJR2h2YzNROUpuRjFiM1E3WVhCd0xtUnBZV2R5WVcxekxtNWxkQ1p4ZFc5ME95QmhaMlZ1ZEQwbWNYVnZkRHROYjNwcGJHeGhMelV1TUNBb1YybHVaRzkzY3lCT1ZDQXhNQzR3T3lCWGFXNDJORHNnZURZMEtTQkJjSEJzWlZkbFlrdHBkQzgxTXpjdU16WWdLRXRJVkUxTUxDQnNhV3RsSUVkbFkydHZLU0JEYUhKdmJXVXZNVE14TGpBdU1DNHdJRk5oWm1GeWFTODFNemN1TXpZZ1JXUm5MekV6TVM0d0xqQXVNQ1p4ZFc5ME95QjJaWEp6YVc5dVBTWnhkVzkwT3pJMkxqQXVOU1p4ZFc5ME95Wm5kRHNtSXpFd095QWdKbXgwTzJScFlXZHlZVzBnYm1GdFpUMG1jWFZ2ZER0UVlXZGxMVEVtY1hWdmREc2dhV1E5Sm5GMWIzUTdZeTFxUlhsMVYxQTJiWEZRT1V3M1RtTmZUV01tY1hWdmREc21aM1E3SmlNeE1Ec2dJQ0FnSm14ME8yMTRSM0poY0doTmIyUmxiQ0JrZUQwbWNYVnZkRHM1TURNbWNYVnZkRHNnWkhrOUpuRjFiM1E3TlRRM0puRjFiM1E3SUdkeWFXUTlKbkYxYjNRN01TWnhkVzkwT3lCbmNtbGtVMmw2WlQwbWNYVnZkRHN4TUNaeGRXOTBPeUJuZFdsa1pYTTlKbkYxYjNRN01TWnhkVzkwT3lCMGIyOXNkR2x3Y3owbWNYVnZkRHN4Sm5GMWIzUTdJR052Ym01bFkzUTlKbkYxYjNRN01TWnhkVzkwT3lCaGNuSnZkM005Sm5GMWIzUTdNU1p4ZFc5ME95Qm1iMnhrUFNaeGRXOTBPekVtY1hWdmREc2djR0ZuWlQwbWNYVnZkRHN4Sm5GMWIzUTdJSEJoWjJWVFkyRnNaVDBtY1hWdmREc3hKbkYxYjNRN0lIQmhaMlZYYVdSMGFEMG1jWFZ2ZERzNE5UQW1jWFZ2ZERzZ2NHRm5aVWhsYVdkb2REMG1jWFZ2ZERzeE1UQXdKbkYxYjNRN0lHMWhkR2c5Sm5GMWIzUTdNQ1p4ZFc5ME95QnphR0ZrYjNjOUpuRjFiM1E3TUNaeGRXOTBPeVpuZERzbUl6RXdPeUFnSUNBZ0lDWnNkRHR5YjI5MEptZDBPeVlqTVRBN0lDQWdJQ0FnSUNBbWJIUTdiWGhEWld4c0lHbGtQU1p4ZFc5ME96QW1jWFZ2ZERzZ0x5Wm5kRHNtSXpFd095QWdJQ0FnSUNBZ0pteDBPMjE0UTJWc2JDQnBaRDBtY1hWdmREc3hKbkYxYjNRN0lIQmhjbVZ1ZEQwbWNYVnZkRHN3Sm5GMWIzUTdJQzhtWjNRN0ppTXhNRHNnSUNBZ0lDQW1iSFE3TDNKdmIzUW1aM1E3SmlNeE1Ec2dJQ0FnSm14ME95OXRlRWR5WVhCb1RXOWtaV3dtWjNRN0ppTXhNRHNnSUNac2REc3ZaR2xoWjNKaGJTWm5kRHNtSXpFd095WnNkRHN2YlhobWFXeGxKbWQwT3lZak1UQTdJajQ4WkdWbWN5OCtQR2MrUEdjZ1pHRjBZUzFqWld4c0xXbGtQU0l3SWo0OFp5QmtZWFJoTFdObGJHd3RhV1E5SWpFaUx6NDhMMmMrUEM5blBqd3ZjM1puUGc9PQ==",mtime:1757515852431}},imports:["https://get.silverbullet.md/global.plug.json"],requiredPermissions:["fetch"],functions:{editdrawio:{path:"./drawio.ts:editDrawioDiagram",command:{name:"Draw.io: Edit diagram",requireMode:"r"}},drawioEditor:{path:"./drawio.ts:openDrawioEditor",editor:["drawio"]},createDiagramAsWidget:{path:"./drawio.ts:createDiagramAsWidget",command:{name:"Draw.io: Create diagram",requireMode:"r"}},createDiagramAsAttachment:{path:"./drawio.ts:createDiagramAsAttachment",command:{name:"Draw.io: Create SVG/PNG diagram",requireMode:"r"}},showWidget:{path:"./drawio.ts:showWidget",codeWidget:"drawio"},drawioSlashCommand:{path:"./drawio.ts:snippetSlashComplete",events:["slash:complete"]}}},hr={manifest:S,functionMapping:T};W(T,S,self.postMessage);export{hr as plug};