{"version":3,"file":"ng-devui-mention.mjs","sources":["../../devui/mention/mention.component.ts","../../devui/mention/mention.component.html","../../devui/mention/position.ts","../../devui/mention/utils.ts","../../devui/mention/mention.directive.ts","../../devui/mention/mention.module.ts","../../devui/mention/ng-devui-mention.ts"],"sourcesContent":["import { Component, ElementRef, QueryList, TemplateRef, ViewChildren } from '@angular/core';\nimport { MentionDirective } from './mention.directive';\nimport { MentionPositionType } from './mention.types';\n\n@Component({\n  selector: 'd-mention',\n  templateUrl: './mention.component.html',\n  styleUrls: ['./mention.component.scss'],\n})\nexport class MentionComponent {\n  @ViewChildren('items', { read: ElementRef }) items!: QueryList<ElementRef>;\n  suggestions = [];\n  activeIndex = -1;\n  loading = false;\n  value = '';\n  mentionNotFoundContent = '';\n  mentionHeaderTemplate: TemplateRef<any>;\n  mentionItemTemplate: TemplateRef<any>;\n  trigger: MentionDirective;\n  position: MentionPositionType;\n\n  private get focusItemElement(): HTMLElement | null {\n    const itemArr = this.items?.toArray();\n    if (itemArr && itemArr[this.activeIndex]) {\n      return itemArr[this.activeIndex].nativeElement;\n    }\n    return null;\n  }\n\n  selectSuggestion(suggestion) {\n    if (this.trigger) {\n      this.trigger.selectSuggestion(suggestion);\n    }\n  }\n\n  scrollToFocusItem(): void {\n    if (this.focusItemElement) {\n      this.focusItemElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n    }\n  }\n}\n","<ul class=\"devui-mention-dropdown\" dLoading [showLoading]=\"loading\" [ngClass]=\"{ 'devui-mention-overlay-top': position === 'top' }\">\n  <ng-template\n    *ngIf=\"mentionHeaderTemplate\"\n    [ngTemplateOutlet]=\"mentionHeaderTemplate\"\n    [ngTemplateOutletContext]=\"{ activeIndex: activeIndex, loading: loading }\"\n  ></ng-template>\n  <li\n    #items\n    *ngFor=\"let suggestion of suggestions; let i = index\"\n    class=\"devui-mention-dropdown-item\"\n    [class.focus]=\"i === activeIndex\"\n    (click)=\"selectSuggestion(suggestion)\"\n    (mousedown)=\"$event.preventDefault()\"\n  >\n    <ng-container *ngIf=\"mentionItemTemplate; else defaultSuggestion\">\n      <ng-container [ngTemplateOutlet]=\"mentionItemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: suggestion }\"></ng-container>\n    </ng-container>\n    <ng-template #defaultSuggestion>{{ suggestion }}</ng-template>\n  </li>\n  <li class=\"devui-mention-dropdown-notfound devui-mention-dropdown-item\" *ngIf=\"suggestions.length === 0\">\n    <span *ngIf=\"!loading\">{{ mentionNotFoundContent }}</span>\n  </li>\n</ul>\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\n\nexport const POSITION_MAP: { [key: string]: ConnectionPositionPair } = {\n  top: new ConnectionPositionPair({ originX: 'center', originY: 'top' }, { overlayX: 'center', overlayY: 'bottom' }),\n  topCenter: new ConnectionPositionPair({ originX: 'center', originY: 'top' }, { overlayX: 'center', overlayY: 'bottom' }),\n  topLeft: new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),\n  topRight: new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }),\n  right: new ConnectionPositionPair({ originX: 'end', originY: 'center' }, { overlayX: 'start', overlayY: 'center' }),\n  rightTop: new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'start', overlayY: 'top' }),\n  rightBottom: new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'start', overlayY: 'bottom' }),\n  bottom: new ConnectionPositionPair({ originX: 'center', originY: 'bottom' }, { overlayX: 'center', overlayY: 'top' }),\n  bottomCenter: new ConnectionPositionPair({ originX: 'center', originY: 'bottom' }, { overlayX: 'center', overlayY: 'top' }),\n  bottomLeft: new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n  bottomRight: new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }),\n  left: new ConnectionPositionPair({ originX: 'start', originY: 'center' }, { overlayX: 'end', overlayY: 'center' }),\n  leftTop: new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'end', overlayY: 'top' }),\n  leftBottom: new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'end', overlayY: 'bottom' })\n};\n\nexport const DEFAULT_TOOLTIP_POSITIONS = [POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left];\n\nexport const DEFAULT_CASCADER_POSITIONS = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topLeft, POSITION_MAP.topRight];\n\nexport const DEFAULT_MENTION_TOP_POSITIONS = [\n  new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'bottom' }),\n  new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'end', overlayY: 'bottom' })\n];\n\nexport const DEFAULT_MENTION_BOTTOM_POSITIONS = [\n  POSITION_MAP.bottomLeft,\n  new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' })\n];\n\nexport function getPlacementName(position: ConnectedOverlayPositionChange): string | undefined {\n  for (const placement in POSITION_MAP) {\n    if (\n      position.connectionPair.originX === POSITION_MAP[placement].originX &&\n      position.connectionPair.originY === POSITION_MAP[placement].originY &&\n      position.connectionPair.overlayX === POSITION_MAP[placement].overlayX &&\n      position.connectionPair.overlayY === POSITION_MAP[placement].overlayY\n    ) {\n      return placement;\n    }\n  }\n  return undefined;\n}\n","const properties = [\r\n  'direction', // RTL support\r\n  'boxSizing',\r\n  'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\r\n  'height',\r\n  'overflowX',\r\n  'overflowY',\r\n\r\n  'borderTopWidth',\r\n  'borderRightWidth',\r\n  'borderBottomWidth',\r\n  'borderLeftWidth',\r\n  'borderStyle',\r\n\r\n  'paddingTop',\r\n  'paddingRight',\r\n  'paddingBottom',\r\n  'paddingLeft',\r\n\r\n  'fontStyle',\r\n  'fontVariant',\r\n  'fontWeight',\r\n  'fontStretch',\r\n  'fontSize',\r\n  'fontSizeAdjust',\r\n  'lineHeight',\r\n  'fontFamily',\r\n\r\n  'textAlign',\r\n  'textTransform',\r\n  'textIndent',\r\n  'textDecoration',\r\n\r\n  'letterSpacing',\r\n  'wordSpacing',\r\n\r\n  'tabSize',\r\n  'MozTabSize',\r\n];\r\n\r\nconst isBrowser = typeof window !== 'undefined';\r\nconst isFirefox = isBrowser && (window as any).mozInnerScreenX !== undefined;\r\nfunction _parseInt(value) {\r\n  return parseInt(value, 10);\r\n}\r\n\r\nexport function getCaretCoordinates(element, position, options?) {\r\n  if (!isBrowser) {\r\n    throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\r\n  }\r\n\r\n  // isDebugMode 调试模式，用来定位光标位置的\r\n  const isDebugMode = (options && options.isDebugMode) || false;\r\n  if (isDebugMode) {\r\n    const el = document.querySelector('#input-textarea-caret-position-mirror-div');\r\n    if (el) {\r\n      el.parentNode.removeChild(el);\r\n    }\r\n  }\r\n\r\n  const div = document.createElement('div');\r\n  div.id = 'input-textarea-caret-position-mirror-div';\r\n  document.body.appendChild(div);\r\n\r\n  const style = div.style;\r\n  const computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle;\r\n  const isInput = element.nodeName === 'INPUT';\r\n\r\n  style.whiteSpace = 'pre-wrap';\r\n  if (!isInput) {\r\n    style.wordWrap = 'break-word';\r\n  }\r\n\r\n  style.position = 'absolute';\r\n  if (!isDebugMode) {\r\n    style.visibility = 'hidden';\r\n  }\r\n\r\n  properties.forEach((prop) => {\r\n    if (isInput && prop === 'lineHeight') {\r\n      if (computed.boxSizing === 'border-box') {\r\n        const height = _parseInt(computed.height);\r\n        const outerHeight =\r\n          _parseInt(computed.paddingTop) +\r\n          _parseInt(computed.paddingBottom) +\r\n          _parseInt(computed.borderTopWidth) +\r\n          _parseInt(computed.borderBottomWidth);\r\n        const targetHeight = outerHeight + _parseInt(computed.lineHeight);\r\n        if (height > targetHeight) {\r\n          style.lineHeight = height - outerHeight + 'px';\r\n        } else if (height === targetHeight) {\r\n          style.lineHeight = computed.lineHeight;\r\n        } else {\r\n          style.lineHeight = '0';\r\n        }\r\n      } else {\r\n        style.lineHeight = computed.height;\r\n      }\r\n    } else {\r\n      style[prop] = computed[prop];\r\n    }\r\n  });\r\n\r\n  if (isFirefox) {\r\n    if (element.scrollHeight > _parseInt(computed.height)) {\r\n      style.overflowY = 'scroll';\r\n    }\r\n  } else {\r\n    style.overflow = 'hidden';\r\n  }\r\n\r\n  div.textContent = element.value.substring(0, position);\r\n  if (isInput) {\r\n    div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\r\n  }\r\n\r\n  const span = document.createElement('span');\r\n  span.textContent = element.value.substring(position) || '.';\r\n  div.appendChild(span);\r\n\r\n  const coordinates = {\r\n    top: span.offsetTop + _parseInt(computed.borderTopWidth),\r\n    left: span.offsetLeft + _parseInt(computed.borderLeftWidth),\r\n    height: _parseInt(computed.lineHeight),\r\n  };\r\n\r\n  if (isDebugMode) {\r\n    span.style.backgroundColor = '#aaa';\r\n  } else {\r\n    document.body.removeChild(div);\r\n  }\r\n\r\n  return coordinates;\r\n}\r\n\r\nexport function getRegExp(prefix: string | string[]): RegExp {\r\n  const prefixArray = Array.isArray(prefix) ? prefix : [prefix];\r\n  let prefixToken = prefixArray.join('').replace(/(\\$|\\^)/g, '\\\\$1');\r\n\r\n  if (prefixArray.length > 1) {\r\n    prefixToken = `[${prefixToken}]`;\r\n  }\r\n\r\n  return new RegExp(`(\\\\s|^)(${prefixToken})[^\\\\s]*`, 'g');\r\n}\r\n\r\nexport function getMentions(value: string, prefix: string | string[] = '@'): string[] {\r\n  if (typeof value !== 'string') {\r\n    return [];\r\n  }\r\n  const regex = getRegExp(prefix);\r\n  const mentions = value.match(regex);\r\n  return mentions !== null ? mentions.map((e) => e.trim()) : [];\r\n}\r\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\r\nimport { ConnectionPositionPair, FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Host,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  Self,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\nimport { DevConfigService, WithConfig } from 'ng-devui/utils';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MentionComponent } from './mention.component';\r\nimport { Mention, MentionOnSearchTypes, MentionPositionType } from './mention.types';\r\nimport { DEFAULT_MENTION_BOTTOM_POSITIONS } from './position';\r\nimport { getCaretCoordinates } from './utils';\r\n\r\n@Directive({\r\n  selector: '[dMention]',\r\n  exportAs: 'dMention',\r\n})\r\nexport class MentionDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n  @Input() mentionNotFoundContent = 'No suggestion matched';\r\n  @Input() mentionSuggestions = [];\r\n  @Input() mentionLoading = false;\r\n  @Input() mentionTrigger = ['@'];\r\n  @Input() mentionSeparator = ' ';\r\n  @Input() mentionSeparatorToggle = { prefix: false, suffix: false };\r\n  @Input() mentionPosition: MentionPositionType = 'bottom';\r\n  @Input() mentionHeaderTemplate: TemplateRef<any>;\r\n  @Input() mentionItemTemplate: TemplateRef<any>;\r\n  @Input() endWithCursorPos = false;\r\n  @Input() mentionValueParse: (value: string) => string = (value) => value;\r\n  @Output() mentionSelectItem = new EventEmitter();\r\n  @Output() mentionSearchChange: EventEmitter<MentionOnSearchTypes> = new EventEmitter();\r\n  @Output() mentionAfterMentionInit: EventEmitter<MentionDirective> = new EventEmitter();\r\n\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n\r\n  isOpen = false;\r\n  activeIndex = -1;\r\n  unsubscribe$ = new Subject();\r\n  defaultNotFoundText = '';\r\n\r\n  get nativeElement() {\r\n    return this.el.nativeElement;\r\n  }\r\n\r\n  private value = '';\r\n  private previousValue = '';\r\n  private cursorMention: any;\r\n  private cursorMentionStart: number;\r\n  private cursorMentionEnd: number;\r\n  private cursorEnd: number;\r\n  private overlayRef: OverlayRef | null = null;\r\n  private portal?: ComponentPortal<MentionComponent>;\r\n  private positionStrategy!: FlexibleConnectedPositionStrategy;\r\n  private mentionRef: ComponentRef<MentionComponent>;\r\n  private filterSuggestions = [];\r\n\r\n  constructor(\r\n    @Optional() @Host() @Self() private ngModelInstance: NgModel,\r\n    private el: ElementRef,\r\n    private viewContainerRef: ViewContainerRef,\r\n    private cdr: ChangeDetectorRef,\r\n    private overlay: Overlay,\r\n    private devConfigService: DevConfigService\r\n  ) {}\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event) {\r\n    if (this.mentionRef) {\r\n      const keyCode = event.keyCode;\r\n      if (this.isOpen && keyCode === ENTER && this.activeIndex !== -1 && this.filterSuggestions.length) {\r\n        this.selectSuggestion(this.filterSuggestions[this.activeIndex]);\r\n        event.preventDefault();\r\n      } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\r\n        if (keyCode === LEFT_ARROW) {\r\n          this.cursorMentionStart = this.cursorMentionStart - 1;\r\n        } else {\r\n          this.cursorMentionStart = this.cursorMentionStart + 1;\r\n        }\r\n        event.stopPropagation();\r\n        setTimeout(() => {\r\n          this.resetMention();\r\n        });\r\n      } else {\r\n        if (this.isOpen && (keyCode === TAB || keyCode === ESCAPE)) {\r\n          this.hideMention();\r\n          return;\r\n        }\r\n\r\n        if (this.isOpen && keyCode === UP_ARROW) {\r\n          event.preventDefault();\r\n          event.stopPropagation();\r\n          this.setPreviousItemActive();\r\n        }\r\n\r\n        if (this.isOpen && keyCode === DOWN_ARROW) {\r\n          event.preventDefault();\r\n          event.stopPropagation();\r\n          this.setNextItemActive();\r\n        }\r\n      }\r\n      this.setMentionData();\r\n    }\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onClick(e) {\r\n    if (this.overlayRef && this.isOpen) {\r\n      if (!this.nativeElement.contains(e.target)) {\r\n        this.hideMention();\r\n      }\r\n    } else if (this.nativeElement.contains(e.target)) {\r\n      this.resetMention();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { mentionSuggestions } = changes;\r\n    if (mentionSuggestions && this.isOpen) {\r\n      this.previousValue = null;\r\n      this.activeIndex = -1;\r\n      this.resetMention(false);\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.mentionAfterMentionInit.emit(this);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    fromEvent(this.el.nativeElement, 'input')\r\n      .pipe(debounceTime(300))\r\n      .subscribe(() => {\r\n        this.resetMention();\r\n      });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.overlayRef) {\r\n      this.overlayRef.dispose();\r\n    }\r\n  }\r\n\r\n  resetMention(emit = true) {\r\n    this.checkMention();\r\n    if (!this.cursorMention) {\r\n      this.hideMention();\r\n      return;\r\n    }\r\n    this.suggestionsFilter(this.cursorMention, emit);\r\n    if (this.mentionSeparatorToggle.suffix || (this.filterSuggestions.length && !this.mentionSeparatorToggle.suffix)) {\r\n      const activeIndex = this.filterSuggestions.indexOf(this.value);\r\n      this.activeIndex = activeIndex >= 0 ? activeIndex : 0;\r\n      this.showMention();\r\n    } else if (this.mentionLoading) {\r\n      this.showMention();\r\n    } else {\r\n      this.hideMention();\r\n    }\r\n  }\r\n\r\n  checkMention() {\r\n    const value = this.nativeElement.value.replace(/[\\r\\n]/g, this.mentionSeparator) || '';\r\n    const selectionStart = this.nativeElement.selectionStart;\r\n    let i = this.mentionTrigger.length;\r\n    while (i >= 0) {\r\n      const startPos = value.lastIndexOf(this.mentionTrigger[i], selectionStart);\r\n      const resPos =\r\n        value.indexOf(this.mentionSeparator, selectionStart) > -1 ? value.indexOf(this.mentionSeparator, selectionStart) : value.length;\r\n      const endPos = this.endWithCursorPos ? selectionStart : resPos;\r\n      const mention = value.substring(startPos, selectionStart);\r\n      if (\r\n        (this.mentionSeparatorToggle.prefix && startPos > 0 && value[startPos - 1] !== this.mentionSeparator) ||\r\n        startPos < 0 ||\r\n        mention.includes(this.mentionTrigger[i], 1) ||\r\n        (this.mentionSeparatorToggle.suffix && mention.includes(this.mentionSeparator))\r\n      ) {\r\n        this.cursorMention = null;\r\n        this.cursorMentionStart = -1;\r\n        this.cursorMentionEnd = -1;\r\n        this.cursorEnd = -1;\r\n        this.value = '';\r\n      } else {\r\n        this.cursorMention = mention[0];\r\n        this.cursorMentionStart = startPos;\r\n        this.cursorMentionEnd = endPos;\r\n        this.cursorEnd = selectionStart;\r\n        this.value = mention.slice(1);\r\n        return;\r\n      }\r\n      i--;\r\n    }\r\n  }\r\n\r\n  hideMention() {\r\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\r\n      this.overlayRef.detach();\r\n      this.cdr.markForCheck();\r\n      this.isOpen = false;\r\n    }\r\n  }\r\n\r\n  showMention() {\r\n    this.attachOverlay();\r\n    this.isOpen = true;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  attachOverlay() {\r\n    if (!this.overlayRef) {\r\n      this.portal = new ComponentPortal(MentionComponent, this.viewContainerRef);\r\n      this.overlayRef = this.overlay.create(this.getOverlayConfig());\r\n    }\r\n    if (this.overlayRef && !this.overlayRef.hasAttached()) {\r\n      this.mentionRef = this.overlayRef.attach(this.portal);\r\n      this.mentionRef.instance.mentionHeaderTemplate = this.mentionHeaderTemplate;\r\n      this.mentionRef.instance.mentionItemTemplate = this.mentionItemTemplate;\r\n      this.mentionRef.instance.mentionNotFoundContent = this.mentionNotFoundContent;\r\n    }\r\n    this.updatePositions();\r\n  }\r\n\r\n  getOverlayConfig() {\r\n    const target = this.el;\r\n    return new OverlayConfig({\r\n      positionStrategy: this.getOverlayPosition(target),\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n      disposeOnNavigation: true,\r\n    });\r\n  }\r\n\r\n  getOverlayPosition(target) {\r\n    const positions = [\r\n      new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\r\n      new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),\r\n    ];\r\n    this.positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(target)\r\n      .withPositions(positions)\r\n      .withFlexibleDimensions(false)\r\n      .withPush(false);\r\n    return this.positionStrategy;\r\n  }\r\n\r\n  updatePositions() {\r\n    const coordinates = getCaretCoordinates(this.nativeElement, this.cursorEnd);\r\n    const top = coordinates.top - this.nativeElement.getBoundingClientRect().height - this.nativeElement.scrollTop;\r\n    const left = coordinates.left - this.nativeElement.scrollLeft;\r\n    this.positionStrategy.withDefaultOffsetX(left).withDefaultOffsetY(top);\r\n    this.positionStrategy.withPositions([...DEFAULT_MENTION_BOTTOM_POSITIONS]);\r\n    this.positionStrategy.apply();\r\n    this.setMentionData();\r\n  }\r\n\r\n  suggestionsFilter(value: string, emit: boolean) {\r\n    if (this.previousValue === value && value !== this.cursorMention[0]) {\r\n      return;\r\n    }\r\n    this.previousValue = value;\r\n    if (emit) {\r\n      this.mentionSearchChange.emit({\r\n        value: this.value,\r\n        trigger: this.cursorMention,\r\n      });\r\n    }\r\n    const searchValue = this.value.toLowerCase();\r\n    this.filterSuggestions = this.mentionSuggestions.filter((suggestion) =>\r\n      this.mentionValueParse(suggestion).toLowerCase().includes(searchValue)\r\n    );\r\n  }\r\n\r\n  setMentionData() {\r\n    Object.assign(this.mentionRef.instance, {\r\n      suggestions: this.filterSuggestions,\r\n      activeIndex: this.activeIndex,\r\n      loading: this.mentionLoading,\r\n      trigger: this,\r\n      position: this.mentionPosition,\r\n    });\r\n  }\r\n\r\n  selectSuggestion(suggestion) {\r\n    const value = this.mentionValueParse(suggestion);\r\n    this.insertMention({\r\n      mention: value,\r\n      startPos: this.cursorMentionStart,\r\n      endPos: this.cursorMentionEnd,\r\n    });\r\n    this.mentionSelectItem.emit(suggestion);\r\n    this.hideMention();\r\n    this.activeIndex = -1;\r\n  }\r\n\r\n  insertMention(mention: Mention) {\r\n    const value: string = this.el.nativeElement.value;\r\n    const insertValue = `${mention.mention.trim()}${this.mentionSeparatorToggle.suffix ? this.mentionSeparator : ''}`;\r\n    const newValue = [value.slice(0, mention.startPos + 1), insertValue, value.slice(mention.endPos, value.length)].join('');\r\n    this.el.nativeElement.value = newValue;\r\n    this.value = newValue;\r\n    if (this.ngModelInstance) {\r\n      this.ngModelInstance.control.setValue(newValue);\r\n    }\r\n  }\r\n\r\n  setPreviousItemActive() {\r\n    this.activeIndex = this.activeIndex - 1 < 0 ? this.filterSuggestions.length - 1 : this.activeIndex - 1;\r\n    this.cdr.markForCheck();\r\n    setTimeout(() => {\r\n      if (this.mentionRef) {\r\n        this.mentionRef.instance.scrollToFocusItem();\r\n      }\r\n    });\r\n  }\r\n\r\n  setNextItemActive() {\r\n    this.activeIndex = this.activeIndex + 1 <= this.filterSuggestions.length - 1 ? this.activeIndex + 1 : 0;\r\n    this.cdr.markForCheck();\r\n    setTimeout(() => {\r\n      if (this.mentionRef) {\r\n        this.mentionRef.instance.scrollToFocusItem();\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoadingModule } from 'ng-devui/loading';\nimport { MentionComponent } from './mention.component';\nimport { MentionDirective } from './mention.directive';\n\n@NgModule({\n  imports: [CommonModule, LoadingModule],\n  declarations: [MentionComponent, MentionDirective],\n  exports: [MentionComponent, MentionDirective],\n})\nexport class MentionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}