{"version":3,"file":"usitsdasdesign-dds-ng-rich-text-editor.mjs","sources":["../../src/app/dds/rich-text-editor/directives/contenteditable-accessor.directive.ts","../../src/app/dds/rich-text-editor/directives/text-select.directive.ts","../../src/app/dds/rich-text-editor/typings.ts","../../src/app/dds/rich-text-editor/rich-text-editor/constants.ts","../../src/app/dds/rich-text-editor/rich-text-editor/create-link.ts","../../src/app/dds/rich-text-editor/rich-text-editor/set-color.ts","../../src/app/dds/rich-text-editor/rich-text-editor/rich-text-editor.component.ts","../../src/app/dds/rich-text-editor/rich-text-editor/rich-text-editor.component.html","../../src/app/dds/rich-text-editor/rich-text-editor.module.ts","../../src/app/dds/rich-text-editor/usitsdasdesign-dds-ng-rich-text-editor.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, forwardRef, HostListener, Inject, OnDestroy, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n  selector: '[contenteditable][formControlName], [contenteditable][formControl], [contenteditable][ngModel]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ContentEditableAccessorDirective),\n      multi: true,\n    },\n  ],\n  standalone: true,\n})\nexport class ContentEditableAccessorDirective implements AfterViewInit, OnDestroy {\n  private observer = new MutationObserver(() => {\n    setTimeout(() => {\n      this.onModelChange(this.processValue(this.elementRef.nativeElement.innerHTML));\n    });\n  });\n\n  private onTouched = () => { };\n  private onModelChange: (_: unknown) => void = () => { };\n\n  constructor(@Inject(ElementRef) private readonly elementRef: ElementRef, @Inject(Renderer2) private readonly renderer: Renderer2) { }\n\n  // To support IE11 MutationObserver is used to monitor changes to the content\n  ngAfterViewInit() {\n    this.observer.observe(this.elementRef.nativeElement, {\n      characterData: true,\n      childList: true,\n      subtree: true,\n    });\n  }\n\n  // Disconnect MutationObserver IE11 fallback on destroy\n  ngOnDestroy() {\n    this.observer.disconnect();\n  }\n\n  // Listen to input events to write innerHTML value into control,\n  // also disconnect MutationObserver as it is not needed if this\n  // event works in current browser\n  @HostListener('input')\n  onInput() {\n    this.observer.disconnect();\n    this.onModelChange(this.processValue(this.elementRef.nativeElement.innerHTML));\n  }\n\n  // Listen to blur event to mark control as touched\n  @HostListener('blur')\n  onBlur() {\n    this.onTouched();\n  }\n\n  // Reacts to external change\n  //\n  // @see {@link ControlValueAccessor#writeValue}\n  writeValue(value: string | null) {\n    this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', this.processValue(value));\n  }\n\n  // Registers onChange callback\n  //\n  // @see {@link ControlValueAccessor#registerOnChange}\n  registerOnChange(onChange: (value: string) => void) {\n    this.onModelChange = onChange;\n  }\n\n  // Registers onTouch callback\n  //\n  // @see {@link ControlValueAccessor#registerOnTouched}\n  registerOnTouched(onTouched: () => void) {\n    this.onTouched = onTouched;\n  }\n\n  // Sets disabled state by setting contenteditable attribute to true/false\n  //\n  // @see {@link ControlValueAccessor#setDisabledState}\n  setDisabledState(disabled: boolean) {\n    this.renderer.setAttribute(this.elementRef.nativeElement, 'contenteditable', String(!disabled));\n  }\n\n  // null and other falsy control values are treated as empty string to\n  // prevent IE11 outputting 'null', also single <br> is replaced with empty\n  // string when passed to the control\n  private processValue(value: string | null): string {\n    const processed = value || '';\n\n    return processed.trim() === '<br>' ? '' : processed;\n  }\n}\n","import { Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n  selector: '[ddsTextSelect]',\n  standalone: true,\n})\nexport class TextSelectDirective implements OnInit, OnDestroy {\n  // Event emitter to emit the selection event\n  @Output() textSelectEvent = new EventEmitter();\n\n  // Subject to handle the selection state with debounce\n  private selectionSubject = new Subject();\n\n  constructor(private elementRef: ElementRef) { }\n\n  public ngOnInit(): void {\n    // Add event listeners for selection change and mouse/keyboard events\n    document.addEventListener('selectionchange', this.emitSelectionState, false);\n    this.elementRef.nativeElement.addEventListener('mousedown', this.emitSelectionState, false);\n    this.elementRef.nativeElement.addEventListener('mouseup', this.emitSelectionState, false);\n    this.elementRef.nativeElement.addEventListener('keydown', this.emitSelectionState, false);\n\n    // Subscribe to the selection subject with debounce time\n    this.selectionSubject.pipe(debounceTime(10)).subscribe(selection => {\n      this.textSelectEvent.emit(selection);\n    });\n  }\n\n  // Emit the current selection state\n  private emitSelectionState = () => {\n    const selection: Selection = document.getSelection();\n    if (!selection.anchorNode) {\n      return;\n    }\n\n    // Check if the selection is inside the element reference\n    const isSelectionInsideElementRef =\n      this.elementRef.nativeElement.contains(selection.anchorNode) ||\n      this.elementRef.nativeElement.contains(selection.anchorNode.parentNode);\n\n    if (isSelectionInsideElementRef) {\n      this.selectionSubject.next(selection);\n    }\n  };\n\n  public ngOnDestroy(): void {\n    // Remove event listeners when the directive is destroyed\n    document.removeEventListener('selectionchange', this.emitSelectionState, false);\n    this.elementRef.nativeElement.removeEventListener('mousedown', this.emitSelectionState, false);\n    this.elementRef.nativeElement.removeEventListener('mouseup', this.emitSelectionState, false);\n    this.elementRef.nativeElement.removeEventListener('keydown', this.emitSelectionState, false);\n\n    // Complete the event emitter\n    this.textSelectEvent.complete();\n  }\n}\n","import { ErrorState, PositionState, Size, Themes } from '@usitsdasdesign/dds-ng/shared';\n\nexport interface RTEOptions {\n  size?: Size | string;\n  disabled?: boolean;\n  theme?: Themes | string;\n  customClass?: string;\n  placeholder?: string;\n  isResponsive?: boolean;\n  isError?: boolean;\n  isInverse?: boolean;\n  isViewSourceActive?: boolean;\n  errorState?: string | ErrorState;\n  buttonStatuses?: ButtonStatuses;\n  panelPosition?: PanelPositions | string;\n  maxHeight?: number;\n  presetColors?: string[];\n  automaticColor?: string;\n  enableEmptyColor?: boolean;\n  enableCustomColor?: boolean;\n  enableRecentColors?: boolean;\n  enableAutomaticColor?: boolean;\n  stickerWidth?: number | string;\n  stickerIndent?: number;\n  stickerShift?: number;\n  stickerMaxHeight?: number | string;\n  stickerCustomClass?: string;\n  stickerIsDisabled?: boolean;\n  stickerPosition?: PositionState | string;\n  stickerIsOutsideClick?: boolean;\n  stickerIsDynamic?: boolean;\n}\n\nexport interface ButtonStatuses {\n  boldActive?: boolean;\n  italicActive?: boolean;\n  underlineActive?: boolean;\n  crossedActive?: boolean;\n  header1Active?: boolean;\n  header2Active?: boolean;\n  header3Active?: boolean;\n  superscriptActive?: boolean;\n  subscriptActive?: boolean;\n  orderedListActive?: boolean;\n  numeralListActive?: boolean;\n  alignLeftActive?: boolean;\n  alignCenterActive?: boolean;\n  alignRightActive?: boolean;\n  hyperLinkActive?: boolean;\n  blockQuoteActive?: boolean;\n  removeFormatActive?: boolean;\n  textColorActive?: boolean;\n  bgColorActive?: boolean;\n}\n\nexport interface RTEButtonsConfig {\n  iconName?: string;\n  className?: string;\n  params?: Array<string>;\n  label: string;\n  isActive?: boolean;\n  disabled?: boolean;\n  showBind?: string;\n  group?: number;\n}\n\nexport enum TextFormatHotkeys {\n  bold = 'b',\n  italic = 'i',\n  underline = 'u',\n  crossed = 'd',\n  strikeThrough = 's',\n  tab = 'Tab',\n  esc = 'Escape',\n  enter = 'Enter',\n  backwardSlash = '\\\\',\n}\n\nexport enum RTEButtonsGroups {\n  fontStyle,\n  colorsStyle,\n  heading,\n  script,\n  list,\n  align,\n  link,\n  blockQuote,\n  removeFormat,\n}\n\nexport enum ExecCommands {\n  formatBlock = 'formatBlock',\n  createLink = 'createLink',\n  textColor = 'textColor',\n  backgroundColor = 'backgroundColor',\n  unlink = 'unlink',\n  strikeThrough = 'strikeThrough',\n}\n\nexport enum PanelPositions {\n  top = 'top',\n  bottom = 'bottom',\n}\n","import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { SegmentedItemOptions } from '@usitsdasdesign/dds-ng/segmented-control';\nimport { SelectItemOptions } from '@usitsdasdesign/dds-ng/select';\nimport { Size } from '@usitsdasdesign/dds-ng/shared';\nimport { RTEButtonsConfig, RTEButtonsGroups } from '../typings';\n\nexport const HIGHLITED_NODE_CLASS = 'dds-rte__highlited-text';\nexport const LINK_CLASS = 'dds-link';\nexport const MAGIC_UNUSED_SIZE = '7';\nexport const DEFAULT_TEXT_COLOR = '#000000';\nexport const DEFAULT_INVERSE_TEXT_COLOR = '#ffffff';\nexport const BLACK_COLOR_FOR_INVERSE = '#000001';\nexport const DEFAULT_BG_COLOR = 'transparent';\nexport const INDENT = 8;\nexport const STICKER_WIDTH = 240;\nexport const RTE_CONTAINER = 'dds-rte__editable-container';\n\nexport const ARIA_ROLE_RADIO = 'radio';\nexport const ARIA_ROLE_CHECKBOX = 'checkbox';\nexport const ARIA_ROLE_GROUP = 'group';\nexport const ARIA_ROLE_RADIOGROUP = 'radiogroup';\nexport const BTN_TAG = 'dds-button';\nexport const BLOCK_TAGS = ['<h1>', '<h2>', '<h3>', '<blockquote>'];\nexport const DEFAULT_PLACEHOLDER = '';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.lg]: 'dds-rte_lg',\n    [Size.sm]: 'dds-rte_sm',\n  },\n};\n\nexport enum ARIA_LABELS_BY_GROUP {\n  fontStyle = 'Font Style',\n  Headings = 'Headings',\n  Lists = 'Lists',\n  TextAlignment = 'Text Alignment',\n  Hyperlinks = 'Links',\n  Subscript = 'Superscript and Subscript formatting',\n  Colors = 'Colors',\n  Quotes = 'Quotes',\n  ClearFormat = 'Clear format'\n}\n\nexport enum VIEW_SOURCE_BUTTONS {\n  wysiwyg = 'wysiwyg',\n  viewSource = 'viewSource',\n}\n\nexport const bold: RTEButtonsConfig = {\n  iconName: 'bold',\n  label: 'Bold',\n  params: ['bold'],\n  group: RTEButtonsGroups.fontStyle,\n  showBind: 'isBoldActive',\n};\n\nexport const italic: RTEButtonsConfig = {\n  iconName: 'italic',\n  label: 'Italic',\n  params: ['italic'],\n  group: RTEButtonsGroups.fontStyle,\n  showBind: 'isItalicActive',\n};\n\nexport const underline: RTEButtonsConfig = {\n  iconName: 'underline',\n  label: 'Underline',\n  params: ['underline'],\n  group: RTEButtonsGroups.fontStyle,\n  showBind: 'isUnderlineActive',\n};\n\nexport const crossed: RTEButtonsConfig = {\n  iconName: 'crossed-out',\n  label: 'Crossed',\n  params: ['strikeThrough'],\n  group: RTEButtonsGroups.fontStyle,\n  showBind: 'isCrossedActive',\n};\n\nexport const textColor: RTEButtonsConfig = {\n  iconName: 'custom_font_color',\n  label: 'Text color',\n  params: ['textColor'],\n  group: RTEButtonsGroups.colorsStyle,\n  showBind: 'isTextColorActive',\n};\n\nexport const backgroundColor: RTEButtonsConfig = {\n  iconName: 'custom_bg_color',\n  label: 'Background color',\n  params: ['backgroundColor'],\n  group: RTEButtonsGroups.colorsStyle,\n  showBind: 'isBgColorActive',\n};\n\nexport const header1: RTEButtonsConfig = {\n  iconName: 'h1',\n  label: 'h1',\n  params: ['formatBlock', '<h1>'],\n  group: RTEButtonsGroups.heading,\n  showBind: 'isHeader1Active',\n};\n\nexport const header2: RTEButtonsConfig = {\n  iconName: 'h2',\n  label: 'h2',\n  params: ['formatBlock', '<h2>'],\n  group: RTEButtonsGroups.heading,\n  showBind: 'isHeader2Active',\n};\n\nexport const header3: RTEButtonsConfig = {\n  iconName: 'h3',\n  label: 'h3',\n  params: ['formatBlock', '<h3>'],\n  group: RTEButtonsGroups.heading,\n  showBind: 'isHeader3Active',\n};\n\nexport const superscript: RTEButtonsConfig = {\n  iconName: 'x2',\n  params: ['superscript'],\n  label: 'Superscript',\n  group: RTEButtonsGroups.script,\n  showBind: 'isSuperscriptActive',\n};\n\nexport const subscript: RTEButtonsConfig = {\n  iconName: 'x2-2',\n  params: ['subscript'],\n  label: 'Subscript',\n  group: RTEButtonsGroups.script,\n  showBind: 'isSubscriptActive',\n};\n\nexport const orderedList: RTEButtonsConfig = {\n  iconName: 'list',\n  label: 'Ordered list',\n  params: ['insertUnorderedList'],\n  group: RTEButtonsGroups.list,\n  showBind: 'isOrderedListActive',\n};\n\nexport const numeralList: RTEButtonsConfig = {\n  iconName: 'number-list',\n  label: 'Numeral list',\n  params: ['insertOrderedList'],\n  group: RTEButtonsGroups.list,\n  showBind: 'isNumeralListActive',\n};\nexport const alignLeft: RTEButtonsConfig = {\n  iconName: 'align-left',\n  className: 'dds-text-start',\n  label: 'Align left',\n  params: ['justifyleft'],\n  group: RTEButtonsGroups.align,\n  showBind: 'isAlignLeftActive',\n};\n\nexport const alignCenter: RTEButtonsConfig = {\n  iconName: 'align-center',\n  className: 'dds-text-center',\n  label: 'Align center',\n  params: ['justifycenter'],\n  group: RTEButtonsGroups.align,\n  showBind: 'isAlignCenterActive',\n};\n\nexport const alignRight: RTEButtonsConfig = {\n  iconName: 'align-right',\n  className: 'dds-text-end',\n  label: 'Align right',\n  params: ['justifyright'],\n  group: RTEButtonsGroups.align,\n  showBind: 'isAlignRightActive',\n};\n\nexport const hyperLink: RTEButtonsConfig = {\n  iconName: 'hyperlink',\n  label: 'Create link',\n  params: ['createLink'],\n  disabled: true,\n  group: RTEButtonsGroups.link,\n  showBind: 'isHyperLinkActive',\n};\n\nexport const blockQuote: RTEButtonsConfig = {\n  iconName: 'quote__s__stroke',\n  label: 'Quote',\n  params: ['formatBlock', '<blockquote>'],\n  group: RTEButtonsGroups.blockQuote,\n  showBind: 'isBlockQuoteActive',\n};\n\nexport const removeFormat: RTEButtonsConfig = {\n  iconName: 'reset_font_style__l__stroke',\n  label: 'Clear format',\n  params: ['removeFormat'],\n  group: RTEButtonsGroups.removeFormat,\n  showBind: 'isRemoveFormatActive',\n};\n\nexport const RTEButtons: RTEButtonsConfig[] = [\n  bold,\n  italic,\n  underline,\n  crossed,\n  textColor,\n  backgroundColor,\n  header1,\n  header2,\n  header3,\n  superscript,\n  subscript,\n  orderedList,\n  numeralList,\n  alignLeft,\n  alignCenter,\n  alignRight,\n  hyperLink,\n  blockQuote,\n  removeFormat,\n];\n\nexport const viewSourceButtons: SegmentedItemOptions[] = [\n  {\n    heading: 'WYSIWYG',\n    ariaLabel: 'WYSIWYG',\n    value: VIEW_SOURCE_BUTTONS.wysiwyg,\n  },\n  {\n    heading: 'View source',\n    ariaLabel: 'View source',\n    value: VIEW_SOURCE_BUTTONS.viewSource,\n  },\n];\n\n// Link target attributes configuration\nexport const linkTargetAttributes: SelectItemOptions[] = [\n  {\n    heading: '_blank',\n    value: '_blank',\n  },\n  {\n    heading: '_self',\n    value: '_self',\n  },\n  {\n    heading: '_parent',\n    value: '_parent',\n  },\n  {\n    heading: '_top',\n    value: '_top',\n  },\n  {\n    heading: 'framename',\n    value: 'framename',\n  },\n];\n","import { Constructor } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { AdditionalClass } from '@usitsdasdesign/dds-ng/shared';\nimport { ExecCommands, RTEButtonsConfig } from '../typings';\nimport { RTE_CONTAINER } from './constants';\n\nexport interface CreateLink {\n  openLinkCreateContainer(): void;\n  openLinkEditContainer(linkNode: HTMLElement): void;\n  closeLinkCreateContainer(event?: Event): void;\n  createLink(event?: Event): void;\n  setLinkButtonStatus(state: boolean): void;\n  editLink(): void;\n  unlink(): void;\n  linkHandler(): void;\n}\n\nexport type CreateLinkCtor = Constructor<CreateLink>;\n\nexport function CreateLinkMixin<T extends Constructor<any>>(Base: T = class { } as any): CreateLinkCtor & T {\n  return class extends Base {\n    constructor(...args: any[]) {\n      super(...args);\n    }\n\n    public openLinkCreateContainer(): void {\n      this.inLinkAddState = true;\n      this.inLinkEditState = false;\n      this.isSetTextColorState = false;\n      this.isSetBgColorState = false;\n      this.createHighlightedText();\n\n      this.cdr.detectChanges();\n      this.renderer.removeClass(this.rte.nativeElement, AdditionalClass.keyboardFocus);\n      if (this.dropdownBtn) this.renderer.removeClass(this.dropdownBtn.btnRef.nativeElement, AdditionalClass.keyboardFocus);\n\n      setTimeout(() => {\n        this.linkContainer?.inputField?.nativeElement?.focus();\n      });\n    }\n\n    public openLinkEditContainer(linkNode: HTMLElement): void {\n      this.inLinkEditState = true;\n      this.inLinkAddState = false;\n      this.isSetTextColorState = false;\n      this.isSetBgColorState = false;\n\n      this.selectedLinkTarget = linkNode.getAttribute('target');\n      this.link = linkNode.getAttribute('href');\n      this.currentEditableLink = linkNode;\n    }\n\n    public closeLinkCreateContainer(event?: Event): void {\n      if (event) event.preventDefault();\n      if (!this.inLinkAddState && !this.inLinkEditState) return;\n\n      const highlightedArea: HTMLElement = document.querySelector(`.${RTE_CONTAINER} .${this.highlitedNodeClass}`);\n\n      if (highlightedArea) {\n        this.replaceWithInnerContent(highlightedArea);\n      }\n\n      this.inLinkAddState = false;\n      this.inLinkEditState = false;\n      this.link = '';\n      if (event) this.dropdownBtn.btnRef.nativeElement.focus();\n      this.changeHandle();\n    }\n\n    public createLink(event?: Event): void {\n      if (event) event.preventDefault();\n      const highlightedAreaList: NodeListOf<HTMLElement> = document.querySelectorAll(`.${RTE_CONTAINER} .${this.highlitedNodeClass}`);\n\n      highlightedAreaList.forEach((highlightedArea) => {\n        if (highlightedArea) {\n          const selection = document.getSelection();\n          this.selectText(highlightedArea);\n\n          document.execCommand('createlink', false, this.link);\n          selection.anchorNode.parentElement.setAttribute('target', this.selectedLinkTarget);\n          highlightedArea.querySelector('[href]')?.classList.add(this.linkClassName, `dds-link_${this.theme}`);\n\n          this.replaceWithInnerContent(highlightedArea);\n        }\n      });\n\n      this.closeLinkCreateContainer();\n      this.link = '';\n    }\n\n    public setLinkButtonStatus(state: boolean): void {\n      const link: RTEButtonsConfig = this.RTEButtonsToShow.find((button: RTEButtonsConfig) => {\n        return button.params[0] === ExecCommands.createLink;\n      });\n\n      if (!link) return;\n\n      link.disabled = state;\n    }\n\n    public editLink(): void {\n      const link = this.currentEditableLink;\n\n      this.selectText(link);\n      this.openLinkCreateContainer();\n    }\n\n    public unlink(): void {\n      this.selectText(this.currentEditableLink);\n      this.replaceWithInnerContent(this.currentEditableLink);\n\n      this.inLinkEditState = false;\n      this.link = '';\n      this.currentEditableLink = null;\n      this.changeHandle();\n    }\n\n    public linkHandler(): void {\n      const linkNode = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'a');\n\n      if (linkNode) {\n        this.openLinkEditContainer(linkNode);\n      } else {\n        this.openLinkCreateContainer();\n      }\n    }\n  };\n}\n","import { Constructor } from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { BLACK_COLOR_FOR_INVERSE, DEFAULT_BG_COLOR, DEFAULT_INVERSE_TEXT_COLOR, DEFAULT_TEXT_COLOR, RTE_CONTAINER } from './constants';\n\nexport interface SetColor {\n  isSetTextColorState: boolean;\n  isSetBgColorState: boolean;\n  activeTextColor: string;\n  activeBgColor: string;\n  bgBtnLineColor: string;\n  applyColor(color: string): void;\n  colorHandler(isTextColor?: boolean): void;\n}\n\nexport type SetColorCtor = Constructor<SetColor>;\n\nexport function SetColorMixin<T extends Constructor<any>>(Base: T = class { } as any): SetColorCtor & T {\n  return class extends Base {\n    public isSetTextColorState: boolean;\n    public isSetBgColorState: boolean;\n    public activeTextColor: string = DEFAULT_TEXT_COLOR;\n    public activeBgColor: string = DEFAULT_BG_COLOR;\n\n    get bgBtnLineColor(): string {\n      const defaultLineColor = this.isInverse ? 'white' : 'black';\n      return this.activeBgColor === 'transparent' ? defaultLineColor : this.activeBgColor;\n    }\n\n    constructor(...args: any[]) {\n      super(...args);\n    }\n\n    public applyColor(color: string): void {\n      const highlightedAreaList: NodeListOf<HTMLElement> = document.querySelectorAll(`.${RTE_CONTAINER} .${this.highlitedNodeClass}`);\n      const execCommand = this.isSetTextColorState ? 'foreColor' : 'hiliteColor';\n      const defaultColor = this.isSetTextColorState ? DEFAULT_TEXT_COLOR : DEFAULT_BG_COLOR;\n      let colorForInverse;\n      color = color || defaultColor;\n\n      if (this.isInverse && this.isSetTextColorState && color === DEFAULT_TEXT_COLOR) {\n        colorForInverse = BLACK_COLOR_FOR_INVERSE;\n      }\n\n      highlightedAreaList.forEach((highlightedArea) => {\n        this.selectText(highlightedArea);\n\n        document.execCommand(execCommand, false, colorForInverse || color);\n\n        if (this.isSetTextColorState) {\n          this.activeTextColor = color;\n          this.replaceWithInnerContent(highlightedArea);\n        } else {\n          this.activeBgColor = color;\n        }\n\n        this.removeHighlightedClass(highlightedArea);\n      });\n\n      if (!highlightedAreaList?.length) {\n        const selection = document.getSelection();\n        const textNode = document.createTextNode('\\u200B');\n        const range = selection.getRangeAt(0);\n        range.deleteContents();\n        range.insertNode(textNode);\n\n        document.execCommand(execCommand, false, colorForInverse || color);\n      }\n\n      this.isSetTextColorState = false;\n      this.isSetBgColorState = false;\n\n      this.editableContainer?.nativeElement.focus();\n      window.getSelection()?.collapseToEnd();\n      this.changeHandle();\n    }\n\n    public colorHandler(isTextColor = false): void {\n      isTextColor ? (this.isSetBgColorState = false) : (this.isSetTextColorState = false);\n      this.inLinkAddState = false;\n      this.inLinkEditState = false;\n\n      const selection = document.getSelection();\n      const selectionEl = selection.anchorNode?.parentElement;\n\n      if (!selection.anchorNode) {\n        this.editableContainer.nativeElement.focus();\n      }\n\n      if (this.isSetTextColorState || this.isSetBgColorState) {\n        const highlightedArea: HTMLElement = document.querySelector(`.${RTE_CONTAINER} .${this.highlitedNodeClass}`);\n\n        document.execCommand('ForeColor', false, DEFAULT_TEXT_COLOR);\n\n        this.removeHighlightedClass(highlightedArea);\n\n        this.isSetBgColorState = false;\n        this.isSetTextColorState = false;\n        return;\n      }\n\n      const selectedEl = selection?.anchorNode?.parentNode as HTMLElement;\n\n      if (isTextColor) {\n        const defaultTextColor = this.isInverse ? DEFAULT_INVERSE_TEXT_COLOR : DEFAULT_TEXT_COLOR;\n        this.activeTextColor = selectedEl['color'] || defaultTextColor;\n        this.isSetTextColorState = true;\n      } else {\n        const bgColor = this.findBackgroundColor(selectedEl);\n\n        this.activeBgColor = bgColor ? this.rgbToHex(bgColor) : DEFAULT_BG_COLOR;\n        this.isSetBgColorState = true;\n      }\n\n      if (this.isInverse && isTextColor && this.activeTextColor === BLACK_COLOR_FOR_INVERSE) {\n        this.activeTextColor = DEFAULT_TEXT_COLOR;\n      }\n\n      this.createHighlightedText();\n    }\n\n    private removeHighlightedClass(highlightedEl: HTMLElement): void {\n      if (highlightedEl) {\n        this.renderer.removeClass(highlightedEl, this.highlitedNodeClass);\n      }\n    }\n\n    private findBackgroundColor(element: HTMLElement): string {\n      let currentElement = element;\n      let backgroundColor = null;\n\n      while (currentElement && !backgroundColor) {\n        const background = currentElement.style.backgroundColor;\n\n        if (background) {\n          backgroundColor = background;\n        }\n\n        currentElement = currentElement.parentElement;\n      }\n\n      return backgroundColor;\n    }\n\n    private rgbToHex(rgb: string): string {\n      const values = rgb.match(/\\d+/g);\n\n      if (!values) {\n        return;\n      }\n\n      const hexColor = values.map((value) => parseInt(value).toString(16).padStart(2, '0')).join('');\n\n      return `#${hexColor}`;\n    }\n  };\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  SecurityContext,\n  Self,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { FormGroupDirective, FormsModule, NgControl, NgForm, ReactiveFormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ButtonComponent, ButtonModule } from '@usitsdasdesign/dds-ng/button';\nimport { ColorpickerComponent, ColorpickerModule, DEFAULT_AUTOMATIC_COLOR, DEFAULT_PALETTE } from '@usitsdasdesign/dds-ng/colorpicker';\nimport { ContextMenuComponent, ContextMenuItemComponent, ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n  ResponsivenessCtor,\n  ResponsivenessMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { InputComponent, InputModule } from '@usitsdasdesign/dds-ng/input';\nimport { SegmentedControlModule, SegmentedItemOptions } from '@usitsdasdesign/dds-ng/segmented-control';\nimport { SelectItemOptions, SelectModule } from '@usitsdasdesign/dds-ng/select';\nimport { AdditionalClass, ButtonKind, Devices, ErrorState, KeyCodes, PositionState, Size, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { ResizeHandlerModule, ResizeHandlerService } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { TooltipModule } from '@usitsdasdesign/dds-ng/tooltip';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ContentEditableAccessorDirective } from '../directives/contenteditable-accessor.directive';\nimport { TextSelectDirective } from '../directives/text-select.directive';\nimport { ExecCommands, PanelPositions, RTEButtonsConfig, RTEButtonsGroups, TextFormatHotkeys } from '../typings';\nimport {\n  ARIA_LABELS_BY_GROUP,\n  ARIA_ROLE_CHECKBOX,\n  ARIA_ROLE_GROUP,\n  ARIA_ROLE_RADIO,\n  ARIA_ROLE_RADIOGROUP,\n  BLOCK_TAGS,\n  DEFAULT_INVERSE_TEXT_COLOR,\n  DEFAULT_PLACEHOLDER,\n  DEFAULT_TEXT_COLOR,\n  HIGHLITED_NODE_CLASS,\n  LINK_CLASS,\n  MAGIC_UNUSED_SIZE,\n  RTEButtons,\n  RTE_CONTAINER,\n  STICKER_WIDTH,\n  VIEW_SOURCE_BUTTONS,\n  linkTargetAttributes,\n  themeClassesMap,\n  viewSourceButtons,\n} from './constants';\nimport { CreateLinkCtor, CreateLinkMixin } from './create-link';\nimport { SetColorCtor, SetColorMixin } from './set-color';\n\nconst RichTextEditorBase: DestroyCtor & I18nCtor & ResponsivenessCtor & FormAccessorCtor & ErrorStateCtor & CreateLinkCtor & SetColorCtor =\n  DestroyMixin(I18nMixin(ResponsivenessMixin(FormAccessorMixin(ErrorStateMixin(CreateLinkMixin(SetColorMixin()))))));\n\n@Component({\n  selector: 'dds-rich-text-editor',\n  templateUrl: './rich-text-editor.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    CommonModule,\n    StickerModule,\n    InputModule,\n    ButtonModule,\n    TooltipModule,\n    ReactiveFormsModule,\n    FormsModule,\n    StickerModule,\n    FocusHandlerModule,\n    ContextMenuModule,\n    ResizeHandlerModule,\n    ThemeModule,\n    I18nModule,\n    SegmentedControlModule,\n    SelectModule,\n    ColorpickerModule,\n    ContentEditableAccessorDirective,\n    TextSelectDirective,\n  ],\n})\nexport class RichTextEditorComponent extends RichTextEditorBase implements AfterViewInit, OnInit, OnChanges {\n  // Host bindings for various attributes and classes\n  @HostBinding('attr.data-is-empty') isEmptyValue: boolean; // WalkMe\n  @HostBinding(`class.${AdditionalClass.flex}`) isFlex = true;\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Input properties for various configurations\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() customClass: string | undefined;\n  @Input() panelPosition: PanelPositions | string | undefined;\n  @Input() isError: boolean | undefined;\n  @Input() isInverse: boolean | undefined;\n  @Input() isViewSourceActive: boolean | undefined = true;\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() placeholder: string | undefined = DEFAULT_PLACEHOLDER;\n  @Input() maxHeight: number | undefined;\n\n  // Input properties for color picker configurations\n  @Input() presetColors: string[] | undefined = DEFAULT_PALETTE;\n  @Input() automaticColor: string | undefined = DEFAULT_AUTOMATIC_COLOR;\n  @Input() enableEmptyColor: boolean | undefined = true;\n  @Input() enableCustomColor: boolean | undefined = true;\n  @Input() enableRecentColors: boolean | undefined = true;\n  @Input() enableAutomaticColor: boolean | undefined = true;\n\n  // Input property for value with setter and getter\n  @Input()\n  set value(value: string | undefined) {\n    this._value = value;\n    this.checkIsEmpty();\n  }\n\n  get value(): string | undefined {\n    return this._value;\n  }\n\n  // Input properties for button states\n  @Input() isBoldActive: boolean | undefined = true;\n  @Input() isItalicActive: boolean | undefined = true;\n  @Input() isUnderlineActive: boolean | undefined = true;\n  @Input() isCrossedActive: boolean | undefined = true;\n  @Input() isHeader1Active: boolean | undefined = true;\n  @Input() isHeader2Active: boolean | undefined = true;\n  @Input() isHeader3Active: boolean | undefined = true;\n  @Input() isSuperscriptActive: boolean | undefined = true;\n  @Input() isSubscriptActive: boolean | undefined = true;\n  @Input() isOrderedListActive: boolean | undefined = true;\n  @Input() isNumeralListActive: boolean | undefined = true;\n  @Input() isAlignLeftActive: boolean | undefined = true;\n  @Input() isAlignCenterActive: boolean | undefined = true;\n  @Input() isAlignRightActive: boolean | undefined = true;\n  @Input() isHyperLinkActive: boolean | undefined = true;\n  @Input() isBlockQuoteActive: boolean | undefined = true;\n  @Input() isRemoveFormatActive: boolean | undefined = true;\n  @Input() isTextColorActive: boolean | undefined = true;\n  @Input() isBgColorActive: boolean | undefined = true;\n\n  // Input properties for sticker configurations\n  @Input() stickerWidth: number | string | undefined = STICKER_WIDTH;\n  @Input() stickerIndent: number | undefined = this.ddsConfig.getConfig().stickerIndent;\n  @Input() stickerShift: number | undefined;\n  @Input() stickerMaxHeight: number | string | undefined;\n  @Input() stickerCustomClass: string | undefined;\n  @Input() stickerIsDisabled: boolean | undefined;\n  @Input() stickerPosition: PositionState | string | undefined = PositionState.bottom;\n  @Input() stickerIsOutsideClick: boolean | undefined = true;\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  // Output event emitter for value changes\n  @Output() valueChanged = new EventEmitter<string>();\n\n  // ViewChild and ViewChildren decorators for accessing DOM elements\n  @ViewChild('linkContainer') linkContainer: InputComponent;\n  @ViewChild('editableContainer') editableContainer: ElementRef;\n  @ViewChild('controlContainer') controlContainer: ElementRef<HTMLElement>;\n  @ViewChild('stickerDir') sticker: StickerDirective;\n  @ViewChild('dropdownBtn') dropdownBtn: ButtonComponent;\n  @ViewChild('rte') rte: ElementRef<HTMLElement>;\n  @ViewChild('colorpicker') colorpicker: ColorpickerComponent;\n  // Query list for navigation buttons\n  @ViewChildren('navBtn') navBtns: QueryList<ButtonComponent>;\n\n  // Host listener for window scroll events\n  @HostListener('window:scroll', [])\n  public elementInViewport() {\n    if (this.currentDevice === Devices.mobile) {\n      const rect = this.rte.nativeElement.getBoundingClientRect();\n\n      // Check if the control panel should be hidden based on the element's position\n      this.isHiddenCtrlPanel = rect.top > document.documentElement.clientHeight;\n      if (rect.bottom < 0) {\n        this.isHiddenCtrlPanel = true;\n      }\n\n      this.cdr.detectChanges();\n    }\n  }\n\n  // Theme configuration map\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n  // Buttons to be displayed in the RTE panel\n  public RTEPanelButtons: RTEButtonsConfig[][] = [];\n  // Buttons to be displayed in the RTE dropdown\n  public RTEDropdownButtons: RTEButtonsConfig[][] = [];\n  // State for link addition\n  public inLinkAddState = false;\n  // State for link editing\n  public inLinkEditState = false;\n  // Current editable link element\n  public currentEditableLink: HTMLElement;\n  // Link URL\n  public link: string = '';\n  // State for buttons dropdown\n  public isButtonsDropdownActive = false;\n  // State for hidden control panel\n  public isHiddenCtrlPanel: boolean;\n  // Button kind enumeration\n  public ButtonKind = ButtonKind;\n  // Themes enumeration\n  public Themes = Themes;\n  // Size enumeration\n  public Size = Size;\n  // Size of the link control\n  public linkCtrlSize: Size;\n  // State for green theme\n  public isGreenTheme: boolean;\n  // State for blue theme\n  public isBlueTheme: boolean;\n  // State for bottom panel position\n  public isBottomPanelPosition: boolean;\n  // State for focus\n  public isFocused: boolean;\n  // Internal value\n  public _value: string = '';\n  // Toolbar ARIA label\n  public toolbarAriaLabel: string;\n  // Collapsed button ARIA label\n  public collapsedBtnAriaLabel: string;\n  // Input link ARIA label\n  public inputLinkAriaLabel: string;\n  // Cancel link label\n  public cancelLinkLabel: string;\n  // Apply link label\n  public applyLinkLabel: string;\n  // Edit link label\n  public editLinkLabel: string;\n  // Unlink label\n  public unlinkLabel: string;\n  // Popup ARIA label\n  public popupAriaLabel: string;\n\n  // RTE buttons groups\n  protected RTEButtonsGroups = RTEButtonsGroups;\n  // Link class name\n  protected linkClassName: string = LINK_CLASS;\n  // Current device type\n  private currentDevice: Devices;\n  // Highlighted node class name\n  private highlitedNodeClass: string = HIGHLITED_NODE_CLASS;\n  // Buttons to show in the RTE\n  private RTEButtonsToShow: RTEButtonsConfig[] = [...RTEButtons];\n  // Current text selection\n  private selection: Selection;\n  // State for keyboard trigger\n  private keyboardTrigger: boolean;\n\n  // State for mobile view\n  isMobileView: boolean;\n  // State for unordered list active\n  isUnorderedListActive: boolean;\n\n  // Active view source type\n  activeViewSourceType: string;\n\n  // View source buttons configuration\n  viewSourceButtons: SegmentedItemOptions[] = viewSourceButtons;\n\n  // Link target attributes configuration\n  linkTargetAttributes: SelectItemOptions[] = linkTargetAttributes;\n\n  // Selected link target\n  selectedLinkTarget = '_self';\n\n  // Getter for expanded text state\n  get isExpandedText(): string {\n    return this.isButtonsDropdownActive ? 'expanded' : '';\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public resizeService: ResizeHandlerService,\n    public i18n: I18nService,\n    private renderer: Renderer2,\n    private ddsConfig: DdsConfigService,\n    private sanitized: DomSanitizer\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    this.RTEPanelButtons = this.setGroupRTEButtons(this.RTEButtonsToShow);\n    fromEvent(window, 'resize')\n      .pipe(debounceTime(25), takeUntil(this.destroy))\n      .subscribe(() => {\n        this.recalculateButtonsPosition();\n      });\n    this.checkIsEmpty();\n    this.checkTheme(this.theme);\n    super.ngOnInit();\n  }\n\n  public ngAfterViewInit(): void {\n    document.execCommand('defaultParagraphSeparator', false, 'div');\n\n    this.recalculateButtonsPosition();\n    this.navBtns.forEach((btnComp) => {\n      this.renderer.setAttribute(btnComp?.elementRef?.nativeElement, 'aria-checked', 'false');\n    });\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    this.checkTheme(changes.theme);\n\n    if (changes.panelPosition && changes.panelPosition.currentValue) {\n      this.isBottomPanelPosition = this.panelPosition === PanelPositions.bottom;\n    }\n    if (changes.isInverse) {\n      this.activeTextColor = this.isInverse ? DEFAULT_INVERSE_TEXT_COLOR : DEFAULT_TEXT_COLOR;\n    }\n\n    super.ngOnChanges(changes);\n\n    this.RTEButtonsToShow = this.filterButtonsToShow();\n    this.recalculateButtonsPosition();\n  }\n\n  public writeValue(value: string): void {\n    this.value = value;\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Handles changes in the rich text editor.\n  public changeHandle(): void {\n    if (this.inLinkAddState || this.inLinkEditState || this.isSetTextColorState || this.isSetBgColorState) return;\n\n    setTimeout(() => {\n      this.onModelChange(this.editableContainer.nativeElement.innerHTML);\n      this.valueChanged.emit(this.editableContainer.nativeElement.innerHTML);\n      this.checkError();\n    });\n  }\n\n  // Handles keydown events for the menu.\n  public handleKeydownMenu(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.TAB || event.keyCode === KeyCodes.ESC) {\n      // Focus the dropdown button and close the dropdown menu\n      this.dropdownBtn.elementRef.nativeElement.focus();\n      this.dropdownBtn.selectedState(false);\n      this.isButtonsDropdownActive = false;\n      this.sticker.hide();\n    }\n  }\n\n  // Handles keyup events for formatting commands.\n  public handleKeyup(event: KeyboardEvent, [command, value]: string[], btnComp?: ButtonComponent | ContextMenuItemComponent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      // Execute the formatting command\n      this.formatDoc([command, value], btnComp);\n    }\n  }\n\n  // Formats the document based on the provided command and value.\n  public formatDoc([command, value]: string[], btnComp?: ButtonComponent | ContextMenuItemComponent): void {\n    if (command === ExecCommands.formatBlock) {\n      let closestParent;\n\n      // Find the closest parent tag that matches any of the block tags\n      BLOCK_TAGS.forEach((tag) => {\n        const closestParentTag = this.getClosestParentTagByAttr(this.selection?.anchorNode as HTMLElement, tag);\n        if (closestParentTag) closestParent = closestParentTag;\n      });\n\n      if (closestParent) {\n        const closestParentTag = closestParent.tagName;\n        const valueTag = value.replace(/<|>/g, '').toUpperCase();\n\n        // If the closest parent tag matches the value tag, replace it with its inner content\n        if (closestParentTag === valueTag) {\n          this.replaceWithInnerContent(closestParent);\n          this.onSelectionChange(this.selection);\n          this.changeHandle();\n          return;\n        }\n\n        // Replace the closest parent with its inner content and execute the command\n        this.replaceWithInnerContent(closestParent);\n        document.execCommand(command, false, value);\n        this.editableContainer.nativeElement.focus();\n        this.onSelectionChange(this.selection);\n        return;\n      }\n    }\n\n    if (command === ExecCommands.createLink) {\n      this.linkHandler();\n      this.close();\n      return;\n    }\n\n    if (command === ExecCommands.textColor || command === ExecCommands.backgroundColor) {\n      this.colorHandler(command === ExecCommands.textColor);\n      this.close();\n      return;\n    }\n\n    if (command === ExecCommands.strikeThrough) {\n      let closestParent;\n      const closestParentTag = this.getClosestParentTagByAttr(this.selection?.anchorNode as HTMLElement, '<s>');\n      if (closestParentTag) closestParent = closestParentTag;\n\n      if (closestParent) {\n        const closestParentTagName = closestParent.tagName;\n        const valueTag = TextFormatHotkeys.strikeThrough.toUpperCase();\n\n        // If the closest parent tag matches the strike-through tag, replace it with its inner content\n        if (closestParentTagName === valueTag) {\n          this.replaceWithInnerContent(closestParent);\n          this.editableContainer.nativeElement.focus();\n          this.onSelectionChange(this.selection);\n          this.changeHandle();\n          return;\n        }\n\n        return;\n      }\n\n      // Create a strike-through element and insert it into the document\n      const strikeThroughElement = document.createElement('s');\n      strikeThroughElement.appendChild(document.createTextNode(this.selection.toString()));\n      this.selection.deleteFromDocument();\n      window.getSelection().getRangeAt(0).insertNode(strikeThroughElement);\n      this.selectText(strikeThroughElement);\n      return;\n    }\n\n    // Execute the command and update the selection\n    document.execCommand(command, false, value);\n    this.onSelectionChange(this.selection, command);\n\n    if (this.isButtonsDropdownActive) {\n      this.editableContainer.nativeElement.blur();\n    }\n\n    btnComp?.btnRef?.nativeElement.focus();\n  }\n\n  // Gets the closest parent tag that matches the specified value.\n  public getClosestParentTagByAttr(node: HTMLElement, value: string): HTMLElement {\n    const tag = value.replace(/<|>/g, '');\n\n    if (node === this.editableContainer.nativeElement || !node) {\n      return;\n    }\n\n    if (node.tagName && node.tagName.toLowerCase() === tag.toLowerCase()) {\n      return node;\n    } else {\n      return this.getClosestParentTagByAttr(node.parentNode as HTMLElement, tag);\n    }\n  }\n\n  // Replaces the specified element with its inner content.\n  public replaceWithInnerContent(element: HTMLElement): HTMLElement {\n    const fragment = document.createDocumentFragment();\n\n    // Clone and append each child node of the element to the fragment\n    element?.childNodes.forEach((node) => {\n      this.renderer.appendChild(fragment, node.cloneNode(true));\n    });\n\n    // Insert the fragment before the element and remove the element\n    this.renderer.insertBefore(element?.parentNode, fragment, element);\n    return element?.parentNode.removeChild(element);\n  }\n\n  // Selects the text within the specified highlighted area.\n  public selectText(highlightedArea: HTMLElement): void {\n    const selection: Selection = window.getSelection();\n    const range: Range = document.createRange();\n    const body: any = document.body;\n\n    if (highlightedArea) {\n      if (body.createTextRange) {\n        // For Internet Explorer\n        const rangeObj: any = body.createTextRange();\n        rangeObj.moveToElementText(highlightedArea);\n        rangeObj.select();\n      } else {\n        // For other browsers\n        range.selectNodeContents(highlightedArea);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    }\n  }\n\n  // Creates highlighted text by wrapping selected text in a span with a specific class.\n  public createHighlightedText(): void {\n    // Execute the 'fontSize' command with a magic unused size to mark the selected text\n    document.execCommand('fontSize', false, MAGIC_UNUSED_SIZE);\n\n    // Get all elements with the specified size attribute within the RTE container\n    const nodeToReplaceList: NodeListOf<HTMLElement> = document.querySelectorAll(`.${RTE_CONTAINER} [size=\"${MAGIC_UNUSED_SIZE}\"]`);\n\n    // Iterate over each node to replace\n    nodeToReplaceList.forEach((nodeToReplace) => {\n      // Create a new span element to wrap the highlighted text\n      const highlitedNode: HTMLElement = document.createElement('span');\n\n      // Remove the size attribute from the node to replace\n      this.renderer.removeAttribute(nodeToReplace, 'size');\n      // Add the highlighted node class to the new span element\n      highlitedNode.classList.add(`${this.highlitedNodeClass}`);\n      // Set the inner HTML of the new span element to the outer HTML of the node to replace\n      highlitedNode.innerHTML = nodeToReplace.outerHTML;\n      // Insert the new span element before the node to replace\n      this.renderer.insertBefore(nodeToReplace.parentElement, highlitedNode, nodeToReplace);\n      // Remove the original node to replace\n      nodeToReplace.parentNode.removeChild(nodeToReplace);\n    });\n  }\n\n  // Toggles the state of the buttons dropdown.\n  public toggleButtonsDropdown(event: Event): void {\n    event.stopPropagation();\n    this.isButtonsDropdownActive = !this.isButtonsDropdownActive;\n    this.keyboardTrigger = false;\n  }\n\n  // Prevents the default action for Enter and Space keys.\n  public preventEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n    }\n  }\n\n  // Handles keydown events for Enter and Space keys.\n  public handleKeydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.keyboardTrigger = true;\n      this.isButtonsDropdownActive = true;\n      this.sticker.show();\n      this.onModelTouched();\n    }\n  }\n\n  // Initializes the context menu with a delay to ensure it is properly set up.\n  public contextMenuInit(contextMenu: ContextMenuComponent): void {\n    setTimeout(() => {\n      if (this.keyboardTrigger) contextMenu.keyManager.setFirstItemActive();\n    });\n  }\n\n  // Handles the event when the dropdown is hidden.\n  public onHidden(): void {\n    this.isButtonsDropdownActive = false;\n\n    if (!this.inLinkAddState) {\n      this.dropdownBtn.elementRef.nativeElement.focus();\n    }\n\n    this.onModelTouched();\n    this.cdr.detectChanges();\n  }\n\n  // Handles the selection change event in the rich text editor.\n  public onSelectionChange(selection: Selection, command?: string): void {\n    if (!selection || !selection.anchorNode) {\n      return;\n    }\n\n    const anchorNode = selection.anchorNode as HTMLElement;\n\n    this.selection = selection;\n\n    if (!selection.toString().length || this.inLinkEditState || this.inLinkAddState) {\n      this.setLinkButtonStatus(true);\n    } else {\n      this.setLinkButtonStatus(false);\n    }\n\n    if (this.getClosestParentTagByAttr(anchorNode, 'a')) {\n      this.setLinkButtonStatus(false);\n    }\n\n    this.RTEButtonsToShow.forEach((item: RTEButtonsConfig) => {\n      if (item.group === RTEButtonsGroups.align) {\n        this.removeTextAlignClass(item.className, this.selection.anchorNode);\n      }\n    });\n\n    this.RTEButtonsToShow.forEach((item: RTEButtonsConfig) => {\n      if (item.params[0] === ExecCommands.formatBlock) {\n        item.isActive = !!this.getClosestParentTagByAttr(anchorNode, item.params[1]);\n      } else {\n        item.isActive = document.queryCommandState(item.params[0]);\n\n        if (item.params[0] === 'insertUnorderedList') this.isUnorderedListActive = item.isActive;\n\n        if (item.group === RTEButtonsGroups.align) {\n          if (item.isActive) {\n            this.setTextAlignClass(item.className, this.selection.anchorNode);\n          } else {\n            this.removeTextAlignClass(item.className, this.selection.anchorNode);\n          }\n        }\n      }\n    });\n\n    this.cdr.detectChanges();\n  }\n\n  // Adds a text alignment class to the parent element of the specified node.\n  public setTextAlignClass(className: string, el: Node): void {\n    const parentEl = el.parentElement;\n\n    if (parentEl && !parentEl.classList.contains(RTE_CONTAINER)) {\n      if (parentEl.style.textAlign) {\n        this.renderer.addClass(parentEl, className);\n      } else {\n        this.setTextAlignClass(className, parentEl);\n      }\n    }\n  }\n\n  // Removes a text alignment class from the parent element of the specified node.\n  public removeTextAlignClass(className: string, el: Node): void {\n    const parentEl = el.parentElement;\n\n    if (parentEl && !parentEl.classList.contains(RTE_CONTAINER)) {\n      if (parentEl.classList.contains(className)) {\n        this.renderer.removeClass(parentEl, className);\n      } else {\n        this.removeTextAlignClass(className, parentEl);\n      }\n    }\n  }\n\n  // Handles key press events for text formatting and list manipulation.\n  public pressedKeyHandler(event: KeyboardEvent) {\n    const ctrl = event.ctrlKey;\n    const shift = event.shiftKey;\n    const code = event.key;\n\n    // Blur the editable container if the Escape key is pressed\n    if (code === TextFormatHotkeys.esc) {\n      this.editableContainer.nativeElement.blur();\n    }\n\n    // Handle text formatting shortcuts when the Control key is pressed\n    if (ctrl) {\n      if (\n        code === TextFormatHotkeys.bold ||\n        code === TextFormatHotkeys.italic ||\n        code === TextFormatHotkeys.underline ||\n        code === TextFormatHotkeys.crossed ||\n        code === TextFormatHotkeys.backwardSlash\n      ) {\n        event.stopPropagation();\n        event.preventDefault();\n      }\n\n      // Execute the corresponding text formatting command\n      switch (code) {\n        case TextFormatHotkeys.bold:\n          document.execCommand('bold');\n          break;\n\n        case TextFormatHotkeys.italic:\n          document.execCommand('italic');\n          break;\n\n        case TextFormatHotkeys.underline:\n          document.execCommand('underline');\n          break;\n\n        case TextFormatHotkeys.crossed:\n          document.execCommand('strikeThrough');\n          break;\n\n        case TextFormatHotkeys.backwardSlash:\n          document.execCommand('removeFormat');\n          break;\n      }\n    }\n\n    // Handle list manipulation when an unordered list is active\n    if (this.isUnorderedListActive) {\n      if (shift) {\n        // Handle Shift + Tab key for outdenting list items\n        if (code === TextFormatHotkeys.tab) {\n          event.preventDefault();\n          const currentList = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'ul');\n          const parentItem = currentList.parentNode;\n\n          if ((parentItem as HTMLElement).tagName === 'DIV') return;\n\n          const currentItem = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'li');\n          const parentList = this.getClosestParentTagByAttr(parentItem as HTMLElement, 'ul');\n\n          const li = document.createElement('li');\n          li.innerHTML = currentItem.innerHTML;\n\n          if (currentItem === currentList.firstChild) {\n            currentItem.remove();\n            const parentItemChildren = parentItem.childNodes[1] as HTMLElement;\n            const newList = document.createElement('ul');\n\n            newList.innerHTML = parentItemChildren.innerHTML;\n            li.appendChild(newList);\n            currentList && !currentList.children\n              ? parentList.insertBefore(li, currentList.parentNode)\n              : parentList.insertBefore(li, currentList.parentNode.nextSibling);\n            parentItemChildren.remove();\n          } else if (currentItem === currentList.lastChild) {\n            currentItem.remove();\n            parentList.insertBefore(li, currentList.parentNode.nextSibling);\n          } else {\n            const currentIndex = Array.from(currentList.children).indexOf(currentItem);\n            const childrenItems = Array.from(currentList.childNodes).slice(currentIndex + 1) as Node[];\n            const newList = document.createElement('ul');\n            const newItem = document.createElement('li');\n\n            childrenItems.forEach((child) => newItem.appendChild(child));\n            newList.appendChild(newItem);\n            li.appendChild(newList);\n            parentList.insertBefore(li, currentList.parentNode.nextSibling);\n            currentItem.remove();\n          }\n          this.moveCursorTo(li, 1);\n        }\n      } else {\n        // Handle Tab key for indenting list items\n        if (code === TextFormatHotkeys.tab) {\n          event.preventDefault();\n          event.stopPropagation();\n\n          const currentItem = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'li');\n          const parent = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'ul');\n          const ul = document.createElement('ul');\n          const li = document.createElement('li');\n\n          if (!parent || parent.childNodes.length <= 1) return;\n          li.innerHTML = currentItem.innerHTML;\n\n          ul.appendChild(li);\n          if (currentItem.previousSibling) currentItem.previousSibling.appendChild(ul);\n          currentItem.remove();\n          this.moveCursorTo(li, 1);\n        }\n      }\n\n      // Fix for Firefox to handle Enter key in lists\n      if (code === TextFormatHotkeys.enter) {\n        setTimeout(() => {\n          const currentListItem = this.getClosestParentTagByAttr(this.selection.anchorNode as HTMLElement, 'li');\n          const currentListItemSibling = currentListItem?.previousSibling as HTMLElement;\n\n          if (currentListItemSibling && currentListItemSibling.tagName === 'UL') {\n            currentListItemSibling.previousSibling.appendChild(currentListItemSibling);\n          }\n        });\n      }\n    }\n\n    // Remove keyboard focus class after a short delay\n    setTimeout(() => this.rte?.nativeElement?.classList.remove('dds-keyboard-focused'), 100);\n  }\n\n  // Handles the paste event in the rich text editor.\n  // If the editor is in inverse mode, it removes black text color from pasted content.\n  public onPaste(): void {\n    if (!this.isInverse) return;\n\n    setTimeout(() => {\n      const editableEl = this.editableContainer.nativeElement;\n      const blackTextElements = editableEl.querySelectorAll('[style*=\"color: rgb(0, 0, 0)\"]');\n\n      blackTextElements.forEach((element) => (element.style.color = ''));\n    });\n  }\n\n  // Moves the cursor to the specified position within the given element.\n  public moveCursorTo(element: HTMLElement, index: number): void {\n    const range = new Range();\n    range.setStart(element, index);\n    range.setEnd(element, index);\n    this.selection.removeAllRanges();\n    this.selection.addRange(range);\n  }\n\n  public close(): void {\n    if (this.sticker) this.sticker.hide();\n  }\n\n  // Filters the list of RTE buttons to show based on the `showBind` property.\n  private filterButtonsToShow(): RTEButtonsConfig[] {\n    const RTEButtonsList = JSON.parse(JSON.stringify(RTEButtons));\n\n    return (this.RTEButtonsToShow = RTEButtonsList.filter((i: RTEButtonsConfig) => {\n      return this[i.showBind];\n    }));\n  }\n\n  // Recalculates the positions of the buttons in the rich text editor based on the width of the control container.\n  private recalculateButtonsPosition(): void {\n    if (!this.controlContainer) {\n      return;\n    }\n\n    const panelWidth = this.controlContainer.nativeElement.offsetWidth;\n    const buttonWidth = (this.controlContainer.nativeElement.querySelectorAll('.dds-rte__button')[0] as HTMLElement).offsetWidth;\n\n    let panelButtonsCount = Math.floor(panelWidth / buttonWidth);\n    panelButtonsCount = panelButtonsCount >= this.RTEButtonsToShow.length ? panelButtonsCount : panelButtonsCount - 1;\n\n    this.RTEPanelButtons = this.setGroupRTEButtons(this.RTEButtonsToShow.slice(0, panelButtonsCount));\n    this.RTEDropdownButtons = this.setGroupRTEButtons(this.RTEButtonsToShow.slice(panelButtonsCount));\n\n    this.cdr.detectChanges();\n  }\n\n  // Groups the provided RTE buttons configuration by their group identifier.\n  private setGroupRTEButtons(buttons: RTEButtonsConfig[]): RTEButtonsConfig[][] {\n    const result: RTEButtonsConfig[][] = [];\n    Object.keys(RTEButtonsGroups).forEach((group) => {\n      if (Number.isNaN(Number(group))) return;\n      const filtered = buttons.filter((item) => {\n        return item.group === Number(group);\n      });\n      if (filtered.length) result.push(filtered);\n    });\n    return result;\n  }\n\n  public focus(): void {\n    this.isFocused = true;\n  }\n\n  // Handles the blur event for the rich text editor component.\n  public blur(): void {\n    this.isFocused = false;\n    this.onModelTouched();\n    if (this.errorState === ErrorState.focusOut) this.checkError();\n  }\n\n  // Retrieves the ARIA label for a given group of RTE buttons.\n  public getAriaLabelGroup(group: RTEButtonsConfig[]): string {\n    if (!group || !group.length) return '';\n    const firstIndex = 0;\n    const groupIndex = group[firstIndex].group;\n\n    switch (groupIndex) {\n      case 0:\n        return ARIA_LABELS_BY_GROUP.fontStyle;\n      case 1:\n        return ARIA_LABELS_BY_GROUP.Colors;\n      case 2:\n        return ARIA_LABELS_BY_GROUP.Headings;\n      case 3:\n        return ARIA_LABELS_BY_GROUP.Subscript;\n      case 4:\n        return ARIA_LABELS_BY_GROUP.Lists;\n      case 5:\n        return ARIA_LABELS_BY_GROUP.TextAlignment;\n      case 6:\n        return ARIA_LABELS_BY_GROUP.Hyperlinks;\n      case 7:\n        return ARIA_LABELS_BY_GROUP.Quotes;\n      case 8:\n        return ARIA_LABELS_BY_GROUP.ClearFormat;\n    }\n  }\n\n  // Determines the appropriate ARIA role for a given group of RTE buttons.\n  public getAriaRole(group: RTEButtonsConfig[]): string {\n    if (!group || !group.length) return '';\n    const firstIndex = 0;\n    const groupIndex = group[firstIndex].group;\n\n    if (groupIndex === 2 || groupIndex === 3 || groupIndex === 4 || groupIndex === 5) {\n      return ARIA_ROLE_RADIOGROUP;\n    } else {\n      return ARIA_ROLE_GROUP;\n    }\n  }\n\n  // Returns the appropriate ARIA role for a given button configuration.\n  public getButtonAriaRole(item: RTEButtonsConfig): string {\n    switch (item.group) {\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n        return ARIA_ROLE_RADIO;\n      default:\n        return ARIA_ROLE_CHECKBOX;\n    }\n  }\n\n  private checkIsEmpty(): void {\n    this.isEmptyValue = !(this.value && this.value.length);\n  }\n\n  // Checks the current theme and updates the component's theme-related properties accordingly.\n  private checkTheme(theme: unknown): void {\n    if (theme) {\n      this.isGreenTheme = this.theme === Themes.green;\n      this.isBlueTheme = this.theme === Themes.blue;\n      this.cdr.markForCheck();\n    }\n  }\n\n  // Handles the change of the view source type in the rich text editor.\n  onViewSourceChange(event: string): void {\n    if (this.activeViewSourceType === event) return;\n    this.activeViewSourceType = event;\n\n    const content =\n      event === VIEW_SOURCE_BUTTONS.wysiwyg\n        ? this.editableContainer.nativeElement.innerText\n        : this.editableContainer.nativeElement.innerHTML;\n\n    event === VIEW_SOURCE_BUTTONS.wysiwyg\n      ? (this.editableContainer.nativeElement.innerHTML = this.sanitized.sanitize(\n          SecurityContext.HTML,\n          this.sanitized.bypassSecurityTrustHtml(content)\n        ))\n      : (this.editableContainer.nativeElement.innerText = content.replace(/></gm, '>\\n<'));\n\n    event === VIEW_SOURCE_BUTTONS.viewSource\n      ? this.editableContainer.nativeElement.classList.add('dds-rte__view-source')\n      : this.editableContainer.nativeElement.classList.remove('dds-rte__view-source');\n  }\n\n  // Checks the current device type and updates the component's properties accordingly.\n  protected checkDevice(device: Devices) {\n    this.currentDevice = device;\n    this.linkCtrlSize = device === Devices.desktop ? Size.sm : Size.lg;\n    this.isMobileView = this.currentDevice === Devices.mobile;\n\n    if (device === Devices.mobile) {\n      this.elementInViewport();\n    } else {\n      this.isHiddenCtrlPanel = false;\n    }\n  }\n\n  // Sets the internationalization (i18n) texts for the rich text editor component.\n  protected setI18nTexts(translation: ITranslation): void {\n    this.toolbarAriaLabel = translation.RICH_TEXT_EDITOR.A11Y.TOOLBAR_ARIA_LABEL;\n    this.collapsedBtnAriaLabel = translation.RICH_TEXT_EDITOR.A11Y.COLLAPSED_BTN_ARIA_LABEL;\n    this.inputLinkAriaLabel = translation.RICH_TEXT_EDITOR.A11Y.INPUT_LINK_ARIA_LABEL;\n    this.cancelLinkLabel = translation.RICH_TEXT_EDITOR.A11Y.CANCEL_LINK_LABEL;\n    this.applyLinkLabel = translation.RICH_TEXT_EDITOR.A11Y.APPLY_LINK_LABEL;\n    this.editLinkLabel = translation.RICH_TEXT_EDITOR.A11Y.EDIT_LINK_LABEL;\n    this.unlinkLabel = translation.RICH_TEXT_EDITOR.A11Y.UNLINK_LINK_LABEL;\n    this.popupAriaLabel = translation.RICH_TEXT_EDITOR.A11Y.POPUP_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n\n  setTarget(target: string): void {\n    this.selectedLinkTarget = target;\n  }\n}\n","<div [ngClass]=\"{\n       'dds-rte_error': _isError,\n       'dds-rte_add-state': inLinkAddState,\n       'dds-rte_edit-state': inLinkEditState,\n       'dds-rte_active': isFocused,\n       'dds-rte_inverse': isInverse,\n       'dds-rte_disabled': disabled\n     }\"\n     [size]=\"size\"\n     [ddsTheme]=\"themeConfig\"\n     [attr.aria-invalid]=\"_isError\"\n     [isResponsive]=\"isResponsive\"\n     [ngStyle]=\"maxHeight && {'min-height': maxHeight + 'px'}\"\n     ddsResize\n     data-qa=\"rte\"\n     class=\"dds-rte {{customClass}}\"\n     (keydown.esc)=\"closeLinkCreateContainer($event)\"\n     #rte>\n  <div [hidden]=\"isHiddenCtrlPanel\"\n       [ngClass]=\"{\n         'dds-rte__control-container_bottom': isBottomPanelPosition\n       }\"\n       [attr.aria-label]=\"toolbarAriaLabel\"\n       data-qa=\"rte-toolbar\"\n       role=\"toolbar\"\n       class=\"dds-rte__control-container\">\n    <div [ngClass]=\"isMobileView ? 'dds-rte__control_lg' : 'dds-rte__control_' + size\"\n         class=\"dds-rte__control\"\n         #controlContainer>\n      @for (group of RTEPanelButtons; track group; let i = $index) {\n      <div [attr.role]=\"getAriaRole(group)\"\n           [attr.aria-label]=\"getAriaLabelGroup(group)\"\n           [ngClass]=\"{'dds-rte__button-seperator':i > 0}\"\n           data-qa=\"rte-group\"\n           class=\"dds-rte__button-group\">\n        @for (item of group; track item) {\n        <div class=\"dds-rte__button-wrap\">\n          <button ddsButton\n                  [width]=\"'fixed'\"\n                  [size]=\"isMobileView ? 'lg' : size\"\n                  [kind]=\"item.isActive ? 'primaryLoud' : 'silent'\"\n                  [theme]=\"theme\"\n                  [isInverse]=\"isInverse\"\n                  [ddsTooltip]=\"item.label\"\n                  [tooltipIsInverse]=\"isInverse\"\n                  [icon]=\"'dds-icon_' + item.iconName\"\n                  [disabled]=\"disabled || item.disabled\"\n                  [attr.aria-disabled]=\"item.disabled\"\n                  [attr.aria-label]=\"item.label\"\n                  [hostRole]=\"getButtonAriaRole(item)\"\n                  [attr.aria-checked]=\"item.isActive\"\n                  data-qa=\"rte-button\"\n                  class=\"dds-rte__button\"\n                  (click)=\"formatDoc(item.params, navBtn)\"\n                  (keyup)=\"handleKeyup($event, item.params, navBtn)\"\n                  (blur)=\"tooltipDir.hide()\"\n                  #navBtn\n                  #tooltipDir=\"dds-tooltip\"></button>\n          <ng-container *ngTemplateOutlet=\"colorBtnIcon; context: {item}\"></ng-container>\n        </div>\n        }\n      </div>\n      }\n\n      @if (RTEDropdownButtons.length) {\n      <button ddsButton\n              [ddsSticker]=\"dropdownButtons\"\n              [stickerWidth]=\"stickerWidth\"\n              [stickerIsOutsideClick]=\"stickerIsOutsideClick\"\n              [stickerShift]=\"stickerShift\"\n              [stickerMaxHeight]=\"stickerMaxHeight\"\n              [stickerIsDisabled]=\"stickerIsDisabled\"\n              [stickerIsResponsive]=\"isResponsive\"\n              [stickerPosition]=\"stickerPosition\"\n              [stickerIndent]=\"stickerIndent\"\n              [stickerIsDynamic]=\"stickerIsDynamic\"\n              [stickerCustomClass]=\"stickerCustomClass\"\n              [disabled]=\"disabled\"\n              [size]=\"isMobileView ? 'lg' : size\"\n              [kind]=\"isButtonsDropdownActive ? 'primaryLoud' : 'silent'\"\n              [theme]=\"theme\"\n              [isInverse]=\"isInverse\"\n              [attr.aria-expanded]=\"isButtonsDropdownActive\"\n              [attr.aria-label]=\"collapsedBtnAriaLabel\"\n              aria-haspopup=\"dialog\"\n              icon=\"dds-icon_truncate\"\n              class=\"dds-rte__button\"\n              data-qa=\"rte-button-truncate\"\n              (onHidden)=\"onHidden()\"\n              (click)=\"toggleButtonsDropdown($event)\"\n              (keydown)=\"handleKeydown($event);preventEvent($event)\"\n              (keyup)=\"preventEvent($event)\"\n              #stickerDir=\"dds-sticker\"\n              #dropdownBtn></button>\n\n      <span class=\"hidden-aria-polite\"\n            aria-live=\"polite\">{{isExpandedText}}</span>\n      }\n    </div>\n\n    @if (inLinkAddState) {\n    <div class=\"dds-rte__link-add dds-rte-link-container\">\n      <div class=\"dds-rte-link-container__link-controls\"\n           data-qa=\"rte-link\"\n           (keydown.esc)=\"closeLinkCreateContainer($event)\">\n        <dds-input [(ngModel)]=\"link\"\n                   [size]=\"isMobileView ? 'lg' : size\"\n                   [disabled]=\"disabled\"\n                   [isInverse]=\"isInverse\"\n                   [ariaLabel]=\"inputLinkAriaLabel\"\n                   data-qa=\"rte-input\"\n                   placeholder=\"http://\"\n                   labelPosition=\"external\"\n                   class=\"dds-rte-link-container__input\"\n                   (keydown.enter)=\"createLink($event)\"\n                   #linkContainer>\n        </dds-input>\n        <div class=\"dds-rte-link-container__link-controls-wrap\">\n          <dds-select class=\"dds-rte-link-container__link-select\"\n                      [labelPosition]=\"'external'\"\n                      [list]=\"linkTargetAttributes\"\n                      [value]=\"selectedLinkTarget\"\n                      [size]=\"isMobileView ? 'lg' : size\"\n                      [isInverse]=\"isInverse\"\n                      (valueChanged)=\"setTarget($event)\">\n          </dds-select>\n          <dds-button [kind]=\"ButtonKind.secondary\"\n                      [size]=\"isMobileView ? 'lg' : size\"\n                      [isInverse]=\"isInverse\"\n                      [disabled]=\"disabled\"\n                      [ariaLabel]=\"cancelLinkLabel\"\n                      data-qa=\"rte-button\"\n                      class=\"dds-rte-link-container__button\"\n                      (clicked)=\"closeLinkCreateContainer()\">{{cancelLinkLabel}}</dds-button>\n          <dds-button [kind]=\"ButtonKind.primaryLoud\"\n                      [theme]=\"theme\"\n                      [size]=\"isMobileView ? 'lg' : size\"\n                      [isInverse]=\"isInverse\"\n                      [disabled]=\"disabled || !link\"\n                      [ariaLabel]=\"applyLinkLabel\"\n                      data-qa=\"rte-button\"\n                      class=\"dds-rte-link-container__button dds-rte-link-container__button_apply\"\n                      (clicked)=\"createLink()\">{{applyLinkLabel}}</dds-button>\n        </div>\n      </div>\n    </div>\n    }\n\n    @if (inLinkEditState) {\n    <div data-qa=\"rte-link\"\n         class=\"dds-rte-link-container\">\n      <div class=\"dds-rte-link-container__link-controls dds-rte-link-container__link-controls_edit\">\n        <div class=\"dds-rte-link-container__link-text\"\n             [ngClass]=\"'dds-rte-link-container__link-text_' + theme\">\n          {{currentEditableLink?.textContent}}\n        </div>\n        <dds-button [kind]=\"ButtonKind.secondary\"\n                    [size]=\"linkCtrlSize\"\n                    [isInverse]=\"isInverse\"\n                    [disabled]=\"disabled\"\n                    [ariaLabel]=\"editLinkLabel\"\n                    data-qa=\"rte-button\"\n                    class=\"dds-rte-link-container__button\"\n                    (clicked)=\"editLink()\">\n          {{editLinkLabel}}\n        </dds-button>\n        <dds-button [kind]=\"ButtonKind.secondary\"\n                    [size]=\"linkCtrlSize\"\n                    [isInverse]=\"isInverse\"\n                    [disabled]=\"disabled\"\n                    [ariaLabel]=\"unlinkLabel\"\n                    data-qa=\"rte-button\"\n                    class=\"dds-rte-link-container__button\"\n                    (clicked)=\"unlink()\">\n          {{unlinkLabel}}\n        </dds-button>\n      </div>\n    </div>\n    }\n\n    @if (isSetTextColorState || isSetBgColorState) {\n    <div class=\"dds-rte-color-container\">\n      <dds-colorpicker [size]=\"isMobileView ? 'lg' : size\"\n                       [theme]=\"theme\"\n                       [isInverse]=\"isInverse\"\n                       [presetColors]=\"presetColors\"\n                       [automaticColor]=\"automaticColor\"\n                       [enableEmptyColor]=\"enableEmptyColor\"\n                       [enableCustomColor]=\"enableCustomColor\"\n                       [enableRecentColors]=\"enableRecentColors\"\n                       [enableAutomaticColor]=\"enableAutomaticColor\"\n                       [activeColor]=\"isSetTextColorState ? activeTextColor : activeBgColor\"\n                       (changeColor)=\"applyColor($event)\"\n                       #colorpicker></dds-colorpicker>\n    </div>\n    }\n\n    <ng-template #dropdownButtons>\n      <dds-context-menu [size]=\"size\"\n                        [isInverse]=\"isInverse\"\n                        [isResponsive]=\"isResponsive\"\n                        [ariaLabel]=\"popupAriaLabel\"\n                        data-qa=\"rte-menu\"\n                        ddsResize\n                        (keyPressed)=\"handleKeydownMenu($event)\"\n                        (onInit)=\"contextMenuInit($event)\"\n                        (closed)=\"close()\">\n        @if (RTEDropdownButtons.length) {\n        @for (group of RTEDropdownButtons; track group; let index = $index) {\n        <div [attr.role]=\"getAriaRole(group)\"\n             [attr.aria-label]=\"getAriaLabelGroup(group)\">\n          @for (item of group; track item) {\n          <dds-context-menu-item [ngClass]=\"{\n                      'dds-rte__dropdown-button_active': item.isActive,\n                      'dds-rte__dropdown-button_active-green': item.isActive && isGreenTheme,\n                      'dds-rte__dropdown-button_active-blue': item.isActive && isBlueTheme\n                    }\"\n                                 [attr.aria-checked]=\"item.isActive\"\n                                 [ariaSelected]=\"item.isActive\"\n                                 [ariaLabel]=\"item.label\"\n                                 [disabled]=\"item.disabled\"\n                                 [ariaRole]=\"getButtonAriaRole(item)\"\n                                 data-qa=\"rte-menu-item\"\n                                 class=\"dds-rte__dropdown-button\"\n                                 (selectedItem)=\"item.disabled ? null : formatDoc(item.params, navBtn)\"\n                                 #navBtn>\n            <span class=\"dds-rte__dropdown-button-icon {{'dds-icon dds-icon_' + item.iconName}}\">\n              <ng-container *ngTemplateOutlet=\"colorBtnIcon; context: {item}\"></ng-container>\n            </span>\n            {{item.label}}\n          </dds-context-menu-item>\n          }\n        </div>\n        @if (index < RTEDropdownButtons.length\n          -\n          1)\n          {\n          <hr>\n          }\n          }\n          }\n      </dds-context-menu>\n    </ng-template>\n\n  </div>\n  <div [ddsFocus]=\"rte\"\n       [disabled]=\"disabled\"\n       contenteditable\n       ddsTextSelect\n       data-qa=\"rte-editable\"\n       class=\"dds-rte__editable-container\"\n       (textSelectEvent)=\"onSelectionChange($event)\"\n       (keydown)=\"pressedKeyHandler($event)\"\n       (input)=\"changeHandle()\"\n       (focus)=\"focus()\"\n       (blur)=\"blur()\"\n       (paste)=\"onPaste()\"\n       [(ngModel)]='value'\n       [ngStyle]=\"{'max-height': maxHeight + 'px'}\"\n       [attr.data-text]=\"placeholder\"\n       #editableContainer>\n  </div>\n  @if (isViewSourceActive) {\n  <dds-segmented-control class=\"dds-rte__view-source\"\n                         [theme]=\"theme\"\n                         [isInverse]=\"isInverse\"\n                         [ngClass]=\"{'dds-rte__view-source_bottom': isBottomPanelPosition}\"\n                         (segmentChanged)=\"onViewSourceChange($event)\">\n    @for (button of viewSourceButtons; track button) {\n    <dds-segmented-control-item [heading]=\"button.heading\"\n                                [ariaLabel]=\"button.ariaLabel\"\n                                [value]=\"button.value\"></dds-segmented-control-item>\n    }\n  </dds-segmented-control>\n  }\n</div>\n\n<ng-template #colorBtnIcon\n             let-item=\"item\">\n  @if (item.group === RTEButtonsGroups.colorsStyle) {\n  <div class=\"dds-rte__color-icon dds-rte__color-icon_{{isMobileView ? 'lg' : size}}\">\n    @if (item.iconName === 'custom_font_color') {\n    <svg width=\"16\"\n         height=\"16\"\n         viewBox=\"0 0 16 16\"\n         fill=\"none\"\n         xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M8 2H9.51562L9.625 2.40625L11.6875 10.6406H9.76562L9.26562 8.6875H6.73438L6.23438 10.6406H4.3125L6.375 2.40625L6.48438 2H8ZM8.76562 6.6875L8 3.625L7.23438 6.6875H8.76562Z\"\n            [attr.fill]=\"isInverse ? 'white' : 'black'\" />\n      <path d=\"M4 12V14H12V12H4Z\"\n            [attr.fill]=\"activeTextColor\" />\n    </svg>\n    }\n    @if (item.iconName === 'custom_bg_color') {\n    <svg width=\"16\"\n         height=\"16\"\n         viewBox=\"0 0 16 16\"\n         fill=\"none\"\n         xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M10.6406 4.57812L13.1094 7.01562L8.40625 11.6875L3.70312 7.01562L7.0625 3.6875L6.60938 3.25L7.95312 1.92188L10.6562 4.57812H10.6406ZM8.40625 5.01562L6.375 7.01562H10.4375L9.3125 5.90625H9.29688L8.40625 5.01562Z\"\n            [attr.fill]=\"isInverse ? 'white' : 'black'\" />\n      <path d=\"M4.64062 13.7656V11.7969H12.1719V13.7656H4.64062Z\"\n            [attr.fill]=\"bgBtnLineColor\" />\n    </svg>\n    }\n  </div>\n  }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { RichTextEditorComponent } from './rich-text-editor/rich-text-editor.component';\n\n@NgModule({\n  declarations: [],\n  imports: [RichTextEditorComponent],\n  exports: [RichTextEditorComponent],\n})\nexport class RichTextEditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}