From 44f6f71c3efd2e4e0f9dbd97ab4680ec76536052 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 22 Oct 2022 04:41:33 +0200 Subject: Monaco for Discord Desktop --- src/components/Monaco.ts | 74 +++++++----------------------------------------- 1 file changed, 10 insertions(+), 64 deletions(-) (limited to 'src/components/Monaco.ts') diff --git a/src/components/Monaco.ts b/src/components/Monaco.ts index 495f512..6b01891 100644 --- a/src/components/Monaco.ts +++ b/src/components/Monaco.ts @@ -16,80 +16,26 @@ * along with this program. If not, see . */ - import { IpcEvents } from "../utils"; import { debounce } from "../utils/debounce"; import { find } from "../webpack/webpack"; +import monacoHtml from "@fileContent/monacoWin.html"; +import { Queue } from "../utils/Queue"; +const queue = new Queue(); const setCss = debounce((css: string) => { - VencordNative.ipc.invoke(IpcEvents.SET_QUICK_CSS, css); + queue.add(() => VencordNative.ipc.invoke(IpcEvents.SET_QUICK_CSS, css)); }); -// FIXME: Discord Desktop support. -// open() fails to create the popup and returns null. Probably have to -// do some logic in main - -// adapted from https://stackoverflow.com/a/63179814 export async function launchMonacoEditor() { const win = open("about:blank", void 0, "popup,width=1000,height=1000")!; + win.setCss = setCss; win.getCurrentCss = () => VencordNative.ipc.invoke(IpcEvents.GET_QUICK_CSS); - win.callback = (editor: any) => { - editor.onDidChangeModelContent(() => - setCss(editor.getValue()) - ); - }; - - let { theme } = find(m => m.ProtoClass?.typeName.endsWith("PreloadedUserSettings")) - .getCurrentValue().appearance; - theme = theme === 1 ? "vs-dark" : "vs-light"; - - // problem? - win.document.write(` - - - - - - QuickCss Editor - - - - -
- - - - - + win.getTheme = () => find(m => m.ProtoClass?.typeName.endsWith("PreloadedUserSettings")) + .getCurrentValue().appearance.theme === 1 + ? "vs-dark" + : "vs-light"; -`); + win.document.write(monacoHtml); } -- cgit