{"version":3,"file":"ngx-mat-select.mjs","sources":["../../src/app/ngx-mat-select/shared/animations.ts","../../src/app/ngx-mat-select/shared/utils.ts","../../src/app/ngx-mat-select/component/panel/ngx-mat-select-panel.component.ts","../../src/app/ngx-mat-select/component/panel/ngx-mat-select-panel.component.html","../../src/app/ngx-mat-select/component/icon/ngx-mat-select-icon.component.ts","../../src/app/ngx-mat-select/component/icon/ngx-mat-select-icon.component.html","../../src/app/ngx-mat-select/component/search-box/ngx-mat-select-search-box.component.ts","../../src/app/ngx-mat-select/component/search-box/ngx-mat-select-search-box.component.html","../../src/app/ngx-mat-select/template/ngx-mat-select-option-content.directive.ts","../../src/app/ngx-mat-select/template/ngx-mat-select-trigger.directive.ts","../../src/app/ngx-mat-select/select-model.ts","../../src/app/ngx-mat-select/select-error.ts","../../src/app/ngx-mat-select/shared/ngx-mat-select-option.directive.ts","../../src/app/ngx-mat-select/component/loading/ngx-mat-select-loading.component.ts","../../src/app/ngx-mat-select/component/loading/ngx-mat-select-loading.component.html","../../src/app/ngx-mat-select/shared/option-label.pipe.ts","../../src/app/ngx-mat-select/component/trigger/ngx-mat-select-trigger.component.ts","../../src/app/ngx-mat-select/component/trigger/ngx-mat-select-trigger.component.html","../../src/app/ngx-mat-select/select.ts","../../src/app/ngx-mat-select/select.html","../../src/app/ngx-mat-select/shared/shared.module.ts","../../src/app/ngx-mat-select/component/fetch-options/ngx-mat-select-fetch-options.ts","../../src/app/ngx-mat-select/component/fetch-options/ngx-mat-select-fetch-options-client-side.directive.ts","../../src/app/ngx-mat-select/component/fetch-options/ngx-mat-select-fetch-options-server-side.directive.ts","../../src/app/ngx-mat-select/component/loading/ngx-mat-select-loading.module.ts","../../src/app/ngx-mat-select/component/panel/ngx-mat-select-panel.module.ts","../../src/app/ngx-mat-select/component/icon/ngx-mat-select-icon.module.ts","../../src/app/ngx-mat-select/component/search-box/ngx-mat-select-search-box.module.ts","../../src/app/ngx-mat-select/component/trigger/ngx-mat-select-trigger.module.ts","../../src/app/ngx-mat-select/select.module.ts","../../src/app/ngx-mat-select/ngx-mat-select.ts"],"sourcesContent":["import {\r\n  animate,\r\n  animateChild,\r\n  AnimationTriggerMetadata,\r\n  query,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\n\r\n/**\r\n * The following are all the animations for the mat-select component, with each\r\n * const containing the metadata for one animation.\r\n *\r\n * The values below match the implementation of the AngularJS Material mat-select animation.\r\n * @docs-private\r\n */\r\nexport const matSelectAnimations: {\r\n  /**\r\n   * @deprecated No longer being used. To be removed.\r\n   * @breaking-change 12.0.0\r\n   */\r\n  readonly transformPanelWrap: AnimationTriggerMetadata;\r\n  readonly transformPanel: AnimationTriggerMetadata;\r\n} = {\r\n  /**\r\n   * This animation ensures the select's overlay panel animation (transformPanel) is called when\r\n   * closing the select.\r\n   * This is needed due to https://github.com/angular/angular/issues/23302\r\n   */\r\n  transformPanelWrap: trigger('transformPanelWrap', [\r\n    transition('* => void', query('@transformPanel', [animateChild()], {optional: true})),\r\n  ]),\r\n\r\n  /** This animation transforms the select's overlay panel on and off the page. */\r\n  transformPanel: trigger('transformPanel', [\r\n    state(\r\n      'void',\r\n      style({\r\n        opacity: 0,\r\n        transform: 'scale(1, 0.8)',\r\n      })\r\n    ),\r\n    transition(\r\n      'void => showing',\r\n      animate(\r\n        '120ms cubic-bezier(0, 0, 0.2, 1)',\r\n        style({\r\n          opacity: 1,\r\n          transform: 'scale(1, 1)',\r\n        })\r\n      )\r\n    ),\r\n    transition('* => void', animate('100ms linear', style({opacity: 0}))),\r\n  ]),\r\n};\r\n","/**\r\n * to check being undefined or null\r\n * @param value\r\n */\r\nexport function isNullOrUndefined(value: unknown): value is undefined | null  {\r\n  return value === undefined || value === null;\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {CdkConnectedOverlay, ConnectedPosition, ViewportRuler} from '@angular/cdk/overlay';\r\nimport {Directionality} from '@angular/cdk/bidi';\r\n\r\nimport {BehaviorSubject, Observable, Subject, tap} from 'rxjs';\r\nimport {startWith, takeUntil} from 'rxjs/operators';\r\n\r\nimport {matSelectAnimations} from '../../shared/animations';\r\nimport {NgxMatSelectViewType} from '../../select-model';\r\nimport {isNullOrUndefined} from \"../../shared/utils\";\r\n\r\n@Component({\r\n  selector: 'ngx-mat-select-panel',\r\n  templateUrl: './ngx-mat-select-panel.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  animations: [matSelectAnimations.transformPanel],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\n/**\r\n * a panel which will be connected to the trigger element\r\n */\r\nexport class NgxMatSelectPanelComponent implements OnDestroy, OnInit, AfterViewInit {\r\n  /**\r\n   * the overlay API that will be appended into the DOM's body\r\n   * @private\r\n   */\r\n  @ViewChild(CdkConnectedOverlay) private overlay!: CdkConnectedOverlay;\r\n\r\n  /**\r\n   * it raises an event before the panel gets close\r\n   * */\r\n  @Output() beforeClose = new EventEmitter<void>();\r\n\r\n  /**\r\n   * it raises an event after the panel gets close\r\n   * */\r\n  @Output() afterClose = new EventEmitter<void>();\r\n\r\n  /**\r\n   * it raises an event after the panel gets open\r\n   * */\r\n  @Output() afterOpen = new EventEmitter<void>();\r\n\r\n  /**\r\n   * it raises an event before the panel gets open\r\n   * */\r\n  @Output() beforeOpen = new EventEmitter<void>();\r\n\r\n  /**\r\n   * if it's true it shows a back-drop behind the panel\r\n   */\r\n  @Input() hasBackdrop = true;\r\n\r\n  /**\r\n   * if it's true the panel does not open\r\n   */\r\n  @Input() disabled = false;\r\n\r\n  /**\r\n   * the specific theme selected form the form-field\r\n   */\r\n  @Input() theme?: string;\r\n\r\n  /** Class or list of classes to be applied to the menu's overlay panel. */\r\n  @Input() get overlayClass(): string | string[] {\r\n    return this._overlayClass;\r\n  }\r\n\r\n  set overlayClass(value: string | string[]) {\r\n    this._overlayClass = Array.isArray(value)\r\n      ? (value.join(' '))\r\n      : value;\r\n  }\r\n\r\n   _overlayClass = '';\r\n\r\n  /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\r\n  @Input() panelClass: string | string[] | Set<string> | {[key: string]: any} = [];\r\n\r\n  /**\r\n   * the origin element that we want to connect it with the panel\r\n   */\r\n  @Input() get connectedOverlayOrigin() {\r\n    return this._connectedOverlayOrigin;\r\n  }\r\n\r\n  set connectedOverlayOrigin(value: ElementRef) {\r\n    this._connectedOverlayOrigin = value;\r\n    this.updateOverlayWidth();\r\n  }\r\n\r\n  _connectedOverlayOrigin!: ElementRef;\r\n\r\n  /**\r\n   * the width of the panel\r\n   */\r\n  @Input() get width() {\r\n    return this._width;\r\n  }\r\n\r\n  set width(value: string | number | null | undefined) {\r\n    this._width = value;\r\n    this.updateOverlayWidth();\r\n  }\r\n\r\n  private _width: string | number | null | undefined = 'auto';\r\n\r\n  /**\r\n   * the height of the panel\r\n   */\r\n  @Input() height: number | null | undefined = 350;\r\n\r\n  get viewType() {\r\n    return this._viewType;\r\n  }\r\n\r\n  /**\r\n   * how to show the panel, it can be 'BottomSheet', 'FullScreen' and 'Default'\r\n   * @param value\r\n   */\r\n  @Input() set viewType(value: NgxMatSelectViewType | undefined | null) {\r\n    this._viewType = value;\r\n\r\n    let css = '';\r\n\r\n    switch (value) {\r\n      case 'BottomSheet':\r\n        css = 'bottom-sheet';\r\n        break;\r\n      case 'FullScreen':\r\n        css = 'full-screen';\r\n        break;\r\n      default:\r\n      case 'Default':\r\n        css = 'default';\r\n        break;\r\n    }\r\n\r\n    this.overlayClassViewType = `ngx-mat-select-panel-${css}-view-type`;\r\n  }\r\n\r\n  private _viewType: NgxMatSelectViewType | undefined | null\r\n    = 'Default';\r\n\r\n  overlayClassViewType = 'ngx-mat-select-default-view-type';\r\n\r\n  /**\r\n   * we can open and close the panel just with changing this state\r\n   */\r\n  isOpen$: Observable<boolean>;\r\n\r\n  _panelWidth: string | number  = 'auto';\r\n\r\n  _positions: ConnectedPosition[] = [\r\n    {\r\n      originX: 'start',\r\n      originY: 'bottom',\r\n      overlayX: 'start',\r\n      overlayY: 'top',\r\n    },\r\n    {\r\n      originX: 'end',\r\n      originY: 'bottom',\r\n      overlayX: 'end',\r\n      overlayY: 'top',\r\n    },\r\n    {\r\n      originX: 'start',\r\n      originY: 'top',\r\n      overlayX: 'start',\r\n      overlayY: 'bottom',\r\n      panelClass: 'ngx-mat-select-panel-above',\r\n    },\r\n    {\r\n      originX: 'end',\r\n      originY: 'top',\r\n      overlayX: 'end',\r\n      overlayY: 'bottom',\r\n      panelClass: 'ngx-mat-select-panel-above',\r\n    },\r\n  ];\r\n\r\n  /**\r\n   * an observable to manage destroying the other observables\r\n   * @private\r\n   */\r\n  private destroy$ = new Subject<void>();\r\n\r\n  /**\r\n   * a subject to control the opening of the panel with it\r\n   * @private\r\n   */\r\n  private isOpen$$ = new BehaviorSubject(false);\r\n\r\n  constructor(\r\n    private dir: Directionality,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private viewportRuler: ViewportRuler\r\n  ) {\r\n    this.isOpen$ = this.isOpen$$.asObservable();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.viewportRuler\r\n      .change()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(() => {\r\n        if (this.isOpen) {\r\n          this.updateOverlayWidth();\r\n          this.changeDetectorRef.detectChanges();\r\n        }\r\n      });\r\n  }\r\n\r\n  get isOpen() {\r\n    return this.isOpen$$.getValue();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.syncDirection();\r\n  }\r\n\r\n  /**\r\n   * whenever we want to update the position of the panel due to the position changes in the trigger origin element\r\n   * we should call this method\r\n   */\r\n  updatePosition() {\r\n    this.overlay.overlayRef.updatePosition();\r\n  }\r\n\r\n  /**\r\n   * to close the panel\r\n   * @param event\r\n   */\r\n  onOutsideClick(event: MouseEvent) {\r\n    if (event.target && this.connectedOverlayOrigin?.nativeElement.contains(event.target)) {\r\n      event.stopPropagation();\r\n    }\r\n\r\n    this.close();\r\n  }\r\n\r\n  /**\r\n   * to open the panel\r\n   */\r\n  open() {\r\n    this.beforeOpen.emit();\r\n\r\n    if (!this.disabled) {\r\n      this.isOpen$$.next(true);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to close the panel\r\n   */\r\n  close() {\r\n    this.beforeClose.emit();\r\n    this.isOpen$$.next(false);\r\n  }\r\n\r\n  onOverlayKeyDown(event: KeyboardEvent) {\r\n    if (event.code === 'Escape') {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  /** sets how wide the overlay panel should be. */\r\n  updateOverlayWidth(): void {\r\n    if (this.width === 'auto') {\r\n      this._panelWidth = this.connectedOverlayOrigin?.nativeElement.getBoundingClientRect().width;\r\n    } else {\r\n      this._panelWidth =  isNullOrUndefined(this.width) ? '' : this.width;\r\n    }\r\n\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(void 0);\r\n    this.destroy$.complete();\r\n    this.isOpen$$.complete();\r\n  }\r\n\r\n  /**\r\n   * to sync the direction of the overlay with the body direction\r\n   * @private\r\n   */\r\n  private syncDirection() {\r\n    this.dir.change\r\n      .pipe(\r\n        startWith(this.dir.value),\r\n        tap(dir => {\r\n          this.overlay.overlayRef?.setDirection(dir);\r\n          this.changeDetectorRef.detectChanges();\r\n        }),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n}\r\n","<ng-template\r\n  [cdkConnectedOverlayWidth]=\"_panelWidth\"\r\n  (overlayOutsideClick)=\"onOutsideClick($event)\"\r\n  cdkConnectedOverlay\r\n  [cdkConnectedOverlayOrigin]=\"connectedOverlayOrigin\"\r\n  [cdkConnectedOverlayOpen]=\"(isOpen$ | async) === true\"\r\n  [cdkConnectedOverlayLockPosition]=\"true\"\r\n  (attach)=\"afterOpen.emit()\"\r\n  [cdkConnectedOverlayPanelClass]=\"[overlayClassViewType, _overlayClass]\"\r\n  (overlayKeydown)=\"onOverlayKeyDown($event)\"\r\n  [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n  [cdkConnectedOverlayPositions]=\"_positions\"\r\n  cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\r\n  (detach)=\"afterClose.emit()\">\r\n  <div\r\n    class=\"ngx-mat-select-panel mdc-menu-surface mdc-menu-surface--open {{ theme }}\"\r\n    [ngClass]=\"panelClass\"\r\n    [style.height.px]=\"viewType === 'Default'? height: ''\"\r\n    role=\"listbox\"\r\n    [@transformPanel]=\"(isOpen$ | async) ? 'showing' : ''\"\r\n  >\r\n    <ng-content></ng-content>\r\n  </div>\r\n</ng-template>\r\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-select-icon',\r\n  templateUrl: './ngx-mat-select-icon.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxMatSelectIconComponent {\r\n  /**\r\n   * icon type\r\n   */\r\n  @Input() icon?: 'Times' | 'ArrowRight' | 'Search' | 'Remove' | 'ArrowDown';\r\n  /**\r\n   * the width of the icon in number\r\n   */\r\n  @Input() width = 24;\r\n\r\n  /**\r\n   * the height of the icon in number\r\n   */\r\n  @Input() height = 24;\r\n}\r\n","<ng-container [ngSwitch]=\"icon\">\r\n  <ng-container *ngSwitchCase=\"'Times'\">\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      x=\"0px\"\r\n      y=\"0px\"\r\n      [attr.width]=\"width\"\r\n      [attr.height]=\"height\"\r\n      viewBox=\"0 0 24 24\">\r\n      <path\r\n        d=\"M 4.9902344 3.9902344 A 1.0001 1.0001 0 0 0 4.2929688 5.7070312 L 10.585938 12 L 4.2929688 18.292969 A 1.0001 1.0001 0 1 0 5.7070312 19.707031 L 12 13.414062 L 18.292969 19.707031 A 1.0001 1.0001 0 1 0 19.707031 18.292969 L 13.414062 12 L 19.707031 5.7070312 A 1.0001 1.0001 0 0 0 18.980469 3.9902344 A 1.0001 1.0001 0 0 0 18.292969 4.2929688 L 12 10.585938 L 5.7070312 4.2929688 A 1.0001 1.0001 0 0 0 4.9902344 3.9902344 z\"></path>\r\n    </svg>\r\n  </ng-container>\r\n\r\n  <ng-container *ngSwitchCase=\"'ArrowRight'\">\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"width\" [attr.height]=\"height\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n      <g id=\"Arrow / Arrow_Right_LG\">\r\n        <path\r\n          id=\"Vector\"\r\n          d=\"M21 12L16 7M21 12L16 17M21 12H3\"\r\n          stroke-width=\"2\"\r\n          stroke-linecap=\"round\"\r\n          stroke-linejoin=\"round\" />\r\n      </g>\r\n    </svg>\r\n  </ng-container>\r\n\r\n  <ng-container *ngSwitchCase=\"'ArrowDown'\">\r\n    <svg viewBox=\"0 0 24 24\" [attr.width]=\"width\" [attr.height]=\"height\" focusable=\"false\" aria-hidden=\"true\">\r\n      <path d=\"M7 10l5 5 5-5z\" />\r\n    </svg>\r\n  </ng-container>\r\n\r\n  <ng-container *ngSwitchCase=\"'Remove'\">\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      x=\"0px\"\r\n      y=\"0px\"\r\n      [attr.width]=\"width\"\r\n      [attr.height]=\"height\"\r\n      viewBox=\"0 0 50 50\">\r\n      <path\r\n        d=\"M 25 2 C 12.309534 2 2 12.309534 2 25 C 2 37.690466 12.309534 48 25 48 C 37.690466 48 48 37.690466 48 25 C 48 12.309534 37.690466 2 25 2 z M 25 4 C 36.609534 4 46 13.390466 46 25 C 46 36.609534 36.609534 46 25 46 C 13.390466 46 4 36.609534 4 25 C 4 13.390466 13.390466 4 25 4 z M 32.990234 15.986328 A 1.0001 1.0001 0 0 0 32.292969 16.292969 L 25 23.585938 L 17.707031 16.292969 A 1.0001 1.0001 0 0 0 16.990234 15.990234 A 1.0001 1.0001 0 0 0 16.292969 17.707031 L 23.585938 25 L 16.292969 32.292969 A 1.0001 1.0001 0 1 0 17.707031 33.707031 L 25 26.414062 L 32.292969 33.707031 A 1.0001 1.0001 0 1 0 33.707031 32.292969 L 26.414062 25 L 33.707031 17.707031 A 1.0001 1.0001 0 0 0 32.990234 15.986328 z\"></path>\r\n    </svg>\r\n  </ng-container>\r\n\r\n  <ng-container *ngSwitchCase=\"'Search'\">\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      x=\"0px\"\r\n      y=\"0px\"\r\n      [attr.width]=\"width\"\r\n      [attr.height]=\"height\"\r\n      viewBox=\"0 0 50 50\">\r\n      <path\r\n        d=\"M 21 3 C 11.621094 3 4 10.621094 4 20 C 4 29.378906 11.621094 37 21 37 C 24.710938 37 28.140625 35.804688 30.9375 33.78125 L 44.09375 46.90625 L 46.90625 44.09375 L 33.90625 31.0625 C 36.460938 28.085938 38 24.222656 38 20 C 38 10.621094 30.378906 3 21 3 Z M 21 5 C 29.296875 5 36 11.703125 36 20 C 36 28.296875 29.296875 35 21 35 C 12.703125 35 6 28.296875 6 20 C 6 11.703125 12.703125 5 21 5 Z\"></path>\r\n    </svg>\r\n  </ng-container>\r\n</ng-container>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport {fromEvent, Subject, tap} from 'rxjs';\r\nimport {debounceTime, map, startWith, takeUntil} from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-select-search-box',\r\n  templateUrl: './ngx-mat-select-search-box.component.html',\r\n  styleUrls: ['./ngx-mat-select-search-box.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    class: 'ngx-mat-select-search-box',\r\n    '[class.ngx-mat-select-search-box--focused]': 'focused',\r\n  },\r\n})\r\n/**\r\n * a search box that clint can search through all the options\r\n */\r\nexport class NgxMatSelectSearchBoxComponent implements AfterViewInit, OnDestroy {\r\n  /**\r\n   * the search box input element\r\n   * @private\r\n   */\r\n  @ViewChild('searchBox') private searchBox!: ElementRef<HTMLInputElement>;\r\n\r\n  /**\r\n   * it raises an event whenever the client write down a word on the input element.\r\n   * the delay go with this property and the delay will cause a delay on the raising the event\r\n   */\r\n  @Output() search = new EventEmitter<string>();\r\n\r\n  /**\r\n   * emits an event when the client press a keyboard\r\n   */\r\n  @Output() handleKeydown = new EventEmitter<KeyboardEvent>();\r\n\r\n  /**\r\n   * to make a debounce-time delay whenever the client write a word down, in millisecond\r\n   */\r\n  @Input() debounceTime = 200;\r\n\r\n  /**\r\n   * the placeholder on the input search-box\r\n   */\r\n  @Input() placeholder = '';\r\n\r\n  /**\r\n   * the value of the input which is bound to the input with two ways binding\r\n   */\r\n  value = '';\r\n\r\n  /**\r\n   * whether search-input is focused\r\n   */\r\n  focused = true;\r\n\r\n  /**\r\n   * an observable to manage destroying the other observables\r\n   * @private\r\n   */\r\n  private destroy$ = new Subject<void>();\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initializeSearchBox();\r\n  }\r\n\r\n  /**\r\n   * to handle focusing in the search-box\r\n   */\r\n  focus() {\r\n    if (!this.focused) {\r\n      this.focused = true;\r\n    }\r\n    this.searchBox.nativeElement.focus();\r\n  }\r\n\r\n  /**\r\n   * to handle focusing in the search-box\r\n   */\r\n  blur() {\r\n    if (this.focused) {\r\n      this.focused = false;\r\n    }\r\n    this.searchBox.nativeElement.blur();\r\n  }\r\n\r\n  /**\r\n   * to clear the input value\r\n   */\r\n  clear() {\r\n    this.value = '';\r\n    this.search.emit('');\r\n  }\r\n\r\n  /**\r\n   * when blurring from the search-box input\r\n   */\r\n  _onBlur() {\r\n    this.focused = false;\r\n  }\r\n\r\n  /**\r\n   * when focusing on the search-box input\r\n   */\r\n  _onFocus() {\r\n    this.focused = true;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(void 0);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /**\r\n   * to listen to the search-box input event whenever a word is written down\r\n   * @private\r\n   */\r\n  private initializeSearchBox() {\r\n    fromEvent(this.searchBox.nativeElement, 'input')\r\n      .pipe(\r\n        map((event: Event) => (event.target as HTMLInputElement).value),\r\n        debounceTime(this.debounceTime),\r\n        startWith(''),\r\n        tap(searchTerm => {\r\n          this.search.emit(searchTerm);\r\n        }),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n}\r\n","<div class=\"ngx-mat-select-search-box-icon\">\r\n  <div *ngIf=\"!value\">\r\n    <ngx-mat-select-icon icon=\"Search\"> </ngx-mat-select-icon>\r\n  </div>\r\n\r\n  <div (click)=\"clear()\" *ngIf=\"!!value\">\r\n    <ngx-mat-select-icon icon=\"Times\"> </ngx-mat-select-icon>\r\n  </div>\r\n</div>\r\n\r\n<input\r\n  (blur)=\"_onBlur()\"\r\n  (focus)=\"_onFocus()\"\r\n  class=\"ngx-mat-select-search-box-input\"\r\n  type=\"text\"\r\n  #searchBox\r\n  [(ngModel)]=\"value\"\r\n  [placeholder]=\"placeholder || ''\"\r\n  (keydown)=\"handleKeydown.emit($event)\" />\r\n","import {Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ngxMatSelectOptionContent]',\r\n})\r\n/**\r\n * to show the custom template inside the options\r\n */\r\nexport class NgxMatSelectOptionContentDirective {\r\n  constructor(public template: TemplateRef<{isSelected: boolean, $implicit: any}>) {}\r\n}\r\n","import {Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ngxMatSelectTrigger]',\r\n})\r\n/**\r\n * to show a custom template for the selected options inside the form-field\r\n */\r\nexport class NgxMatSelectTriggerDirective {\r\n  constructor(public template: TemplateRef<{$implicit: boolean}>) {}\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\n/**\r\n * an interface to handle server-side query params request\r\n */\r\nexport interface NgxMatSelectSearchParams {\r\n  searchTerm: string;\r\n  pageNumber: number;\r\n  pageSize: number;\r\n}\r\n\r\n/**\r\n * selectionChange event interface\r\n */\r\nexport interface NgxMatSelectionChangeEvent {\r\n  selected: boolean;\r\n  value: unknown;\r\n}\r\n\r\n/**\r\n * all the kind of the views for the multiple select-box trigger\r\n */\r\nexport type NgxMatSelectMultipleDisplay = 'oneRowChip' | 'multipleRowChip' | 'text';\r\n\r\n/**\r\n * some good class to show the panel\r\n */\r\nexport type NgxMatSelectViewType = 'FullScreen' | 'BottomSheet' | 'Default';\r\n\r\n/**\r\n * 'primitive' means the value can be 'boolean', 'number', 'string' and the object means the value can be key-value 'object',\r\n * and unknown means there was no any option to detect the type from it\r\n */\r\nexport type NgxMatSelectOptionType = 'primitive' | 'object' | 'unknown';\r\n\r\n/**\r\n * Object that can be used to configure the default options for the select-search-box module\r\n */\r\nexport interface NgxMatSelectSearchBoxConfigs {\r\n  searchBoxPlaceholder?: string;\r\n  hasSearchBox?: boolean;\r\n}\r\n\r\n/** Object that can be used to configure the default options for the select module. */\r\nexport interface NgxMatSelectConfig extends NgxMatSelectSearchBoxConfigs {\r\n  viewType?: NgxMatSelectViewType;\r\n\r\n  hasBackButton?: boolean;\r\n\r\n  /**\r\n   * how to show the selected options inside the form-field when the multiple value it's true\r\n   */\r\n  multipleDisplay?: NgxMatSelectMultipleDisplay;\r\n\r\n  /**\r\n   * A property to uniquely identify a value in options.\r\n   */\r\n  dataKey?: string;\r\n\r\n  /**\r\n   * Name of the label field of an option\r\n   */\r\n  optionLabel?: string;\r\n\r\n  /**\r\n   * Name of the value field of an option.\r\n   */\r\n  optionValue?: string;\r\n\r\n  /**\r\n   /**\r\n   * Width of the panel. If set to `auto`, the panel will match the trigger width.\r\n   * If set to null or an empty string, the panel will grow to match the longest option's text.\r\n   */\r\n  panelWidth?: string | number | null;\r\n\r\n  /** Class or list of classes to be applied to the menu's overlay panel. */\r\n  overlayPanelClass?: string | string[];\r\n\r\n  /**\r\n   * the height of an option, it's really important to handle the virtual scroll\r\n   */\r\n  optionHeight?: number;\r\n\r\n  /**\r\n   * the height of the panel\r\n   */\r\n  panelHeight?: number | null;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the select module. */\r\nexport const NGX_MAT_SELECT_CONFIG = new InjectionToken<NgxMatSelectConfig>('NGX_MAT_SELECT_CONFIG');\r\n\r\n/**\r\n * a type for the provided value in select\r\n */\r\nexport interface NgxMatSelectValue {\r\n  value: unknown[] | undefined | null;\r\n  shouldBeSyncedWithSelection: boolean;\r\n}\r\n","/**\r\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\r\n * after initialization.\r\n * @docs-private\r\n */\r\nexport function getSelectDynamicMultipleError(): Error {\r\n  return Error('Cannot change `multiple` mode of select after initialization.');\r\n}\r\n\r\nexport function getSelectOptionLabelError(): Error {\r\n  return Error('lib-select error: optionLabel is not defined');\r\n}\r\n","import {Directive, Input} from '@angular/core';\r\nimport {MatOption} from '@angular/material/core';\r\n\r\n@Directive({\r\n  selector: 'mat-option[ngxMatSelectOption]',\r\n  host: {\r\n    class: 'ngx-mat-select-option',\r\n  },\r\n})\r\nexport class NgxMatSelectOptionDirective {\r\n  /**\r\n   * if true the option gets selected\r\n   * @param value\r\n   */\r\n  @Input() set selected(value: boolean) {\r\n    if (value) {\r\n      this.option.select();\r\n    } else {\r\n      this.option.deselect();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * if true the option gets activated\r\n   * @param activated\r\n   */\r\n  @Input() set activated(activated: boolean) {\r\n    if (activated) {\r\n      this.option.setActiveStyles();\r\n    } else {\r\n      this.option.setInactiveStyles();\r\n    }\r\n  }\r\n\r\n  constructor(private option: MatOption) {\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\n\n@Component({\n  selector: 'ngx-mat-select-loading',\n  templateUrl: './ngx-mat-select-loading.component.html',\n  styleUrls: ['./ngx-mat-select-loading.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * a loading inside the panel when there is a delay in loading the data\n */\nexport class NgxMatSelectLoadingComponent {\n  /**\n   * if ture the spinner gets appeared\n   */\n  @Input() loading = false;\n}\n","<div *ngIf=\"loading\" class=\"lib-select-loading\">\r\n  <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n</div>\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'toOptionLabel',\r\n})\r\n/**\r\n * to get the value of the specific property (optionLabel) from the option\r\n */\r\nexport class ToOptionLabelPipe implements PipeTransform {\r\n  /**\r\n   * to get the value of the specific property (optionLabel) from the option\r\n   * @param option\r\n   * @param optionLabel\r\n   */\r\n  transform(option: any | any[], optionLabel?: string): string {\r\n    return this.getOptionLabel(option, optionLabel);\r\n  }\r\n\r\n  private getOptionLabel(option: any | any[], optionLabel?: string): string {\r\n    if (Array.isArray(option)) {\r\n      return option.map(s => this.getOptionLabel(s, optionLabel)).join(', ');\r\n    } else {\r\n      return option !== null && optionLabel && typeof option === 'object' ? option[optionLabel] : option;\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  TemplateRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport {NgxMatSelectMultipleDisplay} from '../../select-model';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-select-trigger',\r\n  templateUrl: './ngx-mat-select-trigger.component.html',\r\n  host: {\r\n    class: 'ngx-mat-select-trigger',\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n/**\r\n * a component which shows all selected options inside the form-field\r\n */\r\nexport class NgxMatSelectTriggerComponent {\r\n  /**\r\n   * it raises an event to remove an item from the selected options\r\n   */\r\n  @Output() deselect = new EventEmitter<unknown>();\r\n\r\n  /**\r\n   * the custom template which is used as trigger inside the select box, will be provided with selected options\r\n   */\r\n  @Input() customTrigger?: TemplateRef<{$implicit: boolean}> | null;\r\n\r\n  /**\r\n   * the selected items\r\n   */\r\n  @Input() selection!: unknown[];\r\n\r\n  /**\r\n   * if the trigger is empty or not, the default value is true\r\n   */\r\n  @Input() empty = true;\r\n\r\n  /**\r\n   * the placeholder when there is no value\r\n   */\r\n  @Input() placeholder?: string;\r\n\r\n  /**\r\n   * to disable the trigger\r\n   */\r\n  @Input() disabled = false;\r\n\r\n  /**\r\n   * if it's true it shows the multiple text and chips\r\n   */\r\n  @Input() multiple = false;\r\n\r\n  /**\r\n   * Name of the label field of an option\r\n   * */\r\n  @Input() optionLabel?: string;\r\n\r\n  /**\r\n   * how to show the selected options inside the form-field when the multiple value it's true\r\n   */\r\n  @Input() multipleDisplay?: NgxMatSelectMultipleDisplay = 'multipleRowChip';\r\n}\r\n","<ng-template #defaultTrigger>\r\n  <ng-container *ngIf=\"multiple; else singleTemplate\">\r\n    <mat-chip-grid [disabled]=\"disabled\" *ngIf=\"multipleDisplay !== 'text'\" class=\"ngx-mat-select-chips\"\r\n                   #multipleTemplate>\r\n      <div [ngClass]=\"['ngx-mat-select-chip-grid-row', 'ngx-mat-select-chip-grid-row--' + multipleDisplay]\">\r\n        <mat-chip-row *ngFor=\"let selected of selection\" (removed)=\"deselect.emit(selected)\" [editable]=\"false\">\r\n          {{ selected | toOptionLabel: optionLabel }}\r\n          <button matChipRemove>\r\n            <ngx-mat-select-icon class=\"ngx-mat-select-chip-grid-row-icon\" [width]=\"18\" [height]=\"18\"\r\n                                 icon=\"Remove\"></ngx-mat-select-icon>\r\n          </button>\r\n        </mat-chip-row>\r\n      </div>\r\n      <input readonly type=\"text\" [matChipInputFor]=\"multipleTemplate\" class=\"ngx-mat-select-input-chips\"/>\r\n    </mat-chip-grid>\r\n\r\n    <ng-container *ngIf=\"multipleDisplay === 'text'\">\r\n      <div class=\"ngx-mat-select-value\">\r\n        {{ selection | toOptionLabel: optionLabel }}\r\n      </div>\r\n    </ng-container>\r\n  </ng-container>\r\n\r\n  <ng-template #singleTemplate>\r\n    <div class=\"ngx-mat-select-value\">{{ selection[0] | toOptionLabel: optionLabel }}</div>\r\n  </ng-template>\r\n</ng-template>\r\n\r\n<div class=\"ngx-mat-select-value ngx-mat-select-value--{{ multipleDisplay }}\" [ngSwitch]=\"empty\">\r\n  <span class=\"ngx-mat-select-placeholder ngx-mat-select-min-line\" *ngSwitchCase=\"true\">{{ placeholder }}</span>\r\n  <span class=\"ngx-mat-select-value-text\" *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\r\n    <span class=\"ngx-mat-select-min-line\" *ngSwitchDefault>\r\n      <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\r\n    </span>\r\n    <ng-container *ngSwitchCase=\"true\">\r\n      <ng-container *ngIf=\"customTrigger\">\r\n                              <ng-container\r\n                                *ngTemplateOutlet=\"customTrigger; context: {$implicit: multiple ? selection : selection[0]}\"></ng-container>\r\n      </ng-container>\r\n\r\n    </ng-container>\r\n  </span>\r\n</div>\r\n<div class=\"ngx-mat-select-arrow-wrapper\">\r\n  <ngx-mat-select-icon class=\"ngx-mat-select-arrow\" icon=\"ArrowDown\"></ngx-mat-select-icon>\r\n</div>\r\n","import {\r\n  Attribute,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  isDevMode,\r\n  OnChanges,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  QueryList,\r\n  Renderer2,\r\n  Self,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewChildren,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {AbstractControl, ControlValueAccessor, FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\r\nimport {SelectionModel} from '@angular/cdk/collections';\r\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\r\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {MAT_FORM_FIELD, MatFormField, MatFormFieldControl} from '@angular/material/form-field';\r\nimport {\r\n  MatOption,\r\n  MatOptionSelectionChange,\r\n  CanDisable,\r\n  MAT_OPTION_PARENT_COMPONENT,\r\n  mixinDisableRipple,\r\n  mixinTabIndex,\r\n  mixinDisabled,\r\n  mixinErrorState,\r\n  ErrorStateMatcher,\r\n  HasTabIndex,\r\n  CanUpdateErrorState,\r\n  CanDisableRipple,\r\n} from '@angular/material/core';\r\n\r\nimport {Observable, of, ReplaySubject, Subject} from 'rxjs';\r\n\r\nimport {NgxMatSelectPanelComponent} from './component/panel/ngx-mat-select-panel.component';\r\nimport {NgxMatSelectSearchBoxComponent} from './component/search-box/ngx-mat-select-search-box.component';\r\nimport {NgxMatSelectOptionContentDirective} from './template/ngx-mat-select-option-content.directive';\r\nimport {NgxMatSelectTriggerDirective} from './template/ngx-mat-select-trigger.directive';\r\nimport {\r\n  NGX_MAT_SELECT_CONFIG,\r\n  NgxMatSelectConfig,\r\n  NgxMatSelectionChangeEvent,\r\n  NgxMatSelectMultipleDisplay,\r\n  NgxMatSelectValue,\r\n  NgxMatSelectViewType,\r\n} from './select-model';\r\nimport {matSelectAnimations} from './shared/animations';\r\nimport {NgxMatSelectFetchOptions} from './component/fetch-options/ngx-mat-select-fetch-options';\r\nimport {isNullOrUndefined} from './shared/utils';\r\nimport {filter, map, take} from 'rxjs/operators';\r\nimport {getSelectDynamicMultipleError} from './select-error';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n// Boilerplate for applying mixins to SelectBox.\r\n/** @docs-private */\r\nconst _MatSelectMixinBase = mixinDisableRipple(\r\n  mixinTabIndex(\r\n    mixinDisabled(\r\n      mixinErrorState(\r\n        class {\r\n          /**\r\n           * Emits whenever the component state changes and should cause the parent\r\n           * form-field to update. Implemented as part of `MatFormFieldControl`.\r\n           * @docs-private\r\n           */\r\n          readonly stateChanges = new Subject<void>();\r\n\r\n          constructor(\r\n            public _elementRef: ElementRef,\r\n            public _defaultErrorStateMatcher: ErrorStateMatcher,\r\n            public _parentForm: NgForm,\r\n            public _parentFormGroup: FormGroupDirective,\r\n            /**\r\n             * Form control bound to the component.\r\n             * Implemented as part of `MatFormFieldControl`.\r\n             * @docs-private\r\n             */\r\n            public ngControl: NgControl\r\n          ) {\r\n          }\r\n        }\r\n      )\r\n    )\r\n  )\r\n);\r\n\r\n@Component({\r\n  selector: 'ngx-mat-select',\r\n  templateUrl: 'select.html',\r\n  styleUrls: ['select.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  animations: [matSelectAnimations.transformPanelWrap],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  exportAs: 'ngxMatSelect',\r\n  inputs: ['disabled', 'disableRipple', 'tabIndex'],\r\n  host: {\r\n    role: 'combobox',\r\n    'aria-autocomplete': 'none',\r\n    'aria-haspopup': 'listbox',\r\n    class: 'ngx-mat-select',\r\n    '[attr.id]': 'id',\r\n    '[attr.tabindex]': 'tabIndex',\r\n    '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\r\n    '[attr.aria-expanded]': 'panelOpen',\r\n    '[attr.aria-label]': 'ariaLabel || null',\r\n    '[attr.aria-required]': 'required.toString()',\r\n    '[attr.aria-disabled]': 'disabled.toString()',\r\n    '[attr.aria-invalid]': 'errorState',\r\n    ngSkipHydration: '',\r\n    '[class.ngx-mat-select-disabled]': 'disabled',\r\n    '[class.ngx-mat-select-invalid]': 'errorState',\r\n    '[class.ngx-mat-select-required]': 'required',\r\n    '[class.ngx-mat-select-empty]': 'empty',\r\n    '[class.ngx-mat-select-multiple]': 'multiple',\r\n    '(keydown)': '_handleKeydown($event)',\r\n    '(focus)': '_onFocus()',\r\n    '(blur)': '_onBlur()',\r\n  },\r\n  providers: [\r\n    {provide: MAT_OPTION_PARENT_COMPONENT, useExisting: NgxMatSelectComponent},\r\n    {provide: MatFormFieldControl, useExisting: NgxMatSelectComponent},\r\n  ],\r\n})\r\n/**\r\n * a select box to select multiple and single options from some provided options\r\n * this works with MatFormField\r\n */\r\nexport class NgxMatSelectComponent\r\n  extends _MatSelectMixinBase\r\n  implements ControlValueAccessor,\r\n    NgxMatSelectConfig,\r\n    NgxMatSelectFetchOptions,\r\n    DoCheck,\r\n    CanDisable,\r\n    HasTabIndex,\r\n    MatFormFieldControl<unknown>,\r\n    CanUpdateErrorState,\r\n    CanDisableRipple,\r\n    OnChanges,\r\n    OnInit {\r\n  /**\r\n   * the options which are visible in the panel\r\n   */\r\n  @ViewChildren(MatOption) visibleOptions!: QueryList<MatOption>;\r\n\r\n  /**\r\n   * the custom content of the form-field to show\r\n   */\r\n  @ContentChild(NgxMatSelectTriggerDirective) triggerContent?: NgxMatSelectTriggerDirective;\r\n\r\n  /**\r\n   * a template which carries the content of an option\r\n   */\r\n  @ContentChild(NgxMatSelectOptionContentDirective) selectOptionContent?: NgxMatSelectOptionContentDirective | null;\r\n\r\n  /**\r\n   * the search box that we also use it for initializing the filtered options\r\n   */\r\n  @ViewChild(NgxMatSelectSearchBoxComponent) searchBoxComponent?: NgxMatSelectSearchBoxComponent;\r\n\r\n  /**\r\n   * the cdk virtual scroll viewport\r\n   */\r\n  @ViewChild(CdkVirtualScrollViewport) virtualScroll!: CdkVirtualScrollViewport;\r\n\r\n  /**\r\n   * the panel which is connected to the form-field\r\n   */\r\n  @ViewChild(NgxMatSelectPanelComponent) panel!: NgxMatSelectPanelComponent;\r\n\r\n\r\n  /** Event emitted when the select panel has been toggled. */\r\n  @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  /**\r\n   * to emits a new event, whenever the client select or deselect that item\r\n   */\r\n  @Output() selectionChange = new EventEmitter<NgxMatSelectionChangeEvent>();\r\n\r\n  /** Event emitted when the select has been opened. */\r\n  @Output() readonly opened: Observable<void> = this.openedChange.pipe(\r\n    filter(o => o),\r\n    map(() => {\r\n    })\r\n  );\r\n\r\n  /** Event emitted when the select has been closed. */\r\n  @Output() readonly closed: Observable<void> = this.openedChange.pipe(\r\n    filter(o => !o),\r\n    map(() => {\r\n    })\r\n  );\r\n\r\n  /**\r\n   * Event that emits whenever the raw value of the select changes. This is here primarily\r\n   * to facilitate the two-way binding for the `value` input.\r\n   * @docs-private\r\n   */\r\n  @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  /**\r\n   * if it's false we can just select one item from the options\r\n   */\r\n  @Input()\r\n  get multiple() {\r\n    return this._multiple;\r\n  }\r\n\r\n  set multiple(value: boolean) {\r\n    if (this.selectionModel && isDevMode()) {\r\n      throw getSelectDynamicMultipleError();\r\n    }\r\n\r\n    this._multiple = coerceBooleanProperty(value);\r\n  }\r\n\r\n  private _multiple = false;\r\n\r\n  /** Aria label of the select. */\r\n  @Input('aria-label') ariaLabel = '';\r\n\r\n  /**\r\n   * to show a button next to the search-box to close the panel\r\n   */\r\n  @Input() hasBackButton?: boolean = this.defaultOptions?.hasBackButton ?? false;\r\n\r\n  /**\r\n   * recommended to use dataKey instead of compareWith,\r\n   * Function to compare the option values with the selected values. The first argument is a value from an option.\r\n   * The second is a value from the selection. A boolean should be returned.\r\n   */\r\n  @Input()\r\n  compareWith?: (o1: any, o2: any) => boolean;\r\n\r\n  /**\r\n   * the height of an option, it's really important to handle the virtual scroll\r\n   * the default value is 48\r\n   */\r\n  @Input() optionHeight?: number = this.defaultOptions?.optionHeight ?? 48;\r\n\r\n  /**\r\n   * the height of the panel of the options\r\n   * the default value is 350\r\n   */\r\n  @Input() panelHeight?: number | null | undefined = this.defaultOptions?.panelHeight ?? 350;\r\n\r\n  /**\r\n   * it can be 'Default', 'FullScreen' or 'BottomSheet'\r\n   * 'Default' means the panel will be showed connected to the form-filed\r\n   * 'FullScreen' means the panel will be opened in full-screen mode\r\n   * 'BottomSheet' means the panel will be opened from bottom to semi top\r\n   */\r\n  @Input() viewType?: NgxMatSelectViewType = this.defaultOptions?.viewType ?? 'Default';\r\n\r\n  /**\r\n   * Width of the panel. If set to `auto`, the panel will match the trigger width.\r\n   * If set to null or an empty string, the panel will grow to match the longest option's text.\r\n   * the default value is 'auto'\r\n   */\r\n  @Input() panelWidth: string | number | null | undefined =\r\n    this.defaultOptions && typeof this.defaultOptions.panelWidth !== 'undefined'\r\n      ? this.defaultOptions.panelWidth\r\n      : 'auto';\r\n\r\n  /** Classes to be passed to the select panel. Supports the same syntax as `ngClass`. */\r\n  @Input() panelClass: string | string[] | Set<string> | { [key: string]: any } = [];\r\n\r\n  /**\r\n   * Name of the label field of an option\r\n   * it can be undefined, when options are simple primitive values such as a string array\r\n   */\r\n  @Input() optionLabel?: string = this.defaultOptions?.optionLabel;\r\n\r\n  /**\r\n   * Name of the value field of an option.\r\n   * If optionValue is omitted and the object has no value property, the object itself becomes the value of an option. Note that,\r\n   * when options are simple primitive values such as a string array, no optionLabel and optionValue would be necessary\r\n   */\r\n  @Input() optionValue: string | undefined = this.defaultOptions?.optionValue;\r\n\r\n  /**\r\n   * A property to uniquely identify a value in options.\r\n   * it would use to compare option with value\r\n   */\r\n  @Input() dataKey?: string;\r\n\r\n  /**\r\n   * how to show the selected options inside the form-field when the multiple value it's true\r\n   * the default value is 'text'\r\n   */\r\n  @Input() multipleDisplay?: NgxMatSelectMultipleDisplay = this.defaultOptions?.multipleDisplay ?? 'text';\r\n\r\n  /** Placeholder to be shown if no value has been selected. */\r\n  @Input()\r\n  get placeholder(): string {\r\n    return this._placeholder;\r\n  }\r\n\r\n  set placeholder(value: string | undefined | null) {\r\n    this._placeholder = isNullOrUndefined(value) ? '' : value;\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  private _placeholder!: string;\r\n\r\n  /** Unique id of the element. */\r\n  @Input()\r\n  get id(): string {\r\n    return this._id;\r\n  }\r\n\r\n  set id(value: string) {\r\n    this._id = value || this._uid;\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  private _id!: string;\r\n\r\n  /** Whether the component is required. */\r\n  @Input()\r\n  get required(): boolean {\r\n    return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n  }\r\n\r\n  set required(value: BooleanInput) {\r\n    this._required = coerceBooleanProperty(value);\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  private _required: boolean | undefined;\r\n\r\n  /**\r\n   * Implemented as part of MatFormFieldControl.\r\n   * @docs-private\r\n   */\r\n  @Input('aria-describedby') userAriaDescribedBy?: string;\r\n\r\n  /** Value of the select control. */\r\n  @Input()\r\n  get value(): any {\r\n    return this._toFlat(this.getValue());\r\n  }\r\n\r\n  set value(newValue: any) {\r\n    this.setValue(newValue, true, false);\r\n    this._onChange(newValue);\r\n  }\r\n\r\n  /**\r\n   * if it's true the search box will be showed, the default value is false\r\n   */\r\n  hasSearchBox = this.defaultOptions?.hasSearchBox ?? false;\r\n\r\n  /**\r\n   * a placeholder for the search-box to be shown if nothing is written in the search-box\r\n   */\r\n  searchBoxPlaceholder = this.defaultOptions?.searchBoxPlaceholder ?? '';\r\n\r\n  /** Ideal origin for the overlay panel. */\r\n  preferredOverlayOrigin?: ElementRef;\r\n\r\n  /**\r\n   * the selection model which enhances the selecting actions like deselect and select and so on\r\n   */\r\n  selectionModel?: SelectionModel<unknown>;\r\n\r\n  /**\r\n   * the options that will be appeared in the screens\r\n   */\r\n  filteredOptions$: Observable<unknown[]> = of([]);\r\n\r\n  /**\r\n   * a loading flag at button of the panel list when we are using the server-side fetching data\r\n   */\r\n  loading$: Observable<boolean> = of(false);\r\n\r\n  /**\r\n   * an observable carries the value, storing the latest value of the select-box.\r\n   * the value always is an array, and when we have no value the value\r\n   * would be an empty array\r\n   * the select search directive would subscribe this value to update the selected items\r\n   */\r\n  value$: Observable<NgxMatSelectValue>;\r\n\r\n  /**\r\n   * to set the active option\r\n   */\r\n  activeItemIndex?: string;\r\n\r\n  /** A name for this control that can be used by `mat-form-field`. */\r\n  controlType = 'ngx-mat-select';\r\n\r\n  /**\r\n   * Keeps track of the previous form control assigned to the select.\r\n   * Used to detect if it has changed.\r\n   */\r\n  _previousControl: AbstractControl | null | undefined;\r\n\r\n  /** Class or list of classes to be applied to the menu's overlay panel. */\r\n  _overlayPanelClass: string | string[] = this.defaultOptions?.overlayPanelClass || '';\r\n\r\n  /** Whether the select has a value. */\r\n  get empty(): boolean {\r\n    return !this.selectionModel || this.selectionModel.isEmpty();\r\n  }\r\n\r\n  /** Whether the select is focused. */\r\n  get focused(): boolean {\r\n    return this._focused || this.panelOpen;\r\n  }\r\n\r\n  private _focused = false;\r\n\r\n  /**\r\n   * Implemented as part of MatFormFieldControl.\r\n   * @docs-private\r\n   */\r\n  get shouldLabelFloat(): boolean {\r\n    return this.panelOpen || !this.empty || (this._focused && !!this._placeholder);\r\n  }\r\n\r\n  /**\r\n   * to store the scroll-top of the virtual scroll\r\n   * and apply it to the virtual scroll container  whenever it gets open\r\n   * @private\r\n   */\r\n\r\n  private scrollTop = 0;\r\n\r\n  /** Unique id for this input. */\r\n  private _uid = `ngx-mat-select-${nextUniqueId++}`;\r\n\r\n  /**\r\n   * a type of subject to get the control of the value observable, storing the latest value of the form\r\n   * @private\r\n   */\r\n  private value$$ = new ReplaySubject<NgxMatSelectValue>(1);\r\n\r\n  constructor(\r\n    public _changeDetectorRef: ChangeDetectorRef,\r\n    private renderer: Renderer2,\r\n    _defaultErrorStateMatcher: ErrorStateMatcher,\r\n    elementRef: ElementRef,\r\n    @Attribute('tabindex') tabIndex: string,\r\n    @Optional() _parentForm: NgForm,\r\n    @Optional() _parentFormGroup: FormGroupDirective,\r\n    @Optional() @Inject(MAT_FORM_FIELD) protected _parentFormField: MatFormField,\r\n    @Self() @Optional() ngControl: NgControl,\r\n    @Optional() @Inject(NGX_MAT_SELECT_CONFIG) protected defaultOptions: NgxMatSelectConfig\r\n  ) {\r\n    super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\r\n\r\n    if (this.ngControl) {\r\n      // Note: we provide the value accessor through here, instead of\r\n      // the `providers` to avoid running into a circular import.\r\n      this.ngControl.valueAccessor = this;\r\n    }\r\n\r\n    this.value$ = this.value$$.asObservable();\r\n    this.tabIndex = parseInt(tabIndex) || 0;\r\n\r\n    // Force setter to be called in case id was not specified.\r\n    // eslint-disable-next-line no-self-assign\r\n    this.id = this.id;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.selectionModel = new SelectionModel<unknown>(this.multiple, [], false, this._getCompareWithFn());\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\r\n    // the parent form field know to run change detection when the disabled state changes.\r\n    if (changes['disabled'] || changes['userAriaDescribedBy']) {\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    const ngControl = this.ngControl;\r\n\r\n    if (ngControl) {\r\n      // The disabled state might go out of sync if the form group is swapped out.\r\n      if (this._previousControl !== ngControl.control) {\r\n        if (\r\n          this._previousControl !== undefined &&\r\n          ngControl.disabled !== null &&\r\n          ngControl.disabled !== this.disabled\r\n        ) {\r\n          this.disabled = ngControl.disabled;\r\n        }\r\n\r\n        this._previousControl = ngControl.control;\r\n      }\r\n\r\n      this.updateErrorState();\r\n    }\r\n  }\r\n\r\n  /** `View -> model callback called when value changes` */\r\n  _onChange: (value: any) => void = () => {\r\n  };\r\n\r\n  /** `View -> model callback called when select has been touched` */\r\n  _onTouched = () => {\r\n  };\r\n\r\n  /**\r\n   * whenever the form-control gets updated from outside we can use\r\n   * this function to write the latest value in the local state\r\n   * @param value\r\n   */\r\n  writeValue(value: unknown[] | unknown): void {\r\n    this.setValue(value, true, false);\r\n  }\r\n\r\n  /**\r\n   * to store the local onChange function\r\n   * @param fn\r\n   */\r\n  registerOnChange(fn: any): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  /**\r\n   * to store the local onTouch function\r\n   * @param fn\r\n   */\r\n  registerOnTouched(fn: any): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  /**\r\n   * to manage being disabled\r\n   * @param isDisabled\r\n   */\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n    this._changeDetectorRef.markForCheck();\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  /**\r\n   * to remove an item from the selected options\r\n   * @param option\r\n   */\r\n  onDeselect(option: unknown) {\r\n    this.selectionModel?.deselect(option);\r\n\r\n    const flatValue = this.getFlatValueFromSelection();\r\n    this.setValue(flatValue, false, true);\r\n\r\n    if (!this.panel.isOpen) {\r\n      this.blur();\r\n    } else {\r\n      this.stateChanges.next();\r\n    }\r\n\r\n    this.selectionChange.emit({\r\n      selected: false,\r\n      value: this.getOptionValue(option),\r\n    });\r\n  }\r\n\r\n  /**\r\n   * to select or deselect an item from selected options\r\n   * @param event\r\n   */\r\n  onSelectionChange(event: MatOptionSelectionChange<unknown>) {\r\n    if (event.isUserInput) {\r\n      const option = event.source.value;\r\n\r\n      if (event.source.selected) {\r\n        this.selectionModel?.select(option);\r\n      } else {\r\n        this.selectionModel?.deselect(option);\r\n      }\r\n\r\n      const flatValue = this.getFlatValueFromSelection();\r\n\r\n      this.setValue(flatValue, false, true);\r\n\r\n      if (!this.panel.isOpen) {\r\n        this.blur();\r\n      } else {\r\n        this.stateChanges.next();\r\n      }\r\n\r\n      if (!this.multiple) {\r\n        this.panel.close();\r\n      } else {\r\n        this._changeDetectorRef.detectChanges();\r\n        this.panel.updatePosition();\r\n      }\r\n\r\n      this.selectionChange.emit({\r\n        selected: event.source.selected,\r\n        value: this.getOptionValue(option),\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Implemented as part of MatFormFieldControl.\r\n   * @docs-private\r\n   */\r\n  onContainerClick(event: MouseEvent): void {\r\n    this.panel.open();\r\n  }\r\n\r\n  /**\r\n   * Implemented as part of MatFormFieldControl.\r\n   * @docs-private\r\n   */\r\n  setDescribedByIds(ids: string[]) {\r\n    if (ids.length) {\r\n      this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\r\n    } else {\r\n      this._elementRef.nativeElement.removeAttribute('aria-describedby');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * we get a hook before the panel gets open\r\n   */\r\n  onBeforePanelOpen() {\r\n    this.focus();\r\n\r\n    if (this._parentFormField) {\r\n      this.preferredOverlayOrigin = this._parentFormField.getConnectedOverlayOrigin();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * we get a hook after the panel gets open\r\n   */\r\n  onAfterPanelOpen() {\r\n    this.focus();\r\n\r\n    this.renderer.setProperty(this.virtualScroll.elementRef.nativeElement, 'scrollTop', this.scrollTop);\r\n    setTimeout(() => {\r\n      this.virtualScroll.checkViewportSize();\r\n    });\r\n\r\n    this.openedChange.emit(this.panelOpen);\r\n  }\r\n\r\n  /**\r\n   * we get a hook before the panel gets close\r\n   */\r\n  onBeforePanelClose() {\r\n    this.scrollTop = this.virtualScroll.elementRef.nativeElement.scrollTop || 0;\r\n    this.blur();\r\n  }\r\n\r\n  /**\r\n   * we get a hook after the panel gets close\r\n   */\r\n  onAfterPanelClose() {\r\n    this.blur();\r\n\r\n    this.openedChange.emit(this.panelOpen);\r\n  }\r\n\r\n  blur() {\r\n    if (!this.disabled) {\r\n      this._focused = false;\r\n      this._onTouched();\r\n      this._changeDetectorRef.markForCheck();\r\n      this.stateChanges.next();\r\n      this.searchBoxComponent?.blur();\r\n    }\r\n  }\r\n\r\n  focus() {\r\n    if (!this.disabled) {\r\n      this._focused = true;\r\n      this._changeDetectorRef.markForCheck();\r\n      this.stateChanges.next();\r\n      this.searchBoxComponent?.focus();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to get the value of the specific property (optionValue) from the option\r\n   * @param option\r\n   */\r\n  getOptionValue(option: any) {\r\n    return this.getObjectValue(option, this.optionValue);\r\n  }\r\n\r\n  /**\r\n   * to check if an options is selected or not\r\n   */\r\n  isSelected(option: unknown) {\r\n    return this.selectionModel?.isSelected(option) || false;\r\n  }\r\n\r\n  /** The currently selected option. */\r\n  get selected(): any | any[] {\r\n    return this.multiple ? this.selectionModel?.selected || [] : this.selectionModel?.selected[0];\r\n  }\r\n\r\n  /**\r\n   * to get the latest value of the select-box\r\n   * the value for multiple and single selection is an array,\r\n   * but for single selection the first row is assumed as the value\r\n   */\r\n  getValue() {\r\n    let value: unknown[] | null | undefined;\r\n    this.value$$.pipe(take(1)).subscribe(selectValue => {\r\n      value = selectValue.value;\r\n    });\r\n\r\n    return value || [];\r\n  }\r\n\r\n  /**\r\n   * to set the value of the select-box,\r\n   * @param value {unknown} - the value of the form-control\r\n   * @param shouldBeSyncedWithSelection {boolean} - if it's true the selection model will be synced with the value\r\n   * @param emitsValue - to emit and call valueChange and _onChange functions together\r\n   */\r\n  setValue(value: unknown[] | unknown, shouldBeSyncedWithSelection: boolean, emitsValue = false) {\r\n    this.value$$.next({\r\n      value: !isNullOrUndefined(value) ? this._toArray(value) : value,\r\n      shouldBeSyncedWithSelection,\r\n    });\r\n\r\n    if (emitsValue) {\r\n      this.valueChange.emit(value);\r\n      this._onChange(value);\r\n    }\r\n  }\r\n\r\n  /** Toggles the overlay panel open or closed. */\r\n  toggle(): void {\r\n    this.panelOpen ? this.panel.close() : this.panel.open();\r\n  }\r\n\r\n  get panelOpen() {\r\n    return this.panel?.isOpen || false;\r\n  }\r\n\r\n  /** Returns the theme to be used on the panel. */\r\n  _getPanelTheme(): string {\r\n    return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\r\n  }\r\n\r\n  _onFocus() {\r\n    if (!this.disabled) {\r\n      this._focused = true;\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\r\n   * \"blur\" to the panel when it opens, causing a false positive.\r\n   */\r\n  _onBlur() {\r\n    this._focused = false;\r\n\r\n    if (!this.disabled && !this.panelOpen) {\r\n      this._onTouched();\r\n      this._changeDetectorRef.markForCheck();\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to handle some keyboard event when the caret is on the input\r\n   * @param event\r\n   */\r\n  _handleKeydown(event: KeyboardEvent) {\r\n    if (event.code === 'Enter') {\r\n      if (this.visibleOptions && !isNullOrUndefined(this.activeItemIndex)) {\r\n        const activatedOption = this.visibleOptions.find(o => o.active);\r\n\r\n        if (activatedOption && !activatedOption.disabled) {\r\n          activatedOption?._getHostElement().click();\r\n        }\r\n      }\r\n\r\n      return;\r\n    }\r\n\r\n    if (this.visibleOptions && (event.code === 'ArrowDown' || event.code === 'ArrowUp')) {\r\n      event.preventDefault();\r\n      let nextIndex = -1;\r\n      let changeActiveOption = true;\r\n      const optionsLength = this.visibleOptions.length;\r\n\r\n      this.visibleOptions.find((o, index) => {\r\n        if (o.active) {\r\n          nextIndex = index;\r\n          return true;\r\n        }\r\n\r\n        return false;\r\n      });\r\n\r\n      switch (event.code) {\r\n        case 'ArrowDown': {\r\n          if (nextIndex < optionsLength - 1) {\r\n            nextIndex++;\r\n          } else {\r\n            changeActiveOption = false;\r\n          }\r\n        }\r\n          break;\r\n\r\n        case 'ArrowUp': {\r\n          if (nextIndex > 0) {\r\n            nextIndex--;\r\n          } else {\r\n            changeActiveOption = false;\r\n          }\r\n        }\r\n          break;\r\n      }\r\n\r\n      if (changeActiveOption) {\r\n        const nextOption = this.visibleOptions.get(nextIndex);\r\n\r\n        nextOption?._getHostElement().scrollIntoView({block: 'end'});\r\n        this.activeItemIndex = nextOption?.id?.toString();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to get the appropriate value according to the being multiple or single selection\r\n   * @param object\r\n   */\r\n  _toFlat(object: unknown[] | undefined | null): unknown | unknown[] {\r\n    if (!isNullOrUndefined(object)) {\r\n      if (this.multiple) {\r\n        return this._toArray(object);\r\n      } else {\r\n        return object[0];\r\n      }\r\n    }\r\n\r\n    return object;\r\n  }\r\n\r\n  /**\r\n   * to get an array from an object or an array\r\n   * @param object\r\n   */\r\n  _toArray(object: unknown[] | unknown) {\r\n    return Array.isArray(object) ? object : [object];\r\n  }\r\n\r\n  /**\r\n   * to get a function which compares the options with values to detect the selected item\r\n   */\r\n  _getCompareWithFn(): (o1: any, o2: any) => boolean {\r\n    return (o1: any, o2: any) => {\r\n      if (this.compareWith && typeof this.compareWith === 'function') {\r\n        return this.compareWith(o1, o2);\r\n      }\r\n\r\n      const value1 = this.getObjectValue(o1, this.dataKey || this.optionValue);\r\n      const value2 = this.getObjectValue(o2, this.dataKey || this.optionValue);\r\n\r\n      return value1 === value2;\r\n    };\r\n  }\r\n\r\n  /**\r\n   * according to using multiple or single selection, whenever we want to update the form-control value from here we need to get the\r\n   * appropriate value for the form.\r\n   * @private\r\n   */\r\n  private getFlatValueFromSelection(): unknown | unknown[] {\r\n    const selection = this.selectionModel?.selected.map((s: any) => this.getOptionValue(s));\r\n\r\n    return this._toFlat(selection);\r\n  }\r\n\r\n  /**\r\n   * to get the value of the key property of an object safely\r\n   * @param object -the object that we want to get the value of the key property\r\n   * @param key - the one of the property of the object\r\n   * @private\r\n   */\r\n  private getObjectValue(object: any, key?: string) {\r\n    if (object !== null && key && typeof object === 'object') {\r\n      return object[key];\r\n    }\r\n\r\n    return object;\r\n  }\r\n}\r\n","<ngx-mat-select-trigger\r\n  cdk-overlay-origin\r\n  #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\r\n  (click)=\"toggle()\"\r\n  (deselect)=\"onDeselect($event)\"\r\n  [disabled]=\"disabled\"\r\n  [multipleDisplay]=\"multipleDisplay\"\r\n  [selection]=\"selectionModel?.selected || []\"\r\n  [customTrigger]=\"triggerContent?.template || null\"\r\n  [multiple]=\"multiple\"\r\n  [optionLabel]=\"optionLabel\"\r\n  [placeholder]=\"placeholder\"\r\n  [empty]=\"empty\"\r\n>\r\n\r\n</ngx-mat-select-trigger>\r\n\r\n<ngx-mat-select-panel\r\n  [width]=\"panelWidth\"\r\n  [height]=\"panelHeight\"\r\n  [overlayClass]=\"_overlayPanelClass\"\r\n  [panelClass]=\"panelClass\"\r\n  (beforeOpen)=\"onBeforePanelOpen()\"\r\n  (afterOpen)=\"onAfterPanelOpen()\"\r\n  (beforeClose)=\"onBeforePanelClose()\"\r\n  (afterClose)=\"onAfterPanelClose()\"\r\n  [theme]=\"_getPanelTheme()\"\r\n  [disabled]=\"disabled\"\r\n  [viewType]=\"viewType\"\r\n  [connectedOverlayOrigin]=\"preferredOverlayOrigin || fallbackOverlayOrigin.elementRef\"\r\n>\r\n  <div class=\"ngx-mat-select-panel-header\" *ngIf=\"hasSearchBox || hasBackButton\">\r\n    <ngx-mat-select-search-box\r\n      *ngIf=\"hasSearchBox\"\r\n      class=\"ngx-mat-select-panel-search-box\"\r\n      (handleKeydown)=\"_handleKeydown($event)\"\r\n      [placeholder]=\"searchBoxPlaceholder\"\r\n    >\r\n    </ngx-mat-select-search-box>\r\n    <div class=\"ngx-mat-select-panel-header-filler\"></div>\r\n    <div class=\"ngx-mat-select-back-button\" *ngIf=\"hasBackButton\" (click)=\"panel.close()\">\r\n      <ngx-mat-select-icon icon=\"ArrowRight\" [width]=\"32\" [height]=\"32\">\r\n      </ngx-mat-select-icon>\r\n    </div>\r\n  </div>\r\n  <div class=\"ngx-mat-select-panel-content\">\r\n    <cdk-virtual-scroll-viewport\r\n      class=\"ngx-mat-select-virtual-scroll\"\r\n      [itemSize]=\"optionHeight\"\r\n    >\r\n      <ng-container *cdkVirtualFor=\"let option of filteredOptions$ | async;let index = index\">\r\n        <mat-option [style.height.px]=\"optionHeight\"\r\n                    ngxMatSelectOption\r\n                    #matOption\r\n                    [disabled]=\"option?.['disabled']\"\r\n                    [id]=\"index.toString()\"\r\n                    [activated]=\"activeItemIndex === matOption.id\"\r\n                    [selected]=\"isSelected(option)\"\r\n                    [value]=\"option\"\r\n                    (onSelectionChange)=\"onSelectionChange($event)\">\r\n          <ng-container *ngIf=\"selectOptionContent else defaultTemplate\">\r\n            <ng-container\r\n              *ngTemplateOutlet=\"selectOptionContent.template; context: {$implicit: option, isSelected: isSelected(option)}\"></ng-container>\r\n          </ng-container>\r\n\r\n          <ng-template #defaultTemplate>\r\n            {{option | toOptionLabel: optionLabel }}\r\n          </ng-template>\r\n\r\n        </mat-option>\r\n\r\n      </ng-container>\r\n    </cdk-virtual-scroll-viewport>\r\n\r\n  </div>\r\n  <div class=\"ngx-mat-select-panel-footer\">\r\n    <ng-content select=\"[ngxMatSelectFooter]\"></ng-content>\r\n  </div>\r\n  <ngx-mat-select-loading [loading]=\"(loading$ | async) === true\"></ngx-mat-select-loading>\r\n\r\n</ngx-mat-select-panel>\r\n\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgxMatSelectOptionDirective} from './ngx-mat-select-option.directive';\r\nimport {ToOptionLabelPipe} from './option-label.pipe';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectOptionDirective, ToOptionLabelPipe],\r\n  imports: [CommonModule],\r\n  exports: [NgxMatSelectOptionDirective, ToOptionLabelPipe],\r\n  providers: [ToOptionLabelPipe],\r\n})\r\nexport class SharedModule {}\r\n","import {AfterViewInit, ChangeDetectorRef, Directive, Input, isDevMode, OnDestroy, OnInit} from '@angular/core';\r\n\r\nimport {BehaviorSubject, merge, Observable, Subject, Subscription, tap} from 'rxjs';\r\nimport {\r\n  combineLatestWith,\r\n  distinctUntilChanged,\r\n  filter,\r\n  map,\r\n  startWith,\r\n  switchMap,\r\n  take,\r\n  takeUntil,\r\n  withLatestFrom,\r\n} from 'rxjs/operators';\r\n\r\nimport {NgxMatSelectOptionType} from '../../select-model';\r\nimport {NgxMatSelectComponent} from '../../select';\r\nimport {getSelectOptionLabelError} from '../../select-error';\r\nimport {isNullOrUndefined} from \"../../shared/utils\";\r\nimport {coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\n\r\nexport interface NgxMatSelectFetchOptions {\r\n  filteredOptions$: Observable<unknown[]>;\r\n  loading$: Observable<boolean>;\r\n  hasSearchBox: boolean | undefined | null;\r\n  searchBoxPlaceholder: string | null | undefined;\r\n}\r\n\r\n@Directive()\r\nexport abstract class NgxMatSelectFetchOptionsDirective\r\n  implements OnDestroy, OnInit, NgxMatSelectFetchOptions, AfterViewInit {\r\n  /**\r\n   * Function used to sort the values in a select in multiple mode.\r\n   * Follows the same logic as `Array.prototype.sort`.\r\n   * in the server-side mode you should provide sortComparator in order to sort the selected options,\r\n   * but in the client-side mode all the selected options and values would order with the order of received options\r\n   */\r\n  @Input() sortComparator?: (a: unknown, b: unknown, options: unknown[]) => number;\r\n\r\n  /**\r\n   * if it's true the search-box will appear inside the panel\r\n   */\r\n  @Input()\r\n  get hasSearchBox(): boolean | undefined | null {\r\n    return this._hasSearchBox;\r\n  }\r\n\r\n  set hasSearchBox(value: boolean | undefined | null) {\r\n    this._hasSearchBox = coerceBooleanProperty(value);\r\n    if (this.host.hasSearchBox !== this._hasSearchBox) {\r\n      this.host.hasSearchBox = this._hasSearchBox;\r\n      this._changeDetectorRef.detectChanges();\r\n    }\r\n    this.checkOptionLabel();\r\n    this.initializeSearch();\r\n  }\r\n\r\n  private _hasSearchBox = false;\r\n\r\n  /**\r\n   * a placeholder for the search-box to be shown if nothing is written in the search-box\r\n   */\r\n  @Input() set searchBoxPlaceholder(value: string | undefined | null) {\r\n    if (this.host.searchBoxComponent && !isNullOrUndefined(value)) {\r\n      this.host.searchBoxPlaceholder = value;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * an observable to manage the filtered options state\r\n   */\r\n  filteredOptions$ = new BehaviorSubject<unknown[]>([]);\r\n\r\n  /**\r\n   * when the main stream is busy with fetching data from the server, the loading is true\r\n   */\r\n  loading$ = new BehaviorSubject<boolean>(false);\r\n\r\n  /**\r\n   * to handle the search\r\n   */\r\n  abstract search: (searchTerm: string) => void;\r\n\r\n  /**\r\n   * all the options which are provided up to now\r\n   * @protected\r\n   */\r\n  protected abstract options: unknown[] | undefined | null;\r\n\r\n  /**\r\n   * an observable to manage destroying the other observables\r\n   * @protected\r\n   */\r\n  protected destroy$ = new Subject<void>();\r\n\r\n  /**\r\n   * the type of received options\r\n   * @protected\r\n   */\r\n  protected optionType: NgxMatSelectOptionType = 'unknown';\r\n\r\n  /**\r\n   * if every input initialized or not\r\n   * @private\r\n   */\r\n  private initialized = false;\r\n\r\n  /**\r\n   * to recognize the first empty search\r\n   * @private\r\n   */\r\n  private isFirstEmptySearch = true;\r\n\r\n  private searchSubscription?: Subscription;\r\n\r\n  protected constructor(protected host: NgxMatSelectComponent, protected _changeDetectorRef: ChangeDetectorRef) {\r\n    this.host.filteredOptions$ = this.filteredOptions$.asObservable();\r\n    this.host.loading$ = this.loading$.asObservable().pipe(distinctUntilChanged());\r\n  }\r\n\r\n  /**\r\n   * to sync the value with selection Model, and check the possibility of fill incomplete values from the\r\n   * received options\r\n   * @private\r\n   */\r\n  protected abstract syncValueAndOptions: () => void;\r\n\r\n  /** Sorts the selected values in the selected based on their order in the panel. */\r\n  protected abstract sortValues: () => void;\r\n\r\n  ngOnInit(): void {\r\n    this.initialized = true;\r\n    if (!this.searchSubscription) {\r\n      this.hasSearchBox = this.host.hasSearchBox;\r\n    }\r\n\r\n    /**\r\n     * order of initializing matters\r\n     */\r\n    this.checkOptionLabel();\r\n    this.listenToValueChanges();\r\n    this.initSortValues();\r\n  }\r\n\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initScrollIntoSelectedOption();\r\n  }\r\n\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(void 0);\r\n    this.destroy$.complete();\r\n    this.filteredOptions$.complete();\r\n    this.loading$.complete();\r\n  }\r\n\r\n  /**\r\n   * to check the type of the options to realize there are primitive or an object\r\n   * @protected\r\n   */\r\n  protected checkOptionsType() {\r\n    const options = this.options;\r\n    if (!isNullOrUndefined(options) && options.length > 0) {\r\n      if (options[0] && typeof options[0] === 'object') {\r\n        this.optionType = 'object';\r\n      } else {\r\n        this.optionType = 'primitive';\r\n      }\r\n    }\r\n\r\n    this.checkOptionLabel();\r\n  }\r\n\r\n  /**\r\n   * to listen to the search-box input changes, and filter the options through the searchTerm\r\n   * @private\r\n   */\r\n  private initializeSearch() {\r\n    this.searchSubscription?.unsubscribe();\r\n\r\n    if (this.hasSearchBox) {\r\n      this.searchSubscription = this.host.searchBoxComponent?.search\r\n        .pipe(\r\n          startWith(''),\r\n          tap(() => {\r\n            if (!this.isFirstEmptySearch) {\r\n              this.host.virtualScroll.scrollToIndex(0);\r\n              this.host.activeItemIndex = '0';\r\n              this._changeDetectorRef.markForCheck();\r\n            }\r\n\r\n            this.isFirstEmptySearch = false;\r\n          }),\r\n          tap(searchTerm => this.search(searchTerm)),\r\n          takeUntil(this.destroy$)\r\n        )\r\n        .subscribe();\r\n    } else {\r\n      this.search('');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to check value member and display-member are required if they are required, checking they are provided or not\r\n   * @private\r\n   */\r\n  private checkOptionLabel() {\r\n    if (isDevMode() && this.optionType === 'object' && this.initialized) {\r\n      const optionLabel = this.host.optionLabel;\r\n\r\n      if (!optionLabel) {\r\n        throw getSelectOptionLabelError();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * to sync the selected items with the value of the select-box\r\n   * @private\r\n   */\r\n  private listenToValueChanges() {\r\n    this.host.value$\r\n      .pipe(\r\n        filter(({shouldBeSyncedWithSelection}) => shouldBeSyncedWithSelection),\r\n        tap(() => {\r\n          this.syncValueAndOptions();\r\n        }),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  /**\r\n   * to scroll to the selected option when the select has a value.\r\n   * it works just in client side because we have whole the options and the selection mode has to be single selection,\r\n   * @private\r\n   */\r\n  private initScrollIntoSelectedOption() {\r\n    const selectionModelChanged = this.host.selectionModel?.changed;\r\n\r\n    if (selectionModelChanged) {\r\n      this.host.panel.afterOpen\r\n        .pipe(\r\n          combineLatestWith(\r\n            this.filteredOptions$.pipe(take(1)),\r\n            selectionModelChanged.pipe(startWith(this.host.selectionModel?.selected))\r\n          ),\r\n          withLatestFrom(this.filteredOptions$),\r\n          map(([[_], filteredOptions]) => {\r\n            let firstSelectedOption: unknown = undefined;\r\n            let firstSelectedOptionIndex = -1;\r\n            const selection = this.host.selectionModel?.selected;\r\n\r\n            if (selection) {\r\n              const compareWithFn = this.host._getCompareWithFn();\r\n\r\n              filteredOptions.some((option, index) => {\r\n                const firstIndex = selection.findIndex(selectedOption => compareWithFn(selectedOption, option));\r\n\r\n                if (firstIndex !== -1) {\r\n                  firstSelectedOptionIndex = index;\r\n                  firstSelectedOption = option;\r\n\r\n                  return true;\r\n                }\r\n\r\n                return false;\r\n              });\r\n            }\r\n\r\n            return {selectedIndex: firstSelectedOptionIndex, selected: firstSelectedOption};\r\n          }),\r\n          filter(({selectedIndex}) => selectedIndex !== -1),\r\n          tap(({selectedIndex}) => {\r\n            this.host.virtualScroll.scrollToIndex(selectedIndex);\r\n          }),\r\n          filter(({selected}) => !this.scrollIntoVisibleOptionView(selected)),\r\n          switchMap(({selected}) =>\r\n            this.host.visibleOptions.changes.pipe(\r\n              tap(() => this.scrollIntoVisibleOptionView(selected)),\r\n              take(1)\r\n            )\r\n          ),\r\n          takeUntil(this.destroy$)\r\n        )\r\n        .subscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * @returns - a boolean to find out whether we are successful in scroll to the selected option or not\r\n   * it depends on whether the corresponding option is present in the options.\r\n   * @param selected - the selected item\r\n   * @private\r\n   */\r\n  private scrollIntoVisibleOptionView(selected: unknown) {\r\n    const compareWithFn = this.host._getCompareWithFn();\r\n    const selectedVisibleOption = this.host.visibleOptions.find(o => compareWithFn(o.value, selected));\r\n\r\n    if (selectedVisibleOption) {\r\n      this.host.activeItemIndex = selectedVisibleOption.id?.toString();\r\n      selectedVisibleOption._getHostElement().scrollIntoView({block: 'end'});\r\n      this._changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    return !!selectedVisibleOption;\r\n  }\r\n\r\n  /**\r\n   * to sort the selected option and values with order of received options, whenever the selection or value changes\r\n   * @private\r\n   */\r\n  private initSortValues() {\r\n    merge(this.host.selectionChange, this.host.value$)\r\n      .pipe(\r\n        tap(() => {\r\n          this.sortValues();\r\n        }),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n}\r\n","import {ChangeDetectorRef, Directive, Input, OnChanges, SimpleChanges} from '@angular/core';\r\n\r\nimport {NgxMatSelectFetchOptionsDirective} from './ngx-mat-select-fetch-options';\r\nimport {NgxMatSelectComponent} from '../../select';\r\nimport {isNullOrUndefined} from '../../shared/utils';\r\n\r\n@Directive({\r\n  selector: 'ngx-mat-select[clientSide]:not(ngx-mat-select[serverSide])',\r\n  exportAs: 'ngxMatSelectClientSide',\r\n})\r\n/**\r\n * to fetch the whole options at once, and use a search-box if needed\r\n */\r\nexport class NgxMatSelectFetchOptionsClientSideDirective extends NgxMatSelectFetchOptionsDirective implements OnChanges {\r\n  /**\r\n   * the options that we want to pick up an item or items from them\r\n   */\r\n  @Input() options: unknown[] | null | undefined;\r\n\r\n  /**\r\n   * if true the loading indicator appears in the panel,\r\n   * you can use this, when the options are loading for the very first time\r\n   * @param value\r\n   */\r\n  @Input() set loading(value: boolean | undefined | null) {\r\n    this.loading$.next(value || false);\r\n  }\r\n\r\n  /**\r\n   * a search comparison function, that will be applied on filtering of the options when the client searches\r\n   */\r\n  @Input() searchComparison?: (searchTerm: string, option: any) => boolean;\r\n\r\n  constructor(host: NgxMatSelectComponent, changeDetectorRef: ChangeDetectorRef) {\r\n    super(host, changeDetectorRef);\r\n  }\r\n\r\n  /**\r\n   * to search the options through the searchTerm\r\n   * @param searchTerm\r\n   */\r\n  search = (searchTerm: string) => {\r\n    const comparisonFn = (option: any) => {\r\n      if (!isNullOrUndefined(searchTerm) && searchTerm !== '') {\r\n        if (this.searchComparison) {\r\n          return this.searchComparison(searchTerm, option);\r\n        } else {\r\n          if (this.host.optionLabel && this.optionType === 'object') {\r\n            return option[this.host.optionLabel]?.toString().includes(searchTerm);\r\n          } else {\r\n            return option?.toString().includes(searchTerm);\r\n          }\r\n        }\r\n      }\r\n\r\n      return true;\r\n    };\r\n\r\n    if (!isNullOrUndefined(this.options)) {\r\n      this.filteredOptions$.next(this.options.filter(comparisonFn).slice());\r\n    }\r\n  };\r\n\r\n  /**\r\n   * to sort the selected items according to the received options,\r\n   * or the provided sortComparator function\r\n   */\r\n  protected sortValues = () => {\r\n    if (this.host.multiple) {\r\n      const options = this.options || [];\r\n\r\n      this.host.selectionModel?.sort((a, b) => {\r\n        return this.sortComparator ? this.sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\r\n      });\r\n\r\n      this.host.stateChanges.next();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * if a value is not present in the received options, it would be omitted from the value and the selection\r\n   */\r\n  protected syncValueAndOptions = () => {\r\n    if (this.host.selectionModel) {\r\n      const value = this.host.getValue();\r\n      const compareWithFn = this.host._getCompareWithFn();\r\n      const options = this.options || [];\r\n\r\n      if (!isNullOrUndefined(value)) {\r\n        if (options.length > 0 && value.length > 0) {\r\n          const selected: { value: any; option: any }[] = [];\r\n\r\n          value.forEach((value: any) => {\r\n            options.some((option: any) => {\r\n              if (compareWithFn(option, value)) {\r\n                selected.push({option, value});\r\n\r\n                return true;\r\n              }\r\n\r\n              return false;\r\n            });\r\n          });\r\n\r\n          this.host.selectionModel.setSelection(...selected.map(s => s.option));\r\n          const selectedValue = selected.map(s => s.value);\r\n          this.host.setValue(this.host._toFlat(selectedValue), false, true);\r\n\r\n        } else if (!this.loading$.getValue()) {\r\n          this.host.selectionModel.clear();\r\n          this.host.setValue(null, false, true);\r\n        }\r\n      } else {\r\n        const isThereAnyNullOrUndefinedInOptions =\r\n          options.filter(o => compareWithFn(o, undefined) || compareWithFn(o, null)).length > 0;\r\n\r\n        if (options.length > 0 && isThereAnyNullOrUndefinedInOptions) {\r\n          this.host.selectionModel.setSelection(value);\r\n        } else {\r\n          this.host.selectionModel.clear();\r\n        }\r\n      }\r\n\r\n      this._changeDetectorRef.markForCheck();\r\n      this.host.stateChanges.next();\r\n    }\r\n  };\r\n\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const optionsChange = changes['options'];\r\n\r\n    if (optionsChange && optionsChange.previousValue !== optionsChange.currentValue) {\r\n      this.host.searchBoxComponent?.clear();\r\n      this.search('');\r\n      this.checkOptionsType();\r\n      this.syncValueAndOptions();\r\n    }\r\n  }\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Directive, Input, OnDestroy} from '@angular/core';\r\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\r\n\r\nimport {BehaviorSubject, combineLatest, Observable, pairwise, ReplaySubject, tap} from 'rxjs';\r\nimport {filter, map, startWith, switchMap, takeUntil} from 'rxjs/operators';\r\n\r\nimport {NgxMatSelectSearchParams} from '../../select-model';\r\nimport {NgxMatSelectComponent} from '../../select';\r\nimport {NgxMatSelectFetchOptionsDirective} from './ngx-mat-select-fetch-options';\r\nimport {isNullOrUndefined} from '../../shared/utils';\r\n\r\n@Directive({\r\n  selector: 'ngx-mat-select[serverSide]:not(ngx-mat-select[clientSide])',\r\n  exportAs: 'ngxMatSelectServerSide',\r\n})\r\n/**\r\n * a directive to handle server-side mode, which can get the lazy-data page per page  with the provided pageSize\r\n */\r\nexport class NgxMatSelectFetchOptionsServerSideDirective\r\n  extends NgxMatSelectFetchOptionsDirective\r\n  implements AfterViewInit, OnDestroy {\r\n\r\n  /**\r\n   * the page size, every calculation for figuring out whether there is a next page or not based on this property\r\n   */\r\n  @Input() pageSize = 10;\r\n\r\n  /**\r\n   * to fetch the options from the server through searchParams\r\n   */\r\n  @Input() set fetchOptions(fetchFunction: (searchParams: NgxMatSelectSearchParams) => Observable<unknown[]>) {\r\n    this.destroy$.next(void 0);\r\n\r\n    combineLatest([this.search$, this.fetchNext$])\r\n      .pipe(\r\n        startWith(['', '']),\r\n        pairwise(),\r\n        map(([[prevSearchTerm], [nextSearchTerm]]) => {\r\n          if (prevSearchTerm !== nextSearchTerm) {\r\n            this.pageNumber = 1;\r\n            this.hasMore = true;\r\n            this.options = [];\r\n          }\r\n\r\n          return nextSearchTerm;\r\n        }),\r\n        tap(() => {\r\n          this.loading$.next(true);\r\n          this._changeDetectorRef.detectChanges();\r\n        }),\r\n        switchMap(searchTerm =>\r\n          fetchFunction({searchTerm, pageNumber: this.pageNumber, pageSize: this.pageSize}).pipe(\r\n            tap(nextOptions => {\r\n              if (nextOptions.length > 0) {\r\n                this.pageNumber++;\r\n              }\r\n\r\n              this.hasMore = nextOptions?.length === this.pageSize;\r\n            }),\r\n            map(nextOptions => {\r\n              this.options = this.options.concat(...nextOptions);\r\n\r\n              return [...this.options];\r\n            }),\r\n            tap(options => {\r\n              this.filteredOptions$.next(options);\r\n              this.loading$.next(false);\r\n            }),\r\n            tap(() => {\r\n              this.checkOptionsType();\r\n              this.sortValues();\r\n            }),\r\n            tap(() => {\r\n              this._changeDetectorRef.detectChanges();\r\n            })\r\n          )\r\n        ),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  /**\r\n   * to store the previous options to use them after coming back to the old pages\r\n   * @private\r\n   */\r\n  protected options: unknown[] = [];\r\n\r\n  /**\r\n   *This would store the current page number that we are in it,\r\n   * it stats from one\r\n   * @private\r\n   */\r\n  private pageNumber = 1;\r\n\r\n  /**\r\n   * an observable to force the main stream to get the new data filtered through searchTerm\r\n   * @private\r\n   */\r\n  private search$ = new ReplaySubject<string>(1);\r\n\r\n  /**\r\n   * an observable to force the main stream to get next page data according to the pageNumber\r\n   * @private\r\n   */\r\n  private fetchNext$ = new BehaviorSubject<void>(void 0);\r\n\r\n  /**\r\n   * if it's false when getting the next page request comes the request will be blocked\r\n   * before sending to the server\r\n   * @private\r\n   */\r\n  private hasMore = true;\r\n\r\n  constructor(\r\n    changeDetectorRef: ChangeDetectorRef,\r\n    host: NgxMatSelectComponent,\r\n    private scrollDispatcher: ScrollDispatcher\r\n  ) {\r\n    super(host, changeDetectorRef);\r\n  }\r\n\r\n  /**\r\n   * to search the options with the searchTerm\r\n   * @param searchTerm\r\n   */\r\n  search = (searchTerm: string) => {\r\n    this.search$.next(searchTerm);\r\n  };\r\n\r\n  /**\r\n   * to fetch the next page if any\r\n   */\r\n  fetchNext() {\r\n    if (this.hasMore) {\r\n      this.fetchNext$.next(void 0);\r\n    }\r\n  }\r\n\r\n  override ngAfterViewInit(): void {\r\n    super.ngAfterViewInit();\r\n    this.initializeInfiniteScroll();\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this.search$.complete();\r\n    this.fetchNext$.complete();\r\n  }\r\n\r\n  /**\r\n   * to sort the selected items according to the provided sortComparator function\r\n   */\r\n  protected sortValues = () => {\r\n    if (this.host.multiple && this.options.length > 0) {\r\n      if (!isNullOrUndefined(this.sortComparator) && typeof this.sortComparator === 'function') {\r\n        const sortComparator = this.sortComparator;\r\n\r\n        this.host.selectionModel?.sort((a, b) => {\r\n          return sortComparator(a, b, this.options);\r\n        });\r\n\r\n        this.host.stateChanges.next();\r\n      }\r\n    }\r\n  };\r\n\r\n  /**\r\n   * Actually in the server-side mode we would not be able to sync options with values\r\n   * in order to omit non-exist values through the received options,\r\n   * because we don't have all options available at once, so we don't have\r\n   * any indicator to distinguish between them, so whatever value is provided would be set as the selected option\r\n   */\r\n  protected syncValueAndOptions = () => {\r\n    const value = this.host.getValue();\r\n\r\n    if (isNullOrUndefined(value)) {\r\n      this.host.selectionModel?.clear();\r\n    } else {\r\n      this.host.selectionModel?.setSelection(...value);\r\n      this.sortValues();\r\n    }\r\n\r\n    this._changeDetectorRef.markForCheck();\r\n    this.host.stateChanges.next();\r\n  };\r\n\r\n  /**\r\n   * to listen to the virtual scroll events, and get the next page at the appropriate time.\r\n   * @private\r\n   */\r\n  private initializeInfiniteScroll() {\r\n    this.scrollDispatcher\r\n      .scrolled()\r\n      .pipe(\r\n        filter(() => this.host.virtualScroll.getRenderedRange().end === this.host.virtualScroll.getDataLength()),\r\n        filter(() => !this.loading$.getValue()),\r\n        tap(() => {\r\n          this.fetchNext();\r\n        }),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe();\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\r\n\r\nimport {NgxMatSelectLoadingComponent} from './ngx-mat-select-loading.component';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectLoadingComponent],\r\n  imports: [CommonModule, MatProgressBarModule],\r\n  exports: [NgxMatSelectLoadingComponent],\r\n})\r\nexport class NgxMatSelectLoadingModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CdkConnectedOverlay} from '@angular/cdk/overlay';\r\n\r\nimport {NgxMatSelectPanelComponent} from './ngx-mat-select-panel.component';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectPanelComponent],\r\n  imports: [CommonModule, CdkConnectedOverlay],\r\n  exports: [NgxMatSelectPanelComponent],\r\n})\r\nexport class NgxMatSelectPanelModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {NgxMatSelectIconComponent} from './ngx-mat-select-icon.component';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectIconComponent],\r\n  imports: [CommonModule],\r\n  exports: [NgxMatSelectIconComponent],\r\n})\r\nexport class NgxMatSelectIconModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\n\r\nimport {NgxMatSelectSearchBoxComponent} from './ngx-mat-select-search-box.component';\r\nimport {NgxMatSelectIconModule} from '../icon/ngx-mat-select-icon.module';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectSearchBoxComponent],\r\n  imports: [CommonModule, FormsModule, NgxMatSelectIconModule],\r\n  exports: [NgxMatSelectSearchBoxComponent],\r\n})\r\nexport class NgxMatSelectSearchBoxModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {MatChipsModule} from '@angular/material/chips';\r\n\r\nimport {NgxMatSelectTriggerComponent} from './ngx-mat-select-trigger.component';\r\nimport {NgxMatSelectIconModule} from '../icon/ngx-mat-select-icon.module';\r\nimport {SharedModule} from '../../shared/shared.module';\r\n\r\n@NgModule({\r\n  declarations: [NgxMatSelectTriggerComponent],\r\n  imports: [CommonModule, MatChipsModule, NgxMatSelectIconModule, SharedModule],\r\n  exports: [NgxMatSelectTriggerComponent],\r\n})\r\nexport class NgxMatSelectTriggerModule {}\r\n","import {NgModule} from '@angular/core';\r\nimport {MatOptionModule} from '@angular/material/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ScrollingModule} from '@angular/cdk/scrolling';\r\nimport {CdkOverlayOrigin} from '@angular/cdk/overlay';\r\n\r\nimport {SharedModule} from './shared/shared.module';\r\nimport {NgxMatSelectComponent} from './select';\r\nimport {NgxMatSelectFetchOptionsClientSideDirective} from './component/fetch-options/ngx-mat-select-fetch-options-client-side.directive';\r\nimport {NgxMatSelectFetchOptionsServerSideDirective} from './component/fetch-options/ngx-mat-select-fetch-options-server-side.directive';\r\nimport {NgxMatSelectLoadingModule} from './component/loading/ngx-mat-select-loading.module';\r\nimport {NgxMatSelectPanelModule} from './component/panel/ngx-mat-select-panel.module';\r\nimport {NgxMatSelectSearchBoxModule} from './component/search-box/ngx-mat-select-search-box.module';\r\nimport {NgxMatSelectIconModule} from './component/icon/ngx-mat-select-icon.module';\r\nimport {NgxMatSelectTriggerModule} from './component/trigger/ngx-mat-select-trigger.module';\r\nimport {NgxMatSelectOptionContentDirective} from './template/ngx-mat-select-option-content.directive';\r\nimport {NgxMatSelectTriggerDirective} from './template/ngx-mat-select-trigger.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxMatSelectComponent,\r\n    NgxMatSelectFetchOptionsClientSideDirective,\r\n    NgxMatSelectFetchOptionsServerSideDirective,\r\n    NgxMatSelectOptionContentDirective,\r\n    NgxMatSelectTriggerDirective,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ScrollingModule,\r\n    CdkOverlayOrigin,\r\n    SharedModule,\r\n    NgxMatSelectLoadingModule,\r\n    NgxMatSelectPanelModule,\r\n    NgxMatSelectSearchBoxModule,\r\n    NgxMatSelectIconModule,\r\n    NgxMatSelectTriggerModule,\r\n    MatOptionModule,\r\n  ],\r\n  exports: [\r\n    NgxMatSelectComponent,\r\n    NgxMatSelectFetchOptionsClientSideDirective,\r\n    NgxMatSelectFetchOptionsServerSideDirective,\r\n    NgxMatSelectOptionContentDirective,\r\n    NgxMatSelectTriggerDirective,\r\n  ],\r\n})\r\nexport class NgxMatSelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.NgxMatSelectIconComponent","i4.ToOptionLabelPipe","i3","i5","i6.NgxMatSelectOptionDirective","i7.NgxMatSelectLoadingComponent","i8.NgxMatSelectPanelComponent","i9.NgxMatSelectSearchBoxComponent","i10.NgxMatSelectIconComponent","i11.NgxMatSelectTriggerComponent","i12.ToOptionLabelPipe","i1.NgxMatSelectComponent"],"mappings":"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"}