UNPKG

@ngstack/code-editor

Version:

Code editor component for Angular applications.

83 lines 8.86 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./code-editor.service"; export class JsonDefaultsService { constructor(codeEditorService) { codeEditorService.loaded.subscribe(event => { this.setup(event.monaco); }); } setup(monaco) { if (!monaco) { return; } this.monaco = monaco; const defaults = monaco.languages.json.jsonDefaults; defaults.setDiagnosticsOptions({ validate: true, allowComments: true, schemas: [ ...defaults._diagnosticsOptions.schemas, { uri: 'http://myserver/foo-schema.json', // fileMatch: [id], // fileMatch: ['*.json'], schema: { type: 'object', properties: { p1: { enum: ['v1', 'v2'] }, p2: { $ref: 'http://myserver/bar-schema.json' } } } }, { uri: 'http://myserver/bar-schema.json', // fileMatch: [id], // fileMatch: ['*.json'], schema: { type: 'object', properties: { q1: { enum: ['x1', 'x2'] } } } } ] }); } addSchemas(id, definitions = []) { const defaults = this.monaco.languages.json.jsonDefaults; const options = defaults.diagnosticsOptions; const schemas = {}; if (options && options.schemas && options.schemas.length > 0) { options.schemas.forEach(schema => { schemas[schema.uri] = schema; }); } for (const { uri, schema } of definitions) { schemas[uri] = { uri, schema, fileMatch: [id || '*.json'] }; } // console.log(schemas); // console.log(Object.values(schemas)); options.schemas = Object.values(schemas); defaults.setDiagnosticsOptions(options); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JsonDefaultsService, deps: [{ token: i1.CodeEditorService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JsonDefaultsService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: JsonDefaultsService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.CodeEditorService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kZWZhdWx0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9qc29uLWRlZmF1bHRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBWSxpQkFBb0M7UUFDOUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBVztRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXBELFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztZQUM3QixRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRTtnQkFDUCxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO2dCQUN2QztvQkFDRSxHQUFHLEVBQUUsaUNBQWlDO29CQUN0QyxtQkFBbUI7b0JBQ25CLHlCQUF5QjtvQkFDekIsTUFBTSxFQUFFO3dCQUNOLElBQUksRUFBRSxRQUFRO3dCQUNkLFVBQVUsRUFBRTs0QkFDVixFQUFFLEVBQUU7Z0NBQ0YsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzs2QkFDbkI7NEJBQ0QsRUFBRSxFQUFFO2dDQUNGLElBQUksRUFBRSxpQ0FBaUM7NkJBQ3hDO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNEO29CQUNFLEdBQUcsRUFBRSxpQ0FBaUM7b0JBQ3RDLG1CQUFtQjtvQkFDbkIseUJBQXlCO29CQUN6QixNQUFNLEVBQUU7d0JBQ04sSUFBSSxFQUFFLFFBQVE7d0JBQ2QsVUFBVSxFQUFFOzRCQUNWLEVBQUUsRUFBRTtnQ0FDRixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDOzZCQUNuQjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FDUixFQUFVLEVBQ1YsY0FBc0QsRUFBRTtRQUV4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztRQUU1QyxNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO1FBRTlDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUc7Z0JBQ2IsR0FBRztnQkFDSCxNQUFNO2dCQUNOLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUM7YUFDNUIsQ0FBQztRQUNKLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsdUNBQXVDO1FBRXZDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxRQUFRLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FwRlUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZGVFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9jb2RlLWVkaXRvci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSnNvbkRlZmF1bHRzU2VydmljZSB7XG4gIHByaXZhdGUgbW9uYWNvOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29kZUVkaXRvclNlcnZpY2U6IENvZGVFZGl0b3JTZXJ2aWNlKSB7XG4gICAgY29kZUVkaXRvclNlcnZpY2UubG9hZGVkLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICB0aGlzLnNldHVwKGV2ZW50Lm1vbmFjbyk7XG4gICAgfSk7XG4gIH1cblxuICBzZXR1cChtb25hY286IGFueSk6IHZvaWQge1xuICAgIGlmICghbW9uYWNvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb25hY28gPSBtb25hY287XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IG1vbmFjby5sYW5ndWFnZXMuanNvbi5qc29uRGVmYXVsdHM7XG5cbiAgICBkZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xuICAgICAgdmFsaWRhdGU6IHRydWUsXG4gICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgc2NoZW1hczogW1xuICAgICAgICAuLi5kZWZhdWx0cy5fZGlhZ25vc3RpY3NPcHRpb25zLnNjaGVtYXMsXG4gICAgICAgIHtcbiAgICAgICAgICB1cmk6ICdodHRwOi8vbXlzZXJ2ZXIvZm9vLXNjaGVtYS5qc29uJyxcbiAgICAgICAgICAvLyBmaWxlTWF0Y2g6IFtpZF0sXG4gICAgICAgICAgLy8gZmlsZU1hdGNoOiBbJyouanNvbiddLFxuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHAxOiB7XG4gICAgICAgICAgICAgICAgZW51bTogWyd2MScsICd2MiddXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHAyOiB7XG4gICAgICAgICAgICAgICAgJHJlZjogJ2h0dHA6Ly9teXNlcnZlci9iYXItc2NoZW1hLmpzb24nXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB1cmk6ICdodHRwOi8vbXlzZXJ2ZXIvYmFyLXNjaGVtYS5qc29uJyxcbiAgICAgICAgICAvLyBmaWxlTWF0Y2g6IFtpZF0sXG4gICAgICAgICAgLy8gZmlsZU1hdGNoOiBbJyouanNvbiddLFxuICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIHExOiB7XG4gICAgICAgICAgICAgICAgZW51bTogWyd4MScsICd4MiddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNjaGVtYXMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkZWZpbml0aW9uczogQXJyYXk8eyB1cmk6IHN0cmluZzsgc2NoZW1hOiBPYmplY3QgfT4gPSBbXVxuICApIHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMubW9uYWNvLmxhbmd1YWdlcy5qc29uLmpzb25EZWZhdWx0cztcbiAgICBjb25zdCBvcHRpb25zID0gZGVmYXVsdHMuZGlhZ25vc3RpY3NPcHRpb25zO1xuXG4gICAgY29uc3Qgc2NoZW1hczogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSA9IHt9O1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zY2hlbWFzICYmIG9wdGlvbnMuc2NoZW1hcy5sZW5ndGggPiAwKSB7XG4gICAgICBvcHRpb25zLnNjaGVtYXMuZm9yRWFjaChzY2hlbWEgPT4ge1xuICAgICAgICBzY2hlbWFzW3NjaGVtYS51cmldID0gc2NoZW1hO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB7IHVyaSwgc2NoZW1hIH0gb2YgZGVmaW5pdGlvbnMpIHtcbiAgICAgIHNjaGVtYXNbdXJpXSA9IHtcbiAgICAgICAgdXJpLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGZpbGVNYXRjaDogW2lkIHx8ICcqLmpzb24nXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhzY2hlbWFzKTtcbiAgICAvLyBjb25zb2xlLmxvZyhPYmplY3QudmFsdWVzKHNjaGVtYXMpKTtcblxuICAgIG9wdGlvbnMuc2NoZW1hcyA9IE9iamVjdC52YWx1ZXMoc2NoZW1hcyk7XG4gICAgZGVmYXVsdHMuc2V0RGlhZ25vc3RpY3NPcHRpb25zKG9wdGlvbnMpO1xuICB9XG59XG4iXX0=