{"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 || this._options.readOnly;\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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"}