{"version":3,"file":"vcomply-editor.mjs","sources":["../../../projects/marx-editor/src/modal.service.ts","../../../projects/marx-editor/src/nanoid.ts","../../../projects/marx-editor/src/editor-container/marx-editor.component.html.ts","../../../projects/marx-editor/src/editor-menu/marx-link.component.html.ts","../../../projects/marx-editor/src/ui-dialog/ui-dialog-ref.ts","../../../projects/marx-editor/src/ui-dialog/ui-dialog-config.ts","../../../projects/marx-editor/src/tools/tooltip.directive.ts","../../../projects/marx-editor/src/editor-menu/file-modal/file-modal.component.ts","../../../projects/marx-editor/src/editor-menu/file-modal/file-modal.component.html","../../../projects/marx-editor/src/ui-dialog/ui-dialog-injector.ts","../../../projects/marx-editor/src/ui-dialog/ui-insertion.directive.ts","../../../projects/marx-editor/src/ui-dialog/ui-dialog.component.ts","../../../projects/marx-editor/src/ui-dialog/ui-dialog.component.html","../../../projects/marx-editor/src/ui-dialog/ui-dialog.module.ts","../../../projects/marx-editor/src/ui-dialog/ui-dialog.service.ts","../../../projects/marx-editor/src/tools/color-palette/color-palette.component.html.ts","../../../projects/marx-editor/src/tools/color-palette/color-palette.component.ts","../../../projects/marx-editor/src/modal/modal.component.html.ts","../../../projects/marx-editor/src/modal/modal.component.ts","../../../projects/marx-editor/src/tools/click-outside.directive.ts","../../../projects/marx-editor/src/editor-menu/editor-menu.component.ts","../../../projects/marx-editor/src/editor-menu/editor-menu.component.html","../../../projects/marx-editor/src/editor-menu/marx-files.component.html","../../../projects/marx-editor/src/editor-container/marx-editor.component.ts","../../../projects/marx-editor/src/tools/tools.module.ts","../../../projects/marx-editor/src/editor-container/marx-editor.module.ts","../../../projects/marx-editor/src/public-api.ts","../../../projects/marx-editor/src/vcomply-editor.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n\r\nexport class ModalService {\r\n    private modals: any[] = [];\r\n\r\n    add(modal: any) {\r\n        // add modal to array of active modals\r\n        this.modals.push(modal);\r\n    }\r\n\r\n    remove(id: string) {\r\n        // remove modal from array of active modals\r\n        this.modals = this.modals.filter(x => x.id !== id);\r\n    }\r\n\r\n    open(id: string) {\r\n        // open modal specified by id\r\n        const modal = this.modals.find(x => x.id === id);\r\n        modal.open();\r\n    }\r\n\r\n    close(id: string) {\r\n        // close modal specified by id\r\n        const modal = this.modals.find(x => x.id === id);\r\n        modal.close();\r\n    }\r\n}","const nanoid = (t: number = 21) => {\r\n    let e: string = '';\r\n    const r = crypto.getRandomValues(new Uint8Array(t));\r\n    for(;t--;){\r\n        let n = 63&r[t];\r\n        e += n < 36 ? n.toString(36) : n < 62 ? (n-26).toString(36).toUpperCase() : n<63 ? '_':'-';\r\n    }\r\n    return e;\r\n}\r\n\r\nexport default nanoid;","const template = `<div class=\"editor-container\" (blur)=\"blur()\" #editorContainer>\r\n                        <div class=\"editable-block\" contenteditable=\"true\"\r\n                            [class.bottom]=\"!editorConfig?.toolbarPlacement || editorConfig?.toolbarPlacement === 'bottom'\"\r\n                            [class.top]=\"editorConfig?.toolbarPlacement === 'top'\" [id]=\"editorConfig?.id\" (input)=\"setValue($event.target.innerText)\"\r\n                            (paste)=\"onPaste($event)\" [mentionConfig]=\"mentionConfig\" (closed)=\"mentionClosed()\" (blur)=\"blurContentEditable()\"\r\n                            [attr.placeholder]=\"editorConfig?.placeholder\" [class.collapsible]=\"editorConfig?.isCollapsible\" [class.active]=\"isCollapsible\" style=\"max-height: {{ editorConfig?.maxHeight }};\">\r\n                        </div>\r\n                        <div class=\"editor-tools\"\r\n                            [class.bottom]=\"!editorConfig?.toolbarPlacement || editorConfig?.toolbarPlacement === 'bottom'\"\r\n                            [class.top]=\"editorConfig?.toolbarPlacement === 'top'\">\r\n                            <app-editor-menu (linkInEditor)=\"toolbarClicked($event)\" (imageInEditor)=\"saveImage($event)\"\r\n                                (sendSavedFiles)=\"saveFiles($event)\" (buttonClick)=\"toolbarClicked($event)\" [toolbarConfig]=\"toolbarConfig\"\r\n                                [editorConfig]=\"editorConfig\" [moreOptionsButton]=\"moreOptionsButton\" (setWidth)=\"getMenuWidth($event)\" ></app-editor-menu>\r\n                        </div>\r\n                 </div>`;\r\nexport default template;","const linkTemplate = `<div class=\"popup-container\">\r\n    <div class=\"head\">\r\n        <h3>Insert Link</h3>\r\n        <button class=\"close\" (click)=\"close();\" type=\"button\">&times;</button>\r\n    </div>\r\n    <div class=\"body\">\r\n        <div class=\"link\">\r\n            <label>{{editorConfig?.urlValue ? editorConfig?.urlValue : 'URL'}}</label>\r\n            <input [(ngModel)]=\"linkUrl\" type=\"text\" placeholder=\"{{editorConfig?.urlInputPlaceHolder ? editorConfig?.urlInputPlaceHolder : 'Enter a URL (Example: https://example.com)'}}\">\r\n            <p class=\"error\" *ngIf=\"invalid\">{{editorConfig?.validUrlMesssage ? editorConfig?.validUrlMesssage : 'Please provide a valid URL.'}}</p>\r\n        </div>\r\n\r\n        <div class=\"link\">\r\n            <label>{{editorConfig?.urlText ? editorConfig?.urlText : 'Display Text'}}</label>\r\n            <input [(ngModel)]=\"linkText\" type=\"text\" placeholder=\"{{editorConfig?.textInputPlaceHolder ? editorConfig?.textInputPlaceHolder : 'Enter a display text'}}\">\r\n        </div>\r\n        <div class=\"link\">\r\n            <label>{{editorConfig?.urlTitle ? editorConfig?.urlTitle : 'Title'}}</label>\r\n            <input [(ngModel)]=\"linkTitle\" type=\"text\" placeholder=\"{{editorConfig?.titlePlaceholder? editorConfig?.titlePlaceholder: 'Enter a title'}}\">\r\n        </div>\r\n    </div>\r\n    <div class=\"footer\">\r\n        <button class=\"cancel\" (click)=\"close();\" type=\"button\">Cancel</button>\r\n        <button type=\"button\" (click)=\"save()\" class=\"upload\">Save</button>\r\n    </div>\r\n</div>`;\r\n\r\nexport default linkTemplate;","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n  private readonly afterDialogClosed = new Subject<any>();\r\n  private readonly afterEventEmited = new Subject<any>();\r\n  private readonly afterEventReceived = new Subject<any>();\r\n  afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n  afterEvent: Observable<any> = this.afterEventEmited.asObservable();\r\n  eventReceived: Observable<any> = this.afterEventReceived.asObservable();\r\n  constructor() {}\r\n\r\n  close(result?: any) {\r\n    this.afterDialogClosed.next(result);\r\n  }\r\n\r\n//this function is used to emit an event to the parent reference\r\n  emitEvent(result?:any){\r\n    this.afterEventEmited.next(result)\r\n  }\r\n//this function is used to send an event to the dialog from the parent reference\r\n  sendEvent(result?:any){\r\n    this.afterEventReceived.next(result);\r\n  }\r\n}\r\n","export class DialogConfig<D = any> {\r\n  data?: D;\r\n  position?: any;\r\n  background?: any;\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[csTooltip]',\r\n})\r\nexport class TooltipDirective implements OnInit {\r\n  @Input('csTooltip') tooltipTitle!: string;\r\n  @Input() placement!: string;\r\n  @Input() type: any;\r\n  @Input() tooltipMandatory!: boolean;\r\n  @Input() animate!: boolean;\r\n  tooltip!: HTMLElement;\r\n  offset = 10;\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2) {\r\n  }\r\n  ngOnInit() {\r\n  }\r\n  @HostListener('mouseenter') onMouseEnter() {\r\n    this.hide();\r\n    this.show();\r\n  }\r\n  @HostListener('mouseover') onMouseOver() {\r\n    this.hide();\r\n    this.show();\r\n  }\r\n\r\n  @HostListener('mouseleave') onMouseLeave() {\r\n    this.hide();\r\n  }\r\n  @HostListener('mouseout') onMouseOut() {\r\n    this.hide();\r\n  }\r\n  @HostListener('click') onClick() {\r\n    this.hide();\r\n  }\r\n\r\n  show() {\r\n    this.create();\r\n    const element = this.el.nativeElement;\r\n    if (this.tooltipMandatory === true) {\r\n      this.setPosition();\r\n      this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n    } else {\r\n      if (element.scrollWidth * element.scrollHeight > element.offsetWidth * element.offsetHeight) {\r\n        this.setPosition();\r\n        this.renderer.addClass(this.tooltip, 'ng-tooltip-show');\r\n      }\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    if (document.body.contains(this.tooltip)) {\r\n      if (this.renderer) {\r\n        this.renderer.removeChild(document.body, document.getElementById('tooltip'));\r\n      }\r\n    }\r\n  }\r\n\r\n  create() {\r\n    this.tooltip = this.renderer.createElement('span');\r\n    this.tooltip.setAttribute('id', 'tooltip');\r\n    this.tooltip.innerHTML = this.tooltipTitle;\r\n    this.renderer.appendChild(document.body, this.tooltip);\r\n    this.renderer.addClass(this.tooltip, 'ng-tooltip');\r\n    this.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\r\n    this.renderer.addClass(this.tooltip, `${this.type}`);\r\n    if (this.animate) {\r\n      this.renderer.addClass(this.tooltip, `animate-${this.placement}`);\r\n    }\r\n  }\r\n\r\n  setPosition() {\r\n    const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n    const tooltipPos = this.tooltip.getBoundingClientRect();\r\n    const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n    const w = window.innerWidth;\r\n    const h = window.innerHeight;\r\n    let top;\r\n    let left;\r\n\r\n    if (this.placement === 'top') {\r\n      top = hostPos.top - tooltipPos.height - this.offset;\r\n      left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n    }\r\n\r\n    if (this.placement === 'bottom') {\r\n      if (hostPos.bottom + (tooltipPos.height) > h) {\r\n        top = hostPos.top - tooltipPos.height;\r\n        left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n        this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom`);\r\n        this.renderer.addClass(this.tooltip, `ng-tooltip-top`);\r\n      }\r\n      else {\r\n        top = hostPos.bottom + this.offset;\r\n        left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n      }\r\n    }\r\n\r\n    if (this.placement === 'left') {\r\n      top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n      left = hostPos.left - tooltipPos.width - this.offset;\r\n    }\r\n\r\n    if (this.placement === 'right') {\r\n      top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n      left = hostPos.right + this.offset;\r\n    }\r\n    if (this.placement === 'bottom-right') {\r\n      top = hostPos.bottom + this.offset;\r\n      left = hostPos.left - (tooltipPos.width - 28);\r\n    }\r\n    if (this.placement === 'bottom-left') {\r\n      if (hostPos.bottom + (tooltipPos.height) > h) {\r\n        top = hostPos.top - tooltipPos.height;\r\n        left = hostPos.left;\r\n        this.renderer.removeClass(this.tooltip, `ng-tooltip-bottom-left`);\r\n        this.renderer.addClass(this.tooltip, `ng-tooltip-top-left`);\r\n      }\r\n      else {\r\n        top = hostPos.bottom + this.offset;\r\n        left = hostPos.left;\r\n      }\r\n    }\r\n    this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n    this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n    if (hostPos.width > 300) {\r\n      this.renderer.setStyle(\r\n        this.tooltip, 'max-width', `${hostPos.width}px`\r\n      );\r\n    }\r\n  }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DialogConfig } from '../../ui-dialog/ui-dialog-config';\r\nimport { DialogRef } from '../../ui-dialog/ui-dialog-ref';\r\n\r\n@Component({\r\n  selector: 'lib-file-modal',\r\n  templateUrl: './file-modal.component.html',\r\n  styleUrls: ['../editor-menu.component.less', '../../theme.less','./file-modal.component.less']\r\n})\r\nexport class FileModalComponent  {\r\n\r\n  @Input() editorConfig!: any;\r\n canUploadMultiple: boolean = true;\r\n  @Output() filesEmitter: EventEmitter<any[]> = new EventEmitter();\r\n  @Output() closeEmitter: EventEmitter<any> = new EventEmitter();\r\n  enter: boolean;\r\n  filesArray: any[];\r\n  zIndexValue = 99999999;\r\n  constructor(private cdr:ChangeDetectorRef,  private dialog: DialogRef,\r\n    public dialogConfig:DialogConfig ) {\r\n      if(this.dialogConfig.data) {\r\n        this.editorConfig = this.dialogConfig.data;\r\n        if(this.dialogConfig?.data?.canUploadMultipleFile !== undefined) {\r\n          this.canUploadMultiple = this.dialogConfig?.data?.canUploadMultipleFile;\r\n        }\r\n\r\n      }\r\n    this.reset();\r\n  }\r\n\r\n  /**\r\n   * Reset the values\r\n   */\r\n  reset(): void {\r\n    this.filesArray = [];\r\n  }\r\n\r\n  save(): void {\r\n    this.dialog.close(this.filesArray)\r\n    // this.filesEmitter.emit(this.filesArray);\r\n    // this.close();\r\n  }\r\n\r\n  close(): void {\r\n    // this.reset();\r\n    // this.closeEmitter.emit();\r\n    this.dialog.close();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragenter event\r\n   */\r\n   dragenter(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = true;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragover event\r\n   */\r\n  dragover(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = true;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragend event\r\n   */\r\n  dragend(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = false;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragleave event\r\n   */\r\n  dragleave(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = false;\r\n  }\r\n\r\n  // Drag Event code ends\r\n\r\n  /**\r\n *\r\n * @param event - Triggered when a file is dropped in the drag & drop area\r\n */\r\n  dropFiles(event: DragEvent): void {\r\n\r\n    if(event?.dataTransfer?.files && event?.dataTransfer?.files.length > 0) {\r\n      for (let i = 0; i <  event.dataTransfer.files.length; i++) {\r\n        this.filesArray.push({file: event.dataTransfer.files[i], extension: this.getFileExtension(event.dataTransfer.files[i])});\r\n      }\r\n    }\r\n    this.enter = false;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param fileIndex - Index from where file needs to be removed\r\n   */\r\n  removeFile(fileIndex: number): void {\r\n    this.filesArray.splice(fileIndex, 1);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Event triggered when user clicks on browse button of the file popup\r\n   */\r\n  filesFromInput(event: any): void {\r\n    for (let i = 0; i <  event.target.files.length; i++) {\r\n      this.filesArray.push({file: event.target.files[i], extension: this.getFileExtension(event.target.files[i])});\r\n    }\r\n    event.target.value = '';\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param file - Represents a file whose extension needs to be returned\r\n   * @returns a string value which represents an extension\r\n   */\r\n   getFileExtension(file: File): string {\r\n    if(file) {\r\n      const index = file?.name.lastIndexOf('.');\r\n      if(index === -1) {\r\n        return 'file';\r\n      } else {\r\n        return file?.name?.slice(index + 1);\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n}\r\n","<div class=\"popup-modal\" [style.zIndex]=\"zIndexValue\" >\r\n    <div class=\"popup-modal-body\" >\r\n        <div class=\"popup-container\" >\r\n            <div class=\"head\">\r\n                <h3>Attach File{{canUploadMultiple ? 's':''}}</h3>\r\n                <button class=\"close\" (click)=\"close()\" type=\"button\">&times;</button>\r\n            </div>\r\n            <div class=\"body\">\r\n                <div *ngIf=\" canUploadMultiple || !filesArray?.length\"  class=\"drag-drop\" (dragenter)=\"dragenter($event)\" (dragover)=\"dragover($event)\" (dragend)=\"dragend($event)\"\r\n                    (dragleave)=\"dragleave($event)\" (drop)=\"dropFiles($event)\" [class.enter]=\"enter\">\r\n                    <input type=\"file\" id=\"browse\" (change)=\"filesFromInput($event)\" [multiple]=\"canUploadMultiple\">\r\n                    <div class=\"container\">\r\n                        <span>Drop file{{canUploadMultiple ? 's':''}} here or browse to upload</span>\r\n                        <label for=\"browse\">Browse</label>\r\n                    </div>\r\n                </div>\r\n                <div class=\"file-row\">\r\n                    <div class=\"file-col\" *ngFor=\"let fileObj of filesArray; let i = index\">\r\n                        <button (click)=\"removeFile(i)\" type=\"button\">\r\n                            <span>&times;</span>\r\n                        </button>\r\n                        <div class=\"file-item\">\r\n                            <div class=\"file-image\">\r\n                                <span class=\"file {{fileObj.extension}}\">\r\n                                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"2672\" height=\"1024\"\r\n                                        viewBox=\"0 0 2672 1024\">\r\n                                        <g id=\"icomoon-ignore\">\r\n                                        </g>\r\n                                        <path\r\n                                            d=\"M2662.047 170.706c0-94.256-76.39-170.647-170.647-170.647h-2320.8c-94.256 0-170.647 76.391-170.647 170.647s76.391 170.647 170.647 170.647h2320.8c94.257 0 170.647-76.391 170.647-170.647zM170.601 682.647c-94.256 0-170.647 76.391-170.647 170.647s76.391 170.647 170.647 170.647h784.977c94.257 0 170.647-76.39 170.647-170.647s-76.39-170.647-170.647-170.647h-784.977z\">\r\n                                        </path>\r\n                                    </svg>\r\n                                    <span class=\"format\">\r\n                                        {{fileObj.extension}}\r\n                                    </span>\r\n                                </span>\r\n                            </div>\r\n                            <p class=\"file-title\" [csTooltip]=\"fileObj.file.name\" placement=\"bottom\" delay=\"0\" type=\"black\"\r\n                                [tooltipMandatory]=\"true\">{{fileObj.file.name}}</p>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"footer\">\r\n                <button class=\"cancel\" (click)=\"close()\" type=\"button\">Cancel</button>\r\n                <button (click)=\"save()\" class=\"upload\" type=\"button\" [class.disabled]=\"filesArray.length === 0\">Save</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div class=\"popup-modal-background\" [style.zIndex]=\"zIndexValue - 1\"></div>\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n  constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n  get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n  // get(token: any, notFoundValue?: any){return; }\r\n  get(token: any, notFoundValue?: any, flags?: any) {\r\n    const value = this.dialogAdditionalTokens.get(token);\r\n    if (value) {\r\n      return value;\r\n    }\r\n    return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n  }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\nimport { DialogConfig } from './ui-dialog-config';\r\nimport { DialogRef } from './ui-dialog-ref';\r\nimport { InsertionDirective } from './ui-insertion.directive';\r\n\r\n@Component({\r\n  selector: 'ui-dialog',\r\n  templateUrl: './ui-dialog.component.html',\r\n  styleUrls: ['./ui-dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n  componentRef!: ComponentRef<any>;\r\n  position: any;\r\n  background: any;\r\n  @ViewChild(InsertionDirective, { static: true })\r\n  insertionPoint!: InsertionDirective;\r\n  animation = true;\r\n\r\n  private readonly onDialogClose = new Subject<any>();\r\n  public onClose = this.onDialogClose.asObservable();\r\n\r\n  childComponentType!: Type<any>;\r\n\r\n  constructor(\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    private cd: ChangeDetectorRef,\r\n    private dialogRef: DialogRef,\r\n    public config: DialogConfig,\r\n    private router: Router\r\n  ) {\r\n    // this.componentRef = this.componentRef;\r\n    // this.animate =   this.animate;\r\n    // this.insertionPoint =  this.insertionPoint;\r\n    // this.childComponentType =  this.childComponentType;\r\n  }\r\n  ngOnInit() {\r\n    this.position = this.config.position;\r\n    this.background = this.config.background;\r\n    document.body.style.overflow = 'hidden';\r\n    setTimeout(() => {\r\n      this.animation = false;\r\n    }, 200);\r\n    this.routeAction();\r\n  }\r\n\r\n  routeAction() {\r\n    this.router.events.subscribe((event: any) => {\r\n      if (event instanceof NavigationStart) {\r\n        // Show loading indicator\r\n      }\r\n      if (event instanceof NavigationEnd) {\r\n        // Hide loading indicator\r\n        this.dialogRef.close();\r\n      }\r\n      if (event instanceof NavigationError) {\r\n        // Hide loading indicator\r\n        // Present error to user\r\n      }\r\n    });\r\n  }\r\n  ngAfterViewInit() {\r\n    this.loadChildComponent(this.childComponentType);\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  onOverlayClicked(evt: MouseEvent) {\r\n    // this.dialogRef.close();\r\n  }\r\n\r\n  onDialogClicked(evt: MouseEvent) {\r\n    evt.stopPropagation();\r\n  }\r\n\r\n  loadChildComponent(componentType: Type<any>) {\r\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n    const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n    viewContainerRef.clear();\r\n\r\n    this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.componentRef) {\r\n      this.componentRef.destroy();\r\n    }\r\n  }\r\n\r\n  close() {\r\n    this.onDialogClose.next(true);\r\n    document.body.style.overflow = 'auto';\r\n  }\r\n}\r\n","<div\r\n  class=\"overlay\"\r\n  (click)=\"onOverlayClicked($event)\"\r\n  [ngClass]=\"{\r\n    top: position === 'TOP',\r\n    right: position === 'RIGHT',\r\n    bottom: position === 'BOTTOM',\r\n    left: position === 'LEFT',\r\n    center: position === 'CENTER',\r\n    black: background === 'black'\r\n  }\"\r\n>\r\n  <div\r\n    class=\"dialog\"\r\n    [class.animate]=\"animation\"\r\n    (click)=\"onDialogClicked($event)\"\r\n    [ngClass]=\"{\r\n      top: position === 'TOP',\r\n      right: position === 'RIGHT',\r\n      bottom: position === 'BOTTOM',\r\n      left: position === 'LEFT',\r\n      center: position === 'CENTER'\r\n    }\"\r\n  >\r\n    <ng-template appInsertion></ng-template>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogRef } from './ui-dialog-ref';\r\nimport { DialogComponent } from './ui-dialog.component';\r\nimport { InsertionDirective } from './ui-insertion.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [DialogComponent, InsertionDirective],\r\n  entryComponents: [DialogComponent],\r\n  providers: [DialogRef],\r\n})\r\nexport class DialogModule { }\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogConfig } from './ui-dialog-config';\r\nimport { DialogInjector } from './ui-dialog-injector';\r\nimport { DialogRef } from './ui-dialog-ref';\r\nimport { DialogComponent } from './ui-dialog.component';\r\nimport { DialogModule } from './ui-dialog.module';\r\n\r\n\r\n@Injectable({\r\n  providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n  dialogComponentRef: ComponentRef<DialogComponent>[] = [];\r\n  constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) { }\r\n\r\n  public open(componentType: Type<any>, config: DialogConfig) {\r\n    const dialogRef = this.appendDialogComponentToBody(config);\r\n    this.dialogComponentRef[this.dialogComponentRef?.length - 1].instance.childComponentType = componentType;\r\n    return dialogRef\r\n  }\r\n\r\n  private appendDialogComponentToBody(config: DialogConfig) {\r\n    const map = new WeakMap();\r\n    map.set(DialogConfig, config);\r\n\r\n    const dialogRef = new DialogRef();\r\n    map.set(DialogRef, dialogRef);\r\n\r\n    const sub = dialogRef.afterClosed.subscribe(() => {\r\n      this.removeDialogComponentFromBody();\r\n      sub.unsubscribe();\r\n    });\r\n\r\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n    const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n    this.appRef.attachView(componentRef.hostView);\r\n\r\n\r\n\r\n    const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n    document.body.appendChild(domElem);\r\n\r\n    this.dialogComponentRef.push(componentRef)\r\n    this.dialogComponentRef[this.dialogComponentRef?.length - 1].instance.onClose.subscribe(() => {\r\n      this.removeDialogComponentFromBody();\r\n    });\r\n\r\n    return dialogRef;\r\n  }\r\n\r\n  private removeDialogComponentFromBody() {\r\n    this.appRef.detachView(this.dialogComponentRef[this.dialogComponentRef?.length - 1].hostView);\r\n    this.dialogComponentRef.pop()?.destroy();\r\n    \r\n\r\n  }\r\n\r\n}\r\n","const template = `<div class=\"color-palette\">\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"red\"><span class=\"red\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\"  [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"orange\"><span class=\"orange\" ></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"yellow\"><span class=\"yellow\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"purple\"><span class=\"purple\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"teal\"><span class=\"teal\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"green\"><span class=\"green\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"grey\"><span class=\"grey\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"black\"><span class=\"black\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"white\"><span class=\"white\"></span>\r\n    </div>\r\n    <div class=\"colors\">\r\n        <input type=\"radio\" name=\"color\" [(ngModel)]=\"color\" (ngModelChange)=\"change($event)\" value=\"transparent\"><span class=\"transparent\"></span>\r\n    </div>\r\n</div>`\r\n\r\nexport default template;\r\n ","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport template from './color-palette.component.html';\r\n@Component({\r\n  selector: 'app-color-palette',\r\n  template: template + ``,\r\n  styleUrls: ['./color-palette.component.less'],\r\n})\r\nexport class ColorPaletteComponent {\r\n  @Input() color: string;\r\n  @Output() colorChange: EventEmitter<string> = new EventEmitter();\r\n  constructor() {  }\r\n\r\n  change(event: string): void {\r\n    this.colorChange.emit(event);\r\n  }\r\n}\r\n","const template = `<div class=\"popup-modal\" [style.zIndex]=\"zIndexValue\">\r\n    <div class=\"popup-modal-body\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n<div class=\"popup-modal-background\" [style.zIndex]=\"zIndexValue - 1\"></div>`\r\n\r\nexport default template;","import { Component, OnInit, ViewEncapsulation, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ModalService } from '../modal.service';\r\nimport template from './modal.component.html';\r\n\r\n@Component({\r\n  selector: 'marx-modal',\r\n  template: template + ``,\r\n  styleUrls: ['./modal.component.less'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MarxModalComponent implements OnInit, OnChanges {\r\n\r\n  @Input() id: string;\r\n  @Input() zIndexValue: number;\r\n  private element: any;\r\n\r\n  constructor(private modalService: ModalService, private el: ElementRef) {\r\n      this.element = el.nativeElement;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if(changes.zIndexValue) {\r\n      this.zIndexValue =  this.zIndexValue ?? 100000;\r\n      if(this.zIndexValue > 2147483647) {\r\n          this.zIndexValue = 2147483647;\r\n      } else if (this.zIndexValue < -2147483647) {\r\n          this.zIndexValue = -2147483647;\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n      // ensure id attribute exists\r\n      if (!this.id) {\r\n          console.error('modal must have an id');\r\n          return;\r\n      }\r\n\r\n      // move element to bottom of page (just before </body>) so it can be displayed above everything else\r\n      document.body.appendChild(this.element);\r\n\r\n      // close modal on background click\r\n      this.element.addEventListener('click', el => {\r\n          if (el.target.className === 'jw-modal') {\r\n              this.close();\r\n          }\r\n      });\r\n\r\n      // add self (this modal instance) to the modal service so it's accessible from controllers\r\n      this.modalService.add(this);\r\n  }\r\n\r\n  // remove self from modal service when component is destroyed\r\n  ngOnDestroy(): void {\r\n      this.modalService.remove(this.id);\r\n      this.element.remove();\r\n  }\r\n\r\n  // open modal\r\n  open(): void {\r\n      this.element.style.display = 'block';\r\n      document.body.classList.add('jw-modal-open');\r\n  }\r\n\r\n  // close modal\r\n  close(): void {\r\n      this.element.style.display = 'none';\r\n      document.body.classList.remove('jw-modal-open');\r\n  }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[clickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n\r\n  constructor(private elementRef: ElementRef) {\r\n  }\r\n  @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\r\n\r\n  @HostListener('document:click', ['$event.target']) onMouseEnter(targetElement) {\r\n    const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n    if (!clickedInside) {\r\n      this.clickOutside.emit(null);\r\n    }\r\n  }\r\n\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ViewChild,\r\n  ElementRef,\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { EditorConfig, ToolbarConfig } from '../editor-config-interface';\r\n\r\nimport linkTemplate from './marx-link.component.html';\r\nimport {ModalService} from '../modal.service';\r\nimport { DialogService } from '../ui-dialog/ui-dialog.service';\r\nimport { FileModalComponent } from './file-modal/file-modal.component';\r\n@Component({\r\n  selector: 'app-editor-menu',\r\n  templateUrl: './editor-menu.component.html',\r\n  styleUrls: ['./editor-menu.component.less', '../theme.less'],\r\n})\r\n\r\nexport class EditorMenuComponent implements AfterViewInit {\r\n  @Input()  editorConfig!: any;\r\n  @Input()  toolbarConfig!: any;\r\n  @Input()  moreOptionsButton: boolean;\r\n  @Output() buttonClick: EventEmitter<any> = new EventEmitter();\r\n  @Output() sendSavedFiles: EventEmitter<any> = new EventEmitter();\r\n  @Output() imageInEditor: EventEmitter<any> = new EventEmitter();\r\n  @Output() linkInEditor: EventEmitter<any> = new EventEmitter();\r\n  @Output() setWidth: EventEmitter<any> = new EventEmitter();\r\n  @ViewChild('menuLeft') menuLeft: ElementRef;\r\n  @ViewChild('menuRight') menuRight: ElementRef;\r\n  enter = false;\r\n  upload = false;\r\n  uploadImage = false;\r\n  alignment = false;\r\n  addLink = false;\r\n  listStyle = false;\r\n  filesArray: any[];\r\n  ShowFiles: boolean;\r\n  fontStyle = false;\r\n  fontSize = false;\r\n  fillColor: boolean[];\r\n  setTextColor = false;\r\n  showAlert: boolean = false;\r\n  alertMsg: string;\r\n  savedFiles: any = [];\r\n  savedImages:any=[]\r\n  imgUrl: any = []; //img url array\r\n  imgArr: Array<object> = [];\r\n  linkUrl:string\r\n  linkText:string\r\n  linkTitle:string\r\n  inValidUrl:boolean\r\n  invalidUrlMessage:boolean\r\n  inValidLinkTitle=''\r\n  inValidLinkText=''\r\n  savedLinks:object={ };\r\n  fontFamily = false;\r\n  moreOptions = false;\r\n  color = false;\r\n\r\n  popupZIndex: number;\r\n\r\n\r\n  image: any;\r\n  fontType: string[];\r\n\r\n  constructor(private modal: ModalService, private dialog:DialogService) {\r\n    this.filesArray = [];\r\n    this.fillColor = Array(2).fill(false);\r\n    this.image = null;\r\n    this.fontType = ['verdana', 'arial', 'georgia', 'impact', 'courier new', 'tahoma']\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n      const left: number = this.menuLeft?.nativeElement?.offsetWidth;\r\n      const right: number = this.menuRight?.nativeElement?.offsetWidth;\r\n      this.setWidth.emit({left,right});\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Event triggered when the toolbar button is clicked\r\n   */\r\n  buttonClicked(event: any): void {\r\n    event.stopPropagation();\r\n    if (event?.target?.dataset?.id) {\r\n        this.buttonClick.emit(event?.target?.dataset);\r\n    }\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param type - Represents the color which is\r\n   */\r\n  colorChange(type: 'textColor' | 'fillColor'){\r\n    this.buttonClick.emit({\r\n      id: type,\r\n      value: type === 'textColor' ? this.toolbarConfig?.fontColor : this.toolbarConfig?.backgroundColor\r\n    });\r\n    this.color = false;\r\n  }\r\n\r\n  /**\r\n   * Opens the color tab\r\n   */\r\n  openColorTab(): void {\r\n    this.color = !this.color;\r\n    if(this.fillColor.every(item => item === false)) {\r\n      this.fillColor[0] = true;\r\n    }\r\n  }\r\n\r\n  // Image popup code begins\r\n\r\n  /**\r\n   * Closes the image popover\r\n   */\r\n  clickOutsideImage(): void {\r\n    this.image = null;\r\n    this.uploadImage = false;\r\n  }\r\n\r\n  /**\r\n   * @param event - Dropped event triggered\r\n  */\r\n  dropImage(event: any) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if(event?.dataTransfer?.files && event?.dataTransfer?.files.length > 0) {\r\n      if(this.validImage(event?.dataTransfer?.files[0])) {\r\n        this.showAlert = false;\r\n        this.readImageFile(event?.dataTransfer?.files[0]);\r\n      } else {\r\n        this.alertMsg = 'Please choose image file only';\r\n        this.showAlert = true;\r\n      }\r\n    }\r\n    this.enter = false;\r\n  }\r\n\r\n  /**\r\n   * @param file - File that needs to be checked\r\n   * @returns true or false based on if the file is an image file or not\r\n  */\r\n  validImage(file: File): boolean {\r\n    return false;\r\n    // const fileExtension = this.getFileExtension(file);\r\n    // switch(fileExtension) {\r\n    //   case 'jpg':\r\n    //   case 'jpeg':\r\n    //   case 'png':\r\n    //   case 'gif': return true;\r\n\r\n    //   default: return false;\r\n    // }\r\n  }\r\n\r\n  /**\r\n   * Function is invoked after the final save button is clicked from the image popup\r\n  */\r\n  saveImage(): void{\r\n    this.imageInEditor.emit(this.image);\r\n    this.clickOutsideImage();\r\n  }\r\n\r\n  /**\r\n   * @param file - Represents the image file that needs to be previewed\r\n  */\r\n  readImageFile(file: File): void {\r\n    const fReader = new FileReader();\r\n    fReader.readAsDataURL(file);\r\n    fReader.onloadend =  (event) => {\r\n      this.image = {\r\n        url: event.target.result,\r\n        file\r\n      };\r\n    };\r\n  }\r\n\r\n  /**\r\n   * @param event - Event which is triggered when the user hits the browse button in image popup and selects a file\r\n  */\r\n  changeImage(event: any): void {\r\n    if(this.validImage(event?.target?.files[0])) {\r\n      this.showAlert = false;\r\n      this.readImageFile(event?.target?.files[0]);\r\n    } else {\r\n        this.alertMsg = 'Please choose image file only';\r\n        this.showAlert = true;\r\n    }\r\n  }\r\n\r\n  // Image popup code ends\r\n\r\n  /**\r\n   * Function is invoked when the user clicks on the save button from the add files popover\r\n  */\r\n  saveFiles(event: any[]): void {\r\n    this.sendSavedFiles.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Function is invoked when the user clicks on the save button from the add link popover\r\n  */\r\n  saveLink(event: any): void {\r\n    this.linkInEditor.emit({value: event, id: 'link'});\r\n  }\r\n\r\n  alignPopover(): void {\r\n    this.alignment = !this.alignment;\r\n    this.listStyle = false;\r\n    this.fontStyle = false;\r\n    this.moreOptions = false;\r\n    this.fontFamily = false;\r\n  }\r\n\r\n  listStyles(): void {\r\n    this.listStyle = !this.listStyle;\r\n    this.alignment = false;\r\n    this.fontStyle = false;\r\n    this.moreOptions = false;\r\n    this.fontFamily = false;\r\n  }\r\n\r\n  fontStylePopover(): void {\r\n    this.fontStyle = !this.fontStyle;\r\n    this.listStyle = false;\r\n    this.alignment = false;\r\n    this.moreOptions = false;\r\n    this.fontFamily = false;\r\n  }\r\n\r\n  fontSizePopover() {\r\n    this.fontStyle = false;\r\n    this.listStyle = false;\r\n    this.alignment = false;\r\n    this.moreOptions = false;\r\n    this.fontFamily = false;\r\n    this.fontSize = !this.fontSize;\r\n  }\r\n\r\n  openfontFamily() {\r\n    this.fontFamily = !this.fontFamily;\r\n    this.fontStyle = false;\r\n    this.listStyle = false;\r\n    this.alignment = false;\r\n    this.moreOptions = false;\r\n  }\r\n\r\n  showMoreOptions() {\r\n    this.moreOptions = !this.moreOptions;\r\n    this.fontFamily = false;\r\n    this.fontStyle = false;\r\n    this.listStyle = false;\r\n    this.alignment = false;\r\n  }\r\n\r\n  clickOutsideMoreOptions() {\r\n    this.moreOptions = false;\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n  }\r\n\r\n  closePopover(): void {\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n  }\r\n\r\n  closeAlignPopover(): void {\r\n    this.moreOptions = false;\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n  }\r\n\r\n  closeListStylesPopover(): void {\r\n    this.moreOptions = false;\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n  }\r\n\r\n  closeFontSizePopover(): void {\r\n    this.moreOptions = false;\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n    this.fontSize = false;\r\n  }\r\n\r\n  closeFontStylePopover(): void {\r\n    this.moreOptions = false;\r\n    this.filesArray = [];\r\n    this.alignment = false;\r\n    this.uploadImage = false;\r\n    this.upload = false;\r\n    this.addLink = false;\r\n    this.listStyle = false;\r\n    this.ShowFiles = false;\r\n    this.fontStyle = false;\r\n    this.fillColor = Array(2).fill(false);\r\n    this.setTextColor = false;\r\n  }\r\n\r\n  hideAlert(): void {\r\n    this.showAlert = false;\r\n  }\r\n\r\n  openModal(id: string) {\r\n    this.modal.open(id + '-' + this.editorConfig?.id);\r\n  }\r\n\r\n openFilePicker(){\r\n   const ref =  this.dialog.open(FileModalComponent,{  position: 'CENTER',\r\n    background: 'black', data: this.editorConfig});\r\n    ref.afterClosed.subscribe((res:any)=>{\r\n      console.log(\"res\",res);\r\n      if(res){\r\n        this.sendSavedFiles.emit(res);\r\n      }\r\n\r\n    })\r\n }\r\n  closeModal(id: string) {\r\n      this.modal.close(id + '-' + this.editorConfig?.id);\r\n      this.addLink = false;\r\n      this.upload = false;\r\n  }\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'marx-link',\r\n  template: linkTemplate + ``,\r\n  styleUrls: ['./editor-menu.component.less', '../theme.less'],\r\n})\r\n\r\nexport class EditorLinkComponent {\r\n  @Input() editorConfig!: any;\r\n  @Output() linkEmitter: EventEmitter<{linkUrl: string, linkTitle: string, linkText: string}> = new EventEmitter();\r\n  @Output() closeEmitter: EventEmitter<any> = new EventEmitter();\r\n  linkTitle: string;\r\n  linkText: string;\r\n  linkUrl: string;\r\n  rex: RegExp;\r\n  invalid: boolean;\r\n  constructor() {\r\n    this.reset();\r\n    this.rex = /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/gi;\r\n  }\r\n\r\n  /**\r\n   * Reset the values\r\n   */\r\n  reset(): void {\r\n    this.linkText = '';\r\n    this.linkTitle = '';\r\n    this.linkUrl = '';\r\n    this.invalid = false;\r\n  }\r\n\r\n   /**\r\n   * Save the link\r\n   */\r\n  save(): void {\r\n    if(!this.linkUrl || !this.linkUrl?.match(this.rex)) { //check url is valid or not\r\n        this.invalid = true;\r\n    } else {\r\n      if(!this.linkText || this.linkText.trim() === '') {\r\n        this.linkText = this.linkUrl;\r\n      }\r\n      if(!this.linkTitle || this.linkTitle.trim() === '') {\r\n        this.linkTitle = this.linkText;\r\n      }\r\n      this.linkEmitter.emit({linkTitle: this.linkTitle, linkText: this.linkText, linkUrl: this.linkUrl});\r\n      this.close();\r\n    }\r\n  }\r\n\r\n   /**\r\n   * Close the popup\r\n   */\r\n  close(): void {\r\n    this.reset();\r\n    this.closeEmitter.emit(null);\r\n  }\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'marx-files',\r\n  templateUrl: './marx-files.component.html',\r\n  styleUrls: ['./editor-menu.component.less', '../theme.less'],\r\n})\r\n\r\nexport class EditorFilesComponent {\r\n  @Input() editorConfig!: any;\r\n  @Output() filesEmitter: EventEmitter<any[]> = new EventEmitter();\r\n  @Output() closeEmitter: EventEmitter<any> = new EventEmitter();\r\n  enter: boolean;\r\n  filesArray: any[];\r\n\r\n  constructor(private cdr:ChangeDetectorRef) {\r\n    this.reset();\r\n  }\r\n\r\n  /**\r\n   * Reset the values\r\n   */\r\n  reset(): void {\r\n    this.filesArray = [];\r\n  }\r\n\r\n  save(): void {\r\n    this.filesEmitter.emit(this.filesArray);\r\n    this.close();\r\n  }\r\n\r\n  close(): void {\r\n    this.reset();\r\n    this.closeEmitter.emit();\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragenter event\r\n   */\r\n   dragenter(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = true;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragover event\r\n   */\r\n  dragover(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = true;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragend event\r\n   */\r\n  dragend(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = false;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Represents a dragleave event\r\n   */\r\n  dragleave(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.enter = false;\r\n  }\r\n\r\n  // Drag Event code ends\r\n\r\n  /**\r\n *\r\n * @param event - Triggered when a file is dropped in the drag & drop area\r\n */\r\n  dropFiles(event: DragEvent): void {\r\n\r\n    if(event?.dataTransfer?.files && event?.dataTransfer?.files.length > 0) {\r\n      for (let i = 0; i <  event.dataTransfer.files.length; i++) {\r\n        this.filesArray.push({file: event.dataTransfer.files[i], extension: this.getFileExtension(event.dataTransfer.files[i])});\r\n      }\r\n    }\r\n    this.enter = false;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param fileIndex - Index from where file needs to be removed\r\n   */\r\n  removeFile(fileIndex: number): void {\r\n    this.filesArray.splice(fileIndex, 1);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param event - Event triggered when user clicks on browse button of the file popup\r\n   */\r\n  filesFromInput(event: any): void {\r\n    for (let i = 0; i <  event.target.files.length; i++) {\r\n      this.filesArray.push({file: event.target.files[i], extension: this.getFileExtension(event.target.files[i])});\r\n    }\r\n    event.target.value = '';\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param file - Represents a file whose extension needs to be returned\r\n   * @returns a string value which represents an extension\r\n   */\r\n   getFileExtension(file: File): string {\r\n    if(file) {\r\n      const index = file?.name.lastIndexOf('.');\r\n      if(index === -1) {\r\n        return 'file';\r\n      } else {\r\n        return file?.name?.slice(index + 1);\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n}\r\n","\r\n<div class=\"editor-menu\" (click)=\"buttonClicked($event)\">\r\n    <div class=\"left\" #menuLeft>\r\n        <!-- Bold -->\r\n        <div class=\"col\" data-id=\"bold\">\r\n            <button data-id=\"bold\" [class.active]=\"toolbarConfig?.bold\" [csTooltip]=\"'Bold'\" placement=\"bottom\"\r\n                delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path\r\n                        d=\"M788.842 511.997c65.313-52.843 107.156-133.625 107.156-224.001 0-158.811-129.187-287.998-288-287.998h-479.998v128.001h63.999v768.001h-63.999v128.001h480c158.813 0 288-129.187 288-288-0.002-90.378-41.845-171.16-107.158-224.003zM607.998 895.997h-288v-319.999h288c88.22 0 159.999 71.782 159.999 159.999s-71.779 159.999-159.999 159.999zM607.998 447.998h-288v-319.999h288c88.22 0 159.999 71.782 159.999 159.999s-71.779 159.999-159.999 159.999z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- Italic -->\r\n        <div class=\"col\" data-id=\"italic\">\r\n            <button data-id=\"italic\" [class.active]=\"toolbarConfig?.italic\" [csTooltip]=\"'Italic'\" placement=\"bottom\"\r\n                delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path\r\n                        d=\"M895.999 128.001v-128.001h-384v128.001h94.949l-329.141 767.998h-149.807v128.001h384v-128.001h-94.949l329.138-767.998z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- Underline -->\r\n        <div class=\"col\" data-id=\"underline\">\r\n            <button data-id=\"underline\" [class.active]=\"toolbarConfig?.underline\" [csTooltip]=\"'Underline'\"\r\n                placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path\r\n                        d=\"M124.6 934.4h774.8v89.6h-774.8v-89.6zM685.2 0v89.6h62.2v422.4c0 129.8-105.6 235.6-235.6 235.6s-235.4-105.8-235.4-235.6v-422.4h62.2v-89.6h-214v89.6h62.2v422.4c0 179.2 145.8 325.2 325.2 325.2s325.2-146 325.2-325.2v-422.4h62.2v-89.6h-214.2z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- Line through -->\r\n        <div class=\"col\" data-id=\"strikeThrough\">\r\n            <button data-id=\"strikeThrough\" [class.active]=\"toolbarConfig?.strikeThrough\" [csTooltip]=\"'Strike Through'\"\r\n                placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path\r\n                        d=\"M124.6 467.2h774.8v89.6h-774.8v-89.6zM682 616c41.6 34.2 65.4 84.6 65.4 138.6 0 99.2-80.6 179.8-179.8 179.8h-380.8v89.6h380.8c148.6 0 269.4-120.8 269.4-269.4 0-51.4-14.8-101.2-42.8-145h-120l7.8 6.4zM342 408c-41.6-34.2-65.4-84.6-65.4-138.6 0-99.2 80.6-179.8 179.8-179.8h380.8v-89.6h-380.8c-148.6 0-269.6 120.8-269.6 269.4 0 50.6 14.4 99.6 41.4 143h119l-5.2-4.4z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- list -->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"closeListStylesPopover(); listStyle = false;\">\r\n            <div class=\"popover-overlay\" *ngIf=\"listStyle\" (click)=\"listStyle = false\"></div>\r\n            <button [class.active]=\"listStyle|| toolbarConfig?.orderedList || toolbarConfig?.unorderedList\"\r\n                (click)=\"listStyles()\" [csTooltip]=\"'List Option'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path\r\n                        d=\"M270 480.6h754v101.2h-754v-101.2zM270 812h754v101.2h-754v-101.2zM270 126.8h754v101.2h-754v-101.2zM36 126.8h101.2v101.2h-101.2v-101.2zM36 480.6h101.2v101.2h-101.2v-101.2zM36 812h101.2v101.2h-101.2v-101.2z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover small\" *ngIf=\"listStyle\" (click)=\"closeListStylesPopover()\">\r\n                <ul class=\"option-list\">\r\n                    <li data-id=\"orderedList\">\r\n                        <!-- List with Number -->\r\n                        <button data-id=\"orderedList\" [class.active]=\"toolbarConfig?.orderedList\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path\r\n                                    d=\"M270 480.6h754v101.2h-754v-101.2zM270 812h754v101.2h-754v-101.2zM270 126.8h754v101.2h-754v-101.2zM65.4 280h65v-216h-90.2v61.2h25.2zM81.6 488.8c0.2-18.4 9.4-18.4 13-18.4 11.2 0 11.2 7.6 11.2 14.2 0 24.4-34.8 53.4-68.4 81.6-4.6 3.8-9.2 7.8-13.8 11.6l-5 4.2v47.2h155.4v-58h-53c25-23.4 48.8-52.8 48.8-89 0-43-29.4-70.8-74.8-70.8-45.2 0-75.2 30-76.6 76.6l-0.4 14.4h63.4l0.2-13.6zM154.6 861.6c9.6-10 16.6-24.2 16.6-42.2 0-31.8-22.6-63.8-73.4-63.8-45.2 0-74.4 25.8-76.6 67.2l-0.8 14.8h44v53.8h-46.4l0.6 14.6c1.8 44 32.8 71.4 80.8 71.4 45 0 75.2-27 75.2-67.4 0-20.4-7-37.2-20-48.4zM85.8 834.4h-2.6l1-9.2c1.2-9.6 7-10.8 12.4-10.8 11.6 0 11.6 5.2 11.6 9.4 0.2 3.8 0.2 10.6-22.4 10.6zM85.8 892c26.2 0 26.2 7.2 26.2 14.8 0 8.4-4.2 12.4-13.4 12.4-11 0-16.6-4.8-17-14.4l-0.6-12.8h4.8z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"orderedList\">Numbered List</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"unorderedList\">\r\n                        <!-- List with bullets -->\r\n                        <button data-id=\"unorderedList\" [class.active]=\"toolbarConfig?.unorderedList\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path\r\n                                    d=\"M270 480.6h754v101.2h-754v-101.2zM270 812h754v101.2h-754v-101.2zM270 126.8h754v101.2h-754v-101.2zM36 126.8h101.2v101.2h-101.2v-101.2zM36 480.6h101.2v101.2h-101.2v-101.2zM36 812h101.2v101.2h-101.2v-101.2z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"unorderedList\">Bulleted List</span>\r\n                        </button>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- Text Align -->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"closeAlignPopover()\" *ngIf=\"editorConfig?.mode === 'prime'\">\r\n            <button (click)=\"alignPopover()\" [class.active]=\"alignment\" [csTooltip]=\"'Text Alignment'\"\r\n                placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M50 457.2h668v92h-668v-92zM50 788.4h924v92h-924v-92zM50 126h924v92h-924v-92z\"></path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"alignment\" (click)=\"alignment = false\"></div>\r\n            <div class=\"popover small\" *ngIf=\"alignment\">\r\n                <ul class=\"option-list\" (click)=\"alignment = false;\">\r\n                    <li data-id=\"left-align\">\r\n                        <!-- Left Align -->\r\n                        <button data-id=\"left-align\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M50 457.2h668v92h-668v-92zM50 788.4h924v92h-924v-92zM50 126h924v92h-924v-92z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"left-align\">Align Left</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"center-align\">\r\n                        <!-- Center Align -->\r\n                        <button data-id=\"center-align\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path\r\n                                    d=\"M184.8 457.2h668v92h-668v-92zM52.2 788.4h924v92h-924v-92zM52.2 126h924v92h-924v-92z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"center-align\">Align Center</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"right-align\">\r\n                        <!-- Right Align -->\r\n                        <button data-id=\"right-align\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path\r\n                                    d=\"M306 457.2h668v92h-668v-92zM52.2 788.4h924v92h-924v-92zM52.2 126h924v92h-924v-92z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"right-align\">Align Right</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"justify-full\">\r\n                        <button data-id=\"justify-full\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                                viewBox=\"0 0 1024 1024\">\r\n                                <path\r\n                                    d=\"M50.2 155.2h926v92h-926v-92zM50.2 486.4h926v92h-926v-92zM50 784h926v92h-926v-92z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span data-id=\"justify-full\">Align Justify</span>\r\n                        </button>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- Font-Style -->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"closeFontStylePopover()\"\r\n            *ngIf=\"editorConfig?.mode === 'prime' && editorConfig?.configFontStyle\">\r\n            <button (click)=\"fontStylePopover()\" [csTooltip]=\"'Font Style'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M99.306 127.3v321.786h372.176v-321.786h100.485v769.4h-100.485v-360.684h-372.176v360.684h-99.306v-769.4h99.306z\"></path>\r\n                    <path d=\"M927.051 248.412h-2.357l-129.068 69.544-19.449-76.616 162.072-86.635h85.751v741.995h-96.948v-648.288z\"></path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"fontStyle\" (click)=\"fontStyle = false\"></div>\r\n            <div class=\"popover small\" *ngIf=\"fontStyle\" (click)=\"fontStyle = false;\">\r\n                <ul class=\"option-list\">\r\n                    <li data-id=\"h1\">\r\n                        <button data-id=\"h1\">\r\n                            <h1 data-id=\"h1\">H1</h1>\r\n                            <span data-id=\"h1\">Heading 1</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"h2\">\r\n                        <button data-id=\"h2\">\r\n                            <h2 data-id=\"h2\">H2</h2>\r\n                            <span data-id=\"h2\">Heading 2</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"h3\">\r\n                        <button data-id=\"h3\">\r\n                            <h3 data-id=\"h3\">H3</h3>\r\n                            <span data-id=\"h3\">Heading 3</span>\r\n                        </button>\r\n                    </li>\r\n                    <li data-id=\"para\">\r\n                        <button data-id=\"para\">\r\n                            <p data-id=\"para\">P</p>\r\n                            <span data-id=\"para\">Paragraph</span>\r\n                        </button>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- Font-Size -->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"closeFontSizePopover()\" *ngIf=\"editorConfig?.mode === 'prime'\">\r\n            <button (click)=\"fontSizePopover()\" [csTooltip]=\"'Font Size'\" placement=\"bottom\" delay=\"0\"\r\n                type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">                   \r\n                    <path d=\"M948.5 477.302v31.647c-34.585-27.804-78.213-44.306-125.909-44.306-110.99 0-201.183 90.193-201.183 201.183s90.193 201.183 201.183 201.183c47.47 0 91.324-16.728 125.909-44.306v31.647h75.5v-377.501h-75.5zM822.817 791.735c-69.397 0-125.909-56.512-125.909-125.909s56.512-125.909 125.909-125.909 125.909 56.512 125.909 125.909c-0.226 69.397-56.738 125.909-125.909 125.909z\"></path>\r\n                    <path d=\"M306.974 156.991l-306.974 697.586h82.508l105.113-238.933h238.481l105.113 238.933h82.508l-306.748-697.586zM220.849 540.143l86.125-195.532 86.125 195.532h-172.249z\"></path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"fontSize\" (click)=\"fontSize = false\"></div>\r\n            <div class=\"popover small\" *ngIf=\"fontSize\">\r\n                <ul class=\"option-list\">\r\n                    <li *ngFor=\"let size of [12,14,18,24,32,36,48]\" attr.data-id=\"fontsize-{{size}}\"\r\n                        (click)=\"fontSize = false;\">\r\n                        <button attr.data-id=\"{{size}}\" type=\"button\">{{size}}</button>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- Font Family-->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"fontFamily = false;\" *ngIf=\"editorConfig?.mode === 'prime'\">\r\n            <button (click)=\"openfontFamily()\" [class.active]=\"fontFamily\" [csTooltip]=\"'Font Name'\"\r\n                [class.active]=\"fontStyles?.includes(toolbarConfig?.fontStyle)\" placement=\"bottom\" delay=\"0\"\r\n                type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n                    viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\">\r\n                    <path d=\"M192,51.2h128v64h32v-96H0v96h32v-64h128v384H96v32h160v-32h-64L192,51.2z\"/>\r\n                    <path d=\"M224,147.2v64h32v-32h96v256h-64v32h160v-32h-64v-256h96v32h32v-64L224,147.2z\"/>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"fontFamily\" (click)=\"fontFamily = false\"></div>\r\n            <div class=\"popover small\" *ngIf=\"fontFamily\">\r\n                <ul class=\"option-list\" (click)=\"fontFamily = false;\">\r\n                    <li *ngFor=\"let font of fontType\" attr.data-id=\"font-{{font}}\">\r\n                        <button attr.data-id=\"font-{{font}}\" [class.active]=\"toolbarConfig?.fontStyle === font\" type=\"button\">\r\n                            {{font | titlecase}}\r\n                        </button>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n        <!-- Color -->\r\n        <div class=\"col\" clickOutside (clickOutside)=\"color = false;\"\r\n            *ngIf=\"editorConfig?.colorPalette && editorConfig?.mode === 'prime'\">\r\n            <button (click)=\"openColorTab()\" [class.active]=\"color\" [csTooltip]=\"'Color'\"\r\n                placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M0 932h1024v92h-1024v-92zM383.4 916.4c0 0 0 0 0 0 8.8 8.8 20.2 13.6 32.6 13.6 12.2 0 23.8-4.8 32.4-13.6l384-384c8.6-8.6 13.4-20.2 13.4-32.4s-4.8-23.8-13.4-32.4l-466.8-467.6-65 65.4 114.4 114.4-351.4 351.6c-18 18-18 47 0 65l319.8 320zM689 545.8l-273 273-255-255 18-18h510zM689 453.8h-418l209-209 209 209zM842.2 593c-27 39-72.2 111-72.2 154.2 0 60.6 49.4 110 110 110s110-49.4 110-110c0-40.4-39.2-106-72-154.2-8.2-12-22.4-19.2-37.8-19.2-15.6 0.2-29.6 7.4-38 19.2zM880 765.2c-9.8 0-17.8-8-18-17.8 0.4-4 5.6-17.8 18-40.6 12.4 23 17.6 36.6 18 40.6-0.2 9.8-8.2 17.8-18 17.8z\"></path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"color\" (click)=\"color = false\"></div>\r\n            <div class=\"popover color-palette\" *ngIf=\"color\">\r\n                <div class=\"tab\">\r\n                    <div class=\"tab-head\">\r\n                        <button (click)=\"fillColor[0] = true; fillColor[1] = false;\" [class.active]=\"fillColor[0]\"\r\n                            [csTooltip]=\"'Background Color'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                            [tooltipMandatory]=\"true\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M0 932h1024v92h-1024v-92zM383.4 916.4c0 0 0 0 0 0 8.8 8.8 20.2 13.6 32.6 13.6 12.2 0 23.8-4.8 32.4-13.6l384-384c8.6-8.6 13.4-20.2 13.4-32.4s-4.8-23.8-13.4-32.4l-466.8-467.6-65 65.4 114.4 114.4-351.4 351.6c-18 18-18 47 0 65l319.8 320zM689 545.8l-273 273-255-255 18-18h510zM689 453.8h-418l209-209 209 209zM842.2 593c-27 39-72.2 111-72.2 154.2 0 60.6 49.4 110 110 110s110-49.4 110-110c0-40.4-39.2-106-72-154.2-8.2-12-22.4-19.2-37.8-19.2-15.6 0.2-29.6 7.4-38 19.2zM880 765.2c-9.8 0-17.8-8-18-17.8 0.4-4 5.6-17.8 18-40.6 12.4 23 17.6 36.6 18 40.6-0.2 9.8-8.2 17.8-18 17.8z\"></path>\r\n                            </svg>\r\n                        </button>\r\n                        <button (click)=\"fillColor[1] = true; fillColor[0] = false;\" [class.active]=\"fillColor[1]\"\r\n                            [csTooltip]=\"'Text Color'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                            [tooltipMandatory]=\"true\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M302 613.2h420l91.4 219.4h109.6l-346.8-832.6h-128.4l-346.8 832.6h109.6l91.4-219.4zM344 512l168-403.2 168 403.2h-336zM0 922.8h1024v101.2h-1024v-101.2z\"></path>\r\n                            </svg>\r\n                        </button>\r\n                    </div>\r\n                    <div class=\"tab-body\">\r\n                        <app-color-palette [(color)]=\"toolbarConfig.backgroundColor\"\r\n                            (colorChange)=\"colorChange('fillColor')\" *ngIf=\"fillColor[0]\">\r\n                        </app-color-palette>\r\n\r\n                        <app-color-palette [(color)]=\"toolbarConfig.fontColor\"\r\n                            (colorChange)=\"colorChange('textColor')\" *ngIf=\"fillColor[1]\">\r\n                        </app-color-palette>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n        <!-- Link -->\r\n        <div class=\"col\" clickOutside *ngIf=\"editorConfig?.link\">\r\n            <button (click)=\"addLink = true; openModal('link-modal');\" [class.active]=\"addLink\" [csTooltip]=\"'Add a Link'\" placement=\"bottom\"\r\n                delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M931 478.8l-84.4-84.4c-18.2-18.2-48-18.2-66.2 0-8.8 8.8-13.8 20.6-13.8 33.2s4.8 24.2 13.8 33.2l84.4 84.4c87.6 87.6 87.6 231 0 319.6-87.6 87.6-231 87.6-319.6 0l-84.4-84.4c-8.8-8.8-20.6-13.8-33.2-13.8s-24.2 4.8-33.2 13.8c-8.8 8.8-13.8 20.6-13.8 33.2s4.8 24.2 13.8 33.2l84.6 84.6c60.6 59.6 141 92.6 226.4 92.6 85.6 0 165.8-33 225.8-93.2 123.8-125.4 123.6-328.2-0.2-452zM478.8 159.2l84.4 84.4c8.8 8.8 20.6 13.8 33.2 13.8s24.2-4.8 33.2-13.8c8.8-8.8 13.8-20.6 13.8-33.2s-4.8-24.2-13.8-33.2l-84.6-84.6c-125.4-123.6-328.2-123.4-452.2 0.4-123.8 125.4-123.6 328.2 0.2 452l84.4 84.4c8.8 8.8 20.6 13.8 33.2 13.8s24.2-4.8 33.2-13.8c8.8-8.8 13.8-20.6 13.8-33.2s-4.8-24.2-13.8-33.2l-84.4-84.4c-87.6-87.6-87.6-231 0-319.6 87.4-87.4 230.8-87.4 319.4 0.2zM620.6 667.6c12.6 0 24.2-4.8 33.2-13.8 8.8-8.8 13.8-20.6 13.8-33.2s-4.8-24.2-13.8-33.2l-217.4-217.2c-8.8-8.8-20.6-13.8-33.2-13.8s-24.2 4.8-33.2 13.8c-8.8 8.8-13.8 20.6-13.8 33.2s4.8 24.2 13.8 33.2l217.2 217.2c9.2 8.8 21 13.8 33.4 13.8z\"></path>\r\n                </svg>\r\n            </button>\r\n            <marx-modal id=\"link-modal-{{editorConfig?.id}}\" role=\"dialog\" [zIndexValue]=\"editorConfig?.zIndex\">\r\n                <marx-link \r\n                    [editorConfig]=\"editorConfig\" \r\n                    (linkEmitter)=\"saveLink($event)\" \r\n                    (closeEmitter)=\"closeModal('link-modal')\">\r\n                </marx-link>\r\n            </marx-modal>\r\n        </div>\r\n        <!-- Attachment -->\r\n        <div class=\"col\" clickOutside *ngIf=\"editorConfig?.file\">\r\n            <button (click)=\"upload = true; openFilePicker()\" [class.active]=\"upload\" [csTooltip]=\"'Upload Files'\" placement=\"bottom\"\r\n                delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M790.856 698.291v69.72h-533.776q-106.764 0-181.922-74.089t-75.158-180.853 75.158-181.922 181.922-75.158h579.559q76.274 0 131.817 55.544t55.544 131.817-55.544 130.748-131.817 54.474h-488.039q-47.92 0-81.712-33.791t-33.791-81.712 33.791-82.78 81.712-34.86h442.303v69.72h-442.303q-19.614 0-32.676 14.176t-13.060 33.791 13.060 32.676 32.676 13.060h488.039q47.92 0 82.78-33.791t34.86-81.712-34.86-82.78-82.78-34.86h-579.559q-76.274 0-131.817 55.544t-55.544 131.817 55.544 130.748 131.817 54.474h533.776z\"></path>\r\n                </svg>\r\n            </button>\r\n\r\n            <!-- <marx-modal id=\"file-modal-{{editorConfig?.id}}\" role=\"dialog\" [zIndexValue]=\"editorConfig?.zIndex\">\r\n                <marx-files \r\n                    (filesEmitter)=\"saveFiles($event)\" \r\n                    (closeEmitter)=\"closeModal('file-modal')\">\r\n                </marx-files>\r\n            </marx-modal>\r\n            -->\r\n        </div>\r\n        <!-- Image -->\r\n        <div class=\"col\" clickOutside *ngIf=\"editorConfig?.mode === 'prime' && false\">\r\n            <button (click)=\"uploadImage = true\" [class.active]=\"uploadImage\" [csTooltip]=\"'Add Image'\"\r\n                placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n\r\n                <svg width=\"199\" height=\"199\" viewBox=\"0 0 199 199\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <g clip-path=\"url(#clip0)\">\r\n                        <path\r\n                            d=\"M8 142.261V165C8 173.284 14.7157 180 23 180H177C185.284 180 192 173.284 192 165V119.71M8 142.261V33C8 24.7157 14.7157 18 23 18H177C185.284 18 192 24.7157 192 33V119.71M8 142.261L57.3409 98.9718C63.2401 93.7961 72.1315 94.0424 77.7351 99.5367L90.8 112.347M74.7 136.278L128.13 81.66C133.749 75.9164 142.895 75.6201 148.874 80.9882L192 119.71\"\r\n                            stroke-width=\"15\" stroke-linecap=\"round\" fill=\"none\" />\r\n                    </g>\r\n                    <defs>\r\n                        <clipPath id=\"clip0\">\r\n                            <rect width=\"199\" height=\"199\" fill=\"white\" />\r\n                        </clipPath>\r\n                    </defs>\r\n                </svg>\r\n\r\n            </button>\r\n            <div class=\"popup-mask\" *ngIf=\"uploadImage\">\r\n                <div class=\"popover attach\">\r\n                    <div class=\"head\">\r\n                        <h3>Attach Image</h3>\r\n                        <button class=\"close\" (click)=\"clickOutsideImage()\" type=\"button\">&times;</button>\r\n                    </div>\r\n                    <div class=\"drag-drop\" (dragenter)=\"dragenter($event)\" (dragover)=\"dragover($event)\"\r\n                        (dragend)=\"dragend($event)\" (dragleave)=\"dragleave($event)\" [class.enter]=\"enter\"\r\n                        (drop)=\"dropImage($event)\">\r\n                        <input type=\"file\" id=\"browse\" accept=\"image/x-png,image/gif,image/jpeg\"\r\n                            (change)=\"changeImage($event)\">\r\n                        <div class=\"container\">\r\n                            <span>Drop image here or browse to upload</span>\r\n                            <label for=\"browse\">Browse</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"file-row\" *ngIf=\"image\">\r\n                        <div class=\"file-col\">\r\n                            <button (click)=\"image = null;\" type=\"button\">\r\n                                <span>&times;</span>\r\n                            </button>\r\n                            <div class=\"file-item\">\r\n                                <div class=\"file-image\">\r\n                                    <img [src]=\"image.url\" alt=\"\">\r\n                                </div>\r\n                                <p class=\"file-title\">{{image?.file?.name}}</p>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"footer\">\r\n                        <button class=\"cancel\" (click)=\"clickOutsideImage()\" type=\"button\">Cancel</button>\r\n                        <button type=\"button\" (click)=\"saveImage()\" class=\"upload\">Save</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"alert-box\" *ngIf=\"showAlert\">\r\n                <h1 id=\"alert-msg\">{{alertMsg}}</h1>\r\n                <button (click)=\"hideAlert()\" id=\"ok-btn\" type=\"button\">OK</button>\r\n            </div>\r\n        </div>\r\n        <!-- More options -->\r\n        <div class=\"col\" clickOutside *ngIf=\"moreOptionsButton\">\r\n            <button (click)=\"showMoreOptions()\" [class.active]=\"moreOptions\" type=\"button\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\"\r\n                    viewBox=\"0 0 1024 1024\">\r\n                    <g id=\"icomoon-ignore\"></g>\r\n                    <path\r\n                        d=\"M512 383.256q50.912 0 89.815 38.903t38.903 89.815-38.903 89.815-89.815 38.903-89.815-38.903-38.903-89.815 38.903-89.815 89.815-38.903zM895.282 383.256q50.912 0 89.815 38.903t38.903 89.815-38.903 89.815-89.815 38.903-89.815-38.903-38.903-89.815 38.903-89.815 89.815-38.903zM128.718 383.256q50.912 0 89.815 38.903t38.903 89.815-38.903 89.815-89.815 38.903-89.815-38.903-38.903-89.815 38.903-89.815 89.815-38.903z\">\r\n                    </path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"popover-overlay\" *ngIf=\"moreOptions\" (click)=\"moreOptions = false\"></div>\r\n            <div class=\"popover small\" *ngIf=\"moreOptions\">\r\n                <ul class=\"option-list\">\r\n                    <!-- Quote -->\r\n                    <li (click)=\"moreOptions = false;\" data-id=\"quote\" *ngIf=\"false\">\r\n                        <button data-id=\"quote\" [class.active]=\"toolbarConfig?.quote\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M430 438.4h-332.6c22.2-131 135.2-228 268.6-228h46v-92h-46c-201.8 0-366 164.2-366 366v384c0 25.4 20.6 46 46 46h384c25.4 0 46-20.6 46-46v-384c0-25.4-20.6-46-46-46zM384 530.4v292h-292v-292h292zM978 438.4h-332.6c22.2-131 135.2-228 268.6-228h46v-92h-46c-201.8 0-366 164.2-366 366v384c0 25.4 20.6 46 46 46h384c25.4 0 46-20.6 46-46v-384c0-25.4-20.6-46-46-46zM932 530.4v292h-292v-292h292z\"></path>\r\n                            </svg>\r\n                            <span data-id=\"quote\">Quote</span>\r\n                        </button>\r\n                    </li>\r\n                    <!-- Superscript -->\r\n                    <li (click)=\"moreOptions = false;\" data-id=\"superscript\">\r\n                        <button [class.active]=\"toolbarConfig?.superscript\" data-id=\"superscript\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M576 114l-223.4 367.8-240.2-367.8h-112.4l296.6 448-296.6 462h112.4l240.4-381.8 223.2 381.8h112.4l-279.6-462 279.6-448zM965.4 283.8v0c37.2-37.4 58.6-89 58.6-141.8 0-78.2-63.8-142-142-142s-142 63.8-142 142v46h92v-46c0-27.6 22.4-50 50-50s50 22.4 50 50c0 28.6-11.6 56.6-31.8 76.6l-160.2 160.4v97h284v-92h-159l100.4-100.2z\"></path>\r\n                            </svg>\r\n                            <span data-id=\"superscript\">Superscript</span>\r\n                        </button>\r\n                    </li>\r\n                    <!-- Subscript -->\r\n                    <li (click)=\"moreOptions = false\" data-id=\"subscript\">\r\n                        <button [class.active]=\"toolbarConfig?.subscript\" data-id=\"subscript\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M576 0l-223.4 367.8-240.2-367.8h-112.4l296.6 448-296.6 462h112.4l240.4-381.8 223.2 381.8h112.4l-279.6-462 279.6-448zM965.4 831.8v0c37.4-37.4 58.6-89 58.6-141.8 0-78.2-63.8-142-142-142s-142 63.8-142 142v46h92v-46c0-27.6 22.4-50 50-50s50 22.4 50 50c0 28.6-11.6 56.6-31.8 76.6l-160.2 160.4v97h284v-92h-159l100.4-100.2z\"></path>\r\n                            </svg>\r\n                            <span data-id=\"subscript\">Subscript</span>\r\n                        </button>\r\n                    </li>\r\n                    <!-- Increase Indent -->\r\n                    <li (click)=\"moreOptions = false;\" data-id=\"increaseIndent\">\r\n                        <button data-id=\"increaseIndent\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M27 778l0.2 0.2c6 2.6 12.4 4 18.8 4 11.4 0 22.2-4.2 30.4-11.8l255.8-223.8c10-8.6 15.8-21.2 15.8-34.6s-5.8-26-15.8-34.6l-256-224c-13.4-12-32.8-14.8-49.4-7.2-16.2 7.4-26.8 23.8-26.8 41.8v448c0 18 10.6 34.4 27 42zM92 634.8v-245.4c48.6 42.4 113.8 99.6 140.2 122.8l-140.2 122.6zM397.4 626h628v92h-628v-92zM397.4 306h628v92h-628v-92zM0-14h1024v92h-1024v-92zM0 946h1024v92h-1024v-92z\"></path>\r\n                            </svg>\r\n                            <span data-id=\"increaseIndent\">Increase Indent</span>\r\n                        </button>\r\n                    </li>\r\n                    <!-- Decrease Indent -->\r\n                    <li (click)=\"moreOptions = false;\" data-id=\"decreaseIndent\">\r\n                        <button data-id=\"decreaseIndent\" type=\"button\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                                <path d=\"M1025.4 736v-448c0-18-10.6-34.4-26.8-41.8-16.6-7.6-36-4.8-49.4 7.2l-256 224c-10 8.6-15.8 21.2-15.8 34.6s5.8 26 15.8 34.6l255.8 223.8c8.2 7.6 19 11.8 30.4 11.8 6.4 0 12.8-1.4 18.8-4l0.2-0.2c16.4-7.6 27-24 27-42zM793.2 512.2c26.4-23.2 91.6-80.4 140.2-122.8v245.4l-140.2-122.6zM0 626h628v92h-628v-92zM0 306h628v92h-628v-92zM1.4-14h1024v92h-1024v-92zM1.4 946h1024v92h-1024v-92z\"></path>\r\n                            </svg>\r\n                            <span data-id=\"decreaseIndent\">Decrease Indent</span>\r\n                        </button>\r\n                    </li>\r\n                </ul>\r\n\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"child-row\" *ngIf=\"!moreOptionsButton\">\r\n            <!-- Quote -->\r\n            <div class=\"col\" data-id=\"quote\" *ngIf=\"false\">\r\n                <button data-id=\"quote\" [csTooltip]=\"'Quote'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                    [class.active]=\"toolbarConfig?.quote\" [tooltipMandatory]=\"true\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                        <path d=\"M430 438.4h-332.6c22.2-131 135.2-228 268.6-228h46v-92h-46c-201.8 0-366 164.2-366 366v384c0 25.4 20.6 46 46 46h384c25.4 0 46-20.6 46-46v-384c0-25.4-20.6-46-46-46zM384 530.4v292h-292v-292h292zM978 438.4h-332.6c22.2-131 135.2-228 268.6-228h46v-92h-46c-201.8 0-366 164.2-366 366v384c0 25.4 20.6 46 46 46h384c25.4 0 46-20.6 46-46v-384c0-25.4-20.6-46-46-46zM932 530.4v292h-292v-292h292z\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n            <!-- Superscript -->\r\n            <div class=\"col\" data-id=\"superscript\">\r\n                <button [class.active]=\"toolbarConfig?.superscript\" data-id=\"superscript\" [csTooltip]=\"'Superscript'\"\r\n                    placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                        <path d=\"M576 114l-223.4 367.8-240.2-367.8h-112.4l296.6 448-296.6 462h112.4l240.4-381.8 223.2 381.8h112.4l-279.6-462 279.6-448zM965.4 283.8v0c37.2-37.4 58.6-89 58.6-141.8 0-78.2-63.8-142-142-142s-142 63.8-142 142v46h92v-46c0-27.6 22.4-50 50-50s50 22.4 50 50c0 28.6-11.6 56.6-31.8 76.6l-160.2 160.4v97h284v-92h-159l100.4-100.2z\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n            <!-- Subscript -->\r\n            <div class=\"col\" data-id=\"subscript\">\r\n                <button [class.active]=\"toolbarConfig?.subscript\" data-id=\"subscript\" [csTooltip]=\"'Subscript'\"\r\n                    placement=\"bottom\" delay=\"0\" type=\"button\" [tooltipMandatory]=\"true\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                        <path d=\"M576 0l-223.4 367.8-240.2-367.8h-112.4l296.6 448-296.6 462h112.4l240.4-381.8 223.2 381.8h112.4l-279.6-462 279.6-448zM965.4 831.8v0c37.4-37.4 58.6-89 58.6-141.8 0-78.2-63.8-142-142-142s-142 63.8-142 142v46h92v-46c0-27.6 22.4-50 50-50s50 22.4 50 50c0 28.6-11.6 56.6-31.8 76.6l-160.2 160.4v97h284v-92h-159l100.4-100.2z\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n            <!-- Increase Indent -->\r\n            <div class=\"col\" data-id=\"increaseIndent\">\r\n                <button [csTooltip]=\"'Increase indent'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                    [tooltipMandatory]=\"true\" data-id=\"increaseIndent\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                        <path d=\"M27 778l0.2 0.2c6 2.6 12.4 4 18.8 4 11.4 0 22.2-4.2 30.4-11.8l255.8-223.8c10-8.6 15.8-21.2 15.8-34.6s-5.8-26-15.8-34.6l-256-224c-13.4-12-32.8-14.8-49.4-7.2-16.2 7.4-26.8 23.8-26.8 41.8v448c0 18 10.6 34.4 27 42zM92 634.8v-245.4c48.6 42.4 113.8 99.6 140.2 122.8l-140.2 122.6zM397.4 626h628v92h-628v-92zM397.4 306h628v92h-628v-92zM0-14h1024v92h-1024v-92zM0 946h1024v92h-1024v-92z\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n            <!-- Decrease Indent -->\r\n            <div class=\"col\" data-id=\"decreaseIndent\">\r\n                <button [csTooltip]=\"'Decrease indent'\" placement=\"bottom\" delay=\"0\" type=\"button\"\r\n                    [tooltipMandatory]=\"true\" data-id=\"decreaseIndent\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                        <path d=\"M1025.4 736v-448c0-18-10.6-34.4-26.8-41.8-16.6-7.6-36-4.8-49.4 7.2l-256 224c-10 8.6-15.8 21.2-15.8 34.6s5.8 26 15.8 34.6l255.8 223.8c8.2 7.6 19 11.8 30.4 11.8 6.4 0 12.8-1.4 18.8-4l0.2-0.2c16.4-7.6 27-24 27-42zM793.2 512.2c26.4-23.2 91.6-80.4 140.2-122.8v245.4l-140.2-122.6zM0 626h628v92h-628v-92zM0 306h628v92h-628v-92zM1.4-14h1024v92h-1024v-92zM1.4 946h1024v92h-1024v-92z\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"right\" #menuRight>\r\n        <!-- @ -->\r\n        <div class=\"col\" data-id=\"@\" *ngIf=\"editorConfig?.mentionedNames?.length > 0\">\r\n            <button data-id=\"@\" type=\"button\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M771.2 881.8c-61 29.8-136.8 44.8-227.2 44.8-84.6 0-161.6-14.4-231-43-69.6-28.8-122.6-73-159.4-133.2s-55.2-131.8-55.2-215c0-79.4 18.4-153.8 55.2-223.4 36.8-69.4 88.4-122.8 155.2-160s140.4-55.8 221.2-55.8c70.8 0 135.2 14.8 193.8 44.4 58.4 29.6 102.4 69 132 118.2s44.2 102.2 44.2 159c0 48.6-11.4 95.6-34.4 141.4-23 45.6-54 82-93.4 109.2-29.6 20.8-53.6 31-72 31-10 0-18.6-3.4-25.6-10s-10.6-14.6-10.6-23.6c0-5 5.2-31.4 15.6-79l74.4-341.8h-92.6l-17.4 79c-19.6-31.6-43.2-55-70.4-70.6-27.2-15.4-55.8-23.2-85.8-23.2-39.4 0-79.8 13.6-121.6 40.8s-76.6 67.8-104.8 122c-28.2 54.2-42.2 108.2-42.2 162.2 0 43.8 9 84 27.2 120.8 18.2 36.6 41.6 63.8 70.6 81.4s58.8 26.4 89.6 26.4c28 0 55.8-7.8 83.6-23.2s52.8-36 75.2-61.4c2 20.8 5.4 35.4 9.8 43.8 7 13.2 17.6 23.4 32.4 30.6s33.8 10.8 57.8 10.8c74.4 0 143.2-34.2 206-102.8 70.4-76.4 105.6-163.8 105.6-262.4 0-69-16.8-132.8-50.2-191.6-39.4-68.2-93-119.6-161.2-154-68.4-34.4-145.2-51.6-230.8-51.6-110.4 0-204.4 24.4-281.8 73.4s-137.2 119.4-179.2 211.4c-34.6 75-51.8 154-51.8 236.8 0 74.4 14.4 143.6 43.4 207.8 23.2 50.6 57.4 95.4 103 134.2s100.6 68 165.4 87.4c64.6 19.4 135.4 29 211.8 29 83.2 0 154.2-10.8 213.2-32.4s109.8-50.8 152.6-87.8c42.8-37 73-73.4 90.6-109h-93.6c-30.4 42.8-76.2 79.2-137.2 109zM595.8 555.6c-12.4 34.4-28.4 63-47.8 85.4s-40 39.4-61.4 50.6c-21.4 11.4-41.8 17-61 17-29 0-54.6-13-77.2-38.8-22.4-25.8-33.6-62-33.6-108.4 0-29.2 5.6-61.2 16.6-96.2s25.6-64.6 44-89.2c18.2-24.4 37.2-42.2 56.6-53.2s40.2-16.6 62.4-16.6c33.4 0 61.8 12.8 85.2 38.2 23.2 25.4 35 61.2 35 107.4-0.2 34.8-6.4 69.2-18.8 103.8z\"></path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- # -->\r\n        <div class=\"col\" data-id=\"#\" *ngIf=\"editorConfig?.mentionedDates?.length > 0\">\r\n            <button data-id=\"#\" type=\"button\">\r\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1024\" height=\"1024\" viewBox=\"0 0 1024 1024\">\r\n                    <path d=\"M146.6 1002h90.8l69.8-275.4h270.6l-69 275.4h92.8l69.8-275.4h305.8v-92.4h-284.6l56.4-218.6h224v-92.4h-202.6l75.8-301.2h-93.6l-75.8 301.4h-269.2l75.8-301.4h-92.8l-75.8 301.4h-272v92.4h250.6l-55.6 218.6h-191v92.4h167.6l-67.8 275.2zM386.2 415.6h269.2l-56.4 218.6h-270.4l57.6-218.6z\"></path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <!-- Button Name -->\r\n        <div class=\"col\" *ngIf=\"editorConfig?.buttonName\">\r\n            <button class=\"submit\" data-id=\"submit\" type=\"button\"\r\n                [class.disabled]=\"editorConfig?.disabledButton\">{{editorConfig?.buttonName}}</button>\r\n        </div>\r\n    </div>\r\n</div>\r\n","<div class=\"popup-container\">\r\n    <div class=\"head\">\r\n        <h3>Attach Files</h3>\r\n        <button class=\"close\" (click)=\"close()\" type=\"button\">&times;</button>\r\n    </div>\r\n    <div class=\"body\">\r\n        <div class=\"drag-drop\" (dragenter)=\"dragenter($event)\" (dragover)=\"dragover($event)\" (dragend)=\"dragend($event)\"\r\n            (dragleave)=\"dragleave($event)\" (drop)=\"dropFiles($event)\" [class.enter]=\"enter\">\r\n            <input type=\"file\" id=\"browse\" (change)=\"filesFromInput($event)\" multiple>\r\n            <div class=\"container\">\r\n                <span>Drop files here or browse to upload</span>\r\n                <label for=\"browse\">Browse</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"file-row\">\r\n            <div class=\"file-col\" *ngFor=\"let fileObj of filesArray; let i = index\">\r\n                <button (click)=\"removeFile(i)\" type=\"button\">\r\n                    <span>&times;</span>\r\n                </button>\r\n                <div class=\"file-item\">\r\n                    <div class=\"file-image\">\r\n                        <span class=\"file {{fileObj.extension}}\">\r\n                            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"2672\" height=\"1024\"\r\n                                viewBox=\"0 0 2672 1024\">\r\n                                <g id=\"icomoon-ignore\">\r\n                                </g>\r\n                                <path\r\n                                    d=\"M2662.047 170.706c0-94.256-76.39-170.647-170.647-170.647h-2320.8c-94.256 0-170.647 76.391-170.647 170.647s76.391 170.647 170.647 170.647h2320.8c94.257 0 170.647-76.391 170.647-170.647zM170.601 682.647c-94.256 0-170.647 76.391-170.647 170.647s76.391 170.647 170.647 170.647h784.977c94.257 0 170.647-76.39 170.647-170.647s-76.39-170.647-170.647-170.647h-784.977z\">\r\n                                </path>\r\n                            </svg>\r\n                            <span class=\"format\">\r\n                                {{fileObj.extension}}\r\n                            </span>\r\n                        </span>\r\n                    </div>\r\n                    <p class=\"file-title\" [csTooltip]=\"fileObj.file.name\" placement=\"bottom\" delay=\"0\" type=\"black\"\r\n                        [tooltipMandatory]=\"true\">{{fileObj.file.name}}</p>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"footer\">\r\n        <button class=\"cancel\" (click)=\"close()\" type=\"button\">Cancel</button>\r\n        <button (click)=\"save()\" class=\"upload\" type=\"button\" [class.disabled]=\"filesArray.length === 0\">Save</button>\r\n    </div>\r\n</div>\r\n\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnChanges,\r\n  forwardRef,\r\n  SimpleChanges,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  ViewChild,\r\n  ElementRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { EditorConfig, ToolbarConfig } from '../editor-config-interface';\r\nimport { ModalService } from '../modal.service';\r\nimport nanoid  from '../nanoid';\r\nimport template from './marx-editor.component.html';\r\n@Component({\r\n  selector: 'vcomply-rich-editor',\r\n  template: template + ``,\r\n  styleUrls: ['./marx-editor.component.less'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MarxEditorComponent),\r\n      multi: true,\r\n    },\r\n    ModalService\r\n  ],\r\n  // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MarxEditorComponent\r\n  implements OnChanges, AfterViewInit, OnDestroy,ControlValueAccessor {\r\n  @Input() editorConfig!: any;\r\n  @Output() comment = new EventEmitter<string>();\r\n  @Output() sendSavedFiles = new EventEmitter<any>();//coming from menu to container from container to ap\r\n  @ViewChild('editorContainer') editorContainer: ElementRef;\r\n  @Output() popup = new EventEmitter<boolean>();//coming from menu to container from container to ap\r\n  imageToBeShown: any\r\n  filesFromChild: any\r\n  html: string;\r\n  innerText: string;\r\n  lastChar: string;\r\n  sel: any;\r\n  startOffset: number;\r\n  endOffset: number;\r\n  format: boolean;\r\n  node: any;\r\n  tribute: string;\r\n  flag: number;\r\n  mentionConfig: { mentions: any[] };\r\n  mentionid: number | string;\r\n  mentionedNames: { id: number; name: string }[];\r\n  mentionedDates: string[];\r\n  toolbarPlacement: 'top' | 'bottom';\r\n  oldRange: Range;\r\n  savedLinks: any = []\r\n  toolbarConfig: ToolbarConfig;\r\n  fontColor: string;\r\n  backgroundColor: string;\r\n  clicked = false;\r\n  moreOptionsButton: boolean;\r\n  isCollapsible: boolean;\r\n  menuLeftWidth: number;\r\n  menuRightWidth: number;\r\n\r\n  constructor() {\r\n    this.fontColor = 'black';\r\n    this.backgroundColor = 'white';\r\n    this.toolbarPlacement = 'bottom';\r\n    this.resetToolbar();\r\n    this.editorConfig = {\r\n      id: nanoid()\r\n    };\r\n    this.mentionConfig = {\r\n      mentions: []\r\n    };\r\n  }\r\n\r\n\r\n  /**\r\n  * @param event - Event which stores the files that are emitted from the file popup\r\n  */\r\n  saveFiles(event: any): void {\r\n    this.sendSavedFiles.emit(event);\r\n  }\r\n\r\n  /**\r\n  * @param event - Event which stores the image emitted from the image popup\r\n  */\r\n  saveImage(event: any): void {\r\n    const imgTag = document.createElement('img')\r\n    imgTag.setAttribute('src', event.url);\r\n    this.sel.removeAllRanges();\r\n    const range: Range = this.oldRange.cloneRange();\r\n    range.insertNode(imgTag);\r\n    range.setStartAfter(imgTag);\r\n    range.collapse();\r\n    this.sel.addRange(range);\r\n  }\r\n\r\n  resetToolbar(): void {\r\n    this.toolbarConfig = {\r\n      bold: false,\r\n      italic: false,\r\n      underline: false,\r\n      strikeThrough: false,\r\n      orderedList: false,\r\n      unorderedList: false,\r\n      superscript: false,\r\n      subscript: false,\r\n      quote: false,\r\n      fontColor: this.fontColor,\r\n      backgroundColor: this.backgroundColor,\r\n    };\r\n  }\r\n\r\n  onChange: any = () => { };\r\n  onTouch: any = () => { };\r\n\r\n  set htmlVal(html) {\r\n    if (html !== null && html !== undefined && this.html !== html) {\r\n      this.html = html;\r\n      this.onChange(html);\r\n      this.onTouch(html);\r\n    }\r\n  }\r\n\r\n  writeValue(value: string, source?: string): void {\r\n    if(document.getElementById(this.editorConfig.id) && !source) {\r\n        document.getElementById(this.editorConfig.id).innerHTML = value ?? '';\r\n    }\r\n    this.htmlVal = value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.sel = window.getSelection();\r\n    document.addEventListener(\r\n      'selectionchange',\r\n      this.selectionChange.bind(this),\r\n      false\r\n    );\r\n  }\r\n\r\n  getMenuWidth({left, right}) {\r\n    this.menuLeftWidth = left;\r\n    this.menuRightWidth = right;\r\n    if (this.editorContainer.nativeElement.offsetWidth < (this.menuLeftWidth + this.menuRightWidth)) {\r\n      this.moreOptionsButton = true;\r\n    } else {\r\n      this.moreOptionsButton = false;\r\n    }\r\n  }\r\n\r\n  immageResize() {\r\n    const imageWidth = document.getElementById('contentimage').offsetWidth;\r\n    const imageHeight = document.getElementById('contentimage').offsetWidth;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    document.removeEventListener(\r\n      'selectionchange',\r\n      this.selectionChange.bind(this),\r\n      false\r\n    );\r\n  }\r\n /**\r\n  *\r\n  * @param event - Event fired whenever there is a selection change\r\n  */\r\n  selectionChange(event: any): void {\r\n    if (event.target?.activeElement?.id === this.editorConfig.id) {\r\n      this.oldRange = this.sel.getRangeAt(0).cloneRange();\r\n      this.setFontAndbackgroundColor();\r\n      this.toolbarConfig = {\r\n        bold: document.queryCommandState('bold'),\r\n        italic: document.queryCommandState('italic'),\r\n        strikeThrough: document.queryCommandState('strikeThrough'),\r\n        underline: document.queryCommandState('underline'),\r\n        orderedList: document.queryCommandState('insertorderedList'),\r\n        unorderedList: document.queryCommandState('insertunorderedList'),\r\n        fontColor: this.fontColor,\r\n        fontStyle: this.getFontStyle(this.sel?.anchorNode),\r\n        backgroundColor: this.backgroundColor,\r\n        quote: this.checkParent(this.sel?.anchorNode, 'blockquote'),\r\n        superscript: this.checkParent(this.sel?.anchorNode, 'sup'),\r\n        subscript: this.checkParent(this.sel?.anchorNode, 'sub')\r\n      };\r\n    } else {\r\n      this.resetToolbar();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the default font color and background color\r\n   */\r\n  setFontAndbackgroundColor(): void {\r\n    if (this.sel?.baseNode) {\r\n      const node = this.sel.baseNode;\r\n      if (node?.parentNode?.nodeName === 'SPAN' && node?.parentNode?.attributes[0].name === 'style') {\r\n        let styleAttrib = node?.parentNode?.attributes[0].nodeValue;\r\n        const styleArray: string[] = styleAttrib.split(';');\r\n        for (const style of styleArray) {\r\n          if (style.indexOf('background-color:') > -1) {\r\n            this.backgroundColor = style.substring(style.indexOf(':') + 1).trim();\r\n          } else if (style.indexOf('color:') > -1) {\r\n            this.fontColor = style.substring(style.indexOf(':') + 1).trim();\r\n          }\r\n        }\r\n      } else {\r\n        this.fontColor = 'black';\r\n        this.backgroundColor = 'white';\r\n      }\r\n    } else {\r\n      this.fontColor = 'black';\r\n      this.backgroundColor = 'white';\r\n    }\r\n  }\r\n\r\n\r\n  getFontStyle(elem: any): string {\r\n    if (elem) {\r\n      if (elem?.nodeName === 'APP-TEXT-EDITOR') {\r\n        return '';\r\n      } else {\r\n        if (elem?.nodeName === 'FONT') {\r\n          return elem?.face;\r\n        } else {\r\n          return this.getFontStyle(elem?.parentElement);\r\n        }\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n  checkParent(elem: any, tagName: string): boolean {\r\n    if (elem) {\r\n      if (elem?.nodeName === 'APP-TEXT-EDITOR') {\r\n        return false;\r\n      } else {\r\n        if (elem.nodeName === tagName.toUpperCase()) {\r\n          return true;\r\n        } else {\r\n          return this.checkParent(elem?.parentNode, tagName);\r\n        }\r\n      }\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.editorConfig && this.editorConfig) {\r\n      this.editorConfig.id = this.editorConfig.id || nanoid();\r\n      this.mentionConfig = {\r\n        mentions: []\r\n      };\r\n      if (this.editorConfig?.mentionedNames && Array.isArray(this.editorConfig?.mentionedNames) && this.editorConfig?.mentionedNames.length > 0) {\r\n        this.editorConfig.mentionedNames = this.editorConfig?.mentionedNames.filter((item: { id: number; name: string }) => {\r\n            if (item.id !== 0 && item.name.trim() !== '') {\r\n              return item;\r\n            }\r\n        });\r\n\r\n        this.mentionConfig.mentions.push({\r\n          items: this.editorConfig.mentionedNames,\r\n          triggerChar: '@',\r\n          mentionSelect: (item) => {\r\n            this.tribute = `@${item.name}`;\r\n            this.mentionid = item.id;\r\n            return this.tribute;\r\n          },\r\n          labelKey: 'name',\r\n          maxItems: 20,\r\n          disableSearch: false,\r\n          dropUp: true,\r\n        });\r\n      }\r\n      if (this.editorConfig?.mentionedDates && Array.isArray(this.editorConfig?.mentionedDates) && this.editorConfig?.mentionedDates.length > 0) {\r\n        this.editorConfig.mentionedDates = [\r\n          ...new Set(this.editorConfig?.mentionedDates),\r\n        ];\r\n        this.mentionConfig.mentions.push({\r\n          items: this.editorConfig.mentionedDates,\r\n          triggerChar: '#',\r\n          mentionSelect: (item) => {\r\n            this.tribute = `#${item.date}`;\r\n            this.mentionid = item.date;\r\n            return this.tribute;\r\n          },\r\n          labelKey: 'date',\r\n          maxItems: 20,\r\n          disableSearch: false,\r\n          dropUp: true,\r\n        });\r\n      }\r\n    }\r\n  }\r\n  /**\r\n  *\r\n  * @param container - Get the last character from editor\r\n  */\r\n  getPrecedingCharacter(container: any): string {\r\n    if (this.sel) {\r\n      const r = this.sel.getRangeAt(0).cloneRange();\r\n      r.setStart(container, 0);\r\n      return r.toString().slice(-1);\r\n    }\r\n    return '';\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param elem - Check if the operation applied belongs to the particular instance of editor\r\n   */\r\n  checkValidOperation(elem: any): boolean {\r\n    if (elem) {\r\n      if (elem === document.getElementById(this.editorConfig.id)) {\r\n        return true;\r\n      } else {\r\n        return this.checkValidOperation(elem?.parentNode);\r\n      }\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n  /**\r\n   * When editor is blurred\r\n   */\r\n  blur(): void {\r\n    // this.oldRange = this.sel.getRangeAt(0).cloneRange(); // to store the range when element is blurred\r\n    this.isCollapsible = false;\r\n  }\r\n\r\n  /**\r\n  * When contenteditable is blurred\r\n  */\r\n  blurContentEditable(): void {\r\n    this.oldRange = this.sel.getRangeAt(0).cloneRange(); // to store the range when element is blurred\r\n  }\r\n\r\n  /**\r\n   * Focus on the editor\r\n   */\r\n  focus(): void {\r\n    if (document.getElementById(`${this.editorConfig.id}`)) {\r\n      document.getElementById(`${this.editorConfig.id}`).focus();\r\n    }\r\n    this.isCollapsible = true;\r\n  }\r\n\r\n  /**\r\n  * @param event - This parameter is an event that is occurred whenever we make changes inside the div contenteditable\r\n  */\r\n  setValue(innerText: string): void {\r\n    this.innerText = innerText;\r\n\r\n    if (this.innerText === '') {\r\n      // document.execCommand('removeFormat', false, ''); // remove previous format once the editor is clear\r\n      // this.toolbarConfig.fontColor = 'black';\r\n      // this.toolbarConfig.backgroundColor = 'white';\r\n      // this.toolbarOperations('textColor', 'black');\r\n      // this.toolbarOperations('fillColor', 'white');\r\n    }\r\n    this.lastChar = this.getPrecedingCharacter(this.sel?.anchorNode); // gets the last input character\r\n\r\n    if (this.format && this.startOffset && this.tribute) {\r\n      this.format = false;\r\n      this.endOffset = this.sel.getRangeAt(0).endOffset;\r\n\r\n      const range: Range = document.createRange();\r\n      range.setStart(this.node, this.startOffset - 1);\r\n      range.setEnd(this.node, this.endOffset);\r\n      range.deleteContents(); // deleting previous set contents\r\n    }\r\n\r\n    if (this.lastChar === '@' || this.lastChar === '#') {\r\n      this.node = this.sel.anchorNode;\r\n      this.format = true;\r\n      this.flag = this.lastChar === '@' ? 0 : 1;\r\n      this.startOffset = this.sel.getRangeAt(0).startOffset;\r\n    }\r\n\r\n    this.writeValue(document.getElementById(`${this.editorConfig.id}`).innerHTML, 'editor');\r\n  }\r\n\r\n  /**\r\n  * This function is called whenever the mention tab is closed\r\n  */\r\n  mentionClosed(): void {\r\n\r\n    if (this.tribute && this.tribute !== '') {\r\n      const input = document.createElement('input');\r\n      input.setAttribute('value', `${this.tribute}`);\r\n      input.setAttribute('type', 'button');\r\n      input.setAttribute('disabled', 'true');\r\n      input.setAttribute('data-id', `${this.mentionid}`);\r\n      input.setAttribute('mention-data', `${this.flag === 0 ? '@' : '#'}`);\r\n      input.style.border = 'none';\r\n      input.style.borderRadius = '2px';\r\n      input.style.padding = '3px';\r\n      input.style.backgroundColor = '#e7eff6';\r\n      input.style.color = '#4681ef';\r\n      input.style.fontWeight = 'inherit';\r\n      input.style.fontSize = 'inherit';\r\n      const range: Range = this.sel.getRangeAt(0).cloneRange();\r\n      this.sel.removeAllRanges();\r\n      const sp = document.createTextNode(' ');\r\n      range.insertNode(input);\r\n      range.insertNode(sp);\r\n      range.setStartAfter(input);\r\n      this.sel.addRange(range);\r\n      this.tribute = '';\r\n      this.writeValue(document.getElementById(`${this.editorConfig.id}`).innerHTML, 'editor');\r\n    }\r\n  }\r\n\r\n  /**\r\n  * @param event - This parameter is an event that is occurred whenever we paste things inside the div contenteditable\r\n  */\r\n   onPaste(event: any): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    const clipboardData = event.clipboardData;\r\n    let pastedHtml = clipboardData.getData('text/html');\r\n    let pastedText = clipboardData.getData('text');\r\n\r\n    if(event.clipboardData.types.indexOf('text/rtf') > -1) {\r\n      // Paste from word\r\n      pastedHtml = this.cleanPaste(pastedHtml);\r\n      document.execCommand('insertHtml', false, pastedHtml);\r\n    } else if (event.clipboardData.types.indexOf('text/html') === -1) {\r\n      const rex = /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/gi;\r\n      pastedText = pastedText.replace(rex, (match: any) => {\r\n        return `<a href=\"${match}\" target=\"_blank\" rel=\"noopener noreferrer\">${match}</a>`;\r\n      });\r\n      document.execCommand('insertHtml', false, this.filterStyles(pastedText));\r\n    } else {\r\n      // Paste from browser\r\n      pastedHtml = this.cleanPaste(pastedHtml);\r\n      document.execCommand('insertHtml', false, this.filterStyles(pastedHtml));\r\n    }\r\n  }\r\n\r\n  filterStyles(html: string|any): string {\r\n    const style = /(style=\".+?\")/gm;\r\n    const script = /(script=\".+?\")/gm;\r\n    const input = /<input.+?\\/?>/g;\r\n    const textarea = /<textarea.+?\\/?>/g;\r\n    const inputset = /<fieldset.+?\\/?>/g;\r\n    const button = /<button.+?\\/?>/g;\r\n    const iframe =/<iframe.+?\\/?>/g;\r\n    const comment = /<!--.+?\\/?>/g;\r\n    html = html.replace(style,'').replace(input,'').replace(textarea,'').replace(inputset,'').replace(script,'').replace(button,'').replace(iframe,'').replace(comment,'');\r\n    return html;\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param rtf - Represents Rich Text which is pasted from the word into the editor\r\n   */\r\n  cleanPaste(rtf: string): string {\r\n    const sS = /(\\n|\\r| class=(\")?Mso[a-zA-Z]+(\")?)/g;\r\n    let output = rtf.replace(sS, ' ');\r\n    const nL = /(\\n)+/g;\r\n    output = output.replace(nL, '<br>');\r\n    const cS = new RegExp('<!--(.*?)-->', 'gi');\r\n    output = output.replace(cS, '');\r\n    let tS = new RegExp('<(/)*(meta|link|\\\\?xml:|st1:|o:|font)(.*?)>', 'gi');\r\n    output = output.replace(tS, '');\r\n    const bT = ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'button', 'meta', 'iframe', 'form', 'select'];\r\n\r\n    for (let i = 0; i < bT.length; i++) {\r\n      tS = new RegExp('<' + bT[i] + '\\\\b.*>.*</' + bT[i] + '>', 'gi');\r\n      output = output.replace(tS, '');\r\n    }\r\n\r\n    const bA = ['start', 'class', 'id', 'onkeydown', 'onkeyup', 'onkeypress',\r\n    'onclick', 'onerror', 'onload', 'oncontextmenu', 'ondblclick', 'onmousedown', 'onmouseenter',\r\n    'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover',\r\n    'onmouseup', 'onchange', 'oncut'];\r\n    for (let ii = 0; ii < bA.length; ii++ ) {\r\n      let aS = new RegExp(' ' + bA[ii] + '=[\\'|\"](.*?)[\\'|\"]', 'gi');\r\n      output = output.replace(aS, '');\r\n      aS = new RegExp(' ' + bA[ii] + '[=0-9a-z]', 'gi');\r\n      output = output.replace(aS, '');\r\n    }\r\n\r\n    const rexa = /href=\".*?\"/g; // match all a href\r\n    output = output.replace(rexa, (match: any) => {\r\n      const str = ' target=\"_blank\" rel=\"noopener noreferrer\"';\r\n      return match + str;\r\n    });\r\n    return output;\r\n  }\r\n\r\n /**\r\n  *\r\n  * @param event - Event triggered when one of the options in the toolbar is clicked\r\n  */\r\n  toolbarClicked(event: any): void {\r\n    try {\r\n      const { startContainer } = this.sel.getRangeAt(0);\r\n      if (this.checkValidOperation(startContainer)) {\r\n\r\n        if (this.oldRange) {\r\n\r\n          if (this.oldRange.collapsed) {\r\n\r\n            this.sel.removeAllRanges();\r\n            const range: Range = this.oldRange.cloneRange();\r\n            const t = document.createTextNode('');\r\n            range.insertNode(t);\r\n            range.setStartAfter(t);\r\n            range.collapse();\r\n            this.sel.addRange(range);\r\n\r\n          }\r\n        } else {\r\n          this.focus();\r\n        }\r\n      } else {\r\n        this.focus();\r\n      }\r\n    } catch (err) {\r\n      this.focus();\r\n    }\r\n    this.toolbarOperations(event?.id, event?.value);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param id- represents the toolbar button that was clicked\r\n   * @param value - Value that is passed from the toolbar to editor to perform operations\r\n   */\r\n  toolbarOperations(id: string, value: any): void {\r\n    if (id && id !== 'fillColor' && id !== 'textColor' && id !== 'subscript' && id !== 'superscript' && id !== 'quote') {\r\n      if (!this.toolbarConfig[id]) {\r\n        this.toolbarConfig[id] = true;\r\n      } else {\r\n        this.toolbarConfig[id] = false;\r\n      }\r\n    }\r\n    switch (id) {\r\n      case 'h1':\r\n      case 'h2':\r\n      case 'h3': document.execCommand('formatBlock', false, id.toUpperCase());\r\n        break;\r\n      case 'para': document.execCommand('formatBlock', false, 'p');\r\n        break;\r\n      case 'superscript':  document.execCommand(\"superscript\", false, null);\r\n                           break;\r\n      case 'subscript':  document.execCommand(\"subscript\", false, null);\r\n                        break;\r\n      case 'link': this.insertLink(value);\r\n                   break;\r\n      case 'bold': document.execCommand('bold', false, '');\r\n                   break;\r\n      case 'italic':\r\n        document.execCommand('italic', false, '');\r\n        break;\r\n      case 'strikeThrough':\r\n        document.execCommand('strikeThrough', false, '');\r\n        break;\r\n      case 'underline':\r\n        document.execCommand('underline', false, '');\r\n        break;\r\n      case 'orderedList':\r\n        document.execCommand('insertOrderedList', false, '');\r\n        break;\r\n      case 'unorderedList':\r\n        document.execCommand('insertunorderedList', false, '');\r\n        break;\r\n      case 'quote':\r\n        this.insertBlockQuote();\r\n        break;\r\n      case 'increaseIndent':\r\n        document.execCommand('indent', false, '');\r\n        break;\r\n      case 'decreaseIndent':\r\n        document.execCommand('outdent', false, '');\r\n        break;\r\n      case 'left-align':\r\n        document.execCommand('justifyleft', false, '');\r\n        break;\r\n      case 'center-align':\r\n        document.execCommand('justifycenter', false, '');\r\n        break;\r\n      case 'right-align':\r\n        document.execCommand('justifyright', false, '');\r\n        break;\r\n      case 'justify-full':\r\n        document.execCommand('justifyfull', false, '');\r\n        break;\r\n      case 'fillColor':\r\n        document.execCommand('styleWithCSS', false, '');\r\n        document.execCommand('hiliteColor', false, value);\r\n        break;\r\n      case 'textColor':\r\n        document.execCommand('styleWithCSS', false, '');\r\n        document.execCommand('foreColor', false, value);\r\n        break;\r\n      case '@': this.insertTribute('@');\r\n        break;\r\n      case '#': this.insertTribute('#');\r\n        break;\r\n      case 'submit': this.commentAction();\r\n        break;\r\n      case 'font-verdana': document.execCommand('fontName', false, 'verdana');\r\n        break;\r\n      case 'font-arial': document.execCommand('fontName', false, 'arial');\r\n        break;\r\n      case 'font-georgia': document.execCommand('fontName', false, 'georgia');\r\n        break;\r\n      case 'font-impact': document.execCommand('fontName', false, 'impact');\r\n        break;\r\n      case 'font-courier new': document.execCommand('fontName', false, 'courier');\r\n        break;\r\n      case 'font-tahoma': document.execCommand('fontName', false, 'tahoma');\r\n        break;\r\n      case 'fontsize-arial': document.execCommand('fontName', false, 'arial');\r\n        break;\r\n      case '12':\r\n        this.setFontSize('1');\r\n        break;\r\n      case '14':\r\n        this.setFontSize('2');\r\n        break;\r\n      case '18':\r\n        this.setFontSize('3');\r\n        break;\r\n      case '24':\r\n        this.setFontSize('4');\r\n        break;\r\n      case '32':\r\n        this.setFontSize('5');\r\n        break;\r\n      case '36':\r\n        this.setFontSize('6');\r\n        break;\r\n      case '48':\r\n        this.setFontSize('7');\r\n        break;\r\n    }\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param size - Represents the size of the font\r\n   */\r\n  setFontSize(size: string): void {\r\n    document.execCommand(\"fontSize\", false, size);\r\n  }\r\n\r\n  /**\r\n   * Function inserts blockquote inside the editor\r\n   */\r\n  insertBlockQuote(): void {\r\n    if (!this.toolbarConfig.quote) {\r\n      const blockquote = document.createElement('blockquote');\r\n      blockquote.setAttribute('style', 'box-sizing: border-box; padding-left:16px; padding-bottom: 10px; border-left: 2px solid rgb(223, 225, 230); margin: 1.143rem 5px 0px');\r\n      // blockquote.innerHTML = '&#8204;';\r\n      const div = document.createElement('div');\r\n      div.appendChild(document.createElement('br'));\r\n      const range: Range = this.sel.getRangeAt(0);\r\n      range.insertNode(div);\r\n      range.insertNode(blockquote);\r\n      range.setStart(blockquote, 0);\r\n      range.setEnd(blockquote, 0);\r\n      range.collapse();\r\n    } else {\r\n      this.reachTextNode('blockquote');\r\n    }\r\n  }\r\n\r\n  /**\r\n  * @param event - Event which stores the link emitted from the link popup\r\n  */\r\n  insertLink(event: any): void {\r\n    const anchorTag = document.createElement('a');\r\n    anchorTag.innerHTML = event.linkText;\r\n    anchorTag.setAttribute('href', event.linkUrl);\r\n    anchorTag.setAttribute('title', event.linkTitle);\r\n    anchorTag.setAttribute('target', '_blank');\r\n    anchorTag.setAttribute('rel', 'noopener noreferrer');\r\n\r\n\r\n    const textNode: Node = document.createTextNode('');\r\n\r\n    let range: Range;\r\n    if(!this.oldRange) {\r\n      range = this.sel.getRangeAt(0).cloneRange();\r\n    } else {\r\n      range = this.oldRange.cloneRange();\r\n    }\r\n    this.sel.removeAllRanges();\r\n    range.insertNode(anchorTag);\r\n    range.insertNode(textNode);\r\n    range.setStartAfter(textNode);\r\n    range.collapse();\r\n    this.sel.addRange(range);\r\n    this.writeValue(document.getElementById(`${this.editorConfig.id}`).innerHTML, 'editor');\r\n  }\r\n\r\n  reachTextNode(tagName: string): void {\r\n    const parent = this.getParent(this.sel.anchorNode, tagName);\r\n    const space = document.createElement('text');\r\n    space.innerHTML = '&#8204;';\r\n    if (parent?.nextSibling) {\r\n      this.sel.getRangeAt(0).setStartAfter(parent.nextSibling);\r\n    } else {\r\n      this.sel.getRangeAt(0).setStartAfter(parent);\r\n    }\r\n    this.sel.getRangeAt(0).insertNode(space);\r\n    this.sel.getRangeAt(0).setStartAfter(space);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param elem - The element whose parent element we need to find\r\n   * @param tagName - Tag name to check if it is the parent node of elem\r\n   */\r\n  getParent(elem: any, tagName: string): any {\r\n    if (elem) {\r\n      if (elem?.nodeName === 'APP-TEXT-EDITOR') {\r\n        return null;\r\n      } else {\r\n        if (elem.nodeName === tagName.toUpperCase()) {\r\n          return elem;\r\n        } else {\r\n          return this.getParent(elem?.parentNode, tagName);\r\n        }\r\n      }\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  Output event to export comment data and cleanup the editor\r\n   */\r\n  commentAction(): void {\r\n    const event = document.getElementById(`${this.editorConfig.id}`).innerHTML;\r\n    this.comment.emit(event);\r\n    document.getElementById(`${this.editorConfig.id}`).innerHTML = '';\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param char - Represents the tribute that was clicked from the toolbar i.e @ or #\r\n   */\r\n  insertTribute(char: string): void {\r\n    if (this.sel) {\r\n      if (this.oldRange) {\r\n        const code = char === '@' ? 'Digit2' : 'Digit3';\r\n        const event = new KeyboardEvent('keydown', { key: `${char}`, code: `${code}` });\r\n        this.sel.removeAllRanges();\r\n        this.sel.addRange(this.oldRange);\r\n        document.getElementById(this.editorConfig.id).dispatchEvent(event);\r\n        const a = document.createTextNode(`${char}`);\r\n        this.oldRange.insertNode(a);\r\n        this.oldRange.setStartAfter(a);\r\n        this.setValue(document.getElementById(this.editorConfig.id).innerHTML);\r\n      } else {\r\n        this.focus();\r\n        this.oldRange = this.sel.getRangeAt(0).cloneRange();\r\n        this.insertTribute(char);\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  clickedOnImage() {\r\n    this.clicked = true;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ColorPaletteComponent } from './color-palette/color-palette.component';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TooltipDirective } from './tooltip.directive';\r\n@NgModule({\r\n  declarations: [ColorPaletteComponent, ClickOutsideDirective, TooltipDirective],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule\r\n  ],\r\n  exports: [\r\n    ColorPaletteComponent, ClickOutsideDirective, TooltipDirective\r\n  ]\r\n})\r\nexport class ToolsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { MarxEditorComponent } from './marx-editor.component';\r\nimport { EditorMenuComponent, EditorFilesComponent, EditorLinkComponent } from '../editor-menu/editor-menu.component';\r\nimport { ToolsModule } from '../tools/tools.module';\r\nimport { MentionModule } from 'angular-mentions';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { MarxModalComponent } from '../modal/modal.component';\r\nimport { DialogModule } from '../ui-dialog/ui-dialog.module';\r\nimport { FileModalComponent } from '../editor-menu/file-modal/file-modal.component';\r\n@NgModule({\r\n  declarations: [MarxEditorComponent, EditorMenuComponent, EditorFilesComponent, EditorLinkComponent, MarxModalComponent, FileModalComponent],\r\n  imports: [\r\n    ToolsModule,\r\n    MentionModule,\r\n    FormsModule,\r\n    CommonModule,\r\n    DialogModule\r\n  ],\r\n  exports: [MarxEditorComponent]\r\n})\r\nexport class VComplyRichEditorModule{ }\r\n"," /**\r\n *\r\n * Public API Surface of marx-editor\r\n*/\r\nexport {MarxEditorComponent} from './editor-container/marx-editor.component'\r\nexport { VComplyRichEditorModule} from './editor-container/marx-editor.module';\r\nexport { EditorConfig } from './editor-config-interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["template","i1.DialogRef","i2.DialogConfig","i3","i4.TooltipDirective","i4","i5.InsertionDirective","i1.ModalService","i2.DialogService","i3.ColorPaletteComponent","i4.MarxModalComponent","i5.TooltipDirective","i6.ClickOutsideDirective","i8","i1.EditorMenuComponent"],"mappings":"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"}