{"version":3,"file":"acrodata-code-editor.mjs","sources":["../../../projects/code-editor/code-editor.ts","../../../projects/code-editor/diff-editor.ts","../../../projects/code-editor/code-editor-module.ts","../../../projects/code-editor/public-api.ts","../../../projects/code-editor/acrodata-code-editor.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n  booleanAttribute,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { indentWithTab } from '@codemirror/commands';\nimport { LanguageDescription, indentUnit } from '@codemirror/language';\nimport {\n  Annotation,\n  Compartment,\n  EditorState,\n  Extension,\n  StateEffect,\n  Transaction,\n} from '@codemirror/state';\nimport { oneDark } from '@codemirror/theme-one-dark';\nimport { EditorView, highlightWhitespace, keymap, placeholder } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\n\nexport type Theme = 'light' | 'dark' | Extension;\nexport type Setup = 'basic' | 'minimal' | null;\n\nexport const External = Annotation.define<boolean>();\n\n@Component({\n  selector: 'code-editor',\n  template: ``,\n  styles: `\n    .code-editor {\n      display: block;\n\n      .cm-editor {\n        height: 100%;\n      }\n    }\n  `,\n  host: {\n    class: 'code-editor',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CodeEditor),\n      multi: true,\n    },\n  ],\n})\nexport class CodeEditor implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\n  private _elementRef = inject<ElementRef<Element>>(ElementRef);\n\n  /**\n   * EditorView's [root](https://codemirror.net/docs/ref/#view.EditorView.root).\n   *\n   * Don't support change dynamically!\n   */\n  @Input() root?: Document | ShadowRoot;\n\n  /**\n   * Whether focus on the editor after init.\n   *\n   * Don't support change dynamically!\n   */\n  @Input({ transform: booleanAttribute }) autoFocus = false;\n\n  /** The editor's value. */\n  @Input() value = '';\n\n  /** Whether the editor is disabled.  */\n  @Input({ transform: booleanAttribute }) disabled = false;\n\n  /** Whether the editor is readonly. */\n  @Input({ transform: booleanAttribute }) readonly = false;\n\n  /** The editor's theme. */\n  @Input() theme: Theme = 'light';\n\n  /** The editor's placecholder. */\n  @Input() placeholder = '';\n\n  /** Whether indent with Tab key. */\n  @Input({ transform: booleanAttribute }) indentWithTab = false;\n\n  /** Should be a string consisting either entirely of the same whitespace character. */\n  @Input() indentUnit = '';\n\n  /** Whether the editor wraps lines. */\n  @Input({ transform: booleanAttribute }) lineWrapping = false;\n\n  /** Whether highlight the whitespace. */\n  @Input({ transform: booleanAttribute }) highlightWhitespace = false;\n\n  /**\n   * An array of language descriptions for known\n   * [language-data](https://github.com/codemirror/language-data/blob/main/src/language-data.ts).\n   *\n   * Don't support change dynamically!\n   */\n  @Input() languages: LanguageDescription[] = [];\n\n  /** The editor's language. You should set the `languages` prop at first. */\n  @Input() language = '';\n\n  /**\n   * The editor's built-in setup. The value can be set to\n   * [`basic`](https://codemirror.net/docs/ref/#codemirror.basicSetup),\n   * [`minimal`](https://codemirror.net/docs/ref/#codemirror.minimalSetup) or `null`.\n   */\n  @Input() setup: Setup = 'basic';\n\n  /**\n   * It will be appended to the root\n   * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n   */\n  @Input() extensions: Extension[] = [];\n\n  /** Event emitted when the editor's value changes. */\n  @Output() change = new EventEmitter<string>();\n\n  /** Event emitted when focus on the editor. */\n  @Output() focus = new EventEmitter<void>();\n\n  /** Event emitted when the editor has lost focus. */\n  @Output() blur = new EventEmitter<void>();\n\n  private _onChange: (value: string) => void = () => {};\n  private _onTouched: () => void = () => {};\n\n  /**\n   * The instance of [EditorView](https://codemirror.net/docs/ref/#view.EditorView).\n   */\n  view!: EditorView;\n\n  /**\n   * The new state created by [EditorState](https://codemirror.net/docs/ref/#state.EditorState)\n   */\n  state!: EditorState;\n\n  private _updateListener = EditorView.updateListener.of(vu => {\n    if (vu.docChanged && !vu.transactions.some(tr => tr.annotation(External))) {\n      const value = vu.state.doc.toString();\n      this._onChange(value);\n      this.change.emit(value);\n    }\n  });\n\n  // Extension compartments can be used to make a configuration dynamic.\n  // https://codemirror.net/docs/ref/#state.Compartment\n  private _editableConf = new Compartment();\n  private _readonlyConf = new Compartment();\n  private _themeConf = new Compartment();\n  private _placeholderConf = new Compartment();\n  private _indentWithTabConf = new Compartment();\n  private _indentUnitConf = new Compartment();\n  private _lineWrappingConf = new Compartment();\n  private _highlightWhitespaceConf = new Compartment();\n  private _languageConf = new Compartment();\n\n  private _getAllExtensions() {\n    return [\n      this._updateListener,\n\n      this._editableConf.of([]),\n      this._readonlyConf.of([]),\n      this._themeConf.of([]),\n      this._placeholderConf.of([]),\n      this._indentWithTabConf.of([]),\n      this._indentUnitConf.of([]),\n      this._lineWrappingConf.of([]),\n      this._highlightWhitespaceConf.of([]),\n      this._languageConf.of([]),\n\n      this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n\n      ...this.extensions,\n    ];\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.view) return;\n\n    if (changes['value']) {\n      this.setValue(this.value);\n    }\n    if (changes['disabled']) {\n      this.setEditable(!this.disabled);\n    }\n    if (changes['readonly']) {\n      this.setReadonly(this.readonly);\n    }\n    if (changes['theme']) {\n      this.setTheme(this.theme);\n    }\n    if (changes['placeholder']) {\n      this.setPlaceholder(this.placeholder);\n    }\n    if (changes['indentWithTab']) {\n      this.setIndentWithTab(this.indentWithTab);\n    }\n    if (changes['indentUnit']) {\n      this.setIndentUnit(this.indentUnit);\n    }\n    if (changes['lineWrapping']) {\n      this.setLineWrapping(this.lineWrapping);\n    }\n    if (changes['highlightWhitespace']) {\n      this.setHighlightWhitespace(this.highlightWhitespace);\n    }\n    if (changes['language']) {\n      this.setLanguage(this.language);\n    }\n    if (changes['setup'] || changes['extensions']) {\n      this.setExtensions(this._getAllExtensions());\n    }\n  }\n\n  ngOnInit(): void {\n    this.state = EditorState.create({\n      doc: this.value,\n      extensions: this._getAllExtensions(),\n    });\n    this.view = new EditorView({\n      root: this.root,\n      parent: this._elementRef.nativeElement,\n      state: this.state,\n    });\n\n    if (this.autoFocus) {\n      this.view.focus();\n    }\n\n    this.view.contentDOM.addEventListener('focus', () => {\n      this._onTouched();\n      this.focus.emit();\n    });\n\n    this.view.contentDOM.addEventListener('blur', () => {\n      this._onTouched();\n      this.blur.emit();\n    });\n\n    this.setEditable(!this.disabled);\n    this.setReadonly(this.readonly);\n    this.setTheme(this.theme);\n    this.setPlaceholder(this.placeholder);\n    this.setIndentWithTab(this.indentWithTab);\n    this.setIndentUnit(this.indentUnit);\n    this.setLineWrapping(this.lineWrapping);\n    this.setHighlightWhitespace(this.highlightWhitespace);\n    this.setLanguage(this.language);\n  }\n\n  ngOnDestroy(): void {\n    this.view.destroy();\n  }\n\n  writeValue(value: any): void {\n    if (this.view) {\n      this.setValue(value);\n    }\n  }\n\n  registerOnChange(fn: (value: string) => void) {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.setEditable(!isDisabled);\n  }\n\n  /** Sets editor's value. */\n  setValue(value: string) {\n    this.view.dispatch({\n      changes: { from: 0, to: this.view.state.doc.length, insert: value },\n      annotations: [Transaction.addToHistory.of(false), External.of(true)],\n    });\n  }\n\n  private _dispatchEffects(effects: StateEffect<any> | readonly StateEffect<any>[]) {\n    return this.view.dispatch({ effects });\n  }\n\n  /** Sets the root extensions of the editor. */\n  setExtensions(value: Extension[]) {\n    this._dispatchEffects(StateEffect.reconfigure.of(value));\n  }\n\n  /** Sets editor's editable state. */\n  setEditable(value: boolean) {\n    this._dispatchEffects(this._editableConf.reconfigure(EditorView.editable.of(value)));\n  }\n\n  /** Sets editor's readonly state. */\n  setReadonly(value: boolean) {\n    this._dispatchEffects(this._readonlyConf.reconfigure(EditorState.readOnly.of(value)));\n  }\n\n  /** Sets editor's theme. */\n  setTheme(value: Theme) {\n    this._dispatchEffects(\n      this._themeConf.reconfigure(value === 'light' ? [] : value === 'dark' ? oneDark : value)\n    );\n  }\n\n  /** Sets editor's placeholder. */\n  setPlaceholder(value: string) {\n    this._dispatchEffects(this._placeholderConf.reconfigure(value ? placeholder(value) : []));\n  }\n\n  /** Sets editor' indentWithTab. */\n  setIndentWithTab(value: boolean) {\n    this._dispatchEffects(\n      this._indentWithTabConf.reconfigure(value ? keymap.of([indentWithTab]) : [])\n    );\n  }\n\n  /** Sets editor's indentUnit. */\n  setIndentUnit(value: string) {\n    this._dispatchEffects(this._indentUnitConf.reconfigure(value ? indentUnit.of(value) : []));\n  }\n\n  /** Sets editor's lineWrapping. */\n  setLineWrapping(value: boolean) {\n    this._dispatchEffects(this._lineWrappingConf.reconfigure(value ? EditorView.lineWrapping : []));\n  }\n\n  /** Sets editor's highlightWhitespace. */\n  setHighlightWhitespace(value: boolean) {\n    this._dispatchEffects(\n      this._highlightWhitespaceConf.reconfigure(value ? highlightWhitespace() : [])\n    );\n  }\n\n  /** Sets editor's language dynamically. */\n  setLanguage(lang: string) {\n    if (!lang || lang == 'plaintext') {\n      this._dispatchEffects(this._languageConf.reconfigure([]));\n      return;\n    }\n    if (this.languages.length === 0) {\n      if (this.view) {\n        console.error('No supported languages. Please set the `languages` prop at first.');\n      }\n      return;\n    }\n    const langDesc = this._findLanguage(lang);\n    langDesc?.load().then(lang => {\n      this._dispatchEffects(this._languageConf.reconfigure([lang]));\n    });\n  }\n\n  /** Find the language's extension by its name. Case insensitive. */\n  private _findLanguage(name: string) {\n    for (const lang of this.languages) {\n      for (const alias of [lang.name, ...lang.alias]) {\n        if (name.toLowerCase() === alias.toLowerCase()) {\n          return lang;\n        }\n      }\n    }\n    console.error('Language not found:', name);\n    console.info('Supported language names:', this.languages.map(lang => lang.name).join(', '));\n    return null;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n  booleanAttribute,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DiffConfig, MergeView } from '@codemirror/merge';\nimport { Compartment, Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\n\nimport { External, Setup } from './code-editor';\n\nexport type Orientation = 'a-b' | 'b-a';\nexport type RevertControls = 'a-to-b' | 'b-to-a';\nexport type RenderRevertControl = () => HTMLElement;\n\nexport interface DiffEditorModel {\n  original: string;\n  modified: string;\n}\n\n@Component({\n  selector: 'diff-editor',\n  template: ``,\n  styles: `\n    .diff-editor {\n      display: block;\n\n      .cm-mergeView,\n      .cm-mergeViewEditors {\n        height: 100%;\n      }\n\n      .cm-mergeView .cm-editor,\n      .cm-mergeView .cm-scroller {\n        height: 100% !important;\n      }\n    }\n  `,\n  host: {\n    class: 'diff-editor',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DiffEditor),\n      multi: true,\n    },\n  ],\n})\nexport class DiffEditor implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\n  private _elementRef = inject<ElementRef<Element>>(ElementRef);\n\n  /**\n   * The editor's built-in setup. The value can be set to\n   * [`basic`](https://codemirror.net/docs/ref/#codemirror.basicSetup),\n   * [`minimal`](https://codemirror.net/docs/ref/#codemirror.minimalSetup) or `null`.\n   *\n   * Don't support change dynamically!\n   */\n  @Input() setup: Setup = 'basic';\n\n  /** The diff-editor's original value. */\n  @Input() originalValue: string = '';\n\n  /**\n   * The MergeView original config's\n   * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n   *\n   * Don't support change dynamically!\n   */\n  @Input() originalExtensions: Extension[] = [];\n\n  /** The diff-editor's modified value. */\n  @Input() modifiedValue: string = '';\n\n  /**\n   * The MergeView modified config's\n   * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n   *\n   * Don't support change dynamically!\n   */\n  @Input() modifiedExtensions: Extension[] = [];\n\n  /** Controls whether editor A or editor B is shown first. Defaults to `\"a-b\"`. */\n  @Input() orientation?: Orientation;\n\n  /** Controls whether revert controls are shown between changed chunks. */\n  @Input() revertControls?: RevertControls;\n\n  /** When given, this function is called to render the button to revert a chunk. */\n  @Input() renderRevertControl?: RenderRevertControl;\n\n  /**\n   * By default, the merge view will mark inserted and deleted text\n   * in changed chunks. Set this to false to turn that off.\n   */\n  @Input({ transform: booleanAttribute }) highlightChanges = true;\n\n  /** Controls whether a gutter marker is shown next to changed lines. */\n  @Input({ transform: booleanAttribute }) gutter = true;\n\n  /** Whether the diff-editor is disabled. */\n  @Input({ transform: booleanAttribute }) disabled = false;\n\n  /**\n   * When given, long stretches of unchanged text are collapsed.\n   * `margin` gives the number of lines to leave visible after/before\n   * a change (default is 3), and `minSize` gives the minimum amount\n   * of collapsible lines that need to be present (defaults to 4).\n   */\n  @Input() collapseUnchanged?: { margin?: number; minSize?: number };\n\n  /** Pass options to the diff algorithm. */\n  @Input() diffConfig?: DiffConfig;\n\n  /** Event emitted when the editor's original value changes. */\n  @Output() originalValueChange = new EventEmitter<string>();\n\n  /** Event emitted when focus on the original editor. */\n  @Output() originalFocus = new EventEmitter<void>();\n\n  /** Event emitted when blur on the original editor. */\n  @Output() originalBlur = new EventEmitter<void>();\n\n  /** Event emitted when the editor's modified value changes. */\n  @Output() modifiedValueChange = new EventEmitter<string>();\n\n  /** Event emitted when focus on the modified editor. */\n  @Output() modifiedFocus = new EventEmitter<void>();\n\n  /** Event emitted when blur on the modified editor. */\n  @Output() modifiedBlur = new EventEmitter<void>();\n\n  private _onChange: (value: DiffEditorModel) => void = () => {};\n  private _onTouched: () => void = () => {};\n\n  /** The merge view instance. */\n  mergeView?: MergeView;\n\n  private _updateListener = (editor: 'a' | 'b') => {\n    return EditorView.updateListener.of(vu => {\n      if (vu.docChanged && !vu.transactions.some(tr => tr.annotation(External))) {\n        const value = vu.state.doc.toString();\n        if (editor == 'a') {\n          this._onChange({ original: value, modified: this.modifiedValue });\n          this.originalValue = value;\n          this.originalValueChange.emit(value);\n        } else if (editor == 'b') {\n          this._onChange({ original: this.originalValue, modified: value });\n          this.modifiedValue = value;\n          this.modifiedValueChange.emit(value);\n        }\n      }\n    });\n  };\n\n  private _editableConf = new Compartment();\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['originalValue']) {\n      this.setValue('a', this.originalValue);\n    }\n    if (changes['modifiedValue']) {\n      this.setValue('b', this.modifiedValue);\n    }\n    if (changes['orientation']) {\n      this.mergeView?.reconfigure({ orientation: this.orientation });\n    }\n    if (changes['revertControls']) {\n      this.mergeView?.reconfigure({ revertControls: this.revertControls });\n    }\n    if (changes['renderRevertControl']) {\n      this.mergeView?.reconfigure({ renderRevertControl: this.renderRevertControl });\n    }\n    if (changes['highlightChanges']) {\n      this.mergeView?.reconfigure({ highlightChanges: this.highlightChanges });\n    }\n    if (changes['gutter']) {\n      this.mergeView?.reconfigure({ gutter: this.gutter });\n    }\n    if (changes['collapseUnchanged']) {\n      this.mergeView?.reconfigure({ collapseUnchanged: this.collapseUnchanged });\n    }\n    if (changes['diffConfig']) {\n      this.mergeView?.reconfigure({ diffConfig: this.diffConfig });\n    }\n    if (changes['disabled']) {\n      this.setEditable('a', !this.disabled);\n      this.setEditable('b', !this.disabled);\n    }\n  }\n\n  ngOnInit(): void {\n    this.mergeView = new MergeView({\n      parent: this._elementRef.nativeElement,\n      a: {\n        doc: this.originalValue,\n        extensions: [\n          this._updateListener('a'),\n          this._editableConf.of([]),\n          this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n          ...this.originalExtensions,\n        ],\n      },\n      b: {\n        doc: this.modifiedValue,\n        extensions: [\n          this._updateListener('b'),\n          this._editableConf.of([]),\n          this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n          ...this.modifiedExtensions,\n        ],\n      },\n      orientation: this.orientation,\n      revertControls: this.revertControls,\n      renderRevertControl: this.renderRevertControl,\n      highlightChanges: this.highlightChanges,\n      gutter: this.gutter,\n      collapseUnchanged: this.collapseUnchanged,\n      diffConfig: this.diffConfig,\n    });\n\n    this.mergeView?.a.contentDOM.addEventListener('focus', () => {\n      this._onTouched();\n      this.originalFocus.emit();\n    });\n\n    this.mergeView?.a.contentDOM.addEventListener('blur', () => {\n      this._onTouched();\n      this.originalBlur.emit();\n    });\n\n    this.mergeView?.b.contentDOM.addEventListener('focus', () => {\n      this._onTouched();\n      this.modifiedFocus.emit();\n    });\n\n    this.mergeView?.b.contentDOM.addEventListener('blur', () => {\n      this._onTouched();\n      this.modifiedBlur.emit();\n    });\n\n    this.setEditable('a', !this.disabled);\n    this.setEditable('b', !this.disabled);\n  }\n\n  ngOnDestroy(): void {\n    this.mergeView?.destroy();\n  }\n\n  writeValue(value: DiffEditorModel): void {\n    if (this.mergeView && value != null && typeof value === 'object') {\n      this.originalValue = value.original;\n      this.modifiedValue = value.modified;\n      this.setValue('a', value.original);\n      this.setValue('b', value.modified);\n    }\n  }\n\n  registerOnChange(fn: (value: DiffEditorModel) => void) {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.setEditable('a', !isDisabled);\n    this.setEditable('b', !isDisabled);\n  }\n\n  /** Sets diff-editor's value. */\n  setValue(editor: 'a' | 'b', value: string) {\n    this.mergeView?.[editor].dispatch({\n      changes: { from: 0, to: this.mergeView[editor].state.doc.length, insert: value },\n    });\n  }\n\n  /** Sets diff-editor's editable state. */\n  setEditable(editor: 'a' | 'b', value: boolean) {\n    this.mergeView?.[editor].dispatch({\n      effects: this._editableConf.reconfigure(EditorView.editable.of(value)),\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CodeEditor } from './code-editor';\nimport { DiffEditor } from './diff-editor';\n\n@NgModule({\n  imports: [CodeEditor, DiffEditor],\n  exports: [CodeEditor, DiffEditor],\n})\nexport class CodeEditorModule {}\n","/*\n * Public API Surface of code-editor\n */\n\nexport * from './code-editor-module';\nexport * from './code-editor';\nexport * from './diff-editor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}