{"version":3,"file":"ngx-quill.mjs","sources":["../../../projects/ngx-quill/src/lib/helpers.ts","../../../projects/ngx-quill/src/lib/quill.service.ts","../../../projects/ngx-quill/src/lib/quill-editor.component.ts","../../../projects/ngx-quill/src/lib/quill-view-html.component.ts","../../../projects/ngx-quill/src/lib/quill-view.component.ts","../../../projects/ngx-quill/src/lib/quill.module.ts","../../../projects/ngx-quill/src/public-api.ts","../../../projects/ngx-quill/src/ngx-quill.ts"],"sourcesContent":["import { QuillFormat } from 'ngx-quill/config'\n\nexport const getFormat = (format?: QuillFormat, configFormat?: QuillFormat): QuillFormat => {\n  const passedFormat = format || configFormat\n  return passedFormat || 'html'\n}\n","import { DOCUMENT } from '@angular/common'\nimport { Injectable, Inject, Injector, Optional } from '@angular/core'\nimport { defer, firstValueFrom, isObservable, Observable } from 'rxjs'\nimport { shareReplay } from 'rxjs/operators'\n\nimport {\n  defaultModules,\n  QUILL_CONFIG_TOKEN,\n  QuillConfig,\n  CustomModule,\n} from 'ngx-quill/config'\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class QuillService {\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  private Quill!: any\n  private document: Document\n  private quill$: Observable<any> = defer(async () => {\n    if (!this.Quill) {\n      // Quill adds events listeners on import https://github.com/quilljs/quill/blob/develop/core/emitter.js#L8\n      // We'd want to use the unpatched `addEventListener` method to have all event callbacks to be run outside of zone.\n      // We don't know yet if the `zone.js` is used or not, just save the value to restore it back further.\n      const maybePatchedAddEventListener = this.document.addEventListener\n      // There're 2 types of Angular applications:\n      // 1) zone-full (by default)\n      // 2) zone-less\n      // The developer can avoid importing the `zone.js` package and tells Angular that he/she is responsible for running\n      // the change detection by himself. This is done by \"nooping\" the zone through `CompilerOptions` when bootstrapping\n      // the root module. We fallback to `document.addEventListener` if `__zone_symbol__addEventListener` is not defined,\n      // this means the `zone.js` is not imported.\n      // The `__zone_symbol__addEventListener` is basically a native DOM API, which is not patched by zone.js, thus not even going\n      // through the `zone.js` task lifecycle. You can also access the native DOM API as follows `target[Zone.__symbol__('methodName')]`.\n      this.document.addEventListener =\n        // eslint-disable-next-line @typescript-eslint/dot-notation\n        this.document['__zone_symbol__addEventListener'] ||\n        this.document.addEventListener\n      const quillImport = await import(/* webpackChunkName: 'quill' */ 'quill')\n      this.document.addEventListener = maybePatchedAddEventListener\n\n      this.Quill = (\n        quillImport.default ? quillImport.default : quillImport\n      ) as any\n    }\n\n    // Only register custom options and modules once\n    this.config.customOptions?.forEach((customOption) => {\n      const newCustomOption = this.Quill.import(customOption.import)\n      newCustomOption.whitelist = customOption.whitelist\n      this.Quill.register(\n        newCustomOption,\n        true,\n        this.config.suppressGlobalRegisterWarning\n      )\n    })\n\n    return await this.registerCustomModules(\n      this.Quill,\n      this.config.customModules,\n      this.config.suppressGlobalRegisterWarning\n    )\n  }).pipe(shareReplay({ bufferSize: 1, refCount: true }))\n\n  constructor(\n    injector: Injector,\n    @Optional() @Inject(QUILL_CONFIG_TOKEN) public config: QuillConfig\n  ) {\n    this.document = injector.get(DOCUMENT)\n\n    if (!this.config) {\n      this.config = { modules: defaultModules }\n    }\n  }\n\n  getQuill() {\n    return this.quill$\n  }\n\n  /**\n   * Marked as internal so it won't be available for `ngx-quill` consumers, this is only\n   * internal method to be used within the library.\n   *\n   * @internal\n   */\n  async registerCustomModules(\n    Quill: any,\n    customModules: CustomModule[] | undefined,\n    suppressGlobalRegisterWarning?: boolean\n  ): Promise<any> {\n    if (Array.isArray(customModules)) {\n      // eslint-disable-next-line prefer-const\n      for (let { implementation, path } of customModules) {\n        // The `implementation` might be an observable that resolves the actual implementation,\n        // e.g. if it should be lazy loaded.\n        if (isObservable(implementation)) {\n          implementation = await firstValueFrom(implementation)\n        }\n        Quill.register(path, implementation, suppressGlobalRegisterWarning)\n      }\n    }\n\n    // Return `Quill` constructor so we'll be able to re-use its return value except of using\n    // `map` operators, etc.\n    return Quill\n  }\n}\n","import { DOCUMENT, isPlatformServer, CommonModule } from '@angular/common'\nimport { DomSanitizer } from '@angular/platform-browser'\n\nimport QuillType, { Delta } from 'quill'\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  PLATFORM_ID,\n  Renderer2,\n  SecurityContext,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core'\nimport { fromEvent, Subscription } from 'rxjs'\nimport { debounceTime, mergeMap } from 'rxjs/operators'\n\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms'\n\nimport { defaultModules, QuillModules, CustomOption, CustomModule } from 'ngx-quill/config'\n\nimport { getFormat } from './helpers'\nimport { QuillService } from './quill.service'\n\nexport interface Range {\n  index: number\n  length: number\n}\n\nexport interface ContentChange {\n  content: any\n  delta: Delta\n  editor: QuillType\n  html: string | null\n  oldDelta: Delta\n  source: string\n  text: string\n}\n\nexport interface SelectionChange {\n  editor: QuillType\n  oldRange: Range | null\n  range: Range | null\n  source: string\n}\n\nexport interface Blur {\n  editor: QuillType\n  source: string\n}\n\nexport interface Focus {\n  editor: QuillType\n  source: string\n}\n\nexport type EditorChangeContent = ContentChange & { event: 'text-change' }\nexport type EditorChangeSelection = SelectionChange & { event: 'selection-change' }\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class QuillEditorBase implements AfterViewInit, ControlValueAccessor, OnChanges, OnInit, OnDestroy, Validator {\n  @Input() format?: 'object' | 'html' | 'text' | 'json'\n  @Input() theme?: string\n  @Input() modules?: QuillModules\n  @Input() debug?: 'warn' | 'log' | 'error' | false\n  @Input() readOnly?: boolean\n  @Input() placeholder?: string\n  @Input() maxLength?: number\n  @Input() minLength?: number\n  @Input() required = false\n  @Input() formats?: string[] | null\n  @Input() customToolbarPosition: 'top' | 'bottom' = 'top'\n  @Input() sanitize?: boolean\n  @Input() beforeRender?: () => Promise<void>\n  @Input() styles: any = null\n  @Input() strict = true\n  @Input() scrollingContainer?: HTMLElement | string | null\n  @Input() bounds?: HTMLElement | string\n  @Input() customOptions: CustomOption[] = []\n  @Input() customModules: CustomModule[] = []\n  @Input() trackChanges?: 'user' | 'all'\n  @Input() preserveWhitespace = false\n  @Input() classes?: string\n  @Input() trimOnValidation = false\n  @Input() linkPlaceholder?: string\n  @Input() compareValues = false\n  @Input() filterNull = false\n  @Input() debounceTime?: number\n  /*\n  https://github.com/KillerCodeMonkey/ngx-quill/issues/1257 - fix null value set\n\n  provide default empty value\n  by default null\n\n  e.g. defaultEmptyValue=\"\" - empty string\n\n  <quill-editor\n    defaultEmptyValue=\"\"\n    formControlName=\"message\"\n  ></quill-editor>\n  */\n  @Input() defaultEmptyValue?: any = null\n\n  @Output() onEditorCreated: EventEmitter<any> = new EventEmitter()\n  @Output() onEditorChanged: EventEmitter<EditorChangeContent | EditorChangeSelection> = new EventEmitter()\n  @Output() onContentChanged: EventEmitter<ContentChange> = new EventEmitter()\n  @Output() onSelectionChanged: EventEmitter<SelectionChange> = new EventEmitter()\n  @Output() onFocus: EventEmitter<Focus> = new EventEmitter()\n  @Output() onBlur: EventEmitter<Blur> = new EventEmitter()\n  @Output() onNativeFocus: EventEmitter<Focus> = new EventEmitter()\n  @Output() onNativeBlur: EventEmitter<Blur> = new EventEmitter()\n\n  quillEditor!: QuillType\n  editorElem!: HTMLElement\n  content: any\n  disabled = false // used to store initial value before ViewInit\n  preserve = false\n  toolbarPosition = 'top'\n\n  onModelChange: (modelValue?: any) => void\n  onModelTouched: () => void\n  onValidatorChanged: () => void\n\n  private subscription: Subscription | null = null\n  private quillSubscription: Subscription | null = null\n\n  private elementRef = inject(ElementRef)\n  private document = inject(DOCUMENT)\n\n  private cd = inject(ChangeDetectorRef)\n  private domSanitizer = inject(DomSanitizer)\n  private platformId = inject<string>(PLATFORM_ID)\n  private renderer = inject(Renderer2)\n  private zone = inject(NgZone)\n  private service = inject(QuillService)\n\n  static normalizeClassNames(classes: string): string[] {\n    const classList = classes.trim().split(' ')\n    return classList.reduce((prev: string[], cur: string) => {\n      const trimmed = cur.trim()\n      if (trimmed) {\n        prev.push(trimmed)\n      }\n\n      return prev\n    }, [])\n  }\n\n  @Input()\n  valueGetter = (quillEditor: QuillType, editorElement: HTMLElement): string | any => {\n    let html: string | null = editorElement.querySelector('.ql-editor')!.innerHTML\n    if (html === '<p><br></p>' || html === '<div><br></div>') {\n      html = this.defaultEmptyValue\n    }\n    let modelValue: string | Delta | null = html\n    const format = getFormat(this.format, this.service.config.format)\n\n    if (format === 'text') {\n      modelValue = quillEditor.getText()\n    } else if (format === 'object') {\n      modelValue = quillEditor.getContents()\n    } else if (format === 'json') {\n      try {\n        modelValue = JSON.stringify(quillEditor.getContents())\n      } catch (e) {\n        modelValue = quillEditor.getText()\n      }\n    }\n\n    return modelValue\n  }\n\n  @Input()\n  valueSetter = (quillEditor: QuillType, value: any): any => {\n    const format = getFormat(this.format, this.service.config.format)\n    if (format === 'html') {\n      const sanitize = [true, false].includes(this.sanitize) ? this.sanitize : (this.service.config.sanitize || false)\n      if (sanitize) {\n        value = this.domSanitizer.sanitize(SecurityContext.HTML, value)\n      }\n      return quillEditor.clipboard.convert(value)\n    } else if (format === 'json') {\n      try {\n        return JSON.parse(value)\n      } catch (e) {\n        return [{ insert: value }]\n      }\n    }\n\n    return value\n  }\n\n  ngOnInit() {\n    this.preserve = this.preserveWhitespace\n    this.toolbarPosition = this.customToolbarPosition\n  }\n\n  ngAfterViewInit() {\n    if (isPlatformServer(this.platformId)) {\n      return\n    }\n\n    // The `quill-editor` component might be destroyed before the `quill` chunk is loaded and its code is executed\n    // this will lead to runtime exceptions, since the code will be executed on DOM nodes that don't exist within the tree.\n\n    this.quillSubscription = this.service.getQuill().pipe(\n      mergeMap((Quill) => {\n        const promises = [this.service.registerCustomModules(Quill, this.customModules)]\n        const beforeRender = this.beforeRender ?? this.service.config.beforeRender\n        if (beforeRender) {\n          promises.push(beforeRender())\n        }\n        return Promise.all(promises).then(() => Quill)\n      })\n    ).subscribe(Quill => {\n      this.editorElem = this.elementRef.nativeElement.querySelector(\n        '[quill-editor-element]'\n      )\n\n      const toolbarElem = this.elementRef.nativeElement.querySelector(\n        '[quill-editor-toolbar]'\n      )\n      const modules = Object.assign({}, this.modules || this.service.config.modules)\n\n      if (toolbarElem) {\n        modules.toolbar = toolbarElem\n      } else if (modules.toolbar === undefined) {\n        modules.toolbar = defaultModules.toolbar\n      }\n\n      let placeholder = this.placeholder !== undefined ? this.placeholder : this.service.config.placeholder\n      if (placeholder === undefined) {\n        placeholder = 'Insert text here ...'\n      }\n\n      if (this.styles) {\n        Object.keys(this.styles).forEach((key: string) => {\n          this.renderer.setStyle(this.editorElem, key, this.styles[key])\n        })\n      }\n\n      if (this.classes) {\n        this.addClasses(this.classes)\n      }\n\n      this.customOptions.forEach((customOption) => {\n        const newCustomOption = Quill.import(customOption.import)\n        newCustomOption.whitelist = customOption.whitelist\n        Quill.register(newCustomOption, true)\n      })\n\n      let bounds = this.bounds && this.bounds === 'self' ? this.editorElem : this.bounds\n      if (!bounds) {\n        bounds = this.service.config.bounds ? this.service.config.bounds : this.document.body\n      }\n\n      let debug = this.debug\n      if (!debug && debug !== false && this.service.config.debug) {\n        debug = this.service.config.debug\n      }\n\n      let readOnly = this.readOnly\n      if (!readOnly && this.readOnly !== false) {\n        readOnly = this.service.config.readOnly !== undefined ? this.service.config.readOnly : false\n      }\n\n      let defaultEmptyValue = this.defaultEmptyValue\n      // eslint-disable-next-line no-prototype-builtins\n      if (this.service.config.hasOwnProperty('defaultEmptyValue')) {\n        defaultEmptyValue = this.service.config.defaultEmptyValue\n      }\n\n      let scrollingContainer = this.scrollingContainer\n      if (!scrollingContainer && this.scrollingContainer !== null) {\n        scrollingContainer =\n          this.service.config.scrollingContainer === null\n            || this.service.config.scrollingContainer ? this.service.config.scrollingContainer : null\n      }\n\n      let formats = this.formats\n      if (!formats && formats === undefined) {\n        formats = this.service.config.formats ? [...this.service.config.formats] : (this.service.config.formats === null ? null : undefined)\n      }\n\n      this.zone.runOutsideAngular(() => {\n        this.quillEditor = new Quill(this.editorElem, {\n          bounds,\n          debug: debug as any,\n          formats: formats as any,\n          modules,\n          placeholder,\n          readOnly,\n          defaultEmptyValue,\n          scrollingContainer: scrollingContainer as any,\n          strict: this.strict,\n          theme: this.theme || (this.service.config.theme ? this.service.config.theme : 'snow')\n        })\n\n        if (this.onNativeBlur.observed) {\n          // https://github.com/quilljs/quill/issues/2186#issuecomment-533401328\n          this.quillEditor.scroll.domNode.addEventListener('blur', () => this.onNativeBlur.next({\n            editor: this.quillEditor,\n            source: 'dom'\n          }))\n          // https://github.com/quilljs/quill/issues/2186#issuecomment-803257538\n          this.quillEditor.getModule('toolbar').container.addEventListener('mousedown', (e) =>  e.preventDefault())\n        }\n\n        if (this.onNativeFocus.observed) {\n          this.quillEditor.scroll.domNode.addEventListener('focus', () => this.onNativeFocus.next({\n            editor: this.quillEditor,\n            source: 'dom'\n          }))\n        }\n\n        // Set optional link placeholder, Quill has no native API for it so using workaround\n        if (this.linkPlaceholder) {\n          const tooltip = (this.quillEditor as any)?.theme?.tooltip\n          const input = tooltip?.root?.querySelector('input[data-link]')\n          if (input?.dataset) {\n            input.dataset.link = this.linkPlaceholder\n          }\n        }\n      })\n\n      if (this.content) {\n        const format = getFormat(this.format, this.service.config.format)\n\n        if (format === 'text') {\n          this.quillEditor.setText(this.content, 'silent')\n        } else {\n          const newValue = this.valueSetter(this.quillEditor, this.content)\n          this.quillEditor.setContents(newValue, 'silent')\n        }\n\n        this.quillEditor.getModule('history').clear()\n      }\n\n      // initialize disabled status based on this.disabled as default value\n      this.setDisabledState()\n\n      this.addQuillEventListeners()\n\n      // The `requestAnimationFrame` triggers change detection. There's no sense to invoke the `requestAnimationFrame` if anyone is\n      // listening to the `onEditorCreated` event inside the template, for instance `<quill-view (onEditorCreated)=\"...\">`.\n      if (!this.onEditorCreated.observed && !this.onValidatorChanged) {\n        return\n      }\n\n      // The `requestAnimationFrame` will trigger change detection and `onEditorCreated` will also call `markDirty()`\n      // internally, since Angular wraps template event listeners into `listener` instruction. We're using the `requestAnimationFrame`\n      // to prevent the frame drop and avoid `ExpressionChangedAfterItHasBeenCheckedError` error.\n      requestAnimationFrame(() => {\n        if (this.onValidatorChanged) {\n          this.onValidatorChanged()\n        }\n        this.onEditorCreated.emit(this.quillEditor)\n        this.onEditorCreated.complete()\n      })\n    })\n  }\n\n  selectionChangeHandler = (range: Range | null, oldRange: Range | null, source: string) => {\n    const shouldTriggerOnModelTouched = !range && !!this.onModelTouched\n\n    // only emit changes when there's any listener\n    if (!this.onBlur.observed &&\n      !this.onFocus.observed &&\n      !this.onSelectionChanged.observed &&\n      !shouldTriggerOnModelTouched) {\n      return\n    }\n\n    this.zone.run(() => {\n      if (range === null) {\n        this.onBlur.emit({\n          editor: this.quillEditor,\n          source\n        })\n      } else if (oldRange === null) {\n        this.onFocus.emit({\n          editor: this.quillEditor,\n          source\n        })\n      }\n\n      this.onSelectionChanged.emit({\n        editor: this.quillEditor,\n        oldRange,\n        range,\n        source\n      })\n\n      if (shouldTriggerOnModelTouched) {\n        this.onModelTouched()\n      }\n\n      this.cd.markForCheck()\n    })\n  }\n\n  textChangeHandler = (delta: Delta, oldDelta: Delta, source: string): void => {\n    // only emit changes emitted by user interactions\n    const text = this.quillEditor.getText()\n    const content = this.quillEditor.getContents()\n\n    let html: string | null = this.editorElem!.querySelector('.ql-editor')!.innerHTML\n    if (html === '<p><br></p>' || html === '<div><br></div>') {\n      html = this.defaultEmptyValue\n    }\n\n    const trackChanges = this.trackChanges || this.service.config.trackChanges\n    const shouldTriggerOnModelChange = (source === 'user' || trackChanges && trackChanges === 'all') && !!this.onModelChange\n\n    // only emit changes when there's any listener\n    if (!this.onContentChanged.observed && !shouldTriggerOnModelChange) {\n      return\n    }\n\n    this.zone.run(() => {\n      if (shouldTriggerOnModelChange) {\n        this.onModelChange(\n          this.valueGetter(this.quillEditor, this.editorElem!)\n        )\n      }\n\n      this.onContentChanged.emit({\n        content,\n        delta,\n        editor: this.quillEditor,\n        html,\n        oldDelta,\n        source,\n        text\n      })\n\n      this.cd.markForCheck()\n    })\n  }\n\n  // eslint-disable-next-line max-len\n  editorChangeHandler = (\n    event: 'text-change' | 'selection-change',\n    current: any | Range | null, old: any | Range | null, source: string\n  ): void => {\n    // only emit changes when there's any listener\n    if (!this.onEditorChanged.observed) {\n      return\n    }\n\n    // only emit changes emitted by user interactions\n    if (event === 'text-change') {\n      const text = this.quillEditor.getText()\n      const content = this.quillEditor.getContents()\n\n      let html: string | null = this.editorElem!.querySelector('.ql-editor')!.innerHTML\n      if (html === '<p><br></p>' || html === '<div><br></div>') {\n        html = this.defaultEmptyValue\n      }\n\n      this.zone.run(() => {\n        this.onEditorChanged.emit({\n          content,\n          delta: current,\n          editor: this.quillEditor,\n          event,\n          html,\n          oldDelta: old,\n          source,\n          text\n        })\n\n        this.cd.markForCheck()\n      })\n    } else {\n      this.zone.run(() => {\n        this.onEditorChanged.emit({\n          editor: this.quillEditor,\n          event,\n          oldRange: old,\n          range: current,\n          source\n        })\n\n        this.cd.markForCheck()\n      })\n    }\n  }\n\n  ngOnDestroy() {\n    this.dispose()\n\n    this.quillSubscription?.unsubscribe()\n    this.quillSubscription = null\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.quillEditor) {\n      return\n    }\n    /* eslint-disable @typescript-eslint/dot-notation */\n    if (changes.readOnly) {\n      this.quillEditor.enable(!changes.readOnly.currentValue)\n    }\n    if (changes.placeholder) {\n      this.quillEditor.root.dataset.placeholder =\n        changes.placeholder.currentValue\n    }\n    if (changes.defaultEmptyValue) {\n      this.quillEditor.root.dataset.defaultEmptyValue =\n        changes.defaultEmptyValue.currentValue\n    }\n    if (changes.styles) {\n      const currentStyling = changes.styles.currentValue\n      const previousStyling = changes.styles.previousValue\n\n      if (previousStyling) {\n        Object.keys(previousStyling).forEach((key: string) => {\n          this.renderer.removeStyle(this.editorElem, key)\n        })\n      }\n      if (currentStyling) {\n        Object.keys(currentStyling).forEach((key: string) => {\n          this.renderer.setStyle(this.editorElem, key, this.styles[key])\n        })\n      }\n    }\n    if (changes.classes) {\n      const currentClasses = changes.classes.currentValue\n      const previousClasses = changes.classes.previousValue\n\n      if (previousClasses) {\n        this.removeClasses(previousClasses)\n      }\n\n      if (currentClasses) {\n        this.addClasses(currentClasses)\n      }\n    }\n    // We'd want to re-apply event listeners if the `debounceTime` binding changes to apply the\n    // `debounceTime` operator or vice-versa remove it.\n    if (changes.debounceTime) {\n      this.addQuillEventListeners()\n    }\n    /* eslint-enable @typescript-eslint/dot-notation */\n  }\n\n  addClasses(classList: string): void {\n    QuillEditorBase.normalizeClassNames(classList).forEach((c: string) => {\n      this.renderer.addClass(this.editorElem, c)\n    })\n  }\n\n  removeClasses(classList: string): void {\n    QuillEditorBase.normalizeClassNames(classList).forEach((c: string) => {\n      this.renderer.removeClass(this.editorElem, c)\n    })\n  }\n\n  writeValue(currentValue: any) {\n\n    // optional fix for https://github.com/angular/angular/issues/14988\n    if (this.filterNull && currentValue === null) {\n      return\n    }\n\n    this.content = currentValue\n\n    if (!this.quillEditor) {\n      return\n    }\n\n    const format = getFormat(this.format, this.service.config.format)\n    const newValue = this.valueSetter(this.quillEditor, currentValue)\n\n    if (this.compareValues) {\n      const currentEditorValue = this.quillEditor.getContents()\n      if (JSON.stringify(currentEditorValue) === JSON.stringify(newValue)) {\n        return\n      }\n    }\n\n    if (currentValue) {\n      if (format === 'text') {\n        this.quillEditor.setText(currentValue)\n      } else {\n        this.quillEditor.setContents(newValue)\n      }\n      return\n    }\n    this.quillEditor.setText('')\n\n  }\n\n  setDisabledState(isDisabled: boolean = this.disabled): void {\n    // store initial value to set appropriate disabled status after ViewInit\n    this.disabled = isDisabled\n    if (this.quillEditor) {\n      if (isDisabled) {\n        this.quillEditor.disable()\n        this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled')\n      } else {\n        if (!this.readOnly) {\n          this.quillEditor.enable()\n        }\n        this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled')\n      }\n    }\n  }\n\n  registerOnChange(fn: (modelValue: any) => void): void {\n    this.onModelChange = fn\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onModelTouched = fn\n  }\n\n  registerOnValidatorChange(fn: () => void) {\n    this.onValidatorChanged = fn\n  }\n\n  validate() {\n    if (!this.quillEditor) {\n      return null\n    }\n\n    const err: {\n      minLengthError?: {\n        given: number\n        minLength: number\n      }\n      maxLengthError?: {\n        given: number\n        maxLength: number\n      }\n      requiredError?: { empty: boolean }\n    } = {}\n    let valid = true\n\n    const text = this.quillEditor.getText()\n    // trim text if wanted + handle special case that an empty editor contains a new line\n    const textLength = this.trimOnValidation ? text.trim().length : (text.length === 1 && text.trim().length === 0 ? 0 : text.length - 1)\n    const deltaOperations = this.quillEditor.getContents().ops\n    const onlyEmptyOperation = deltaOperations && deltaOperations.length === 1 && ['\\n', ''].includes(deltaOperations[0].insert)\n\n    if (this.minLength && textLength && textLength < this.minLength) {\n      err.minLengthError = {\n        given: textLength,\n        minLength: this.minLength\n      }\n\n      valid = false\n    }\n\n    if (this.maxLength && textLength > this.maxLength) {\n      err.maxLengthError = {\n        given: textLength,\n        maxLength: this.maxLength\n      }\n\n      valid = false\n    }\n\n    if (this.required && !textLength && onlyEmptyOperation) {\n      err.requiredError = {\n        empty: true\n      }\n\n      valid = false\n    }\n\n    return valid ? null : err\n  }\n\n  private addQuillEventListeners(): void {\n    this.dispose()\n\n    // We have to enter the `<root>` zone when adding event listeners, so `debounceTime` will spawn the\n    // `AsyncAction` there w/o triggering change detections. We still re-enter the Angular's zone through\n    // `zone.run` when we emit an event to the parent component.\n    this.zone.runOutsideAngular(() => {\n      this.subscription = new Subscription()\n\n      this.subscription.add(\n        // mark model as touched if editor lost focus\n        fromEvent(this.quillEditor, 'selection-change').subscribe(\n          ([range, oldRange, source]) => {\n            this.selectionChangeHandler(range as any, oldRange as any, source)\n          }\n        )\n      )\n\n      // The `fromEvent` supports passing JQuery-style event targets, the editor has `on` and `off` methods which\n      // will be invoked upon subscription and teardown.\n      let textChange$ = fromEvent(this.quillEditor, 'text-change')\n      let editorChange$ = fromEvent(this.quillEditor, 'editor-change')\n\n      if (typeof this.debounceTime === 'number') {\n        textChange$ = textChange$.pipe(debounceTime(this.debounceTime))\n        editorChange$ = editorChange$.pipe(debounceTime(this.debounceTime))\n      }\n\n      this.subscription.add(\n        // update model if text changes\n        textChange$.subscribe(([delta, oldDelta, source]) => {\n          this.textChangeHandler(delta as any, oldDelta as any, source)\n        })\n      )\n\n      this.subscription.add(\n        // triggered if selection or text changed\n        editorChange$.subscribe(([event, current, old, source]) => {\n          this.editorChangeHandler(event as 'text-change' | 'selection-change', current, old, source)\n        })\n      )\n    })\n  }\n\n  private dispose(): void {\n    if (this.subscription !== null) {\n      this.subscription.unsubscribe()\n      this.subscription = null\n    }\n  }\n}\n\n@Component({\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALUE_ACCESSOR,\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      useExisting: forwardRef(() => QuillEditorComponent)\n    },\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      useExisting: forwardRef(() => QuillEditorComponent)\n    }\n  ],\n  selector: 'quill-editor',\n  template: `\n    <ng-template [ngIf]=\"toolbarPosition !== 'top'\">\n      <pre quill-editor-element *ngIf=\"preserve; else noPreserveTpl\"></pre>\n    </ng-template>\n    <ng-content select=\"[quill-editor-toolbar]\"></ng-content>\n    <ng-template [ngIf]=\"toolbarPosition === 'top'\">\n      <pre quill-editor-element *ngIf=\"preserve; else noPreserveTpl\"></pre>\n    </ng-template>\n    <ng-template #noPreserveTpl>\n      <div quill-editor-element></div>\n    </ng-template>\n  `,\n  styles: [\n    `\n    :host {\n      display: inline-block;\n    }\n    `\n  ],\n  standalone: true,\n  imports: [CommonModule]\n})\nexport class QuillEditorComponent extends QuillEditorBase {}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser'\nimport { QuillService } from './quill.service'\n\nimport {\n  Component,\n  Inject,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core'\nimport { CommonModule } from '@angular/common'\n\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  selector: 'quill-view-html',\n  styles: [`\n.ql-container.ngx-quill-view-html {\n  border: 0;\n}\n`],\n  template: `\n  <div class=\"ql-container\" [ngClass]=\"themeClass\">\n    <div class=\"ql-editor\" [innerHTML]=\"innerHTML\">\n    </div>\n  </div>\n`,\n  standalone: true,\n  imports: [CommonModule]\n})\nexport class QuillViewHTMLComponent implements OnChanges {\n  @Input() content = ''\n  @Input() theme?: string\n  @Input() sanitize?: boolean\n\n  innerHTML: SafeHtml = ''\n  themeClass = 'ql-snow'\n\n  constructor(\n    @Inject(DomSanitizer) private sanitizer: DomSanitizer,\n    protected service: QuillService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.theme) {\n      const theme = changes.theme.currentValue || (this.service.config.theme ? this.service.config.theme : 'snow')\n      this.themeClass = `ql-${theme} ngx-quill-view-html`\n    } else if (!this.theme) {\n      const theme = this.service.config.theme ? this.service.config.theme : 'snow'\n      this.themeClass = `ql-${theme} ngx-quill-view-html`\n    }\n    if (changes.content) {\n      const content = changes.content.currentValue\n      const sanitize = [true, false].includes(this.sanitize) ? this.sanitize : (this.service.config.sanitize || false)\n\n      this.innerHTML = sanitize ? content : this.sanitizer.bypassSecurityTrustHtml(content)\n    }\n  }\n}\n","import { CommonModule, isPlatformServer } from '@angular/common'\nimport QuillType from 'quill'\n\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  Output,\n  OnChanges,\n  PLATFORM_ID,\n  Renderer2,\n  SimpleChanges,\n  ViewEncapsulation,\n  NgZone,\n  SecurityContext,\n  OnDestroy,\n  OnInit\n} from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { mergeMap } from 'rxjs/operators'\n\nimport { CustomOption, CustomModule, QuillModules } from 'ngx-quill/config'\n\nimport {getFormat} from './helpers'\nimport { QuillService } from './quill.service'\nimport { DomSanitizer } from '@angular/platform-browser'\n\n@Component({\n  encapsulation: ViewEncapsulation.None,\n  selector: 'quill-view',\n  styles: [`\n.ql-container.ngx-quill-view {\n  border: 0;\n}\n`],\n  template: `\n<div quill-view-element *ngIf=\"!preserve\"></div>\n<pre quill-view-element *ngIf=\"preserve\"></pre>\n`,\n  standalone: true,\n  imports: [CommonModule]\n})\nexport class QuillViewComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n  @Input() format?: 'object' | 'html' | 'text' | 'json'\n  @Input() theme?: string\n  @Input() modules?: QuillModules\n  @Input() debug?: 'warn' | 'log' | 'error' | false\n  @Input() formats?: string[] | null\n  @Input() sanitize?: boolean\n  @Input() beforeRender?: () => Promise<void>\n  @Input() strict = true\n  @Input() content: any\n  @Input() customModules: CustomModule[] = []\n  @Input() customOptions: CustomOption[] = []\n  @Input() preserveWhitespace = false\n\n  @Output() onEditorCreated: EventEmitter<any> = new EventEmitter()\n\n  quillEditor!: QuillType\n  editorElem!: HTMLElement\n  public preserve = false\n\n  private quillSubscription: Subscription | null = null\n\n  constructor(\n    public elementRef: ElementRef,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected service: QuillService,\n    protected domSanitizer: DomSanitizer,\n    @Inject(PLATFORM_ID) protected platformId: any,\n  ) {}\n\n  valueSetter = (quillEditor: QuillType, value: any): any => {\n    const format = getFormat(this.format, this.service.config.format)\n    let content = value\n    if (format === 'text') {\n      quillEditor.setText(content)\n    } else {\n      if (format === 'html') {\n        const sanitize = [true, false].includes(this.sanitize) ? this.sanitize : (this.service.config.sanitize || false)\n        if (sanitize) {\n          value = this.domSanitizer.sanitize(SecurityContext.HTML, value)\n        }\n        content = quillEditor.clipboard.convert(value)\n      } else if (format === 'json') {\n        try {\n          content = JSON.parse(value)\n        } catch (e) {\n          content = [{ insert: value }]\n        }\n      }\n      quillEditor.setContents(content)\n    }\n  }\n\n  ngOnInit() {\n    this.preserve = this.preserveWhitespace\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.quillEditor) {\n      return\n    }\n    if (changes.content) {\n      this.valueSetter(this.quillEditor, changes.content.currentValue)\n    }\n  }\n\n  ngAfterViewInit() {\n    if (isPlatformServer(this.platformId)) {\n      return\n    }\n\n    this.quillSubscription = this.service.getQuill().pipe(\n      mergeMap((Quill) => {\n        const promises = [this.service.registerCustomModules(Quill, this.customModules)]\n        const beforeRender = this.beforeRender ?? this.service.config.beforeRender\n        if (beforeRender) {\n          promises.push(beforeRender())\n        }\n        return Promise.all(promises).then(() => Quill)\n      })\n    ).subscribe(Quill => {\n      const modules = Object.assign({}, this.modules || this.service.config.modules)\n      modules.toolbar = false\n\n      this.customOptions.forEach((customOption) => {\n        const newCustomOption = Quill.import(customOption.import)\n        newCustomOption.whitelist = customOption.whitelist\n        Quill.register(newCustomOption, true)\n      })\n\n      let debug = this.debug\n      if (!debug && debug !== false && this.service.config.debug) {\n        debug = this.service.config.debug\n      }\n\n      let formats = this.formats\n      if (!formats && formats === undefined) {\n        formats = this.service.config.formats ?\n          Object.assign({}, this.service.config.formats) : (this.service.config.formats === null ? null : undefined)\n      }\n      const theme = this.theme || (this.service.config.theme ? this.service.config.theme : 'snow')\n\n      this.editorElem = this.elementRef.nativeElement.querySelector(\n        '[quill-view-element]'\n      ) as HTMLElement\n\n      this.zone.runOutsideAngular(() => {\n        this.quillEditor = new Quill(this.editorElem, {\n          debug: debug as any,\n          formats: formats as any,\n          modules,\n          readOnly: true,\n          strict: this.strict,\n          theme\n        })\n      })\n\n      this.renderer.addClass(this.editorElem, 'ngx-quill-view')\n\n      if (this.content) {\n        this.valueSetter(this.quillEditor, this.content)\n      }\n\n      // The `requestAnimationFrame` triggers change detection. There's no sense to invoke the `requestAnimationFrame` if anyone is\n      // listening to the `onEditorCreated` event inside the template, for instance `<quill-view (onEditorCreated)=\"...\">`.\n      if (!this.onEditorCreated.observers.length) {\n        return\n      }\n\n      // The `requestAnimationFrame` will trigger change detection and `onEditorCreated` will also call `markDirty()`\n      // internally, since Angular wraps template event listeners into `listener` instruction. We're using the `requestAnimationFrame`\n      // to prevent the frame drop and avoid `ExpressionChangedAfterItHasBeenCheckedError` error.\n      requestAnimationFrame(() => {\n        this.onEditorCreated.emit(this.quillEditor)\n        this.onEditorCreated.complete()\n      })\n    })\n  }\n\n  ngOnDestroy(): void {\n    this.quillSubscription?.unsubscribe()\n    this.quillSubscription = null\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core'\n\nimport { QUILL_CONFIG_TOKEN, QuillConfig } from 'ngx-quill/config'\n\nimport { QuillEditorComponent } from './quill-editor.component'\nimport { QuillViewHTMLComponent } from './quill-view-html.component'\nimport { QuillViewComponent } from './quill-view.component'\n\n@NgModule({\n  imports: [QuillEditorComponent, QuillViewComponent, QuillViewHTMLComponent],\n  exports: [QuillEditorComponent, QuillViewComponent, QuillViewHTMLComponent],\n})\nexport class QuillModule {\n  static forRoot(config?: QuillConfig): ModuleWithProviders<QuillModule> {\n    return {\n      ngModule: QuillModule,\n      providers: [\n        {\n          provide: QUILL_CONFIG_TOKEN,\n          useValue: config\n        }\n      ]\n    }\n  }\n}\n","/*\n * Public API Surface of ngx-quill\n */\n\n// Re-export everything from the secondary entry-point so we can be backwards-compatible\n// and don't introduce breaking changes for consumers.\nexport * from 'ngx-quill/config'\n\nexport * from './lib/quill.module'\nexport * from './lib/quill.service'\nexport * from './lib/quill-editor.component'\nexport * from './lib/quill-view.component'\nexport * from './lib/quill-view-html.component'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.QuillService","i2","i3"],"mappings":"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"}