{"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  standalone: true,\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),\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  standalone: true,\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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"}