{"version":3,"file":"pad-ui-lib-autocomplete.mjs","sources":["../../../components/autocomplete/connection-position-pair.ts","../../../components/autocomplete/autocomplete-trigger.directive.ts","../../../components/autocomplete/option.component.ts","../../../components/autocomplete/autocomplete.component.ts","../../../components/autocomplete/autocomplete.module.ts","../../../components/autocomplete/autocomplete.provider.ts","../../../components/autocomplete/pad-ui-lib-autocomplete.ts"],"sourcesContent":["import { ConnectionPositionPair } from \"@angular/cdk/overlay\";\nexport const POSITION_MAP = {\n  top: new ConnectionPositionPair(\n    { originX: \"center\", originY: \"top\" },\n    { overlayX: \"center\", overlayY: \"bottom\" }\n  ),\n  topCenter: new ConnectionPositionPair(\n    { originX: \"center\", originY: \"top\" },\n    { overlayX: \"center\", overlayY: \"bottom\" }\n  ),\n  topLeft: new ConnectionPositionPair(\n    { originX: \"start\", originY: \"top\" },\n    { overlayX: \"start\", overlayY: \"bottom\" }\n  ),\n  topRight: new ConnectionPositionPair(\n    { originX: \"end\", originY: \"top\" },\n    { overlayX: \"end\", overlayY: \"bottom\" }\n  ),\n  right: new ConnectionPositionPair(\n    { originX: \"end\", originY: \"center\" },\n    { overlayX: \"start\", overlayY: \"center\" }\n  ),\n  rightTop: new ConnectionPositionPair(\n    { originX: \"end\", originY: \"top\" },\n    { overlayX: \"start\", overlayY: \"top\" }\n  ),\n  rightBottom: new ConnectionPositionPair(\n    { originX: \"end\", originY: \"bottom\" },\n    { overlayX: \"start\", overlayY: \"bottom\" }\n  ),\n  bottom: new ConnectionPositionPair(\n    { originX: \"center\", originY: \"bottom\" },\n    { overlayX: \"center\", overlayY: \"top\" }\n  ),\n  bottomCenter: new ConnectionPositionPair(\n    { originX: \"center\", originY: \"bottom\" },\n    { overlayX: \"center\", overlayY: \"top\" }\n  ),\n  bottomLeft: new ConnectionPositionPair(\n    { originX: \"start\", originY: \"bottom\" },\n    { overlayX: \"start\", overlayY: \"top\" }\n  ),\n  bottomRight: new ConnectionPositionPair(\n    { originX: \"end\", originY: \"bottom\" },\n    { overlayX: \"end\", overlayY: \"top\" }\n  ),\n  left: new ConnectionPositionPair(\n    { originX: \"start\", originY: \"center\" },\n    { overlayX: \"end\", overlayY: \"center\" }\n  ),\n  leftTop: new ConnectionPositionPair(\n    { originX: \"start\", originY: \"top\" },\n    { overlayX: \"end\", overlayY: \"top\" }\n  ),\n  leftBottom: new ConnectionPositionPair(\n    { originX: \"start\", originY: \"bottom\" },\n    { overlayX: \"end\", overlayY: \"bottom\" }\n  ),\n};\n","// Angular\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n  DestroyRef,\n  Directive,\n  ElementRef,\n  ExistingProvider,\n  HostListener,\n  Input,\n  OnDestroy,\n  ViewContainerRef,\n  forwardRef,\n  inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n// Cdk\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from \"@angular/cdk/keycodes\";\nimport {\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n} from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n// Rx\nimport { Subscription, filter, tap } from \"rxjs\";\n\n// Third parties\nimport { OnChangeType, OnTouchedType, PadSafeAny } from \"pad-ui-lib/core/type\";\n\n// Project\nimport { PadAutocompleteComponent } from \"./autocomplete.component\";\nimport { POSITION_MAP } from \"./connection-position-pair\";\n\nexport function getPadAutocompleteMissingPanelError(): Error {\n  return Error(\n    \"Attempting to open an undefined instance of `pad-autocomplete`. \" +\n      \"Make sure that the id passed to the `padAutocomplete` is correct and that \" +\n      \"you're attempting to open it after the ngAfterContentInit hook.\"\n  );\n}\n\nexport const PAD_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => PadAutocompleteTriggerDirective),\n  multi: true,\n};\n\n@Directive({\n  selector: \"input[padAutocomplete], textarea[padAutocomplete]\",\n  exportAs: \"padAutocompleteTrigger\",\n  providers: [PAD_AUTOCOMPLETE_VALUE_ACCESSOR],\n  host: {\n    autocomplete: \"off\",\n    \"aria-autocomplete\": \"list\",\n    \"(focusin)\": \"onHandleFocus()\",\n    \"(blur)\": \"onHandleBlur()\",\n  },\n})\nexport class PadAutocompleteTriggerDirective implements ControlValueAccessor, OnDestroy {\n  private readonly _elementRef = inject(ElementRef);\n  private readonly _overlay = inject(Overlay);\n  private readonly _vcr = inject(ViewContainerRef);\n  private readonly _document = inject(DOCUMENT, { optional: true });\n  private readonly _destroyRef = inject(DestroyRef);\n\n\n  @Input({ required: true }) padAutocomplete!: PadAutocompleteComponent;\n\n  private _overlayRef: OverlayRef | null = null;\n  private _portal: TemplatePortal | null = null;\n  private _positionStrategy!: FlexibleConnectedPositionStrategy;\n  private _previousValue: string | number | null = null;\n  private _previousOptionValue: PadSafeAny | null = null;\n  private _selectionChangeSubscription: Subscription = Subscription.EMPTY;\n  private _overlayOutsideClickSubscription: Subscription = Subscription.EMPTY;\n  private _optionsChangeSubscription: Subscription = Subscription.EMPTY;\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange: OnChangeType = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched: OnTouchedType = () => {};\n  panelOpen = true;\n\n  get activeOption() {\n    if (this.padAutocomplete && this.padAutocomplete.options.length) {\n      return this.padAutocomplete.activeOption;\n    } else {\n      return null;\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this._overlayRef) {\n      this.closePanel();\n    }\n  }\n\n  writeValue(obj: PadSafeAny): void {\n    Promise.resolve(null).then(() => this._setTriggerValue(obj));\n  }\n  registerOnChange(fn: PadSafeAny): void {\n    this.onChange = fn;\n  }\n  registerOnTouched(fn: PadSafeAny): void {\n    this.onTouched = fn;\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    // TODO: handle disabled state change\n    console.log(\"isDisabled\", isDisabled);\n  }\n\n  onHandleFocus() {\n    if (this._canOpen()) {\n      this.openPanel();\n    }\n  }\n\n  onHandleBlur(): void {\n    this.onTouched();\n  }\n\n  @HostListener(\"keydown\", [\"$event\"])\n  onHandleKeyDown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n    if (keyCode === ESCAPE) {\n      event.preventDefault();\n    }\n\n    if (this.panelOpen && (keyCode === ESCAPE || keyCode === TAB)) {\n      // Reset value when tab / ESC close\n      if (this.activeOption && this.activeOption.displayText !== this._previousValue) {\n        this._setTriggerValue(this._previousValue);\n      }\n      this.closePanel();\n    } else if (this.panelOpen && keyCode === ENTER) {\n      if (this.padAutocomplete.showPanel) {\n        event.preventDefault();\n        if (this.activeOption) {\n          this.activeOption.selectViaInteraction();\n        } else {\n          this.closePanel();\n        }\n      }\n    } else if (this.panelOpen && isArrowKey && this.padAutocomplete.showPanel) {\n      event.stopPropagation();\n      event.preventDefault();\n      if (keyCode === UP_ARROW) {\n        this.padAutocomplete.activePreviousOption();\n      } else {\n        this.padAutocomplete.activeNextOption();\n      }\n\n      if (this.activeOption) {\n        this.activeOption.scrollIntoView();\n      }\n      this._doBackfill();\n    }\n  }\n\n  @HostListener(\"input\", [\"$event\"])\n  onHandleInput(event: KeyboardEvent): void {\n    const target = event.target as HTMLInputElement;\n    let value: number | string | null = target.value;\n\n    if (target.type === \"number\") {\n      value = value === \"\" ? null : parseFloat(value);\n    }\n\n    if (this._previousValue !== value) {\n      this._previousValue = value;\n      this.onChange(value);\n\n      if (this._canOpen() && this._document?.activeElement === event.target) {\n        this.openPanel();\n      }\n    }\n  }\n\n  openPanel(): void {\n    this._previousValue = this._elementRef.nativeElement.value;\n    this._attachOverlay();\n    this._updateStatus();\n  }\n\n  closePanel(): void {\n    if (!this.panelOpen) {\n      return;\n    }\n\n    this.padAutocomplete.isOpen = false;\n    this.padAutocomplete.opened.emit(false);\n    this.panelOpen = false;\n\n    if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n      return;\n    }\n\n    this._overlayRef.detach();\n    this._selectionChangeSubscription.unsubscribe();\n    this._overlayOutsideClickSubscription.unsubscribe();\n    this._optionsChangeSubscription.unsubscribe();\n    this._portal = null;\n  }\n\n  private _attachOverlay(): void {\n    if (!this.padAutocomplete) {\n      throw getPadAutocompleteMissingPanelError();\n    }\n\n    if (!this._portal && this.padAutocomplete.template) {\n      this._portal = new TemplatePortal(this.padAutocomplete.template, this._vcr);\n    }\n\n    if (!this._overlayRef) {\n      this._overlayRef = this._overlay.create(this._getOverlayConfig());\n    }\n\n    if (this._overlayRef && !this._overlayRef.hasAttached()) {\n      this._overlayRef.attach(this._portal);\n\n      this._subscribeSelectionChange();\n      this._subscribeOptionsChange();\n      this._subscribeOverlayOutsideClick();\n      this._overlayRef\n        .detachments()\n        .pipe(takeUntilDestroyed(this._destroyRef))\n        .subscribe(() => {\n          this.closePanel();\n        });\n    }\n\n    this.padAutocomplete.isOpen = true;\n    this.padAutocomplete.opened.next(true);\n    this.panelOpen = true;\n  }\n\n  private _getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._getOverlayPosition(),\n      scrollStrategy: this._overlay.scrollStrategies.reposition(),\n      width: this.padAutocomplete.padWidth ?? this._getHostWidth(),\n      // panelClass: this._defaults?.overlayPanelClass,\n    });\n  }\n\n  private _getOverlayPosition(): PositionStrategy {\n    const position = [POSITION_MAP.bottomLeft, POSITION_MAP.topLeft];\n    this._positionStrategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this._getConnectedElement())\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions(position);\n\n    return this._positionStrategy;\n  }\n\n  private _updateStatus(): void {\n    if (this._overlayRef) {\n      this._overlayRef.updateSize({\n        width: this.padAutocomplete.padWidth || this._getHostWidth(),\n      });\n    }\n    this.padAutocomplete.setVisibility();\n    this._resetActiveItem();\n    if (this.activeOption) {\n      this.activeOption.scrollIntoView();\n    }\n  }\n\n  private _resetActiveItem(): void {\n    const index = this.padAutocomplete.getOptionIndex(this._previousOptionValue);\n    this.padAutocomplete.clear(null, true);\n    if (index !== -1) {\n      this.padAutocomplete.setActiveOption(index);\n      this.padAutocomplete.activeOption?.select(false);\n    } else {\n      this.padAutocomplete.setActiveOption(\n        this.padAutocomplete.autoActiveFirstOption ? 0 : -1\n      );\n    }\n  }\n\n  private _setTriggerValue(value: PadSafeAny): void {\n    const option = this.padAutocomplete.getOption(value);\n    const display = option ? option.label : value;\n    this._previousOptionValue = option ? option.value : null;\n\n    this._elementRef.nativeElement.value = display != null ? display : \"\";\n    if (!this.padAutocomplete.backfill) {\n      this._previousValue = display;\n    }\n  }\n\n  private _getConnectedElement() {\n    return this._elementRef;\n  }\n\n  private _getHostWidth(): number {\n    return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n  }\n\n  private _subscribeOptionsChange(): void {\n    this._optionsChangeSubscription = this.padAutocomplete.options.changes\n      .pipe(tap(() => this._positionStrategy.reapplyLastPosition()))\n      .subscribe(() => {\n        console.log(\"autocomplete trigger options change emit\");\n\n        this._resetActiveItem();\n        if (this.panelOpen) {\n          this._overlayRef?.updatePosition();\n        }\n      });\n  }\n\n  private _subscribeSelectionChange(): void {\n    this._selectionChangeSubscription.unsubscribe();\n\n    this._selectionChangeSubscription = this.padAutocomplete.onSelectedChange.subscribe(\n      option => {\n        this._setTriggerValue(option.value);\n        this.onChange(option.value);\n        this._elementRef.nativeElement.focus();\n        this.closePanel();\n      }\n    );\n  }\n\n  private _subscribeOverlayOutsideClick(): void {\n    if (this._overlayRef) {\n      this._overlayOutsideClickSubscription.unsubscribe();\n\n      this._overlayOutsideClickSubscription = this._overlayRef\n        .outsidePointerEvents()\n        .pipe(\n          filter((e: MouseEvent) => !this._elementRef.nativeElement.contains(e.target))\n        )\n        .subscribe(() => {\n          this.closePanel();\n        });\n    }\n  }\n\n  private _doBackfill(): void {\n    if (this.padAutocomplete.backfill && this.padAutocomplete.activeOption) {\n      this._setTriggerValue(this.padAutocomplete.activeOption.displayText);\n    }\n  }\n\n  private _canOpen(): boolean {\n    const element: HTMLInputElement = this._elementRef.nativeElement;\n    return !element.readOnly && !element.disabled;\n  }\n}\n","// Angular\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n} from \"@angular/core\";\n\n// Third parties\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\n\nexport class PadOptionSelectionChange {\n  constructor(\n    public source: PadOptionComponent,\n    public isUserInput: boolean = false\n  ) {}\n}\n\n@Component({\n  selector: \"pad-option\",\n  exportAs: \"padOption\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: ` <div>\n    <ng-content></ng-content>\n  </div>`,\n  styleUrls: [\"./option.component.scss\"],\n  standalone: true,\n  host: {\n    class: \"pad-select-item-option\",\n    \"[class.pad-select-item-option-selected]\": \"selected\",\n    \"[class.pad-select-item-option-active]\": \"activated\",\n    \"[class.pad-select-item-option-disabled]\": \"disabled\",\n    \"(click)\": \"selectViaInteraction()\",\n  },\n})\nexport class PadOptionComponent {\n  private readonly _cdr = inject(ChangeDetectorRef);\n  private readonly _elementRef = inject(ElementRef);\n\n  @Input() value: PadSafeAny;\n  @Input() label?: string;\n  @Input({ transform: booleanAttribute }) disabled!: boolean;\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onSelectionChange = new EventEmitter<PadOptionSelectionChange>();\n\n  activated = false;\n  selected = false;\n\n  get displayText() {\n    return this.label || this.value.toString();\n  }\n\n  get element(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  scrollIntoView() {\n    const node = this._elementRef.nativeElement as HTMLElement;\n    node.scrollIntoView(false);\n  }\n\n  selectViaInteraction(): void {\n    if (this.disabled) {\n      return;\n    }\n\n    this.selected = !this.selected;\n\n    if (this.selected) {\n      this.active();\n    } else {\n      this.inactive();\n    }\n\n    const event = new PadOptionSelectionChange(this, true);\n    this.onSelectionChange.emit(event);\n    this._cdr.markForCheck();\n  }\n\n  select(emit: boolean = true) {\n    this.selected = true;\n    this._cdr.markForCheck();\n    if (emit) {\n      const event = new PadOptionSelectionChange(this, true);\n      this.onSelectionChange.emit(event);\n    }\n  }\n\n  deselect(): void {\n    this.selected = false;\n    this._cdr.markForCheck();\n\n    const event = new PadOptionSelectionChange(this, false);\n    this.onSelectionChange.emit(event);\n  }\n\n  /** Set active (only styles) */\n  active(): void {\n    if (!this.activated) {\n      this.activated = true;\n      this._cdr.markForCheck();\n    }\n  }\n\n  /** Unset active (only styles) */\n  inactive(): void {\n    if (this.activated) {\n      this.activated = false;\n      this._cdr.markForCheck();\n    }\n  }\n}\n","import { AfterViewInit } from \"@angular/core\";\n// Angular\nimport { NgFor, NgTemplateOutlet } from \"@angular/common\";\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n} from \"@angular/core\";\n\n// Rx\nimport {\n  Observable,\n  Subscription,\n  defer,\n  filter,\n  merge,\n  startWith,\n  switchMap,\n  take,\n} from \"rxjs\";\n\n// Third parties\nimport { CompareWith, PadSafeAny } from \"pad-ui-lib/core/type\";\nimport { PadMenuModule } from \"pad-ui-lib/menu\";\n\n// Project\nimport { PadOptionComponent, PadOptionSelectionChange } from \"./option.component\";\n\nexport interface AutocompleteDataSourceItem {\n  value: string;\n  label: string;\n}\n\nexport type AutocompleteDataSource = Array<AutocompleteDataSourceItem | string | number>;\n\n@Component({\n  selector: \"pad-autocomplete\",\n  exportAs: \"padAutocomplete\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `<ng-template>\n    <pad-menu style=\"width: 100%\">\n      <ng-template\n        *ngTemplateOutlet=\"data ? optionsTemplate : contentTemplate\"></ng-template>\n\n      <ng-template #contentTemplate>\n        <ng-content></ng-content>\n      </ng-template>\n\n      <ng-template #optionsTemplate>\n        <pad-option\n          *ngFor=\"let item of data\"\n          [value]=\"item\"\n          [label]=\"getOptionDisplay(item)\">\n          {{ getOptionDisplay(item) }}\n        </pad-option>\n      </ng-template>\n    </pad-menu>\n  </ng-template>`,\n  standalone: true,\n  imports: [NgFor, NgTemplateOutlet, PadMenuModule, PadOptionComponent],\n})\nexport class PadAutocompleteComponent\n  implements AfterContentInit, AfterViewInit, OnDestroy\n{\n  private readonly _cdr = inject(ChangeDetectorRef);\n  private readonly _zone = inject(NgZone);\n\n  @Input() padWidth?: string | number;\n  @Input() compareWith: CompareWith = (o1, o2) => o1 === o2;\n  @Input() data?: AutocompleteDataSource;\n  @Input({ transform: booleanAttribute }) autoActiveFirstOption: boolean = false;\n  @Input({ transform: booleanAttribute }) backfill: boolean = false;\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() readonly onSelectedChange = new EventEmitter<PadOptionComponent>();\n  @Output() readonly opened = new EventEmitter<boolean>();\n\n  private _activeOptionIndex: number | null = null;\n  private _selectionChangeSubscription: Subscription = Subscription.EMPTY;\n  // private _optionMouseEnterSubscription: Subscription = Subscription.EMPTY;\n  // private _dataSourceChangeSubscription: Subscription = Subscription.EMPTY;\n  /** Provided by content */\n  @ContentChildren(PadOptionComponent, { descendants: true })\n  contentOptions!: QueryList<PadOptionComponent>;\n  /** Provided by dataSource */\n  @ViewChildren(PadOptionComponent)\n  dataSourceOptions!: QueryList<PadOptionComponent>;\n  @ViewChild(TemplateRef, { static: false }) template?: TemplateRef<PadSafeAny>;\n\n  isOpen: boolean = false;\n  showPanel: boolean = true;\n  activeOption: PadOptionComponent | null = null;\n\n  get options(): QueryList<PadOptionComponent> {\n    // first dataSource\n    if (this.data) {\n      return this.dataSourceOptions;\n    } else {\n      return this.contentOptions;\n    }\n  }\n\n  readonly optionSelections: Observable<PadOptionSelectionChange> = defer(() => {\n    if (this.options) {\n      return this.options.changes.pipe(\n        startWith(this.options),\n        switchMap(() => merge(...this.options.map(option => option.onSelectionChange)))\n      );\n    }\n\n    // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n    // Return a stream that we'll replace with the real one once everything is in place.\n    return this._zone.onStable.pipe(\n      take(1),\n      switchMap(() => this.optionSelections)\n    );\n  });\n\n  ngAfterContentInit(): void {\n    if (!this.data) {\n      this._initialize();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.data) {\n      this._initialize();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._selectionChangeSubscription.unsubscribe();\n  }\n\n  setVisibility(): void {\n    this.showPanel = !!this.options.length;\n    this._cdr.markForCheck();\n  }\n\n  activeNextOption(): void {\n    const nextIndex =\n      this._activeOptionIndex !== null &&\n      this._activeOptionIndex < this.options.length - 1\n        ? this._activeOptionIndex + 1\n        : 0;\n\n    this.setActiveOption(nextIndex);\n  }\n\n  activePreviousOption(): void {\n    const previousIndex =\n      this._activeOptionIndex !== null && this._activeOptionIndex - 1 >= 0\n        ? this._activeOptionIndex - 1\n        : this.options.length - 1;\n\n    this.setActiveOption(previousIndex);\n  }\n\n  getOptionDisplay(value: AutocompleteDataSourceItem | string | number) {\n    if (typeof value === \"object\") {\n      return value.label;\n    }\n\n    return value.toString();\n  }\n\n  getOptionIndex(value: PadSafeAny) {\n    return this.options.reduce(\n      (prevIndex, option, index) =>\n        prevIndex === -1\n          ? this.compareWith(value, option.value)\n            ? index\n            : -1\n          : prevIndex,\n      -1\n    );\n  }\n\n  getOption(value: PadSafeAny): PadOptionComponent | null {\n    return this.options.find(option => this.compareWith(value, option.value)) || null;\n  }\n\n  getOptionHeight(): number {\n    return 1.25 * 16 + 0.5625 * 16 * 2 + 0.125 * 16 * 2;\n  }\n\n  setActiveOption(index: number): void {\n    const option = this.options.get(index);\n    if (option && !option.activated) {\n      this.activeOption = option;\n      this._activeOptionIndex = index;\n      this.clear(option);\n      option.active();\n    } else {\n      this.activeOption = null;\n      this._activeOptionIndex = -1;\n      this.clear();\n    }\n\n    this._cdr.markForCheck();\n  }\n\n  clear(skip: PadOptionComponent | null = null, deselect: boolean = false): void {\n    this.options.forEach(option => {\n      if (option !== skip) {\n        if (deselect) {\n          option.deselect();\n        }\n        option.inactive();\n      }\n    });\n  }\n\n  private _initialize() {\n    this._subscribeOptionChanges();\n  }\n\n  private _subscribeOptionChanges(): void {\n    this._selectionChangeSubscription.unsubscribe();\n\n    this._selectionChangeSubscription = this.optionSelections\n      .pipe(filter(event => event.isUserInput))\n      .subscribe(event => {\n        console.log(\"autocomplete option changes emit\");\n\n        // event.source.select();\n        // event.source.active();\n        // this.activeOption = event.source;\n        // this._activeOptionIndex = this.getOptionIndex(this.activeOption.value);\n        // this.clear(event.source, true);\n        this.onSelectedChange.emit(event.source);\n      });\n  }\n}\n","// Angular\nimport { NgModule } from \"@angular/core\";\n\n// Third parties\nimport { PadAutocompleteTriggerDirective } from \"./autocomplete-trigger.directive\";\nimport { PadAutocompleteComponent } from \"./autocomplete.component\";\nimport { PadOptionComponent } from \"./option.component\";\n\n@NgModule({\n  declarations: [PadAutocompleteTriggerDirective],\n  exports: [\n    PadAutocompleteTriggerDirective,\n    PadAutocompleteComponent,\n    PadOptionComponent,\n  ],\n  imports: [PadAutocompleteComponent, PadOptionComponent],\n})\nexport class PadAutocompleteModule {}\n","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from \"@angular/core\";\nimport { PadAutocompleteTriggerDirective } from \"./autocomplete-trigger.directive\";\nimport { PadAutocompleteComponent } from \"./autocomplete.component\";\nimport { PadOptionComponent } from \"./option.component\";\nexport const providePadAutocomplete = (): EnvironmentProviders => {\n  const providers: Provider[] = [\n    PadAutocompleteTriggerDirective,\n    PadAutocompleteComponent,\n    PadOptionComponent,\n  ];\n\n  return makeEnvironmentProviders(providers);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}