ui: monaco feature loader: support multi

This commit is contained in:
undefined committed 2022-08-02 01:29:20 +08:00
1 parent 6689604e48
commit 35402e6afc
2 files changed
+13 -7

No files matched your search

@@ -19,9 +19,12 @@ const loaders = {
typescript: () => import('./languages/typescript'), typescript: () => import('./languages/typescript'),
yaml: () => import('./languages/yaml'), yaml: () => import('./languages/yaml'),
external: async (monaco, feat) => { external: async (monaco, feat) => {
let apply = await loadExternalModule(window.externalModules[`monaco-${feat}`]); const items = Object.keys(window.externalModules).filter((i) => i === `monaco-${feat}` || i.startsWith(`monaco-${feat}@`));
if (typeof apply !== 'function') apply = apply.default || apply.apply; for (const item of items) {
if (typeof apply === 'function') await apply(monaco); let apply = await loadExternalModule(window.externalModules[`monaco-${item}`]);
if (typeof apply !== 'function') apply = apply.default || apply.apply;
if (typeof apply === 'function') await apply(monaco);
}
}, },
}; };
@@ -38,9 +41,12 @@ export async function load(features = ['markdown']) {
} }
for (const feat of features) { for (const feat of features) {
if (loaded.includes(feat)) continue; if (loaded.includes(feat)) continue;
if (!loaders[feat] && !window.externalModules[`monaco-${feat}`]) { if (!loaders[feat]) {
console.warn('Unknown monaco feature:', feat); const items = Object.keys(window.externalModules).filter((i) => i === `monaco-${feat}` || i.startsWith(`monaco-${feat}@`));
continue; if (!items.length) {
console.warn('Unknown monaco feature:', feat);
continue;
}
} }
s = Date.now(); s = Date.now();
console.log('Loading monaco feature:', feat); console.log('Loading monaco feature:', feat);
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/ui-default", "name": "@hydrooj/ui-default",
"version": "4.38.30", "version": "4.38.31",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "hydro.js", "main": "hydro.js",