ngx-monaco-editor-v2
Version:
Monaco Code Editor for Angular
1 lines • 24.2 kB
Source Map (JSON)
{"version":3,"file":"ngx-monaco-editor-v2.mjs","sources":["../../../projects/editor/src/lib/config.ts","../../../projects/editor/src/lib/base-editor.ts","../../../projects/editor/src/lib/editor.component.ts","../../../projects/editor/src/lib/diff-editor.component.ts","../../../projects/editor/src/lib/editor.module.ts","../../../projects/editor/src/ngx-monaco-editor-v2.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const NGX_MONACO_EDITOR_CONFIG = new InjectionToken('NGX_MONACO_EDITOR_CONFIG');\n\nexport interface NgxMonacoEditorConfig {\n baseUrl?: string;\n requireConfig?: { [key: string]: any; };\n defaultOptions?: { [key: string]: any; };\n monacoRequire?: Function;\n onMonacoLoad?: Function;\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n inject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NGX_MONACO_EDITOR_CONFIG, NgxMonacoEditorConfig } from './config';\n\nlet loadedMonaco = false;\nlet loadPromise: Promise<void>;\n\n@Component({\n template: '',\n standalone: false\n})\nexport abstract class BaseEditor implements AfterViewInit, OnDestroy {\n config = inject<NgxMonacoEditorConfig>(NGX_MONACO_EDITOR_CONFIG);\n\n @Input('insideNg')\n set insideNg(insideNg: boolean) {\n this._insideNg = insideNg;\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this._options, this.insideNg);\n }\n }\n\n get insideNg(): boolean {\n return this._insideNg;\n }\n\n @ViewChild('editorContainer', { static: true }) _editorContainer: ElementRef;\n @Output() onInit = new EventEmitter<any>();\n protected _editor: any;\n protected _options: any;\n protected _windowResizeSubscription: Subscription;\n private _insideNg: boolean = false;\n\n ngAfterViewInit(): void {\n if (loadedMonaco) {\n // Wait until monaco editor is available\n loadPromise.then(() => {\n this.initMonaco(this._options, this.insideNg);\n });\n } else {\n loadedMonaco = true;\n loadPromise = new Promise<void>((resolve: any) => {\n let baseUrl = this.config.baseUrl;\n // ensure backward compatibility\n if (baseUrl === \"assets\" || !baseUrl) {\n baseUrl = \"./assets/monaco/min/vs\";\n }\n if (typeof ((<any>window).monaco) === 'object') {\n this.initMonaco(this._options, this.insideNg);\n resolve();\n return;\n }\n const onGotAmdLoader: any = (require?: any) => {\n let usedRequire = require || (<any>window).require;\n let requireConfig = { paths: { vs: `${baseUrl}` } };\n Object.assign(requireConfig, this.config.requireConfig || {});\n\n // Load monaco\n usedRequire.config(requireConfig);\n usedRequire([`vs/editor/editor.main`], () => {\n if (typeof this.config.onMonacoLoad === 'function') {\n this.config.onMonacoLoad();\n }\n this.initMonaco(this._options, this.insideNg);\n resolve();\n });\n };\n\n if (this.config.monacoRequire) {\n onGotAmdLoader(this.config.monacoRequire);\n // Load AMD loader if necessary\n } else if (!(<any>window).require) {\n const loaderScript: HTMLScriptElement = document.createElement('script');\n loaderScript.type = 'text/javascript';\n loaderScript.src = `${baseUrl}/loader.js`;\n loaderScript.addEventListener('load', () => { onGotAmdLoader(); });\n document.body.appendChild(loaderScript);\n // Load AMD loader without over-riding node's require\n } else if (!(<any>window).require.config) {\n var src = `${baseUrl}/loader.js`;\n\n var loaderRequest = new XMLHttpRequest();\n loaderRequest.addEventListener(\"load\", () => {\n let scriptElem = document.createElement('script');\n scriptElem.type = 'text/javascript';\n scriptElem.text = [\n // Monaco uses a custom amd loader that over-rides node's require.\n // Keep a reference to node's require so we can restore it after executing the amd loader file.\n 'var nodeRequire = require;',\n loaderRequest.responseText.replace('\"use strict\";', ''),\n // Save Monaco's amd require and restore Node's require\n 'var monacoAmdRequire = require;',\n 'require = nodeRequire;',\n 'require.nodeRequire = require;'\n ].join('\\n');\n document.body.appendChild(scriptElem);\n onGotAmdLoader((<any>window).monacoAmdRequire);\n });\n loaderRequest.open(\"GET\", src);\n loaderRequest.send();\n } else {\n onGotAmdLoader();\n }\n });\n }\n }\n\n protected abstract initMonaco(options: any, insideNg: boolean): void;\n\n ngOnDestroy() {\n if (this._windowResizeSubscription) {\n this._windowResizeSubscription.unsubscribe();\n }\n if (this._editor) {\n this._editor.dispose();\n this._editor = undefined;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, inject, Input, NgZone } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\n\nimport { BaseEditor } from './base-editor';\nimport { NgxEditorModel } from './types';\n\ndeclare var monaco: any;\n\n@Component({\n standalone: true,\n selector: 'ngx-monaco-editor',\n template: '<div class=\"editor-container\" #editorContainer></div>',\n styles: [`\n :host {\n display: block;\n height: 200px;\n }\n\n .editor-container {\n width: 100%;\n height: 98%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EditorComponent),\n multi: true\n }]\n})\nexport class EditorComponent extends BaseEditor implements ControlValueAccessor {\n private zone = inject(NgZone);\n private _value: string = '';\n\n propagateChange = (_: any) => {};\n onTouched = () => {};\n\n @Input('options')\n set options(options: any) {\n this._options = Object.assign({}, this.config.defaultOptions, options);\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this._options, this.insideNg);\n }\n }\n\n get options(): any {\n return this._options;\n }\n\n @Input('model')\n set model(model: NgxEditorModel) {\n this.options.model = model;\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this.options, this.insideNg);\n }\n }\n\n writeValue(value: any): void {\n this._value = value || '';\n // Fix for value change while dispose in process.\n setTimeout(() => {\n if (this._editor && !this.options.model) {\n this._editor.setValue(this._value);\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.options.readOnly = disabled;\n }\n\n protected initMonaco(options: any, insideNg: boolean): void {\n\n const hasModel = !!options.model;\n\n if (hasModel) {\n const model = monaco.editor.getModel(options.model.uri || '');\n if (model) {\n options.model = model;\n options.model.setValue(this._value);\n } else {\n options.model = monaco.editor.createModel(options.model.value, options.model.language, options.model.uri);\n }\n }\n\n if (insideNg) {\n this._editor = monaco.editor.create(this._editorContainer.nativeElement, options);\n } else {\n this.zone.runOutsideAngular(() => {\n this._editor = monaco.editor.create(this._editorContainer.nativeElement, options);\n })\n }\n\n if (!hasModel) {\n this._editor.setValue(this._value);\n }\n\n this._editor.onDidChangeModelContent((e: any) => {\n const value = this._editor.getValue();\n\n // value is not propagated to parent when executing outside zone.\n this.zone.run(() => {\n this.propagateChange(value);\n this._value = value;\n });\n });\n\n this._editor.onDidBlurEditorWidget(() => {\n this.onTouched();\n });\n\n this._editor.setTheme = (themeName: string): void => {\n this.options.theme = themeName;\n monaco.editor.setTheme(themeName);\n };\n\n // refresh layout on resize event.\n if (this._windowResizeSubscription) {\n this._windowResizeSubscription.unsubscribe();\n }\n this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());\n this.onInit.emit(this._editor);\n }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, NgZone, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\n\nimport { BaseEditor } from './base-editor';\nimport { DiffEditorModel } from './types';\n\ndeclare var monaco: any;\n\n@Component({\n standalone: true,\n selector: 'ngx-monaco-diff-editor',\n template: '<div class=\"editor-container\" #editorContainer></div>',\n styles: [`\n :host {\n display: block;\n height: 200px;\n }\n\n .editor-container {\n width: 100%;\n height: 98%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DiffEditorComponent extends BaseEditor {\n private zone = inject(NgZone);\n\n _originalModel: DiffEditorModel;\n _modifiedModel: DiffEditorModel;\n\n @Input('options')\n set options(options: any) {\n this._options = Object.assign({}, this.config.defaultOptions, options);\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this._options, this.insideNg);\n }\n }\n\n get options(): any {\n return this._options;\n }\n\n @Input('originalModel')\n set originalModel(model: DiffEditorModel) {\n this._originalModel = model;\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this.options, this.insideNg);\n }\n }\n\n @Input('modifiedModel')\n set modifiedModel(model: DiffEditorModel) {\n this._modifiedModel = model;\n if (this._editor) {\n this._editor.dispose();\n this.initMonaco(this.options, this.insideNg);\n }\n }\n\n protected initMonaco(options: any, insideNg: boolean): void {\n\n if (!this._originalModel || !this._modifiedModel) {\n throw new Error('originalModel or modifiedModel not found for ngx-monaco-diff-editor');\n }\n\n this._originalModel.language = this._originalModel.language || options.language;\n this._modifiedModel.language = this._modifiedModel.language || options.language;\n\n let originalModel = monaco.editor.createModel(this._originalModel.code, this._originalModel.language);\n let modifiedModel = monaco.editor.createModel(this._modifiedModel.code, this._modifiedModel.language);\n\n this._editorContainer.nativeElement.innerHTML = '';\n const theme = options.theme;\n\n if (insideNg) {\n this._editor = monaco.editor.createDiffEditor(this._editorContainer.nativeElement, options);\n } else {\n this.zone.runOutsideAngular(() => {\n this._editor = monaco.editor.createDiffEditor(this._editorContainer.nativeElement, options);\n })\n }\n\n options.theme = theme;\n this._editor.setModel({\n original: originalModel,\n modified: modifiedModel\n });\n\n // refresh layout on resize event.\n if (this._windowResizeSubscription) {\n this._windowResizeSubscription.unsubscribe();\n }\n this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor.layout());\n this.onInit.emit(this._editor);\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule, makeEnvironmentProviders } from '@angular/core';\n\nimport { NGX_MONACO_EDITOR_CONFIG, NgxMonacoEditorConfig } from './config';\nimport { DiffEditorComponent } from './diff-editor.component';\nimport { EditorComponent } from './editor.component';\n\n@NgModule({\n imports: [\n CommonModule,\n EditorComponent,\n DiffEditorComponent\n ],\n exports: [\n EditorComponent,\n DiffEditorComponent\n ]\n})\nexport class MonacoEditorModule {\n public static forRoot(config: NgxMonacoEditorConfig = {}): ModuleWithProviders<MonacoEditorModule> {\n return {\n ngModule: MonacoEditorModule,\n providers: [\n { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }\n ]\n };\n }\n}\n\nexport function provideMonacoEditor(config: NgxMonacoEditorConfig = {}) {\n return makeEnvironmentProviders([\n { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}