import { editor, markdown } from "$sb/silverbullet-syscall/mod.ts"; export async function parsePageCommand() { console.log( "AST", JSON.stringify( await markdown.parseMarkdown(await editor.getText()), null, 2, ), ); } export async function showLogsCommand() { await editor.showPanel( "bhs", 1, ` <style> #close { width: 100%; } #client-log-header { position: absolute; left: 0; top: 35px; } #server-log-header { position: absolute; right: 0; top: 35px; width: 50%; } #client-log { position: absolute; left: 0; top: 60px; bottom: 0; width: 50%; overflow: scroll; } #server-log { position: absolute; right: 0; top: 60px; bottom: 0; width: 50%; overflow: scroll; } </style> <button onclick="self.close()" id="close">Close</button> <div id="client-log-header">Client logs (max 100)</div> <div id="client-log">Loading...</div> <div id="server-log-header">Server logs (max 100)</div> <div id="server-log">Loading...</div>`, ` const clientDiv = document.getElementById("client-log"); clientDiv.scrollTop = clientDiv.scrollHeight; const serverDiv = document.getElementById("server-log"); serverDiv.scrollTop = serverDiv.scrollHeight; self.close = () => { syscall("event.dispatch", "log:hide"); }; syscall("system.getEnv").then((env) => { const clientServerMode = !!env; if (!clientServerMode) { // Running in hybrid mode (mobile), so let's ignore server logs (they're the same as client logs) serverDiv.style.display = "none"; clientDiv.style.width = "100%"; document.getElementById("server-log-header").style.display = "none"; } setInterval(() => { Promise.resolve().then(async () => { if(clientServerMode) { const serverLogs = await syscall("sandbox.getServerLogs"); serverDiv.innerHTML = "<pre>" + serverLogs.map((le) => "[" + le.level + "] " + le.message).join("\\n") + "</pre>"; } const clientLogs = await syscall("sandbox.getLogs"); clientDiv.innerHTML = "<pre>" + clientLogs.map((le) => "[" + le.level + "] " + le.message).join("\\n") + "</pre>"; }).catch(console.error); }, 1000); }); `, ); } export async function hideBhsCommand() { await editor.hidePanel("bhs"); }