{"version":3,"file":"ng-util-monaco-editor.mjs","sources":["../../../../packages/monaco-editor/monaco-editor.types.ts","../../../../packages/monaco-editor/monaco-editor.config.ts","../../../../packages/monaco-editor/monaco-editor-base.component.ts","../../../../packages/monaco-editor/placeholder.ts","../../../../packages/monaco-editor/monaco-editor.component.ts","../../../../packages/monaco-editor/monaco-editor-diff.component.ts","../../../../packages/monaco-editor/ng-util-monaco-editor.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./monaco.d.ts\" preserve=\"true\" />\n\nexport interface NuMonacoEditorModel {\n  value?: string;\n  language?: string;\n  uri?: monaco.Uri;\n}\n\nexport interface NuMonacoEditorDiffModel {\n  code: string;\n  language?: string;\n}\n\nexport type NuMonacoEditorEventType = 'load-error' | 'init' | 're-init' | 'resize' | 'update-diff' | 'error';\n\nexport interface NuMonacoEditorEvent {\n  type?: NuMonacoEditorEventType;\n  editor?: monaco.editor.IStandaloneCodeEditor | monaco.editor.IStandaloneDiffEditor;\n  error?: string;\n  /** Just only `nu-monaco-editor-diff` component */\n  diffValue?: string;\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nexport const NU_MONACO_EDITOR_CONFIG = new InjectionToken<NuMonacoEditorConfig>('NU_MONACO_EDITOR_CONFIG');\n\nexport function provideNuMonacoEditorConfig(config?: NuMonacoEditorConfig): EnvironmentProviders {\n  return makeEnvironmentProviders([{ provide: NU_MONACO_EDITOR_CONFIG, useValue: config }]);\n}\n\nexport interface NuMonacoEditorConfig {\n  /**\n   * The base URL to monaco editor library assets via AMD (RequireJS), Default: `https://cdn.jsdelivr.net/npm/monaco-editor/min`\n   * You can using local path, e.g.: `assets/monaco-editor/min`.\n   */\n  baseUrl?: string;\n  /**\n   * Default options when creating editors\n   */\n  defaultOptions?: monaco.editor.IStandaloneEditorConstructionOptions;\n  /**\n   * The event after the first loading of the monaco editor library is completed, use this function to extend monaco editor functionalities.\n   * - @param `_monaco` equar to `window.monaco`\n   */\n  monacoLoad?: (_monaco: any) => void;\n  /**\n   * The event before the first preload of the monaco editor library is completed, use this function to set nls availableLanguages.\n   */\n  monacoPreLoad?: () => void;\n  /**\n   * Trigger automatic format delay time, default: `100`\n   */\n  autoFormatTime?: number;\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  afterNextRender,\n  booleanAttribute,\n  Component,\n  DestroyRef,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  numberAttribute,\n  OnDestroy,\n  output\n} from '@angular/core';\nimport { fromEvent, Subscription, timer } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { NuMonacoEditorConfig, NU_MONACO_EDITOR_CONFIG } from './monaco-editor.config';\nimport { NuMonacoEditorEvent, NuMonacoEditorEventType } from './monaco-editor.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nlet monacoLoadPromise: Promise<void> | null = null;\n\n@Component({\n  selector: 'nu-monaco-base',\n  template: ``\n})\nexport abstract class NuMonacoEditorBase implements OnDestroy {\n  protected el = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected config = inject(NU_MONACO_EDITOR_CONFIG, { optional: true });\n  protected doc = inject(DOCUMENT);\n  protected destroy$ = inject(DestroyRef);\n\n  protected _editor?: monaco.editor.IStandaloneCodeEditor | monaco.editor.IStandaloneDiffEditor;\n  protected _resize$: Subscription | null = null;\n  protected _config: NuMonacoEditorConfig;\n  protected _disabled?: boolean;\n  protected readonly _disposables: monaco.IDisposable[] = [];\n\n  readonly height = input(`200px`);\n  readonly delay = input(0, { transform: numberAttribute });\n  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly options = input<monaco.editor.IStandaloneEditorConstructionOptions>();\n  readonly event = output<NuMonacoEditorEvent>();\n\n  constructor() {\n    this._config = { baseUrl: 'https://cdn.jsdelivr.net/npm/monaco-editor/min', autoFormatTime: 100, ...this.config };\n\n    effect(() => {\n      this.setDisabled(this.disabled());\n    });\n\n    effect(() => {\n      const options = this.options();\n      this.height();\n      this.updateOptions(options);\n    });\n\n    afterNextRender(() => {\n      timer(this.delay())\n        .pipe(takeUntilDestroyed(this.destroy$))\n        .subscribe(() => this.init());\n    });\n  }\n\n  protected abstract initMonaco(\n    _options: monaco.editor.IStandaloneEditorConstructionOptions | undefined,\n    _initEvent: boolean\n  ): void;\n\n  protected notifyEvent(type: NuMonacoEditorEventType, other?: NuMonacoEditorEvent): void {\n    this.event.emit({ type, editor: this._editor!, ...other });\n  }\n\n  protected setDisabled(v: boolean): this {\n    (this._editor as monaco.editor.IStandaloneCodeEditor)?.updateOptions({ readOnly: v });\n    return this;\n  }\n\n  private init(): void {\n    if (typeof window === 'undefined') return;\n\n    if (!monacoLoadPromise) {\n      monacoLoadPromise = new Promise<void>((resolve: () => void, reject: (err: string) => void) => {\n        const windowRef = window as any;\n        if (windowRef.monaco) {\n          resolve();\n          return;\n        }\n\n        let baseUrl = `${this._config.baseUrl}/vs`;\n        // fix: https://github.com/microsoft/monaco-editor/issues/4778\n        if (!/^https?:\\/\\//.test(baseUrl)) {\n          baseUrl = `${window.location.origin}/${baseUrl.startsWith('/') ? baseUrl.substring(1) : baseUrl}`;\n        }\n        const amdLoader = () => {\n          windowRef.require.config({\n            paths: {\n              vs: baseUrl\n            }\n          });\n          if (typeof this._config.monacoPreLoad === 'function') {\n            this._config.monacoPreLoad();\n          }\n          windowRef.require(\n            ['vs/editor/editor.main'],\n            () => {\n              if (typeof this._config.monacoLoad === 'function') {\n                this._config.monacoLoad(windowRef.monaco);\n              }\n              resolve();\n            },\n            () => {\n              reject(`Unable to load editor/editor.main module, please check your network environment.`);\n            }\n          );\n        };\n\n        if (!windowRef.require) {\n          const loaderScript = this.doc.createElement('script') as HTMLScriptElement;\n          loaderScript.type = 'text/javascript';\n          loaderScript.src = `${baseUrl}/loader.js`;\n          loaderScript.onload = amdLoader;\n          loaderScript.onerror = () => {\n            reject(`Unable to load ${loaderScript.src}, please check your network environment.`);\n          };\n          this.doc.getElementsByTagName('head')[0].appendChild(loaderScript);\n        } else {\n          amdLoader();\n        }\n      }).catch(error => {\n        monacoLoadPromise = null;\n        throw error;\n      });\n    }\n\n    monacoLoadPromise\n      .then(() => this.initMonaco(this.options(), true))\n      .catch(error => this.notifyEvent('load-error', { error }));\n  }\n\n  protected cleanResize(): this {\n    this._resize$?.unsubscribe();\n    return this;\n  }\n\n  protected registerResize(): this {\n    this.cleanResize();\n    this._resize$ = fromEvent(window, 'resize')\n      .pipe(debounceTime(100))\n      .subscribe(() => {\n        this._editor?.layout();\n        this.notifyEvent('resize');\n      });\n    return this;\n  }\n\n  protected disposeEditor(): this {\n    this._disposables.forEach(d => d.dispose());\n    this._disposables.length = 0;\n    this._editor?.dispose();\n    this._editor = undefined;\n    return this;\n  }\n\n  updateOptions(v: monaco.editor.IStandaloneEditorConstructionOptions | undefined): void {\n    if (!this._editor) return;\n\n    this.disposeEditor();\n    this.initMonaco(v, false);\n  }\n\n  ngOnDestroy(): void {\n    this.cleanResize();\n    this.disposeEditor();\n  }\n}\n","export class PlaceholderWidget implements monaco.editor.IContentWidget {\n  private readonly ID = 'editor.widget.placeholderHint';\n  private placeholder?: string;\n  private editor: monaco.editor.IStandaloneCodeEditor;\n  private node?: HTMLElement;\n\n  constructor(editor: monaco.editor.IStandaloneCodeEditor, placeholder?: string) {\n    this.placeholder = placeholder;\n    this.editor = editor;\n  }\n\n  update(text?: string | null | undefined) {\n    if (this.node == null) return;\n\n    this.node.innerHTML = text ?? this.placeholder ?? '';\n  }\n\n  getId(): string {\n    return this.ID;\n  }\n  getDomNode(): HTMLElement {\n    if (this.node == null) {\n      const node = (this.node = document.createElement('div'));\n      node.classList.add('monaco-editor-placeholder');\n      node.style.width = 'max-content';\n      node.style.color = 'gray';\n      node.innerHTML = this.placeholder!;\n      node.style.fontStyle = 'italic';\n      this.editor.applyFontInfo(node);\n    }\n    return this.node;\n  }\n  getPosition(): monaco.editor.IContentWidgetPosition | null {\n    return {\n      position: { lineNumber: 1, column: 1 },\n      preference: [monaco.editor.ContentWidgetPositionPreference.EXACT]\n    };\n  }\n\n  dispose() {\n    this.editor.removeContentWidget(this);\n  }\n}\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  forwardRef,\n  input,\n  numberAttribute,\n  untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { take, timer } from 'rxjs';\n\nimport { NuMonacoEditorBase } from './monaco-editor-base.component';\nimport { NuMonacoEditorModel } from './monaco-editor.types';\nimport { PlaceholderWidget } from './placeholder';\n\n@Component({\n  selector: 'nu-monaco-editor',\n  template: ``,\n  exportAs: 'nuMonacoEditor',\n  host: {\n    '[style.display]': `'block'`,\n    '[style.height]': 'height()'\n  },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NuMonacoEditorComponent),\n      multi: true\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMonacoEditorComponent extends NuMonacoEditorBase implements ControlValueAccessor {\n  private _value = '';\n  private _placeholderWidget?: PlaceholderWidget;\n  readonly placeholder = input<string>();\n  readonly model = input<NuMonacoEditorModel | null>();\n  readonly autoFormat = input(true, { transform: booleanAttribute });\n  readonly maxHeight = input(undefined, { transform: numberAttribute });\n  readonly minHeight = input(undefined, { transform: numberAttribute });\n\n  get editor(): monaco.editor.IStandaloneCodeEditor | null | undefined {\n    return this._editor as monaco.editor.IStandaloneCodeEditor;\n  }\n\n  constructor() {\n    super();\n    effect(() => {\n      const ph = this.placeholder();\n      this._placeholderWidget?.update(ph);\n    });\n    effect(() => {\n      const model = this.model();\n      if (model == null) return;\n      this.updateOptions(untracked(() => this.options()));\n    });\n  }\n\n  private togglePlaceholder() {\n    const text = this.placeholder();\n    if (typeof text !== 'string' || text.length <= 0 || this.editor == null) return;\n\n    let widget = this._placeholderWidget;\n    if (widget == null) {\n      this._placeholderWidget = widget = new PlaceholderWidget(this.editor, text);\n    }\n\n    if (this._value.length > 0) {\n      this.editor.removeContentWidget(widget);\n    } else {\n      this.editor.addContentWidget(widget);\n    }\n  }\n\n  private onChange = (_: string) => {};\n  private onTouched = () => {};\n\n  initMonaco(options: monaco.editor.IStandaloneEditorConstructionOptions, initEvent: boolean): void {\n    const hasModel = !!this.model();\n    options = { ...this.config?.defaultOptions, ...options };\n    const heightAuto = this.height() === 'auto';\n    if (heightAuto) {\n      options.scrollBeyondLastLine = false;\n      options.overviewRulerLanes = 0;\n    }\n\n    if (hasModel) {\n      const model = monaco.editor.getModel(this.model()!.uri! || '');\n      if (model) {\n        options.model = model;\n        options.model.setValue(this._value);\n      } else {\n        const { value, language, uri } = this.model()!;\n        options.model = monaco.editor.createModel(value || this._value, language, uri);\n      }\n      this._value = options.model.getValue();\n    }\n\n    if (this._disabled != null) options.readOnly = this._disabled;\n    const editor = (this._editor = monaco.editor.create(this.el.nativeElement, options));\n\n    if (!hasModel) {\n      editor.setValue(this._value);\n    }\n\n    this._disposables.push(\n      editor.onDidChangeModelContent(() => {\n        const value = editor.getValue();\n        this._value = value;\n\n        this.onChange(value);\n\n        this.togglePlaceholder();\n      })\n    );\n    this._disposables.push(editor.onDidBlurEditorWidget(() => this.onTouched()));\n\n    this.togglePlaceholder();\n    this.registerResize();\n    if (heightAuto) {\n      this._disposables.push(editor.onDidContentSizeChange(() => this.updateHeight()));\n      this.updateHeight();\n    }\n\n    const eventName = initEvent ? 'init' : 're-init';\n    if (this.autoFormat()) {\n      timer(this._config.autoFormatTime!)\n        .pipe(takeUntilDestroyed(this.destroy$), take(1))\n        .subscribe(() => {\n          this.format()?.then(() => this.notifyEvent(eventName));\n        });\n      return;\n    }\n    this.notifyEvent(eventName);\n  }\n\n  private updateHeight() {\n    const editor = this.editor;\n    if (editor == null) return;\n\n    const isFiniteNumber = (value?: number): value is number => value != null && Number.isFinite(value);\n    const contentHeight = editor.getContentHeight();\n    const minHeightLimit = this.minHeight();\n    const maxHeightInput = this.maxHeight();\n    const maxHeightLimit = isFiniteNumber(maxHeightInput) ? maxHeightInput : 1000;\n\n    let targetHeight = Math.min(contentHeight, maxHeightLimit);\n    if (isFiniteNumber(minHeightLimit)) {\n      targetHeight = Math.max(targetHeight, minHeightLimit);\n    }\n\n    editor.layout({ width: editor.getLayoutInfo().width, height: targetHeight });\n  }\n\n  format(): Promise<void> | undefined {\n    const action = this.editor?.getAction('editor.action.formatDocument');\n    if (action == null) return;\n    return action.run();\n  }\n\n  writeValue(value: string): void {\n    this._value = value || '';\n    (this._editor as monaco.editor.IStandaloneCodeEditor)?.setValue(this._value);\n    if (this.autoFormat()) {\n      this.format();\n    }\n  }\n\n  registerOnChange(fn: (_: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(v: boolean): void {\n    this.setDisabled(v);\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { NuMonacoEditorBase } from './monaco-editor-base.component';\nimport { NuMonacoEditorDiffModel } from './monaco-editor.types';\n\n@Component({\n  selector: 'nu-monaco-diff-editor',\n  template: ``,\n  exportAs: 'nuMonacoDiffEditor',\n  host: {\n    '[style.display]': `'block'`,\n    '[style.height]': 'height()'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMonacoEditorDiffComponent extends NuMonacoEditorBase {\n  readonly old = input<NuMonacoEditorDiffModel>();\n  readonly new = input<NuMonacoEditorDiffModel>();\n\n  get editor(): monaco.editor.IStandaloneDiffEditor | null | undefined {\n    return this._editor as monaco.editor.IStandaloneDiffEditor;\n  }\n\n  initMonaco(options: monaco.editor.IStandaloneEditorConstructionOptions, initEvent: boolean): void {\n    const oldModel = this.old();\n    const newModel = this.new();\n    if (!oldModel || !newModel) {\n      this.notifyEvent('error', { error: 'old or new not found for nu-monaco-diff-editor' });\n      return;\n    }\n\n    options = { ...this.config?.defaultOptions, ...options };\n    const theme = options.theme;\n    if (this._disabled != null) options.readOnly = this._disabled;\n    const editor = (this._editor = monaco.editor.createDiffEditor(this.el.nativeElement, options));\n    options.theme = theme;\n    editor.setModel({\n      original: monaco.editor.createModel(oldModel.code, oldModel.language || options.language),\n      modified: monaco.editor.createModel(newModel.code, newModel.language || options.language)\n    });\n\n    this._disposables.push(\n      editor.onDidUpdateDiff(() =>\n        this.notifyEvent('update-diff', { diffValue: editor.getModifiedEditor().getValue() })\n      )\n    );\n\n    this.registerResize();\n    if (initEvent) this.notifyEvent('init');\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}