@ngstack/code-editor
Version:
Code editor component for Angular applications.
83 lines • 8.86 kB
JavaScript
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=