{"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';\r\n\r\nexport const NGX_MONACO_EDITOR_CONFIG = new InjectionToken('NGX_MONACO_EDITOR_CONFIG');\r\n\r\nexport interface NgxMonacoEditorConfig {\r\n  baseUrl?: string;\r\n  requireConfig?: { [key: string]: any; };\r\n  defaultOptions?: { [key: string]: any; };\r\n  monacoRequire?: Function;\r\n  onMonacoLoad?: Function;\r\n}\r\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  effect,\n  inject,\n  input,\n  output,\n  viewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport type * as Monaco from 'monaco-editor';\n\nimport { NGX_MONACO_EDITOR_CONFIG, NgxMonacoEditorConfig } from './config';\n\n// `monaco` is exposed as a global by the AMD loader (see `ngAfterViewInit`).\ndeclare const monaco: typeof Monaco;\n\nlet loadedMonaco = false;\nlet loadPromise: Promise<void>;\n\n@Component({\n  template: '',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  standalone: false\n})\nexport abstract class BaseEditor<TEditor extends Monaco.editor.IEditor = Monaco.editor.IEditor>\n  implements AfterViewInit, OnDestroy {\n  protected readonly config = inject<NgxMonacoEditorConfig>(NGX_MONACO_EDITOR_CONFIG);\n\n  /** Run monaco creation inside Angular's zone (defaults to outside for performance). */\n  readonly insideNg = input(false);\n  /** Emits the underlying monaco editor instance once it has been created. */\n  readonly onInit = output<TEditor>();\n\n  protected readonly editorContainer = viewChild.required<ElementRef<HTMLElement>>('editorContainer');\n\n  protected _editor?: TEditor;\n  /** Models created by this component, tracked so they can be disposed (monaco keeps them globally otherwise). */\n  protected _models: Monaco.editor.ITextModel[] = [];\n  /** Editor event listeners, disposed alongside the editor. */\n  protected _listeners: Monaco.IDisposable[] = [];\n  protected _windowResizeSubscription?: Subscription;\n\n  protected constructor() {\n    // Re-create the editor when `insideNg` changes after it already exists.\n    effect(() => {\n      this.insideNg();\n      if (this._editor) {\n        this.reinit();\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (loadedMonaco) {\n      // Wait until monaco editor is available\n      loadPromise.then(() => {\n        this.initMonaco();\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();\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();\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(): void;\n\n  /** Tear down the current editor and create a fresh one. */\n  protected reinit(): void {\n    this.disposeEditor();\n    this.initMonaco();\n  }\n\n  /** Dispose the editor and every resource it owns (listeners, models, subscriptions). */\n  protected disposeEditor(): void {\n    this._windowResizeSubscription?.unsubscribe();\n    this._windowResizeSubscription = undefined;\n    this._listeners.forEach(listener => listener.dispose());\n    this._listeners = [];\n    this._editor?.dispose();\n    this._editor = undefined;\n    this._models.forEach(model => model.dispose());\n    this._models = [];\n  }\n\n  ngOnDestroy(): void {\n    this.disposeEditor();\n  }\n}\n","import { ChangeDetectionStrategy, Component, effect, forwardRef, inject, input, NgZone } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport type * as Monaco from 'monaco-editor';\n\nimport { BaseEditor } from './base-editor';\nimport { NgxEditorModel } from './types';\n\ndeclare const monaco: typeof Monaco;\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<Monaco.editor.IStandaloneCodeEditor> implements ControlValueAccessor {\n  private readonly zone = inject(NgZone);\n  private _value = '';\n  private _disabled = false;\n\n  readonly options = input<Monaco.editor.IStandaloneEditorConstructionOptions>({});\n  readonly model = input<NgxEditorModel>();\n\n  propagateChange = (_: any) => {};\n  onTouched = () => {};\n\n  constructor() {\n    super();\n    // Re-create the editor whenever the options or model inputs change.\n    effect(() => {\n      this.options();\n      this.model();\n      if (this._editor) {\n        this.reinit();\n      }\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.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(isDisabled: boolean): void {\n    this._disabled = isDisabled;\n    // Apply immediately to a live editor instead of waiting for a re-init.\n    this._editor?.updateOptions({ readOnly: isDisabled || !!this.options().readOnly });\n  }\n\n  /** Change the global monaco theme (e.g. `'vs-dark'`). */\n  setTheme(themeName: string): void {\n    monaco.editor.setTheme(themeName);\n  }\n\n  protected initMonaco(): void {\n    const options: Monaco.editor.IStandaloneEditorConstructionOptions = {\n      ...this.config.defaultOptions,\n      ...this.options()\n    };\n    if (this._disabled) {\n      options.readOnly = true;\n    }\n\n    const modelInput = this.model();\n    if (modelInput) {\n      const existing = modelInput.uri ? monaco.editor.getModel(modelInput.uri as Monaco.Uri) : null;\n      if (existing) {\n        existing.setValue(this._value);\n        options.model = existing;\n      } else {\n        const created = monaco.editor.createModel(\n          modelInput.value,\n          modelInput.language,\n          modelInput.uri as Monaco.Uri | undefined\n        );\n        this._models.push(created);\n        options.model = created;\n      }\n    }\n\n    const container = this.editorContainer().nativeElement;\n    if (this.insideNg()) {\n      this._editor = monaco.editor.create(container, options);\n    } else {\n      this.zone.runOutsideAngular(() => {\n        this._editor = monaco.editor.create(container, options);\n      });\n    }\n\n    if (!options.model) {\n      this._editor!.setValue(this._value);\n    }\n\n    this._listeners.push(\n      this._editor!.onDidChangeModelContent(() => {\n        const value = this._editor!.getValue();\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\n    this._listeners.push(\n      this._editor!.onDidBlurEditorWidget(() => {\n        this.onTouched();\n      })\n    );\n\n    // refresh layout on resize event.\n    this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor!.layout());\n    this.onInit.emit(this._editor!);\n  }\n}\n","import { ChangeDetectionStrategy, Component, effect, inject, input, NgZone } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport type * as Monaco from 'monaco-editor';\n\nimport { BaseEditor } from './base-editor';\nimport { DiffEditorModel } from './types';\n\ndeclare const monaco: typeof Monaco;\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<Monaco.editor.IStandaloneDiffEditor> {\n  private readonly zone = inject(NgZone);\n\n  readonly options = input<Monaco.editor.IStandaloneDiffEditorConstructionOptions>({});\n  readonly originalModel = input<DiffEditorModel>();\n  readonly modifiedModel = input<DiffEditorModel>();\n\n  constructor() {\n    super();\n    // Re-create the editor whenever options or either model change.\n    effect(() => {\n      this.options();\n      this.originalModel();\n      this.modifiedModel();\n      if (this._editor) {\n        this.reinit();\n      }\n    });\n  }\n\n  protected initMonaco(): void {\n    const original = this.originalModel();\n    const modified = this.modifiedModel();\n\n    if (!original || !modified) {\n      throw new Error('originalModel or modifiedModel not found for ngx-monaco-diff-editor');\n    }\n\n    const options: Monaco.editor.IStandaloneDiffEditorConstructionOptions = {\n      ...this.config.defaultOptions,\n      ...this.options()\n    };\n\n    const originalModel = monaco.editor.createModel(original.code, original.language || (options as any).language);\n    const modifiedModel = monaco.editor.createModel(modified.code, modified.language || (options as any).language);\n    this._models.push(originalModel, modifiedModel);\n\n    const container = this.editorContainer().nativeElement;\n    container.innerHTML = '';\n\n    if (this.insideNg()) {\n      this._editor = monaco.editor.createDiffEditor(container, options);\n    } else {\n      this.zone.runOutsideAngular(() => {\n        this._editor = monaco.editor.createDiffEditor(container, options);\n      });\n    }\n\n    this._editor!.setModel({\n      original: originalModel,\n      modified: modifiedModel\n    });\n\n    // refresh layout on resize event.\n    this._windowResizeSubscription = fromEvent(window, 'resize').subscribe(() => this._editor!.layout());\n    this.onInit.emit(this._editor!);\n  }\n}\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule, makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { NGX_MONACO_EDITOR_CONFIG, NgxMonacoEditorConfig } from './config';\r\nimport { DiffEditorComponent } from './diff-editor.component';\r\nimport { EditorComponent } from './editor.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    EditorComponent,\r\n    DiffEditorComponent\r\n  ],\r\n  exports: [\r\n    EditorComponent,\r\n    DiffEditorComponent\r\n  ]\r\n})\r\nexport class MonacoEditorModule {\r\n  public static forRoot(config: NgxMonacoEditorConfig = {}): ModuleWithProviders<MonacoEditorModule> {\r\n    return {\r\n      ngModule: MonacoEditorModule,\r\n      providers: [\r\n        { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }\r\n      ]\r\n    };\r\n  }\r\n}\r\n\r\nexport function provideMonacoEditor(config: NgxMonacoEditorConfig = {}) {\r\n  return makeEnvironmentProviders([\r\n    { provide: NGX_MONACO_EDITOR_CONFIG, useValue: config }\r\n  ]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}