{"version":3,"file":"ng-jvx-multiselect.mjs","sources":["../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-option/ng-jvx-option.component.ts","../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-option/ng-jvx-option.component.html","../../../projects/ng-jvx-multiselect/src/lib/directives/ng-jvx-options-template.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/directives/ng-jvx-selection-template.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/directives/ng-jvx-group-header.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/directives/ng-jvx-disabled-option.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/utils.ts","../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-multiselect.service.ts","../../../projects/ng-jvx-multiselect/src/lib/panel/menu-trigger/menu-trigger.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/panel/panel.component.ts","../../../projects/ng-jvx-multiselect/src/lib/panel/panel.component.html","../../../projects/ng-jvx-multiselect/src/lib/chiplist/chip/chip.component.ts","../../../projects/ng-jvx-multiselect/src/lib/chiplist/chip/chip.component.html","../../../projects/ng-jvx-multiselect/src/lib/directives/ng-jvx-focus.directive.ts","../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-multiselect.component.ts","../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-multiselect.component.html","../../../projects/ng-jvx-multiselect/src/lib/ng-jvx-multiselect.module.ts","../../../projects/ng-jvx-multiselect/src/public-api.ts","../../../projects/ng-jvx-multiselect/src/ng-jvx-multiselect.ts"],"sourcesContent":["import {Component, DoCheck, EventEmitter, input, Input, OnInit, Output, ViewChild, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n    // tslint:disable-next-line:component-selector\r\n    selector: 'ng-jvx-option',\r\n    templateUrl: './ng-jvx-option.component.html',\r\n    styleUrls: ['./ng-jvx-option.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: false\r\n})\r\nexport class NgJvxOptionComponent {\r\n  @Output() clickOnOption = new EventEmitter<any>();\r\n  value = input<any>();\r\n  disabled = input<boolean>(false);\r\n  isSelected = input<boolean>(false);\r\n\r\n  constructor() {\r\n  }\r\n\r\n}\r\n","<div class=\"option\" [ngClass]=\"{'ng-jvx-option': true, 'ng-jvx-single-selected-option': isSelected()}\" #listOption\r\n(click)=\"clickOnOption.emit()\">\r\n  <div class=\"option-content\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n  <div class=\"list-option-background\"></div>\r\n</div>\r\n","import {Directive, ElementRef, HostListener, Input, TemplateRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Directive({\r\n    // tslint:disable-next-line:directive-selector\r\n    selector: '[ngJvxOptionsTemplate]',\r\n    standalone: false\r\n})\r\nexport class NgJvxOptionsTemplateDirective {\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    public template: TemplateRef<any>,\r\n    private vcRef: ViewContainerRef) {\r\n  }\r\n\r\n\r\n\r\n  @Input() set ngJvxOptionsTemplateOf(source: Array<any[]>) {\r\n    for (const item of source) {\r\n      this.vcRef.createEmbeddedView(this.template, {$implicit: item});\r\n    }\r\n  }\r\n\r\n}\r\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Directive({\r\n    // tslint:disable-next-line:directive-selector\r\n    selector: '[ngJvxSelectionTemplate]',\r\n    standalone: false\r\n})\r\nexport class NgJvxSelectionTemplateDirective {\r\n\r\n  constructor(\r\n    public template: TemplateRef<any>,\r\n    private vcRef: ViewContainerRef) {\r\n  }\r\n\r\n  @Input() set ngJvxSelectionTemplateOf(source: Array<any[]>) {\r\n    for (const item of source) {\r\n      this.vcRef.createEmbeddedView(this.template, {$implicit: item});\r\n    }\r\n  }\r\n\r\n}\r\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Directive({\r\n    // tslint:disable-next-line:directive-selector\r\n    selector: '[ngJvxGroupHeader]',\r\n    standalone: false\r\n})\r\nexport class NgJvxGroupHeaderDirective {\r\n\r\n  constructor(\r\n    public template: TemplateRef<any>,\r\n    private vcRef: ViewContainerRef) {\r\n  }\r\n\r\n  @Input() set ngJvxGroupHeaderOf(source: Array<any[]>) {\r\n    for (const item of source) {\r\n      this.vcRef.createEmbeddedView(this.template, {$implicit: item});\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","import {Directive, ElementRef, HostListener, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {fromEvent, Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\n\r\n@Directive({\r\n    // tslint:disable-next-line:directive-selector\r\n    selector: '[ngJvxDisabledOption]',\r\n    standalone: false\r\n})\r\nexport class NgJvxDisabledOptionDirective implements OnInit, OnDestroy {\r\n  private isDisabled = false;\r\n  private originalOpacity = 1;\r\n\r\n  private unsubs = new Subject<void>();\r\n  private restore = new Subject<void>();\r\n\r\n  @Input() set ngJvxDisabledOption(source: boolean) {\r\n    this.isDisabled = source;\r\n    if (this.isDisabled) {\r\n      this.el.nativeElement.style.opacity = this.originalOpacity ? this.originalOpacity / 2 : 0.5;\r\n      fromEvent(this.el.nativeElement, 'click').pipe(takeUntil(this.restore), takeUntil(this.unsubs)).subscribe((e: MouseEvent) => {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n      });\r\n    } else {\r\n      this.el.nativeElement.style.opacity = this.originalOpacity;\r\n      this.restore.next();\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    private el: ElementRef) {\r\n    this.originalOpacity = el.nativeElement.style.opacity;\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubs.next();\r\n    this.unsubs.complete();\r\n  }\r\n}\r\n","import { HttpContext, HttpContextToken } from '@angular/common/http';\r\n\r\nexport const JVXMULTISELECT = new HttpContextToken<boolean>(() => false);\r\nexport const setJvxCall = (): any => new HttpContext().set(JVXMULTISELECT, true);\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {HttpClient, HttpParams} from '@angular/common/http';\r\nimport {setJvxCall} from './utils';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgJvxMultiselectService {\r\n  constructor(private http: HttpClient) {\r\n  }\r\n\r\n  getList({\r\n            url,\r\n            ignorePagination = false,\r\n            currentPage,\r\n            pageSize,\r\n            requestType = 'get',\r\n            requestHeaders,\r\n            search,\r\n            searchProp = 'search',\r\n            data,\r\n          }: {\r\n    url: string, ignorePagination: boolean,\r\n    currentPage: number,\r\n    pageSize: number,\r\n    requestType: 'get' | 'post',\r\n    requestHeaders: any,\r\n    search?: string,\r\n    searchProp?: string,\r\n    data: any\r\n  }): Observable<any> {\r\n    let params = new HttpParams();\r\n    if (search && search.length > 0) {\r\n      params = params.set(searchProp, search);\r\n    }\r\n    if (!ignorePagination) {\r\n      params = params.set('page', currentPage.toString())\r\n        .set('size', pageSize.toString());\r\n    }\r\n    if (requestType === 'get') {\r\n      const options = {\r\n        mode: 'no-cors', // cors\r\n        headers: requestHeaders,\r\n        context: setJvxCall(),\r\n        // withCredentials: true,\r\n        // credentials: 'same-origin', // cache: 'default',\r\n        params\r\n      };\r\n      return this.http.get(url, options);\r\n    } else {\r\n      const options = {\r\n        mode: 'no-cors', // cors\r\n        headers: requestHeaders,\r\n        context: setJvxCall(),\r\n        // withCredentials: true,\r\n        // credentials: 'same-origin', // cache: 'default',\r\n      };\r\n      const postParams = {\r\n        [searchProp]: params.get('smartSearch'),\r\n        paging: ['page', 'size', 'sort', 'ignorePagination'].reduce((obj, key) => {\r\n          obj[key] = params.get(key);\r\n          if (key === 'sort' && !params.get(key)) {\r\n            obj[key] = '';\r\n          } else if (key === 'ignorePagination' && !params.get(key)) {\r\n            obj[key] = false;\r\n          }\r\n          return obj;\r\n        }, {})\r\n      };\r\n      const payload = {\r\n        ...postParams,\r\n        ...data\r\n      };\r\n      return this.http.post(url, payload, options);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n} from '@angular/core';\r\nimport {Overlay} from '@angular/cdk/overlay';\r\nimport {fromEvent, noop, Subject, takeUntil, tap} from 'rxjs';\r\nimport {PanelComponent} from '../panel.component';\r\n\r\n@Directive({\r\n    selector: '[lib-menu-trigger-for], [libMenuTriggerFor]',\r\n    standalone: false\r\n})\r\nexport class MenuTriggerDirective implements OnDestroy, AfterViewInit {\r\n  private unsubscribe = new Subject<void>();\r\n\r\n  @Output() closed = new EventEmitter<void>();\r\n  @Output() onMenuOpen = new EventEmitter<void>();\r\n  @Output() menuOpened = new EventEmitter<void>();\r\n  @Output() onMenuClose = new EventEmitter<void>();\r\n  @Output() menuClosed = new EventEmitter<void>();\r\n\r\n  /** References the menu instance that the trigger is associated with. */\r\n  get menu(): PanelComponent | null {\r\n    return this._menu;\r\n  }\r\n\r\n  @Input()\r\n  set libMenuTriggerFor(menu: PanelComponent | null) {\r\n    this._menu = menu;\r\n  }\r\n\r\n  // tslint:disable-next-line:variable-name\r\n  private _menu: PanelComponent | null = null;\r\n\r\n\r\n  constructor(private el: ElementRef, private overlay: Overlay) {\r\n    fromEvent(this.el.nativeElement, 'click')\r\n      .pipe(\r\n        takeUntil(this.unsubscribe),\r\n        tap(() => {\r\n          if (this.menu) {\r\n            this.openMenu();\r\n          }\r\n        })\r\n      )\r\n      .subscribe(noop);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.menu) {\r\n      this.menu.onOpened.pipe(takeUntil(this.unsubscribe)).subscribe(() => {\r\n        this.menuOpened.emit();\r\n      });\r\n      this.menu.onClose.pipe(takeUntil(this.unsubscribe)).subscribe(() => {\r\n        this.onMenuClose.emit();\r\n      });\r\n      this.menu.onClosed.pipe(takeUntil(this.unsubscribe)).subscribe(() => {\r\n        this.menuClosed.emit();\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubscribe.next();\r\n    this.unsubscribe.complete();\r\n  }\r\n\r\n  closeMenu(): void {\r\n    this.menu.close();\r\n  }\r\n\r\n  openMenu(): void {\r\n    this.menu.trigger = this.el;\r\n    this.menu.open();\r\n    this.onMenuOpen.emit();\r\n    this.menu.open();\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  input,\r\n  Input,\r\n  InputSignal,\r\n  OnDestroy,\r\n  Output,\r\n  signal,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport {CdkConnectedOverlay} from '@angular/cdk/overlay';\r\nimport {fromEvent, Subject, timer} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {animate, query, style, transition, trigger} from '@angular/animations';\r\n\r\n@Component({\r\n  selector: 'lib-panel',\r\n  imports: [\r\n    CdkConnectedOverlay\r\n  ],\r\n  templateUrl: './panel.component.html',\r\n  styleUrl: './panel.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  animations: [\r\n    trigger('animation', [\r\n      transition(':enter', [\r\n        query('.ng-jvx-panel.below-panel', [\r\n          style({\r\n            opacity: 0,\r\n            transform: 'scaleY(0.8)',\r\n            transformOrigin: 'top',\r\n          }),\r\n          animate('0.08s ease-in-out', style({\r\n            opacity: 1,\r\n            transform: 'scaleY(1)',\r\n            transformOrigin: 'top',\r\n          }))], {optional: true}),\r\n        query('.ng-jvx-panel.above-panel', [\r\n          style({\r\n            opacity: 0,\r\n            transform: 'scaleY(0.8)',\r\n            transformOrigin: 'bottom',\r\n          }),\r\n          animate('0.08s ease-in-out', style({\r\n            opacity: 1,\r\n            transform: 'scaleY(1)',\r\n            transformOrigin: 'bottom',\r\n          }))], {optional: true})\r\n      ]),\r\n      transition(':leave', [\r\n        query('.ng-jvx-panel.below-panel', [\r\n          style({\r\n            opacity: 1,\r\n            transform: 'scaleY(1)',\r\n            transformOrigin: 'top'\r\n          }),\r\n          animate('.08s ease-in-out', style({\r\n            opacity: 0,\r\n            transform: 'scaleY(0.8)',\r\n            transformOrigin: 'top'\r\n          })),\r\n        ], {optional: true}),\r\n        query('.ng-jvx-panel.above-panel', [\r\n          style({\r\n            opacity: 1,\r\n            transform: 'scaleY(1)',\r\n            transformOrigin: 'bottom'\r\n          }),\r\n          animate('.08s ease-in-out', style({\r\n            opacity: 0,\r\n            transform: 'scaleY(0.8)',\r\n            transformOrigin: 'bottom'\r\n          })),\r\n        ], {optional: true})])\r\n    ]),\r\n  ]\r\n})\r\nexport class PanelComponent implements OnDestroy {\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Accessors\r\n  // -----------------------------------------------------------------------------------------------------\r\n\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Refs\r\n  // -----------------------------------------------------------------------------------------------------\r\n  @ViewChild('menuTemplate', {static: true})\r\n  menuTemplate!: TemplateRef<any>;\r\n\r\n  protected isOpen = signal(false);\r\n  private unsubscribe = new Subject<void>();\r\n\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Inputs\r\n  // -----------------------------------------------------------------------------------------------------\r\n  @Input() trigger!: ElementRef<any>;\r\n  yPosition: InputSignal<'above' | 'below'> = input('above');\r\n  multi = input.required<boolean>();\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Outputs\r\n  // -----------------------------------------------------------------------------------------------------\r\n  @Output() onClose = new EventEmitter<void>();\r\n  @Output() onClosed = new EventEmitter<void>();\r\n  @Output() onOpened = new EventEmitter<void>();\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ lifecycle Hooks\r\n  // -----------------------------------------------------------------------------------------------------\r\n\r\n  constructor() {\r\n    fromEvent(window, 'resize')\r\n      .pipe(takeUntil(this.unsubscribe))\r\n      .subscribe(() => {\r\n        this.close();\r\n      });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubscribe.next();\r\n    this.unsubscribe.complete();\r\n  }\r\n\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Public Methods\r\n  // -----------------------------------------------------------------------------------------------------\r\n\r\n  open(): void {\r\n    this.isOpen.set(true);\r\n    timer(800).subscribe(() => {\r\n      this.onOpened.emit();\r\n    });\r\n  }\r\n\r\n  close(): void {\r\n    this.isOpen.set(false);\r\n    this.onClose.emit();\r\n    timer(200).subscribe(() => {\r\n      this.onClosed.emit();\r\n    });\r\n  }\r\n\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ protected Methods\r\n  // -----------------------------------------------------------------------------------------------------\r\n  protected clickOnMenu(): void {\r\n    if (!this.multi()) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  // -----------------------------------------------------------------------------------------------------\r\n  // @ Private Methods\r\n  // -----------------------------------------------------------------------------------------------------\r\n}\r\n","<ng-template #menuTemplate cdkConnectedOverlay\r\n             (backdropClick)=\"close()\"\r\n             [cdkConnectedOverlayPositions]=\"[\r\n             {\r\n             originX: 'start',\r\n             originY: yPosition() === 'below'? 'center': 'top',\r\n             overlayX: 'start',\r\n             overlayY: yPosition() === 'below'? 'top': 'bottom'\r\n             }\r\n             ]\"\r\n             [cdkConnectedOverlayOrigin]=\"trigger\"\r\n             [cdkConnectedOverlayPanelClass]=\"'ng-jvx-multiselect-panel'\"\r\n             [cdkConnectedOverlayDisposeOnNavigation]=\"true\"\r\n             [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n             [cdkConnectedOverlayDisableClose]=\"false\"\r\n             [cdkConnectedOverlayBackdropClass]=\"'ng-jvx-panel-overlay'\"\r\n             [cdkConnectedOverlayOpen]=\"isOpen()\">\r\n  <div [@animation]=\"isOpen()\">\r\n    <div class=\"ng-jvx-panel\" [class]=\"yPosition()+'-panel'\" [class.opening]=\"isOpen()\" [class.closing]=\"!isOpen()\"\r\n         (click)=\"clickOnMenu()\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import {Component, EventEmitter, input, Input, Output, ViewEncapsulation} from '@angular/core';\r\nimport {NgClass} from '@angular/common';\r\n\r\n@Component({\r\n    selector: 'lib-chip',\r\n    imports: [\r\n        NgClass\r\n    ],\r\n    templateUrl: './chip.component.html',\r\n    styleUrl: './chip.component.scss',\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ChipComponent {\r\n  @Output() removed = new EventEmitter();\r\n\r\n  disabled = input<boolean>(false);\r\n\r\n  clickOnRemove(e: MouseEvent): void {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    if (!this.disabled()) {\r\n      this.removed.emit();\r\n    }\r\n  }\r\n}\r\n","<div [ngClass]=\"{disabled: disabled()}\"><span class=\"chip-text\">\r\n  <ng-content></ng-content>\r\n</span>\r\n    <svg class=\"remove-button\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"currentColor\" viewBox=\"0 0 256 256\" (click)=\"clickOnRemove($event)\"><path\r\n      d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,130.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path></svg>\r\n\r\n</div>\r\n","import {AfterContentInit, Directive, ElementRef, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {timer} from 'rxjs';\r\n\r\n@Directive({\r\n    // tslint:disable-next-line:directive-selector\r\n    selector: '[ngJvxFocus]',\r\n    standalone: false\r\n})\r\nexport class NgJvxFocusDirective implements OnInit, OnChanges {\r\n  @Input() ngJvxFocus: boolean;\r\n\r\n  constructor(private el: ElementRef) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.ngJvxFocus) {\r\n      this.el.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.hasOwnProperty('ngJvxFocus') && changes.ngJvxFocus.currentValue === true) {\r\n      this.el.nativeElement.focus();\r\n    }\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component, computed,\r\n  ContentChild, DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding, input,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  QueryList,\r\n  Self, Signal, signal,\r\n  SimpleChanges, viewChild,\r\n  ViewChild,\r\n  ViewChildren,\r\n  ViewEncapsulation, WritableSignal\r\n} from '@angular/core';\r\nimport {NgJvxOptionsTemplateDirective} from './directives/ng-jvx-options-template.directive';\r\nimport {ControlValueAccessor, NgControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from '@angular/forms';\r\nimport {NgJvxOptionComponent} from './ng-jvx-option/ng-jvx-option.component';\r\nimport {NgJvxMultiselectService} from './ng-jvx-multiselect.service';\r\nimport {HttpHeaders} from '@angular/common/http';\r\nimport {NgScrollbar} from 'ngx-scrollbar';\r\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap, takeUntil, tap, throttleTime} from 'rxjs/operators';\r\nimport {BehaviorSubject, forkJoin, fromEvent, interval, lastValueFrom, noop, Observable, of, Subject, throwError, timer} from 'rxjs';\r\nimport {NgJvxMultiOptionMapper, NgJvxOptionMapper} from './interfaces/ng-jvx-option-mapper';\r\nimport {NgJvxSelectionTemplateDirective} from './directives/ng-jvx-selection-template.directive';\r\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {NgJvxGroupHeaderDirective} from './directives/ng-jvx-group-header.directive';\r\nimport {NgJvxSearchMapper} from './interfaces/ng-jvx-search-mapper';\r\nimport {NgJvxGroup, NgJvxGroupMapper} from './interfaces/ng-jvx-group-mapper';\r\nimport {MenuTriggerDirective} from './panel/menu-trigger/menu-trigger.directive';\r\nimport {toSignal} from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'ng-jvx-multiselect',\r\n  templateUrl: './ng-jvx-multiselect.component.html',\r\n  styleUrls: ['./ng-jvx-multiselect.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [\r\n    // {\r\n    //   provide: MatFormFieldControl,\r\n    //   useExisting: forwardRef(() => NgJvxMultiselectComponent),\r\n    //   multi: true,\r\n    // }\r\n  ],\r\n  standalone: false\r\n})\r\nexport class NgJvxMultiselectComponent implements OnInit, OnDestroy, AfterViewInit,\r\n  ControlValueAccessor {\r\n  static nextId = 0;\r\n  @HostBinding() id = `jvx-multiselect-${NgJvxMultiselectComponent.nextId++}`;\r\n\r\n  @HostBinding('class.floating')\r\n  get shouldLabelFloat(): boolean {\r\n    return this.focused || !this.empty || this.value.length > 0 || !!this.isPlaceholderActive;\r\n  }\r\n\r\n  jvxMultiselect = viewChild.required<ElementRef>('jvxMultiselect');\r\n  @ViewChild('valueContainer', {static: true}) valueContainer: ElementRef;\r\n  selectionContainer = viewChild.required<ElementRef>('selectionContainer');\r\n  menuFooter = viewChild<ElementRef>('menuFooter');\r\n  // @ViewChild('selection', {static: true}) selection: MatSelectionList;\r\n  @ViewChild(MenuTriggerDirective, {static: true}) trigger: MenuTriggerDirective;\r\n  @ViewChild('scrollbar', {static: false}) scrollbar: NgScrollbar;\r\n  multiContainer = viewChild.required<ElementRef>('multiContainer');\r\n  @ViewChild('placeholderContainer', {static: false}) placeholderContainer: ElementRef;\r\n  @ViewChildren(NgJvxOptionComponent) optionComp: QueryList<NgJvxOptionComponent>;\r\n  @ContentChild(NgJvxOptionsTemplateDirective) optionsTemplate: NgJvxOptionsTemplateDirective | null = null;\r\n  @ContentChild(NgJvxSelectionTemplateDirective) selectionTemplate: NgJvxSelectionTemplateDirective | null = null;\r\n  @ContentChild(NgJvxGroupHeaderDirective) groupHeaderTemplate: NgJvxGroupHeaderDirective | null = null;\r\n  // @ContentChild(NgJvxOptionComponent) optionComp: NgJvxOptionComponent;\r\n  // @ContentChild(TemplateRef) optionsTemplate: TemplateRef<any> | null = null;\r\n  @Input() set options(v: any[]) {\r\n    if (v) {\r\n      this.selectableOptions = [...v];\r\n    } else {\r\n      this.selectableOptions = [];\r\n    }\r\n    this._options = v;\r\n  }\r\n\r\n  get options(): any[] {\r\n    return this._options;\r\n  }\r\n\r\n  @Input() multi = false;\r\n  @Input() url = '';\r\n  @Input() requestType: 'get' | 'post' = 'get';\r\n  @Input() itemValue = 'value';\r\n  @Input() itemText = 'text';\r\n  @Input() ignorePagination = false;\r\n  @Input() clearable = false;\r\n  @Input() closeOnClick = true;\r\n  @Input() hasErrors = false;\r\n  @Input() searchMode: null | 'server' | 'client' = null;\r\n  @Input() searchInput = false;\r\n  @Input() searchLabel = 'search';\r\n  @Input() listProp = '';\r\n  @Input() totalRowsProp = '';\r\n  @Input() panelClass = '';\r\n  @Input() searchProp = 'search';\r\n  @Input() closeButton = false;\r\n  @Input() mapper: NgJvxOptionMapper<any> = {\r\n    mapOption(source: any): Observable<any> {\r\n      return of(source);\r\n    }\r\n  };\r\n  @Input() multiMapper: NgJvxMultiOptionMapper<any> = {\r\n    mapOptions(source: any[]): Observable<any> {\r\n      return of(source);\r\n    }\r\n  };\r\n  @Input() searchMapper: NgJvxSearchMapper<any> = {\r\n    mapSearch: (source: string, options: any[]): Observable<any> => {\r\n      return of(options.filter(o => o[this.itemText].toString().toLowerCase().includes(source.toString().toLowerCase())));\r\n    }\r\n  };\r\n  @Input() groupBy: NgJvxGroupMapper<any> | string | null;\r\n\r\n  @Input() set value(value: any[]) {\r\n    if (!this.areArraysEqual(value, this.pValue)) {\r\n      this.pValue = value ?? [];\r\n      this.showList = !this.showList;\r\n      if (value) {\r\n        this.form.get('selectionValue').setValue(this.pValue.map(v => v[this.itemValue]));\r\n      } else {\r\n        this.form.get('selectionValue').setValue(value);\r\n      }\r\n      this.changeDetectorRef.detectChanges();\r\n      this.showList = !this.showList;\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  get value(): any[] {\r\n    return this.pValue;\r\n  }\r\n\r\n  @Input() requestHeaders: HttpHeaders = new HttpHeaders();\r\n\r\n  @Input()\r\n  get required(): boolean {\r\n    return this._required;\r\n  }\r\n\r\n  set required(req) {\r\n    this._required = coerceBooleanProperty(req);\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  postPayload = input<object>();\r\n  // tslint:disable-next-line:variable-name\r\n  private _required = false;\r\n  private _jvxWidth = signal(0);\r\n\r\n  @Input()\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  set disabled(value: boolean) {\r\n    this._disabled = coerceBooleanProperty(value);\r\n    this._disabled ? this.parts.disable() : this.parts.enable();\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  @Input()\r\n  get pageSize(): number {\r\n    return this.intPageSize;\r\n  }\r\n\r\n  set pageSize(val: number) {\r\n    if (val < 15) {\r\n      this.intPageSize = 15;\r\n    } else {\r\n      this.intPageSize = val;\r\n    }\r\n  }\r\n\r\n  // tslint:disable-next-line:variable-name\r\n  private _disabled = false;\r\n\r\n  get errorState(): boolean {\r\n    if (this.ngControl != null) {\r\n      return this.ngControl.invalid && this.ngControl.touched;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  @Output() valueChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n  @Output() jvxMultiselectOpen: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() jvxMultiselectOpened: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() jvxMultiselectClose: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() jvxMultiselectClosed: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() scrollEnd: EventEmitter<void> = new EventEmitter<void>();\r\n  private _options = [];\r\n  public controlType = 'ng-jvx-multiselect';\r\n  public document = document;\r\n  public window = window;\r\n  public form: UntypedFormGroup;\r\n  public isOpen = signal(false);\r\n  public isLoading = signal(false);\r\n  public showList = true;\r\n  public asyncOptions: any = [];\r\n  public selectableOptions = [];\r\n  public orderedOptions: { group: any, options: any[] }[] = [];\r\n  public searchValue = '';\r\n  public yPosition: WritableSignal<'above' | 'below'> = signal('below');\r\n\r\n  public stateChanges = new Subject<void>();\r\n  public currentPage = 0;\r\n\r\n  public listContainerSize = computed(() => {\r\n    if (this.isOpen() && this.menuFooter() && this.menuFooter().nativeElement) {\r\n      return {\r\n        height: this.selectionContainer().nativeElement.offsetHeight > 300 ? '300px' : 'auto',\r\n        minHeight: this.selectionContainer().nativeElement.offsetHeight <= 300 ?\r\n          this.selectionContainer().nativeElement.offsetHeight + 'px' : '300px',\r\n        width: this._jvxWidth() + 'px'\r\n      };\r\n    } else {\r\n      return {\r\n        height: 'auto',\r\n        minHeight: '300px',\r\n        width: this._jvxWidth() + 'px'\r\n      };\r\n    }\r\n  });\r\n  public parts: UntypedFormGroup;\r\n\r\n  public touched = false;\r\n\r\n  public placeholder: string;\r\n  public focused = false;\r\n  public multiContainerWidth = computed(() => {\r\n    return this.multiContainer()?.nativeElement?.offsetWidth ?? 100;\r\n  });\r\n  private isPlaceholderActiveSubject = new BehaviorSubject<boolean>(false);\r\n  private isPlaceholderActive = false;\r\n  private searchValueSubject = new Subject<string>();\r\n  private searchValue$ = this.searchValueSubject.asObservable();\r\n  private pValue: any[] = [];\r\n  private shouldLoadMore = true;\r\n  private unsubscribe = new Subject<void>();\r\n  private unsubscribe$ = this.unsubscribe.asObservable();\r\n  private intPageSize = 15;\r\n  public onTouched = () => {\r\n  };\r\n\r\n\r\n  constructor(private formBuilder: UntypedFormBuilder, private service: NgJvxMultiselectService,\r\n              private elementRef: ElementRef,\r\n              private changeDetectorRef: ChangeDetectorRef,\r\n              @Optional() @Self() public ngControl: NgControl, fb: UntypedFormBuilder) {\r\n    if (this.ngControl != null) {\r\n      // Setting the value accessor directly (instead of using\r\n      // the providers) to avoid running into a circular import.\r\n      this.ngControl.valueAccessor = this;\r\n    }\r\n    this.isPlaceholderActiveSubject.pipe(takeUntil(this.unsubscribe), debounceTime(0)).subscribe((v) => {\r\n      this.isPlaceholderActive = v;\r\n      this.stateChanges.next();\r\n    });\r\n    this.parts = fb.group({\r\n      area: '',\r\n      exchange: '',\r\n      subscriber: '',\r\n    });\r\n    this.form = this.formBuilder.group({\r\n      selectionValue: new UntypedFormControl(this.selectionValue)\r\n    });\r\n      }\r\n\r\n  // ngDoCheck(): void {\r\n  //   this.isPlaceholderActiveSubject.next(this.placeholderContainer?.nativeElement?.hasChildNodes());\r\n  // }\r\n\r\n  ngOnInit(): void {\r\n    this.stateChange$.pipe(takeUntil(this.unsubscribe)).subscribe(() => {\r\n      this.changeDetectorRef.markForCheck();\r\n    });\r\n    // this.setSelectableOptions(this.options).subscribe(noop);\r\n    this.selectableOptions = [...this.options];\r\n    this.updateOrderedOptions(this.selectableOptions).subscribe(noop);\r\n\r\n    this.searchValue$.pipe(takeUntil(this.unsubscribe), debounceTime(300), distinctUntilChanged((prev, curr) => {\r\n        return curr === this.searchValue;\r\n      }), switchMap((val: string) => {\r\n          this.searchValue = val;\r\n          this.currentPage = 0;\r\n          if (this.searchMode === 'client') {\r\n            return this.clientSearch();\r\n          } else if (this.url && this.url.length > 0) {\r\n            return this.serverSearch();\r\n          }\r\n        }\r\n      )\r\n    ).subscribe((val: any[]) => {\r\n      this.changeDetectorRef.markForCheck();\r\n    });\r\n  }\r\n\r\n  private areArraysEqual(arr1: any[] | null, arr2: any[] | null): boolean {\r\n    // Se entrambi sono null o undefined, sono uguali\r\n    if (!arr1 && !arr2) {\r\n      return true;\r\n    }\r\n    // Se solo uno dei due è null/undefined, sono diversi\r\n    if (!arr1 || !arr2) {\r\n      return false;\r\n    }\r\n    // Se hanno lunghezza diversa, sono diversi\r\n    if (arr1.length !== arr2.length) {\r\n      return false;\r\n    }\r\n\r\n    // Verifica che ogni elemento di arr1 abbia una corrispondenza in arr2\r\n    return arr1.every(item1 => {\r\n        return arr2.some(item2 => {\r\n          if (typeof item1 === 'object' && item1 !== null) {\r\n            // Se gli elementi sono oggetti, confronta i valori itemValue\r\n            return item1[this.itemValue] === item2[this.itemValue];\r\n          }\r\n          // Altrimenti confronta direttamente i valori\r\n          return item1 === item2;\r\n        });\r\n      }) &&\r\n      // Verifica anche il contrario per assicurarsi che non ci siano elementi extra\r\n      arr2.every(item2 => {\r\n        return arr1.some(item1 => {\r\n          if (typeof item2 === 'object' && item2 !== null) {\r\n            return item2[this.itemValue] === item1[this.itemValue];\r\n          }\r\n          return item2 === item1;\r\n        });\r\n      });\r\n  }\r\n\r\n  private clientSearch(): Observable<any> {\r\n    let obs: Observable<any>;\r\n    if (this.url && this.url.length > 0) {\r\n      this.selectableOptions = [];\r\n      this.updateOrderedOptions(this.selectableOptions).subscribe(noop);\r\n      this.shouldLoadMore = true;\r\n      obs = this.getList().pipe(map(() => {\r\n        return this.selectableOptions;\r\n      }));\r\n    } else {\r\n      obs = of(this.options);\r\n    }\r\n    return obs.pipe(switchMap((val) => this.searchMapper.mapSearch(this.searchValue, val)), switchMap((res) => {\r\n        // return this.setSelectableOptions(res);\r\n        this.selectableOptions = [];\r\n        this.selectableOptions.push(...res);\r\n        return this.updateOrderedOptions(this.selectableOptions);\r\n      }\r\n    ));\r\n  }\r\n\r\n  private setSelectableOptions(options: any[]): Observable<any> {\r\n    this.selectableOptions = [];\r\n    const obs: Observable<any>[] = options.reduce((acc, curr) => {\r\n      acc.push(this.mapper.mapOption(curr));\r\n      return acc;\r\n    }, []);\r\n\r\n    // this.mapper.mapOption(option);\r\n\r\n    return forkJoin([...obs]).pipe(switchMap((val) => {\r\n      this.selectableOptions.push(...val);\r\n      return this.updateOrderedOptions(this.selectableOptions);\r\n    }));\r\n  }\r\n\r\n  private serverSearch(): Observable<any> {\r\n    this.shouldLoadMore = true;\r\n    this.selectableOptions = [];\r\n    this.shouldLoadMore = true;\r\n    return this.getList();\r\n  }\r\n\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubscribe.next();\r\n    this.stateChanges.complete();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n    if (this.scrollbar) {\r\n      this.scrollbar.scrolled.pipe(takeUntil(this.unsubscribe$)).subscribe((e: any) => {\r\n        this.onScrolled(e);\r\n      });\r\n    }\r\n    timer(300).pipe(tap(() => {\r\n      this.changeDetectorRef.markForCheck();\r\n    })).subscribe(noop);\r\n  }\r\n\r\n  // ngOnChanges(changes: SimpleChanges): void {\r\n  //   if (changes.options) {\r\n  //     // this.setSelectableOptions(this.options).subscribe(noop);\r\n  //     this.selectableOptions = [...this.options];\r\n  //   }\r\n  // }\r\n\r\n\r\n  get selectionValue(): any[] {\r\n    return this.value.map((v) => {\r\n      return v[this.itemValue];\r\n    });\r\n  }\r\n\r\n  get empty(): boolean {\r\n    const n = this.parts.value;\r\n    return !n.area && !n.exchange && !n.subscriber && !this.isPlaceholderActive;\r\n  }\r\n\r\n  onCLickOnMenu(e: MouseEvent): void {\r\n    if (this.multi || this.closeOnClick === false) {\r\n      e.stopPropagation();\r\n    }\r\n  }\r\n\r\n\r\n  private propagateChange(_: any): any {\r\n  }\r\n\r\n  // this is the initial value set to the component\r\n  public writeValue(obj: any[]): void {\r\n    this.value = obj;\r\n  }\r\n\r\n  // registers 'fn' that will be fired when changes are made\r\n  // this is how we emit the changes back to the form\r\n  public registerOnChange(fn: any): void {\r\n    this.propagateChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  onChange(e: any): void {\r\n    // onChange(e: MatSelectionListChange): void {\r\n\r\n    let vals = e.source.selectedOptions.selected.map(o => o.value);\r\n    vals = this.selectableOptions.filter(o => vals.includes(o[this.itemValue]));\r\n    const selectableIds = this.selectableOptions.map(s => s[this.itemValue]);\r\n    if (this.multi) {\r\n      // if search is active, probably some of the already selected values are not included in the selectable options,\r\n      // so we have to push them in the selected values of the list;\r\n      for (const v of this.value) {\r\n        if (!selectableIds.includes(v[this.itemValue])) {\r\n          vals = [v, ...vals];\r\n        }\r\n      }\r\n    }\r\n    vals.sort((a, b) => {\r\n      return typeof a[this.itemValue] === 'string' ?\r\n        a[this.itemValue].localeCompare(b[this.itemValue]) : a[this.itemValue] - b[this.itemValue];\r\n    });\r\n    this.value = [...vals];\r\n    this.form.get('selectionValue').setValue(this.value.map(v => v[this.itemValue]));\r\n\r\n    this.valueChange.emit(this.value);\r\n    this.propagateChange(this.value);\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n\r\n  onFocusIn(event: FocusEvent): void {\r\n    if (!this.focused) {\r\n      this.focused = true;\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  onFocusOut(event: FocusEvent): void {\r\n    if (!this.elementRef.nativeElement.contains(event.relatedTarget as Element)) {\r\n      this.touched = true;\r\n      this.focused = false;\r\n      this.onTouched();\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  onMenuOpen(): void {\r\n    this.yPosition.set(window.innerHeight - this.jvxMultiselect()?.nativeElement?.getBoundingClientRect()?.top < 300 ? 'above' : 'below');\r\n    this._jvxWidth.set(this.jvxMultiselect().nativeElement.offsetWidth);\r\n    this.isOpen.set(true);\r\n    this.jvxMultiselectOpen.emit();\r\n    const stopInterval = new Subject<void>();\r\n    interval(10).pipe(takeUntil(stopInterval)).subscribe(() => {\r\n      this.changeDetectorRef.detectChanges();\r\n    });\r\n    timer(200).subscribe(() => {\r\n      stopInterval.next();\r\n    });\r\n  }\r\n\r\n  onMenuClose(): void {\r\n    this.isOpen.set(false);\r\n    this.jvxMultiselectClose.emit();\r\n  }\r\n\r\n  deselect(val: any): void {\r\n    // this.value = [...this.value.filter(v => v[this.itemValue] !== val[this.itemValue])];\r\n    this.value.splice(this.value.findIndex(v => v[this.itemValue] === val[this.itemValue]), 1);\r\n    this.form.get('selectionValue').setValue(this.value.map(m => m[this.itemValue]));\r\n    this.valueChange.emit(this.value);\r\n    this.propagateChange(this.value);\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  private setSelectionContainerSize(): void {\r\n\r\n  }\r\n\r\n  clickOnMenuTrigger(e: MouseEvent): void {\r\n    if (!this.disabled && !this.isLoading()) {\r\n      this.showList = false;\r\n      this.shouldLoadMore = true;\r\n      timer(0).subscribe(() => {\r\n        this.showList = true;\r\n        if (this.url.length > 0) {\r\n          e.preventDefault();\r\n\r\n          this.selectableOptions.length = 0;\r\n          this.updateOrderedOptions(this.selectableOptions);\r\n          this.getList().subscribe(noop);\r\n          this.setSelectionContainerSize();\r\n\r\n        } else {\r\n          this.trigger.openMenu();\r\n          this.setSelectionContainerSize();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  private getList(): Observable<any> {\r\n    this.isLoading.set(true);\r\n    return this.service.getList({\r\n      url: this.url,\r\n      requestType: this.requestType,\r\n      data: this.postPayload() ?? {},\r\n      currentPage: ++this.currentPage,\r\n      ignorePagination: this.ignorePagination,\r\n      requestHeaders: this.requestHeaders,\r\n      search: this.searchValue,\r\n      searchProp: this.searchProp,\r\n      pageSize: this.intPageSize\r\n    }).pipe(\r\n      map((val) => {\r\n        return val ?? [];\r\n      }),\r\n      switchMap((val) => this.multiMapper.mapOptions(val)), switchMap((val) => {\r\n        let result = [];\r\n        if (!val) {\r\n          result = [];\r\n        } else if (this.listProp.length > 0) {\r\n          result = [...(val[this.listProp] ?? [])];\r\n        } else {\r\n          result = [...val];\r\n        }\r\n\r\n        if (result.length === 0) {\r\n          this.shouldLoadMore = false;\r\n          this.isLoading.set(false);\r\n          return of([]);\r\n        } else {\r\n          const newOptions = [];\r\n\r\n          for (const opt of result) {\r\n            const newOption = this.mapper.mapOption(opt);\r\n            newOptions.push(newOption);\r\n          }\r\n          return forkJoin(newOptions);\r\n        }\r\n      }), switchMap((finVal: any) => {\r\n        this.selectableOptions.push(...finVal);\r\n        return this.updateOrderedOptions(this.selectableOptions);\r\n      }), map((val) => {\r\n        this.isLoading.set(false);\r\n        this.trigger.openMenu();\r\n        this.setSelectionContainerSize();\r\n        return val;\r\n      }),\r\n      tap(() => {\r\n        this.changeDetectorRef.markForCheck();\r\n      }),\r\n      catchError((error) => {\r\n        this.isLoading.set(false);\r\n        this.changeDetectorRef.markForCheck();\r\n        return throwError(() => error);\r\n      })\r\n    );\r\n  }\r\n\r\n  onScrolled(e: any): void {\r\n    if (e.target.scrollTop + 260 + ((this.searchInput ? 0 : 1) * 40) - this.menuFooter().nativeElement.offsetHeight === this.selectionContainer().nativeElement.offsetHeight\r\n      && !this.isLoading()) {\r\n      this.scrollEnd.emit();\r\n      if (this.url && this.url.length > 0 && !this.ignorePagination && this.shouldLoadMore) {\r\n        this.getList().subscribe(noop);\r\n      }\r\n    }\r\n  }\r\n\r\n  onMenuOpened(): void {\r\n    this.jvxMultiselectOpened.emit();\r\n  }\r\n\r\n  onMenuClosed(): void {\r\n    if ((!this.url || this.url.length === 0) && this.searchMode === 'client') {\r\n      this.searchValueSubject.next('');\r\n    } else {\r\n      this.searchValue = '';\r\n      this.currentPage = 0;\r\n    }\r\n    this.jvxMultiselectClosed.emit();\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  onSearchInputClick(e: MouseEvent): void {\r\n    e.stopPropagation();\r\n  }\r\n\r\n  onSearchValueChange(e: any): void {\r\n    this.searchValueSubject.next(e.target.value);\r\n  }\r\n\r\n  clear(e: Event): void {\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    this.value = [];\r\n    this.form.get('selectionValue').setValue(this.value.map(v => v[this.itemValue]));\r\n    this.propagateChange(this.value);\r\n    this.valueChange.emit(this.value);\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  setDescribedByIds(ids: string[]): void {\r\n    const controlElement = this.elementRef.nativeElement\r\n      .querySelector('.ng-jvx-multiselect');\r\n    controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n  }\r\n\r\n  onContainerClick(event: MouseEvent): void {\r\n    // if ((event.target as Element).tagName.toLowerCase() !== 'input') {\r\n    //   this.elementRef.nativeElement.querySelector('input').focus();\r\n    // }\r\n  }\r\n\r\n  private get stateChange$(): Observable<any> {\r\n    return this.stateChanges.asObservable();\r\n  }\r\n\r\n  updateOrderedOptions(options): Observable<any> {\r\n    let obs = of(options);\r\n    if (this.groupBy) {\r\n      this.orderedOptions.length = 0;\r\n      const obsArr = [];\r\n      for (const option of options) {\r\n        if (typeof this.groupBy !== 'string') {\r\n          obsArr.push(this.groupBy.mapGroup(option));\r\n        } else {\r\n          obsArr.push(of({group: option[this.groupBy], option} as NgJvxGroup<any>));\r\n        }\r\n      }\r\n      obs = forkJoin(obsArr).pipe(map((res: any) => {\r\n        const groups = [...new Set(res.map(item => item.group))];\r\n        for (const group of groups) {\r\n          this.orderedOptions.push({\r\n            group,\r\n            options: res.filter(r => r.group === group).map(o => o.option)\r\n          });\r\n        }\r\n        return this.orderedOptions;\r\n      }));\r\n    }\r\n    return obs;\r\n  }\r\n\r\n  public closeMenu(): void {\r\n    this.trigger.closeMenu();\r\n  }\r\n\r\n  public isOptionSelected(option: any): boolean {\r\n    return this.form.get('selectionValue').value.some(s => s === option[this.itemValue]);\r\n  }\r\n\r\n  clickOnOption(option: any): void {\r\n    if (this.isOptionSelected(option)) {\r\n      this.deselect(option);\r\n    } else {\r\n      this.select(option);\r\n    }\r\n  }\r\n\r\n  select(option: any): void {\r\n    if (!this.multi) {\r\n      this.form.get('selectionValue').reset([]);\r\n      this.value = [];\r\n    }\r\n    this.value.push(option);\r\n\r\n    this.value.sort((a, b) => {\r\n      return typeof a[this.itemValue] === 'string' ?\r\n        a[this.itemValue].localeCompare(b[this.itemValue]) : a[this.itemValue] - b[this.itemValue];\r\n    });\r\n    const val = this.form.get('selectionValue').value.concat([option[this.itemValue]]);\r\n    val.sort((a, b) => {\r\n      return typeof a[this.itemValue] === 'string' ?\r\n        a[this.itemValue].localeCompare(b[this.itemValue]) : a[this.itemValue] - b[this.itemValue];\r\n    });\r\n    this.form.get('selectionValue').setValue(val);\r\n    this.propagateChange(this.value);\r\n    this.valueChange.emit(this.value);\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n}\r\n","\r\n<div class=\"ng-jvx-multiselect\" [ngClass]=\"{'disabled': disabled, 'has-errors': hasErrors}\" #jvxMultiselect>\r\n  <!-- START MENU -->\r\n  <div [libMenuTriggerFor]=\"menuRef\" (onMenuOpen)=\"onMenuOpen()\" (menuOpened)=\"onMenuOpened()\"\r\n       #trigger\r\n       (onMenuClose)=\"onMenuClose()\" (menuClosed)=\"onMenuClosed()\"\r\n  >\r\n    <lib-panel #menuRef [class]=\"['jvx-multiselect-panel', panelClass].join(' ')\" [multi]=\"multi\" [formGroup]=\"form\"\r\n               [yPosition]=\"yPosition()\">\r\n      @if (closeButton) {\r\n        <div class=\"closeMenuButton\">\r\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 256 256\">\r\n            <path\r\n              d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\r\n          </svg>\r\n        </div>\r\n      }\r\n      <div style=\"display: flex; flex-direction: column\"\r\n           [ngStyle]=\"{'overflow-y': 'hidden', 'width': listContainerSize().width, 'min-width.px': 112, 'max-height': '300px', 'height': listContainerSize().height}\">\r\n      <div class=\"menu-list-container\"\r\n           [style.flex]=\"'1 1 0'\"\r\n           #menuLIstContainer\r\n           >\r\n        <div class=\"search-input-container\" *ngIf=\"!!searchInput\" (click)=\"onSearchInputClick($event)\">\r\n          <input type=\"text\" [placeholder]=\"searchLabel\" [ngModel]=\"searchValue\" [ngModelOptions]=\"{standalone: true}\"\r\n                 [ngJvxFocus]=\"isOpen()\"\r\n                 (input)=\"onSearchValueChange($event)\"/>\r\n        </div>\r\n        <div\r\n          [ngStyle]=\"{height: searchInput && selectionContainer.clientHeight > 220 || selectionContainer.clientHeight > 300? 300 - (searchInput? 40 : 0) - menuFooter.offsetHeight + 'px': 'auto'}\">\r\n          <ng-scrollbar style=\"width: 100%\"\r\n                        smoothScroll\r\n                        [visibility]=\"'hover'\"\r\n                        [appearance]=\"'compact'\"\r\n                        [sensorDisabled]=\"isLoading()\"\r\n                        [autoHeightDisabled]=\"false\" #scrollbar>\r\n            <div #selectionContainer (click)=\"onCLickOnMenu($event)\">\r\n              <div #selection\r\n                   *ngIf=\"showList\"\r\n                   [ngStyle]=\"{'padding': 0, 'width': listContainerSize().width, 'min-width.px': 112}\"\r\n                   ngDefaultControl\r\n                   formControlName=\"selectionValue\">\r\n                <ng-content></ng-content>\r\n                <ng-container *ngIf=\"!!groupBy\">\r\n                  <ng-container *ngFor=\"let opt of orderedOptions\">\r\n                    <ng-container\r\n                      [ngTemplateOutlet]=\"groupHeaderTemplate? groupHeaderTemplate.template: defaultGroupHeaderTemplate\"\r\n                      [ngTemplateOutletContext]=\"{$implicit: opt}\"></ng-container>\r\n\r\n                    <ng-jvx-option *ngFor=\"let option of opt.options\" [value]=\"option[itemValue]\"\r\n                                   [isSelected]=\"isOptionSelected(option)\" (click)=\"clickOnOption(option)\">\r\n                      <!--        <ng-container [ngTemplateOutlet]=\"optionsTemplate\" [ngTemplateOutletContext]=\"{$implicit: option}\"></ng-container>-->\r\n                      <div class=\"ng-jvx-option-wrapper\" style=\"min-height:48px\">\r\n                        <ng-container [ngTemplateOutlet]=\"optionsTemplate? optionsTemplate.template : defaultTemplate\"\r\n                                      [ngTemplateOutletContext]=\"{$implicit: option}\"></ng-container>\r\n                      </div>\r\n                    </ng-jvx-option>\r\n                  </ng-container>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"!groupBy || groupBy.length === 0\">\r\n                  <ng-jvx-option *ngFor=\"let option of selectableOptions\" [value]=\"option[itemValue]\"\r\n                                 [isSelected]=\"isOptionSelected(option)\" (click)=\"clickOnOption(option)\">\r\n                    <div class=\"ng-jvx-option-wrapper\" style=\"min-height:48px\">\r\n                      <!--        <ng-container [ngTemplateOutlet]=\"optionsTemplate\" [ngTemplateOutletContext]=\"{$implicit: option}\"></ng-container>-->\r\n                      <ng-container [ngTemplateOutlet]=\"optionsTemplate? optionsTemplate.template : defaultTemplate\"\r\n                                    [ngTemplateOutletContext]=\"{$implicit: option}\"></ng-container>\r\n                    </div>\r\n                  </ng-jvx-option>\r\n                </ng-container>\r\n              </div>\r\n            </div>\r\n          </ng-scrollbar>\r\n        </div>\r\n\r\n      </div>\r\n      <div class=\"menu-footer\" #menuFooter>\r\n        <ng-content select=\"[ng-jvx-footer]\"></ng-content>\r\n      </div>\r\n      </div>\r\n    </lib-panel>\r\n  </div>\r\n  <!-- END MENU -->\r\n  <!-- START INPUT -->\r\n  <div [ngClass]=\"{'ng-jvx-multiselect-value-container': true, 'is-open': isOpen()}\"\r\n       (click)=\"clickOnMenuTrigger($event)\"\r\n       #valueContainer>\r\n    @if (value.length === 0) {\r\n      <div class=\"ng-jvx-multiselect__placeholder\" #placeholderContainer>\r\n        <ng-content select=\"[placeholder]\"></ng-content>\r\n      </div>\r\n    }\r\n    <div class=\"ng-jvx-multiselect-value multi-value-container\" *ngIf=\"multi\" #multiContainer>\r\n      <ng-container [ngTemplateOutlet]=\"selectionTemplate? selectionTemplate.template : defaultMultiSelectionTemplate\"\r\n                    [ngTemplateOutletContext]=\"{$implicit: value}\"></ng-container>\r\n\r\n    </div>\r\n\r\n    <div class=\"ng-jvx-multiselect-value single-value-container\" *ngIf=\"!multi\">\r\n      <div *ngFor=\"let val of value\" style=\"width: 100%;\">\r\n        <ng-container [ngTemplateOutlet]=\"selectionTemplate? selectionTemplate.template : defaultSelectionTemplate\"\r\n                      [ngTemplateOutletContext]=\"{$implicit: val}\"></ng-container>\r\n      </div>\r\n    </div>\r\n    @if (clearable && value.length > 0) {\r\n      <div class=\"ng-jvx-multiselect__remove-button\" (click)=\"clear($event)\">\r\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"#000000\" viewBox=\"0 0 256 256\">\r\n          <path\r\n            d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\"></path>\r\n        </svg>\r\n      </div>\r\n    }\r\n    <div class=\"ng-jvx-multiselect-arrow\">\r\n      @if (!isLoading()) {\r\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#000000\" viewBox=\"0 0 256 256\">\r\n          <path\r\n            d=\"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z\"></path>\r\n        </svg>\r\n      } @else {\r\n        <div class=\"lds-ring\">\r\n          <div></div>\r\n          <div></div>\r\n          <div></div>\r\n          <div></div>\r\n        </div>\r\n      }\r\n    </div>\r\n  </div>\r\n  <!-- END INPUT -->\r\n</div>\r\n<ng-template #defaultTemplate let-option>\r\n  <div style=\"min-height: 48px; height: 100%; display: flex; align-items: center\">\r\n    <div style=\"max-width: 100%;\r\n  padding-inline: .3rem;\r\n     white-space: nowrap;\r\n     overflow: hidden;\r\n     text-overflow: ellipsis;\">{{ option[itemText] }}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultSelectionTemplate let-value>\r\n  {{ value[itemText] }}\r\n</ng-template>\r\n\r\n<ng-template #defaultMultiSelectionTemplate let-value>\r\n  <div style=\"display: flex; gap: 0.3rem; flex-wrap: wrap;\">\r\n    @for (val of value; track val[itemValue]) {\r\n      <lib-chip class=\"ng-jvx-multiselect-chip\" [disabled]=\"this.disabled\" (removed)=\"deselect(val)\">\r\n        {{ val[itemText] }}\r\n      </lib-chip>\r\n    }\r\n  </div>\r\n</ng-template>\r\n<ng-template #defaultGroupHeaderTemplate let-opt>\r\n  <div style=\"padding-inline: 15px\"><strong>{{ opt.group }}</strong></div>\r\n</ng-template>\r\n","import {NgModule} from '@angular/core';\r\nimport {NgJvxMultiselectComponent} from './ng-jvx-multiselect.component';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NgJvxOptionComponent} from './ng-jvx-option/ng-jvx-option.component';\r\nimport {NgJvxOptionsTemplateDirective} from './directives/ng-jvx-options-template.directive';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {NgScrollbarModule} from 'ngx-scrollbar';\r\nimport {SmoothScroll} from 'ngx-scrollbar/smooth-scroll';\r\nimport {NgJvxSelectionTemplateDirective} from './directives/ng-jvx-selection-template.directive';\r\nimport {NgJvxDisabledOptionDirective} from './directives/ng-jvx-disabled-option.directive';\r\nimport {NgJvxGroupHeaderDirective} from './directives/ng-jvx-group-header.directive';\r\nimport {NgJvxFocusDirective} from './directives/ng-jvx-focus.directive';\r\nimport {MenuTriggerDirective} from './panel/menu-trigger/menu-trigger.directive';\r\nimport {PanelComponent} from './panel/panel.component';\r\nimport {ChipComponent} from './chiplist/chip/chip.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    MenuTriggerDirective,\r\n    NgJvxMultiselectComponent,\r\n    NgJvxOptionComponent,\r\n    NgJvxOptionsTemplateDirective,\r\n    NgJvxSelectionTemplateDirective,\r\n    NgJvxDisabledOptionDirective,\r\n    NgJvxGroupHeaderDirective,\r\n    NgJvxFocusDirective],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    NgScrollbarModule,\r\n    SmoothScroll,\r\n    FormsModule,\r\n    PanelComponent,\r\n    ChipComponent\r\n  ],\r\n  exports: [NgJvxMultiselectComponent,\r\n    NgJvxOptionComponent,\r\n    NgJvxOptionsTemplateDirective,\r\n    NgJvxSelectionTemplateDirective,\r\n    NgJvxDisabledOptionDirective,\r\n    NgJvxGroupHeaderDirective]\r\n})\r\nexport class NgJvxMultiselectModule {\r\n}\r\n","/*\r\n * Public API Surface of ng-jvx-multiselect\r\n */\r\n\r\nexport * from './lib/ng-jvx-option/ng-jvx-option.component';\r\nexport * from './lib/directives/ng-jvx-options-template.directive';\r\nexport * from './lib/directives/ng-jvx-selection-template.directive';\r\nexport * from './lib/directives/ng-jvx-group-header.directive';\r\nexport * from './lib/directives/ng-jvx-disabled-option.directive';\r\nexport * from './lib/ng-jvx-multiselect.service';\r\nexport * from './lib/ng-jvx-multiselect.component';\r\nexport * from './lib/ng-jvx-multiselect.module';\r\nexport * from './lib/interfaces/ng-jvx-option-mapper';\r\nexport * from './lib/interfaces/ng-jvx-search-mapper';\r\nexport * from './lib/interfaces/ng-jvx-group-mapper';\r\nexport * from './lib/utils';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","takeUntil","tap","i2.NgJvxMultiselectService","i6.PanelComponent","i7.ChipComponent","i8.MenuTriggerDirective","i9.NgJvxOptionComponent","i10.NgJvxFocusDirective"],"mappings":"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"}