{"version":3,"file":"ng-mentions.mjs","sources":["../../src/util/utils.ts","../../src/highlighter-pattern.directive.ts","../../src/highlighted-value.ts","../../src/highlighter.component.ts","../../src/util/key.ts","../../src/util/mentions-list.component.ts","../../src/util/highlight.directive.ts","../../src/mentions.component.ts","../../src/mentions-input.directive.ts","../../src/index.ts","../../src/ng-mentions.ts"],"sourcesContent":["export const styleProperties = Object.freeze([\n  'direction', // RTL support\n  'boxSizing',\n  'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n  'height',\n  'minHeight',\n  'minWidth',\n  'overflowX',\n  'overflowY', // copy the scrollbar for IE\n\n  'borderTopWidth',\n  'borderRightWidth',\n  'borderBottomWidth',\n  'borderLeftWidth',\n  'borderStyle',\n\n  'paddingTop',\n  'paddingRight',\n  'paddingBottom',\n  'paddingLeft',\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n  'fontStyle',\n  'fontVariant',\n  'fontWeight',\n  'fontStretch',\n  'fontSize',\n  'fontSizeAdjust',\n  'lineHeight',\n  'fontFamily',\n\n  'textAlign',\n  'textTransform',\n  'textIndent',\n  'textDecoration', // might not make a difference, but better be safe\n\n  'letterSpacing',\n  'wordSpacing',\n\n  'tabSize',\n  'MozTabSize',\n]);\nconst isBrowser = typeof window !== 'undefined';\nconst isFirefox = isBrowser && (<any>window).mozInnerScreenX != null;\n\n// eslint-disable-next-line max-len\nconst mobileRegEx =\n  /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i;\n// eslint-disable-next-line max-len\nconst mobileRegEx2 =\n  /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i;\nexport function isMobileOrTablet() {\n  const agent = navigator.userAgent || navigator.vendor || (window as any).opera;\n  return mobileRegEx.test(agent) || mobileRegEx2.test(agent.substr(0, 4));\n}\n\nfunction isInputOrTextAreaElement(element?: HTMLElement): boolean {\n  return (\n    element !== null &&\n    (element.nodeName.toUpperCase() === 'INPUT' ||\n      element.nodeName.toUpperCase() === 'TEXTAREA' ||\n      element.nodeName === '#text')\n  );\n}\n\nfunction spliceString(value: string, start: number, end: number, insert: string): string {\n  return value.substring(0, start) + insert + value.substring(end) + '';\n}\n\nfunction iterateMentionsMarkup(\n  value: string,\n  mentionMarkup: MarkupMention,\n  textIterator: (..._: any[]) => void,\n  markupIterator: (..._: any[]) => void,\n  displayTransform: (..._: string[]) => string,\n) {\n  let match;\n  let start = 0;\n  let currentPlainTextIndex = 0;\n  const regEx = mentionMarkup.regEx;\n  regEx.lastIndex = 0;\n  while ((match = regEx.exec(value)) !== null) {\n    const display = displayTransform(...match);\n    const substr = value.substring(start, match.index);\n    textIterator(substr, start, currentPlainTextIndex);\n    currentPlainTextIndex += substr.length;\n    markupIterator(match[0], match.index, currentPlainTextIndex, display);\n    currentPlainTextIndex += display.length;\n    start = regEx.lastIndex;\n  }\n\n  if (start < value.length) {\n    textIterator(value.substring(start), start, currentPlainTextIndex);\n  }\n}\n\nfunction iterateOnlyMentionsMarkup(\n  value: string,\n  mentionMarkup: MarkupMention,\n  markupIterator: (..._: any[]) => boolean,\n  displayTransform: (..._: string[]) => string,\n) {\n  let match;\n  let start = 0;\n  let currentPlainTextIndex = 0;\n  const regEx = mentionMarkup.regEx;\n  regEx.lastIndex = 0;\n  while ((match = regEx.exec(value)) !== null) {\n    const display = displayTransform(...match);\n    const substr = value.substring(start, match.index);\n    currentPlainTextIndex += substr.length;\n    markupIterator(match[0], match.index, currentPlainTextIndex, display);\n    currentPlainTextIndex += display.length;\n    start = regEx.lastIndex;\n  }\n}\n\nexport function mapPlainTextIndex(\n  value: string,\n  mentionMarkup: MarkupMention,\n  indexInPlainText: number,\n  toEndOfMarkup: boolean,\n  displayTransform: (..._: string[]) => string,\n): number {\n  if (isNaN(indexInPlainText)) {\n    return indexInPlainText;\n  }\n\n  let result;\n  const textIterator = (matchString: string, index: number, substringPlainTextIndex: number) => {\n    if (typeof result !== 'undefined') {\n      return;\n    }\n    if (substringPlainTextIndex + matchString.length >= indexInPlainText) {\n      result = index + indexInPlainText - substringPlainTextIndex;\n    }\n  };\n  const markupIterator = (matchString: string, index: number, mentionPlainTextIndex: number, display: string) => {\n    if (typeof result !== 'undefined') {\n      return;\n    }\n\n    if (mentionPlainTextIndex + display.length > indexInPlainText) {\n      result = index + (toEndOfMarkup ? matchString.length : 0);\n    }\n  };\n\n  iterateMentionsMarkup(value, mentionMarkup, textIterator, markupIterator, displayTransform);\n\n  return typeof result !== 'undefined' ? result : value.length;\n}\n\nexport function getCaretPosition(element: HTMLInputElement): number {\n  if (isInputOrTextAreaElement(element)) {\n    const value = element.value;\n    return value.slice(0, element.selectionStart).length - (isMobileOrTablet() ? 1 : 0);\n  }\n\n  const selection = window.getSelection();\n  if (selection.rangeCount > 0) {\n    const range = selection.getRangeAt(0);\n    return range.startOffset;\n  }\n\n  return 0;\n}\n\nexport function getCaretCoordinates(element: HTMLTextAreaElement, position: number): { top: number; left: number } {\n  let coords = { top: 0, left: 0 };\n  if (!isBrowser) {\n    return coords;\n  }\n  const div = document.createElement('div');\n  document.body.appendChild(div);\n  const style = div.style;\n  const computed = getElementStyle(element);\n  style.whiteSpace = 'pre-wrap';\n  if (element.nodeName !== 'INPUT') {\n    style.wordWrap = 'break-word';\n  }\n  style.position = 'absolute';\n  style.visibility = 'hidden';\n  styleProperties.forEach((prop) => (style[prop] = computed[prop]));\n  if (isFirefox) {\n    if (element.scrollHeight > parseInt(computed.height, 10)) {\n      style.overflowY = 'scroll';\n    }\n  } else {\n    style.overflow = 'hidden';\n  }\n  div.textContent = element.value.substring(0, position);\n  if (element.nodeName === 'INPUT') {\n    div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n  }\n\n  const span = document.createElement('span');\n  span.textContent = element.value.substring(position) || '.';\n  div.appendChild(span);\n  let scrollTop = 0;\n  if (element.scrollTop > 0) {\n    scrollTop = element.scrollTop;\n  }\n\n  coords = {\n    top: span.offsetTop + parseInt(computed['borderTopWidth'], 10) - scrollTop,\n    left: span.offsetLeft + parseInt(computed['borderLeftWidth'], 10),\n  };\n\n  document.body.removeChild(div);\n\n  return coords;\n}\n\nexport function getElementStyle(element: HTMLElement, property?: string): any {\n  const style = window.getComputedStyle ? getComputedStyle(element) : (<any>element).currentStyle;\n  if (property && typeof property === 'string' && typeof style[property] !== 'undefined') {\n    return style[property];\n  } else if (property && typeof property === 'string') {\n    return null;\n  }\n\n  return style;\n}\n\nexport function setCaretPosition(element: HTMLInputElement, position: number): void {\n  if (isInputOrTextAreaElement(element) && element.selectionStart !== undefined) {\n    element.focus();\n    element.setSelectionRange(position, position);\n    element.selectionStart = position;\n  } else {\n    const range = document.createRange();\n    range.setStart(element, position);\n    range.collapse(true);\n    const selection = window.getSelection();\n    selection.removeAllRanges();\n    selection.addRange(range);\n  }\n}\n\nexport function escapeRegExp(str: string): string {\n  return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport interface MarkupMention {\n  markup: string;\n  regEx: RegExp;\n  groups: { [key: string]: number };\n}\n\nexport function markupToRegExp(markup: string): MarkupMention {\n  const placeholderRegExp = /__([\\w]+)__/g;\n  const placeholderExclusion = '^\\\\)\\\\]';\n  let markupPattern = escapeRegExp(markup);\n  const placeholders = {};\n  let match;\n  let i = 1;\n  do {\n    match = placeholderRegExp.exec(markupPattern);\n    if (match) {\n      const placeholder = match[1];\n      markupPattern = markupPattern.replace(`__${placeholder}__`, `([${placeholderExclusion}]+)`);\n      placeholders[placeholder] = ++i;\n    }\n  } while (match);\n\n  return { markup, regEx: new RegExp('(' + markupPattern + ')', 'ig'), groups: placeholders };\n}\n\nexport function getPlainText(\n  value: string,\n  mentionMarkup: MarkupMention,\n  displayTransform: (..._: string[]) => string,\n) {\n  mentionMarkup.regEx.lastIndex = 0;\n  return value.replace(mentionMarkup.regEx, displayTransform);\n}\n\nexport function replacePlaceholders(item: any, markupMention: MarkupMention): string {\n  let result = markupMention.markup + '';\n  Object.keys(markupMention.groups).forEach(\n    (key) => (result = result.replace(new RegExp(`__${key}__`, 'g'), typeof item === 'string' ? item : item[key])),\n  );\n\n  return result;\n}\n\nexport function applyChangeToValue(\n  value: string,\n  markupMention: MarkupMention,\n  plainTextValue: string,\n  selectionStartBeforeChange: number = 0,\n  selectionEndBeforeChange: number = 0,\n  selectionEndAfterChange: number = 0,\n  displayTransform: (..._: string[]) => string,\n) {\n  const oldPlainTextValue = getPlainText(value, markupMention, displayTransform);\n  const lengthDelta = oldPlainTextValue.length - plainTextValue.length;\n  if (!selectionStartBeforeChange) {\n    selectionStartBeforeChange = selectionEndBeforeChange + lengthDelta;\n  }\n  if (!selectionEndBeforeChange) {\n    selectionEndBeforeChange = selectionStartBeforeChange;\n  }\n\n  if (\n    selectionStartBeforeChange === selectionEndBeforeChange &&\n    selectionEndBeforeChange === selectionEndAfterChange &&\n    oldPlainTextValue.length === plainTextValue.length\n  ) {\n    selectionStartBeforeChange--;\n  }\n\n  const insert = plainTextValue.slice(selectionStartBeforeChange, selectionEndAfterChange);\n  const spliceStart = Math.min(selectionStartBeforeChange, selectionEndAfterChange);\n  let spliceEnd = selectionEndBeforeChange;\n  if (selectionStartBeforeChange === selectionEndAfterChange) {\n    spliceEnd = Math.max(selectionEndBeforeChange, selectionStartBeforeChange + lengthDelta);\n  }\n\n  return spliceString(\n    value,\n    mapPlainTextIndex(value, markupMention, spliceStart, false, displayTransform),\n    mapPlainTextIndex(value, markupMention, spliceEnd, true, displayTransform),\n    insert,\n  );\n}\n\nexport function findStartOfMentionInPlainText(\n  value: string,\n  mentionMarkup: MarkupMention,\n  indexInPlainText: number,\n  displayTransform: (..._: string[]) => string,\n): { start: number; end: number } {\n  let result = { start: -1, end: -1 };\n  const markupIterator = (\n    matchString: string,\n    index: number,\n    mentionPlainTextIndex: number,\n    display: string,\n  ): boolean => {\n    if (mentionPlainTextIndex < indexInPlainText && mentionPlainTextIndex + display.length > indexInPlainText) {\n      result = { start: mentionPlainTextIndex, end: mentionPlainTextIndex + display.length };\n      return true;\n    }\n\n    return false;\n  };\n  iterateOnlyMentionsMarkup(value, mentionMarkup, markupIterator, displayTransform);\n\n  return result;\n}\n\nexport function getBoundsOfMentionAtPosition(\n  value: string,\n  mentionMarkup: MarkupMention,\n  indexInPlainText: number,\n  displayTransform: (..._: string[]) => string,\n): { start: number; end: number } {\n  return findStartOfMentionInPlainText(value, mentionMarkup, indexInPlainText, displayTransform);\n}\n\nexport function escapeHtml(text: string) {\n  return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n\nexport function isCoordinateWithinRect(rect: DOMRect, x: number, y: number) {\n  return rect.left < x && x < rect.right && rect.top < y && y < rect.bottom;\n}\n\nexport class Highlighted {\n  constructor(public readonly element: Element, public readonly type: string = null) {}\n\n  get clientRect(): DOMRect {\n    return this.element.getBoundingClientRect();\n  }\n}\n","import { Directive, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { MarkupMention, markupToRegExp } from './util/utils';\n\n/**\n * The Highlighted Pattern Directive\n */\n@Directive({ exportAs: 'ngHighlighterPattern', selector: 'ng-highlighter-pattern' })\nexport class NgHighlighterPatternDirective implements OnInit, OnChanges {\n  /**\n   * Optional. CSS Class that will be added to the highlighted element.\n   */\n  @Input() className: string;\n  /**\n   * The markup used to format a mention\n   */\n  @Input() markup: string;\n  /**\n   * This can either be the name of the item taken from part of the markup, or it\n   * can be a fully formed HTML markup with RegExp placers.\n   * Optionally, this can also be a custom function that can be used to format the matched text\n   * and returned to be displayed. No other transformation will be done to the text and no\n   * matching information is passed the to function, just the matched text.\n   */\n  @Input() markupReplace: string | ((content: string) => string);\n\n  private markupMention: MarkupMention;\n\n  ngOnInit(): void {\n    if (this.markup) {\n      this.markupMention = markupToRegExp(this.markup);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('markup' in changes) {\n      this.markupMention = markupToRegExp(this.markup);\n    }\n  }\n\n  match(value: string) {\n    return this.markupMention ? this.markupMention.regEx.exec(value) : null;\n  }\n\n  readonly format = (content: string) => {\n    if (typeof this.markupReplace === 'string') {\n      let result;\n      const replaceTries = [\n        this.markupReplace,\n        `\\$${this.markupReplace}`,\n        `\\$${this.markupMention.groups[this.markupReplace]}`,\n      ];\n      for (const attempt of replaceTries) {\n        result = content.replace(this.markupMention.regEx, attempt);\n        if (result !== attempt) {\n          break;\n        }\n      }\n\n      return result;\n    } else if (typeof this.markupReplace === 'function') {\n      return this.markupReplace(content);\n    }\n\n    return content;\n  };\n}\n","/**\n * The Highlighted Value\n */\nexport class NgHighlightedValue {\n  /**\n   * Content of the highlighted item that was clicked\n   */\n  public readonly content: string;\n  /**\n   * The type (or class name) associated with the highlighted item that was clicked.\n   *\n   * @see NgHighlighterPatternDirective.className\n   */\n  public readonly type: string = null;\n  /**\n   * Optional. Arbitrary rel associated with the clicked highlighted element.\n   * This is determined by how the highlighted item's content is formatted.\n   */\n  public readonly rel: string = null;\n\n  constructor(content: string, type: string = null, rel: string = null) {\n    this.content = content;\n    this.type = type;\n    this.rel = rel;\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\n\nimport { NgHighlightedValue } from './highlighted-value';\nimport { NgHighlighterPatternDirective } from './highlighter-pattern.directive';\nimport { Tag } from './util/interfaces';\nimport { escapeHtml, Highlighted, isCoordinateWithinRect } from './util/utils';\n\n/**\n * The Highlighter Component\n */\n@Component({\n  exportAs: 'ngHighlighter',\n  selector: 'ng-highlighter',\n  template: '<div *ngFor=\"let line of lines\" [innerHTML]=\"line\"></div>',\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class NgHighlighterComponent implements OnChanges, AfterContentInit {\n  /**\n   * Text value to be highlighted\n   */\n  @Input() text: string;\n  /**\n   * Event emitted when a highlighted item it clicked\n   */\n  @Output() itemClick: EventEmitter<NgHighlightedValue> = new EventEmitter<NgHighlightedValue>();\n\n  @ContentChildren(NgHighlighterPatternDirective) patterns: QueryList<NgHighlighterPatternDirective>;\n\n  readonly newLine: RegExp = /\\n/g;\n  lines: string[] = [];\n  private highlightedElements: Highlighted[] = [];\n\n  constructor(private element: ElementRef, private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('text' in changes) {\n      this.parseLines();\n    }\n  }\n\n  ngAfterContentInit(): void {\n    if (this.text && this.patterns) {\n      this.parseLines();\n    }\n  }\n\n  @HostListener('click', ['$event'])\n  onItemClick(event: MouseEvent) {\n    const matchedElement = this.getMatchedElement(event);\n    if (matchedElement) {\n      event.preventDefault();\n      event.stopPropagation();\n      const content = (<HTMLElement>matchedElement.element).innerText;\n      let rel = matchedElement.element.getAttribute('rel') || null;\n      const relElement = matchedElement.element.querySelector('[rel]');\n      if (relElement) {\n        rel = relElement.getAttribute('rel') || null;\n      }\n      this.itemClick.emit(new NgHighlightedValue(content, matchedElement.type, rel));\n    }\n  }\n\n  private parseLines() {\n    this.lines = this.text.split(this.newLine).map((line: string) => this.highlight(line));\n    this.cdr.detectChanges();\n    this.collectHighlightedItems();\n  }\n\n  private highlight(line: string) {\n    if (line.length === 0 || !this.patterns) {\n      return '&nbsp;';\n    }\n\n    const tags: Tag[] = [];\n    let match;\n    this.patterns.forEach((pattern: NgHighlighterPatternDirective) => {\n      while ((match = pattern.match(line)) !== null) {\n        tags.push({\n          type: pattern.className,\n          indices: { start: match.index, end: match.index + match[0].length },\n          formatter: pattern.format,\n        });\n      }\n    });\n\n    const prevTags: Tag[] = [];\n    const parts: string[] = [];\n    [...tags]\n      .sort((tagA, tagB) => tagA.indices.start - tagB.indices.start)\n      .forEach((tag: Tag) => {\n        const expectedLength = tag.indices.end - tag.indices.start;\n        const contents = line.slice(tag.indices.start, tag.indices.end);\n        if (contents.length === expectedLength) {\n          const prevIndex = prevTags.length > 0 ? prevTags[prevTags.length - 1].indices.end : 0;\n          const before = line.slice(prevIndex, tag.indices.start);\n          parts.push(escapeHtml(before));\n          parts.push(`<span class=\"highlighted ${tag.type || ''}\" rel=\"${tag.type}\">${tag.formatter(contents)}</span>`);\n          prevTags.push(tag);\n        }\n      });\n\n    const remainingStart = prevTags.length > 0 ? prevTags[prevTags.length - 1].indices.end : 0;\n    const remaining = line.slice(remainingStart);\n    parts.push(escapeHtml(remaining));\n    parts.push('&nbsp;');\n\n    return parts.join('');\n  }\n\n  private getMatchedElement(event: MouseEvent): Highlighted {\n    const matched = this.highlightedElements.find((el: Highlighted): boolean =>\n      isCoordinateWithinRect(el.clientRect, event.clientX, event.clientY),\n    );\n\n    return matched ? matched : null;\n  }\n\n  private collectHighlightedItems() {\n    this.highlightedElements = Array.from(\n      (<Element>this.element.nativeElement).getElementsByClassName('highlighted'),\n    ).map((element: HTMLElement) => {\n      const type = element.getAttribute('rel') || null;\n\n      return new Highlighted(element, type);\n    });\n  }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\n\n// eslint-disable-next-line no-shadow\nexport enum Key {\n  Backspace = 8,\n  Tab = 9,\n  Enter = 13,\n  Shift = 16,\n  Escape = 27,\n  Space = 32,\n  End = 35,\n  Home = 36,\n  ArrowLeft = 37,\n  ArrowUp = 38,\n  ArrowRight = 39,\n  ArrowDown = 40,\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\n\nimport { getCaretCoordinates, getElementStyle } from './utils';\n\n@Component({\n  selector: 'mentions-list',\n  template: `\n    <ng-template #defaultItemTemplate let-item=\"item\">\n      {{ transformItem(item) }}\n    </ng-template>\n    <ul #list class=\"dropdown-menu scrollable-menu\">\n      <li *ngFor=\"let item of items; let i = index\" [class.active]=\"activeIndex === i\">\n        <a href class=\"dropdown-item\" (click)=\"onItemClick($event, i, item)\">\n          <ng-template\n            [ngTemplateOutlet]=\"itemTemplate\"\n            [ngTemplateOutletContext]=\"{ item: item, index: i }\"\n          ></ng-template>\n        </a>\n      </li>\n    </ul>\n  `,\n  styleUrls: ['./mentions-list.scss'],\n  styles: [\n    'mentions-list.show {display: block;} mentions-list.no-items {display: none;}',\n    'mentions-list .scrollable-menu {display: block;height: auto;max-height:300px;overflow:auto;}',\n    'mentions-list li.active {background: #f7f7f9;}',\n  ],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class NgMentionsListComponent implements OnInit {\n  public items: any[];\n  public itemTemplate: TemplateRef<any>;\n  public displayTransform: (..._: string[]) => string;\n  public textAreaElement: HTMLTextAreaElement;\n\n  activeIndex = -1;\n  readonly itemSelected: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild('defaultItemTemplate', { static: true }) defaultItemTemplate: TemplateRef<any>;\n  @ViewChild('list', { static: true }) list: ElementRef;\n  @HostBinding('class.show') public show = false;\n  @HostBinding('class.drop-up') public dropUp = false;\n\n  private _top = 0;\n  private _left = 0;\n\n  @HostBinding('style.top')\n  get top(): string {\n    return this._top + this.adjustTop + 'px';\n  }\n\n  @HostBinding('style.left')\n  get left(): string {\n    return this._left + 'px';\n  }\n\n  @HostBinding('class.no-items')\n  get noItems(): boolean {\n    return !Array.isArray(this.items) || this.items.length === 0;\n  }\n\n  get selectedItem(): any {\n    return this.activeIndex >= 0 && this.items[this.activeIndex] !== undefined ? this.items[this.activeIndex] : null;\n  }\n\n  ngOnInit(): void {\n    if (!this.itemTemplate) {\n      this.itemTemplate = this.defaultItemTemplate;\n    }\n  }\n\n  onItemClick(event: MouseEvent, activeIndex: number, item: any) {\n    event.preventDefault();\n    if (item) {\n      this.activeIndex = activeIndex;\n      this.itemSelected.emit(item);\n    }\n  }\n\n  public selectFirstItem() {\n    this.activeIndex = 0;\n    this.resetScroll();\n  }\n\n  public selectPreviousItem() {\n    if (this.activeIndex > 0) {\n      this.activeIndex--;\n    }\n    this.scrollToActiveItem();\n  }\n\n  public selectNextItem() {\n    if (this.activeIndex < this.items.length - 1) {\n      this.activeIndex++;\n      this.scrollToActiveItem();\n    }\n  }\n\n  public selectLastItem() {\n    this.activeIndex = this.items.length > 0 ? this.items.length - 1 : 0;\n    this.scrollToActiveItem();\n  }\n\n  public position() {\n    const element = this.textAreaElement;\n    const coords = getCaretCoordinates(element, element.selectionStart);\n    this._top = coords.top;\n    this._left = coords.left + element.offsetLeft;\n    this.list.nativeElement.scrollTop = 0;\n  }\n\n  public resetScroll() {\n    this.list.nativeElement.scrollTop = 0;\n  }\n\n  public transformItem(item: any) {\n    return this.displayTransform(item) || item;\n  }\n\n  private get adjustTop(): number {\n    let adjust = 0;\n    if (!this.dropUp) {\n      const computedFontSize = getElementStyle(this.textAreaElement, 'fontSize');\n      adjust = parseInt(computedFontSize, 10) + this.textAreaElement.offsetTop;\n    }\n\n    return adjust;\n  }\n\n  private scrollToActiveItem() {\n    const element = this.list.nativeElement as HTMLElement;\n    if (this.activeIndex === 0) {\n      element.scrollTop = 0;\n    } else {\n      const activeElement = element.querySelector('li.active') as HTMLElement;\n      if (activeElement) {\n        element.scrollTop = activeElement.offsetTop;\n      }\n    }\n  }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { Tag } from './interfaces';\n\n@Directive({ selector: 'highlighted' })\nexport class HighlightedDirective {\n  @Input() tag: Tag;\n}\n","import {\n  AfterViewChecked,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { Line, Mention, Tag } from './util/interfaces';\nimport { Key } from './util/key';\nimport { NgMentionsListComponent } from './util/mentions-list.component';\nimport {\n  applyChangeToValue,\n  escapeRegExp,\n  findStartOfMentionInPlainText,\n  getBoundsOfMentionAtPosition,\n  getCaretPosition,\n  isMobileOrTablet,\n  mapPlainTextIndex,\n  MarkupMention,\n  markupToRegExp,\n  replacePlaceholders,\n  setCaretPosition,\n  styleProperties,\n} from './util/utils';\n\n// eslint-disable-next-line no-shadow\nenum InputToKeyboard {\n  'deleteContentBackward' = Key.Backspace,\n  'insertLineBreak' = Key.Enter,\n}\n\n/**\n * The Mentions Component\n */\n@Component({\n  exportAs: 'ngMentions',\n  selector: 'ng-mentions',\n  template: `\n    <div\n      #highlighter\n      class=\"highlighter\"\n      [ngClass]=\"textAreaClassNames\"\n      [attr.readonly]=\"readonly\"\n      [ngStyle]=\"highlighterStyle\"\n    >\n      <div *ngFor=\"let line of lines\">\n        <ng-container *ngFor=\"let part of line.parts\">\n          <highlighted *ngIf=\"isPartMention(part)\" [tag]=\"part.tag\">{{ formatMention(part) }}</highlighted>\n          <ng-container *ngIf=\"!isPartMention(part)\">{{ part }}</ng-container>\n        </ng-container>\n        <ng-container *ngIf=\"line.parts.length === 0\">&nbsp;</ng-container>\n      </div>\n    </div>\n    <textarea\n      #input\n      [rows]=\"rows\"\n      [cols]=\"columns\"\n      [ngModel]=\"displayContent\"\n      [ngClass]=\"textAreaClassNames\"\n      (blur)=\"onBlur($event)\"\n      (select)=\"onSelect($event)\"\n      (mouseup)=\"onSelect($event)\"\n      (ngModelChange)=\"onChange($event)\"\n      (scroll)=\"onTextAreaScroll()\"\n      [disabled]=\"disabled\"\n      [required]=\"required\"\n      [placeholder]=\"placeholder\"\n    ></textarea>\n  `,\n  styleUrls: ['./mentions.scss'],\n  preserveWhitespaces: false,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class NgMentionsComponent implements OnChanges, OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n  /**\n   * The character to trigger the mentions list when a user is typing in the input field\n   */\n  @Input('triggerChar') triggerChar = '@';\n  /**\n   * The markup used to format a mention in the model value\n   */\n  @Input('markup') mentionMarkup = '@[__display__](__type__:__id__)';\n  /**\n   * Optional. When using a custom search (i.e. an API call), the internal searching capability should be disabled.\n   */\n  @Input('disableSearch') disableSearch = false;\n  /**\n   * Only used when internal search is not disabled. This limits the maximum number of items to display in the search\n   * result list.\n   */\n  @Input('maxItems') maxItems = -1;\n  /**\n   * Used to cause the search result list to display in a \"drop up\" fashion, instead of a typical dropdown.\n   */\n  @Input('dropUp') dropUp = false;\n  /**\n   * If the supplied mentions are a list of objects, this is the name of the property used to display\n   * the mention in the search result list and when formatting a mention in the displayed text.\n   */\n  @Input('displayName') displayName = 'display';\n  @Input('placeholder') placeholder: string;\n\n  /**\n   * An event emitted, after the trigger character has been typed, with the user-entered search string.\n   */\n  @Output('search') readonly search: EventEmitter<string> = new EventEmitter<string>();\n  @Output('valueChanges') readonly valueChanges: EventEmitter<string> = new EventEmitter<string>();\n  @Output('stateChanges') readonly stateChanges: Subject<void> = new Subject<void>();\n\n  @ContentChild(TemplateRef, { static: true }) mentionListTemplate: TemplateRef<any>;\n  @ViewChild('input', { static: true }) textAreaInputElement: ElementRef;\n  @ViewChild('highlighter', { static: true }) highlighterElement: ElementRef;\n\n  displayContent = '';\n  lines: Line[] = [];\n  highlighterStyle: { [key: string]: string } = {};\n  textAreaClassNames: { [key: string]: boolean } = {};\n  selectionStart: number;\n  selectionEnd: number;\n  mentions: any[] = [];\n\n  private _value = '';\n  private _required: boolean;\n  private _disabled: boolean;\n  private _rows = 1;\n  private _columns = 20;\n  private searchString: string;\n  private startPos: number;\n  private startNode;\n  mentionsList: NgMentionsListComponent;\n  private stopSearch = false;\n  private markupSearch: MarkupMention;\n  private _destroyed: Subject<void> = new Subject<void>();\n  private newLine = /\\n/g;\n  private _errorState = false;\n  private _inputListener: any;\n  private mobile: boolean = isMobileOrTablet();\n\n  /**\n   * Classes for textarea\n   */\n  @Input('formClass')\n  get formClass(): string {\n    return Object.keys(this.textAreaClassNames).join(' ');\n  }\n\n  set formClass(classNames: string) {\n    this.textAreaClassNames = {};\n    Array.from(classNames.split(' ')).forEach((className) => (this.textAreaClassNames[className] = true));\n  }\n\n  @Input('value')\n  get value(): string {\n    return this._value;\n  }\n\n  set value(value: string) {\n    this.parseLines(value);\n  }\n\n  @Input('required')\n  get required(): boolean {\n    return this._required;\n  }\n\n  set required(value: boolean) {\n    this._required = value;\n    this.refreshStyles();\n  }\n\n  @Input('disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n    this.refreshStyles();\n  }\n\n  /**\n   * Number of rows for the textarea. Defaults to 1\n   */\n  @Input('rows')\n  get rows(): number | string {\n    return this._rows;\n  }\n\n  set rows(value: number | string) {\n    if (value !== null && typeof value !== 'undefined') {\n      if (typeof value === 'string') {\n        value = parseInt(value, 10);\n      }\n      this._rows = Math.max(1, value);\n      this.refreshStyles();\n    }\n  }\n\n  /**\n   * Number of columns for the textarea. Defaults to 1\n   */\n  @Input('cols')\n  get columns(): number | string {\n    return this._columns;\n  }\n\n  set columns(value: number | string) {\n    if (value !== null && typeof value !== 'undefined') {\n      if (typeof value === 'string') {\n        value = parseInt(value, 10);\n      }\n      this._columns = Math.max(1, value);\n      this.refreshStyles();\n    }\n  }\n\n  /**\n   * The list of mentions to display, or filter, in the search result list.\n   */\n  @Input('mentions')\n  set mentionItems(value: any[]) {\n    this.mentions = value;\n    if (this.disableSearch && this.mentionsList) {\n      this.mentionsList.items = value;\n    }\n  }\n\n  get readonly(): string {\n    return this.disabled ? 'readonly' : null;\n  }\n\n  get errorState(): boolean {\n    return this._errorState;\n  }\n\n  constructor(\n    private element: ElementRef,\n    private viewContainer: ViewContainerRef,\n    private changeDetector: ChangeDetectorRef,\n    private ngZone: NgZone,\n  ) {}\n\n  ngOnInit(): void {\n    this.parseMarkup();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('markup' in changes) {\n      this.parseMarkup();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.addInputListener();\n    this.parseLines(this._value);\n    this.refreshStyles();\n  }\n\n  ngAfterViewChecked(): void {\n    this.addInputListener();\n    this.refreshStyles();\n  }\n\n  ngOnDestroy(): void {\n    if (this._inputListener) {\n      (this.textAreaInputElement.nativeElement as HTMLTextAreaElement).removeEventListener(\n        this.mobile ? 'input' : 'keydown',\n        this._inputListener,\n      );\n      this._inputListener = undefined;\n    }\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  @HostListener('window:resize')\n  public onWindowResize(): void {\n    this.refreshStyles();\n  }\n\n  public onTextAreaScroll(): void {\n    this.highlighterElement.nativeElement.scrollTop = this.textAreaInputElement.nativeElement.scrollTop;\n  }\n\n  public open(): void {\n    const event = { key: this.triggerChar, which: this.triggerChar.charCodeAt(0) };\n    this.textAreaInputElement.nativeElement.focus();\n    const caretPosition: number = getCaretPosition(this.textAreaInputElement.nativeElement);\n    let selectionStart = this.textAreaInputElement.nativeElement.selectionStart;\n    let selectionEnd = this.textAreaInputElement.nativeElement.selectionEnd;\n    if (typeof selectionStart !== 'number' || typeof selectionEnd !== 'number') {\n      selectionStart = caretPosition;\n      selectionEnd = caretPosition;\n    }\n    const newCaretPosition = selectionStart + 1;\n    const newValue =\n      this.displayContent.substring(0, selectionStart) + this.triggerChar + this.displayContent.substring(selectionEnd);\n    this.displayContent = newValue;\n    this.onChange(newValue);\n    setTimeout(() => {\n      this.selectionStart = newCaretPosition;\n      this.selectionEnd = newCaretPosition;\n      setCaretPosition(this.textAreaInputElement.nativeElement, newCaretPosition);\n      setTimeout(() => {\n        this.textAreaInputElement.nativeElement.focus();\n        this.onKeyDown(event);\n      });\n    });\n  }\n\n  public onSelect(event: any): void {\n    this.selectionStart = event.target.selectionStart;\n    this.selectionEnd = event.target.selectionEnd;\n  }\n\n  public onChange(newPlainTextValue: string): void {\n    const value = this._value;\n    const displayTransform = this.displayTransform.bind(this);\n    let selectionStart = this.textAreaInputElement.nativeElement.selectionStart;\n    let selectionEnd = this.textAreaInputElement.nativeElement.selectionEnd;\n    const bounds = getBoundsOfMentionAtPosition(newPlainTextValue, this.markupSearch, selectionStart, displayTransform);\n    if (bounds.start !== -1) {\n      newPlainTextValue = newPlainTextValue.substring(0, bounds.start) + newPlainTextValue.substring(bounds.end);\n    }\n    const newValue = applyChangeToValue(\n      value,\n      this.markupSearch,\n      newPlainTextValue,\n      this.selectionStart,\n      this.selectionEnd,\n      selectionEnd,\n      displayTransform,\n    );\n    const startOfMention = findStartOfMentionInPlainText(value, this.markupSearch, selectionStart, displayTransform);\n    if (startOfMention.start > -1 && this.selectionEnd > startOfMention.start) {\n      selectionStart = startOfMention.start;\n      selectionEnd = selectionStart;\n    }\n    this.selectionStart = Math.max(selectionStart, 0);\n    this.selectionEnd = Math.max(selectionEnd, 0);\n    this.parseLines(newValue);\n    if (this.selectionEnd > 0) {\n      setTimeout(() => setCaretPosition(this.textAreaInputElement.nativeElement, this.selectionEnd));\n    }\n  }\n\n  public onInput(event: InputEvent): void {\n    const character = event.data || '';\n    const keyCode = InputToKeyboard[event.inputType] || character.charCodeAt(0);\n    if (keyCode === Key.Enter && this.mentionsList.show) {\n      event.preventDefault();\n    }\n    this.handleInput({ which: keyCode }, keyCode, character);\n  }\n\n  public onKeyDown(event: any): void {\n    let characterPressed = event.key;\n    const keyCode = event.which || event.keyCode;\n    if (!characterPressed) {\n      const characterCode = event.which || event.keyCode;\n      characterPressed = String.fromCharCode(characterCode);\n      if (!event.shiftKey && characterCode >= 65 && characterCode <= 90) {\n        characterPressed = String.fromCharCode(characterCode + 32);\n      }\n    }\n\n    this.handleInput(event, keyCode, characterPressed);\n  }\n\n  public onBlur(event: MouseEvent | KeyboardEvent | FocusEvent): void {\n    if (event instanceof FocusEvent && event.relatedTarget) {\n      const element = event.relatedTarget as HTMLElement;\n      if (element.classList.contains('dropdown-item')) {\n        return;\n      }\n    }\n    this.stopEvent(event);\n    if (this.mentionsList) {\n      this.mentionsList.show = false;\n    }\n  }\n\n  public isPartMention(part: any): boolean {\n    return typeof part.contents !== 'undefined';\n  }\n\n  public formatMention(mention: Mention): string {\n    return this._formatMention(mention.contents);\n  }\n\n  private handleInput(event: any, keyCode: number, characterPressed: string): void {\n    let caretPosition: number = getCaretPosition(this.textAreaInputElement.nativeElement);\n    if (keyCode === Key.Enter && event.wasSelection && caretPosition < this.startPos) {\n      caretPosition = this.startNode.length;\n      setCaretPosition(this.startNode, caretPosition);\n    }\n\n    const startOfMention = findStartOfMentionInPlainText(\n      this._value,\n      this.markupSearch,\n      caretPosition,\n      this.displayTransform.bind(this),\n    );\n    if (characterPressed === this.triggerChar) {\n      this.setupMentionsList(caretPosition);\n    } else if (startOfMention.start === -1 && this.startPos >= 0) {\n      if (caretPosition <= this.startPos) {\n        this.mentionsList.show = false;\n        this.startPos = -1;\n      } else if (\n        keyCode !== Key.Shift &&\n        !event.metaKey &&\n        !event.altKey &&\n        !event.ctrlKey &&\n        caretPosition > this.startPos\n      ) {\n        this.handleKeyDown(event, caretPosition, characterPressed);\n      }\n    } else {\n      this.onSelect({ target: this.textAreaInputElement.nativeElement });\n    }\n  }\n\n  private displayTransform(..._: string[]): string {\n    const replaceIndex = this.markupSearch.groups[this.displayName];\n    return _[replaceIndex];\n  }\n\n  private _formatMention(contents: string): string {\n    const replaceValue = `\\$${this.displayName}`;\n    let result = contents.replace(this.markupSearch.regEx, replaceValue);\n    let replaceIndex;\n    if (result === replaceValue) {\n      replaceIndex = `\\$${this.markupSearch.groups[this.displayName]}`;\n      result = contents.replace(this.markupSearch.regEx, replaceIndex);\n    }\n\n    return result;\n  }\n\n  // noinspection JSMethodCanBeStatic\n  private stopEvent(event: MouseEvent | KeyboardEvent | FocusEvent): void {\n    if (event.preventDefault) {\n      event.preventDefault();\n      event.stopPropagation();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  private setupMentionsList(caretPosition: number): void {\n    this.startPos = caretPosition;\n    this.startNode = window.getSelection().anchorNode;\n    this.searchString = '';\n    this.stopSearch = false;\n    this.showMentionsList();\n    this.updateMentionsList();\n  }\n\n  private handleKeyDown(event: any, caretPosition: number, characterPressed: string): void {\n    const keyCode = event.which || event.keyCode;\n    if (keyCode === Key.Space) {\n      this.startPos = -1;\n    } else if (keyCode === Key.Backspace && caretPosition > 0) {\n      caretPosition--;\n      if (caretPosition === this.startPos) {\n        this.stopSearch = true;\n      }\n      this.mentionsList.show = !this.stopSearch;\n    } else if (this.mentionsList.show) {\n      if (keyCode === Key.Tab || keyCode === Key.Enter) {\n        this.handleKeydownMentionSelection(event, caretPosition);\n        return;\n      } else if (keyCode === Key.Escape) {\n        this.stopEvent(event);\n        this.mentionsList.show = false;\n        this.stopSearch = true;\n        return;\n      } else if (keyCode === Key.ArrowDown) {\n        this.stopEvent(event);\n        this.mentionsList.selectNextItem();\n        return;\n      } else if (keyCode === Key.ArrowUp) {\n        this.stopEvent(event);\n        this.mentionsList.selectPreviousItem();\n        return;\n      } else if (keyCode === Key.Home) {\n        this.stopEvent(event);\n        this.mentionsList.selectFirstItem();\n        return;\n      } else if (keyCode === Key.End) {\n        this.stopEvent(event);\n        this.mentionsList.selectLastItem();\n        return;\n      }\n    }\n\n    if (keyCode === Key.ArrowLeft || keyCode === Key.ArrowRight || keyCode === Key.Home || keyCode === Key.End) {\n      this.onSelect(event);\n      return;\n    }\n\n    let mention = this.displayContent.substring(this.startPos + 1, caretPosition);\n    if (keyCode !== Key.Backspace) {\n      mention += characterPressed;\n    }\n    this.searchString = mention || '';\n    this.updateMentionsList();\n  }\n\n  private handleKeydownMentionSelection(event: any, caretPosition: number): void {\n    this.stopEvent(event);\n    this.mentionsList.show = false;\n    let value = this._value;\n    const start = mapPlainTextIndex(value, this.markupSearch, this.startPos, false, this.displayTransform.bind(this));\n    const item = event.item || this.mentionsList.selectedItem;\n    const newValue = replacePlaceholders(item, this.markupSearch);\n    const newDisplayValue = this._formatMention(newValue);\n    caretPosition = this.startPos + newDisplayValue.length;\n    const searchString = this.searchString || '';\n    value = value.substring(0, start) + newValue + value.substring(start + searchString.length + 1, value.length);\n    this.parseLines(value);\n    this.startPos = -1;\n    this.searchString = '';\n    this.stopSearch = true;\n    this.mentionsList.show = false;\n    this.changeDetector.detectChanges();\n    setTimeout(() => {\n      setCaretPosition(this.textAreaInputElement.nativeElement, caretPosition);\n      this.onSelect({ target: this.textAreaInputElement.nativeElement });\n    });\n  }\n\n  private getDisplayValue(item: any): null | string {\n    if (typeof item === 'string') {\n      return item;\n    } else if (item[this.displayName] !== undefined) {\n      return item[this.displayName];\n    }\n\n    return null;\n  }\n\n  private showMentionsList(): void {\n    if (!this.mentionsList) {\n      const componentRef = this.viewContainer.createComponent(NgMentionsListComponent);\n      this.mentionsList = componentRef.instance;\n      this.mentionsList.itemTemplate = this.mentionListTemplate;\n      this.mentionsList.displayTransform = this.displayTransform.bind(this);\n      this.mentionsList.itemSelected.subscribe((item) => {\n        this.textAreaInputElement.nativeElement.focus();\n        const fakeEvent = { which: Key.Enter, wasSelection: true, item };\n        this.onKeyDown(fakeEvent);\n      });\n      this.mentionsList.displayTransform = this.getDisplayValue.bind(this);\n    }\n    this.mentionsList.textAreaElement = this.textAreaInputElement.nativeElement;\n    this.mentionsList.show = true;\n    this.mentionsList.dropUp = this.dropUp;\n    this.mentionsList.activeIndex = 0;\n    this.mentionsList.position();\n    this.ngZone.run(() => this.mentionsList.resetScroll());\n  }\n\n  private updateMentionsList(): void {\n    if (!this.disableSearch) {\n      let items = Array.from(this.mentions);\n      if (this.searchString) {\n        const searchString = this.searchString.toLowerCase();\n        const searchRegEx = new RegExp(escapeRegExp(searchString), 'i');\n        items = items.filter((item) => {\n          const value = this.getDisplayValue(item);\n          return value !== null && searchRegEx.test(value);\n        });\n        if (this.maxItems > 0) {\n          items = items.slice(0, this.maxItems);\n        }\n      }\n\n      this.mentionsList.items = items;\n    } else {\n      this.search.emit(this.searchString);\n    }\n  }\n\n  private parseMarkup(): void {\n    if (this.mentionMarkup.length === 0 || this.mentionMarkup[0] !== this.triggerChar) {\n      throw new Error(`ng-mentions markup pattern must start with the trigger character \"${this.triggerChar}\"`);\n    }\n\n    this.markupSearch = markupToRegExp(this.mentionMarkup);\n  }\n\n  private parseLines(value: string = ''): void {\n    if (value !== this._value) {\n      value = value || '';\n      const lines = value.split(this.newLine).map((line: string) => this.formatMentions(line));\n      const displayContent = lines.map((line) => line.content).join('\\n');\n      if (this.displayContent !== displayContent) {\n        this.lines = lines;\n        this.displayContent = displayContent;\n        this.triggerChange(value);\n      }\n    }\n  }\n\n  private formatMentions(line: string): Line {\n    const lineObj: Line = <Line>{ originalContent: line, content: line, parts: [] };\n\n    if (line.length === 0) {\n      return lineObj;\n    }\n\n    let mention;\n    const tags: Tag[] = [];\n    const regEx = this.markupSearch.regEx;\n    regEx.lastIndex = 0;\n    while ((mention = regEx.exec(line)) !== null) {\n      tags.push({ indices: { start: mention.index, end: mention.index + mention[0].length } });\n    }\n\n    const prevTags: Tag[] = [];\n    let content = '';\n    [...tags]\n      .sort((tagA, tagB) => tagA.indices.start - tagB.indices.start)\n      .forEach((tag: Tag) => {\n        const expectedLength = tag.indices.end - tag.indices.start;\n        const contents = line.slice(tag.indices.start, tag.indices.end);\n        if (contents.length === expectedLength) {\n          const prevIndex = prevTags.length > 0 ? prevTags[prevTags.length - 1].indices.end : 0;\n          const before = line.slice(prevIndex, tag.indices.start);\n          const partMention = <Mention>{ contents, tag };\n          lineObj.parts.push(before);\n          lineObj.parts.push(partMention);\n          prevTags.push(tag);\n          content += before + this.formatMention(partMention);\n        }\n      });\n\n    const remainingStart = prevTags.length > 0 ? prevTags[prevTags.length - 1].indices.end : 0;\n    const remaining = line.slice(remainingStart);\n    lineObj.parts.push(remaining);\n    content += remaining;\n    lineObj.content = content;\n\n    return lineObj;\n  }\n\n  private addInputListener(): void {\n    if (!this._inputListener && this.textAreaInputElement) {\n      this._inputListener = (event: KeyboardEvent) => this.onKeyDown(event);\n      if (this.mobile) {\n        this._inputListener = (event: InputEvent) => this.onInput(event);\n      }\n      (this.textAreaInputElement.nativeElement as HTMLElement).addEventListener(\n        this.mobile ? 'input' : 'keydown',\n        this._inputListener,\n      );\n    }\n  }\n\n  private refreshStyles(): void {\n    if (!this.textAreaInputElement) {\n      return;\n    }\n    const element = this.textAreaInputElement.nativeElement;\n    const computedStyle: any = getComputedStyle(element);\n    this.highlighterStyle = {};\n    styleProperties.forEach((prop) => (this.highlighterStyle[prop] = computedStyle[prop]));\n    this.changeDetector.detectChanges();\n  }\n\n  private triggerChange(value: string): void {\n    this._value = value;\n    this.valueChanges.emit(this._value);\n    this.changeDetector.detectChanges();\n  }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NgMentionsComponent } from './mentions.component';\n\n/**\n * The NgMentionsAccessorDirective directive is used to indicate the input element.\n */\n@Directive({\n  exportAs: 'ngMentions',\n  selector: 'ng-mentions',\n  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgMentionsAccessorDirective), multi: true }],\n})\nexport class NgMentionsAccessorDirective implements OnInit, OnDestroy, ControlValueAccessor {\n  private _onChange: (_: string) => void;\n  private _onTouch: () => void;\n  private _destroyed: Subject<void> = new Subject<void>();\n\n  constructor(private element: ElementRef, private host: NgMentionsComponent) {}\n\n  ngOnInit(): void {\n    this.host.valueChanges.pipe(takeUntil(this._destroyed)).subscribe((value) => this.onChange(value));\n  }\n\n  ngOnDestroy(): void {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouch = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.host.disabled = isDisabled;\n  }\n\n  writeValue(value: string): void {\n    if (typeof value === 'string' || value === null) {\n      this.host.value = value;\n    }\n  }\n\n  @HostListener('change', ['$event'])\n  onChange(value: string) {\n    if (this._onChange && typeof value !== 'object') {\n      this._onChange(value);\n    }\n  }\n\n  @HostListener('touch')\n  onTouched() {\n    if (this._onTouch) {\n      this._onTouch();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgHighlighterPatternDirective } from './highlighter-pattern.directive';\nimport { NgHighlighterComponent } from './highlighter.component';\nimport { NgMentionsAccessorDirective } from './mentions-input.directive';\nimport { NgMentionsComponent } from './mentions.component';\nimport { HighlightedDirective } from './util/highlight.directive';\nimport { NgMentionsListComponent } from './util/mentions-list.component';\n\nexport { NgHighlighterPatternDirective } from './highlighter-pattern.directive';\nexport { NgHighlighterComponent } from './highlighter.component';\nexport { NgMentionsAccessorDirective } from './mentions-input.directive';\nexport { NgMentionsComponent } from './mentions.component';\n\nconst EXPORT_DIRECTIVES = [\n  NgMentionsComponent,\n  NgMentionsAccessorDirective,\n  NgHighlighterComponent,\n  NgHighlighterPatternDirective,\n];\nconst DECLARATIONS = [\n  NgMentionsComponent,\n  NgMentionsAccessorDirective,\n  NgMentionsListComponent,\n  HighlightedDirective,\n  NgHighlighterComponent,\n  NgHighlighterPatternDirective,\n];\n\n@NgModule({\n  imports: [CommonModule, FormsModule],\n  exports: EXPORT_DIRECTIVES,\n  declarations: DECLARATIONS,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgMentionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.HighlightedDirective","i1.NgMentionsComponent"],"mappings":"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"}