{"version":3,"file":"ngx-markdown-editor.mjs","sources":["../../src/lib/md-editor.types.ts","../../src/lib/resize-sensor/resize-sensor.component.ts","../../src/lib/resize-sensor/resize-sensor.html","../../src/lib/md-editor.component.ts","../../src/lib/md-editor.html","../../src/public_api.ts","../../src/ngx-markdown-editor.ts"],"sourcesContent":["export interface MdEditorOption {\r\n  showPreviewPanel?: boolean           // Show preview panel, Default is `true`\r\n  showBorder?: boolean                 // Show editor component's border\r\n  hideIcons?: Array<string>            // ['Bold', 'Italic', 'Heading', 'Reference', 'Link', 'Image', 'Ul', 'Ol', 'Code', 'TogglePreview', 'FullScreen'], Default is empty\r\n  usingFontAwesome5?: boolean          // Using font awesome with version 5, Default is false\r\n  fontAwesomeVersion?: '4' | '5' | '6' // FontAwesome Version, 4/5/6, default is 4\r\n  scrollPastEnd?: number               // The option for ace editor\r\n  enablePreviewContentClick?: boolean  // Allow user fire the click event on the preview panel, like href etc.\r\n  resizable?: boolean                  // Allow resize the editor\r\n  markedjsOpt?: MarkedjsOption         // The markedjs option, see https://marked.js.org/#/USING_ADVANCED.md#options\r\n  customRender?: CustomRender          // Custom markedjs render\r\n  customIcons?: CustomIconOptions      // Custom icons for buttons\r\n  locales?: MdEditorLocaleOptions      // Localization\r\n  placeholder?: string                 // Placeholder\r\n}\r\n\r\nexport interface CustomIconOptions {\r\n  Bold?: CustomIcon\r\n  Italic?: CustomIcon\r\n  Heading?: CustomIcon\r\n  Reference?: CustomIcon\r\n  Link?: CustomIcon\r\n  Image?: CustomIcon\r\n  UnorderedList?: CustomIcon\r\n  OrderedList?: CustomIcon\r\n  CodeBlock?: CustomIcon\r\n  ShowPreview?: CustomIcon\r\n  HidePreview?: CustomIcon\r\n  FullScreen?: CustomIcon\r\n  CheckBox_UnChecked?: CustomIcon\r\n  CheckBox_Checked?: CustomIcon\r\n}\r\n\r\nexport interface MdButtonLocale {\r\n  title: string;\r\n}\r\n\r\nexport interface MdButtonInserterLocale extends MdButtonLocale {\r\n  initText?: string;\r\n}\r\n\r\nexport interface MdEditorLocale {\r\n  Buttons?: {\r\n    Bold?: MdButtonInserterLocale\r\n    Italic?: MdButtonInserterLocale\r\n    Heading?: MdButtonInserterLocale\r\n    Reference?: MdButtonInserterLocale\r\n    Link?: MdButtonLocale\r\n    Image?: MdButtonLocale\r\n    UnorderedList?: MdButtonInserterLocale\r\n    OrderedList?: MdButtonInserterLocale\r\n    CodeBlock?: MdButtonInserterLocale\r\n    ShowPreview?: MdButtonLocale\r\n    HidePreview?: MdButtonLocale\r\n    Fullscreen?: MdButtonLocale\r\n  },\r\n  Upload?: {\r\n    Drag?: string\r\n    Uploading?: string\r\n  }\r\n}\r\n\r\nexport interface MdEditorLocaleOptions {\r\n  [key: string]: MdEditorLocale\r\n}\r\n\r\nexport const DEFAULT_LOCALES: MdEditorLocaleOptions = {\r\n  en: {\r\n    Buttons: {\r\n      Bold: { title: 'Bold', initText: 'Bold Text' },\r\n      Italic: { title: 'Italic', initText: 'Italic Text' },\r\n      Heading: { title: 'Heading' },\r\n      Reference: { title: 'Reference' },\r\n      Link: { title: 'Link' },\r\n      Image: { title: 'Image' },\r\n      UnorderedList: { title: 'Unordered List', initText: '' },\r\n      OrderedList: { title: 'Ordered List', initText: '' },\r\n      CodeBlock: { title: 'Code Block', initText: 'Source Code' },\r\n      ShowPreview: { title: 'Show Preview' },\r\n      HidePreview: { title: 'Hide Preview' },\r\n      Fullscreen: { title: 'Fullscreen' }\r\n    },\r\n    Upload: {\r\n      Drag: 'Drag it here',\r\n      Uploading: 'Uploading'\r\n    }\r\n  }\r\n}\r\n\r\nexport interface UploadResult {\r\n  isImg: boolean\r\n  name: string\r\n  url: string\r\n}\r\n\r\nexport interface MarkedjsOption {\r\n  baseUrl?: string             // Default null\r\n  breaks?: boolean             // Default false\r\n  gfm?: boolean                // Default true\r\n  headerIds?: boolean          // Default true\r\n  headerPrefix?: string        // Default ''\r\n  langPrefix?: string          // Default 'language-'\r\n  mangle?: boolean             // Default true\r\n  pedantic?: boolean           // Default false\r\n  sanitize?: boolean           // Default false\r\n  sanitizer?: Function         // Default null\r\n  silent?: boolean             // Default false\r\n  smartLists?: boolean         // Default false\r\n  smartypants?: boolean        // Default false\r\n  tables?: boolean             // Default true\r\n  xhtml?: boolean              // Default false\r\n}\r\n\r\nexport interface CustomRender {\r\n  image?: Function     // Image Render\r\n  table?: Function     // Table Render\r\n  code?: Function      // Code Render\r\n  listitem?: Function  // Listitem Render\r\n}\r\n\r\nexport interface CustomIcon {\r\n  fontClass: string\r\n}\r\n\r\nexport interface DefaultIconOptions {\r\n  fontAwesome4: CustomIconOptions\r\n  fontAwesome5: CustomIconOptions\r\n  fontAwesome6: CustomIconOptions\r\n}\r\n\r\nexport const DEFAULT_ICONS: DefaultIconOptions = {\r\n  fontAwesome4: {\r\n    Bold: { fontClass: 'fa fa-bold' },\r\n    Italic: { fontClass: 'fa fa-italic' },\r\n    Heading: { fontClass: 'fa fa-header' },\r\n    Reference: { fontClass: 'fa fa-quote-left' },\r\n    Link: { fontClass: 'fa fa-link' },\r\n    Image: { fontClass: 'fa fa-image' },\r\n    UnorderedList: { fontClass: 'fa fa-list-ul' },\r\n    OrderedList: { fontClass: 'fa fa-list-ol' },\r\n    CodeBlock: { fontClass: 'fa fa-file-code-o' },\r\n    ShowPreview: { fontClass: 'fa fa-eye' },\r\n    HidePreview: { fontClass: 'fa fa-eye-slash' },\r\n    FullScreen: { fontClass: 'fa fa-arrows-alt' },\r\n    CheckBox_UnChecked: { fontClass: 'fa fa-square-o' },\r\n    CheckBox_Checked: { fontClass: 'fa fa-check-square' },\r\n  },\r\n  fontAwesome5: {\r\n    Bold: { fontClass: 'fas fa-bold' },\r\n    Italic: { fontClass: 'fas fa-italic' },\r\n    Heading: { fontClass: 'fas fa-heading' },\r\n    Reference: { fontClass: 'fas fa-quote-left' },\r\n    Link: { fontClass: 'fas fa-link' },\r\n    Image: { fontClass: 'fas fa-image' },\r\n    UnorderedList: { fontClass: 'fas fa-list-ul' },\r\n    OrderedList: { fontClass: 'fas fa-list-ol' },\r\n    CodeBlock: { fontClass: 'fas fa-file-code' },\r\n    ShowPreview: { fontClass: 'fas fa-eye' },\r\n    HidePreview: { fontClass: 'fas fa-eye-slash' },\r\n    FullScreen: { fontClass: 'fas fa-compress' },\r\n    CheckBox_UnChecked: { fontClass: 'far fa-square' },\r\n    CheckBox_Checked: { fontClass: 'fas fa-check-square' }\r\n  },\r\n  fontAwesome6: {\r\n    Bold: { fontClass: 'fa-solid fa-bold' },\r\n    Italic: { fontClass: 'fa-solid fa-italic' },\r\n    Heading: { fontClass: 'fa-solid fa-heading' },\r\n    Reference: { fontClass: 'fa-solid fa-quote-left' },\r\n    Link: { fontClass: 'fa-solid fa-link' },\r\n    Image: { fontClass: 'fa-solid fa-image' },\r\n    UnorderedList: { fontClass: 'fa-solid fa-list-ul' },\r\n    OrderedList: { fontClass: 'fa-solid fa-list-ol' },\r\n    CodeBlock: { fontClass: 'fa-solid fa-file-code' },\r\n    ShowPreview: { fontClass: 'fa-solid fa-eye' },\r\n    HidePreview: { fontClass: 'fa-solid fa-eye-slash' },\r\n    FullScreen: { fontClass: 'fa-solid fa-maximize' },\r\n    CheckBox_UnChecked: { fontClass: 'fa-regular fa-square' },\r\n    CheckBox_Checked: { fontClass: 'fa-solid fa-check-square' }\r\n  }\r\n}\r\n","import { Component, NgZone, Input, Output, ViewChild, ElementRef, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'md-editor-resize-sensor',\r\n  templateUrl: './resize-sensor.html',\r\n  styleUrls: ['./resize-sensor.scss']\r\n})\r\n\r\nexport class MarkdownEditorResizeSensorComponent {\r\n\r\n  @ViewChild('resizeSensor', { static: true }) resizeSensor: ElementRef;\r\n\r\n  @Input() interval: number = 500;\r\n  @Output() resize: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  private sizeInfo: any = {\r\n    width: 0,\r\n    height: 0\r\n  }\r\n\r\n  constructor(private _ngZone: NgZone) {\r\n\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.sizeInfo = {\r\n      width: this.resizeSensor.nativeElement.offsetWidth,\r\n      height: this.resizeSensor.nativeElement.offsetHeight\r\n    }\r\n    this._ngZone.runOutsideAngular(() => {\r\n      setTimeout(() => {\r\n        this.detectSize();\r\n      }, this.interval);\r\n    });\r\n  }\r\n\r\n  private detectSize() {\r\n    let width = this.resizeSensor.nativeElement.offsetWidth;\r\n    let height = this.resizeSensor.nativeElement.offsetHeight;\r\n    if (this.sizeInfo.width !== width || this.sizeInfo.height !== height) {\r\n      this.sizeInfo = {\r\n        width: width,\r\n        height: height\r\n      }\r\n      this.resize.emit(this.sizeInfo);\r\n    }\r\n    setTimeout(() => {\r\n      this.detectSize();\r\n    }, this.interval);\r\n  }\r\n}\r\n","<div class=\"md-editor-resize-sensor\" #resizeSensor></div>\r\n","import { Component, ViewChild, forwardRef, Renderer2, Attribute, Input, Output, EventEmitter, ElementRef, NgZone, Inject, PLATFORM_ID, SecurityContext } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { MdEditorOption, MarkedjsOption, DEFAULT_ICONS, DEFAULT_LOCALES } from './md-editor.types';\r\n\r\ndeclare let ace: any;\r\ndeclare let marked: any;\r\ndeclare let hljs: any;\r\n\r\nconst DEFAULT_EDITOR_OPTION: MdEditorOption = {\r\n  showPreviewPanel: true,\r\n  showBorder: true,\r\n  hideIcons: [],\r\n  usingFontAwesome5: false,\r\n  scrollPastEnd: 0,\r\n  enablePreviewContentClick: false,\r\n  resizable: false,\r\n  customIcons: DEFAULT_ICONS.fontAwesome4,\r\n  locales: DEFAULT_LOCALES,\r\n  placeholder: ''\r\n}\r\n\r\n@Component({\r\n  selector: 'md-editor',\r\n  styleUrls: ['./md-editor.scss'],\r\n  templateUrl: './md-editor.html',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MarkdownEditorComponent),\r\n      multi: true\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => MarkdownEditorComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\n\r\nexport class MarkdownEditorComponent implements ControlValueAccessor, Validator {\r\n\r\n  @ViewChild('aceEditor', { static: true }) public aceEditorContainer: ElementRef;\r\n  @ViewChild('previewContainer', { static: true }) public previewContainer: ElementRef;\r\n  @Input() public hideToolbar: boolean = false;\r\n  @Input() public height: string = \"300px\";\r\n  @Input() public preRender: Function;\r\n  @Input() public postRender: Function;\r\n  @Input() public upload: Function;\r\n\r\n  @Input()\r\n  public get locale(): string { return this._locale || 'en' }\r\n  public set locale(val: string) { this._locale = val; }\r\n  public _locale: string = 'en';\r\n\r\n  @Input('maxlength')\r\n  public get maxlength(): number {\r\n    return this._maxlength;\r\n  }\r\n  public set maxlength(val: number | string) {\r\n    if (!Number.isInteger(val)) val = parseInt(val as string, 10);\r\n    if (Number.isInteger(val)) this._maxlength = val as number;\r\n  }\r\n  private _maxlength: number = -1;\r\n\r\n  @Input()\r\n  public get mode(): string {\r\n    return this._mode;\r\n  }\r\n  public set mode(value: string) {\r\n    this._mode = (!value || ['editor', 'preview'].indexOf(value.toLowerCase()) === -1)\r\n      ? 'editor'\r\n      : value;\r\n    setTimeout(() => {\r\n      if (this._aceEditorIns && typeof this._aceEditorIns.resize === 'function') {\r\n        this._aceEditorIns.resize();\r\n      }\r\n    }, 100);\r\n  }\r\n  private _mode: string = 'editor';\r\n\r\n  @Input()\r\n  public get options(): MdEditorOption {\r\n    return this._options;\r\n  }\r\n  public set options(value: MdEditorOption) {\r\n    const options = Object.assign({}, DEFAULT_EDITOR_OPTION, value);\r\n\r\n    let defaultIcons = DEFAULT_ICONS.fontAwesome4;\r\n    if (value.fontAwesomeVersion && ['4', '5', '6'].indexOf(value.fontAwesomeVersion.toString()) !== -1) {\r\n      defaultIcons = DEFAULT_ICONS[`fontAwesome${value.fontAwesomeVersion}`];\r\n    } else if (value.usingFontAwesome5) {\r\n      defaultIcons = DEFAULT_ICONS.fontAwesome5;\r\n    }\r\n\r\n    if (typeof options.showPreviewPanel === 'boolean') {\r\n      this.showPreviewPanel = options.showPreviewPanel;\r\n    }\r\n\r\n    options.customIcons = Object.assign({}, defaultIcons, value.customIcons);\r\n    const hideIcons = {};\r\n    if (Array.isArray(options.hideIcons)) {\r\n      options.hideIcons.forEach((v: any) => {\r\n        if (v === 'Refrence') v = 'Reference';\r\n        hideIcons[v] = true\r\n      });\r\n    }\r\n    this.hideIcons = hideIcons;\r\n\r\n    options.locales = Object.assign({}, DEFAULT_LOCALES, value.locales);\r\n    this._options = options;\r\n\r\n    if (this._aceEditorIns) this._aceEditorIns.setOption('placeholder', this.options.placeholder || '');\r\n  }\r\n  private _options: any = Object.assign({}, DEFAULT_EDITOR_OPTION);\r\n\r\n  @Output() public onEditorLoaded: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() public onPreviewDomChanged: EventEmitter<HTMLElement> = new EventEmitter<HTMLElement>();\r\n\r\n  public hideIcons: any = {};\r\n  public showPreviewPanel: boolean = true;\r\n  public isFullScreen: boolean = false;\r\n  public dragover: boolean = false;\r\n  public isUploading: boolean = false;\r\n  public readonly valueChanges = new Subject<string>();\r\n\r\n  public get localeText() {\r\n    const r = Object.assign({}, DEFAULT_LOCALES[this.locale], this.options.locales[this.locale]);\r\n    return Object.assign({}, DEFAULT_LOCALES.en, r);\r\n  }\r\n  public get buttonText() { return this.localeText.Buttons }\r\n  public get uploadText() { return this.localeText.Upload }\r\n\r\n  //#region Markdown value and html value define\r\n  public get markdownValue(): string {\r\n    return this._markdownValue || '';\r\n  }\r\n  private set markdownValue(value: string) {\r\n    this._markdownValue = value || '';\r\n    this.valueChanges.next(this.markdownValue);\r\n  }\r\n  private _markdownValue: string;\r\n\r\n  public previewHtml: any;\r\n  //#endregion\r\n\r\n\r\n  private _aceEditorIns: any;\r\n  private _aceEditorResizeTimer: any;\r\n  private _convertMarkdownToHtmlTimer: any;\r\n  private _markedJsOpt: MarkedjsOption;\r\n  private _isValueSettedByprogrammatically: boolean;\r\n  private get _hasUploadFunction(): boolean {\r\n    return this.upload && this.upload instanceof Function;\r\n  }\r\n  private get _isInBrowser(): boolean {\r\n    return isPlatformBrowser(this.platform);\r\n  }\r\n\r\n  private _onChange = (_: any) => { };\r\n  private _onTouched = () => { };\r\n\r\n  constructor(\r\n    @Inject(PLATFORM_ID) private platform: Object,\r\n    @Attribute('required') public required: boolean = false,\r\n    private _ngZone: NgZone,\r\n    private _renderer2: Renderer2,\r\n    private _domSanitizer: DomSanitizer) {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (!this._isInBrowser) return;\r\n    let markedRender = new marked.Renderer();\r\n    markedRender.image = this._getRender('image');\r\n    markedRender.code = this._getRender('code');\r\n    markedRender.table = this._getRender('table');\r\n    markedRender.listitem = this._getRender('listitem');\r\n    let markedjsOpt = {\r\n      renderer: markedRender,\r\n      highlight: (code: any) => hljs.highlightAuto(code).value\r\n    };\r\n    this._markedJsOpt = Object.assign({}, markedjsOpt, this.options.markedjsOpt);\r\n    if (this._markedJsOpt.sanitize === true && typeof this._markedJsOpt.sanitizer !== 'function') {\r\n      this._markedJsOpt.sanitizer = (markdownString) => {\r\n        return this._domSanitizer.sanitize(SecurityContext.HTML, markdownString);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (!this._isInBrowser) return;\r\n    let editorElement = this.aceEditorContainer.nativeElement;\r\n    let editor = ace.edit(editorElement);\r\n    editor.$blockScrolling = Infinity;\r\n    editor.getSession().setUseWrapMode(true);\r\n    editor.getSession().setMode(\"ace/mode/markdown\");\r\n    editor.setValue(this.markdownValue, 1);\r\n    editor.setOption('scrollPastEnd', this._options.scrollPastEnd || 0);\r\n\r\n    editor.on('change', (e: any) => {\r\n      if (this._isValueSettedByprogrammatically) return;\r\n      let val = editor.getValue();\r\n      this._updateMarkdownValue(val, true);\r\n      this._onChange(this.markdownValue);\r\n    });\r\n    editor.on('blur', () => { this._onTouched() });\r\n    editor.setOption('placeholder', this.options.placeholder || '');\r\n\r\n    this.onEditorLoaded.next(editor);\r\n    this._aceEditorIns = editor;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._aceEditorIns && this._aceEditorIns.destroy();\r\n    this.valueChanges && this.valueChanges.complete();\r\n  }\r\n\r\n  writeValue(value: string): void {\r\n    this._updateMarkdownValue(value, false);\r\n  }\r\n\r\n  registerOnChange(fn: (_: any) => {}): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => {}): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  validate(c: AbstractControl): ValidationErrors {\r\n    let result: any = null;\r\n    if (this.required && this.markdownValue.length === 0) {\r\n      result = { required: true };\r\n    }\r\n    if (this.maxlength > 0 && this.markdownValue.length > this.maxlength) {\r\n      result = { maxlength: true };\r\n    }\r\n    return result;\r\n  }\r\n\r\n  insertContent(type: string, customContent?: string) {\r\n    if (!this._aceEditorIns) return;\r\n    let selectedText = this._aceEditorIns.getSelectedText();\r\n    let isSelected = !!selectedText;\r\n    let startSize = 2;\r\n    let initText: string = '';\r\n    let range = this._aceEditorIns.selection.getRange();\r\n    switch (type) {\r\n      case 'Bold':\r\n        initText = this.buttonText.Bold.initText ?? this.buttonText.Bold.title;\r\n        selectedText = `**${selectedText || initText}**`;\r\n        break;\r\n      case 'Italic':\r\n        initText = this.buttonText.Italic.initText ?? this.buttonText.Italic.title;\r\n        selectedText = `*${selectedText || initText}*`;\r\n        startSize = 1;\r\n        break;\r\n      case 'Heading':\r\n        initText = this.buttonText.Heading.initText ?? this.buttonText.Heading.title;\r\n        selectedText = `# ${selectedText || initText}`;\r\n        break;\r\n      case 'Reference':\r\n        initText = this.buttonText.Reference.initText ?? this.buttonText.Reference.title;\r\n        selectedText = `> ${selectedText || initText}`;\r\n        break;\r\n      case 'Link':\r\n        selectedText = `[](http://)`;\r\n        startSize = 1;\r\n        break;\r\n      case 'Image':\r\n        selectedText = `![](http://)`;\r\n        break;\r\n      case 'Ul':\r\n        initText = this.buttonText.UnorderedList.initText ?? this.buttonText.UnorderedList.title;\r\n        selectedText = `- ${selectedText || initText}`\r\n        break;\r\n      case 'Ol':\r\n        initText = this.buttonText.OrderedList.initText ?? this.buttonText.OrderedList.title;\r\n        selectedText = `1. ${selectedText || initText}`\r\n        startSize = 3;\r\n        break;\r\n      case 'Code':\r\n        initText = this.buttonText.CodeBlock.initText ?? this.buttonText.CodeBlock.title;\r\n        selectedText = \"```language\\r\\n\" + (selectedText || initText) + \"\\r\\n```\";\r\n        startSize = 3;\r\n        break;\r\n      case 'Custom':\r\n        selectedText = customContent;\r\n        startSize = 0;\r\n        break;\r\n    }\r\n    this._aceEditorIns.session.replace(range, selectedText);\r\n    if (!isSelected) {\r\n      range.start.column += startSize;\r\n      range.end.column = range.start.column + initText.length;\r\n      this._aceEditorIns.selection.setRange(range);\r\n    }\r\n    this._aceEditorIns.focus();\r\n  }\r\n\r\n  togglePreview() {\r\n    this.showPreviewPanel = !this.showPreviewPanel;\r\n    this.editorResize();\r\n  }\r\n\r\n  previewPanelClick(event: Event) {\r\n    if (this.options.enablePreviewContentClick !== true) {\r\n      event.preventDefault();\r\n      event.stopImmediatePropagation();\r\n    }\r\n  }\r\n\r\n  fullScreen() {\r\n    this.isFullScreen = !this.isFullScreen;\r\n    this._renderer2.setStyle(document.body, 'overflowY', this.isFullScreen ? 'hidden' : 'auto');\r\n    this.editorResize();\r\n  }\r\n\r\n  mdEditorResize(size: any) {\r\n    this.editorResize();\r\n  }\r\n\r\n  editorResize(timeOut: number = 100) {\r\n    if (!this._aceEditorIns) return\r\n    if (this._aceEditorResizeTimer) clearTimeout(this._aceEditorResizeTimer);\r\n    this._aceEditorResizeTimer = setTimeout(() => {\r\n      this._aceEditorIns.resize();\r\n      this._aceEditorIns.focus();\r\n    }, timeOut);\r\n  }\r\n\r\n  onDragover(evt: DragEvent) {\r\n    evt.stopImmediatePropagation();\r\n    evt.preventDefault();\r\n    if (!this._hasUploadFunction) return;\r\n    this.dragover = true;\r\n  }\r\n\r\n  onDrop(evt: DragEvent) {\r\n    evt.stopImmediatePropagation();\r\n    evt.preventDefault();\r\n\r\n    this._uploadFiles(evt.dataTransfer.files);\r\n  }\r\n\r\n  onDragleave(evt: DragEvent) {\r\n    evt.stopImmediatePropagation();\r\n    evt.preventDefault();\r\n    this.dragover = false;\r\n    if (!this._hasUploadFunction) return;\r\n  }\r\n\r\n  onAceEditorPaste(event: ClipboardEvent): void {\r\n    if (event instanceof ClipboardEvent && event.clipboardData.files.length > 0) {\r\n      this._uploadFiles(event.clipboardData.files);\r\n    }\r\n  }\r\n\r\n  private _updateMarkdownValue(value: any, changedByUser: boolean = false) {\r\n    const normalizedValue = typeof value === 'string' ? value : (value || '').toString();\r\n    if (this.markdownValue === normalizedValue) return;\r\n    this.markdownValue = normalizedValue;\r\n    this._updateDom();\r\n    if (this._aceEditorIns && !changedByUser) {\r\n      this._isValueSettedByprogrammatically = true;\r\n      this._aceEditorIns.setValue(normalizedValue, 1);\r\n      this._isValueSettedByprogrammatically = false;\r\n    }\r\n  }\r\n\r\n  private _updateDom() {\r\n    if (this._convertMarkdownToHtmlTimer) clearTimeout(this._convertMarkdownToHtmlTimer);\r\n    this._convertMarkdownToHtmlTimer = setTimeout(() => {\r\n      Promise.resolve(this.markdownValue)\r\n        .then((mdContent) => {\r\n          return (this.preRender && this.preRender instanceof Function) ? this.preRender(mdContent) : mdContent;\r\n        })\r\n        .then(mdContent => {\r\n          let html = marked(mdContent || '', this._markedJsOpt);\r\n          return (this.postRender && this.postRender instanceof Function) ? this.postRender(html) : html;\r\n        })\r\n        .then(parsedHtml => {\r\n          this.previewHtml = this._domSanitizer.bypassSecurityTrustHtml(parsedHtml);\r\n          if (this.previewContainer && this.previewContainer.nativeElement) {\r\n            this._ngZone.runOutsideAngular(() => {\r\n              this._renderer2.setProperty(this.previewContainer.nativeElement, 'innerHTML', parsedHtml);\r\n              setTimeout(() => { this.onPreviewDomChanged.next(this.previewContainer.nativeElement); }, 100);\r\n            });\r\n          }\r\n        })\r\n        .catch(err => {\r\n          console.error(err);\r\n        })\r\n    }, 100);\r\n  }\r\n\r\n  private _getRender(renderType: 'image' | 'table' | 'code' | 'listitem') {\r\n    let customRender = this.options && this.options.customRender && this.options.customRender[renderType];\r\n    if (customRender && typeof customRender === 'function') {\r\n      return customRender;\r\n    } else {\r\n      switch (renderType) {\r\n        case 'image':\r\n          return function (href: string, title: string, text: string) {\r\n            let out = `<img style=\"max-width: 100%;\" src=\"${href}\" alt=\"${text}\"`;\r\n            if (title) {\r\n              out += ` title=\"${title}\"`;\r\n            }\r\n            out += (<any>this.options).xhtml ? \"/>\" : \">\";\r\n            return out;\r\n          };\r\n        case 'code':\r\n          return function (code: any, language: any) {\r\n            let validLang = !!(language && hljs.getLanguage(language));\r\n            let highlighted = '';\r\n            if (validLang) {\r\n              highlighted = hljs.highlight(language, code).value;\r\n            } else {\r\n              let pre = document.createElement('pre');\r\n              pre.innerText = code;\r\n              highlighted = pre.innerHTML;\r\n            }\r\n            return `<pre style=\"padding: 0; border-radius: 0;\"><code class=\"hljs ${language}\">${highlighted}</code></pre>`;\r\n          };\r\n        case 'table':\r\n          return function (header: string, body: string) {\r\n            return `<table class=\"table table-bordered\">\\n<thead>\\n${header}</thead>\\n<tbody>\\n${body}</tbody>\\n</table>\\n`;\r\n          };\r\n        case 'listitem':\r\n          const checkedCheckbox = `<i class=\"${this.options.customIcons.CheckBox_Checked.fontClass}\"></i> `,\r\n            unCheckedCheckbox = `<i class=\"${this.options.customIcons.CheckBox_UnChecked.fontClass}\"></i> `;\r\n          return function (text: any, task: boolean, checked: boolean) {\r\n            if (/^\\s*\\[[x ]\\]\\s*/.test(text) || text.startsWith('<input')) {\r\n              if (text.startsWith('<input')) {\r\n                text = text\r\n                  .replace('<input disabled=\"\" type=\"checkbox\">', unCheckedCheckbox)\r\n                  .replace('<input checked=\"\" disabled=\"\" type=\"checkbox\">', checkedCheckbox);\r\n              } else {\r\n                text = text\r\n                  .replace(/^\\s*\\[ \\]\\s*/, unCheckedCheckbox)\r\n                  .replace(/^\\s*\\[x\\]\\s*/, checkedCheckbox);\r\n              }\r\n              return `<li>${text}</li>`;\r\n            } else {\r\n              return `<li>${text}</li>`;\r\n            }\r\n          };\r\n      }\r\n    }\r\n  }\r\n\r\n  private _uploadFiles(files: FileList): void {\r\n    if (!this._hasUploadFunction || this.isUploading) return;\r\n\r\n    if (!files || files.length === 0) {\r\n      this.dragover = false;\r\n      return;\r\n    }\r\n\r\n    this.isUploading = true;\r\n\r\n    // force dragover to be true, as Uploading mask won't work otherwise\r\n    this.dragover = true;\r\n\r\n    Promise.resolve()\r\n      .then(() => {\r\n        return this.upload(files);\r\n      })\r\n      .then(data => {\r\n        if (Array.isArray(data)) {\r\n          let msg = [];\r\n          for (let item of data) {\r\n            let tempMsg = `[${item.name}](${item.url})`;\r\n            if (item.isImg) {\r\n              tempMsg = `!${tempMsg}`;\r\n            }\r\n            msg.push(tempMsg);\r\n          }\r\n          const range = this._aceEditorIns.selection.getRange();\r\n          const newRange = { start: { column: 0, row: range.end.row + 1 }, end: { column: 0, row: range.end.row + 1 } };\r\n          this._aceEditorIns.session.replace(newRange, '\\r\\n');\r\n          this._aceEditorIns.selection.setRange(newRange);\r\n          this._aceEditorIns.focus();\r\n\r\n          this.insertContent('Custom', msg.join('\\r\\n'));\r\n        } else {\r\n          console.warn('Invalid upload result. Please using follow this type `UploadResult`.')\r\n        }\r\n        this.isUploading = false;\r\n        this.dragover = false;\r\n      })\r\n      .catch(err => {\r\n        console.error(err);\r\n        this.isUploading = false;\r\n        this.dragover = false;\r\n      });\r\n  }\r\n}\r\n","<div class=\"md-editor-container\" [class.fullscreen]=\"isFullScreen\" [class.md-editor-resizable]=\"options?.resizable\" [style.height]=\"height\">\r\n  <div class=\"md-layout\">\r\n    <div class=\"tool-bar\" *ngIf=\"!hideToolbar && mode != 'preview'\">\r\n      <div class=\"btn-group\">\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Bold.title\" (click)=\"insertContent('Bold')\"\r\n          *ngIf=\"!hideIcons.Bold\">\r\n          <i [class]=\"options.customIcons.Bold.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Italic.title\" (click)=\"insertContent('Italic')\"\r\n          *ngIf=\"!hideIcons.Italic\">\r\n          <i [class]=\"options.customIcons.Italic.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Heading.title\" (click)=\"insertContent('Heading')\"\r\n          *ngIf=\"!hideIcons.Heading\">\r\n          <i [class]=\"options.customIcons.Heading.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Reference.title\" (click)=\"insertContent('Reference')\"\r\n          *ngIf=\"!hideIcons.Reference\">\r\n          <i [class]=\"options.customIcons.Reference.fontClass\"></i>\r\n        </button>\r\n      </div>\r\n      <div class=\"btn-group\">\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Link.title\" (click)=\"insertContent('Link')\"\r\n          *ngIf=\"!hideIcons.Link\">\r\n          <i [class]=\"options.customIcons.Link.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.Image.title\" (click)=\"insertContent('Image')\"\r\n          *ngIf=\"!hideIcons.Image\">\r\n          <i [class]=\"options.customIcons.Image.fontClass\"></i>\r\n        </button>\r\n      </div>\r\n      <div class=\"btn-group\">\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.UnorderedList.title\" (click)=\"insertContent('Ul')\"\r\n          *ngIf=\"!hideIcons.Ul\">\r\n          <i [class]=\"options.customIcons.UnorderedList.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.OrderedList.title\" (click)=\"insertContent('Ol')\"\r\n          *ngIf=\"!hideIcons.Ol\">\r\n          <i [class]=\"options.customIcons.OrderedList.fontClass\"></i>\r\n        </button>\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [attr.title]=\"buttonText.CodeBlock.title\" (click)=\"insertContent('Code')\"\r\n          *ngIf=\"!hideIcons.Code\">\r\n          <i [class]=\"options.customIcons.CodeBlock.fontClass\"></i>\r\n        </button>\r\n      </div>\r\n      <div class=\"btn-group\">\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\"\r\n          [attr.title]=\"showPreviewPanel ? buttonText.HidePreview.title : buttonText.ShowPreview.title\" (click)=\"togglePreview()\"\r\n          *ngIf=\"!hideIcons.TogglePreview\">\r\n          <i [class]=\"showPreviewPanel ? options.customIcons.ShowPreview.fontClass : options.customIcons.HidePreview.fontClass\"></i>\r\n        </button>\r\n      </div>\r\n      <div class=\"btn-group\">\r\n        <ng-content select=\"[custom-btns]\"></ng-content>\r\n      </div>\r\n      <div class=\"btn-group pull-right hide-split\">\r\n        <button class=\"btn btn-sm btn-default\" type=\"button\" [class.active]=\"isFullScreen\" [attr.title]=\"buttonText.Fullscreen.title\"\r\n          (click)=\"fullScreen()\" *ngIf=\"!hideIcons.FullScreen\">\r\n          <i [class]=\"options.customIcons.FullScreen.fontClass\"></i>\r\n        </button>\r\n      </div>\r\n    </div>\r\n    <div class=\"editor-container\">\r\n      <div [class.dragover]=\"dragover\" [style.display]=\"mode == 'preview' ? 'none' : null\" (dragover)=\"onDragover($event)\"\r\n        (drop)=\"onDrop($event)\" (dragleave)=\"onDragleave($event)\">\r\n        <div class=\"drag-container\" *ngIf=\"isUploading\">\r\n          <div class=\"upload-loading\">\r\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" *ngIf=\"!isUploading\" fill=\"#fff\">\r\n              <path\r\n                d=\"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\" />\r\n            </svg>\r\n            <div class=\"lds-dual-ring\" *ngIf=\"isUploading\"></div>\r\n            <div class=\"text\">{{ isUploading ? uploadText.Uploading : uploadText.Drag }}</div>\r\n          </div>\r\n        </div>\r\n        <div class=\"editor-panel\" contenteditable=\"true\" (paste)=\"onAceEditorPaste($event)\">\r\n          <div class=\"ace-editor\" #aceEditor></div>\r\n        </div>\r\n      </div>\r\n      <div class=\"preview-container\" [style.display]=\"(mode == 'preview' || showPreviewPanel) ? 'block' : 'none'\"\r\n        (click)=\"previewPanelClick($event)\">\r\n        <div class=\"preview-panel\" #previewContainer></div>\r\n      </div>\r\n    </div>\r\n    <div class=\"md-footer\" *ngIf=\"maxlength > 0 && mode != 'preview'\">\r\n      <div class=\"text-right length-view\">\r\n        {{ markdownValue?.length }} / {{ maxlength }}\r\n      </div>\r\n      <div class=\"resize-btn\"></div>\r\n    </div>\r\n  </div>\r\n  <md-editor-resize-sensor *ngIf=\"options?.resizable\" (resize)=\"mdEditorResize($event)\"></md-editor-resize-sensor>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MarkdownEditorComponent } from './lib/md-editor.component';\r\nimport { MarkdownEditorResizeSensorComponent } from './lib/resize-sensor/resize-sensor.component';\r\n\r\nexport { MarkdownEditorComponent } from './lib/md-editor.component';\r\nexport { MarkdownEditorResizeSensorComponent } from './lib/resize-sensor/resize-sensor.component';\r\nexport { MdEditorOption, UploadResult, MarkedjsOption } from './lib/md-editor.types';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    MarkdownEditorComponent,\r\n    MarkdownEditorResizeSensorComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule\r\n  ],\r\n  exports: [\r\n    MarkdownEditorComponent,\r\n    MarkdownEditorResizeSensorComponent\r\n  ]\r\n})\r\nexport class LMarkdownEditorModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.MarkdownEditorResizeSensorComponent"],"mappings":"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"}