{"version":3,"file":"ngx-sendune-editor.mjs","sources":["../../../projects/ngx-suneditor/src/lib/suneditorOptions.token.ts","../../../projects/ngx-suneditor/src/lib/ngx-suneditor.component.ts","../../../projects/ngx-suneditor/src/lib/safeHTML.pipe.ts","../../../projects/ngx-suneditor/src/lib/ngx-sunview.component.ts","../../../projects/ngx-suneditor/src/lib/ngx-suneditor.module.ts","../../../projects/ngx-suneditor/src/public-api.ts","../../../projects/ngx-suneditor/src/ngx-sendune-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Injection token for options object\n */\nexport const SUNEDITOR_OPTIONS = new InjectionToken('SUNEDITOR_OPTIONS');\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  Optional,\n  Output,\n} from '@angular/core';\nimport suneditor from 'suneditor';\nimport { Context } from 'suneditor/src/lib/context';\nimport SunEditor, {\n  audioInputInformation,\n  commands,\n  Controllers,\n  Core,\n  fileInfo,\n  imageInputInformation,\n  videoInputInformation,\n} from 'suneditor/src/lib/core';\nimport { SunEditorOptions } from 'suneditor/src/options';\nimport { SUNEDITOR_OPTIONS } from './suneditorOptions.token';\n\n@Component({\n  selector: 'ngx-suneditor',\n  template: ` <textarea id=\"{{ editorID }}\"></textarea> `,\n})\nexport class NgxSuneditorComponent implements AfterViewInit {\n  // The editor instance that is returned on create\n  private editor: SunEditor;\n\n  // the localStorageKey where the Content gets saved\n  private localStorageId = 'ngxSunEditor';\n\n  // decides if autoSave to Local Storage is Activated.\n  private isAutoSaveToLocalStorage = false;\n\n  // decides if the content should be loaded from teh LocalStorage on start\n  private isAutoLoadToLocalStorage = false;\n\n  // disabled state of the SunEditor\n  private _disabled: boolean = false;\n\n  // hidden state of the SunEditor\n  private _hidden: boolean = false;\n\n  // loading state of the SunEditor\n  private _loading: boolean = false;\n\n  // readonly state of the SunEditor\n  private _readonly: boolean = false;\n\n  // content buffer to invoke in AfterViewInit\n  private _content: string;\n\n  // Fullscreen mode state of SunEditor\n  private _fullScreenMode: boolean = false;\n\n  // DisplayBlocks state of SunEditor\n  private _displayBlocks: boolean = false;\n\n  // CodeView state of SunEditor\n  private _codeView: boolean = false;\n\n  /**\n   * Content to show in the Editor. If this value is set the content will be set.\n   */\n  @Input() set content(content: string) {\n    this._content = content;\n    if (this.editor) {\n      this.setContents(this._content);\n    }\n  }\n\n  /**\n   * HTML DOM id PropertyHTML DOM id Property\n   */\n   @Input() editorID: string = this.generateID();\n\n  /**\n   * SunEditorOptions Object is used once when the editor is created\n   */\n  @Input() options: SunEditorOptions;\n\n  /**\n   * Parameter that is passed to the onDrop event to control the behavior.\n   * @default true\n   */\n  @Input() onDrop_param: boolean = true;\n\n  /**\n   * Parameter that is passed to the onCopy event to control the behavior.\n   * @default true\n   */\n  @Input() onCopy_param: boolean = true;\n\n    /**\n   * Parameter that is passed to the onCut event to control the behavior.\n   * @default true\n   */\n     @Input() onCut_param: boolean = true;\n\n  /**\n   * Parameter that is passed to the onAudioUploadError event to control the behavior.\n   * @default true\n   */\n  @Input() onAudioUploadError_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onImageUploadBefore event to control the behavior.\n   * @default true\n   */\n  @Input() onImageUploadBefore_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onImageUploadError event to control the behavior.\n   * @default true\n   */\n  @Input() onImageUploadError_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onVideoUploadBefore event to control the behavior.\n   * @default true\n   */\n  @Input() onVideoUploadBefore_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onVideoUploadError event to control the behavior.\n   * @default true\n   */\n  @Input() onVideoUploadError_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onAudioUploadBefore event to control the behavior.\n   * @default true\n   */\n  @Input() onAudioUploadBefore_param: boolean | undefined = true;\n\n  /**\n   * Parameter that is passed to the onResizeEditor event to control the behavior.\n   * @default {}\n   */\n  @Input() onResizeEditor_param: Object | undefined = {};\n\n  // handler buffer to invoke in AfterViewInit\n  private _imageUploadHandler: (\n    xmlHttp: XMLHttpRequest,\n    info: imageInputInformation,\n    core: Core\n  ) => void;\n  /**\n   * Callback to replace the default imageUploadHandler function\n   */\n  @Input() set imageUploadHandler(\n    callback: (\n      xmlHttp: XMLHttpRequest,\n      info: imageInputInformation,\n      core: Core\n    ) => void\n  ) {\n    const handlerCallback = (\n      xmlHttp: XMLHttpRequest,\n      info: imageInputInformation,\n      core: Core\n    ) => {\n      callback(xmlHttp, info, core);\n    };\n    this._imageUploadHandler = handlerCallback;\n    if (this.editor) this.editor.imageUploadHandler = handlerCallback;\n  }\n\n  // handler buffer to invoke in AfterViewInit\n  private _videoUploadHandler: (\n    xmlHttp: XMLHttpRequest,\n    info: videoInputInformation,\n    core: Core\n  ) => void;\n  /**\n   * Callback to replace the default videoUploadHandler function\n   */\n  @Input() set videoUploadHandler(\n    callback: (\n      xmlHttp: XMLHttpRequest,\n      info: videoInputInformation,\n      core: Core\n    ) => void\n  ) {\n    const handlerCallback = (\n      xmlHttp: XMLHttpRequest,\n      info: videoInputInformation,\n      core: Core\n    ) => {\n      callback(xmlHttp, info, core);\n    };\n    this._videoUploadHandler = handlerCallback;\n    if (this.editor) this.editor.videoUploadHandler = handlerCallback;\n  }\n\n  // handler buffer to invoke in AfterViewInit\n  private _audioUploadHandler: (\n    xmlHttp: XMLHttpRequest,\n    info: audioInputInformation,\n    core: Core\n  ) => void;\n  /**\n   * Callback to replace the default audioUploadHandler function\n   */\n  @Input() set audioUploadHandler(\n    callback: (\n      xmlHttp: XMLHttpRequest,\n      info: audioInputInformation,\n      core: Core\n    ) => void\n  ) {\n    const handlerCallback = (\n      xmlHttp: XMLHttpRequest,\n      info: audioInputInformation,\n      core: Core\n    ) => {\n      callback(xmlHttp, info, core);\n    };\n    this._audioUploadHandler = handlerCallback;\n    if (this.editor) this.editor.audioUploadHandler = handlerCallback;\n  }\n\n  /**\n   * The localStorageConfig Object {id: string, autoSave: boolean, autoLoad: boolean}\n   * id is the localStorageKey where the Content gets saved.\n   * autoSave decides if the content should be automaticly saved in the onChange event\n   * autoLoad decides if the content should be automaticly loaded on startUp\n   * @Default = {id: 'ngxSunEditor', autoSave: false, autoLoad: false}\n   */\n  @Input() set localStorageConfig(config: {\n    id?: string;\n    autoSave?: boolean;\n    autoLoad?: boolean;\n  }) {\n    if (config.id) {\n      this.localStorageId = config.id;\n    }\n    if (config.autoSave !== undefined && config.autoSave !== null) {\n      this.isAutoSaveToLocalStorage = config.autoSave;\n    }\n    if (config.autoLoad !== undefined && config.autoLoad !== null) {\n      this.isAutoLoadToLocalStorage = config.autoLoad;\n    }\n  }\n\n  /**\n   * Emitted after the editor compontent was created\n   */\n  @Output() created = new EventEmitter<NgxSuneditorComponent>();\n\n  /**\n   *  When reloaded with the \"setOptions\" method\n   */\n  @Output() onload = new EventEmitter<{ core: Core; reload: boolean }>();\n\n  /**\n   * Scroll event\n   */\n  @Output() onScroll = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * Mouse down\n   */\n  @Output() onMouseDown = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * clicked\n   */\n  @Output() onClick = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * Wysiwyg editor area Input event\n   */\n  @Output() onInput = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * keydown event\n   */\n  @Output() onKeyDown = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * keyup event\n   */\n  @Output() onKeyUp = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * Focus event\n   */\n  @Output() onFocus = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * Blur event\n   */\n  @Output() onBlur = new EventEmitter<{ e: Event; core: Core }>();\n\n  /**\n   * Called when the editor is resized using the bottom bar\n   */\n  @Output() onResizeEditor = new EventEmitter<{\n    height: number;\n    prevHeight: number;\n    core: Core;\n  }>();\n\n  /**\n   * Called before the audio is uploaded\n   */\n  @Output() onAudioUploadBefore = new EventEmitter<{\n    files: any[];\n    info: audioInputInformation;\n    core: Core;\n    uploadHandler: Function;\n  }>();\n\n  /**\n   * Called on video upload error\n   */\n  @Output() onVideoUploadError = new EventEmitter<{\n    errorMessage: string;\n    result: any;\n    core: Core;\n  }>();\n\n  /**\n   * Called before the video is uploaded\n   */\n  @Output() onVideoUploadBefore = new EventEmitter<{\n    files: any[];\n    info: videoInputInformation;\n    core: Core;\n    uploadHandler: Function;\n  }>();\n\n  /**\n   * Called on image upload error\n   */\n  @Output() onImageUploadError = new EventEmitter<{\n    errorMessage: string;\n    result: any;\n    core: Core;\n  }>();\n\n  /**\n   * Called before the image is uploaded\n   */\n  @Output() onImageUploadBefore = new EventEmitter<{\n    files: any[];\n    info: imageInputInformation;\n    core: Core;\n    uploadHandler: Function;\n  }>();\n\n  /**\n   * Called on audio upload error\n   */\n  @Output() onAudioUploadError = new EventEmitter<{\n    errorMessage: string;\n    result: any;\n    core: Core;\n  }>();\n\n  /**\n   * Drop event\n   */\n  @Output() onDrop = new EventEmitter<{\n    e: Event;\n    cleanData: string;\n    maxCharCount: number;\n    core: Core;\n  }>();\n\n  /**\n   *  Called when the contents changes\n   */\n  @Output() onChange = new EventEmitter<{\n    content: string;\n    core: Core;\n  }>();\n\n  /**\n   * Called just after the controller is positioned and displayed on the screen\n   */\n  @Output() showController = new EventEmitter<{\n    name: String;\n    controllers: Controllers;\n    core: Core;\n  }>();\n\n  /**\n   * Called when toggling full screen\n   */\n  @Output() toggleFullScreen = new EventEmitter<{\n    isFullScreen: boolean;\n    core: Core;\n  }>();\n\n  /**\n   * Called when toggling between code view and wysiwyg view\n   */\n  @Output() toggleCodeView = new EventEmitter<{\n    isCodeView: boolean;\n    core: Core;\n  }>();\n\n  /**\n   * Called just before the inline toolbar is positioned and displayed on the screen\n   */\n  @Output() showInline = new EventEmitter<{\n    toolbar: Element;\n    context: Context;\n    core: Core;\n  }>();\n\n  /**\n   * Called on audio upload\n   */\n  @Output() onAudioUpload = new EventEmitter<{\n    targetElement: HTMLAudioElement;\n    index: number;\n    state: string;\n    info: fileInfo;\n    remainingFilesCount: number;\n    core: Core;\n  }>();\n\n  /**\n   * Called on video upload\n   */\n  @Output() onVideoUpload = new EventEmitter<{\n    targetElement: HTMLIFrameElement | HTMLVideoElement;\n    index: number;\n    state: string;\n    info: fileInfo;\n    remainingFilesCount: number;\n    core: Core;\n  }>();\n\n  /**\n   * Called on image upload\n   */\n  @Output() onImageUpload = new EventEmitter<{\n    targetElement: HTMLImageElement;\n    index: number;\n    state: string;\n    info: fileInfo;\n    remainingFilesCount: number;\n    core: Core;\n  }>();\n\n  /**\n   * Called when cut to clipboard\n   */\n  @Output() onCut = new EventEmitter<{\n    e: Event;\n    clipboardData: any;\n    core: Core;\n  }>();\n\n  /**\n   * Called when copy to clipboard\n   */\n  @Output() onCopy = new EventEmitter<{\n    e: Event;\n    clipboardData: any;\n    core: Core;\n  }>();\n\n  constructor(\n    private ngZone: NgZone,\n    @Optional()\n    @Inject(SUNEDITOR_OPTIONS)\n    options?: SunEditorOptions\n  ) {\n    if (options && typeof options === 'object') {\n      this.options = options;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.ngZone.runOutsideAngular(() => {\n      if (this._content) this.options.value = this._content;\n      this.editor = suneditor.create(\n        document.getElementById(this.editorID) || this.editorID,\n        this.options\n      );\n      if (this._imageUploadHandler)\n        this.editor.imageUploadHandler = this._imageUploadHandler;\n      if (this._videoUploadHandler)\n        this.editor.videoUploadHandler = this._videoUploadHandler;\n      if (this._audioUploadHandler)\n        this.editor.audioUploadHandler = this._audioUploadHandler;\n    });\n    if (this.isAutoLoadToLocalStorage) {\n      this.loadLocalStorageContent();\n    }\n    this.registerEvents();\n    this.created.emit(this);\n  }\n\n  /**\n   * Returns the HTML id Attribute that is randomly generated on startup on every editor instance.\n   */\n  public getEditorID(): string {\n    return this.editorID;\n  }\n\n  /**\n   * Returns the raw editor instance.\n   * @returns SunEditor\n   */\n  public getEditor(): SunEditor {\n    return this.editor;\n  }\n\n  /**\n   * Set the toolbar buttons\n   * @param buttonList any[]\n   */\n  public setToolbarButtons(buttonList: any[]): void {\n    this.editor.setToolbarButtons(buttonList);\n  }\n\n  /**\n   * Pass a `SunEditorOptions` object to the editor to change the options after the editor was created\n   * @param options SunEditorOptions\n   */\n  public setOptions(options: SunEditorOptions): void {\n    this.editor.setOptions(options);\n  }\n\n  /**\n   * Define the style of the edit area without re render\n   * @param style Style string\n   */\n  public setDefaultStyle(style: string): void {\n    this.editor.setDefaultStyle(style);\n  }\n\n  /**\n   * Opens a message in the notice panel (Alert)\n   * @param message string\n   */\n  public noticeOpen(message: string): void {\n    this.editor.noticeOpen(message);\n  }\n\n  /**\n   * Closes the notice panel (Alert)\n   */\n  public noticeClose(): void {\n    this.editor.noticeClose();\n  }\n\n  /**\n   * Copying the contents of the editor to the original textarea and return the content or the full textarea. When passed true as param it only returns the content.\n   * Otherwise the original `HTMLInputElement` is returned\n   * @param onlyContent boolean\n   * @returns string | HTMLInputElement - content or the full textarea\n   */\n  public save(onlyContent?: boolean): HTMLInputElement | string {\n    this.editor.save();\n    if (onlyContent) {\n      return this._content;\n    }\n    return document.getElementById(this.editorID) as HTMLInputElement;\n  }\n\n  /**\n   * Gets the SunEditor's context object. Contains settings, plugins, and cached element objects\n   */\n  public getContext(): Context {\n    return this.editor.getContext();\n  }\n\n  /**\n   * Gets the contents of the suneditor\n   * @param onlyContents boolean - Return only the contents of the body without headers when the \"fullPage\" option is true\n   * @returns string - editor content\n   */\n  public getContents(onlyContents: boolean): string {\n    return this.editor.getContents(onlyContents);\n  }\n\n  /**\n   * Gets only the text of the suneditor contents\n   */\n  public getText(): string {\n    return this.editor.getText();\n  }\n\n  /**\n   * Get the editor's number of characters or binary data size. You can use the \"charCounterType\" option format.\n   * @param charCounterType charCounterType\n   * options - charCounterType ('char', 'byte', 'byte-html') If argument is no value, the currently set \"charCounterType\" option is used.\n   * @returns number\n   */\n  public getCharCount(charCounterType?: string | undefined): number {\n    return this.editor.getCharCount(charCounterType);\n  }\n\n  /**\n   * Gets uploaded images informations\n   * index: data index\n   * name: file name\n   * size: file size\n   * select: select function\n   * delete: delete function\n   * element: img element\n   * src: src attribute of img tag\n   * @returns fileInfo[]\n   */\n  public getImagesInfo(): fileInfo[] {\n    return this.editor.getImagesInfo();\n  }\n\n  /**\n   * Gets uploaded files(plugin using fileManager) information list. image: [img], video: [video, iframe],\n   * audio: [audio] When the argument value is 'image', it is the same function as \"getImagesInfo\".\n   * @param pluginName Plugin name (image, video, audio)\n   * @returns fileInfo[]\n   */\n  public getFilesInfo(pluginName: string): fileInfo[] {\n    return this.editor.getFilesInfo(pluginName);\n  }\n\n  /**\n   * Upload images using image plugin\n   * @param files FileList\n   */\n  public insertImage(files: FileList): void {\n    this.editor.insertImage(files);\n  }\n\n  /**\n   * Inserts an HTML element or HTML string or plain string at the current cursor position\n   * @param html HTML Element or HTML string or plain string\n   * @param notCleaningData If true, inserts the HTML string without refining it with core.cleanHTML.\n   * @param checkCharCount f true, if \"options.maxCharCount\" is exceeded when \"element\" is added, null is returned without addition.\n   * @param rangeSelection If true, range select the inserted node.\n   */\n  public insertHTML(\n    html: string | Element,\n    notCleaningData?: boolean | undefined,\n    checkCharCount?: boolean | undefined,\n    rangeSelection?: boolean | undefined\n  ): void {\n    this.editor.insertHTML(\n      html,\n      notCleaningData,\n      checkCharCount,\n      rangeSelection\n    );\n  }\n\n  /**\n   * Change the contents of the suneditor\n   * @param contents Contents to Input\n   */\n  public setContents(contents: string): void {\n    this.editor.setContents(contents);\n  }\n\n  /**\n   * Add contents to the suneditor\n   * @param contents Contents to Input\n   */\n  public appendContents(contents: string): void {\n    this.editor.appendContents(contents);\n  }\n\n  /**\n   * Switch to or off \"ReadOnly\" mode.\n   * @param value \"readOnly\" boolean value.\n   */\n  public readOnly(value: boolean): void {\n    this._readonly = value;\n    this.editor.readOnly(value);\n  }\n\n  /**\n   * Returns the readonly state of the SunEditor\n   * @returns boolean\n   */\n  public isReadOnly(): boolean {\n    return this._readonly;\n  }\n\n  /**\n   * Disable the suneditor\n   */\n  public disabled(): void {\n    this._disabled = true;\n    this.editor.disabled();\n  }\n\n  /**\n   * Returns the disabled state of the SunEditor\n   * @returns boolean\n   */\n  public isDisabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * Enable the suneditor\n   */\n  public enabled(): void {\n    this._disabled = false;\n    this.editor.enabled();\n  }\n\n  /**\n   * Show the editor\n   */\n  public show(): void {\n    this._hidden = false;\n    this.editor.show();\n  }\n\n  /**\n   * Hide the editor\n   */\n  public hide(): void {\n    this._hidden = true;\n    this.editor.hide();\n  }\n\n  /**\n   * Returns the hidden state of the editor\n   * @returns boolean\n   */\n  public isHidden(): boolean {\n    return this._hidden;\n  }\n\n  /**\n   * Add or remove the class name of \"body\" so that the code block is visible\n   */\n  public toggleDisplayBlocks(): void {\n    this.editor.core.toggleDisplayBlocks();\n    this._displayBlocks = !this._displayBlocks;\n  }\n\n  /**\n   * Returns the displayBlocks state of the editor\n   * @returns boolean\n   */\n  public isDisplayBlocks(): boolean {\n    return this._displayBlocks;\n  }\n\n  /**\n   * Changes to code view or wysiwyg view\n   */\n  public toggleCodeViewMode(): void {\n    this.editor.core.toggleCodeView();\n    this._codeView = !this._codeView;\n  }\n\n  /**\n   * Returns the CodeViewMode state of the editor\n   * @returns boolean\n   */\n  public isCodeViewMode(): boolean {\n    return this._codeView;\n  }\n\n  /**\n   * Undo changes\n   */\n  public undo(): void {\n    this.editor.core.history.undo();\n  }\n\n  /**\n   * Redo changes\n   */\n  public redo(): void {\n    this.editor.core.history.redo();\n  }\n\n  /**\n   * Remove format of the currently selected range\n   */\n  public removeFormat(): void {\n    this.editor.core.removeFormat();\n  }\n\n  /**\n   * Prints the current contents of the editor.\n   */\n  public print(): void {\n    this.editor.core.print();\n  }\n\n  /**\n   * Open a new tab as preview window.\n   */\n  public preview(): void {\n    this.editor.core.preview();\n  }\n\n  /**\n   * Get the actual history Stack\n   * @returns any[]\n   */\n  public getHistory(): any[] {\n    return this.editor.core.history.stack;\n  }\n\n  /**\n   * Select all in the editor\n   */\n  public selectAll(): void {\n    this.commandHandler(null, 'selectAll');\n  }\n\n  /**\n   * Get window selection obejct\n   * @returns Selection\n   */\n  public getSelection(): Selection {\n    return this.editor.core.getSelection();\n  }\n\n  /**\n   * Set the editor in loading mode. Show a loading spinner, disable inputs and grey out\n   */\n  public showLoading(): void {\n    this._loading = true;\n    this.editor.core.showLoading();\n  }\n\n  /**\n   * Remove the loading mode\n   */\n  public closeLoading(): void {\n    this._loading = false;\n    this.editor.core.closeLoading();\n  }\n\n  /**\n   * Returns the loading state of the SunEditor\n   * @returns boolean\n   */\n  public isLoading(): boolean {\n    return this._loading;\n  }\n\n  /**\n   * Enabled submenu\n   * @param element Submenu's button element to call\n   */\n  public submenuOn(element: Element): void {\n    this.editor.core.submenuOn(element);\n  }\n\n  /**\n   * Disable submenu\n   */\n  public submenuOff(): void {\n    this.editor.core.submenuOff();\n  }\n\n  /**\n   * Enabled container\n   * @param element Container's button element to call\n   */\n  public containerOn(element: Element): void {\n    this.editor.core.containerOn(element);\n  }\n\n  /**\n   * Disable container\n   */\n  public containerOff(): void {\n    this.editor.core.containerOff();\n  }\n\n  /**\n   * Append the className value of the argument value element\n   * @param element Elements to add class name\n   * @param className Class name to be add\n   */\n  public addClass(element: Element, className: string): void {\n    this.editor.util.addClass(element, className);\n  }\n\n  /**\n   * Class name to be add\n   * @param element Elements to remove class name\n   * @param className Class name to be remove\n   */\n  public removeClass(element: Element, className: string) {\n    this.editor.util.removeClass(element, className);\n  }\n\n  /**\n   * Set style, if all styles are deleted, the style properties are deleted\n   * @param element Element to set style\n   * @param styleName Style attribute name (marginLeft, textAlign...)\n   * @param value Style value\n   */\n  public setStyle(\n    element: Element,\n    styleName: string,\n    value: string | number\n  ): void {\n    this.editor.util.setStyle(element, styleName, value);\n  }\n\n  /**\n   * Add an event to document. When created as an Iframe, the same event is added to the document in the Iframe.\n   * @param type event type\n   * @param listener listener\n   * @param useCapture boolean\n   */\n  public addDocEvent(\n    type: string,\n    listener: EventListener,\n    useCapture: boolean\n  ) {\n    this.editor.core.addDocEvent(type, listener, useCapture);\n  }\n\n  /**\n   * Remove events from document.   * When created as an Iframe, the event of the document inside the Iframe is also removed\n   * @param type Event type\n   * @param listener Event listener\n   */\n  public removeDocEvent(type: string, listener: EventListener) {\n    this.editor.core.removeDocEvent(type, listener);\n  }\n\n  /**\n   * Run plugin calls and basic commands.\n   * @param command Command string\n   * @param display Display type string ('command', 'submenu', 'dialog', 'container')\n   * @param target The element of command button\n   */\n  public actionCall(\n    command: string,\n    display: 'dialog' | 'command' | 'submenu' | 'container',\n    target: Element\n  ) {\n    this.editor.core.actionCall(command, display, target);\n  }\n\n  /**\n   * Set indentation separator \"indent\" or \"outdent\"\n   * @param command 'indent' | 'outdent'\n   */\n  public indent_outdent(command: 'indent' | 'outdent'): void {\n    this.commandHandler(null, command);\n  }\n\n  /**\n   * Display blocks in the editor\n   */\n  public showBlocks(): void {\n    const element = document.querySelector('[data-command=\"showBlocks\"]');\n    if (element) {\n      this.commandHandler(element, 'showBlocks');\n    }\n  }\n\n  /**\n   * Toggle the editor fullscreen mode\n   */\n  public toggleFullScreenMode() {\n    const element = document.querySelector('[data-command=\"fullScreen\"]');\n    if (element) {\n      this.commandHandler(element, 'fullScreen');\n    }\n    this._fullScreenMode = !this._fullScreenMode;\n  }\n\n  /**\n   * Returns the fullScreenMode state of the editor\n   * @returns boolean\n   */\n  public isFullScreenMode() {\n    return this._fullScreenMode;\n  }\n\n  /**\n   * Execute command of command button(All Buttons except submenu and dialog)\n   * (undo, redo, bold, underline, italic, strikethrough, subscript, superscript, removeFormat,\n   * indent, outdent, fullscreen, showBlocks, codeview, preview, print, copy, cut, paste)\n   * @param element The element of command button\n   * @param command Property of command button (data-value)\n   */\n  public commandHandler(element: Element | null, command: commands) {\n    this.editor.core.commandHandler(element, command);\n  }\n\n  /**\n   * loads the localStorageContent to the Editor\n   */\n  public loadLocalStorageContent() {\n    const localStorageContent = localStorage.getItem(this.localStorageId);\n    this.setContents(localStorageContent);\n  }\n\n  /**\n   * Save Content to LocalStorage\n   */\n  public saveToLocalStorage() {\n    localStorage.setItem(this.localStorageId, this._content);\n  }\n\n  /**\n   * returns the LocalStorageKey\n   */\n  public getLocalStorageKey() {\n    return this.localStorageId;\n  }\n\n  /**\n   * returns AutoSaveToLocalStorage\n   */\n  public getIsAutoSaveToLocalStorage() {\n    return this.isAutoSaveToLocalStorage;\n  }\n\n  /**\n   * returns AutoLoadToLocalStorage\n   */\n  public getIsAutoLoadToLocalStorage() {\n    return this.isAutoSaveToLocalStorage;\n  }\n\n  private registerEvents() {\n    this.editor.onload = (core, reload) => {\n      this.onload.emit({ core, reload });\n    };\n    this.editor.onScroll = (e, core) => {\n      this.onScroll.emit({ e, core });\n    };\n    this.editor.onMouseDown = (e, core) => {\n      this.onMouseDown.emit({ e, core });\n    };\n    this.editor.onClick = (e, core) => {\n      this.onClick.emit({ e, core });\n    };\n    this.editor.onInput = (e, core) => {\n      this.onInput.emit({ e, core });\n    };\n    this.editor.onKeyDown = (e, core) => {\n      this.onKeyDown.emit({ e, core });\n    };\n    this.editor.onKeyUp = (e, core) => {\n      this.onKeyUp.emit({ e, core });\n    };\n    this.editor.onChange = (content, core) => {\n      this._content = content;\n      this.onChange.emit({ content: this._content, core });\n      if (this.isAutoSaveToLocalStorage) {\n        this.saveToLocalStorage();\n      }\n    };\n    this.editor.onFocus = (e, core) => {\n      this.onFocus.emit({ e, core });\n    };\n    this.editor.showController = (name, controllers, core) => {\n      this.showController.emit({ name, controllers, core });\n    };\n    this.editor.toggleFullScreen = (isFullScreen, core) => {\n      this.toggleFullScreen.emit({ isFullScreen, core });\n    };\n    this.editor.toggleCodeView = (isCodeView, core) => {\n      this.toggleCodeView.emit({ isCodeView, core });\n    };\n    this.editor.showInline = (toolbar, context, core) => {\n      this.showInline.emit({ toolbar, context, core });\n    };\n    this.editor.onAudioUpload = (\n      targetElement,\n      index,\n      state,\n      info,\n      remainingFilesCount,\n      core\n    ) => {\n      this.onAudioUpload.emit({\n        targetElement,\n        index,\n        state,\n        info,\n        remainingFilesCount,\n        core,\n      });\n    };\n    this.editor.onVideoUpload = (\n      targetElement,\n      index,\n      state,\n      info,\n      remainingFilesCount,\n      core\n    ) => {\n      this.onVideoUpload.emit({\n        targetElement,\n        index,\n        state,\n        info,\n        remainingFilesCount,\n        core,\n      });\n    };\n    this.editor.onImageUpload = (\n      targetElement,\n      index,\n      state,\n      info,\n      remainingFilesCount,\n      core\n    ) => {\n      this.onImageUpload.emit({\n        targetElement,\n        index,\n        state,\n        info,\n        remainingFilesCount,\n        core,\n      });\n    };\n    // This functions needs to return a boolean. The type definition is wrong here.\n    // https://github.com/JiHong88/SunEditor/pull/810\n    this.editor.onCut = (e, clipboardData, core) => {\n      this.onCut.emit({ e, clipboardData, core });\n      return this.onCut_param;\n    };\n    // This functions needs to return a boolean. The type definition is wrong here.\n    // https://github.com/JiHong88/SunEditor/pull/810\n    this.editor.onCopy = (e, clipboardData, core) => {\n      this.onCopy.emit({ e, clipboardData, core });\n      return this.onCopy_param;\n    };\n    this.editor.onDrop = (\n      e: Event,\n      cleanData: string,\n      maxCharCount: number,\n      core: Core\n    ) => {\n      this.onDrop.emit({ e, cleanData, maxCharCount, core });\n      return this.onDrop_param;\n    };\n    this.editor.onAudioUploadError = (\n      errorMessage: string,\n      result: any,\n      core: Core\n    ) => {\n      this.onAudioUploadError.emit({ errorMessage, result, core });\n      return this.onAudioUploadError_param as boolean;\n    };\n    this.editor.onImageUploadBefore = (\n      files: any[],\n      info: imageInputInformation,\n      core: Core,\n      uploadHandler: Function\n    ) => {\n      this.onImageUploadBefore.emit({ files, info, core, uploadHandler });\n      return this.onImageUploadBefore_param as boolean;\n    };\n    this.editor.onImageUploadError = (\n      errorMessage: string,\n      result: any,\n      core: Core\n    ) => {\n      this.onImageUploadError.emit({ errorMessage, result, core });\n      return this.onImageUploadError_param as boolean;\n    };\n    this.editor.onVideoUploadBefore = (\n      files: any[],\n      info: videoInputInformation,\n      core: Core,\n      uploadHandler: Function\n    ) => {\n      this.onVideoUploadBefore.emit({ files, info, core, uploadHandler });\n      return this.onVideoUploadBefore_param as boolean;\n    };\n    this.editor.onVideoUploadError = (\n      errorMessage: string,\n      result: any,\n      core: Core\n    ) => {\n      this.onVideoUploadError.emit({ errorMessage, result, core });\n      return this.onVideoUploadError_param as boolean;\n    };\n    this.editor.onAudioUploadBefore = (\n      files: any[],\n      info: audioInputInformation,\n      core: Core,\n      uploadHandler: Function\n    ) => {\n      this.onAudioUploadBefore.emit({ files, info, core, uploadHandler });\n      return this.onAudioUploadBefore_param as boolean;\n    };\n    this.editor.onResizeEditor = (\n      height: number,\n      prevHeight: number,\n      core: Core\n    ) => {\n      this.onResizeEditor.emit({ height, prevHeight, core });\n      return this.onResizeEditor_param as Object;\n    };\n  }\n\n  private generateID(): string {\n    const min = Math.ceil(1);\n    const max = Math.floor(100000);\n    return `ngxsuneditor_${(\n      Math.floor(Math.random() * (max - min)) + min\n    ).toString()}`;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * Bypass the angular DomSantiziser and trust the given value to be safe HTML.\n * The reason this pipe is needed is because there is no ability to trust a custom whitelist of HTML tags,\n * attributes, and values with a DOM sanitizer, without bypassing the whole sanitizer.\n * https://github.com/angular/angular/issues/19645\n * https://github.com/angular/angular/issues/36650\n */\n@Pipe({ name: 'safeHtml' })\nexport class SafeHtmlPipe implements PipeTransform {\n  constructor(private sanitized: DomSanitizer) {}\n  transform(value: any): SafeHtml {\n    return this.sanitized.bypassSecurityTrustHtml(value);\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-sunview',\n  template: `\n    <div\n      *ngIf=\"bypassSantiziser\"\n      class=\"sun-editor-editable\"\n      [innerHTML]=\"content | safeHtml\"\n    ></div>\n    <div\n      *ngIf=\"!bypassSantiziser\"\n      class=\"sun-editor-editable\"\n      [innerHTML]=\"content\"\n    ></div>\n  `,\n})\nexport class NgxSunViewComponent {\n  /**\n   * HTML content generated by the editor to display\n   */\n  @Input() content: string;\n\n  /**\n   * Bypass angular's DomSanitizer\n   * @default false\n   */\n  @Input() bypassSantiziser: boolean = false;\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { SunEditorOptions } from 'suneditor/src/options';\nimport { NgxSuneditorComponent } from './ngx-suneditor.component';\nimport { NgxSunViewComponent } from './ngx-sunview.component';\nimport { SafeHtmlPipe } from './safeHTML.pipe';\nimport { SUNEDITOR_OPTIONS } from './suneditorOptions.token';\n\n@NgModule({\n  declarations: [NgxSuneditorComponent, NgxSunViewComponent, SafeHtmlPipe],\n  imports: [CommonModule],\n  exports: [NgxSuneditorComponent, NgxSunViewComponent],\n})\nexport class NgxSuneditorModule {\n  /**\n   * Call this method once for editor configuration that should be used for every instance\n   * without the need to provide the options object again\n   *\n   * You can pass options to the options input property of the component directly to override\n   * a configuration for a single instance\n   *\n   * @example\n   * export class appModule {\n   * ...\n   *  imports: [NgxSuneditorModule.forRoot(options)]\n   * }\n   *\n   * export class featureModule {\n   * ...\n   *  imports: [NgxSuneditorModule]\n   * }\n   *\n   * // HTML in appModule\n   * // uses the 'default' options provided by froRoot(...)\n   * <ngx-suneditor></ngx-suneditor>\n   *\n   * // uses the options provided via input\n   * <ngx-suneditor [options]=\"opts\"></ngx-suneditor>\n   *\n   * // uses the 'default' options provided by froRoot(...)\n   * <app-feature-comp-editor></app-feature-comp-editor>>\n   *\n   * // HTML in feature module\n   * // uses the 'default' options provided by froRoot(...)\n   * <ngx-suneditor></ngx-suneditor>\n   *\n   *\n   *\n   * @param sunEditorOptions editor options\n   */\n  static forRoot(\n    sunEditorOptions: SunEditorOptions\n  ): ModuleWithProviders<NgxSuneditorModule> {\n    return {\n      ngModule: NgxSuneditorModule,\n      providers: [\n        {\n          provide: SUNEDITOR_OPTIONS,\n          useValue: sunEditorOptions,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-suneditor\n */\n\nexport * from './lib/ngx-suneditor.component';\nexport * from './lib/ngx-suneditor.module';\nexport * from './lib/ngx-sunview.component';\nexport * from './lib/safeHTML.pipe';\nexport * from './lib/suneditorOptions.token';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SafeHtmlPipe"],"mappings":"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"}