generated from silverbulletmd/silverbullet-plug-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathoutline-sidebar.plug.js
13 lines (13 loc) · 11.7 KB
/
outline-sidebar.plug.js
1
2
3
4
5
6
7
8
9
10
11
12
13
var D=Object.defineProperty;var p=(e,t)=>{for(var n in t)D(e,n,{get:t[n],enumerable:!0})};var m=e=>{throw new Error("Not initialized yet")},C=typeof window>"u"&&typeof globalThis.WebSocketPair>"u";typeof Deno>"u"&&(self.Deno={args:[],build:{arch:"x86_64"},env:{get(){}}});var T=new Map,v=0;C&&(globalThis.syscall=async(e,...t)=>await new Promise((n,o)=>{v++,T.set(v,{resolve:n,reject:o}),m({type:"sys",id:v,name:e,args:t})}));function F(e,t,n){C&&(m=n,self.addEventListener("message",o=>{(async()=>{let i=o.data;switch(i.type){case"inv":{let a=e[i.name];if(!a)throw new Error(`Function not loaded: ${i.name}`);try{let s=await Promise.resolve(a(...i.args||[]));m({type:"invr",id:i.id,result:s})}catch(s){console.error("An exception was thrown as a result of invoking function",i.name,"error:",s.message),m({type:"invr",id:i.id,error:s.message})}}break;case"sysr":{let a=i.id,s=T.get(a);if(!s)throw Error("Invalid request id");T.delete(a),i.error?s.reject(new Error(i.error)):s.resolve(i.result)}break}})().catch(console.error)}),m({type:"manifest",manifest:t}))}function G(e){let t=atob(e),n=t.length,o=new Uint8Array(n);for(let i=0;i<n;i++)o[i]=t.charCodeAt(i);return o}function W(e){typeof e=="string"&&(e=new TextEncoder().encode(e));let t="",n=e.byteLength;for(let o=0;o<n;o++)t+=String.fromCharCode(e[o]);return btoa(t)}async function H(e,t){if(typeof e!="string"){let n=new Uint8Array(await e.arrayBuffer()),o=n.length>0?W(n):void 0;t={method:e.method,headers:Object.fromEntries(e.headers.entries()),base64Body:o},e=e.url}return syscall("sandboxFetch.fetch",e,t)}globalThis.nativeFetch=globalThis.fetch;function Q(){globalThis.fetch=async function(e,t){let n=t&&t.body?W(new Uint8Array(await new Response(t.body).arrayBuffer())):void 0,o=await H(e,t&&{method:t.method,headers:t.headers,base64Body:n});return new Response(o.base64Body?G(o.base64Body):null,{status:o.status,headers:o.headers})}}C&&Q();var l={};p(l,{confirm:()=>be,copyToClipboard:()=>Me,deleteLine:()=>Ne,dispatch:()=>xe,downloadFile:()=>ae,filterBox:()=>de,flashNotification:()=>le,fold:()=>Ce,foldAll:()=>Se,getCurrentPage:()=>Y,getCursor:()=>X,getSelection:()=>J,getText:()=>j,getUiOption:()=>ve,goHistory:()=>se,hidePanel:()=>pe,insertAtCursor:()=>he,insertAtPos:()=>me,moveCursor:()=>ge,moveCursorToLine:()=>ye,navigate:()=>z,newWindow:()=>ie,openCommandPalette:()=>ee,openPageNavigator:()=>_,openSearchPanel:()=>We,openUrl:()=>oe,prompt:()=>Pe,redo:()=>Fe,reloadConfigAndCommands:()=>ne,reloadPage:()=>te,reloadUI:()=>re,replaceRange:()=>fe,save:()=>$,setSelection:()=>q,setText:()=>V,setUiOption:()=>Te,showPanel:()=>ue,toggleFold:()=>Ae,undo:()=>ke,unfold:()=>we,unfoldAll:()=>Ie,uploadFile:()=>ce,vimEx:()=>Oe});typeof self>"u"&&(self={syscall:()=>{throw new Error("Not implemented here")}});function r(e,...t){return globalThis.syscall(e,...t)}function Y(){return r("editor.getCurrentPage")}function j(){return r("editor.getText")}function V(e,t=!1){return r("editor.setText",e,t)}function X(){return r("editor.getCursor")}function J(){return r("editor.getSelection")}function q(e,t){return r("editor.setSelection",e,t)}function $(){return r("editor.save")}function z(e,t=!1,n=!1){return r("editor.navigate",e,t,n)}function _(e="page"){return r("editor.openPageNavigator",e)}function ee(){return r("editor.openCommandPalette")}function te(){return r("editor.reloadPage")}function re(){return r("editor.reloadUI")}function ne(){return r("editor.reloadConfigAndCommands")}function oe(e,t=!1){return r("editor.openUrl",e,t)}function ie(){return r("editor.newWindow")}function se(e){return r("editor.goHistory",e)}function ae(e,t){return r("editor.downloadFile",e,t)}function ce(e,t){return r("editor.uploadFile",e,t)}function le(e,t="info"){return r("editor.flashNotification",e,t)}function de(e,t,n="",o=""){return r("editor.filterBox",e,t,n,o)}function ue(e,t,n,o=""){return r("editor.showPanel",e,t,n,o)}function pe(e){return r("editor.hidePanel",e)}function me(e,t){return r("editor.insertAtPos",e,t)}function fe(e,t,n){return r("editor.replaceRange",e,t,n)}function ge(e,t=!1){return r("editor.moveCursor",e,t)}function ye(e,t=1,n=!1){return r("editor.moveCursorToLine",e,t,n)}function he(e){return r("editor.insertAtCursor",e)}function xe(e){return r("editor.dispatch",e)}function Pe(e,t=""){return r("editor.prompt",e,t)}function be(e){return r("editor.confirm",e)}function ve(e){return r("editor.getUiOption",e)}function Te(e,t){return r("editor.setUiOption",e,t)}function Ce(){return r("editor.fold")}function we(){return r("editor.unfold")}function Ae(){return r("editor.toggleFold")}function Se(){return r("editor.foldAll")}function Ie(){return r("editor.unfoldAll")}function ke(){return r("editor.undo")}function Fe(){return r("editor.redo")}function We(){return r("editor.openSearchPanel")}function Me(e){return r("editor.copyToClipboard",e)}function Ne(){return r("editor.deleteLine")}function Oe(e){return r("editor.vimEx",e)}var h={};p(h,{parseMarkdown:()=>Be,renderParseTree:()=>Ee});function Be(e){return r("markdown.parseMarkdown",e)}function Ee(e){return r("markdown.renderParseTree",e)}var x={};p(x,{applyAttributeExtractors:()=>Ge,getEnv:()=>je,getMode:()=>Ve,getSpaceConfig:()=>He,getVersion:()=>Xe,invokeCommand:()=>Ze,invokeFunction:()=>Re,invokeSpaceFunction:()=>De,listCommands:()=>Ke,listSyscalls:()=>Ue,reloadConfig:()=>Ye,reloadPlugs:()=>Qe});function Re(e,...t){return r("system.invokeFunction",e,...t)}function Ze(e,t){return r("system.invokeCommand",e,t)}function Ke(){return r("system.listCommands")}function Ue(){return r("system.listSyscalls")}function De(e,...t){return r("system.invokeSpaceFunction",e,...t)}function Ge(e,t,n){return r("system.applyAttributeExtractors",e,t,n)}async function He(e,t){return await r("system.getSpaceConfig",e)??t}function Qe(){return r("system.reloadPlugs")}function Ye(){return r("system.reloadConfig")}function je(){return r("system.getEnv")}function Ve(){return r("system.getMode")}function Xe(){return r("system.getVersion")}var f={};p(f,{del:()=>$e,get:()=>qe,set:()=>Je});function Je(e,t){return r("clientStore.set",e,t)}function qe(e){return r("clientStore.get",e)}function $e(e){return r("clientStore.delete",e)}var g={};p(g,{readAsset:()=>ot});function nt(e){let t=atob(e),n=t.length,o=new Uint8Array(n);for(let i=0;i<n;i++)o[i]=t.charCodeAt(i);return o}function M(e){let t=e.split(",",2)[1];return nt(t)}async function ot(e,t,n="utf8"){let o=await r("asset.readAsset",e,t);switch(n){case"utf8":return new TextDecoder().decode(M(o));case"dataurl":return o}}function w(e,t){if(t(e))return[e];let n=[];if(e.children)for(let o of e.children)n=[...n,...w(o,t)];return n}function y(e,t){return w(e,n=>n.type===t)[0]}function N(e,t){w(e,t)}function P(e){if(!e)return"";let t=[];if(e.text!==void 0)return e.text;for(let n of e.children)t.push(P(n));return t.join("")}function A(e){if(e.type?.endsWith("Mark")||e.type?.endsWith("Delimiter"))return"";let t=n=>n.map(A).join("");switch(e.type){case"Document":case"Emphasis":case"Highlight":case"Strikethrough":case"InlineCode":case"StrongEmphasis":case"Superscript":case"Subscript":case"Paragraph":case"ATXHeading1":case"ATXHeading2":case"ATXHeading3":case"ATXHeading4":case"ATXHeading5":case"ATXHeading6":case"Blockquote":case"BulletList":case"OrderedList":case"ListItem":case"Table":case"TableHeader":case"TableCell":case"TableRow":case"Task":case"HTMLTag":return t(e.children);case"FencedCode":case"CodeBlock":return e.children=e.children.filter(n=>n.type),t(e.children);case"Link":{let n=e.children.slice(1,-4);return t(n)}case"Image":{let n=y(e,"WikiLinkAlias")||e.children[1],o=n&&n.type!=="LinkMark"?P(n):"<Image>",i=/\d*[^\|\s]*?[xX]\d*[^\|\s]*/.exec(o);return i&&(o=o.replace(i[0],"").replace("|","")),o}case"WikiLink":{let n=y(e,"WikiLinkAlias"),o;return n?o=n.children[0].text:o=y(e,"WikiLinkPage").children[0].text.split("/").pop(),o}case"NakedURL":return e.children[0].text;case"CommandLink":{let n=y(e,"CommandLinkAlias"),o;return n?o=n.children[0].text:o=e.children[1].children[0].text,o}case"TaskState":return e.children[1].text;case"Escape":return e.children[0].text.slice(1);case"CodeText":case"Entity":return e.children[0].text;case"TemplateDirective":case"DeadlineDate":return P(e);case"CodeInfo":case"CommentBlock":case"FrontMatter":case"Hashtag":case"HardBreak":case"HorizontalRule":case"NamedAnchor":case"Attribute":return"";case void 0:return e.text;default:return console.log("Unknown tree type: ",e.type),""}}var S="outline-sidebar",O="enableOutlineSidebar";async function B(){return!!await f.get(O)}async function E(e){return await f.set(O,e)}async function I(){await l.hidePanel("rhs"),await E(!1)}async function L(){await B()?await I():await b()}async function R(){try{if(await x.getEnv()==="server")return;if(await B())return await b()}catch(e){console.error(`${S}: showOSBIfEnabled failed`,e)}}async function b(){await l.hidePanel("rhs");let[e,t]=await Promise.all([g.readAsset(S,"assets/outline-sidebar.css"),g.readAsset(S,"assets/outline-sidebar.js")]),n=await l.getText(),o=await h.parseMarkdown(n),i=[];if(N(o,c=>c.type?.startsWith("ATXHeading")?(i.push({name:c.children.slice(1).map(A).join("").trim(),pos:c.from,level:+c.type[c.type.length-1]}),!0):!1),i.length===0)return null;let a="",s=0;i.map((c,k,U)=>{let d=c.level;if(k===0)a+="<ul>";else if(d>s)for(let u=0;u<d-s;++u)a+="<ul>";else if(d<s)for(let u=0;u<s-d;++u)a+="</ul>";a+=`
<li><span class="p wiki-link osb-clickable" data-osbpos="${c.pos}">${c.name}</span></li>`,k===U.length-1&&(a+="</ul>"),s=d}),await l.showPanel("rhs",.5,`
<link rel="stylesheet" href="/.client/main.css" />
<style>
${e}
</style>
<div id="outline-sidebar-root">
${a}
</div>
`,`
${t}
addClickEvent()
`),await E(!0)}var Z={showOutlineSidebar:b,hideOutlineSidebar:I,showOSBIfEnabled:R,toggle:L},K={name:"outline-sidebar",assets:{"assets/outline-sidebar.css":{data:"data:text/css;base64,I291dGxpbmUtc2lkZWJhci1yb290IHsNCiAgICBmb250LWZhbWlseTogdmFyKC0tZWRpdG9yLWZvbnQpOw0KICAgIGZvbnQtc2l6ZTogMC44NXJlbTsNCn0NCg0KI291dGxpbmUtc2lkZWJhci1yb290IHVsIHsNCiAgICBsaXN0LXN0eWxlOiBub25lOw0KICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAxNnB4Ow0KfQ0KDQojb3V0bGluZS1zaWRlYmFyLXJvb3QgbGk6OmJlZm9yZSB7DQogICAgY29udGVudDogIlwyQjlFIjsNCiAgICBjb2xvcjogdmFyKC0tZWRpdG9yLWxpc3QtYnVsbGV0LWNvbG9yKTsNCiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgd2lkdGg6IDFlbTsNCiAgICBtYXJnaW4tbGVmdDogLTFlbTsNCn0NCg0KI291dGxpbmUtc2lkZWJhci1yb290IHNwYW4ub3NiLWNsaWNrYWJsZTpob3ZlciB7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQojb3V0bGluZS1zaWRlYmFyLXJvb3Qgc3Bhbi5vc2ItY2xpY2thYmxlIHsNCiAgICBib3JkZXItcmFkaXVzOiA1cHg7DQogICAgcGFkZGluZzogMCA1cHg7DQogICAgY29sb3I6IHZhcigtLWVkaXRvci13aWtpLWxpbmstcGFnZS1jb2xvcik7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZWRpdG9yLXdpa2ktbGluay1wYWdlLWJhY2tncm91bmQtY29sb3IpOw0KICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCg==",mtime:1732189338777},"assets/outline-sidebar.js":{data:"data:application/javascript;base64,Ly8gZGVuby1saW50LWlnbm9yZSBuby11bnVzZWQtdmFycw0KZnVuY3Rpb24gYWRkQ2xpY2tFdmVudCgpIHsNCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1vc2Jwb3NdIikuZm9yRWFjaCgoZWwpID0+IHsNCiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZSkgPT4gew0KICAgICAgICAgICAgY29uc3QgcG9zID0gcGFyc2VJbnQoZWwuZGF0YXNldC5vc2Jwb3MpDQogICAgICAgICAgICBzeXNjYWxsKCJlZGl0b3IubW92ZUN1cnNvciIsIHBvcywgdHJ1ZSkNCiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCkNCiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKQ0KICAgICAgICB9KQ0KICAgIH0pDQp9DQo=",mtime:1732189338777}},functions:{showOutlineSidebar:{path:"./outline-sidebar.ts:showOutlineSidebar"},hideOutlineSidebar:{path:"./outline-sidebar.ts:hideOutlineSidebar"},showOSBIfEnabled:{path:"./outline-sidebar.ts:showOSBIfEnabled",events:["editor:init","editor:updated","editor:pageLoaded","editor:pageReloaded"]},toggle:{path:"./outline-sidebar.ts:toggleOutlineSidebar",command:{name:"Outline Sidebar: Toggle",key:"Ctrl-alt-o",mac:"Cmd-alt-o"}}}},Jt={manifest:K,functionMapping:Z};F(Z,K,self.postMessage);export{Jt as plug};