{"version":3,"file":"ngx-quill.mjs","sources":["../../../projects/ngx-quill/src/lib/quill.service.ts","../../../projects/ngx-quill/src/lib/quill-editor-field.component.ts","../../../projects/ngx-quill/src/lib/helpers.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 { inject, Injectable } from '@angular/core'\nimport { defer, forkJoin, isObservable, Observable, of } from 'rxjs'\nimport { map, shareReplay, tap } from 'rxjs/operators'\n\nimport {\n  CustomModule,\n  defaultModules,\n  QUILL_CONFIG_TOKEN,\n  QuillConfig\n} from 'ngx-quill/config'\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class QuillService {\n  readonly config = inject(QUILL_CONFIG_TOKEN) || { modules:defaultModules } as QuillConfig\n\n  private Quill!: any\n\n  private quill$: Observable<any> = defer(async () => {\n    if (!this.Quill) {\n      const { Quill } = await import('./quill')\n      this.Quill = Quill\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    // Use `Promise` directly to avoid bundling `firstValueFrom`.\n    return new Promise(resolve => {\n      this.registerCustomModules(\n        this.Quill,\n        this.config.customModules,\n        this.config.suppressGlobalRegisterWarning\n      ).subscribe(resolve)\n    })\n  }).pipe(\n    shareReplay({\n      bufferSize: 1,\n      refCount: false\n    })\n  )\n\n  // A list of custom modules that have already been registered,\n  // so we don’t need to await their implementation.\n  private registeredModules = new Set<string>()\n\n  getQuill() {\n    return this.quill$\n  }\n\n  /** @internal */\n  beforeRender(Quill: any, customModules: CustomModule[] | undefined, beforeRender = this.config.beforeRender) {\n    // This function is called each time the editor needs to be rendered,\n    // so it operates individually per component. If no custom module needs to be\n    // registered and no `beforeRender` function is provided, it will emit\n    // immediately and proceed with the rendering.\n    const sources: (Observable<any> | Promise<any>)[] = [this.registerCustomModules(Quill, customModules)]\n    if (beforeRender) {\n      sources.push(beforeRender())\n    }\n    return forkJoin(sources).pipe(map(() => Quill))\n  }\n\n  /** @internal */\n  private registerCustomModules(\n    Quill: any,\n    customModules: CustomModule[] | undefined,\n    suppressGlobalRegisterWarning?: boolean\n  ) {\n    if (!Array.isArray(customModules)) {\n      return of(Quill)\n    }\n\n    const sources: Observable<unknown>[] = []\n\n    for (const customModule of customModules) {\n      const { path, implementation: maybeImplementation } = customModule\n\n      // If the module is already registered, proceed to the next module...\n      if (this.registeredModules.has(path)) {\n        continue\n      }\n\n      this.registeredModules.add(path)\n\n      if (isObservable(maybeImplementation)) {\n        // If the implementation is an observable, we will wait for it to load and\n        // then register it with Quill. The caller will wait until the module is registered.\n        sources.push(maybeImplementation.pipe(\n          tap((implementation) => {\n            Quill.register(path, implementation, suppressGlobalRegisterWarning)\n          })\n        ))\n      } else {\n        Quill.register(path, maybeImplementation, suppressGlobalRegisterWarning)\n      }\n    }\n\n    return sources.length > 0 ? forkJoin(sources).pipe(map(() => Quill)) : of(Quill)\n  }\n}\n","import { isPlatformServer, } from '@angular/common'\nimport {\n  afterNextRender,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  Directive,\n  effect,\n  ElementRef,\n  EventEmitter,\n  inject,\n  input,\n  model,\n  Output,\n  PLATFORM_ID,\n  Renderer2,\n  SecurityContext,\n  signal,\n  ViewEncapsulation\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { FormValueControl, ValidationResult } from '@angular/forms/signals'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { CustomModule, CustomOption, defaultModules, QuillBeforeRender, QuillFormat, QuillModules } from 'ngx-quill/config'\nimport type QuillType from 'quill'\nimport type { QuillOptions } from 'quill'\nimport type DeltaType from 'quill-delta'\nimport type History from 'quill/modules/history'\nimport type Toolbar from 'quill/modules/toolbar'\nimport { debounceTime, fromEvent, mergeMap, Subscription } from 'rxjs'\n\nimport { type Blur, type ContentChange, type EditorChangeContent, type EditorChangeSelection, type Focus, type Range, type SelectionChange } from './quill-editor.component'\nimport { QuillService } from './quill.service'\n\nexport enum ValidationKind {\n  quillMinLength = 'quillMinLength',\n  quillMaxLength = 'quillMaxLength',\n  quillRequired = 'quillRequired'\n}\nexport const getFormat = (format?: QuillFormat, configFormat?: QuillFormat): QuillFormat => {\n  const passedFormat = format || configFormat\n  return passedFormat || 'html'\n}\n\n@Directive()\nexport abstract class QuillEditorFieldBase implements FormValueControl<string | DeltaType | null> {\n\n  // Required\n  readonly value = model<string | DeltaType | null>(null)\n\n  // Writable interaction state - control updates these\n  readonly touched = model<boolean>(false)\n\n  // Read-only state - form system manages these\n  readonly disabled = input(false, { transform: booleanAttribute })\n  readonly readonly = input(false, { transform: booleanAttribute })\n\n  // Custom component inputs\n  readonly format = input<QuillFormat>()\n  readonly theme = input<string>()\n  readonly modules = input<QuillModules>()\n  readonly debug = input<'warn' | 'log' | 'error' | false>(false)\n  readonly placeholder = input<string>()\n  readonly formats = input<string[] | null>()\n  readonly customToolbarPosition = input<'top' | 'bottom'>('top')\n  readonly sanitize = input<boolean>()\n  readonly beforeRender = input<QuillBeforeRender>()\n  readonly styles = input<any>(null)\n  readonly registry = input<QuillOptions['registry']>()\n  readonly bounds = input<HTMLElement | string>()\n  readonly customOptions = input<CustomOption[]>([])\n  readonly customModules = input<CustomModule[]>([])\n  readonly trackChanges = input<'user' | 'all'>()\n  readonly classes = input<string>()\n  readonly trimOnValidation = input(false, { transform: booleanAttribute })\n  readonly linkPlaceholder = input<string>()\n  readonly compareValues = input(false, { transform: booleanAttribute })\n  readonly filterNull = input(false, { transform: booleanAttribute })\n  readonly debounceTime = input<number>()\n  readonly onlyFormatEventData = input<boolean | 'none'>(false)\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  readonly defaultEmptyValue = input<any>(null)\n\n  /* ---------------- DEPENDENCIES ---------------- */\n\n  protected quillService = inject(QuillService)\n  private elementRef = inject(ElementRef)\n  private domSanitizer = inject(DomSanitizer)\n  private platformId = inject<string>(PLATFORM_ID)\n  private renderer = inject(Renderer2)\n  private service = inject(QuillService)\n  private destroyRef = inject(DestroyRef)\n\n  protected quill!: QuillType\n  private previousStyles: any\n  private previousClasses: any\n  private internalChange = false\n\n  private eventsSubscription: Subscription | null = null\n  private quillSubscription: Subscription | null = null\n\n  readonly quillEditor = signal<QuillType | null>(null)\n  editorElem!: HTMLElement\n\n  @Output() onEditorCreated = new EventEmitter<QuillType>()\n  @Output() onEditorChanged = new EventEmitter<EditorChangeContent | EditorChangeSelection>()\n  @Output() onContentChanged = new EventEmitter<ContentChange>()\n  @Output() onSelectionChanged = new EventEmitter<SelectionChange>()\n  @Output() onFocus = new EventEmitter<Focus>()\n  @Output() onBlur = new EventEmitter<Blur>()\n  @Output() onNativeFocus = new EventEmitter<Focus>()\n  @Output() onNativeBlur = new EventEmitter<Blur>()\n\n  readonly toolbarPosition = signal('top')\n\n  constructor() {\n    afterNextRender(() => {\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) => this.service.beforeRender(Quill, this.customModules(), this.beforeRender()))\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        const styles = this.styles()\n        if (styles) {\n          this.previousStyles = styles\n          Object.keys(styles).forEach((key: string) => {\n            this.renderer.setStyle(this.editorElem, key, styles[key])\n          })\n        }\n\n        const previousClasses = this.classes()\n        if (previousClasses) {\n          this.previousClasses =previousClasses\n          this.addClasses(previousClasses)\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          // Can use global `document` because we execute this only in the browser.\n          bounds = this.service.config.bounds ? this.service.config.bounds : 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 && readOnly !== false) {\n          readOnly = this.service.config.readOnly !== undefined ? this.service.config.readOnly : false\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        const editor = new Quill(this.editorElem, {\n          bounds,\n          debug,\n          formats,\n          modules,\n          placeholder,\n          readOnly,\n          registry: this.registry(),\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          fromEvent(editor.scroll.domNode, 'blur').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.onNativeBlur.next({\n            editor,\n            source: 'dom'\n          }))\n          // https://github.com/quilljs/quill/issues/2186#issuecomment-803257538\n          const toolbar = editor.getModule('toolbar') as Toolbar\n          if (toolbar.container) {\n            fromEvent(toolbar.container, 'mousedown').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(e => e.preventDefault())\n          }\n        }\n\n        if (this.onNativeFocus.observed) {\n          fromEvent(editor.scroll.domNode, 'focus').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.onNativeFocus.next({\n            editor,\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 = (editor 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        const value = this.value()\n\n        if (value) {\n          this.internalChange = true\n          const format = getFormat(this.format(), this.service.config.format)\n\n          if (format === 'text') {\n            editor.setText(value as string, 'silent')\n          } else {\n            const valueSetter = this.valueSetter()\n            const newValue = valueSetter(editor, value)\n            editor.setContents(newValue, 'silent')\n          }\n\n          const history = editor.getModule('history') as History\n          history.clear()\n\n          // trigger initial form validation\n          this.value.set(value)\n        }\n\n        // should trigger effects when editor set, setting init disabled, readonly + adds event listeners\n        this.quillEditor.set(editor)\n\n        // listening to the `onEditorCreated` event inside the template, for instance `<quill-view (onEditorCreated)=\"...\">`.\n        if (this.onEditorCreated.observed) {\n          this.onEditorCreated.emit(editor)\n        }\n      })\n    })\n\n    effect(() => {\n      const editor = this.quillEditor()\n      const customToolbarPosition = this.customToolbarPosition()\n      if (editor && this.toolbarPosition() !== customToolbarPosition) {\n        this.toolbarPosition.set(customToolbarPosition)\n      }\n    })\n\n    effect(() => {\n      const readonly = this.readonly()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      if (readonly) {\n        editor.disable()\n      } else {\n        editor.enable(true)\n      }\n    })\n\n    effect(() => {\n      let placeholder = this.placeholder()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      placeholder = placeholder !== undefined ? placeholder : this.service.config.placeholder\n      if (placeholder === undefined) {\n        placeholder = 'Insert text here ...'\n      }\n      editor.root.dataset['placeholder'] = placeholder\n    })\n\n    effect(() => {\n      const styles = this.styles()\n      const editor = this.quillEditor()\n      if (!this.editorElem || !editor) {\n        return\n      }\n      const currentStyling = styles\n      const previousStyling = this.previousStyles\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, currentStyling[key])\n        })\n      }\n    })\n\n    effect(() => {\n      const classes = this.classes()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      const currentClasses = classes\n      const previousClasses = this.previousClasses\n\n      if (previousClasses) {\n        this.removeClasses(previousClasses)\n      }\n\n      if (currentClasses) {\n        this.addClasses(currentClasses)\n      }\n    })\n\n    effect(() => {\n      const debounceTime = this.debounceTime()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      this.addQuillEventListeners(debounceTime)\n    })\n\n    effect(() => {\n      const disabled = this.disabled()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      this.setDisabledState(disabled)\n    })\n\n    effect(() => {\n      const value = this.value()\n      const editor = this.quillEditor()\n      if (!editor) {\n        return\n      }\n      if (this.internalChange) {\n        this.internalChange = false\n        return\n      }\n      this.writeValue(value)\n    })\n\n    this.destroyRef.onDestroy(() => {\n      this.dispose()\n\n      this.quillSubscription?.unsubscribe()\n      this.quillSubscription = null\n    })\n  }\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  valueGetter = input(this.getter.bind(this))\n\n  valueSetter = input((quillEditor: QuillType, value: string | DeltaType | null): any => {\n    const format = getFormat(this.format(), this.service.config.format)\n    if (format === 'html') {\n      const sanitize = (typeof this.sanitize() === 'boolean') ? this.sanitize() : (this.service.config.sanitize || false)\n      if (sanitize) {\n        value = this.domSanitizer.sanitize(SecurityContext.HTML, value)\n      }\n      return quillEditor.clipboard.convert({ html: value as string })\n    }\n\n    if (format === 'json') {\n      try {\n        return JSON.parse(value as string) as DeltaType\n      } catch {\n        return [{ insert: value } as unknown as DeltaType]\n      }\n    }\n\n    return value as DeltaType\n  })\n\n  selectionChangeHandler = (range: Range | null, oldRange: Range | null, source: string) => {\n    const trackChanges = this.trackChanges() || this.service.config.trackChanges\n    const shouldTriggerOnModelTouched = !range && (source === 'user' || trackChanges && trackChanges === 'all')\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\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    if (range === null) {\n      this.onBlur.emit({\n        editor,\n        source\n      })\n    } else if (oldRange === null) {\n      this.onFocus.emit({\n        editor,\n        source\n      })\n    }\n\n    this.onSelectionChanged.emit({\n      editor,\n      oldRange,\n      range,\n      source\n    })\n\n    if (shouldTriggerOnModelTouched) {\n      this.touched.set(true)\n    }\n  }\n\n  textChangeHandler = (delta: DeltaType, oldDelta: DeltaType, source: string): void => {\n    const trackChanges = this.trackChanges() || this.service.config.trackChanges\n    const shouldTriggerOnModelChange = (source === 'user' || trackChanges && trackChanges === 'all')\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\n\n    // only emit changes when there's any listener\n    if (!this.onContentChanged.observed && !shouldTriggerOnModelChange) {\n      return\n    }\n\n    const data = this.eventCallbackFormats()\n\n    if (shouldTriggerOnModelChange) {\n      // do not trigger value set again\n      this.internalChange = true\n      this.value.set(\n        // only call value getter again if not already done in eventCallbackFormats\n        data.noFormat ? this.valueGetter()(editor) : data[data.format]\n      )\n    }\n\n    if (this.onContentChanged.observed) {\n      this.onContentChanged.emit({\n        content: data.object,\n        delta,\n        editor,\n        html: data.html,\n        oldDelta,\n        source,\n        text: data.text\n      })\n    }\n  }\n\n  editorChangeHandler = (\n    event: 'text-change' | 'selection-change',\n    current: any | Range | null, old: any | Range | null, source: string\n  ): void => {\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\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 data = this.eventCallbackFormats()\n\n      this.onEditorChanged.emit({\n        content: data.object,\n        delta: current,\n        editor,\n        event,\n        html: data.html,\n        oldDelta: old,\n        source,\n        text: data.text\n      })\n    } else {\n      this.onEditorChanged.emit({\n        editor,\n        event,\n        oldRange: old,\n        range: current,\n        source\n      })\n    }\n  }\n\n  addClasses(classList: string): void {\n    QuillEditorFieldBase.normalizeClassNames(classList).forEach((c: string) => {\n      this.renderer.addClass(this.editorElem, c)\n    })\n  }\n\n  removeClasses(classList: string): void {\n    QuillEditorFieldBase.normalizeClassNames(classList).forEach((c: string) => {\n      this.renderer.removeClass(this.editorElem, c)\n    })\n  }\n\n  writeValue(currentValue: string | DeltaType | null) {\n    const editor = this.quillEditor()\n    // optional fix for https://github.com/angular/angular/issues/14988\n    if (this.filterNull() && currentValue === null) {\n      return\n    }\n    if (!editor) {\n      return\n    }\n\n    const format = getFormat(this.format(), this.service.config.format)\n    const valueSetter = this.valueSetter()\n    const newValue = valueSetter(editor, currentValue)\n\n    if (this.compareValues()) {\n      const currentEditorValue = editor.getContents()\n\n      if (!currentEditorValue.diff(newValue).changeLength()) {\n        return\n      }\n    }\n\n    if (currentValue) {\n      if (format === 'text') {\n        editor.setText(currentValue as string)\n      } else {\n        editor.setContents(newValue)\n      }\n      return\n    }\n\n    editor.setText('')\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\n\n    if (isDisabled) {\n      editor.disable()\n      this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled')\n    } else {\n      if (!this.readonly()) {\n        editor.enable()\n      }\n      this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled')\n    }\n  }\n\n  validate({\n    required = false,\n    minLength,\n    maxLength\n  }: {\n    required?: boolean\n    minLength?: number\n    maxLength?: number\n  }): ValidationResult<{\n    kind: ValidationKind\n    message?: string\n  }> | null {\n    const editor = this.quillEditor()\n    if (!editor || (!required && !minLength && !maxLength)) {\n      return null\n    }\n\n    const text = editor.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 = editor.getContents().ops\n    const onlyEmptyOperation = !!deltaOperations && deltaOperations.length === 1 && ['\\n', ''].includes(deltaOperations[0].insert?.toString() || '')\n    const errors:{\n      kind: ValidationKind\n      message?: string\n    }[]  = []\n\n    if (minLength && textLength && textLength < minLength) {\n      errors.push({\n        kind: ValidationKind.quillMinLength,\n        message: `text length: ${textLength}, min length: ${minLength}`\n      })\n    }\n\n    if (maxLength && textLength > maxLength) {\n      errors.push({\n        kind: ValidationKind.quillMaxLength,\n        message: `text length: ${textLength}, min length: ${maxLength}`\n      })\n    }\n\n    if (required && !textLength && onlyEmptyOperation) {\n      errors.push({\n        kind: ValidationKind.quillRequired,\n        message: `text length: ${textLength}`,\n      })\n    }\n\n    return errors.length ? errors :  null\n  }\n\n  focus() {\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\n\n    editor.focus()\n  }\n\n  private addQuillEventListeners(dbt?: number | null): void {\n    this.dispose()\n    const editor = this.quillEditor()\n    if (!editor) {\n      return\n    }\n\n    this.eventsSubscription = new Subscription()\n\n    this.eventsSubscription.add(\n      // mark model as touched if editor lost focus\n      fromEvent(editor, '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(editor, 'text-change')\n    let editorChange$ = fromEvent(editor, 'editor-change')\n\n    if (typeof dbt === 'number') {\n      textChange$ = textChange$.pipe(debounceTime(dbt))\n      editorChange$ = editorChange$.pipe(debounceTime(dbt))\n    }\n\n    this.eventsSubscription.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.eventsSubscription.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  private dispose(): void {\n    this.eventsSubscription?.unsubscribe()\n    this.eventsSubscription = null\n  }\n\n  private isEmptyValue(html: string | null) {\n    return html === '<p></p>' || html === '<div></div>' || html === '<p><br></p>' || html === '<div><br></div>'\n  }\n\n  private getter(quillEditor: QuillType, forceFormat?: QuillFormat): string | any {\n    let modelValue: string | DeltaType | null = null\n    const format = forceFormat ?? getFormat(this.format(), this.service.config.format)\n\n    if (format === 'html') {\n      let html: string | null = quillEditor.getSemanticHTML()\n      if (this.isEmptyValue(html)) {\n        html = this.defaultEmptyValue()\n      }\n      modelValue = html\n    } else 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 {\n        modelValue = quillEditor.getText()\n      }\n    }\n\n    return modelValue\n  }\n\n  private eventCallbackFormats() {\n    const format = getFormat(this.format(), this.service.config.format)\n    const onlyFormat = this.onlyFormatEventData() === true\n    const noFormat = this.onlyFormatEventData() === 'none'\n    let text: string | null = null\n    let html: string | null = null\n    let object: DeltaType | null = null\n    let json: string | null = null\n    const editor = this.quillEditor()\n\n    // do nothing if no formatted value needed\n    if (noFormat || !editor) {\n      return {\n        format,\n        onlyFormat,\n        noFormat,\n        text,\n        object,\n        json,\n        html\n      }\n    }\n\n    // use getter input to grab value\n    const value = this.valueGetter()(editor)\n\n    if (format === 'text') {\n      text = value\n    } else if (format === 'html') {\n      html = value\n    } else if (format === 'object') {\n      object = value\n      json = JSON.stringify(value)\n    } else if (format === 'json') {\n      json = value\n      object = JSON.parse(value)\n    }\n\n    // return current values, if only the editor format is needed\n    if (onlyFormat) {\n      return {\n        format,\n        onlyFormat,\n        noFormat,\n        text,\n        json,\n        html,\n        object\n      }\n    }\n\n    // return all format values\n    return {\n      format,\n      onlyFormat,\n      noFormat,\n      // use internal getter to retrieve correct other values - this.valueGetter can be overwritten\n      text: format === 'text' ? text : this.getter(editor, 'text'),\n      json: format === 'json' ? json : this.getter(editor, 'json'),\n      html: format === 'html' ? html : this.getter(editor, 'html'),\n      object: format === 'object' ? object : this.getter(editor, 'object')\n    }\n  }\n}\n\n@Component({\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'quill-editor-field',\n  template: `\n    @if (toolbarPosition() !== 'top') {\n        <div quill-editor-element></div>\n    }\n\n    <ng-content select=\"[above-quill-editor-toolbar]\"></ng-content>\n    <ng-content select=\"[quill-editor-toolbar]\"></ng-content>\n    <ng-content select=\"[below-quill-editor-toolbar]\"></ng-content>\n\n    @if (toolbarPosition() === 'top') {\n        <div quill-editor-element></div>\n    }\n  `,\n  styles: [\n    `\n    :host {\n      display: inline-block;\n    }\n    `\n  ]\n})\nexport class QuillEditorFieldComponent extends QuillEditorFieldBase { }\n\n","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 { isPlatformServer } from '@angular/common'\nimport { DomSanitizer } from '@angular/platform-browser'\n\nimport type QuillType from 'quill'\nimport type { QuillOptions } from 'quill'\nimport type DeltaType from 'quill-delta'\n\nimport {\n  afterNextRender,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  Directive,\n  effect,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  input,\n  Output,\n  PLATFORM_ID,\n  Renderer2,\n  SecurityContext,\n  signal,\n  ViewEncapsulation\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { debounceTime, fromEvent, Subscription } from 'rxjs'\nimport { mergeMap } from 'rxjs/operators'\n\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms'\n\nimport { CustomModule, CustomOption, defaultModules, QuillBeforeRender, QuillFormat, QuillModules } from 'ngx-quill/config'\n\nimport type History from 'quill/modules/history'\nimport type Toolbar from 'quill/modules/toolbar'\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: DeltaType\n  delta: DeltaType\n  editor: QuillType\n  html: string | null\n  oldDelta: DeltaType\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()\nexport abstract class QuillEditorBase implements ControlValueAccessor, Validator {\n  readonly format = input<QuillFormat>()\n  readonly theme = input<string>()\n  readonly modules = input<QuillModules>()\n  readonly debug = input<'warn' | 'log' | 'error' | false>(false)\n  readonly readOnly = input(false, { transform: booleanAttribute })\n  readonly placeholder = input<string>()\n  readonly maxLength = input<number>()\n  readonly minLength = input<number>()\n  readonly required = input(false, { transform: booleanAttribute })\n  readonly formats = input<string[] | null>()\n  readonly customToolbarPosition = input<'top' | 'bottom'>('top')\n  readonly sanitize = input<boolean>()\n  readonly beforeRender = input<QuillBeforeRender>()\n  readonly styles = input<any>(null)\n  readonly registry = input<QuillOptions['registry']>()\n  readonly bounds = input<HTMLElement | string>()\n  readonly customOptions = input<CustomOption[]>([])\n  readonly customModules = input<CustomModule[]>([])\n  readonly trackChanges = input<'user' | 'all'>()\n  readonly classes = input<string>()\n  readonly trimOnValidation = input(false, { transform: booleanAttribute })\n  readonly linkPlaceholder = input<string>()\n  readonly compareValues = input(false, { transform: booleanAttribute })\n  readonly filterNull = input(false, { transform: booleanAttribute })\n  readonly debounceTime = input<number>()\n  readonly onlyFormatEventData = input<boolean | 'none'>(false)\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  readonly defaultEmptyValue = input<any>(null)\n\n  @Output() onEditorCreated = new EventEmitter<QuillType>()\n  @Output() onEditorChanged = new EventEmitter<EditorChangeContent | EditorChangeSelection>()\n  @Output() onContentChanged = new EventEmitter<ContentChange>()\n  @Output() onSelectionChanged = new EventEmitter<SelectionChange>()\n  @Output() onFocus = new EventEmitter<Focus>()\n  @Output() onBlur = new EventEmitter<Blur>()\n  @Output() onNativeFocus = new EventEmitter<Focus>()\n  @Output() onNativeBlur = new EventEmitter<Blur>()\n\n  quillEditor!: QuillType\n  editorElem!: HTMLElement\n  content: any\n  disabled = false // used to store initial value before ViewInit\n\n  readonly toolbarPosition = signal('top')\n\n  onModelChange: ((modelValue?: any) => void) | undefined\n  onModelTouched: (() => void) | undefined\n  onValidatorChanged: (() => void) | undefined\n\n  private eventsSubscription: Subscription | null = null\n  private quillSubscription: Subscription | null = null\n\n  private elementRef = inject(ElementRef)\n\n  private domSanitizer = inject(DomSanitizer)\n  private platformId = inject<string>(PLATFORM_ID)\n  private renderer = inject(Renderer2)\n  private service = inject(QuillService)\n  private destroyRef = inject(DestroyRef)\n\n  private previousStyles: any\n  private previousClasses: any\n\n  init = false\n\n  constructor() {\n    afterNextRender(() => {\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) => this.service.beforeRender(Quill, this.customModules(), this.beforeRender()))\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        const styles = this.styles()\n        if (styles) {\n          this.previousStyles = styles\n          Object.keys(styles).forEach((key: string) => {\n            this.renderer.setStyle(this.editorElem, key, styles[key])\n          })\n        }\n\n        const previousClasses = this.classes()\n        if (previousClasses) {\n          this.previousClasses =previousClasses\n          this.addClasses(previousClasses)\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          // Can use global `document` because we execute this only in the browser.\n          bounds = this.service.config.bounds ? this.service.config.bounds : 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 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.quillEditor = new Quill(this.editorElem, {\n          bounds,\n          debug,\n          formats,\n          modules,\n          placeholder,\n          readOnly,\n          registry: this.registry(),\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          fromEvent(this.quillEditor.scroll.domNode, 'blur').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.onNativeBlur.next({\n            editor: this.quillEditor,\n            source: 'dom'\n          }))\n          // https://github.com/quilljs/quill/issues/2186#issuecomment-803257538\n          const toolbar = this.quillEditor.getModule('toolbar') as Toolbar\n          if (toolbar.container) {\n            fromEvent(toolbar.container, 'mousedown').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(e => e.preventDefault())\n          }\n        }\n\n        if (this.onNativeFocus.observed) {\n          fromEvent(this.quillEditor.scroll.domNode, 'focus').pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => 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        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 valueSetter = this.valueSetter()\n            const newValue = valueSetter(this.quillEditor, this.content)\n            this.quillEditor.setContents(newValue, 'silent')\n          }\n\n          const history = this.quillEditor.getModule('history') as History\n          history.clear()\n        }\n\n        // initialize disabled status based on this.disabled as default value\n        this.setDisabledState()\n\n        this.addQuillEventListeners()\n\n        // listening to the `onEditorCreated` event inside the template, for instance `<quill-view (onEditorCreated)=\"...\">`.\n        if (!this.onEditorCreated.observed && !this.onValidatorChanged) {\n          this.init = true\n          return\n        }\n\n        if (this.onValidatorChanged) {\n          this.onValidatorChanged()\n        }\n        this.onEditorCreated.emit(this.quillEditor)\n        this.init = true\n      })\n    })\n\n    effect(() => {\n      const customToolbarPosition = this.customToolbarPosition()\n      if (this.init && this.toolbarPosition() !== customToolbarPosition) {\n        this.toolbarPosition.set(customToolbarPosition)\n      }\n    })\n\n    effect(() => {\n      const readOnly = this.readOnly()\n      if (this.init) {\n        if (readOnly) {\n          this.quillEditor?.disable()\n        } else {\n          this.quillEditor?.enable(true)\n        }\n      }\n    })\n\n    effect(() => {\n      const placeholder = this.placeholder()\n      if (this.init && this.quillEditor) {\n         this.quillEditor.root.dataset.placeholder = placeholder\n      }\n    })\n\n    effect(() => {\n      const styles = this.styles()\n      if (!this.init || !this.editorElem) {\n        return\n      }\n      const currentStyling = styles\n      const previousStyling = this.previousStyles\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, currentStyling[key])\n        })\n      }\n    })\n\n    effect(() => {\n      const classes = this.classes()\n      if (!this.init || !this.quillEditor) {\n        return\n      }\n      const currentClasses = classes\n      const previousClasses = this.previousClasses\n\n      if (previousClasses) {\n        this.removeClasses(previousClasses)\n      }\n\n      if (currentClasses) {\n        this.addClasses(currentClasses)\n      }\n    })\n\n    effect(() => {\n      const debounceTime = this.debounceTime()\n      if (!this.init || !this.quillEditor) {\n        return\n      }\n      if (debounceTime) {\n        this.addQuillEventListeners()\n      }\n    })\n\n    this.destroyRef.onDestroy(() => {\n      this.dispose()\n\n      this.quillSubscription?.unsubscribe()\n      this.quillSubscription = null\n    })\n  }\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  valueGetter = input(this.getter.bind(this))\n\n  valueSetter = input((quillEditor: QuillType, value: any): any => {\n    const format = getFormat(this.format(), this.service.config.format)\n    if (format === 'html') {\n      const sanitize = (typeof this.sanitize() === 'boolean') ? this.sanitize() : (this.service.config.sanitize || false)\n      if (sanitize) {\n        value = this.domSanitizer.sanitize(SecurityContext.HTML, value)\n      }\n      return quillEditor.clipboard.convert({ html: value })\n    } else if (format === 'json') {\n      try {\n        return JSON.parse(value)\n      } catch {\n        return [{ insert: value }]\n      }\n    }\n\n    return value\n  })\n\n  selectionChangeHandler = (range: Range | null, oldRange: Range | null, source: string) => {\n    const trackChanges = this.trackChanges() || this.service.config.trackChanges\n    const shouldTriggerOnModelTouched = !range && !!this.onModelTouched && (source === 'user' || trackChanges && trackChanges === 'all')\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    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\n  textChangeHandler = (delta: DeltaType, oldDelta: DeltaType, source: string): void => {\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    const data = this.eventCallbackFormats()\n\n    if (shouldTriggerOnModelChange) {\n      this.onModelChange!(\n        // only call value getter again if not already done in eventCallbackFormats\n        data.noFormat ? this.valueGetter()(this.quillEditor) : data[data.format]\n      )\n    }\n\n    this.onContentChanged.emit({\n      content: data.object,\n      delta,\n      editor: this.quillEditor,\n      html: data.html,\n      oldDelta,\n      source,\n      text: data.text\n    })\n  }\n\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 data = this.eventCallbackFormats()\n\n      this.onEditorChanged.emit({\n        content: data.object,\n        delta: current,\n        editor: this.quillEditor,\n        event,\n        html: data.html,\n        oldDelta: old,\n        source,\n        text: data.text\n      })\n    } else {\n      this.onEditorChanged.emit({\n        editor: this.quillEditor,\n        event,\n        oldRange: old,\n        range: current,\n        source\n      })\n    }\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    // 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 valueSetter = this.valueSetter()\n    const newValue = 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?.toString() || '')\n\n    const minLength = this.minLength()\n    if (minLength && textLength && textLength < minLength) {\n      err.minLengthError = {\n        given: textLength,\n        minLength\n      }\n\n      valid = false\n    }\n\n    const maxLength = this.maxLength()\n    if (maxLength && textLength > maxLength) {\n      err.maxLengthError = {\n        given: textLength,\n        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    this.eventsSubscription = new Subscription()\n\n    this.eventsSubscription.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    const _debounceTime = this.debounceTime()\n    if (typeof _debounceTime === 'number') {\n      textChange$ = textChange$.pipe(debounceTime(_debounceTime))\n      editorChange$ = editorChange$.pipe(debounceTime(_debounceTime))\n    }\n\n    this.eventsSubscription.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.eventsSubscription.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  private dispose(): void {\n    this.eventsSubscription?.unsubscribe()\n    this.eventsSubscription = null\n  }\n\n  private isEmptyValue(html: string | null) {\n    return html === '<p></p>' || html === '<div></div>' || html === '<p><br></p>' || html === '<div><br></div>'\n  }\n\n  private getter(quillEditor: QuillType, forceFormat?: QuillFormat): string | any {\n    let modelValue: string | DeltaType | null = null\n    const format = forceFormat ?? getFormat(this.format(), this.service.config.format)\n\n    if (format === 'html') {\n      let html: string | null = quillEditor.getSemanticHTML()\n      if (this.isEmptyValue(html)) {\n        html = this.defaultEmptyValue()\n      }\n      modelValue = html\n    } else 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 {\n        modelValue = quillEditor.getText()\n      }\n    }\n\n    return modelValue\n  }\n\n  private eventCallbackFormats() {\n    const format = getFormat(this.format(), this.service.config.format)\n    const onlyFormat = this.onlyFormatEventData() === true\n    const noFormat = this.onlyFormatEventData() === 'none'\n    let text: string | null = null\n    let html: string | null = null\n    let object: DeltaType | null = null\n    let json: string | null = null\n\n    // do nothing if no formatted value needed\n    if (noFormat) {\n      return {\n        format,\n        onlyFormat,\n        noFormat,\n        text,\n        object,\n        json,\n        html\n      }\n    }\n\n    // use getter input to grab value\n    const value = this.valueGetter()(this.quillEditor)\n\n    if (format === 'text') {\n      text = value\n    } else if (format === 'html') {\n      html = value\n    } else if (format === 'object') {\n      object = value\n      json = JSON.stringify(value)\n    } else if (format === 'json') {\n      json = value\n      object = JSON.parse(value)\n    }\n\n    // return current values, if only the editor format is needed\n    if (onlyFormat) {\n      return {\n        format,\n        onlyFormat,\n        noFormat,\n        text,\n        json,\n        html,\n        object\n      }\n    }\n\n    // return all format values\n    return {\n      format,\n      onlyFormat,\n      noFormat,\n      // use internal getter to retrieve correct other values - this.valueGetter can be overwritten\n      text: format === 'text' ? text : this.getter(this.quillEditor, 'text'),\n      json: format === 'json' ? json : this.getter(this.quillEditor, 'json'),\n      html: format === 'html' ? html : this.getter(this.quillEditor, 'html'),\n      object: format === 'object' ? object : this.getter(this.quillEditor, 'object')\n    }\n  }\n}\n\n@Component({\n  encapsulation: ViewEncapsulation.Emulated,\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => QuillEditorComponent)\n    },\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => QuillEditorComponent)\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'quill-editor',\n  template: `\n    @if (toolbarPosition() !== 'top') {\n        <div quill-editor-element></div>\n    }\n\n    <ng-content select=\"[above-quill-editor-toolbar]\"></ng-content>\n    <ng-content select=\"[quill-editor-toolbar]\"></ng-content>\n    <ng-content select=\"[below-quill-editor-toolbar]\"></ng-content>\n\n    @if (toolbarPosition() === 'top') {\n        <div quill-editor-element></div>\n    }\n  `,\n  styles: [\n    `\n    :host {\n      display: inline-block;\n    }\n    `\n  ]\n})\nexport class QuillEditorComponent extends QuillEditorBase { }\n","import { DomSanitizer } from '@angular/platform-browser'\nimport { QuillService } from './quill.service'\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ViewEncapsulation,\n  computed,\n  inject,\n  input\n} from '@angular/core'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\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\" [class]=\"themeClass()\">\n    <div class=\"ql-editor\" [innerHTML]=\"innerHTML()\">\n    </div>\n  </div>\n`\n})\nexport class QuillViewHTMLComponent {\n  readonly content = input('')\n  readonly theme = input<string>()\n  readonly sanitize = input<boolean>()\n\n  readonly innerHTML = computed(() => {\n    const sanitize = this.sanitize()\n    const content = this.content()\n    return ((typeof sanitize === 'boolean') ? sanitize : (this.service.config.sanitize || false)) ? content : this.sanitizer.bypassSecurityTrustHtml(content)\n  })\n  readonly themeClass = computed(() => {\n    const base = this.service.config.theme ? this.service.config.theme : 'snow'\n    return `ql-${this.theme() || base} ngx-quill-view-html`\n  })\n\n  private sanitizer = inject(DomSanitizer)\n  private service = inject(QuillService)\n}\n","import { isPlatformServer } from '@angular/common'\nimport type QuillType from 'quill'\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  Output,\n  PLATFORM_ID,\n  Renderer2,\n  SecurityContext,\n  ViewEncapsulation,\n  afterNextRender,\n  effect,\n  inject,\n  input\n} from '@angular/core'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { mergeMap } from 'rxjs/operators'\n\nimport { CustomModule, CustomOption, QuillBeforeRender, QuillModules } from 'ngx-quill/config'\n\nimport { getFormat } from './helpers'\nimport { QuillService } from './quill.service'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\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></div>\n`,\n})\nexport class QuillViewComponent {\n  readonly format = input<'object' | 'html' | 'text' | 'json'>()\n  readonly theme = input<string>()\n  readonly modules = input<QuillModules>()\n  readonly debug = input<'warn' | 'log' | 'error' | false>(false)\n  readonly formats = input<string[] | null>()\n  readonly sanitize = input<boolean>()\n  readonly beforeRender = input<QuillBeforeRender>()\n  readonly strict = input(true)\n  readonly content = input<any>()\n  readonly customModules = input<CustomModule[]>([])\n  readonly customOptions = input<CustomOption[]>([])\n\n  @Output() onEditorCreated = new EventEmitter<any>()\n\n  quillEditor!: QuillType\n  editorElem!: HTMLElement\n  init = false\n\n  private readonly elementRef = inject(ElementRef)\n  private readonly renderer = inject(Renderer2)\n  private readonly service = inject(QuillService)\n  private readonly sanitizer = inject(DomSanitizer)\n  private readonly platformId = inject(PLATFORM_ID)\n  private readonly destroyRef = inject(DestroyRef)\n\n  constructor() {\n    afterNextRender(() => {\n      if (isPlatformServer(this.platformId)) {\n        return\n      }\n\n      const quillSubscription = this.service.getQuill().pipe(\n        mergeMap((Quill) => this.service.beforeRender(Quill, this.customModules(), this.beforeRender()))\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 === undefined) {\n          formats = this.service.config.formats ? [...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.quillEditor = new Quill(this.editorElem, {\n          debug,\n          formats,\n          modules,\n          readOnly: true,\n          strict: this.strict(),\n          theme\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        // listening to the `onEditorCreated` event inside the template, for instance `<quill-view (onEditorCreated)=\"...\">`.\n        if (!this.onEditorCreated.observed) {\n          this.init = true\n          return\n        }\n\n        this.onEditorCreated.emit(this.quillEditor)\n        this.init = true\n      })\n\n      this.destroyRef.onDestroy(() => quillSubscription.unsubscribe())\n    })\n\n    effect(() => {\n      const content = this.content()\n      if (!this.quillEditor || !this.init) {\n        return\n      }\n\n      if (content) {\n        this.valueSetter(this.quillEditor, content)\n      }\n    })\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 = (typeof this.sanitize() === 'boolean') ? this.sanitize() : (this.service.config.sanitize || false)\n        if (sanitize) {\n          value = this.sanitizer.sanitize(SecurityContext.HTML, value)\n        }\n        content = quillEditor.clipboard.convert({ html: value })\n      } else if (format === 'json') {\n        try {\n          content = JSON.parse(value)\n        } catch {\n          content = [{ insert: value }]\n        }\n      }\n      quillEditor.setContents(content)\n    }\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-editor-field.component'\nexport * from './lib/quill-editor.component'\nexport * from './lib/quill-view-html.component'\nexport * from './lib/quill-view.component'\nexport * from './lib/quill.module'\nexport * from './lib/quill.service'\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getFormat","mergeMap"],"mappings":"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"}