kui-shell
Version:
This is the monorepo for Kui, the hybrid command-line/GUI electron-based Kubernetes tool
63 lines • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = require("debug");
const monaco = require("monaco-editor");
const core_1 = require("@kui-shell/core");
const language_scan_1 = require("../language-scan");
const defaults_1 = require("./defaults");
const debug = debug_1.default('plugins/editor/init/esm');
let initDone;
self['MonacoEnvironment'] = {
getWorkerUrl: function (moduleId, label) {
const hash = window['_kuiWebpackHash'];
const root = core_1.Settings.theme.resourceRoot ||
(window['_kuiWebpackResourceRoot'] !== '${resourceRoot}' ? window['_kuiWebpackResourceRoot'] : '.');
debug('monaco resource root', root);
if (label === 'json') {
return `${root}/json.worker.${hash}.bundle.js`;
}
if (label === 'css') {
return `${root}/css.worker.${hash}.bundle.js`;
}
if (label === 'html') {
return `${root}/html.worker.${hash}.bundle.js`;
}
if (label === 'typescript' || label === 'javascript') {
return `${root}/ts.worker.${hash}.bundle.js`;
}
return `${root}/editor.worker.${hash}.bundle.js`;
}
};
exports.default = (editorWrapper, options) => {
debug('init');
let editor;
const ready = () => new Promise(resolve => {
core_1.UI.injectCSS({
css: require('monaco-editor/min/vs/editor/editor.main.css').toString(),
key: 'editor.monaco.core'
});
const initEditor = () => {
if (!initDone) {
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
noLib: true,
allowNonTsExtensions: true
});
language_scan_1.default(monaco).forEach(({ language, provider }) => {
monaco.languages.registerCompletionItemProvider(language, provider);
});
initDone = true;
}
editor = monaco.editor.create(editorWrapper, Object.assign(defaults_1.default(options), options));
editor.clearDecorations = () => {
debug('clearing decorations', editor.__cloudshell_decorations);
const none = [{ range: new monaco.Range(1, 1, 1, 1), options: {} }];
editor.__cloudshell_decorations = editor.deltaDecorations(editor.__cloudshell_decorations || [], none);
};
editorWrapper['editor'] = editor;
resolve(editor);
};
initEditor();
});
return ready();
};
//# sourceMappingURL=esm.js.map