{"version":3,"file":"ng-zorro-antd-mention.mjs","sources":["../../components/mention/mention-suggestions.ts","../../components/mention/config.ts","../../components/mention/mention-trigger.ts","../../components/mention/mention.component.ts","../../components/mention/mention.module.ts","../../components/mention/public-api.ts","../../components/mention/ng-zorro-antd-mention.ts"],"sourcesContent":["/**\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 { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[nzMentionSuggestion]',\n  exportAs: 'nzMentionSuggestion'\n})\nexport class NzMentionSuggestionDirective {}\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\nexport const NZ_MENTION_CONFIG = {\n  split: ' '\n};\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 {\n  afterNextRender,\n  ChangeDetectorRef,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  NgZone,\n  Output,\n  signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular } from 'ng-zorro-antd/core/util';\n\nimport { NZ_MENTION_CONFIG } from './config';\nimport { Mention } from './mention.component';\n\n@Directive({\n  selector: 'input[nzMentionTrigger], textarea[nzMentionTrigger]',\n  exportAs: 'nzMentionTrigger',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NzMentionTriggerDirective),\n      multi: true\n    }\n  ],\n  host: {\n    autocomplete: 'off',\n    '(blur)': 'handleBlur()'\n  }\n})\nexport class NzMentionTriggerDirective implements ControlValueAccessor {\n  public readonly elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement> = inject(\n    ElementRef<HTMLInputElement | HTMLTextAreaElement>\n  );\n  private readonly ngZone = inject(NgZone);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly destroyRef = inject(DestroyRef);\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onFocusin = new EventEmitter<FocusEvent>();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onBlur = new EventEmitter<FocusEvent>();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onInput = new EventEmitter<KeyboardEvent>();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onKeydown = new EventEmitter<KeyboardEvent>();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onClick = new EventEmitter<MouseEvent>();\n\n  readonly value = signal<string>('');\n\n  readonly disabled = signal(false);\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.completeEvents();\n    });\n\n    afterNextRender(() => {\n      this.setupEventListener('blur', this.onBlur);\n      this.setupEventListener('focusin', this.onFocusin);\n      this.setupEventListener('input', this.onInput);\n      this.setupEventListener('click', this.onClick);\n      this.setupEventListener('keydown', this.onKeydown);\n    });\n  }\n\n  completeEvents(): void {\n    this.onFocusin.complete();\n    this.onBlur.complete();\n    this.onInput.complete();\n    this.onKeydown.complete();\n    this.onClick.complete();\n  }\n\n  focus(caretPos: number | null = null): void {\n    this.elementRef.nativeElement.focus();\n    this.elementRef.nativeElement.setSelectionRange(caretPos, caretPos);\n  }\n\n  insertMention(mention: Mention): void {\n    const value: string = this.elementRef.nativeElement.value;\n    const insertValue = `${mention.mention}${NZ_MENTION_CONFIG.split}`;\n    const newValue = [\n      value.slice(0, mention.startPos + 1),\n      insertValue,\n      value.slice(mention.endPos, value.length)\n    ].join('');\n    this.elementRef.nativeElement.value = newValue;\n    this.focus(mention.startPos + insertValue.length + 1);\n    this.onChange(newValue);\n    this.value.set(newValue);\n  }\n\n  clear(): void {\n    this.value.set('');\n    this.elementRef.nativeElement.value = '';\n    this.onChange('');\n  }\n\n  writeValue(value: string): void {\n    const parsedValue = typeof value === 'string' ? value : '';\n    this.value.set(parsedValue);\n    this.elementRef.nativeElement.value = parsedValue;\n  }\n\n  onChange: OnChangeType = () => {};\n  onTouched: OnTouchedType = () => {};\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled.set(isDisabled);\n  }\n\n  protected handleBlur(): void {\n    this.onTouched();\n  }\n\n  private setupEventListener<TEvent extends Event>(eventName: string, eventEmitter: EventEmitter<TEvent>): void {\n    fromEventOutsideAngular<TEvent>(this.elementRef.nativeElement, eventName)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        if (eventEmitter.observers.length) {\n          this.ngZone.run(() => {\n            eventEmitter.emit(event);\n            this.cdr.markForCheck();\n          });\n        }\n      });\n  }\n}\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  ConnectionPositionPair,\n  createFlexibleConnectedPositionStrategy,\n  createOverlayRef,\n  createRepositionScrollStrategy,\n  FlexibleConnectedPositionStrategy,\n  OverlayRef,\n  PositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  contentChild,\n  ContentChild,\n  DestroyRef,\n  DOCUMENT,\n  effect,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  signal,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, withLatestFrom } from 'rxjs/operators';\n\nimport {\n  NZ_FORM_VARIANT,\n  NzFormItemFeedbackIconComponent,\n  NzFormNoStatusService,\n  NzFormStatusService\n} from 'ng-zorro-antd/core/form';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport { DEFAULT_MENTION_BOTTOM_POSITIONS, DEFAULT_MENTION_TOP_POSITIONS } from 'ng-zorro-antd/core/overlay';\nimport { NgClassInterface, NzSafeAny, NzStatus, NzValidateStatus, NzVariant } from 'ng-zorro-antd/core/types';\nimport {\n  fromEventOutsideAngular,\n  getCaretCoordinates,\n  getMentions,\n  getStatusClassNames\n} from 'ng-zorro-antd/core/util';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NZ_MENTION_CONFIG } from './config';\nimport { NzMentionSuggestionDirective } from './mention-suggestions';\nimport { NzMentionTriggerDirective } from './mention-trigger';\n\nexport interface MentionOnSearchTypes {\n  value: string;\n  prefix: string;\n}\n\nexport interface Mention {\n  startPos: number;\n  endPos: number;\n  mention: string;\n}\n\nexport type MentionPlacement = 'top' | 'bottom';\n\n@Component({\n  selector: 'nz-mention',\n  exportAs: 'nzMention',\n  template: `\n    <ng-content />\n    <ng-template #suggestions>\n      <div class=\"ant-mentions-dropdown\">\n        <ul class=\"ant-mentions-dropdown-menu\" role=\"menu\" tabindex=\"0\">\n          @for (suggestion of filteredSuggestions; track suggestion) {\n            <li\n              #items\n              class=\"ant-mentions-dropdown-menu-item\"\n              role=\"menuitem\"\n              tabindex=\"-1\"\n              [class.ant-mentions-dropdown-menu-item-active]=\"$index === activeIndex\"\n              [class.ant-mentions-dropdown-menu-item-selected]=\"$index === activeIndex\"\n              (click)=\"selectSuggestion(suggestion)\"\n            >\n              @if (suggestionTemplate) {\n                <ng-container *ngTemplateOutlet=\"suggestionTemplate; context: { $implicit: suggestion }\" />\n              } @else {\n                {{ nzValueWith(suggestion) }}\n              }\n            </li>\n          } @empty {\n            <li class=\"ant-mentions-dropdown-menu-item ant-mentions-dropdown-menu-item-disabled\">\n              @if (nzLoading) {\n                <span><nz-icon nzType=\"loading\" /></span>\n              } @else {\n                <span>\n                  <nz-embed-empty nzComponentName=\"select\" [specificContent]=\"nzNotFoundContent!\" />\n                </span>\n              }\n            </li>\n          }\n        </ul>\n      </div>\n    </ng-template>\n    @if (hasFeedback && !!status) {\n      <nz-form-item-feedback-icon class=\"ant-mentions-suffix\" [status]=\"status\" />\n    }\n    @if (nzAllowClear && hasValue()) {\n      <span class=\"ant-mentions-suffix\">\n        <button type=\"button\" tabindex=\"-1\" class=\"ant-mentions-clear-icon\" (click)=\"clear()\">\n          <ng-template [nzStringTemplateOutlet]=\"nzClearIcon\">\n            <nz-icon nzType=\"close-circle\" nzTheme=\"fill\" />\n          </ng-template>\n        </button>\n      </span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'ant-mentions',\n    '[class.ant-mentions-rtl]': `dir === 'rtl'`,\n    '[class.ant-mentions-borderless]': `finalVariant() === 'borderless'`,\n    '[class.ant-mentions-filled]': `finalVariant() === 'filled'`,\n    '[class.ant-mentions-underlined]': `finalVariant() === 'underlined'`,\n    '[class.ant-mentions-focused]': `focused()`,\n    '[class.ant-mentions-disabled]': `disabled()`\n  },\n  imports: [\n    NgTemplateOutlet,\n    NzIconModule,\n    NzEmptyModule,\n    NzFormItemFeedbackIconComponent,\n    NzStringTemplateOutletDirective\n  ]\n})\nexport class NzMentionComponent implements OnInit, AfterViewInit, OnChanges {\n  private ngZone = inject(NgZone);\n  private directionality = inject(Directionality);\n  private cdr = inject(ChangeDetectorRef);\n  private injector = inject(Injector);\n  private viewContainerRef = inject(ViewContainerRef);\n  private elementRef = inject(ElementRef);\n  private renderer = inject(Renderer2);\n  private destroyRef = inject(DestroyRef);\n  @Input() nzValueWith: (value: NzSafeAny) => string = value => value;\n  @Input() nzPrefix: string | string[] = '@';\n  @Input({ transform: booleanAttribute }) nzLoading = false;\n  @Input() nzNotFoundContent: string = '无匹配结果，轻敲空格完成输入';\n  @Input() nzPlacement: MentionPlacement = 'bottom';\n  @Input() nzSuggestions: NzSafeAny[] = [];\n  @Input() nzStatus: NzStatus = '';\n  @Input() nzVariant: NzVariant | undefined = undefined;\n  @Input({ transform: booleanAttribute }) nzAllowClear = false;\n  @Input() nzClearIcon: TemplateRef<NzSafeAny> | null = null;\n  @Output() readonly nzOnSelect = new EventEmitter<NzSafeAny>();\n  @Output() readonly nzOnSearchChange = new EventEmitter<MentionOnSearchTypes>();\n  @Output() readonly nzOnClear = new EventEmitter<void>();\n\n  @ViewChild(TemplateRef, { static: false }) suggestionsTemp?: TemplateRef<void>;\n  @ViewChildren('items', { read: ElementRef })\n  items!: QueryList<ElementRef>;\n\n  @ContentChild(NzMentionSuggestionDirective, { static: false, read: TemplateRef })\n  set suggestionChild(value: TemplateRef<{ $implicit: NzSafeAny }>) {\n    if (value) {\n      this.suggestionTemplate = value;\n    }\n  }\n\n  readonly trigger = contentChild.required(NzMentionTriggerDirective);\n\n  isOpen = false;\n  filteredSuggestions: string[] = [];\n  suggestionTemplate: TemplateRef<{ $implicit: NzSafeAny }> | null = null;\n  activeIndex = -1;\n  dir: Direction = 'ltr';\n  // status\n  prefixCls: string = 'ant-mentions';\n  statusCls: NgClassInterface = {};\n  status: NzValidateStatus = '';\n  hasFeedback: boolean = false;\n  readonly focused = signal(false);\n\n  readonly disabled = computed(() => {\n    return this.trigger().disabled();\n  });\n  readonly hasValue = computed(() => {\n    return !!this.trigger()?.value().trim();\n  });\n\n  private previousValue: string | null = null;\n  private cursorMention: string | null = null;\n  private cursorMentionStart?: number;\n  private cursorMentionEnd?: number;\n  private overlayRef: OverlayRef | null = null;\n  private portal?: TemplatePortal<void>;\n  private positionStrategy!: FlexibleConnectedPositionStrategy;\n  private overlayOutsideClickSubscription!: Subscription;\n  private document: Document = inject(DOCUMENT);\n\n  private get triggerNativeElement(): HTMLTextAreaElement | HTMLInputElement {\n    return this.trigger().elementRef.nativeElement;\n  }\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  private nzFormStatusService = inject(NzFormStatusService, { optional: true });\n  private nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true });\n\n  private readonly formVariant = inject(NZ_FORM_VARIANT, { optional: true });\n\n  protected readonly variant = signal<NzVariant | undefined>(this.nzVariant);\n\n  protected readonly finalVariant = computed(() => this.variant() || this.formVariant?.() || 'outlined');\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.closeDropdown();\n    });\n\n    effect(() => {\n      const trigger = this.trigger();\n      if (trigger) {\n        this.bindTriggerEvents();\n        this.closeDropdown();\n        this.overlayRef = null;\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.nzFormStatusService?.formStatusChanges\n      .pipe(\n        distinctUntilChanged((pre, cur) => {\n          return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n        }),\n        withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : observableOf(false)),\n        map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe(({ status, hasFeedback }) => {\n        this.setStatusStyles(status, hasFeedback);\n      });\n    this.dir = this.directionality.value;\n    this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n      this.dir = direction;\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzSuggestions, nzStatus, nzVariant } = changes;\n    if (nzSuggestions) {\n      if (this.isOpen) {\n        this.previousValue = null;\n        this.activeIndex = -1;\n        this.resetDropdown(false);\n      }\n    }\n    if (nzStatus) {\n      this.setStatusStyles(this.nzStatus, this.hasFeedback);\n    }\n    if (nzVariant) {\n      this.variant.set(nzVariant.currentValue);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.items.changes\n      .pipe(\n        startWith(this.items),\n        switchMap(() => {\n          const items = this.items.toArray();\n          return merge(...items.map(item => fromEventOutsideAngular<MouseEvent>(item.nativeElement, 'mousedown')));\n        })\n      )\n      .subscribe(event => {\n        event.preventDefault();\n      });\n  }\n\n  closeDropdown(): void {\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\n      this.overlayRef.detach();\n      this.overlayOutsideClickSubscription.unsubscribe();\n      this.isOpen = false;\n      this.cdr.markForCheck();\n    }\n  }\n\n  openDropdown(): void {\n    this.attachOverlay();\n    this.isOpen = true;\n    this.cdr.markForCheck();\n  }\n\n  getMentions(): string[] {\n    return this.trigger() ? getMentions(this.trigger().value(), this.nzPrefix) : [];\n  }\n\n  selectSuggestion(suggestion: string | {}): void {\n    const value = this.nzValueWith(suggestion);\n    this.trigger().insertMention({\n      mention: value,\n      startPos: this.cursorMentionStart!,\n      endPos: this.cursorMentionEnd!\n    });\n    this.nzOnSelect.emit(suggestion);\n    this.closeDropdown();\n    this.activeIndex = -1;\n  }\n\n  clear(): void {\n    this.closeDropdown();\n    this.trigger().clear();\n    this.nzOnClear.emit();\n  }\n\n  private handleInput(event: KeyboardEvent): void {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    this.trigger().onChange(target.value);\n    this.trigger().value.set(target.value);\n    this.resetDropdown();\n  }\n\n  private handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    if (this.isOpen && keyCode === ENTER && this.activeIndex !== -1 && this.filteredSuggestions.length) {\n      this.selectSuggestion(this.filteredSuggestions[this.activeIndex]);\n      event.preventDefault();\n    } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n      this.resetDropdown();\n      event.stopPropagation();\n    } else {\n      if (this.isOpen && (keyCode === TAB || keyCode === ESCAPE)) {\n        this.closeDropdown();\n        return;\n      }\n\n      if (this.isOpen && keyCode === UP_ARROW) {\n        this.setPreviousItemActive();\n        event.preventDefault();\n        event.stopPropagation();\n      }\n\n      if (this.isOpen && keyCode === DOWN_ARROW) {\n        this.setNextItemActive();\n        event.preventDefault();\n        event.stopPropagation();\n      }\n    }\n  }\n\n  private handleClick(): void {\n    this.resetDropdown(false);\n  }\n\n  private bindTriggerEvents(): void {\n    this.trigger().onFocusin.subscribe(() => this.focused.set(true));\n    this.trigger().onBlur.subscribe(() => this.focused.set(false));\n    this.trigger().onInput.subscribe((e: KeyboardEvent) => this.handleInput(e));\n    this.trigger().onKeydown.subscribe((e: KeyboardEvent) => this.handleKeydown(e));\n    this.trigger().onClick.subscribe(() => this.handleClick());\n  }\n\n  private suggestionsFilter(value: string, emit: boolean): void {\n    const suggestions = value.substring(1);\n    /**\n     * Should always emit (nzOnSearchChange) when value empty\n     *\n     * @[something]... @[empty]... @[empty]\n     *     ^             ^           ^\n     * preValue        preValue  (should emit)\n     */\n    if (this.previousValue === value && value !== this.cursorMention![0]) {\n      return;\n    }\n    this.previousValue = value;\n    if (emit) {\n      this.nzOnSearchChange.emit({\n        value: this.cursorMention!.substring(1),\n        prefix: this.cursorMention![0]\n      });\n    }\n    const searchValue = suggestions.toLowerCase();\n    this.filteredSuggestions = this.nzSuggestions.filter(suggestion =>\n      this.nzValueWith(suggestion).toLowerCase().includes(searchValue)\n    );\n  }\n\n  private resetDropdown(emit: boolean = true): void {\n    this.resetCursorMention();\n    if (typeof this.cursorMention !== 'string' || !this.canOpen()) {\n      this.closeDropdown();\n      return;\n    }\n    this.suggestionsFilter(this.cursorMention, emit);\n    const activeIndex = this.filteredSuggestions.indexOf(this.cursorMention.substring(1));\n    this.activeIndex = activeIndex >= 0 ? activeIndex : 0;\n    this.openDropdown();\n  }\n\n  private setNextItemActive(): void {\n    this.activeIndex = this.activeIndex + 1 <= this.filteredSuggestions.length - 1 ? this.activeIndex + 1 : 0;\n    this.cdr.markForCheck();\n    this.scrollToFocusItem();\n  }\n\n  private setPreviousItemActive(): void {\n    this.activeIndex = this.activeIndex - 1 < 0 ? this.filteredSuggestions.length - 1 : this.activeIndex - 1;\n    this.cdr.markForCheck();\n    this.scrollToFocusItem();\n  }\n\n  private scrollToFocusItem(): void {\n    if (this.focusItemElement) {\n      this.focusItemElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n    }\n  }\n\n  private canOpen(): boolean {\n    const element: HTMLInputElement | HTMLTextAreaElement = this.triggerNativeElement;\n    return !element.readOnly && !element.disabled;\n  }\n\n  private resetCursorMention(): void {\n    const value = this.triggerNativeElement.value.replace(/[\\r\\n]/g, NZ_MENTION_CONFIG.split) || '';\n    const selectionStart = this.triggerNativeElement.selectionStart!;\n    const prefix = typeof this.nzPrefix === 'string' ? [this.nzPrefix] : this.nzPrefix;\n    let i = prefix.length;\n    while (i >= 0) {\n      const startPos = value.lastIndexOf(prefix[i], selectionStart);\n      const endPos =\n        value.indexOf(NZ_MENTION_CONFIG.split, selectionStart) > -1\n          ? value.indexOf(NZ_MENTION_CONFIG.split, selectionStart)\n          : value.length;\n      const mention = value.substring(startPos, endPos);\n      if (\n        (startPos > 0 && value[startPos - 1] !== NZ_MENTION_CONFIG.split) ||\n        startPos < 0 ||\n        mention.includes(prefix[i], 1) ||\n        mention.includes(NZ_MENTION_CONFIG.split)\n      ) {\n        this.cursorMention = null;\n        this.cursorMentionStart = -1;\n        this.cursorMentionEnd = -1;\n      } else {\n        this.cursorMention = mention;\n        this.cursorMentionStart = startPos;\n        this.cursorMentionEnd = endPos;\n        return;\n      }\n      i--;\n    }\n  }\n\n  private updatePositions(): void {\n    const coordinates = getCaretCoordinates(this.triggerNativeElement, this.cursorMentionStart!);\n    const top =\n      coordinates.top -\n      this.triggerNativeElement.getBoundingClientRect().height -\n      this.triggerNativeElement.scrollTop +\n      (this.nzPlacement === 'bottom' ? coordinates.height - 6 : -6);\n    const left = coordinates.left - this.triggerNativeElement.scrollLeft;\n    this.positionStrategy.withDefaultOffsetX(left).withDefaultOffsetY(top);\n    if (this.nzPlacement === 'bottom') {\n      this.positionStrategy.withPositions([...DEFAULT_MENTION_BOTTOM_POSITIONS]);\n    }\n    if (this.nzPlacement === 'top') {\n      this.positionStrategy.withPositions([...DEFAULT_MENTION_TOP_POSITIONS]);\n    }\n    this.positionStrategy.apply();\n  }\n\n  private subscribeOverlayOutsideClick(): Subscription {\n    const canCloseDropdown = (event: MouseEvent | TouchEvent): boolean => {\n      const clickTarget = event.target as HTMLElement;\n      return (\n        this.isOpen &&\n        clickTarget !== this.triggerNativeElement &&\n        !this.overlayRef?.overlayElement.contains(clickTarget)\n      );\n    };\n\n    const subscription = new Subscription();\n\n    subscription.add(\n      this.overlayRef!.outsidePointerEvents().subscribe(event => canCloseDropdown(event) && this.closeDropdown())\n    );\n\n    subscription.add(\n      fromEventOutsideAngular<TouchEvent>(this.document, 'touchend').subscribe(\n        event => canCloseDropdown(event) && this.ngZone.run(() => this.closeDropdown())\n      )\n    );\n\n    return subscription;\n  }\n\n  private attachOverlay(): void {\n    if (!this.overlayRef) {\n      this.portal = new TemplatePortal(this.suggestionsTemp!, this.viewContainerRef);\n      this.overlayRef = createOverlayRef(this.injector, {\n        positionStrategy: this.getOverlayPosition(),\n        scrollStrategy: createRepositionScrollStrategy(this.injector),\n        disposeOnNavigation: true\n      });\n    }\n    if (this.overlayRef && !this.overlayRef.hasAttached()) {\n      this.overlayRef.attach(this.portal);\n      this.overlayOutsideClickSubscription = this.subscribeOverlayOutsideClick();\n    }\n    this.updatePositions();\n  }\n\n  private getOverlayPosition(): PositionStrategy {\n    return (this.positionStrategy = createFlexibleConnectedPositionStrategy(this.injector, this.trigger().elementRef)\n      .withPositions([\n        new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n        new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n      ])\n      .withFlexibleDimensions(false)\n      .withPush(false));\n  }\n\n  private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n    // set inner status\n    this.status = status;\n    this.hasFeedback = hasFeedback;\n    this.cdr.markForCheck();\n    // render status if nzStatus is set\n    this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n    Object.keys(this.statusCls).forEach(status => {\n      if (this.statusCls[status]) {\n        this.renderer.addClass(this.elementRef.nativeElement, status);\n      } else {\n        this.renderer.removeClass(this.elementRef.nativeElement, status);\n      }\n    });\n  }\n}\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 { NgModule } from '@angular/core';\n\nimport { NzMentionSuggestionDirective } from './mention-suggestions';\nimport { NzMentionTriggerDirective } from './mention-trigger';\nimport { NzMentionComponent } from './mention.component';\n\nconst COMPONENTS = [NzMentionComponent, NzMentionTriggerDirective, NzMentionSuggestionDirective];\n\n@NgModule({\n  imports: [...COMPONENTS],\n  exports: [...COMPONENTS]\n})\nexport class NzMentionModule {}\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\nexport * from './mention.module';\nexport * from './mention.component';\nexport * from './mention-trigger';\nexport * from './mention-suggestions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}