{"version":3,"file":"ngx-typeahead.mjs","sources":["../../../projects/ngx-typeahead/src/lib/models.ts","../../../projects/ngx-typeahead/src/lib/ngx-typeahead.utils.ts","../../../projects/ngx-typeahead/src/lib/ngx-typeahead.component.ts","../../../projects/ngx-typeahead/src/public-api.ts","../../../projects/ngx-typeahead/src/ngx-typeahead.ts"],"sourcesContent":["export enum Key {\n  Backspace = 'Backspace',\n  Tab = 'Tab',\n  Enter = 'Enter',\n  ShiftLeft = 'ShiftLeft',\n  ShiftRight = 'ShiftRight',\n  Escape = 'Escape',\n  ArrowLeft = 'ArrowLeft',\n  ArrowRight = 'ArrowRight',\n  ArrowUp = 'ArrowUp',\n  ArrowDown = 'ArrowDown',\n  // http://unixpapa.com/js/key.html\n  MetaLeft = 'MetaLeft',\n  MetaRight = 'MetaRight',\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Key } from './models';\n\nexport function validateNonCharKeyCode(keyCode: string) {\n  return [\n    Key.Enter,\n    Key.Tab,\n    Key.ShiftLeft,\n    Key.ShiftRight,\n    Key.ArrowLeft,\n    Key.ArrowUp,\n    Key.ArrowRight,\n    Key.ArrowDown,\n    Key.MetaLeft,\n    Key.MetaRight,\n  ].every((codeKey) => codeKey !== keyCode);\n}\n\nexport function validateArrowKeys(keyCode: string) {\n  return keyCode === Key.ArrowDown || keyCode === Key.ArrowUp;\n}\n\nexport function isIndexActive(index: number, currentIndex: number) {\n  return index === currentIndex;\n}\n\nexport function isEnterKey(event: KeyboardEvent) {\n  return event.code === Key.Enter;\n}\n\nexport function isEscapeKey(event: KeyboardEvent) {\n  // tslint:disable-next-line: deprecation\n  return event.code === Key.Escape;\n}\n\nexport function createParamsForQuery(\n  query: string,\n  queryParamKey = 'q',\n  customParams = {}\n) {\n  const searchParams = {\n    [queryParamKey]: query,\n    ...customParams,\n  };\n  // tslint:disable-next-line\n  const setParam = (acc: HttpParams, param: string) =>\n    acc.set(param, searchParams[param]);\n  const params = Object.keys(searchParams).reduce(setParam, new HttpParams());\n  return params;\n}\n\nexport function resolveApiMethod(method = '') {\n  const isMethodValid = [\n    'get',\n    'post',\n    'put',\n    'delete',\n    'patch',\n    'request',\n  ].some((methodName) => method === methodName);\n  const apiMethod = isMethodValid ? method : 'get';\n  return apiMethod;\n}\nexport const NO_INDEX = -1;\nexport function resolveNextIndex(\n  currentIndex: number,\n  stepUp: boolean,\n  listLength = 10\n) {\n  const step = stepUp ? 1 : -1;\n  const topLimit = listLength - 1;\n  const bottomLimit = NO_INDEX;\n  const currentResultIndex = currentIndex + step;\n  let resultIndex = currentResultIndex;\n  if (currentResultIndex === topLimit + 1) {\n    resultIndex = bottomLimit;\n  }\n  if (currentResultIndex === bottomLimit - 1) {\n    resultIndex = topLimit;\n  }\n  return resultIndex;\n}\n\nexport function toJsonpSingleResult(response: any) {\n  return response[1];\n}\n\nexport function toJsonpFinalResults(results: any[]) {\n  return results.map((result: any) => result[0]);\n}\n\nexport function hasCharacters(query: string) {\n  return query.length > 0;\n}\n\nexport function toFormControlValue(e: any) {\n  return e.target.value;\n}\n\nexport function resolveItemValue(\n  item: string | any,\n  fieldsToExtract: string[],\n  caseSensitive = false\n) {\n  let newItem = item;\n  if (!item.hasOwnProperty('length')) {\n    const fields = !fieldsToExtract.length\n      ? Object.keys(item)\n      : fieldsToExtract;\n    newItem = fields.reduce((acc, cur) => `${acc}${item[cur]}`, '');\n  }\n  return caseSensitive ? newItem : newItem.toLowerCase();\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { of, Observable, Subject, Subscription } from 'rxjs';\nimport {\n  concat,\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  map,\n  switchMap,\n  tap,\n} from 'rxjs/operators';\nimport { Key } from './models';\nimport {\n  createParamsForQuery,\n  hasCharacters,\n  isEnterKey,\n  isEscapeKey,\n  isIndexActive,\n  resolveApiMethod,\n  resolveNextIndex,\n  toFormControlValue,\n  toJsonpFinalResults,\n  toJsonpSingleResult,\n  validateArrowKeys,\n  validateNonCharKeyCode,\n  resolveItemValue,\n  NO_INDEX,\n} from './ngx-typeahead.utils';\nimport { CommonModule } from '@angular/common';\n\n/*\n using an external template:\n <input [taItemTpl]=\"itemTpl\" >\n\n  <ng-template #itemTpl let-result>\n    <strong>MY {{ result.result }}</strong>\n  </ng-template>\n*/\n@Component({\n  // tslint:disable-next-line: component-selector\n  standalone: true,\n  selector: 'ngx-typeahead, [ngxTypeahead]',\n  styles: [\n    `\n      .ta-results {\n        position: absolute;\n      }\n      .ta-backdrop {\n        bottom: 0;\n        left: 0;\n        position: fixed;\n        right: 0;\n        top: 0;\n        z-index: 1;\n      }\n      .ta-item {\n        position: relative;\n        z-index: 2;\n        display: block;\n      }\n    `,\n  ],\n  template: `\n    <ng-template #suggestionsTplRef>\n      <section class=\"ta-results list-group\" *ngIf=\"showSuggestions\">\n        <div class=\"ta-backdrop\" (click)=\"hideSuggestions()\"></div>\n        <button\n          type=\"button\"\n          class=\"ta-item list-group-item\"\n          *ngFor=\"let result of results; let i = index\"\n          [class.active]=\"markIsActive(i, result)\"\n          (click)=\"handleSelectionClick(result, i)\"\n        >\n          <span *ngIf=\"!taItemTpl\"\n            ><i class=\"fa fa-search\"></i> {{ result }}</span\n          >\n          <ng-template\n            [ngTemplateOutlet]=\"taItemTpl\"\n            [ngTemplateOutletContext]=\"{\n              $implicit: { result: result, index: i }\n            }\"\n          ></ng-template>\n        </button>\n      </section>\n    </ng-template>\n  `,\n  imports: [CommonModule],\n\n})\nexport class NgxTypeAheadComponent implements OnInit, OnDestroy {\n  showSuggestions = false;\n  results: string[] = [];\n\n  @Input()\n  taItemTpl!: TemplateRef<any>;\n  @Input()\n  taUrl = '';\n  @Input()\n  taParams = {};\n  @Input()\n  taQueryParam = 'q';\n  @Input()\n  taCallbackParamValue;\n  @Input()\n  taApi = 'jsonp';\n  @Input()\n  taApiMethod = 'get';\n  @Input()\n  taList = [];\n  @Input()\n  taListItemField = [];\n  @Input()\n  taListItemLabel = '';\n  @Input()\n  taDebounce = 300;\n  @Input()\n  taAllowEmpty = false;\n  @Input()\n  taCaseSensitive = false;\n  @Input()\n  taDisplayOnFocus = false;\n\n  @Output()\n  taSelected = new EventEmitter<string | any>();\n\n  @ViewChild(TemplateRef, { static: true })\n  suggestionsTplRef: TemplateRef<any>;\n\n  private suggestionIndex = 0;\n  private subscriptions: Subscription[] = [];\n  private activeResult = '';\n  private searchQuery = '';\n  private selectedItem: any = {};\n  private resultsAsItems: any[] = [];\n  private keydown$ = new Subject<KeyboardEvent>();\n  private keyup$ = new Subject<KeyboardEvent>();\n\n  constructor(\n    private element: ElementRef,\n    private viewContainer: ViewContainerRef,\n    private http: HttpClient,\n    private cdr: ChangeDetectorRef\n  ) {}\n\n  @HostListener('keydown', ['$event'])\n  handleEsc(event: KeyboardEvent) {\n    if (isEscapeKey(event)) {\n      this.hideSuggestions();\n      event.preventDefault();\n    }\n    this.keydown$.next(event);\n  }\n\n  @HostListener('keyup', ['$event'])\n  onkeyup(event: KeyboardEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.keyup$.next(event);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.taDisplayOnFocus) {\n      this.displaySuggestions();\n    }\n  }\n\n  ngOnInit() {\n    this.filterEnterEvent(this.keydown$);\n    this.listenAndSuggest(this.keyup$);\n    this.navigateWithArrows(this.keydown$);\n    this.renderTemplate();\n  }\n\n  ngOnDestroy() {\n    this.keydown$.complete();\n    this.keyup$.complete();\n  }\n\n  renderTemplate() {\n    if (!this.suggestionsTplRef) {\n      console.error('NO NGXTA Template Found. Requires NG9');\n      return;\n    }\n    this.viewContainer.createEmbeddedView(this.suggestionsTplRef);\n    this.cdr.markForCheck();\n  }\n\n  listenAndSuggest(obs: Subject<KeyboardEvent>) {\n    obs\n      .pipe(\n        // tslint:disable-next-line: deprecation\n        filter((e: KeyboardEvent) => validateNonCharKeyCode(e.code)),\n        map(toFormControlValue),\n        debounceTime(this.taDebounce),\n        // tslint:disable-next-line: deprecation\n        concat(),\n        distinctUntilChanged(),\n        filter((query: string) => this.taAllowEmpty || hasCharacters(query)),\n        tap((query: string) => (this.searchQuery = query)),\n        switchMap((query: string) => this.suggest(query))\n      )\n      .subscribe((results: string[] | any) => {\n        this.assignResults(results);\n        // this.updateIndex(Key.ArrowDown);\n        this.displaySuggestions();\n      });\n  }\n\n  assignResults(results: any[]) {\n    const labelForDisplay = this.taListItemLabel;\n    this.resultsAsItems = results;\n    this.results = results.map((item: string | any) =>\n      labelForDisplay ? item[labelForDisplay] : item\n    );\n    this.suggestionIndex = NO_INDEX;\n    if (!results || !results.length) {\n      this.activeResult = this.searchQuery;\n    }\n  }\n\n  filterEnterEvent(elementObs: Subject<KeyboardEvent>) {\n    elementObs.pipe(filter(isEnterKey)).subscribe((event: KeyboardEvent) => {\n      this.handleSelectSuggestion(this.activeResult);\n    });\n  }\n\n  navigateWithArrows(elementObs: Subject<KeyboardEvent>) {\n    elementObs\n      .pipe(\n        map((e: any) => e.key),\n        filter((key: Key) => validateArrowKeys(key))\n      )\n      .subscribe((key: Key) => {\n        this.updateIndex(key);\n        this.displaySuggestions();\n      });\n  }\n\n  updateIndex(keyCode: string) {\n    this.suggestionIndex = resolveNextIndex(\n      this.suggestionIndex,\n      keyCode === Key.ArrowDown,\n      this.results.length\n    );\n  }\n\n  displaySuggestions() {\n    this.showSuggestions = true;\n    this.cdr.markForCheck();\n  }\n\n  suggest(query: string) {\n    return this.taList.length\n      ? this.createListSource(this.taList, query)\n      : this.request(query);\n  }\n\n  /**\n   * peforms a jsonp/http request to search with query and params\n   * @param query the query to search from the remote source\n   */\n  request(query: string) {\n    const url = this.taUrl;\n    const searchConfig = createParamsForQuery(\n      query,\n      this.taQueryParam,\n      this.taParams\n    );\n    const options = {\n      params: searchConfig,\n    };\n    const isJsonpApi = this.taApi === 'jsonp';\n    return isJsonpApi\n      ? this.requestJsonp(url, options, this.taCallbackParamValue)\n      : this.requestHttp(url, options);\n  }\n\n  requestHttp(url: string, options) {\n    const apiMethod = resolveApiMethod(this.taApiMethod);\n    return this.http[apiMethod](url, options);\n  }\n\n  requestJsonp(url, options, callback = 'callback') {\n    const params = options.params.toString();\n    return this.http\n      .jsonp(`${url}?${params}`, callback)\n      .pipe(map(toJsonpSingleResult), map(toJsonpFinalResults));\n  }\n\n  markIsActive(index: number, result: string) {\n    const isActive = isIndexActive(index, this.suggestionIndex);\n    if (isActive) {\n      this.activeResult = result;\n    }\n    return isActive;\n  }\n\n  handleSelectionClick(suggestion: string, index: number) {\n    this.suggestionIndex = index;\n    this.handleSelectSuggestion(suggestion);\n  }\n\n  handleSelectSuggestion(suggestion: string) {\n    const result = this.resultsAsItems.length\n      ? this.resultsAsItems[this.suggestionIndex]\n      : suggestion;\n    this.hideSuggestions();\n    const resolvedResult =\n      this.suggestionIndex === NO_INDEX ? this.searchQuery : result;\n    this.taSelected.emit(resolvedResult);\n  }\n\n  hideSuggestions() {\n    this.showSuggestions = false;\n  }\n\n  hasItemTemplate() {\n    return this.taItemTpl !== undefined;\n  }\n\n  createListSource(list: any[], query: string): Observable<string[]> {\n    const sanitizedQuery = this.taCaseSensitive ? query : query.toLowerCase();\n    const fieldsToExtract = this.taListItemField;\n    return of(\n      list.filter((item: string | any) => {\n        return resolveItemValue(\n          item,\n          fieldsToExtract,\n          this.taCaseSensitive\n        ).includes(sanitizedQuery);\n      })\n    );\n  }\n}\n","/*\n * Public API Surface of ngx-typeahead\n */\n\nexport * from './lib/ngx-typeahead.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}