{"version":3,"file":"usitsdasdesign-dds-ng-suggestions-tags-input.mjs","sources":["../../src/app/dds/suggestions-tags-input/suggestions-tags-input/constants.ts","../../src/app/dds/suggestions-tags-input/suggestions-tags-input/suggestions-tags-input.component.ts","../../src/app/dds/suggestions-tags-input/suggestions-tags-input/suggestions-tags-input.component.html","../../src/app/dds/suggestions-tags-input/suggestions-tags-input.module.ts","../../src/app/dds/suggestions-tags-input/usitsdasdesign-dds-ng-suggestions-tags-input.ts"],"sourcesContent":["export const MIN_SEARCH_SYMBOLS = 1;\nexport const INDENT = 8;\nexport const SHIFT = 0;\nexport const DOUBLE_TAG_TIME_INFO = 1000;\nexport const DEFAULT_DEBOUNCE_TIME = 300;\nexport const ARIA_LISTBOX = 'dialog';\nexport const WRAP_ACTIVE_CLASS = 'dds-suggestions-tags-input__wrap_active';\nexport const DEFAULT_TAG_REMOVE_BTN_ICON = 'dds-icon_close';\nexport const DEFAULT_INFO_BTN_ICON = 'dds-icon_info';\nexport const DEFAULT_HEADING_PROP = 'heading';\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  Self,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ContextMenuComponent, ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { coerceBooleanProperty, generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { DescriptionType } from '@usitsdasdesign/dds-ng/input';\nimport { AdditionalClass, ErrorState, KeyCodes, LabelPosition, PositionState, Size, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { HighlightModule } from '@usitsdasdesign/dds-ng/shared/highlight';\nimport { I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { TagComponent, TagsModule } from '@usitsdasdesign/dds-ng/tags';\nimport { InvokeType, TooltipModule, TooltipType } from '@usitsdasdesign/dds-ng/tooltip';\nimport { Subject, timer } from 'rxjs';\nimport { debounce, take, takeUntil, tap } from 'rxjs/operators';\nimport { SuggestionsTagsItemOptions } from '../typings';\nimport {\n  ARIA_LISTBOX,\n  DEFAULT_DEBOUNCE_TIME,\n  DEFAULT_HEADING_PROP,\n  DEFAULT_INFO_BTN_ICON,\n  DEFAULT_TAG_REMOVE_BTN_ICON,\n  DOUBLE_TAG_TIME_INFO,\n  INDENT,\n  MIN_SEARCH_SYMBOLS,\n  SHIFT,\n  WRAP_ACTIVE_CLASS,\n} from './constants';\n\nconst SuggestionsTagsInputBase: DestroyCtor & I18nCtor & FormAccessorCtor & ErrorStateCtor = DestroyMixin(\n  I18nMixin(FormAccessorMixin(ErrorStateMixin()))\n);\n\n@Component({\n  selector: 'dds-suggestions-tags-input',\n  templateUrl: './suggestions-tags-input.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, StickerModule, TooltipModule, TagsModule, FocusHandlerModule, ContextMenuModule, HighlightModule],\n})\nexport class SuggestionsTagsInputComponent extends SuggestionsTagsInputBase implements OnInit, OnChanges {\n  // Binds the disabled class to the host element.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Binds the data-is-empty attribute to the host element.\n  @HostBinding(`attr.data-is-empty`) isEmptyValue: boolean; // WalkMe\n\n  // ViewChild reference to the sticker directive.\n  @ViewChild('stickerDir') sticker: StickerDirective;\n\n  // ViewChild reference to the search field input element.\n  @ViewChild('searchField') searchField: ElementRef<HTMLInputElement>;\n\n  // ViewChild reference to the wrap input element.\n  @ViewChild('wrap') wrap: ElementRef<HTMLInputElement>;\n\n  // ViewChildren reference to the tags components.\n  @ViewChildren('tags') tags: QueryList<TagComponent>;\n\n  // Label for the input field.\n  @Input() label: string | undefined;\n\n  // Position of the label.\n  @Input() labelPosition: LabelPosition | string | undefined = this.ddsConfig.getConfig().labelPosition;\n\n  // Size of the input field.\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n\n  // Description for the input field.\n  @Input() description: string | undefined;\n\n  // Type of the description.\n  @Input() descriptionType: DescriptionType | string | undefined;\n\n  // Maximum height of the input field.\n  @Input() maxHeight: string | undefined;\n\n  // Indicates if there is an error.\n  @Input() isError: boolean | undefined;\n\n  // Indicates if the input field is in inverse mode.\n  @Input() isInverse: boolean | undefined;\n\n  // Indicates if the list is sortable.\n  @Input() isSortableList: boolean | undefined = true;\n\n  // Error message to display.\n  @Input() errorMessage: string | undefined;\n\n  // Custom CSS class for the input field.\n  @Input() customClass: string | undefined;\n\n  // Icon for the tag remove button.\n  @Input() tagRemoveBtnIcon: string | undefined = DEFAULT_TAG_REMOVE_BTN_ICON;\n\n  // State of the error.\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n\n  // Minimum number of symbols required for search.\n  @Input() minSearchSymbols: number | undefined = MIN_SEARCH_SYMBOLS;\n\n  // Maximum length of the input value.\n  @Input() maxLength: number | undefined;\n\n  // Debounce time for the input field.\n  @Input() debounceTime: number | undefined = DEFAULT_DEBOUNCE_TIME;\n\n  // Indicates if the input field is responsive.\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n\n  // Indicates if the popup should open on focus.\n  @Input() isOpenPopupOnFocus: boolean | undefined = true;\n\n  // Indicates if the input field is required.\n  @Input() isRequired: boolean | undefined = false;\n\n  // Indicates if only selection is allowed.\n  @Input() isSelectOnly: boolean | undefined = false;\n\n  // Placeholder text for the input field.\n  @Input() placeholder: string | undefined = '';\n\n  // ARIA label for the input field.\n  @Input() ariaLabel: string | undefined;\n\n  // Property to use for heading.\n  @Input() headingProp: string | undefined = DEFAULT_HEADING_PROP;\n\n  // Indicates if the input field is loading.\n  @Input() isLoading: boolean | undefined = false;\n\n  // Indicates if the input field is loading with a counter.\n  @Input() isLoadingWithCounter: boolean | undefined = false;\n\n  // Template for the loading state.\n  @Input() loadingTemplate: TemplateRef<any> | undefined;\n\n  // Template for the options.\n  @Input() optionsTemplate: TemplateRef<any> | undefined;\n\n  // List of suggestions for the search.\n  @Input()\n  set searchList(list: SuggestionsTagsItemOptions[] | string[] | undefined) {\n    this._searchList = list?.map((item) => {\n      if (typeof item === 'string') {\n        return {\n          value: item,\n          heading: item,\n        };\n      } else {\n        return item;\n      }\n    });\n  }\n  get searchList(): SuggestionsTagsItemOptions[] | undefined {\n    return this._searchList;\n  }\n\n  // Value of the input field.\n  @Input()\n  get value(): string[] | string | undefined {\n    return this._value;\n  }\n  set value(value: string[] | string | any | undefined) {\n    if (value instanceof Array) {\n      this._value = value.map((item) => {\n        if (typeof item === 'object') {\n          return item[this.headingProp];\n        } else {\n          return item;\n        }\n      });\n    } else {\n      this._value = value;\n      this.prevVal = value;\n    }\n    this.checkValueType(this._value);\n    this.checkIsEmpty();\n  }\n\n  // Width of the sticker.\n  @Input() stickerWidth: number | string | undefined;\n\n  // Maximum height of the sticker.\n  @Input() stickerMaxHeight: number | string | undefined;\n\n  // Custom CSS class for the sticker.\n  @Input() stickerCustomClass: string | undefined;\n\n  // Shift value for the sticker.\n  @Input() stickerShift: number | undefined = SHIFT;\n\n  // Indent value for the sticker.\n  @Input() stickerIndent: number | undefined = INDENT;\n\n  // Position of the sticker.\n  @Input() stickerPosition: PositionState | string | undefined = PositionState.bottom;\n\n  // Indicates if the sticker is dynamic.\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  // Icon for the tooltip.\n  @Input() tooltipIcon: string | undefined = DEFAULT_INFO_BTN_ICON;\n\n  // Custom CSS class for the tooltip.\n  @Input() tooltipCustomClass: string | undefined;\n\n  // Width of the tooltip.\n  @Input() tooltipWidth: number | undefined;\n\n  // Shift value for the tooltip.\n  @Input() tooltipShift: number | undefined;\n\n  // Indicates if the tooltip is disabled.\n  @Input() tooltipIsDisabled: boolean | undefined;\n\n  // Indicates if the tooltip has a beak.\n  @Input() tooltipHasBeak: boolean | undefined = true;\n\n  // Indent value for the tooltip.\n  @Input() tooltipIndent: number | undefined = INDENT;\n\n  // Show delay for the tooltip.\n  @Input() tooltipShowDelay: number | undefined;\n\n  // Hide delay for the tooltip.\n  @Input() tooltipHideDelay: number | undefined;\n\n  // Invoke type for the tooltip.\n  @Input() tooltipInvokeType: InvokeType | string | undefined = InvokeType.hover;\n\n  // Position of the tooltip.\n  @Input() tooltipPosition: PositionState | string | undefined = PositionState.right;\n\n  // Theme for the tooltip.\n  @Input() tooltipTheme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n\n  // Event emitted when the value changes.\n  @Output() valueChanged: EventEmitter<string[] | string> = new EventEmitter();\n\n  // Event emitted when the object value changes.\n  @Output() objectValueChanged: EventEmitter<any> = new EventEmitter();\n\n  // Public properties\n  public filteredList: SuggestionsTagsItemOptions[] = [];\n  public isSmSize: boolean;\n  public isLgSize: boolean;\n  public isExternalLabel: boolean;\n  public isValueArray: boolean;\n  public valueIsString: string;\n  public isStickerShown = false;\n  public popupAriaLabel: string;\n  public stickerIsDisabled = true;\n  public id: string;\n  public contextMenuShown = true;\n  public objectValue: any[] = [];\n\n  // Private properties\n  private prevVal = '';\n  private _searchList: SuggestionsTagsItemOptions[] = [];\n  private _value: string[] | string = '';\n  private doubleTag: string;\n  private contextMenu: ContextMenuComponent;\n  private letterKeyStream = new Subject<string>();\n\n  // Checks if the description type is tooltip.\n  get isDescriptionTypeTooltip(): boolean {\n    return this.descriptionType === DescriptionType.tooltip && ((this._isError && Boolean(this.errorMessage)) || Boolean(this.description));\n  }\n\n  // Checks if the error message should be shown.\n  get isErrorMessageShown(): boolean {\n    return this._isError && this.errorMessage && !this.isDescriptionTypeTooltip;\n  }\n\n  // Gets the tooltip text.\n  get tooltipText(): string {\n    return this._isError && this.errorMessage ? this.errorMessage : this.description;\n  }\n\n  // Checks if the info should be shown.\n  get isInfoShown(): boolean {\n    return (this.label && this.isExternalLabel) || (this.description && !this.isDescriptionTypeTooltip);\n  }\n\n  // Gets the type of the error tooltip.\n  get isErrorTooltipType(): string {\n    return this._isError ? TooltipType.error : TooltipType.regular;\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public i18n: I18nService,\n    private renderer: Renderer2,\n    private ddsConfig: DdsConfigService\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    this.checkIsEmpty();\n    this.checkSize(this.size);\n    this.checkLabelPosition(this.labelPosition);\n    this.setLetterKeyStream();\n    super.ngOnInit();\n    this.id = generateId();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    this.checkSize(changes.size);\n    this.checkLabelPosition(changes.labelPosition);\n\n    if (changes.value && changes.value.currentValue) {\n      this.checkValueType(changes.value.currentValue);\n    }\n\n    if (changes?.value?.currentValue?.length > this.maxLength && this.maxLength) {\n      if (typeof changes?.value?.currentValue === 'string') {\n        this.value = this.value.slice(0, this.maxLength);\n      }\n    }\n\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired.currentValue);\n    }\n\n    if (changes.isLoading && !changes.isLoading.currentValue) {\n      this.getFilteringList();\n\n      if (!this.filteredList?.length && this.isStickerShown) {\n        this.sticker.hide();\n      }\n    }\n\n    super.ngOnChanges(changes);\n  }\n\n  public writeValue(value: string[] | string): void {\n    this.value = value;\n    this.checkValueType(value);\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  // Handles the change event for the input field.\n  public changeText(input: HTMLInputElement): void {\n    if (this.prevVal === input.value || (!this.prevVal && '' === input.value)) return; //IE fix\n\n    if (input.value.length > this.maxLength && this.maxLength) {\n      this.searchField.nativeElement.value = input.value.slice(0, this.maxLength);\n    } else {\n      this.searchField.nativeElement.value = input.value;\n    }\n\n    this.prevVal = this.searchField.nativeElement.value;\n    this.letterKeyStream.next(this.searchField.nativeElement.value);\n\n    if (!this.isValueArray) {\n      this.value = this.searchField.nativeElement.value;\n      this.onModelChange(this.value);\n      this.valueChanged.emit(this.value);\n    }\n  }\n\n  // Picks a value from the suggestions list.\n  public pickValue(value: SuggestionsTagsItemOptions): void {\n    const valueByProp = value[this.headingProp];\n    if (this.isSelectOnly) this.objectValue = [];\n\n    if (this.isValueArray) {\n      this.checkDoubleTag(valueByProp);\n      this.value = [...this.value, valueByProp];\n      this.searchField.nativeElement.value = '';\n      this.prevVal = '';\n      if (this.isSelectOnly) {\n        this.value.forEach((val) => {\n          this.objectValue.push(this.searchList.find((item) => item[this.headingProp] === val));\n        });\n      }\n    } else {\n      this.value = valueByProp;\n      this.searchField.nativeElement.value = valueByProp;\n      if (this.isSelectOnly) {\n        this.objectValue.push(this.searchList.find((item) => item[this.headingProp] === this.value));\n      }\n    }\n\n    this.onModelChange(this.isSelectOnly ? this.objectValue : this.value);\n    this.valueChanged.emit(this.value);\n    if (this.isSelectOnly) this.objectValueChanged.emit(this.objectValue);\n    this.checkError();\n  }\n\n  // Adds a tag to the input field.\n  public addTag(inputTarget: HTMLInputElement, event: Event): void {\n    if (this.isSelectOnly) return;\n    event.preventDefault();\n    const tag = inputTarget.value.trim();\n\n    if (tag && this.isValueArray) {\n      this.checkDoubleTag(tag);\n      this.value = [...this.value, tag];\n      inputTarget.value = '';\n      this.onModelChange(this.value);\n      this.valueChanged.emit(this.value);\n    }\n\n    this.checkError();\n  }\n\n  // Removes a tag from the input field.\n  public removeTag(item: string): void {\n    const index = this.value.indexOf(item);\n    if (this.isSelectOnly) this.objectValue = [];\n\n    if (index >= 0 && this.value instanceof Array) {\n      this.value.splice(index, 1);\n      this.onModelChange(this.isSelectOnly ? this.objectValue : this.value);\n      this.valueChanged.emit(this.value);\n      if (this.isSelectOnly) {\n        this.value.forEach((val) => {\n          this.objectValue.push(this.searchList.find((searchItem) => searchItem[this.headingProp] === val));\n        });\n        this.objectValueChanged.emit(this.objectValue);\n      }\n      this.checkError();\n      this.checkIsEmpty();\n    }\n  }\n\n  // Handles the keydown event for the tag close button.\n  public tagClosedPressed(event: KeyboardEvent, index: number): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.tags.changes.pipe(take(1)).subscribe(() => {\n        const tagsList = this.tags.toArray();\n\n        if (tagsList.length) {\n          if (tagsList[index - 1]) {\n            if (tagsList[index]) tagsList[index].blur();\n            tagsList[index - 1].focus();\n          }\n        } else {\n          this.renderer.addClass(this.wrap.nativeElement, AdditionalClass.keyboardFocus);\n          this.searchField.nativeElement.focus();\n        }\n      });\n    }\n  }\n\n  // Handles the hidden event for the sticker.\n  public onHidden(el: HTMLElement): void {\n    this.isStickerShown = false;\n    this.stickerIsDisabled = true;\n    el.focus();\n  }\n\n  // Handles the shown event for the sticker.\n  public onShown(): void {\n    this.isStickerShown = true;\n    this.onModelTouched();\n  }\n\n  // Initializes the context menu.\n  public contextMenuInit(contextMenu: ContextMenuComponent): void {\n    this.contextMenu = contextMenu;\n  }\n\n  // Handles the keydown event for the input field.\n  public handleKeydown(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ARROW_UP || event.keyCode === KeyCodes.ARROW_DOWN) {\n      event.preventDefault();\n\n      if (this.contextMenu) this.contextMenu.focus();\n    }\n    if (event.keyCode === KeyCodes.ARROW_UP) {\n      if (this.contextMenu) this.contextMenu.keyManager.setLastItemActive();\n    }\n\n    if (event.keyCode === KeyCodes.ARROW_DOWN) {\n      if (this.contextMenu) this.contextMenu.keyManager.setFirstItemActive();\n    }\n\n    if (event.keyCode === KeyCodes.TAB) {\n      if (this.sticker.isActive) this.sticker.hide();\n      this.searchField?.nativeElement?.focus();\n\n      //IE fix\n      setTimeout(() => {\n        this.removeWrapActiveState();\n        this.removeActiveFocus();\n      });\n    }\n\n    if (event.keyCode === KeyCodes.ESC) {\n      this.searchField.nativeElement.value = '';\n    }\n  }\n\n  // Handles the keyup event for the input field.\n  public handleKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.TAB || (event.shiftKey && event.keyCode === KeyCodes.TAB)) {\n      this.showPopup(event.target as HTMLInputElement);\n    }\n  }\n\n  // Handles the keydown event for the context menu.\n  public handleKeydownMenu(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n      this.searchField.nativeElement.focus();\n      this.sticker.hide();\n    }\n\n    if (event.keyCode === KeyCodes.TAB) {\n      this.sticker.hide();\n      this.searchField.nativeElement.focus();\n\n      //IE fix\n      setTimeout(() => {\n        this.removeWrapActiveState();\n        this.removeActiveFocus();\n      });\n    }\n\n    if (event.keyCode === KeyCodes.ESC) {\n      this.renderer.addClass(this.wrap.nativeElement, AdditionalClass.keyboardFocus);\n      this.searchField.nativeElement.focus();\n    }\n  }\n\n  // Checks if the tag is a duplicate.\n  public checkDuplicate(tag: string): boolean {\n    let isDuplicate = false;\n    if (tag === this.doubleTag) {\n      isDuplicate = true;\n\n      setTimeout(() => {\n        isDuplicate = false;\n        this.doubleTag = '';\n        this.cdr.detectChanges();\n      }, DOUBLE_TAG_TIME_INFO);\n    }\n\n    return isDuplicate;\n  }\n\n  public addWrapActiveState(): void {\n    this.renderer.addClass(this.wrap.nativeElement, WRAP_ACTIVE_CLASS);\n  }\n\n  // Displays the popup if the `isOpenPopupOnFocus` flag is set to true.\n  public showPopup(input: HTMLInputElement): void {\n    if (this.isOpenPopupOnFocus) {\n      this.searchField.nativeElement.value = input.value;\n      this.letterKeyStream.next(input.value);\n    }\n  }\n\n  // Removes the active state class from the wrapper element.\n  public removeWrapActiveState(): void {\n    this.renderer.removeClass(this.wrap.nativeElement, WRAP_ACTIVE_CLASS);\n  }\n\n  // Removes the active focus class from the wrapper element.\n  public removeActiveFocus(): void {\n    this.renderer.removeClass(this.wrap.nativeElement, AdditionalClass.keyboardFocus);\n  }\n\n  // Handles the blur event for the component.\n  public blur(): void {\n    if (this.errorState === ErrorState.focusOut) this.checkError();\n    this.onModelTouched();\n  }\n\n  // Checks the type of the provided value and updates the component state accordingly.\n  public checkValueType(value: string[] | string): void {\n    this.isValueArray = value instanceof Array;\n    this.valueIsString = typeof value === 'string' ? value : '';\n    this.cdr.detectChanges();\n  }\n\n  // Gets the ARIA label for the input field.\n  public getAriaLabel(): string {\n    return this.ariaLabel || this.label || this.searchField?.nativeElement.value;\n  }\n\n  // Determines if the input field has a popup.\n  public getAriaHasPopup(): boolean | string {\n    return this.searchList?.length > 0 ? ARIA_LISTBOX : false;\n  }\n\n  // Gets the debounce time for the input field.\n  private getDebounceTime(): number {\n    const initialTime = 0;\n    return this.searchField?.nativeElement?.value === '' ? initialTime : this.debounceTime;\n  }\n\n  // Initializes the letter key stream with debounce and side effects.\n  // This method sets up a stream that listens for letter key events, applies a debounce\n  // to limit the rate of events, and performs side effects such as hiding and showing\n  // the context menu, filtering a list, and opening a sticker condition.\n  private setLetterKeyStream(): void {\n    this.letterKeyStream\n      .pipe(\n        debounce(() => timer(this.getDebounceTime())),\n        tap((_) => {\n          setTimeout(() => (this.contextMenuShown = false));\n        }),\n        takeUntil(this.destroy)\n      )\n      .subscribe(() => {\n        setTimeout(() => (this.contextMenuShown = true));\n        this.getFilteringList();\n        this.openStickerCondition();\n      });\n  }\n\n  // Checks if the provided tag already exists in the `value` array.\n  // If the tag is found, it removes the tag from the array and assigns it to `doubleTag`.\n  private checkDoubleTag(tag: string): void {\n    if (this.value instanceof Array) {\n      this.value.forEach((item, index, arr) => {\n        if (item === tag) {\n          this.doubleTag = arr.splice(index, 1)[0];\n        }\n      });\n    }\n  }\n\n  // Sets the internationalization texts for the component.\n  protected setI18nTexts(translation: ITranslation): void {\n    this.popupAriaLabel = translation.SUGGESTION_TAGS_INPUT.A11Y.POPUP_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n\n  // Filters and sorts the list based on the search input value.\n  public getFilteringList(): void {\n    const searchValue = this.searchField.nativeElement.value.toLowerCase();\n    this.filteredList = this.searchList?.filter((item) => {\n      const itemValue = item[this.headingProp]?.toLowerCase();\n      return itemValue?.includes(searchValue);\n    });\n\n    if (this.isSortableList) {\n      this.filteredList = this.filteredList?.sort((next, prev) => {\n        const nextIndex = next[this.headingProp]?.toLowerCase().indexOf(searchValue);\n        const prevIndex = prev[this.headingProp]?.toLowerCase().indexOf(searchValue);\n        return nextIndex < prevIndex ? -1 : 1;\n      });\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  // Controls the visibility and position of the sticker based on the current state of the search field,\n  // filtered list, and loading status.\n  private openStickerCondition(): void {\n    if ((this.searchField.nativeElement.value.length >= this.minSearchSymbols && this.filteredList?.length) || this.isLoading) {\n      this.stickerIsDisabled = false;\n      this.cdr.detectChanges();\n\n      if (!this.isStickerShown) {\n        this.sticker.show();\n      }\n    } else {\n      if (this.isStickerShown) this.sticker.hide();\n    }\n\n    if (this.isStickerShown && this.sticker) {\n      setTimeout(() => this.sticker.updPosition());\n    }\n\n    if (!this.filteredList?.length && this.isStickerShown && !this.isLoading) {\n      this.sticker.hide();\n    }\n  }\n\n  private checkIsEmpty(): void {\n    this.isEmptyValue = !(this._value && this._value.length);\n  }\n\n  // Checks the position of the label and updates the component's state accordingly.\n  private checkLabelPosition(labelPosition: unknown): void {\n    if (labelPosition) {\n      this.isExternalLabel = this.labelPosition === LabelPosition.external;\n    }\n\n    if (!this.isExternalLabel) {\n      this.size = Size.md;\n    }\n  }\n\n  // Checks the size of the input field and updates the component's state accordingly.\n  private checkSize(size: unknown): void {\n    if (size) {\n      this.isSmSize = this.size === Size.sm;\n      this.isLgSize = this.size === Size.lg;\n      this.cdr.markForCheck();\n    }\n  }\n}\n","<div [ngClass]=\"{\n      'dds-suggestions-tags-input_disabled': disabled,\n      'dds-suggestions-tags-input_error': _isError,\n      'dds-suggestions-tags-input_external': isExternalLabel,\n      'dds-suggestions-tags-input_sm': isExternalLabel && isSmSize,\n      'dds-suggestions-tags-input_lg': isExternalLabel && isLgSize,\n      'dds-suggestions-tags-input_tags': isExternalLabel && isValueArray,\n      'dds-suggestions-tags-input_suggestion': isExternalLabel && !isValueArray,\n      'dds-suggestions-tags-input_with-icon': isDescriptionTypeTooltip,\n      'dds-suggestions-tags-input_inverse': isInverse\n     }\"\n     [ddsSticker]=\"suggestionsList\"\n     [stickerPosition]=\"stickerPosition\"\n     [stickerIndent]=\"stickerIndent\"\n     [stickerWidth]=\"stickerWidth\"\n     [stickerShift]=\"stickerShift\"\n     [stickerIsDisabled]=\"stickerIsDisabled\"\n     [stickerIsResponsive]=\"isResponsive\"\n     [stickerClosingFocusEl]=\"false\"\n     [stickerCustomClass]=\"stickerCustomClass\"\n     [stickerIsDynamic]=\"stickerIsDynamic\"\n     class=\"dds-suggestions-tags-input {{customClass}}\"\n     (onShown)=\"onShown()\"\n     (onHidden)=\"onHidden(searchField)\"\n     #stickerDir=\"dds-sticker\">\n  @if (isInfoShown) {\n  <div class=\"dds-suggestions-tags-input__info\">\n    @if (label && isExternalLabel) {\n    <label class=\"dds-suggestions-tags-input__label\">{{ label }}\n      @if (isRequired) {\n      <span class=\"dds-required\"></span>\n      }\n    </label>\n    }\n    @if (!isDescriptionTypeTooltip && description) {\n    <div class=\"dds-suggestions-tags-input__description\">\n      {{ description }}\n    </div>\n    }\n  </div>\n  }\n  <div [ngStyle]=\"{\n         'max-height': maxHeight\n       }\"\n       class=\"dds-suggestions-tags-input__wrap\"\n       #wrap>\n    @if (label && !isExternalLabel) {\n    <label class=\"dds-suggestions-tags-input__label\">{{ label }}\n      @if (isRequired) {\n      <span class=\"dds-required\"></span>\n      }\n    </label>\n    }\n\n    <div class=\"dds-suggestions-tags-input__shell\">\n      @if (isValueArray) {\n      @for (tag of value; track tag; let index = $index) {\n      <dds-tag [isRemovable]=\"true\"\n               [disabled]=\"disabled\"\n               [isError]=\"_isError\"\n               [isInverse]=\"isInverse\"\n               [size]=\"size\"\n               [removeBtnIcon]=\"tagRemoveBtnIcon\"\n               theme=\"dark\"\n               [ngClass]=\"{\n                   'dds-suggestions-tags-input__tag_duplicate': checkDuplicate(tag)\n                 }\"\n               class=\"dds-suggestions-tags-input__tag\"\n               (removed)=\"removeTag(tag)\"\n               (keyPressed)=\"tagClosedPressed($event, index)\"\n               #tags>\n        {{tag}}\n      </dds-tag>\n      }\n      }\n\n      <input [value]=\"valueIsString\"\n             [placeholder]=\"placeholder\"\n             [disabled]=\"disabled\"\n             [ddsFocus]=\"wrap\"\n             [attr.aria-disabled]=\"disabled\"\n             [attr.aria-invalid]=\"_isError\"\n             [attr.aria-label]=\"getAriaLabel()\"\n             [attr.aria-haspopup]=\"getAriaHasPopup()\"\n             [attr.aria-expanded]=\"isStickerShown\"\n             [attr.aria-required]=\"isRequired || _isFormControlRequired\"\n             [attr.aria-controls]=\"id\"\n             [required]=\"isRequired\"\n             aria-autocomplete=\"list\"\n             role=\"combobox\"\n             class=\"dds-suggestions-tags-input__field\"\n             type=\"text\"\n             (keydown.enter)=\"addTag($any($event).target, $event)\"\n             (keyup)=\"handleKeyup($event)\"\n             (keydown)=\"handleKeydown($event)\"\n             (input)=\"changeText($any($event).target)\"\n             (focus)=\"addWrapActiveState()\"\n             (focusout)=\"removeWrapActiveState()\"\n             (click)=\"showPopup($any($event).target)\"\n             (blur)=\"blur()\"\n             #searchField />\n    </div>\n\n    @if (isDescriptionTypeTooltip) {\n    <span [ddsTooltip]=\"tooltipText\"\n          [tooltipInvokeType]=\"tooltipInvokeType\"\n          [tooltipType]=\"isErrorTooltipType\"\n          [tooltipSize]=\"size\"\n          [tooltipPosition]=\"tooltipPosition\"\n          [tooltipIndent]=\"tooltipIndent\"\n          [tooltipShowDelay]=\"tooltipShowDelay\"\n          [tooltipHideDelay]=\"tooltipHideDelay\"\n          [tooltipWidth]=\"tooltipWidth\"\n          [tooltipShift]=\"tooltipShift\"\n          [tooltipHasBeak]=\"tooltipHasBeak\"\n          [tooltipIsDisabled]=\"tooltipIsDisabled\"\n          [tooltipKeyboardFocusEl]=\"searchField\"\n          [tooltipCustomClass]=\"tooltipCustomClass\"\n          [tooltipIsInverse]=\"isInverse\"\n          [tooltipTheme]=\"tooltipTheme\"\n          class=\"dds-suggestions-tags-input__icon dds-icon {{tooltipIcon}}\"></span>\n    }\n  </div>\n\n  <ng-template #suggestionsList>\n    @if (contextMenuShown) {\n      <ng-container *ngTemplateOutlet=\"optionsTemplate || defaultTemplate; context: {ctx: this, searchField: searchField}\"></ng-container>\n      <ng-template #defaultTemplate>\n        <dds-context-menu [maxHeight]=\"stickerMaxHeight\"\n                          [size]=\"size\"\n                          [isResponsive]=\"isResponsive\"\n                          [isRequired]=\"isRequired\"\n                          [isInverse]=\"isInverse\"\n                          [ariaLabel]=\"popupAriaLabel\"\n                          [label]=\"label\"\n                          [isInitialFocused]=\"false\"\n                          [id]=\"id\"\n                          [isLoading]=\"isLoading\"\n                          [isLoadingWithCounter]=\"isLoadingWithCounter\"\n                          [loadingTemplate]=\"loadingTemplate\"\n                          class=\"dds-suggestions-tags-input__list\"\n                          (onInit)=\"contextMenuInit($event)\"\n                          (keyPressed)=\"handleKeydownMenu($event)\">\n            @for (item of filteredList; track item) {\n              <dds-context-menu-item (selectedItem)=\"pickValue(item)\">\n                <span [innerHTML]=\"item[this.headingProp] | highlight:searchField.value\"\n                      class=\"dds-suggestions-tags-input__item\"></span>\n              </dds-context-menu-item>\n            }\n        </dds-context-menu>\n      </ng-template>\n    }\n  </ng-template>\n</div>\n\n@if (isErrorMessageShown) {\n<div [ngClass]=\"{'dds-suggestions-tags-input_disabled':disabled}\"\n     class=\"dds-suggestions-tags-input__error-message\">\n  {{errorMessage}}\n</div>\n}\n","import { NgModule } from '@angular/core';\nimport { SuggestionsTagsInputComponent } from './suggestions-tags-input/suggestions-tags-input.component';\n\n@NgModule({\n  declarations: [],\n  imports: [SuggestionsTagsInputComponent],\n  exports: [SuggestionsTagsInputComponent],\n})\nexport class SuggestionsTagsInputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}