UNPKG

@ngstack/code-editor

Version:

Code editor component for Angular applications.

79 lines 9.37 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./code-editor.service"; export class JavascriptDefaultsService { constructor(codeEditorService) { codeEditorService.loaded.subscribe(event => { this.setup(event.monaco); }); codeEditorService.typingsLoaded.subscribe(typings => { this.updateTypings(typings); }); } setup(monaco) { if (!monaco) { return; } this.monaco = monaco; const defaults = monaco.languages.typescript.javascriptDefaults; defaults.setCompilerOptions({ target: monaco.languages.typescript.ScriptTarget.ES6, module: 'commonjs', allowNonTsExtensions: true, baseUrl: '.', paths: {} }); defaults.setMaximumWorkerIdleTime(-1); defaults.setEagerModelSync(true); /* defaults.setDiagnosticsOptions({ noSemanticValidation: false, noSyntaxValidation: false }); */ } updateTypings(typings) { if (typings) { this.addExtraLibs(typings.files); this.addLibraryPaths(typings.entryPoints); } } addExtraLibs(libs = []) { if (!this.monaco || !libs || libs.length === 0) { return; } const defaults = this.monaco.languages.typescript.javascriptDefaults; // undocumented API const registeredLibs = defaults.getExtraLibs(); libs.forEach(lib => { if (!registeredLibs[lib.path]) { // needs performance improvements, recreates its worker each time // defaults.addExtraLib(lib.content, lib.path); // undocumented API defaults._extraLibs[lib.path] = lib.content; } }); // undocumented API defaults._onDidChange.fire(defaults); } addLibraryPaths(paths = {}) { if (!this.monaco) { return; } const defaults = this.monaco.languages.typescript.javascriptDefaults; const compilerOptions = defaults.getCompilerOptions(); compilerOptions.paths = compilerOptions.paths || {}; Object.keys(paths).forEach(key => { compilerOptions.paths[key] = [paths[key]]; }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JavascriptDefaultsService, deps: [{ token: i1.CodeEditorService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JavascriptDefaultsService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JavascriptDefaultsService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.CodeEditorService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1kZWZhdWx0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9qYXZhc2NyaXB0LWRlZmF1bHRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFBWSxpQkFBb0M7UUFDOUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBVztRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7UUFFaEUsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQzFCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRztZQUNwRCxNQUFNLEVBQUUsVUFBVTtZQUNsQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLE9BQU8sRUFBRSxHQUFHO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakM7Ozs7O1VBS0U7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQW9CO1FBQ2hDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFpRCxFQUFFO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7UUFFckUsbUJBQW1CO1FBQ25CLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLGlFQUFpRTtnQkFDakUsK0NBQStDO2dCQUMvQyxtQkFBbUI7Z0JBQ25CLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsbUJBQW1CO1FBQ25CLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBbUMsRUFBRTtRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDO1FBQ3JFLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RELGVBQWUsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFFcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FsRlUseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZGVFZGl0b3JTZXJ2aWNlLCBUeXBpbmdzSW5mbyB9IGZyb20gJy4vY29kZS1lZGl0b3Iuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEphdmFzY3JpcHREZWZhdWx0c1NlcnZpY2Uge1xuICBwcml2YXRlIG1vbmFjbzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGNvZGVFZGl0b3JTZXJ2aWNlOiBDb2RlRWRpdG9yU2VydmljZSkge1xuICAgIGNvZGVFZGl0b3JTZXJ2aWNlLmxvYWRlZC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5zZXR1cChldmVudC5tb25hY28pO1xuICAgIH0pO1xuICAgIGNvZGVFZGl0b3JTZXJ2aWNlLnR5cGluZ3NMb2FkZWQuc3Vic2NyaWJlKHR5cGluZ3MgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUeXBpbmdzKHR5cGluZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0dXAobW9uYWNvOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIW1vbmFjbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW9uYWNvID0gbW9uYWNvO1xuXG4gICAgY29uc3QgZGVmYXVsdHMgPSBtb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuamF2YXNjcmlwdERlZmF1bHRzO1xuXG4gICAgZGVmYXVsdHMuc2V0Q29tcGlsZXJPcHRpb25zKHtcbiAgICAgIHRhcmdldDogbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LlNjcmlwdFRhcmdldC5FUzYsXG4gICAgICBtb2R1bGU6ICdjb21tb25qcycsXG4gICAgICBhbGxvd05vblRzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgIGJhc2VVcmw6ICcuJyxcbiAgICAgIHBhdGhzOiB7fVxuICAgIH0pO1xuXG4gICAgZGVmYXVsdHMuc2V0TWF4aW11bVdvcmtlcklkbGVUaW1lKC0xKTtcbiAgICBkZWZhdWx0cy5zZXRFYWdlck1vZGVsU3luYyh0cnVlKTtcblxuICAgIC8qXG4gICAgZGVmYXVsdHMuc2V0RGlhZ25vc3RpY3NPcHRpb25zKHtcbiAgICAgIG5vU2VtYW50aWNWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICAgIG5vU3ludGF4VmFsaWRhdGlvbjogZmFsc2VcbiAgICB9KTtcbiAgICAqL1xuICB9XG5cbiAgdXBkYXRlVHlwaW5ncyh0eXBpbmdzOiBUeXBpbmdzSW5mbykge1xuICAgIGlmICh0eXBpbmdzKSB7XG4gICAgICB0aGlzLmFkZEV4dHJhTGlicyh0eXBpbmdzLmZpbGVzKTtcbiAgICAgIHRoaXMuYWRkTGlicmFyeVBhdGhzKHR5cGluZ3MuZW50cnlQb2ludHMpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEV4dHJhTGlicyhsaWJzOiBBcnJheTx7IHBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+ID0gW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW9uYWNvIHx8ICFsaWJzIHx8IGxpYnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC5qYXZhc2NyaXB0RGVmYXVsdHM7XG5cbiAgICAvLyB1bmRvY3VtZW50ZWQgQVBJXG4gICAgY29uc3QgcmVnaXN0ZXJlZExpYnMgPSBkZWZhdWx0cy5nZXRFeHRyYUxpYnMoKTtcblxuICAgIGxpYnMuZm9yRWFjaChsaWIgPT4ge1xuICAgICAgaWYgKCFyZWdpc3RlcmVkTGlic1tsaWIucGF0aF0pIHtcbiAgICAgICAgLy8gbmVlZHMgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLCByZWNyZWF0ZXMgaXRzIHdvcmtlciBlYWNoIHRpbWVcbiAgICAgICAgLy8gZGVmYXVsdHMuYWRkRXh0cmFMaWIobGliLmNvbnRlbnQsIGxpYi5wYXRoKTtcbiAgICAgICAgLy8gdW5kb2N1bWVudGVkIEFQSVxuICAgICAgICBkZWZhdWx0cy5fZXh0cmFMaWJzW2xpYi5wYXRoXSA9IGxpYi5jb250ZW50O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gdW5kb2N1bWVudGVkIEFQSVxuICAgIGRlZmF1bHRzLl9vbkRpZENoYW5nZS5maXJlKGRlZmF1bHRzKTtcbiAgfVxuXG4gIGFkZExpYnJhcnlQYXRocyhwYXRoczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vbmFjbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5tb25hY28ubGFuZ3VhZ2VzLnR5cGVzY3JpcHQuamF2YXNjcmlwdERlZmF1bHRzO1xuICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IGRlZmF1bHRzLmdldENvbXBpbGVyT3B0aW9ucygpO1xuICAgIGNvbXBpbGVyT3B0aW9ucy5wYXRocyA9IGNvbXBpbGVyT3B0aW9ucy5wYXRocyB8fCB7fTtcblxuICAgIE9iamVjdC5rZXlzKHBhdGhzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb21waWxlck9wdGlvbnMucGF0aHNba2V5XSA9IFtwYXRoc1trZXldXTtcbiAgICB9KTtcbiAgfVxufVxuIl19