{"version":3,"file":"ui-vts-kit-ng-vts-mention.mjs","sources":["../../components/mention/mention-suggestions.ts","../../components/mention/config.ts","../../components/mention/mention.service.ts","../../components/mention/mention-trigger.ts","../../components/mention/mention.component.ts","../../components/mention/mention.module.ts","../../components/mention/public-api.ts","../../components/mention/ui-vts-kit-ng-vts-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: '[vtsMentionSuggestion]',\n  exportAs: 'vtsMentionSuggestion'\n})\nexport class VtsMentionSuggestionDirective {}\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 VTS_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 { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { VtsMentionTriggerDirective } from './mention-trigger';\n\n@Injectable()\nexport class VtsMentionService implements OnDestroy {\n  private trigger?: VtsMentionTriggerDirective;\n  private triggerChange$ = new Subject<VtsMentionTriggerDirective>();\n\n  triggerChanged(): Observable<VtsMentionTriggerDirective> {\n    return this.triggerChange$.asObservable();\n  }\n\n  registerTrigger(trigger: VtsMentionTriggerDirective): void {\n    if (this.trigger !== trigger) {\n      this.trigger = trigger;\n      this.triggerChange$.next(trigger);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.triggerChange$.complete();\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 {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  ExistingProvider,\n  forwardRef,\n  OnDestroy\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OnChangeType, OnTouchedType } from '@ui-vts-kit/ng-vts/core/types';\nimport { VTS_MENTION_CONFIG } from './config';\n\nimport { Mention } from './mention.component';\nimport { VtsMentionService } from './mention.service';\n\nexport const VTS_MENTION_TRIGGER_ACCESSOR: ExistingProvider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => VtsMentionTriggerDirective),\n  multi: true\n};\n\n@Directive({\n  selector: 'input[vtsMentionTrigger], textarea[vtsMentionTrigger]',\n  exportAs: 'vtsMentionTrigger',\n  providers: [VTS_MENTION_TRIGGER_ACCESSOR],\n  host: {\n    autocomplete: 'off',\n    '(focusin)': 'onFocusin.emit()',\n    '(blur)': 'onBlur.emit()',\n    '(input)': 'onInput.emit($event)',\n    '(keydown)': 'onKeydown.emit($event)',\n    '(click)': 'onClick.emit($event)'\n  }\n})\nexport class VtsMentionTriggerDirective implements ControlValueAccessor, OnDestroy, AfterViewInit {\n  onChange: OnChangeType = () => {};\n  onTouched: OnTouchedType = () => {};\n\n  readonly onFocusin: EventEmitter<void> = new EventEmitter();\n  readonly onBlur: EventEmitter<void> = new EventEmitter();\n  readonly onInput: EventEmitter<KeyboardEvent> = new EventEmitter();\n  readonly onKeydown: EventEmitter<KeyboardEvent> = new EventEmitter();\n  readonly onClick: EventEmitter<MouseEvent> = new EventEmitter();\n  value?: string;\n\n  constructor(public el: ElementRef, private vtsMentionService: VtsMentionService) {}\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): void {\n    this.el.nativeElement.focus();\n    this.el.nativeElement.setSelectionRange(caretPos, caretPos);\n  }\n\n  insertMention(mention: Mention): void {\n    const value: string = this.el.nativeElement.value;\n    const insertValue = `${mention.mention}${VTS_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.el.nativeElement.value = newValue;\n    this.focus(mention.startPos + insertValue.length + 1);\n    this.onChange(newValue);\n    this.value = newValue;\n  }\n\n  writeValue(value: string): void {\n    this.value = value;\n    if (typeof value === 'string') {\n      this.el.nativeElement.value = value;\n    } else {\n      this.el.nativeElement.value = '';\n    }\n  }\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  ngAfterViewInit(): void {\n    this.vtsMentionService.registerTrigger(this);\n  }\n\n  ngOnDestroy(): void {\n    this.completeEvents();\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 {\n  DOWN_ARROW,\n  ENTER,\n  ESCAPE,\n  LEFT_ARROW,\n  RIGHT_ARROW,\n  TAB,\n  UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef\n} from '@angular/core';\nimport {\n  DEFAULT_MENTION_BOTTOM_POSITIONS,\n  DEFAULT_MENTION_TOP_POSITIONS\n} from '@ui-vts-kit/ng-vts/core/overlay';\nimport { BooleanInput, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { getCaretCoordinates, getMentions, InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\nimport { fromEvent, merge, Subscription } from 'rxjs';\n\nimport { VTS_MENTION_CONFIG } from './config';\nimport { VtsMentionSuggestionDirective } from './mention-suggestions';\nimport { VtsMentionTriggerDirective } from './mention-trigger';\nimport { VtsMentionService } from './mention.service';\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: 'vts-mention',\n  exportAs: 'vtsMention',\n  template: `\n    <ng-content></ng-content>\n    <ng-template #suggestions>\n      <ul class=\"vts-mention-dropdown\">\n        <li\n          #items\n          class=\"vts-mention-dropdown-item\"\n          *ngFor=\"let suggestion of filteredSuggestions; let i = index\"\n          [class.focus]=\"i === activeIndex\"\n          (mousedown)=\"$event.preventDefault()\"\n          (click)=\"selectSuggestion(suggestion)\"\n        >\n          <ng-container *ngIf=\"suggestionTemplate; else defaultSuggestion\">\n            <ng-container\n              *ngTemplateOutlet=\"suggestionTemplate; context: { $implicit: suggestion }\"\n            ></ng-container>\n          </ng-container>\n          <ng-template #defaultSuggestion>\n            {{ vtsValueWith(suggestion) }}\n          </ng-template>\n        </li>\n        <li\n          class=\"vts-mention-dropdown-notfound vts-mention-dropdown-item\"\n          *ngIf=\"filteredSuggestions.length === 0\"\n        >\n          <span *ngIf=\"vtsLoading\"><i vts-icon vtsType=\"Sync\"></i></span>\n          <span *ngIf=\"!vtsLoading\">{{ vtsNoResult }}</span>\n        </li>\n      </ul>\n    </ng-template>\n  `,\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [VtsMentionService]\n})\nexport class VtsMentionComponent implements OnDestroy, OnInit, OnChanges {\n  static ngAcceptInputType_vtsLoading: BooleanInput;\n\n  @Input() vtsValueWith: (value: VtsSafeAny) => string = value => value;\n  @Input() vtsPrefix: string | string[] = '@';\n  @Input() @InputBoolean() vtsLoading = false;\n  @Input() vtsNoResult: string = '无匹配结果，轻敲空格完成输入';\n  @Input() vtsPlacement: MentionPlacement = 'bottom';\n  @Input() vtsSuggestions: VtsSafeAny[] = [];\n  @Output() readonly vtsOnSelect: EventEmitter<VtsSafeAny> = new EventEmitter();\n  @Output()\n  readonly vtsOnSearchChange: EventEmitter<MentionOnSearchTypes> = new EventEmitter();\n\n  trigger!: VtsMentionTriggerDirective;\n  @ViewChild(TemplateRef, { static: false })\n  suggestionsTemp?: TemplateRef<void>;\n  @ViewChildren('items', { read: ElementRef })\n  items!: QueryList<ElementRef>;\n\n  @ContentChild(VtsMentionSuggestionDirective, {\n    static: false,\n    read: TemplateRef\n  })\n  set suggestionChild(value: TemplateRef<{ $implicit: VtsSafeAny }>) {\n    if (value) {\n      this.suggestionTemplate = value;\n    }\n  }\n\n  isOpen = false;\n  filteredSuggestions: string[] = [];\n  suggestionTemplate: TemplateRef<{ $implicit: VtsSafeAny }> | null = null;\n  activeIndex = -1;\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\n  private get triggerNativeElement(): HTMLTextAreaElement | HTMLInputElement {\n    return this.trigger.el.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  constructor(\n    @Optional() @Inject(DOCUMENT) private ngDocument: VtsSafeAny,\n    private cdr: ChangeDetectorRef,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    private vtsMentionService: VtsMentionService\n  ) {}\n\n  ngOnInit(): void {\n    this.vtsMentionService.triggerChanged().subscribe(trigger => {\n      this.trigger = trigger;\n      this.bindTriggerEvents();\n      this.closeDropdown();\n      this.overlayRef = null;\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.hasOwnProperty('vtsSuggestions')) {\n      if (this.isOpen) {\n        this.previousValue = null;\n        this.activeIndex = -1;\n        this.resetDropdown(false);\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.closeDropdown();\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.vtsPrefix) : [];\n  }\n\n  selectSuggestion(suggestion: string | {}): void {\n    const value = this.vtsValueWith(suggestion);\n    this.trigger.insertMention({\n      mention: value,\n      startPos: this.cursorMentionStart!,\n      endPos: this.cursorMentionEnd!\n    });\n    this.vtsOnSelect.emit(suggestion);\n    this.closeDropdown();\n    this.activeIndex = -1;\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 = target.value;\n    this.resetDropdown();\n  }\n\n  private handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    if (\n      this.isOpen &&\n      keyCode === ENTER &&\n      this.activeIndex !== -1 &&\n      this.filteredSuggestions.length\n    ) {\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();\n  }\n\n  private bindTriggerEvents(): void {\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 (vtsOnSearchChange) 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.vtsOnSearchChange.emit({\n        value: this.cursorMention!.substring(1),\n        prefix: this.cursorMention![0]\n      });\n    }\n    const searchValue = suggestions.toLowerCase();\n    this.filteredSuggestions = this.vtsSuggestions.filter(suggestion =>\n      this.vtsValueWith(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 =\n      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 =\n      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({\n        behavior: 'smooth',\n        block: 'center',\n        inline: 'nearest'\n      });\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 =\n      this.triggerNativeElement.value.replace(/[\\r\\n]/g, VTS_MENTION_CONFIG.split) || '';\n    const selectionStart = this.triggerNativeElement.selectionStart!;\n    const prefix = typeof this.vtsPrefix === 'string' ? [this.vtsPrefix] : this.vtsPrefix;\n    let i = prefix.length;\n    while (i >= 0) {\n      const startPos = value.lastIndexOf(prefix[i], selectionStart);\n      const endPos =\n        value.indexOf(VTS_MENTION_CONFIG.split, selectionStart) > -1\n          ? value.indexOf(VTS_MENTION_CONFIG.split, selectionStart)\n          : value.length;\n      const mention = value.substring(startPos, endPos);\n      if (\n        (startPos > 0 && value[startPos - 1] !== VTS_MENTION_CONFIG.split) ||\n        startPos < 0 ||\n        mention.includes(prefix[i], 1) ||\n        mention.includes(VTS_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.vtsPlacement === 'bottom' ? coordinates.height - 6 : -6);\n    const left = coordinates.left - this.triggerNativeElement.scrollLeft;\n    this.positionStrategy.withDefaultOffsetX(left).withDefaultOffsetY(top);\n    if (this.vtsPlacement === 'bottom') {\n      this.positionStrategy.withPositions([...DEFAULT_MENTION_BOTTOM_POSITIONS]);\n    }\n    if (this.vtsPlacement === 'top') {\n      this.positionStrategy.withPositions([...DEFAULT_MENTION_TOP_POSITIONS]);\n    }\n    this.positionStrategy.apply();\n  }\n\n  private subscribeOverlayOutsideClick(): Subscription {\n    return merge<MouseEvent | TouchEvent>(\n      this.overlayRef!.outsidePointerEvents(),\n      fromEvent<TouchEvent>(this.ngDocument, 'touchend')\n    ).subscribe((event: MouseEvent | TouchEvent) => {\n      const clickTarget = event.target as HTMLElement;\n      if (\n        this.isOpen &&\n        clickTarget !== this.trigger.el.nativeElement &&\n        !this.overlayRef?.overlayElement.contains(clickTarget)\n      ) {\n        this.closeDropdown();\n      }\n    });\n  }\n\n  private attachOverlay(): void {\n    if (!this.overlayRef) {\n      this.portal = new TemplatePortal(this.suggestionsTemp!, this.viewContainerRef);\n      this.overlayRef = this.overlay.create(this.getOverlayConfig());\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 getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this.getOverlayPosition(),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      disposeOnNavigation: true\n    });\n  }\n\n  private getOverlayPosition(): PositionStrategy {\n    const positions = [\n      new ConnectionPositionPair(\n        { originX: 'start', originY: 'bottom' },\n        { overlayX: 'start', overlayY: 'top' }\n      ),\n      new ConnectionPositionPair(\n        { originX: 'start', originY: 'top' },\n        { overlayX: 'start', overlayY: 'bottom' }\n      )\n    ];\n    this.positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.trigger.el)\n      .withPositions(positions)\n      .withFlexibleDimensions(false)\n      .withPush(false);\n    return this.positionStrategy;\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 { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { VtsIconModule } from '@ui-vts-kit/ng-vts/icon';\nimport { VtsMentionSuggestionDirective } from './mention-suggestions';\nimport { VtsMentionTriggerDirective } from './mention-trigger';\nimport { VtsMentionComponent } from './mention.component';\n\nconst COMPONENTS = [VtsMentionComponent, VtsMentionTriggerDirective, VtsMentionSuggestionDirective];\n\n@NgModule({\n  imports: [BidiModule, CommonModule, FormsModule, OverlayModule, VtsIconModule],\n  declarations: [...COMPONENTS],\n  exports: [...COMPONENTS]\n})\nexport class VtsMentionModule {}\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';\nexport * from './mention.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VtsMentionService","i2.VtsMentionService"],"mappings":"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"}