@ngstack/code-editor
Version:
Code editor component for Angular applications.
1 lines • 40.1 kB
Source Map (JSON)
{"version":3,"file":"ngstack-code-editor.mjs","sources":["../../../../projects/code-editor/src/lib/services/code-editor.service.ts","../../../../projects/code-editor/src/lib/services/typescript-defaults.service.ts","../../../../projects/code-editor/src/lib/services/javascript-defaults.service.ts","../../../../projects/code-editor/src/lib/services/json-defaults.service.ts","../../../../projects/code-editor/src/lib/code-editor/code-editor.component.ts","../../../../projects/code-editor/src/lib/code-editor/code-editor.component.html","../../../../projects/code-editor/src/lib/code-editor.module.ts","../../../../projects/code-editor/src/public_api.ts","../../../../projects/code-editor/src/ngstack-code-editor.ts"],"sourcesContent":["import { Injectable, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { CodeEditorSettings } from '../editor-settings';\nimport { editor } from 'monaco-editor';\n\nexport const EDITOR_SETTINGS = new InjectionToken<CodeEditorSettings>(\n 'EDITOR_SETTINGS'\n);\n\nexport interface TypingsInfo {\n entryPoints: { [key: string]: string };\n files: Array<{\n content: string;\n name: string;\n url: string;\n path: string;\n }>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CodeEditorService {\n readonly baseUrl: string;\n readonly typingsWorkerUrl: string;\n\n typingsLoaded = new Subject<TypingsInfo>();\n loaded = new BehaviorSubject<{ monaco: any } | null>({ monaco: null });\n\n loadingTypings = new BehaviorSubject<boolean>(false);\n\n private typingsWorker: Worker;\n\n private _monaco: any;\n\n /**\n * Returns the global `monaco` instance\n */\n get monaco(): any {\n return this._monaco;\n }\n\n constructor(\n @Optional()\n @Inject(EDITOR_SETTINGS)\n settings: CodeEditorSettings\n ) {\n const editorVersion = settings?.editorVersion || 'latest';\n\n this.baseUrl =\n settings?.baseUrl ||\n `https://cdn.jsdelivr.net/npm/monaco-editor@${editorVersion}/min`;\n this.typingsWorkerUrl = settings?.typingsWorkerUrl || ``;\n }\n\n private loadTypingsWorker(): Worker {\n if (!this.typingsWorker && (<any>window).Worker) {\n if (this.typingsWorkerUrl.startsWith('http')) {\n const proxyScript = `importScripts('${this.typingsWorkerUrl}');`;\n const proxy = URL.createObjectURL(\n new Blob([proxyScript], { type: 'text/javascript' })\n );\n this.typingsWorker = new Worker(proxy);\n } else {\n this.typingsWorker = new Worker(this.typingsWorkerUrl);\n }\n this.typingsWorker.addEventListener('message', (e) => {\n this.loadingTypings.next(false);\n this.typingsLoaded.next(e.data);\n });\n }\n return this.typingsWorker;\n }\n\n loadTypings(dependencies: string[]) {\n if (dependencies && dependencies.length > 0) {\n const worker = this.loadTypingsWorker();\n if (worker) {\n this.loadingTypings.next(true);\n worker.postMessage({\n dependencies\n });\n }\n }\n }\n\n loadEditor(): Promise<void> {\n return new Promise((resolve) => {\n const onGotAmdLoader = () => {\n (<any>window).require.config({\n paths: { vs: `${this.baseUrl}/vs` }\n });\n\n if (this.baseUrl.startsWith('http')) {\n const proxyScript = `\n self.MonacoEnvironment = {\n baseUrl: \"${this.baseUrl}\"\n };\n importScripts('${this.baseUrl}/vs/base/worker/workerMain.js');\n `;\n const proxy = URL.createObjectURL(\n new Blob([proxyScript], { type: 'text/javascript' })\n );\n window['MonacoEnvironment'] = {\n getWorkerUrl: function () {\n return proxy;\n }\n };\n }\n\n (<any>window).require(['vs/editor/editor.main'], () => {\n this._monaco = window['monaco'];\n this.loaded.next({ monaco: this._monaco });\n resolve();\n });\n };\n\n if (!(<any>window).require) {\n const loaderScript = document.createElement('script');\n loaderScript.type = 'text/javascript';\n loaderScript.src = `${this.baseUrl}/vs/loader.js`;\n loaderScript.addEventListener('load', onGotAmdLoader);\n document.body.appendChild(loaderScript);\n } else {\n onGotAmdLoader();\n }\n });\n }\n\n /**\n * Switches to a theme.\n * @param themeName name of the theme\n */\n setTheme(themeName: string) {\n this.monaco.editor.setTheme(themeName);\n }\n\n createEditor(\n containerElement: HTMLElement,\n options?: editor.IEditorConstructionOptions\n ): editor.ICodeEditor {\n return this.monaco.editor.create(containerElement, options);\n }\n\n createModel(\n value: string,\n language?: string,\n uri?: string\n ): editor.ITextModel {\n return this.monaco.editor.createModel(\n value,\n language,\n this.monaco.Uri.file(uri)\n );\n }\n\n setModelLanguage(\n model: editor.ITextModel,\n mimeTypeOrLanguageId: string\n ): void {\n if (this.monaco && model) {\n this.monaco.editor.setModelLanguage(model, mimeTypeOrLanguageId);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService, TypingsInfo } from './code-editor.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TypescriptDefaultsService {\n private monaco: any;\n\n constructor(codeEditorService: CodeEditorService) {\n codeEditorService.loaded.subscribe(event => {\n this.setup(event.monaco);\n });\n codeEditorService.typingsLoaded.subscribe(typings => {\n this.updateTypings(typings);\n });\n }\n\n setup(monaco: any): void {\n if (!monaco) {\n return;\n }\n\n this.monaco = monaco;\n\n const defaults = monaco.languages.typescript.typescriptDefaults;\n\n defaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES6,\n module: 'commonjs',\n noEmit: true,\n noLib: true,\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n allowNonTsExtensions: true,\n declaration: true,\n lib: ['es2017', 'dom'],\n baseUrl: '.',\n paths: {}\n });\n\n defaults.setMaximumWorkerIdleTime(-1);\n defaults.setEagerModelSync(true);\n\n /*\n defaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: true\n });\n */\n }\n\n updateTypings(typings: TypingsInfo) {\n if (typings) {\n this.addExtraLibs(typings.files);\n this.addLibraryPaths(typings.entryPoints);\n }\n }\n\n addExtraLibs(libs: Array<{ path: string; content: string }> = []): void {\n if (!this.monaco || !libs || libs.length === 0) {\n return;\n }\n\n const defaults = this.monaco.languages.typescript.typescriptDefaults;\n\n // undocumented API\n const registeredLibs = defaults.getExtraLibs();\n\n libs.forEach(lib => {\n if (!registeredLibs[lib.path]) {\n // needs performance improvements, recreates its worker each time\n // defaults.addExtraLib(lib.content, lib.path);\n // undocumented API\n defaults._extraLibs[lib.path] = lib.content;\n }\n });\n\n // undocumented API\n defaults._onDidChange.fire(defaults);\n }\n\n addLibraryPaths(paths: { [key: string]: string } = {}): void {\n if (!this.monaco) {\n return;\n }\n\n const defaults = this.monaco.languages.typescript.typescriptDefaults;\n const compilerOptions = defaults.getCompilerOptions();\n compilerOptions.paths = compilerOptions.paths || {};\n\n Object.keys(paths).forEach(key => {\n compilerOptions.paths[key] = [paths[key]];\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService, TypingsInfo } from './code-editor.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JavascriptDefaultsService {\n private monaco: any;\n\n constructor(codeEditorService: CodeEditorService) {\n codeEditorService.loaded.subscribe(event => {\n this.setup(event.monaco);\n });\n codeEditorService.typingsLoaded.subscribe(typings => {\n this.updateTypings(typings);\n });\n }\n\n setup(monaco: any): void {\n if (!monaco) {\n return;\n }\n\n this.monaco = monaco;\n\n const defaults = monaco.languages.typescript.javascriptDefaults;\n\n defaults.setCompilerOptions({\n target: monaco.languages.typescript.ScriptTarget.ES6,\n module: 'commonjs',\n allowNonTsExtensions: true,\n baseUrl: '.',\n paths: {}\n });\n\n defaults.setMaximumWorkerIdleTime(-1);\n defaults.setEagerModelSync(true);\n\n /*\n defaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false\n });\n */\n }\n\n updateTypings(typings: TypingsInfo) {\n if (typings) {\n this.addExtraLibs(typings.files);\n this.addLibraryPaths(typings.entryPoints);\n }\n }\n\n addExtraLibs(libs: Array<{ path: string; content: string }> = []): void {\n if (!this.monaco || !libs || libs.length === 0) {\n return;\n }\n\n const defaults = this.monaco.languages.typescript.javascriptDefaults;\n\n // undocumented API\n const registeredLibs = defaults.getExtraLibs();\n\n libs.forEach(lib => {\n if (!registeredLibs[lib.path]) {\n // needs performance improvements, recreates its worker each time\n // defaults.addExtraLib(lib.content, lib.path);\n // undocumented API\n defaults._extraLibs[lib.path] = lib.content;\n }\n });\n\n // undocumented API\n defaults._onDidChange.fire(defaults);\n }\n\n addLibraryPaths(paths: { [key: string]: string } = {}): void {\n if (!this.monaco) {\n return;\n }\n\n const defaults = this.monaco.languages.typescript.javascriptDefaults;\n const compilerOptions = defaults.getCompilerOptions();\n compilerOptions.paths = compilerOptions.paths || {};\n\n Object.keys(paths).forEach(key => {\n compilerOptions.paths[key] = [paths[key]];\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CodeEditorService } from './code-editor.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class JsonDefaultsService {\n private monaco: any;\n\n constructor(codeEditorService: CodeEditorService) {\n codeEditorService.loaded.subscribe(event => {\n this.setup(event.monaco);\n });\n }\n\n setup(monaco: any): void {\n if (!monaco) {\n return;\n }\n\n this.monaco = monaco;\n\n const defaults = monaco.languages.json.jsonDefaults;\n\n defaults.setDiagnosticsOptions({\n validate: true,\n allowComments: true,\n schemas: [\n ...defaults._diagnosticsOptions.schemas,\n {\n uri: 'http://myserver/foo-schema.json',\n // fileMatch: [id],\n // fileMatch: ['*.json'],\n schema: {\n type: 'object',\n properties: {\n p1: {\n enum: ['v1', 'v2']\n },\n p2: {\n $ref: 'http://myserver/bar-schema.json'\n }\n }\n }\n },\n {\n uri: 'http://myserver/bar-schema.json',\n // fileMatch: [id],\n // fileMatch: ['*.json'],\n schema: {\n type: 'object',\n properties: {\n q1: {\n enum: ['x1', 'x2']\n }\n }\n }\n }\n ]\n });\n }\n\n addSchemas(\n id: string,\n definitions: Array<{ uri: string; schema: Object }> = []\n ) {\n const defaults = this.monaco.languages.json.jsonDefaults;\n const options = defaults.diagnosticsOptions;\n\n const schemas: { [key: string]: Object } = {};\n\n if (options && options.schemas && options.schemas.length > 0) {\n options.schemas.forEach(schema => {\n schemas[schema.uri] = schema;\n });\n }\n\n for (const { uri, schema } of definitions) {\n schemas[uri] = {\n uri,\n schema,\n fileMatch: [id || '*.json']\n };\n }\n\n // console.log(schemas);\n // console.log(Object.values(schemas));\n\n options.schemas = Object.values(schemas);\n defaults.setDiagnosticsOptions(options);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n OnChanges,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n inject\n} from '@angular/core';\nimport { CodeEditorService } from '../services/code-editor.service';\nimport { TypescriptDefaultsService } from '../services/typescript-defaults.service';\nimport { JavascriptDefaultsService } from '../services/javascript-defaults.service';\nimport { JsonDefaultsService } from '../services/json-defaults.service';\nimport { CodeModel } from '../models/code.model';\nimport { editor } from 'monaco-editor';\n\nexport interface CodeModelChangedEvent {\n sender: CodeEditorComponent;\n value: CodeModel;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngs-code-editor',\n standalone: true,\n templateUrl: './code-editor.component.html',\n styleUrls: ['./code-editor.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line\n host: { class: 'ngs-code-editor' }\n})\nexport class CodeEditorComponent\n implements OnChanges, OnDestroy, AfterViewInit\n{\n private _editor: editor.ICodeEditor;\n private _model: editor.ITextModel;\n // private _value = '';\n\n private defaultOptions: editor.IStandaloneEditorConstructionOptions = {\n lineNumbers: 'on',\n contextmenu: false,\n minimap: {\n enabled: false\n }\n };\n\n /**\n * The instance of the editor.\n */\n get editor(): editor.ICodeEditor {\n return this._editor;\n }\n\n protected set editor(value: editor.ICodeEditor) {\n this._editor = value;\n }\n\n @ViewChild('editor', { static: true })\n editorContent: ElementRef<HTMLDivElement>;\n\n @Input()\n codeModel: CodeModel;\n\n // @Input()\n // set value(v: string) {\n // if (v !== this._value) {\n // this._value = v;\n // this.setEditorValue(v);\n // this.valueChanged.emit(v);\n // }\n // }\n\n // get value(): string {\n // return this._value;\n // }\n\n /**\n * Editor theme. Defaults to `vs`.\n *\n * Allowed values: `vs`, `vs-dark` or `hc-black`.\n * @memberof CodeEditorComponent\n */\n @Input()\n theme = 'vs';\n\n /**\n * Editor options.\n *\n * See https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneEditorConstructionOptions.html for more details.\n *\n * @memberof CodeEditorComponent\n */\n @Input()\n options: editor.IStandaloneEditorConstructionOptions = {};\n\n /**\n * Toggle readonly state of the editor.\n *\n * @memberof CodeEditorComponent\n */\n @Input()\n readOnly = false;\n\n /**\n * An event emitted when the text content of the model have changed.\n */\n @Output()\n valueChanged = new EventEmitter<string>();\n\n /**\n * An event emitted when the code model value is changed.\n */\n @Output()\n codeModelChanged = new EventEmitter<CodeModelChangedEvent>();\n\n /**\n * An event emitted when the contents of the underlying editor model have changed.\n */\n @Output()\n modelContentChanged = new EventEmitter<editor.IModelContentChangedEvent>();\n\n /**\n * Raised when editor finished loading all its components.\n */\n @Output()\n loaded = new EventEmitter<CodeEditorComponent>();\n\n protected editorService = inject(CodeEditorService);\n protected typescriptDefaults = inject(TypescriptDefaultsService);\n protected javascriptDefaults = inject(JavascriptDefaultsService);\n protected jsonDefaults = inject(JsonDefaultsService);\n\n ngOnDestroy() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = null;\n }\n\n if (this._model) {\n this._model.dispose();\n this._model = null;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const codeModel = changes['codeModel'];\n const readOnly = changes['readOnly'];\n const theme = changes['theme'];\n\n if (codeModel && !codeModel.firstChange) {\n this.updateModel(codeModel.currentValue);\n }\n\n if (readOnly && !readOnly.firstChange) {\n if (this.editor) {\n this.editor.updateOptions({\n readOnly: readOnly.currentValue\n });\n }\n }\n\n if (theme && !theme.firstChange) {\n this.editorService.setTheme(theme.currentValue);\n }\n }\n\n @HostListener('window:resize')\n onResize() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n\n async ngAfterViewInit() {\n this.setupEditor();\n this.loaded.emit(this);\n }\n\n private setupEditor() {\n const domElement = this.editorContent.nativeElement;\n const settings = {\n value: '',\n language: 'text',\n uri: `code-${Date.now()}`,\n ...this.codeModel\n };\n\n this._model = this.editorService.createModel(\n settings.value,\n settings.language,\n settings.uri\n );\n\n const options = Object.assign({}, this.defaultOptions, this.options, {\n readOnly: this.readOnly,\n theme: this.theme,\n model: this._model\n });\n\n this.editor = this.editorService.createEditor(domElement, options);\n\n this._model.onDidChangeContent((e: editor.IModelContentChangedEvent) => {\n this.modelContentChanged.emit(e);\n\n const newValue = this._model.getValue();\n if (this.codeModel) {\n this.codeModel.value = newValue;\n }\n this.valueChanged.emit(newValue);\n });\n\n this.setupDependencies(this.codeModel);\n this.codeModelChanged.emit({ sender: this, value: this.codeModel });\n }\n\n runEditorAction(id: string, args?: unknown) {\n this.editor.getAction(id)?.run(args);\n }\n\n formatDocument() {\n this.runEditorAction('editor.action.formatDocument');\n }\n\n private setupDependencies(model: CodeModel) {\n if (!model) {\n return;\n }\n\n const { language } = model;\n\n if (language) {\n const lang = language.toLowerCase();\n\n switch (lang) {\n case 'typescript':\n if (model.dependencies) {\n this.editorService.loadTypings(model.dependencies);\n }\n break;\n case 'javascript':\n if (model.dependencies) {\n this.editorService.loadTypings(model.dependencies);\n }\n break;\n case 'json':\n if (model.schemas) {\n this.jsonDefaults.addSchemas(model.uri, model.schemas);\n }\n break;\n default:\n break;\n }\n }\n }\n\n private setEditorValue(value: any): void {\n // Fix for value change while dispose in process.\n setTimeout(() => {\n if (this._model) {\n this._model.setValue(value);\n }\n });\n }\n\n private updateModel(model: CodeModel) {\n if (model) {\n this.setEditorValue(model.value);\n this.editorService.setModelLanguage(this._model, model.language);\n this.setupDependencies(model);\n this.codeModelChanged.emit({ sender: this, value: model });\n }\n }\n}\n","<div id=\"editor\" #editor class=\"monaco-editor editor\"></div>\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CodeEditorComponent } from './code-editor/code-editor.component';\nimport { CodeEditorService, EDITOR_SETTINGS } from './services/code-editor.service';\nimport { CodeEditorSettings } from './editor-settings';\nimport { TypescriptDefaultsService } from './services/typescript-defaults.service';\nimport { JavascriptDefaultsService } from './services/javascript-defaults.service';\nimport { JsonDefaultsService } from './services/json-defaults.service';\n\nexport function setupEditorService(service: CodeEditorService) {\n return () => service.loadEditor();\n}\n\nexport function provideCodeEditor(settings?: CodeEditorSettings): Provider[] {\n return [\n { provide: EDITOR_SETTINGS, useValue: settings },\n CodeEditorService,\n TypescriptDefaultsService,\n JavascriptDefaultsService,\n JsonDefaultsService,\n {\n provide: APP_INITIALIZER,\n useFactory: setupEditorService,\n deps: [CodeEditorService],\n multi: true,\n },\n ];\n}\n\n/** @deprecated use `provideCodeEditor(settings)` instead */\n@NgModule({\n imports: [CommonModule, CodeEditorComponent],\n exports: [CodeEditorComponent],\n})\nexport class CodeEditorModule {\n static forRoot(\n settings?: CodeEditorSettings\n ): ModuleWithProviders<CodeEditorModule> {\n return {\n ngModule: CodeEditorModule,\n providers: [\n { provide: EDITOR_SETTINGS, useValue: settings },\n CodeEditorService,\n {\n provide: APP_INITIALIZER,\n useFactory: setupEditorService,\n deps: [CodeEditorService],\n multi: true,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of code-editor\n */\n\nexport * from './lib/services/code-editor.service';\nexport * from './lib/services/typescript-defaults.service';\nexport * from './lib/services/javascript-defaults.service';\n\nexport * from './lib/models/code.model';\n\nexport * from './lib/code-editor/code-editor.component';\n\nexport * from './lib/code-editor.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.CodeEditorService"],"mappings":"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"}