{"version":3,"file":"ngx-summernote.mjs","sources":["../../../projects/ngx-summernote/src/lib/code-block.button.ts","../../../projects/ngx-summernote/src/lib/ngx-summernote.directive.ts","../../../projects/ngx-summernote/src/lib/ngx-summernote-view.directive.ts","../../../projects/ngx-summernote/src/lib/ngx-summernote.module.ts","../../../projects/ngx-summernote/src/public_api.ts","../../../projects/ngx-summernote/src/ngx-summernote.ts"],"sourcesContent":["declare var $;\n\nconst codeBlockButtonStyle = `font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;\nfont-size: 12px;\npadding: 14px 12px;\nmargin-bottom: 12px;\nline-height: 1.42857;\nword-break: break-all;\noverflow-wrap: break-word;\nbackground-color: rgb(250, 251, 253);\nborder: 1px solid rgb(234, 236, 240);\nborder-radius: 4px; color: #60a0b0;\nwhite-space: pre-wrap;`;\n\nexport const codeBlockButton = function(context) {\n  const ui = $.summernote.ui;\n\n  // create button\n  const button = ui.button({\n    contents: '<i class=\"note-icon-frame\" style=\"margin-right: 4px\"></i> Code block',\n    tooltip: 'Add code block',\n    container: '.note-editor',\n    className: 'note-btn',\n    click: function() {\n      let selectedText = null;\n      // The below code will copy the selected block and add it into our code block\n      if (window.getSelection) {\n        selectedText = window\n          .getSelection()\n          .toString()\n          .replace(/^\\s+|\\s+$/g, '');\n      }\n      const codeText = selectedText ? selectedText : `Place your code here.`;\n      const codeBlock = `<pre class=\"code-block\" style=\"${codeBlockButtonStyle}\">${codeText}</pre>`;\n      context.invoke('editor.pasteHTML', codeBlock);\n    }\n  });\n\n  return button.render(); // return button as jquery object\n};\n","import { HttpClient } from '@angular/common/http';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { SummernoteOptions } from './summernote-options';\nimport { codeBlockButton } from './code-block.button';\n\ndeclare var $;\n\n@Directive({\n  // tslint:disable-next-line:directive-selector\n  selector: '[ngxSummernote]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NgxSummernoteDirective),\n      multi: true\n    }\n  ]\n})\nexport class NgxSummernoteDirective\n  implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {\n  @Input() set ngxSummernote(options: SummernoteOptions) {\n    if (options) {\n      if (!options.buttons) {\n        options.buttons = {};\n      }\n\n      options.callbacks = {\n        ...options.callbacks,\n        onImageUpload: files => this.uploadImage(files),\n        onMediaDelete: files =>\n          this.mediaDelete.emit({ url: $(files[0]).attr('src') })\n      };\n\n      // add custom buttons\n      options.buttons.codeBlock = codeBlockButton;\n\n      Object.assign(this._options, options);\n    }\n  }\n\n  // summernoteModel directive as input: store initial editor content\n  @Input() set summernoteModel(content: any) {\n    this.updateEditor(content);\n  }\n\n  // summernoteModel directive as output: update model if editor contentChanged\n  @Output() summernoteModelChange: EventEmitter<any> = new EventEmitter<any>();\n  @Output() imageUpload: EventEmitter<any> = new EventEmitter<any>();\n  @Output() mediaDelete: EventEmitter<any> = new EventEmitter<any>();\n\n  // // summernoteInit directive as output: send manual editor initialization\n  // @Output() summernoteInit: EventEmitter<Object> = new EventEmitter<Object>();\n\n  @Output() blur: EventEmitter<any> = new EventEmitter<any>();\n\n  @Input() ngxSummernoteDisabled: boolean;\n\n  private _options: SummernoteOptions = {};\n\n  private SPECIAL_TAGS: string[] = ['img', 'button', 'input', 'a'];\n  private INNER_HTML_ATTR = 'innerHTML';\n  private _hasSpecialTag: boolean;\n  private _$element: any; // jquery wrapped element\n  private _editor: any; // editor element\n  private _model: string;\n  private _oldModel: string = null;\n  private _editorInitialized: boolean;\n\n  private uploadSub: Subscription;\n\n  constructor(\n    private el: ElementRef,\n    private zone: NgZone,\n    private http: HttpClient\n  ) {\n    const element: any = el.nativeElement;\n\n    // check if the element is a special tag\n    if (this.SPECIAL_TAGS.indexOf(element.tagName.toLowerCase()) !== -1) {\n      this._hasSpecialTag = true;\n    }\n\n    // jquery wrap and store element\n\n    // this._$element = <any>$(element);\n\n    this.zone = zone;\n  }\n\n  ngOnInit() {\n    this.createEditor();\n  }\n\n  ngOnChanges(changes) {\n    if (this._editorInitialized && changes) {\n      if (\n        changes.ngxSummernoteDisabled &&\n        !changes.ngxSummernoteDisabled.firstChange &&\n        changes.ngxSummernoteDisabled.currentValue !==\n        changes.ngxSummernoteDisabled.previousValue\n      ) {\n        if (changes.ngxSummernoteDisabled.currentValue) {\n          this._$element.summernote('disable');\n        } else {\n          this._$element.summernote('enable');\n        }\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroyEditor();\n    if (this.uploadSub) {\n      this.uploadSub.unsubscribe();\n    }\n  }\n\n  // Begin ControlValueAccesor methods.\n  onChange = (_: any) => { };\n  onTouched = () => { };\n\n  // Form model content changed.\n  writeValue(content: any): void {\n    this.updateEditor(content);\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n    this.onChange = fn;\n  }\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  // Update editor with model contents.\n  private updateEditor(content: any) {\n    if (JSON.stringify(this._oldModel) === JSON.stringify(content)) {\n      return;\n    }\n\n    this._oldModel = content;\n    // this._$element.html(content);\n\n    if (this._editorInitialized) {\n      this._$element ? this._$element.summernote('code', content) : undefined;\n    } else {\n      this._$element ? this._$element.html(content) : undefined;\n    }\n  }\n\n  // update model if editor contentChanged\n  private updateModel(content?: any) {\n    // console.log('update model', content)\n    this.zone.run(() => {\n      let modelContent: any = null;\n\n      if (this._hasSpecialTag) {\n        const attributeNodes = this._$element[0].attributes;\n        const attrs = {};\n\n        for (let i = 0; i < attributeNodes.length; i++) {\n          const attrName = attributeNodes[i].name;\n          if (\n            this._options.angularIgnoreAttrs &&\n            this._options.angularIgnoreAttrs.indexOf(attrName) !== -1\n          ) {\n            continue;\n          }\n          attrs[attrName] = attributeNodes[i].value;\n        }\n\n        if (this._$element[0].innerHTML) {\n          attrs[this.INNER_HTML_ATTR] = this._$element[0].innerHTML;\n        }\n\n        modelContent = attrs;\n      } else {\n        const returnedHtml: any = content || '';\n        if (typeof returnedHtml === 'string') {\n          modelContent = returnedHtml;\n        }\n      }\n      if (this._oldModel !== modelContent) {\n        this._oldModel = modelContent;\n        // Update summernoteModel\n        this.summernoteModelChange.emit(modelContent);\n        // Update form model.\n        this.onChange(content);\n      }\n    });\n  }\n\n  private initListeners() {\n    const self = this;\n\n    if (!this._$element) {\n      return;\n    }\n\n    this._$element.on('summernote.init', function () {\n      setTimeout(function () {\n        self.updateModel();\n      }, 0);\n    });\n\n    this._$element.on('summernote.change', function (\n      event,\n      contents,\n      $editable\n    ) {\n      setTimeout(function () {\n        self.updateModel(contents);\n      }, 0);\n    });\n\n    this._$element.on('summernote.blur', function () {\n      setTimeout(function () {\n        self.onTouched();\n        self.blur.emit();\n      }, 0);\n    });\n\n    if (this._options.immediateAngularModelUpdate) {\n      this._editor.on('keyup', function () {\n        setTimeout(function () {\n          self.updateModel();\n        }, 0);\n      });\n    }\n  }\n\n  private createEditor() {\n    if (this._editorInitialized) {\n      return;\n    }\n\n    this.setContent(true);\n\n    const wait = 50;\n    // this.initListeners(); // issue #31\n    try {\n      this._$element = <any>$(this.el.nativeElement);\n    } catch (error) {\n      console.log(`JQuery seems not te loaded yet! Wait ${wait}ms and try again`);\n    }\n\n    if (!this._$element) {\n      setTimeout(() => {\n        this.createEditor();\n      }, wait);\n    } else {\n      // init editor\n      this.zone.runOutsideAngular(() => {\n        this._editor = this._$element\n          .summernote(this._options)\n          .data('summernote').$note;\n\n        this.initListeners(); // issue #31\n\n        if (this.ngxSummernoteDisabled) {\n          this._$element.summernote('disable');\n        }\n      });\n      this._editorInitialized = true;\n    }\n  }\n\n  private setHtml() {\n    this._$element.summernote('code', this._model || '', true);\n  }\n\n  private setContent(firstTime = false) {\n    // console.log('set content', firstTime, this._oldModel, this._model)\n    const self = this;\n    // Set initial content\n    if (this._model || this._model === '') {\n      this._oldModel = this._model;\n      if (this._hasSpecialTag) {\n        const tags: Object = this._model;\n        // add tags on element\n        if (tags) {\n          for (const attr in tags) {\n            if (tags.hasOwnProperty(attr) && attr !== this.INNER_HTML_ATTR) {\n              this._$element.attr(attr, tags[attr]);\n            }\n          }\n\n          if (tags.hasOwnProperty(this.INNER_HTML_ATTR)) {\n            this._$element[0].innerHTML = tags[this.INNER_HTML_ATTR];\n          }\n        }\n      } else {\n        self.setHtml();\n      }\n    }\n  }\n\n  private destroyEditor() {\n    if (this._editorInitialized) {\n      this._editor.off('keyup');\n      this._$element.summernote('destroy'); // TODO not sure it works now...\n      this._editorInitialized = false;\n    }\n  }\n\n  // private getEditor() {\n  //   if (this._$element) {\n  //     return this._$element.summernote.bind(this._$element);\n  //   }\n\n  //   return null;\n  // }\n\n  private async uploadImage(files) {\n    if (this._options.uploadImagePath) {\n      this.imageUpload.emit({ uploading: true });\n\n      const requests = [];\n      for (const file of files) {\n        const data = new FormData();\n        data.append('image', file);\n        const obs = this.http\n          .post(this._options.uploadImagePath, data, this._options.uploadImageRequestOptions)\n          .pipe(\n            map(\n              (response: { path: string }) =>\n                response && typeof response.path === 'string' && response.path\n            )\n          );\n        requests.push(obs);\n      }\n\n      this.uploadSub = combineLatest(requests).subscribe(\n        (remotePaths: string[]) => {\n          for (const remotePath of remotePaths) {\n            this._$element.summernote('insertImage', remotePath);\n          }\n          this.imageUpload.emit({ uploading: false });\n        },\n        err => this.insertFromDataURL(files)\n      );\n    } else {\n      this.insertFromDataURL(files);\n    }\n  }\n\n  insertFromDataURL(files) {\n    for (const file of files) {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => {\n        this._$element.summernote('insertImage', reader.result);\n        this.imageUpload.emit({ uploading: false, encoding: 'base64' });\n      };\n      reader.onerror = error => console.error(error);\n    }\n  }\n}\n","import {\n    Directive, Input, ElementRef, Renderer2, AfterViewInit\n} from '@angular/core';\n\ndeclare var $;\n\n@Directive({\n    // tslint:disable-next-line:directive-selector\n    selector: '[ngxSummernoteView]'\n})\nexport class NgxSummernoteViewDirective implements AfterViewInit {\n    @Input() set ngxSummernoteView(content: string) {\n        this._element.innerHTML = content || '';\n    }\n\n    private _element: any;\n\n    constructor(\n        private renderer2: Renderer2,\n        element: ElementRef\n    ) {\n        this._element = element.nativeElement;\n    }\n\n    ngAfterViewInit() {\n        this.renderer2.addClass(this._element, 'ngx-summernote-view');\n    }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NgxSummernoteDirective } from './ngx-summernote.directive';\nimport { NgxSummernoteViewDirective } from './ngx-summernote-view.directive';\n\n@NgModule({\n  declarations: [\n    NgxSummernoteDirective,\n    NgxSummernoteViewDirective\n  ],\n  exports: [\n    NgxSummernoteDirective,\n    NgxSummernoteViewDirective\n  ]\n})\nexport class NgxSummernoteModule {\n  public static forRoot(): ModuleWithProviders<NgxSummernoteModule> {\n    return {ngModule: NgxSummernoteModule,  providers: []};\n  }\n}\n","/*\n * Public API Surface of ngx-summernote\n */\n\nexport * from './lib/ngx-summernote.directive';\nexport * from './lib/ngx-summernote-view.directive';\nexport * from './lib/ngx-summernote.module';\nexport * from './lib/code-block.button';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}