{"version":3,"file":"ctrl-ngx-codemirror.mjs","sources":["../../src/lib/codemirror.component.ts","../../src/lib/codemirror.module.ts","../../src/lib/ctrl-ngx-codemirror.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Editor, EditorChange, EditorFromTextArea, ScrollInfo } from 'codemirror';\n\nfunction normalizeLineEndings(str: string): string {\n  if (!str) {\n    return str;\n  }\n  return str.replace(/\\r\\n|\\r/g, '\\n');\n}\n\ndeclare var require: any;\ndeclare var CodeMirror: any;\n\n@Component({\n  selector: 'ngx-codemirror',\n  template: `\n    <textarea\n      [name]=\"name\"\n      class=\"ngx-codemirror {{ className }}\"\n      [class.ngx-codemirror--focused]=\"isFocused\"\n      autocomplete=\"off\"\n      [autofocus]=\"autoFocus\"\n      #ref\n    >\n    </textarea>\n  `,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CodemirrorComponent),\n      multi: true,\n    },\n  ],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodemirrorComponent\n  implements AfterViewInit, OnDestroy, ControlValueAccessor, DoCheck\n{\n  /* class applied to the created textarea */\n  @Input() className = '';\n  /* name applied to the created textarea */\n  @Input() name = 'codemirror';\n  /* autofocus setting applied to the created textarea */\n  @Input() autoFocus = false;\n  /**\n   * set options for codemirror\n   * @link http://codemirror.net/doc/manual.html#config\n   */\n  @Input()\n  set options(value: { [key: string]: any }) {\n    this._options = value;\n    if (!this._differ && value) {\n      this._differ = this._differs.find(value).create();\n    }\n  }\n  /* preserve previous scroll position after updating value */\n  @Input() preserveScrollPosition = false;\n  /* called when the text cursor is moved */\n  @Output() cursorActivity = new EventEmitter<Editor>();\n  /* called when the editor is focused or loses focus */\n  @Output() focusChange = new EventEmitter<boolean>();\n  /* called when the editor is scrolled */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() scroll = new EventEmitter<ScrollInfo>();\n  /* called when file(s) are dropped */\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() drop = new EventEmitter<[Editor, DragEvent]>();\n  /* called when codeMirror instance is initiated on the component */\n  @Output() codeMirrorLoaded = new EventEmitter<CodemirrorComponent>();\n  @ViewChild('ref') ref!: ElementRef<HTMLTextAreaElement>;\n  value = '';\n  disabled = false;\n  isFocused = false;\n  codeMirror?: EditorFromTextArea;\n  /**\n   * either global variable or required library\n   */\n  private _codeMirror: any;\n\n  private _differ?: KeyValueDiffer<string, any>;\n  private _options: any;\n\n  constructor(private _differs: KeyValueDiffers, private _ngZone: NgZone) {}\n\n  get codeMirrorGlobal(): any {\n    if (this._codeMirror) {\n      return this._codeMirror;\n    }\n\n    // in order to allow for universal rendering, we import Codemirror runtime with `require` to prevent node errors\n    this._codeMirror = typeof CodeMirror !== 'undefined' ? CodeMirror : import('codemirror');\n    return this._codeMirror;\n  }\n\n  ngAfterViewInit() {\n    this._ngZone.runOutsideAngular(async () => {\n      const codeMirrorObj = await this.codeMirrorGlobal;\n      const codeMirror = codeMirrorObj?.default ? codeMirrorObj.default : codeMirrorObj;\n      this.codeMirror = codeMirror.fromTextArea(\n        this.ref.nativeElement,\n        this._options,\n      ) as EditorFromTextArea;\n      this.codeMirror.on('cursorActivity', cm => this._ngZone.run(() => this.cursorActive(cm)));\n      this.codeMirror.on('scroll', this.scrollChanged.bind(this));\n      this.codeMirror.on('blur', () => this._ngZone.run(() => this.focusChanged(false)));\n      this.codeMirror.on('focus', () => this._ngZone.run(() => this.focusChanged(true)));\n      this.codeMirror.on('change', (cm, change) =>\n        this._ngZone.run(() => this.codemirrorValueChanged(cm, change)),\n      );\n      this.codeMirror.on('drop', (cm, e) => {\n        this._ngZone.run(() => this.dropFiles(cm, e));\n      });\n      this.codeMirror.setValue(this.value);\n      this.codeMirrorLoaded.emit(this);\n    });\n  }\n  ngDoCheck() {\n    if (!this._differ) {\n      return;\n    }\n    // check options have not changed\n    const changes = this._differ.diff(this._options);\n    if (changes) {\n      changes.forEachChangedItem(option =>\n        this.setOptionIfChanged(option.key, option.currentValue),\n      );\n      changes.forEachAddedItem(option => this.setOptionIfChanged(option.key, option.currentValue));\n      changes.forEachRemovedItem(option =>\n        this.setOptionIfChanged(option.key, option.currentValue),\n      );\n    }\n  }\n  ngOnDestroy() {\n    // is there a lighter-weight way to remove the cm instance?\n    if (this.codeMirror) {\n      this.codeMirror.toTextArea();\n    }\n  }\n  codemirrorValueChanged(cm: Editor, change: EditorChange) {\n    const cmVal = cm.getValue();\n    if (this.value !== cmVal) {\n      this.value = cmVal;\n      this.onChange(this.value);\n    }\n  }\n  setOptionIfChanged(optionName: string, newValue: any) {\n    if (!this.codeMirror) {\n      return;\n    }\n\n    // cast to any to handle strictly typed option names\n    // could possibly import settings strings available in the future\n    this.codeMirror.setOption(optionName as any, newValue);\n  }\n  focusChanged(focused: boolean) {\n    this.onTouched();\n    this.isFocused = focused;\n    this.focusChange.emit(focused);\n  }\n  scrollChanged(cm: Editor) {\n    this.scroll.emit(cm.getScrollInfo());\n  }\n  cursorActive(cm: Editor) {\n    this.cursorActivity.emit(cm);\n  }\n  dropFiles(cm: Editor, e: DragEvent) {\n    this.drop.emit([cm, e]);\n  }\n  /** Implemented as part of ControlValueAccessor. */\n  writeValue(value: string) {\n    if (value === null || value === undefined) {\n      return;\n    }\n    if (!this.codeMirror) {\n      this.value = value;\n      return;\n    }\n    const cur = this.codeMirror.getValue();\n    if (value !== cur && normalizeLineEndings(cur) !== normalizeLineEndings(value)) {\n      this.value = value;\n      if (this.preserveScrollPosition) {\n        const prevScrollPosition = this.codeMirror.getScrollInfo();\n        this.codeMirror.setValue(this.value);\n        this.codeMirror.scrollTo(prevScrollPosition.left, prevScrollPosition.top);\n      } else {\n        this.codeMirror.setValue(this.value);\n      }\n    }\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnChange(fn: (value: string) => void) {\n    this.onChange = fn;\n  }\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnTouched(fn: () => void) {\n    this.onTouched = fn;\n  }\n  /** Implemented as part of ControlValueAccessor. */\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n    this.setOptionIfChanged('readOnly', this.disabled);\n  }\n  /** Implemented as part of ControlValueAccessor. */\n  private onChange = (_: any) => {};\n  /** Implemented as part of ControlValueAccessor. */\n  private onTouched = () => {};\n}\n","import { NgModule } from '@angular/core';\n\nimport { CodemirrorComponent } from './codemirror.component';\n\n@NgModule({\n  exports: [CodemirrorComponent],\n  declarations: [CodemirrorComponent],\n})\nexport class CodemirrorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}