UNPKG

ng-devui

Version:

DevUI components based on Angular

1 lines 46 kB
{"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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"}