Fix Addon Editor not loading when CustomCSS disabled (#915)

* Editor: Fix Addon Editor not loading when CustomCSS disabled

* Editor: await loading to prevent issues caused by the AMD loader replacement
This commit is contained in:
Qb 2021-07-27 13:41:51 +00:00 committed by GitHub
parent e99686346c
commit 6792ac9155
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 29 deletions

View File

@ -26,33 +26,6 @@ export default new class CustomCSS extends Builtin {
}
async enabled() {
if (!window.monaco && !window.MonacoEnvironment) {
Object.defineProperty(window, "MonacoEnvironment", {
value: {
getWorkerUrl: function() {
return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
self.MonacoEnvironment = {
baseUrl: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min'
};
importScripts('https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/base/worker/workerMain.min.js');`
)}`;
}
}
});
const commonjsLoader = window.require;
delete window.module; // Make monaco think this isn't a local node script or else it freaks out
DOMManager.linkStyle("monaco-style", "https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/editor/editor.main.min.css", {documentHead: true});
await DOMManager.injectScript("monaco-script", "https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs/loader.min.js");
const amdLoader = window.require; // Grab Monaco's amd loader
window.require = commonjsLoader; // Revert to commonjs
// this.log(amdLoader, window.require);
amdLoader.config({paths: {vs: "https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min/vs"}});
amdLoader(["vs/editor/editor.main"], () => {}); // exposes the monaco global
}
Settings.registerPanel(this.id, Strings.Panels.customcss, {
order: 2,
element: () => [<SettingsTitle text={Strings.CustomCSS.editorTitle} />, React.createElement(CSSEditor, {

View File

@ -17,6 +17,7 @@ import Strings from "./strings";
import IPC from "./ipc";
import LoadingIcon from "../loadingicon";
import Styles from "../styles/index.css";
import Editor from "./editor";
export default new class Core {
async startup() {
@ -59,10 +60,12 @@ export default new class Core {
Logger.log("Startup", "Initializing ComponentPatcher");
ComponentPatcher.initialize();
Logger.log("Startup", "Initializing Editor");
await Editor.initialize();
Logger.log("Startup", "Initializing Builtins");
for (const module in Builtins) {
if (module === "CustomCSS") await Builtins[module].initialize();
else Builtins[module].initialize();
Builtins[module].initialize();
}
Logger.log("Startup", "Loading Plugins");

View File

@ -0,0 +1,33 @@
import DOMManager from "./dommanager";
export default new class Editor {
async initialize() {
const baseUrl = "https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.20.0/min"
Object.defineProperty(window, "MonacoEnvironment", {
value: {
getWorkerUrl: function() {
return `data:text/javascript;charset=utf-8,${encodeURIComponent(`
self.MonacoEnvironment = {
baseUrl: '${baseUrl}'
};
importScripts('${baseUrl}/vs/base/worker/workerMain.min.js');`
)}`;
}
}
});
const commonjsLoader = window.require;
delete window.module; // Make monaco think this isn't a local node script or else it freaks out
DOMManager.linkStyle("monaco-style", `${baseUrl}/vs/editor/editor.main.min.css`, {documentHead: true});
await DOMManager.injectScript("monaco-script", `${baseUrl}/vs/loader.min.js`);
const amdLoader = window.require; // Grab Monaco's amd loader
window.require = commonjsLoader; // Revert to commonjs
// this.log(amdLoader, window.require);
amdLoader.config({paths: {vs: `${baseUrl}/vs`}});
amdLoader(["vs/editor/editor.main"], () => {}); // exposes the monaco global
}
};