@lucca-front/ng 17.3.8 → 17.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,13 @@
1
1
  import { OverlayConfig } from '@angular/cdk/overlay';
2
2
  import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, TemplateRef, Type } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
3
4
  import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
4
5
  import { LuOptionGrouping } from '../option';
5
6
  import { LuSelectPanelRef } from '../panel';
6
7
  import { LuOptionContext } from '../select.model';
7
- import { ControlValueAccessor } from '@angular/forms';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare abstract class ALuSelectInputComponent<TOption, TValue> implements OnDestroy, OnInit, ControlValueAccessor {
10
+ #private;
10
11
  private inputElementRef;
11
12
  placeholder$: BehaviorSubject<string>;
12
13
  disabled$: BehaviorSubject<boolean>;
@@ -5,6 +5,7 @@ import { LuCoreSelectUser } from './user-option.model';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class LuCoreSelectUserHomonymsService {
7
7
  protected http: HttpClient;
8
+ protected cache: Record<number, string>;
8
9
  protected extractHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Set<T>;
9
10
  handleHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Observable<T[]>;
10
11
  protected getAdditionalInformationByUserId<T extends LuCoreSelectUser>(homonyms: T[]): Observable<Record<number, string>>;
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @angular-eslint/no-output-on-prefix */
2
2
  import { OverlayContainer } from '@angular/cdk/overlay';
3
- import { booleanAttribute, ChangeDetectorRef, Directive, EventEmitter, HostBinding, HostListener, inject, Input, Output, ViewChild, } from '@angular/core';
4
- import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
3
+ import { ChangeDetectorRef, Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, booleanAttribute, inject, } from '@angular/core';
4
+ import { BehaviorSubject, ReplaySubject, Subject, switchMap, take } from 'rxjs';
5
5
  import { LuSimpleSelectDefaultOptionComponent } from '../option';
6
6
  import { SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';
7
7
  import * as i0 from "@angular/core";
@@ -98,11 +98,18 @@ export class ALuSelectInputComponent {
98
98
  onKeyDownNavigation($event) {
99
99
  switch ($event.key) {
100
100
  case 'Escape':
101
+ if (this.isPanelOpen) {
102
+ $event.stopPropagation();
103
+ }
104
+ this.panelRef?.close();
105
+ break;
101
106
  case 'Tab':
102
107
  this.panelRef?.close();
103
108
  break;
104
109
  case 'Enter':
105
110
  if (this.isPanelOpen) {
111
+ // Prevent form submission when selecting a value with Enter
112
+ $event.preventDefault();
106
113
  this.panelRef.selectCurrentlyHighlightedValue();
107
114
  }
108
115
  else {
@@ -168,8 +175,8 @@ export class ALuSelectInputComponent {
168
175
  return;
169
176
  }
170
177
  this.panelRef.valueChanged.subscribe((value) => this.updateValue(value));
171
- this.panelRef.nextPage.subscribe(() => this.nextPage.emit());
172
- this.panelRef.previousPage.subscribe(() => this.previousPage.emit());
178
+ this.#pageChanged(this.panelRef.nextPage).subscribe(() => this.nextPage.emit());
179
+ this.#pageChanged(this.panelRef.previousPage).subscribe(() => this.previousPage.emit());
173
180
  this.panelRef.activeOptionIdChanged.subscribe((optionId) => {
174
181
  this.activeDescendant$.next(optionId);
175
182
  this.changeDetectorRef.markForCheck();
@@ -209,6 +216,10 @@ export class ALuSelectInputComponent {
209
216
  this.onChange?.(value);
210
217
  this.onTouched?.();
211
218
  }
219
+ // Ensure nextPage/previousPage does not emit too often
220
+ #pageChanged(pageEmitter) {
221
+ return this.options$.pipe(switchMap(() => pageEmitter.pipe(take(1))));
222
+ }
212
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ALuSelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
213
224
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.2", type: ALuSelectInputComponent, inputs: { placeholder: "placeholder", clearable: ["clearable", "clearable", booleanAttribute], overlayConfig: "overlayConfig", loading: "loading", options: "options", optionComparer: "optionComparer", optionTpl: "optionTpl", valueTpl: "valueTpl" }, outputs: { clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage" }, host: { listeners: { "click": "onClickOpenPanel($event)", "keydown": "onKeyDownNavigation($event)" }, properties: { "class.is-clearable": "this.clearable", "class.is-selected": "this.isSelectedClass", "class.is-searchFilled": "this.isSearchFilledClass" } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0 }); }
214
225
  }
@@ -256,4 +267,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
256
267
  type: HostListener,
257
268
  args: ['keydown', ['$event']]
258
269
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nL2NvcmUtc2VsZWN0L2lucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQ04sZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQW9CLG9DQUFvQyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5GLE9BQU8sRUFBbUIsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUlqRixNQUFNLE9BQWdCLHVCQUF1QjtJQUQ3QztRQUtRLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBUzlDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFzQlgsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU9uRCxrQkFBYSxHQUFtQjtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsa0NBQWtDO1NBQ2pELENBQUM7UUFtQk8sbUJBQWMsR0FBb0QsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJ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QUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUNwQixDQUFDOzhHQXhRb0IsdUJBQXVCO2tHQUF2Qix1QkFBdUIsOEVBYXhCLGdCQUFnQjs7MkZBYmYsdUJBQXVCO2tCQUQ1QyxTQUFTOzhCQUdELGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsY0FBYztnQkFRckIsV0FBVztzQkFEZCxLQUFLO2dCQU9OLFNBQVM7c0JBRlIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVFuQixlQUFlO3NCQUQ1QixXQUFXO3VCQUFDLG1CQUFtQjtnQkFNbEIsbUJBQW1CO3NCQURoQyxXQUFXO3VCQUFDLHVCQUF1QjtnQkFvQnBDLGFBQWE7c0JBRFosS0FBSztnQkFNTyxPQUFPO3NCQUFuQixLQUFLO2dCQU1PLE9BQU87c0JBQW5CLEtBQUs7Z0JBV0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBOENQLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVakMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4ICovXG5pbXBvcnQgeyBPdmVybGF5Q29uZmlnLCBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0QmluZGluZyxcblx0SG9zdExpc3RlbmVyLFxuXHRpbmplY3QsXG5cdElucHV0LFxuXHRPbkRlc3Ryb3ksXG5cdE9uSW5pdCxcblx0T3V0cHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0VHlwZSxcblx0Vmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTHVPcHRpb25Hcm91cGluZywgTHVTaW1wbGVTZWxlY3REZWZhdWx0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9uJztcbmltcG9ydCB7IEx1U2VsZWN0UGFuZWxSZWYgfSBmcm9tICcuLi9wYW5lbCc7XG5pbXBvcnQgeyBMdU9wdGlvbkNvbnRleHQsIFNFTEVDVF9MQUJFTCwgU0VMRUNUX0xBQkVMX0lEIH0gZnJvbSAnLi4vc2VsZWN0Lm1vZGVsJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBTHVTZWxlY3RJbnB1dENvbXBvbmVudDxUT3B0aW9uLCBUVmFsdWU+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblx0QFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50Jylcblx0cHJpdmF0ZSBpbnB1dEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cblx0cHVibGljIHBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuXG5cdHB1YmxpYyBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuXHRASW5wdXQoKVxuXHRzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMucGxhY2Vob2xkZXIkLm5leHQodmFsdWUpO1xuXHR9XG5cblx0QElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG5cdEBIb3N0QmluZGluZygnY2xhc3MuaXMtY2xlYXJhYmxlJylcblx0Y2xlYXJhYmxlID0gZmFsc2U7XG5cblx0Z2V0IHNlYXJjaGFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuY2x1ZUNoYW5nZS5vYnNlcnZlZDtcblx0fVxuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKVxuXHRwcm90ZWN0ZWQgZ2V0IGlzU2VsZWN0ZWRDbGFzcygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5oYXNWYWx1ZTtcblx0fVxuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VhcmNoRmlsbGVkJylcblx0cHJvdGVjdGVkIGdldCBpc1NlYXJjaEZpbGxlZENsYXNzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNsdWU/Lmxlbmd0aCA+IDA7XG5cdH1cblxuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgaGFzVmFsdWU6IGJvb2xlYW47XG5cblx0cHVibGljIGdldCBpc1BhbmVsT3BlbigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc1BhbmVsT3BlbiQudmFsdWU7XG5cdH1cblxuXHRwdWJsaWMgaXNQYW5lbE9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cblx0cHVibGljIGFjdGl2ZURlc2NlbmRhbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG5cblx0Z2V0IGFyaWFDb250cm9scygpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuaWQ7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRvdmVybGF5Q29uZmlnPzogT3ZlcmxheUNvbmZpZyA9IHtcblx0XHRoYXNCYWNrZHJvcDogdHJ1ZSxcblx0XHRiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuXHR9O1xuXG5cdEBJbnB1dCgpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0aWYgKHZhbHVlICE9PSB0aGlzLmxvYWRpbmcpIHtcblx0XHRcdHRoaXMubG9hZGluZyQubmV4dCh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cblx0QElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uczogVE9wdGlvbltdKSB7XG5cdFx0dGhpcy5vcHRpb25zJC5uZXh0KG9wdGlvbnMpO1xuXHRcdGlmICh0aGlzLnBhbmVsUmVmKSB7XG5cdFx0XHQvLyBXZSBoYXZlIHRvIHB1dCBpdCBpbiBhIHNldFRpbWVvdXQgc28gaXQnbGwgYmUgdHJpZ2dlcmVkIEFGVEVSIHRoZSBET00gaXMgdXBkYXRlZCBhbmQgbm90IHJpZ2h0IG5vdyxcblx0XHRcdC8vIHdoaWNoIGlzIGJlZm9yZSB0aGUgcGFuZWwgc2l6ZSBoYXMgYmVlbiBtb2RpZmllZCBieSB0aGUgYXJyaXZhbCBvZiB0aGUgbmV3IG9wdGlvbnNcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnBhbmVsUmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRASW5wdXQoKSBvcHRpb25Db21wYXJlcjogKG9wdGlvbjE6IFRPcHRpb24sIG9wdGlvbjI6IFRPcHRpb24pID0+IGJvb2xlYW4gPSAob3B0aW9uMSwgb3B0aW9uMikgPT4gSlNPTi5zdHJpbmdpZnkob3B0aW9uMSkgPT09IEpTT04uc3RyaW5naWZ5KG9wdGlvbjIpO1xuXHRASW5wdXQoKSBvcHRpb25UcGw/OiBUZW1wbGF0ZVJlZjxMdU9wdGlvbkNvbnRleHQ8VE9wdGlvbj4+IHwgVHlwZTx1bmtub3duPiA9IEx1U2ltcGxlU2VsZWN0RGVmYXVsdE9wdGlvbkNvbXBvbmVudDtcblx0QElucHV0KCkgdmFsdWVUcGw/OiBUZW1wbGF0ZVJlZjxMdU9wdGlvbkNvbnRleHQ8VE9wdGlvbj4+IHwgVHlwZTx1bmtub3duPjtcblx0Z3JvdXBpbmc/OiBMdU9wdGlvbkdyb3VwaW5nPFRPcHRpb24sIHVua25vd24+O1xuXG5cdEBPdXRwdXQoKSBjbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cdEBPdXRwdXQoKSBuZXh0UGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QE91dHB1dCgpIHByZXZpb3VzUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHRwdWJsaWMgZ2V0IHZhbHVlKCk6IFRWYWx1ZSB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZhbHVlO1xuXHR9XG5cblx0cHJvdGVjdGVkIHNldCB2YWx1ZSh2YWx1ZTogVFZhbHVlKSB7XG5cdFx0dGhpcy5fdmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXHR9XG5cblx0cHVibGljIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLnZhbHVlID8gbnVsbCA6IHRoaXMucGxhY2Vob2xkZXIkLnZhbHVlO1xuXHR9XG5cblx0cHVibGljIGNsdWVDaGFuZ2VkKGNsdWU6IHN0cmluZywgc2tpcFBhbmVsT3BlbiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0dGhpcy5jbHVlID0gY2x1ZTtcblxuXHRcdGlmICghc2tpcFBhbmVsT3BlbiAmJiAhdGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0dGhpcy5vcGVuUGFuZWwoY2x1ZSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmxhc3RFbWl0dGVkQ2x1ZSAhPT0gY2x1ZSkge1xuXHRcdFx0dGhpcy5jbHVlQ2hhbmdlLmVtaXQoY2x1ZSk7XG5cdFx0XHR0aGlzLmxhc3RFbWl0dGVkQ2x1ZSA9IGNsdWU7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIF92YWx1ZT86IFRWYWx1ZTtcblxuXHRvcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFRPcHRpb25bXT4oMSk7XG5cdGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cdGNsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXHQvLyBUaGlzIGlzIHRoZSBjbHVlIHN0b3JlZCBhZnRlciB3ZSBzZWxlY3RlZCBhbiBvcHRpb24gdG8ga25vdyBpZiB3ZSBzaG91bGQgZW1pdCBhbiBlbXB0eSBjbHVlIG9uIG9wZW4gb3Igbm90XG5cdGxhc3RFbWl0dGVkQ2x1ZTogc3RyaW5nID0gJyc7XG5cblx0cHJvdGVjdGVkIG9uQ2hhbmdlPzogKHZhbHVlOiBUVmFsdWUgfCBudWxsKSA9PiB2b2lkO1xuXHRwcm90ZWN0ZWQgb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcblxuXHRwdWJsaWMgZ2V0IHBhbmVsUmVmKCk6IEx1U2VsZWN0UGFuZWxSZWY8VE9wdGlvbiwgVFZhbHVlPiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX3BhbmVsUmVmO1xuXHR9XG5cblx0cHJvdGVjdGVkIF9wYW5lbFJlZj86IEx1U2VsZWN0UGFuZWxSZWY8VE9wdGlvbiwgVFZhbHVlPjtcblxuXHRwcm90ZWN0ZWQgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cblx0QEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuXHRvbkNsaWNrT3BlblBhbmVsKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmICghdGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0dGhpcy5vcGVuUGFuZWwoKTtcblx0XHRcdCRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdCRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuXHRvbktleURvd25OYXZpZ2F0aW9uKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuXHRcdHN3aXRjaCAoJGV2ZW50LmtleSkge1xuXHRcdFx0Y2FzZSAnRXNjYXBlJzpcblx0XHRcdGNhc2UgJ1RhYic6XG5cdFx0XHRcdHRoaXMucGFuZWxSZWY/LmNsb3NlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRW50ZXInOlxuXHRcdFx0XHRpZiAodGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0XHRcdHRoaXMucGFuZWxSZWYuc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWRWYWx1ZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMucGFuZWxSZWY/LmhhbmRsZUtleU1hbmFnZXJFdmVudCgkZXZlbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnICc6XG5cdFx0XHRjYXNlICdBcnJvd0Rvd24nOlxuXHRcdFx0Y2FzZSAnQXJyb3dVcCc6XG5cdFx0XHRcdC8vIEluaXRpYWwgc3BhY2Ugc2hvdWxkIGp1c3Qgb3BlbiB0aGUgcGFuZWwsIG5vdCB0cmlnZ2VyIGEgY2x1ZSBjaGFuZ2Vcblx0XHRcdFx0aWYgKCF0aGlzLmNsdWUgJiYgJGV2ZW50LmtleSA9PT0gJyAnKSB7XG5cdFx0XHRcdFx0JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuaXNQYW5lbE9wZW4pIHtcblx0XHRcdFx0XHR0aGlzLnBhbmVsUmVmPy5oYW5kbGVLZXlNYW5hZ2VyRXZlbnQoJGV2ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9wZW5QYW5lbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhpcy5wYW5lbFJlZj8uaGFuZGxlS2V5TWFuYWdlckV2ZW50KCRldmVudCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cdHByb3RlY3RlZCBvdmVybGF5Q29udGFpbmVyUmVmOiBIVE1MRWxlbWVudCA9IGluamVjdChPdmVybGF5Q29udGFpbmVyKS5nZXRDb250YWluZXJFbGVtZW50KCk7XG5cblx0cHJvdGVjdGVkIGxhYmVsRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSBpbmplY3QoU0VMRUNUX0xBQkVMKTtcblx0cHJvdGVjdGVkIGxhYmVsSWQ6IHN0cmluZyA9IGluamVjdChTRUxFQ1RfTEFCRUxfSUQpO1xuXG5cdHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogVFZhbHVlKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG5cdH1cblxuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmRpc2FibGVkJC5uZXh0KGlzRGlzYWJsZWQpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmNsb3NlUGFuZWwoKTtcblx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubGFiZWxFbGVtZW50KSB7XG5cdFx0XHR0aGlzLmxhYmVsRWxlbWVudC5pZCA9IHRoaXMubGFiZWxJZDtcblx0XHR9XG5cdH1cblxuXHRjbGVhclZhbHVlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMudXBkYXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG5cdFx0dGhpcy5pbnB1dEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG5cblx0b3BlblBhbmVsKGNsdWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNQYW5lbE9wZW4gfHwgdGhpcy5kaXNhYmxlZCQudmFsdWUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzUGFuZWxPcGVuJC5uZXh0KHRydWUpO1xuXHRcdHRoaXMuY2x1ZUNoYW5nZWQoY2x1ZSk7XG5cdFx0dGhpcy5fcGFuZWxSZWYgPSB0aGlzLmJ1aWxkUGFuZWxSZWYoKTtcblx0XHR0aGlzLmJpbmRJbnB1dFRvUGFuZWxSZWZFdmVudHMoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNJbnB1dCgpKTtcblx0fVxuXG5cdHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZFBhbmVsUmVmKCk6IHRoaXNbJ3BhbmVsUmVmJ107XG5cblx0cHJvdGVjdGVkIGJpbmRJbnB1dFRvUGFuZWxSZWZFdmVudHMoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnBhbmVsUmVmKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5wYW5lbFJlZi52YWx1ZUNoYW5nZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSkpO1xuXHRcdHRoaXMucGFuZWxSZWYubmV4dFBhZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMubmV4dFBhZ2UuZW1pdCgpKTtcblx0XHR0aGlzLnBhbmVsUmVmLnByZXZpb3VzUGFnZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wcmV2aW91c1BhZ2UuZW1pdCgpKTtcblx0XHR0aGlzLnBhbmVsUmVmLmFjdGl2ZU9wdGlvbklkQ2hhbmdlZC5zdWJzY3JpYmUoKG9wdGlvbklkKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGl2ZURlc2NlbmRhbnQkLm5leHQob3B0aW9uSWQpO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblx0XHR9KTtcblx0XHR0aGlzLnBhbmVsUmVmLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBhbmVsKCkpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGZvY3VzSW5wdXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaW5wdXRFbGVtZW50UmVmKSB7XG5cdFx0XHR0aGlzLmlucHV0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGVtcHR5Q2x1ZSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jbHVlKSB7XG5cdFx0XHR0aGlzLmNsdWUgPSBudWxsO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VQYW5lbCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNQYW5lbE9wZW4pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5lbXB0eUNsdWUoKTtcblx0XHR0aGlzLmFjdGl2ZURlc2NlbmRhbnQkLm5leHQoJycpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdFx0dGhpcy5vblRvdWNoZWQ/LigpO1xuXHRcdHRoaXMuaXNQYW5lbE9wZW4kLm5leHQoZmFsc2UpO1xuXHRcdHRoaXMucGFuZWxSZWYuY2xvc2UoKTtcblx0XHR0aGlzLl9wYW5lbFJlZiA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBUVmFsdWUpOiB2b2lkIHtcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlVmFsdWUodmFsdWU6IFRWYWx1ZSwgc2tpcFBhbmVsT3BlbiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMuZW1wdHlDbHVlKCk7XG5cdFx0dGhpcy5jbHVlQ2hhbmdlZCgnJywgc2tpcFBhbmVsT3Blbik7XG5cdFx0dGhpcy5vbkNoYW5nZT8uKHZhbHVlKTtcblx0XHR0aGlzLm9uVG91Y2hlZD8uKCk7XG5cdH1cbn1cbiJdfQ==
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nL2NvcmUtc2VsZWN0L2lucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVGLE9BQU8sRUFBb0Isb0NBQW9DLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkYsT0FBTyxFQUFtQixZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR2pGLE1BQU0sT0FBZ0IsdUJBQXVCO0lBRDdDO1FBS1EsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2QyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFTOUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXNCWCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBT25ELGtCQUFhLEdBQW1CO1lBQy9CLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxrQ0FBa0M7U0FDakQsQ0FBQztRQW1CTyxtQkFBYyxHQUFvRCxDQUFDLE9BQU8sRUFBRSxPQUFP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QU1PLE9BQU87c0JBQW5CLEtBQUs7Z0JBV0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBOENQLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVakMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4ICovXG5pbXBvcnQgeyBPdmVybGF5Q29uZmlnLCBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0QmluZGluZyxcblx0SG9zdExpc3RlbmVyLFxuXHRJbnB1dCxcblx0T25EZXN0cm95LFxuXHRPbkluaXQsXG5cdE91dHB1dCxcblx0VGVtcGxhdGVSZWYsXG5cdFR5cGUsXG5cdFZpZXdDaGlsZCxcblx0Ym9vbGVhbkF0dHJpYnV0ZSxcblx0aW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEx1T3B0aW9uR3JvdXBpbmcsIEx1U2ltcGxlU2VsZWN0RGVmYXVsdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbic7XG5pbXBvcnQgeyBMdVNlbGVjdFBhbmVsUmVmIH0gZnJvbSAnLi4vcGFuZWwnO1xuaW1wb3J0IHsgTHVPcHRpb25Db250ZXh0LCBTRUxFQ1RfTEFCRUwsIFNFTEVDVF9MQUJFTF9JRCB9IGZyb20gJy4uL3NlbGVjdC5tb2RlbCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFMdVNlbGVjdElucHV0Q29tcG9uZW50PFRPcHRpb24sIFRWYWx1ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXHRAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKVxuXHRwcml2YXRlIGlucHV0RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuXHRwdWJsaWMgcGxhY2Vob2xkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG5cblx0cHVibGljIGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG5cdEBJbnB1dCgpXG5cdHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5wbGFjZWhvbGRlciQubmV4dCh2YWx1ZSk7XG5cdH1cblxuXHRASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1jbGVhcmFibGUnKVxuXHRjbGVhcmFibGUgPSBmYWxzZTtcblxuXHRnZXQgc2VhcmNoYWJsZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jbHVlQ2hhbmdlLm9ic2VydmVkO1xuXHR9XG5cblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zZWxlY3RlZCcpXG5cdHByb3RlY3RlZCBnZXQgaXNTZWxlY3RlZENsYXNzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmhhc1ZhbHVlO1xuXHR9XG5cblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zZWFyY2hGaWxsZWQnKVxuXHRwcm90ZWN0ZWQgZ2V0IGlzU2VhcmNoRmlsbGVkQ2xhc3MoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuY2x1ZT8ubGVuZ3RoID4gMDtcblx0fVxuXG5cdHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBoYXNWYWx1ZTogYm9vbGVhbjtcblxuXHRwdWJsaWMgZ2V0IGlzUGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzUGFuZWxPcGVuJC52YWx1ZTtcblx0fVxuXG5cdHB1YmxpYyBpc1BhbmVsT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuXHRwdWJsaWMgYWN0aXZlRGVzY2VuZGFudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcblxuXHRnZXQgYXJpYUNvbnRyb2xzKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMub3ZlcmxheUNvbnRhaW5lclJlZi5pZDtcblx0fVxuXG5cdEBJbnB1dCgpXG5cdG92ZXJsYXlDb25maWc/OiBPdmVybGF5Q29uZmlnID0ge1xuXHRcdGhhc0JhY2tkcm9wOiB0cnVlLFxuXHRcdGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG5cdH07XG5cblx0QElucHV0KCkgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcblx0XHRpZiAodmFsdWUgIT09IHRoaXMubG9hZGluZykge1xuXHRcdFx0dGhpcy5sb2FkaW5nJC5uZXh0KHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBUT3B0aW9uW10pIHtcblx0XHR0aGlzLm9wdGlvbnMkLm5leHQob3B0aW9ucyk7XG5cdFx0aWYgKHRoaXMucGFuZWxSZWYpIHtcblx0XHRcdC8vIFdlIGhhdmUgdG8gcHV0IGl0IGluIGEgc2V0VGltZW91dCBzbyBpdCdsbCBiZSB0cmlnZ2VyZWQgQUZURVIgdGhlIERPTSBpcyB1cGRhdGVkIGFuZCBub3QgcmlnaHQgbm93LFxuXHRcdFx0Ly8gd2hpY2ggaXMgYmVmb3JlIHRoZSBwYW5lbCBzaXplIGhhcyBiZWVuIG1vZGlmaWVkIGJ5IHRoZSBhcnJpdmFsIG9mIHRoZSBuZXcgb3B0aW9uc1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucGFuZWxSZWYudXBkYXRlUG9zaXRpb24oKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdEBJbnB1dCgpIG9wdGlvbkNvbXBhcmVyOiAob3B0aW9uMTogVE9wdGlvbiwgb3B0aW9uMjogVE9wdGlvbikgPT4gYm9vbGVhbiA9IChvcHRpb24xLCBvcHRpb24yKSA9PiBKU09OLnN0cmluZ2lmeShvcHRpb24xKSA9PT0gSlNPTi5zdHJpbmdpZnkob3B0aW9uMik7XG5cdEBJbnB1dCgpIG9wdGlvblRwbD86IFRlbXBsYXRlUmVmPEx1T3B0aW9uQ29udGV4dDxUT3B0aW9uPj4gfCBUeXBlPHVua25vd24+ID0gTHVTaW1wbGVTZWxlY3REZWZhdWx0T3B0aW9uQ29tcG9uZW50O1xuXHRASW5wdXQoKSB2YWx1ZVRwbD86IFRlbXBsYXRlUmVmPEx1T3B0aW9uQ29udGV4dDxUT3B0aW9uPj4gfCBUeXBlPHVua25vd24+O1xuXHRncm91cGluZz86IEx1T3B0aW9uR3JvdXBpbmc8VE9wdGlvbiwgdW5rbm93bj47XG5cblx0QE91dHB1dCgpIGNsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblx0QE91dHB1dCgpIG5leHRQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRAT3V0cHV0KCkgcHJldmlvdXNQYWdlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdHB1YmxpYyBnZXQgdmFsdWUoKTogVFZhbHVlIHtcblx0XHRyZXR1cm4gdGhpcy5fdmFsdWU7XG5cdH1cblxuXHRwcm90ZWN0ZWQgc2V0IHZhbHVlKHZhbHVlOiBUVmFsdWUpIHtcblx0XHR0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMudmFsdWUgPyBudWxsIDogdGhpcy5wbGFjZWhvbGRlciQudmFsdWU7XG5cdH1cblxuXHRwdWJsaWMgY2x1ZUNoYW5nZWQoY2x1ZTogc3RyaW5nLCBza2lwUGFuZWxPcGVuID0gZmFsc2UpOiB2b2lkIHtcblx0XHR0aGlzLmNsdWUgPSBjbHVlO1xuXG5cdFx0aWYgKCFza2lwUGFuZWxPcGVuICYmICF0aGlzLmlzUGFuZWxPcGVuKSB7XG5cdFx0XHR0aGlzLm9wZW5QYW5lbChjbHVlKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMubGFzdEVtaXR0ZWRDbHVlICE9PSBjbHVlKSB7XG5cdFx0XHR0aGlzLmNsdWVDaGFuZ2UuZW1pdChjbHVlKTtcblx0XHRcdHRoaXMubGFzdEVtaXR0ZWRDbHVlID0gY2x1ZTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgX3ZhbHVlPzogVFZhbHVlO1xuXG5cdG9wdGlvbnMkID0gbmV3IFJlcGxheVN1YmplY3Q8VE9wdGlvbltdPigxKTtcblx0bG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblx0Y2x1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cdC8vIFRoaXMgaXMgdGhlIGNsdWUgc3RvcmVkIGFmdGVyIHdlIHNlbGVjdGVkIGFuIG9wdGlvbiB0byBrbm93IGlmIHdlIHNob3VsZCBlbWl0IGFuIGVtcHR5IGNsdWUgb24gb3BlbiBvciBub3Rcblx0bGFzdEVtaXR0ZWRDbHVlOiBzdHJpbmcgPSAnJztcblxuXHRwcm90ZWN0ZWQgb25DaGFuZ2U/OiAodmFsdWU6IFRWYWx1ZSB8IG51bGwpID0+IHZvaWQ7XG5cdHByb3RlY3RlZCBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG5cdHB1YmxpYyBnZXQgcGFuZWxSZWYoKTogTHVTZWxlY3RQYW5lbFJlZjxUT3B0aW9uLCBUVmFsdWU+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fcGFuZWxSZWY7XG5cdH1cblxuXHRwcm90ZWN0ZWQgX3BhbmVsUmVmPzogTHVTZWxlY3RQYW5lbFJlZjxUT3B0aW9uLCBUVmFsdWU+O1xuXG5cdHByb3RlY3RlZCBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuXHRASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG5cdG9uQ2xpY2tPcGVuUGFuZWwoJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKCF0aGlzLmlzUGFuZWxPcGVuKSB7XG5cdFx0XHR0aGlzLm9wZW5QYW5lbCgpO1xuXHRcdFx0JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG5cdG9uS2V5RG93bk5hdmlnYXRpb24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG5cdFx0c3dpdGNoICgkZXZlbnQua2V5KSB7XG5cdFx0XHRjYXNlICdFc2NhcGUnOlxuXHRcdFx0XHRpZiAodGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0XHRcdCRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnBhbmVsUmVmPy5jbG9zZSgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1RhYic6XG5cdFx0XHRcdHRoaXMucGFuZWxSZWY/LmNsb3NlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRW50ZXInOlxuXHRcdFx0XHRpZiAodGhpcy5pc1BhbmVsT3Blbikge1xuXHRcdFx0XHRcdC8vIFByZXZlbnQgZm9ybSBzdWJtaXNzaW9uIHdoZW4gc2VsZWN0aW5nIGEgdmFsdWUgd2l0aCBFbnRlclxuXHRcdFx0XHRcdCRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMucGFuZWxSZWYuc2VsZWN0Q3VycmVudGx5SGlnaGxpZ2h0ZWRWYWx1ZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMucGFuZWxSZWY/LmhhbmRsZUtleU1hbmFnZXJFdmVudCgkZXZlbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnICc6XG5cdFx0XHRjYXNlICdBcnJvd0Rvd24nOlxuXHRcdFx0Y2FzZSAnQXJyb3dVcCc6XG5cdFx0XHRcdC8vIEluaXRpYWwgc3BhY2Ugc2hvdWxkIGp1c3Qgb3BlbiB0aGUgcGFuZWwsIG5vdCB0cmlnZ2VyIGEgY2x1ZSBjaGFuZ2Vcblx0XHRcdFx0aWYgKCF0aGlzLmNsdWUgJiYgJGV2ZW50LmtleSA9PT0gJyAnKSB7XG5cdFx0XHRcdFx0JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuaXNQYW5lbE9wZW4pIHtcblx0XHRcdFx0XHR0aGlzLnBhbmVsUmVmPy5oYW5kbGVLZXlNYW5hZ2VyRXZlbnQoJGV2ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLm9wZW5QYW5lbCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhpcy5wYW5lbFJlZj8uaGFuZGxlS2V5TWFuYWdlckV2ZW50KCRldmVudCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cdHByb3RlY3RlZCBvdmVybGF5Q29udGFpbmVyUmVmOiBIVE1MRWxlbWVudCA9IGluamVjdChPdmVybGF5Q29udGFpbmVyKS5nZXRDb250YWluZXJFbGVtZW50KCk7XG5cblx0cHJvdGVjdGVkIGxhYmVsRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSBpbmplY3QoU0VMRUNUX0xBQkVMKTtcblx0cHJvdGVjdGVkIGxhYmVsSWQ6IHN0cmluZyA9IGluamVjdChTRUxFQ1RfTEFCRUxfSUQpO1xuXG5cdHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogVFZhbHVlKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG5cdH1cblxuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmRpc2FibGVkJC5uZXh0KGlzRGlzYWJsZWQpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHR0aGlzLmNsb3NlUGFuZWwoKTtcblx0XHR0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXHRcdHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubGFiZWxFbGVtZW50KSB7XG5cdFx0XHR0aGlzLmxhYmVsRWxlbWVudC5pZCA9IHRoaXMubGFiZWxJZDtcblx0XHR9XG5cdH1cblxuXHRjbGVhclZhbHVlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMudXBkYXRlVmFsdWUobnVsbCwgdHJ1ZSk7XG5cdFx0dGhpcy5pbnB1dEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG5cblx0b3BlblBhbmVsKGNsdWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNQYW5lbE9wZW4gfHwgdGhpcy5kaXNhYmxlZCQudmFsdWUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzUGFuZWxPcGVuJC5uZXh0KHRydWUpO1xuXHRcdHRoaXMuY2x1ZUNoYW5nZWQoY2x1ZSk7XG5cdFx0dGhpcy5fcGFuZWxSZWYgPSB0aGlzLmJ1aWxkUGFuZWxSZWYoKTtcblx0XHR0aGlzLmJpbmRJbnB1dFRvUGFuZWxSZWZFdmVudHMoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNJbnB1dCgpKTtcblx0fVxuXG5cdHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZFBhbmVsUmVmKCk6IHRoaXNbJ3BhbmVsUmVmJ107XG5cblx0cHJvdGVjdGVkIGJpbmRJbnB1dFRvUGFuZWxSZWZFdmVudHMoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnBhbmVsUmVmKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5wYW5lbFJlZi52YWx1ZUNoYW5nZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSkpO1xuXG5cdFx0dGhpcy4jcGFnZUNoYW5nZWQodGhpcy5wYW5lbFJlZi5uZXh0UGFnZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmV4dFBhZ2UuZW1pdCgpKTtcblx0XHR0aGlzLiNwYWdlQ2hhbmdlZCh0aGlzLnBhbmVsUmVmLnByZXZpb3VzUGFnZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMucHJldmlvdXNQYWdlLmVtaXQoKSk7XG5cblx0XHR0aGlzLnBhbmVsUmVmLmFjdGl2ZU9wdGlvbklkQ2hhbmdlZC5zdWJzY3JpYmUoKG9wdGlvbklkKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGl2ZURlc2NlbmRhbnQkLm5leHQob3B0aW9uSWQpO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblx0XHR9KTtcblx0XHR0aGlzLnBhbmVsUmVmLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBhbmVsKCkpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGZvY3VzSW5wdXQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaW5wdXRFbGVtZW50UmVmKSB7XG5cdFx0XHR0aGlzLmlucHV0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIGVtcHR5Q2x1ZSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jbHVlKSB7XG5cdFx0XHR0aGlzLmNsdWUgPSBudWxsO1xuXHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VQYW5lbCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNQYW5lbE9wZW4pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5lbXB0eUNsdWUoKTtcblx0XHR0aGlzLmFjdGl2ZURlc2NlbmRhbnQkLm5leHQoJycpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdFx0dGhpcy5vblRvdWNoZWQ/LigpO1xuXHRcdHRoaXMuaXNQYW5lbE9wZW4kLm5leHQoZmFsc2UpO1xuXHRcdHRoaXMucGFuZWxSZWYuY2xvc2UoKTtcblx0XHR0aGlzLl9wYW5lbFJlZiA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBUVmFsdWUpOiB2b2lkIHtcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlVmFsdWUodmFsdWU6IFRWYWx1ZSwgc2tpcFBhbmVsT3BlbiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMuZW1wdHlDbHVlKCk7XG5cdFx0dGhpcy5jbHVlQ2hhbmdlZCgnJywgc2tpcFBhbmVsT3Blbik7XG5cdFx0dGhpcy5vbkNoYW5nZT8uKHZhbHVlKTtcblx0XHR0aGlzLm9uVG91Y2hlZD8uKCk7XG5cdH1cblxuXHQvLyBFbnN1cmUgbmV4dFBhZ2UvcHJldmlvdXNQYWdlIGRvZXMgbm90IGVtaXQgdG9vIG9mdGVuXG5cdCNwYWdlQ2hhbmdlZChwYWdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucyQucGlwZShzd2l0Y2hNYXAoKCkgPT4gcGFnZUVtaXR0ZXIucGlwZSh0YWtlKDEpKSkpO1xuXHR9XG59XG4iXX0=
@@ -1,11 +1,12 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Injectable, inject } from '@angular/core';
3
3
  import { luUserDisplay } from '@lucca-front/ng/user';
4
- import { map, of, startWith } from 'rxjs';
4
+ import { map, of, startWith, tap } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  export class LuCoreSelectUserHomonymsService {
7
7
  constructor() {
8
8
  this.http = inject(HttpClient);
9
+ this.cache = {};
9
10
  }
10
11
  extractHomonyms(users, format) {
11
12
  const usersByFullName = {};
@@ -28,7 +29,7 @@ export class LuCoreSelectUserHomonymsService {
28
29
  if (homonyms.has(user)) {
29
30
  return {
30
31
  ...user,
31
- additionalInformation: additionalInformation[user.id],
32
+ additionalInformation: this.cache[user.id] || additionalInformation[user.id],
32
33
  };
33
34
  }
34
35
  return user;
@@ -36,7 +37,10 @@ export class LuCoreSelectUserHomonymsService {
36
37
  }), startWith(users));
37
38
  }
38
39
  getAdditionalInformationByUserId(homonyms) {
39
- const userIds = homonyms.map((user) => user.id);
40
+ const userIds = homonyms.map((user) => user.id).filter((id) => !this.cache[id]);
41
+ if (userIds.length === 0) {
42
+ return of({});
43
+ }
40
44
  return this.http
41
45
  .get(`/api/v3/users`, {
42
46
  params: {
@@ -47,7 +51,12 @@ export class LuCoreSelectUserHomonymsService {
47
51
  .pipe(map((res) => res.data.items), map((infos) => infos.reduce((acc, info) => ({
48
52
  ...acc,
49
53
  [info.id]: info.department?.name || '',
50
- }), {})));
54
+ }), {})), tap((infos) => {
55
+ this.cache = {
56
+ ...this.cache,
57
+ ...infos,
58
+ };
59
+ }));
51
60
  }
52
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUserHomonymsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
53
62
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUserHomonymsService, providedIn: 'root' }); }
@@ -56,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
56
65
  type: Injectable,
57
66
  args: [{ providedIn: 'root' }]
58
67
  }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ob21vbnltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy9jb3JlLXNlbGVjdC91c2VyL3VzZXItaG9tb255bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJdEQsTUFBTSxPQUFPLCtCQUErQjtJQUQ1QztRQUVXLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FnRXBDO0lBOURVLGVBQWUsQ0FBNkIsS0FBVSxFQUFFLE1BQXVCO1FBQ3hGLE1BQU0sZUFBZSxHQUF3QixFQUFFLENBQUM7UUFFaEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDekIsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6QyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksR0FBRyxDQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQzVCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDbkMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDM0IsQ0FBQztJQUNILENBQUM7SUFFTSxjQUFjLENBQTZCLEtBQVUsRUFBRSxNQUF1QjtRQUNwRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEUsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsRUFBRTtZQUM3QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUN2QixPQUFPO3dCQUNOLEdBQUcsSUFBSTt3QkFDUCxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3FCQUNyRCxDQUFDO2lCQUNGO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsS0FBSyxDQUFDLENBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRVMsZ0NBQWdDLENBQTZCLFFBQWE7UUFDbkYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDZCxHQUFHLENBQTBFLGVBQWUsRUFBRTtZQUM5RixNQUFNLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsb0JBQW9CO2FBQzVCO1NBQ0QsQ0FBQzthQUNELElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FDWCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUc7WUFDTixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3RDLENBQUMsRUFDRixFQUFFLENBQ0YsQ0FDRCxDQUNELENBQUM7SUFDSixDQUFDOzhHQWhFVywrQkFBK0I7a0hBQS9CLCtCQUErQixjQURsQixNQUFNOzsyRkFDbkIsK0JBQStCO2tCQUQzQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMdUFwaUNvbGxlY3Rpb25SZXNwb25zZSB9IGZyb20gJ0BsdWNjYS1mcm9udC9uZy9hcGknO1xuaW1wb3J0IHsgTHVEaXNwbGF5Rm9ybWF0LCBsdVVzZXJEaXNwbGF5IH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL3VzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBvZiwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMdUNvcmVTZWxlY3RVc2VyIH0gZnJvbSAnLi91c2VyLW9wdGlvbi5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSB7XG5cdHByb3RlY3RlZCBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG5cdHByb3RlY3RlZCBleHRyYWN0SG9tb255bXM8VCBleHRlbmRzIEx1Q29yZVNlbGVjdFVzZXI+KHVzZXJzOiBUW10sIGZvcm1hdDogTHVEaXNwbGF5Rm9ybWF0KTogU2V0PFQ+IHtcblx0XHRjb25zdCB1c2Vyc0J5RnVsbE5hbWU6IFJlY29yZDxzdHJpbmcsIFRbXT4gPSB7fTtcblxuXHRcdGZvciAoY29uc3QgdXNlciBvZiB1c2Vycykge1xuXHRcdFx0Y29uc3QgbmFtZSA9IGx1VXNlckRpc3BsYXkodXNlciwgZm9ybWF0KTtcblx0XHRcdHVzZXJzQnlGdWxsTmFtZVtuYW1lXSB8fD0gW107XG5cdFx0XHR1c2Vyc0J5RnVsbE5hbWVbbmFtZV0ucHVzaCh1c2VyKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IFNldChcblx0XHRcdE9iamVjdC52YWx1ZXModXNlcnNCeUZ1bGxOYW1lKVxuXHRcdFx0XHQuZmlsdGVyKCh1c2VycykgPT4gdXNlcnMubGVuZ3RoID4gMSlcblx0XHRcdFx0LmZsYXRNYXAoKHVzZXJzKSA9PiB1c2VycyksXG5cdFx0KTtcblx0fVxuXG5cdHB1YmxpYyBoYW5kbGVIb21vbnltczxUIGV4dGVuZHMgTHVDb3JlU2VsZWN0VXNlcj4odXNlcnM6IFRbXSwgZm9ybWF0OiBMdURpc3BsYXlGb3JtYXQpOiBPYnNlcnZhYmxlPFRbXT4ge1xuXHRcdGNvbnN0IGhvbW9ueW1zID0gdGhpcy5leHRyYWN0SG9tb255bXModXNlcnMsIGZvcm1hdCk7XG5cblx0XHRpZiAoaG9tb255bXMuc2l6ZSA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIG9mKHVzZXJzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5nZXRBZGRpdGlvbmFsSW5mb3JtYXRpb25CeVVzZXJJZChBcnJheS5mcm9tKGhvbW9ueW1zKSkucGlwZShcblx0XHRcdG1hcCgoYWRkaXRpb25hbEluZm9ybWF0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiB1c2Vycy5tYXAoKHVzZXIpID0+IHtcblx0XHRcdFx0XHRpZiAoaG9tb255bXMuaGFzKHVzZXIpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHQuLi51c2VyLFxuXHRcdFx0XHRcdFx0XHRhZGRpdGlvbmFsSW5mb3JtYXRpb246IGFkZGl0aW9uYWxJbmZvcm1hdGlvblt1c2VyLmlkXSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB1c2VyO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pLFxuXHRcdFx0c3RhcnRXaXRoKHVzZXJzKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGdldEFkZGl0aW9uYWxJbmZvcm1hdGlvbkJ5VXNlcklkPFQgZXh0ZW5kcyBMdUNvcmVTZWxlY3RVc2VyPihob21vbnltczogVFtdKTogT2JzZXJ2YWJsZTxSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+PiB7XG5cdFx0Y29uc3QgdXNlcklkcyA9IGhvbW9ueW1zLm1hcCgodXNlcikgPT4gdXNlci5pZCk7XG5cblx0XHRyZXR1cm4gdGhpcy5odHRwXG5cdFx0XHQuZ2V0PElMdUFwaUNvbGxlY3Rpb25SZXNwb25zZTx7IGlkOiBudW1iZXI7IGRlcGFydG1lbnQ/OiB7IG5hbWU6IHN0cmluZyB9IH0+PihgL2FwaS92My91c2Vyc2AsIHtcblx0XHRcdFx0cGFyYW1zOiB7XG5cdFx0XHRcdFx0aWQ6IHVzZXJJZHMuam9pbignLCcpLFxuXHRcdFx0XHRcdGZpZWxkczogJ2lkLGRlcGFydG1lbnQubmFtZScsXG5cdFx0XHRcdH0sXG5cdFx0XHR9KVxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdG1hcCgocmVzKSA9PiByZXMuZGF0YS5pdGVtcyksXG5cdFx0XHRcdG1hcCgoaW5mb3MpID0+XG5cdFx0XHRcdFx0aW5mb3MucmVkdWNlPFJlY29yZDxudW1iZXIsIHN0cmluZz4+KFxuXHRcdFx0XHRcdFx0KGFjYywgaW5mbykgPT4gKHtcblx0XHRcdFx0XHRcdFx0Li4uYWNjLFxuXHRcdFx0XHRcdFx0XHRbaW5mby5pZF06IGluZm8uZGVwYXJ0bWVudD8ubmFtZSB8fCAnJyxcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KSxcblx0XHRcdCk7XG5cdH1cbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ob21vbnltLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy9jb3JlLXNlbGVjdC91c2VyL3VzZXItaG9tb255bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQW1CLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RFLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTNELE1BQU0sT0FBTywrQkFBK0I7SUFENUM7UUFFVyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFVBQUssR0FBMkIsRUFBRSxDQUFDO0tBMEU3QztJQXhFVSxlQUFlLENBQTZCLEtBQVUsRUFBRSxNQUF1QjtRQUN4RixNQUFNLGVBQWUsR0FBd0IsRUFBRSxDQUFDO1FBRWhELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxJQUFJLEdBQUcsQ0FDYixNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQzthQUM1QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ25DLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUE2QixLQUFVLEVBQUUsTUFBdUI7UUFDcEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdkIsT0FBTzt3QkFDTixHQUFHLElBQUk7d0JBQ1AscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztxQkFDNUUsQ0FBQztpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVTLGdDQUFnQyxDQUE2QixRQUFhO1FBQ25GLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhGLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDZCxHQUFHLENBQTBFLGVBQWUsRUFBRTtZQUM5RixNQUFNLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsb0JBQW9CO2FBQzVCO1NBQ0QsQ0FBQzthQUNELElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLE1BQU0sQ0FDWCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUc7WUFDTixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3RDLENBQUMsRUFDRixFQUFFLENBQ0YsQ0FDRCxFQUNELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWixHQUFHLElBQUksQ0FBQyxLQUFLO2dCQUNiLEdBQUcsS0FBSzthQUNSLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs4R0EzRVcsK0JBQStCO2tIQUEvQiwrQkFBK0IsY0FEbEIsTUFBTTs7MkZBQ25CLCtCQUErQjtrQkFEM0MsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTHVBcGlDb2xsZWN0aW9uUmVzcG9uc2UgfSBmcm9tICdAbHVjY2EtZnJvbnQvbmcvYXBpJztcbmltcG9ydCB7IEx1RGlzcGxheUZvcm1hdCwgbHVVc2VyRGlzcGxheSB9IGZyb20gJ0BsdWNjYS1mcm9udC9uZy91c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgb2YsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMdUNvcmVTZWxlY3RVc2VyIH0gZnJvbSAnLi91c2VyLW9wdGlvbi5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSB7XG5cdHByb3RlY3RlZCBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXHRwcm90ZWN0ZWQgY2FjaGU6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7fTtcblxuXHRwcm90ZWN0ZWQgZXh0cmFjdEhvbW9ueW1zPFQgZXh0ZW5kcyBMdUNvcmVTZWxlY3RVc2VyPih1c2VyczogVFtdLCBmb3JtYXQ6IEx1RGlzcGxheUZvcm1hdCk6IFNldDxUPiB7XG5cdFx0Y29uc3QgdXNlcnNCeUZ1bGxOYW1lOiBSZWNvcmQ8c3RyaW5nLCBUW10+ID0ge307XG5cblx0XHRmb3IgKGNvbnN0IHVzZXIgb2YgdXNlcnMpIHtcblx0XHRcdGNvbnN0IG5hbWUgPSBsdVVzZXJEaXNwbGF5KHVzZXIsIGZvcm1hdCk7XG5cdFx0XHR1c2Vyc0J5RnVsbE5hbWVbbmFtZV0gfHw9IFtdO1xuXHRcdFx0dXNlcnNCeUZ1bGxOYW1lW25hbWVdLnB1c2godXNlcik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5ldyBTZXQoXG5cdFx0XHRPYmplY3QudmFsdWVzKHVzZXJzQnlGdWxsTmFtZSlcblx0XHRcdFx0LmZpbHRlcigodXNlcnMpID0+IHVzZXJzLmxlbmd0aCA+IDEpXG5cdFx0XHRcdC5mbGF0TWFwKCh1c2VycykgPT4gdXNlcnMpLFxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgaGFuZGxlSG9tb255bXM8VCBleHRlbmRzIEx1Q29yZVNlbGVjdFVzZXI+KHVzZXJzOiBUW10sIGZvcm1hdDogTHVEaXNwbGF5Rm9ybWF0KTogT2JzZXJ2YWJsZTxUW10+IHtcblx0XHRjb25zdCBob21vbnltcyA9IHRoaXMuZXh0cmFjdEhvbW9ueW1zKHVzZXJzLCBmb3JtYXQpO1xuXG5cdFx0aWYgKGhvbW9ueW1zLnNpemUgPT09IDApIHtcblx0XHRcdHJldHVybiBvZih1c2Vycyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZ2V0QWRkaXRpb25hbEluZm9ybWF0aW9uQnlVc2VySWQoQXJyYXkuZnJvbShob21vbnltcykpLnBpcGUoXG5cdFx0XHRtYXAoKGFkZGl0aW9uYWxJbmZvcm1hdGlvbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdXNlcnMubWFwKCh1c2VyKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGhvbW9ueW1zLmhhcyh1c2VyKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0Li4udXNlcixcblx0XHRcdFx0XHRcdFx0YWRkaXRpb25hbEluZm9ybWF0aW9uOiB0aGlzLmNhY2hlW3VzZXIuaWRdIHx8IGFkZGl0aW9uYWxJbmZvcm1hdGlvblt1c2VyLmlkXSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB1c2VyO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pLFxuXHRcdFx0c3RhcnRXaXRoKHVzZXJzKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGdldEFkZGl0aW9uYWxJbmZvcm1hdGlvbkJ5VXNlcklkPFQgZXh0ZW5kcyBMdUNvcmVTZWxlY3RVc2VyPihob21vbnltczogVFtdKTogT2JzZXJ2YWJsZTxSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+PiB7XG5cdFx0Y29uc3QgdXNlcklkcyA9IGhvbW9ueW1zLm1hcCgodXNlcikgPT4gdXNlci5pZCkuZmlsdGVyKChpZCkgPT4gIXRoaXMuY2FjaGVbaWRdKTtcblxuXHRcdGlmICh1c2VySWRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIG9mKHt9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5odHRwXG5cdFx0XHQuZ2V0PElMdUFwaUNvbGxlY3Rpb25SZXNwb25zZTx7IGlkOiBudW1iZXI7IGRlcGFydG1lbnQ/OiB7IG5hbWU6IHN0cmluZyB9IH0+PihgL2FwaS92My91c2Vyc2AsIHtcblx0XHRcdFx0cGFyYW1zOiB7XG5cdFx0XHRcdFx0aWQ6IHVzZXJJZHMuam9pbignLCcpLFxuXHRcdFx0XHRcdGZpZWxkczogJ2lkLGRlcGFydG1lbnQubmFtZScsXG5cdFx0XHRcdH0sXG5cdFx0XHR9KVxuXHRcdFx0LnBpcGUoXG5cdFx0XHRcdG1hcCgocmVzKSA9PiByZXMuZGF0YS5pdGVtcyksXG5cdFx0XHRcdG1hcCgoaW5mb3MpID0+XG5cdFx0XHRcdFx0aW5mb3MucmVkdWNlPFJlY29yZDxudW1iZXIsIHN0cmluZz4+KFxuXHRcdFx0XHRcdFx0KGFjYywgaW5mbykgPT4gKHtcblx0XHRcdFx0XHRcdFx0Li4uYWNjLFxuXHRcdFx0XHRcdFx0XHRbaW5mby5pZF06IGluZm8uZGVwYXJ0bWVudD8ubmFtZSB8fCAnJyxcblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0KSxcblx0XHRcdFx0dGFwKChpbmZvcykgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY2FjaGUgPSB7XG5cdFx0XHRcdFx0XHQuLi50aGlzLmNhY2hlLFxuXHRcdFx0XHRcdFx0Li4uaW5mb3MsXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXHR9XG59XG4iXX0=
@@ -74,7 +74,7 @@ export class LuCoreSelectUsersDirective extends ALuCoreSelectApiDirective {
74
74
  ...filters,
75
75
  ...(orderBy ? { orderBy } : {}),
76
76
  ...(clue ? { clue: sanitizeClueFilter(clue) } : {}),
77
- ...(operationIds ? { operationIds: operationIds.join(',') } : {}),
77
+ ...(operationIds ? { operations: operationIds.join(',') } : {}),
78
78
  ...(appInstanceId ? { appInstanceId } : {}),
79
79
  ...(enableFormerEmployees ? { enableFormerEmployees } : {}),
80
80
  })));
@@ -114,8 +114,8 @@ export class LuCoreSelectUsersDirective extends ALuCoreSelectApiDirective {
114
114
  const displayMe$ = combineLatest([hasClue$, this.displayMeOption$]).pipe(map(([hasClue, displayMeOption]) => displayMeOption && !hasClue), distinctUntilChanged());
115
115
  // Wait for the first time the panel is open to get the current user
116
116
  const me$ = this.select.isPanelOpen$.pipe(filter((isOpen) => isOpen), take(1), switchMap((isOpen) => (isOpen ? this.getMe() : EMPTY)), shareReplay({ bufferSize: 1, refCount: true }));
117
- const options$ = super.buildOptions();
118
- return displayMe$.pipe(switchMap((displayMe) => combineLatest([options$, displayMe ? me$ : of(null)])), map(([options, me]) => (me ? [me, ...(options ?? []).filter((o) => o.id !== me.id)] : options)), switchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)));
117
+ const meFilter$ = displayMe$.pipe(switchMap((displayMe) => (displayMe ? me$ : of(null))));
118
+ return combineLatest([super.buildOptions(), meFilter$]).pipe(map(([options, meFilter]) => (meFilter ? [meFilter, ...(options ?? []).filter((o) => o.id !== meFilter.id)] : options)), switchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)));
119
119
  }
120
120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUsersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
121
121
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: LuCoreSelectUsersDirective, isStandalone: true, selector: "lu-simple-select[users],lu-multi-select[users]", inputs: { url: "url", operationIds: "operationIds", appInstanceId: "appInstanceId", enableFormerEmployees: "enableFormerEmployees", displayMeOption: "displayMeOption", displayFormat: "displayFormat", filters: "filters" }, exportAs: ["luUsers"], usesInheritance: true, ngImport: i0 }); }
@@ -150,4 +150,4 @@ function sanitizeClueFilter(clue) {
150
150
  .map((c) => encodeURIComponent(c))
151
151
  .join(',');
152
152
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmcvY29yZS1zZWxlY3QvdXNlci91c2Vycy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0gsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVVoRSxNQUFNLE9BQU8sMEJBQTBFLFNBQVEseUJBQTRCO0lBQzFILGlCQUFpQixDQUEwQjtJQUMzQyx1QkFBdUIsQ0FBZ0M7SUFDdkQsb0JBQW9CLENBQTJDO0lBRS9ELHlEQUF5RDtJQUN6RCxXQUFXLENBQXdDO0lBS25ELElBQ1csR0FBRyxDQUFDLEdBQWtCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFD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QkFBcUI7c0JBRC9CLEtBQUs7Z0JBTUssZUFBZTtzQkFEekIsS0FBSztnQkFVSyxhQUFhO3NCQUR2QixLQUFLO2dCQVlLLE9BQU87c0JBRGpCLEtBQUs7O0FBcUdQLFNBQVMsa0JBQWtCLENBQUMsSUFBWTtJQUN2QyxPQUFPLElBQUk7U0FDVCxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUx1QXBpQ29sbGVjdGlvblJlc3BvbnNlIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL2FwaSc7XG5pbXBvcnQgeyBBTHVDb3JlU2VsZWN0QXBpRGlyZWN0aXZlIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL2NvcmUtc2VsZWN0L2FwaSc7XG5pbXBvcnQgeyBMdURpc3BsYXlGb3JtYXQsIEx1RGlzcGxheUZ1bGxuYW1lIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL3VzZXInO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExVX0NPUkVfU0VMRUNUX0NVUlJFTlRfVVNFUl9JRCB9IGZyb20gJy4vbWUucHJvdmlkZXInO1xuaW1wb3J0IHsgTHVVc2VyRGlzcGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLWRpc3BsYXllci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSB9IGZyb20gJy4vdXNlci1ob21vbnltLnNlcnZpY2UnO1xuaW1wb3J0IHsgTHVVc2VyT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHVDb3JlU2VsZWN0VXNlciB9IGZyb20gJy4vdXNlci1vcHRpb24ubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcblx0Ly8gVGhlIGF0dHJpYnV0ZSBpcyBhbHJlYWR5IHByZWZpeGVkIHdpdGggXCJsdS1zaW1wbGUtc2VsZWN0XCJcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3Jcblx0c2VsZWN0b3I6ICdsdS1zaW1wbGUtc2VsZWN0W3VzZXJzXSxsdS1tdWx0aS1zZWxlY3RbdXNlcnNdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0ZXhwb3J0QXM6ICdsdVVzZXJzJyxcbn0pXG5leHBvcnQgY2xhc3MgTHVDb3JlU2VsZWN0VXNlcnNEaXJlY3RpdmU8VCBleHRlbmRzIEx1Q29yZVNlbGVjdFVzZXIgPSBMdUNvcmVTZWxlY3RVc2VyPiBleHRlbmRzIEFMdUNvcmVTZWxlY3RBcGlEaXJlY3RpdmU8VD4ge1xuXHQjZGVmYXVsdFNlYXJjaFVybCA9ICcvYXBpL3YzL3VzZXJzL3NlYXJjaCc7XG5cdCNkZWZhdWx0U2NvcGVkU2VhcmNoVXJsID0gJy9hcGkvdjMvdXNlcnMvc2NvcGVkc2VhcmNoJztcblx0I3VzZXJIb21vbnltc1NlcnZpY2UgPSBpbmplY3QoTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSk7XG5cblx0Ly8gTm90IG92ZXJyaWRhYmxlIHNvIGl0IHdpbGwgZWFzZSBlbXBsb3llZSBBUEkgbWlncmF0aW9uXG5cdCN1c2VyRmllbGRzID0gJ2lkLGZpcnN0TmFtZSxsYXN0TmFtZSxwaWN0dXJlLmhyZWYnO1xuXG5cdHByb3RlY3RlZCBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXHRwdWJsaWMgY3VycmVudFVzZXJJZCA9IGluamVjdChMVV9DT1JFX1NFTEVDVF9DVVJSRU5UX1VTRVJfSUQpO1xuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBzZXQgdXJsKHVybDogc3RyaW5nIHwgbnVsbCkge1xuXHRcdHRoaXMuY3VzdG9tVXJsLnNldCh1cmwpO1xuXHR9XG5cblx0QElucHV0KClcblx0cHVibGljIHNldCBvcGVyYXRpb25JZHMoaWRzOiBudW1iZXJbXSB8IG51bGwpIHtcblx0XHR0aGlzLl9vcGVyYXRpb25JZHMuc2V0KGlkcyk7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGFwcEluc3RhbmNlSWQoaWQ6IG51bWJlciB8IG51bGwpIHtcblx0XHR0aGlzLl9hcHBJbnN0YW5jZUlkLnNldChpZCk7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGVuYWJsZUZvcm1lckVtcGxveWVlcyh2YWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuX2VuYWJsZUZvcm1lckVtcGxveWVlcy5zZXQodmFsdWUpO1xuXHR9XG5cblx0QElucHV0KClcblx0cHVibGljIHNldCBkaXNwbGF5TWVPcHRpb24odmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLl9kaXNwbGF5TWVPcHRpb24uc2V0KHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQgZGlzcGxheU1lT3B0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLl9kaXNwbGF5TWVPcHRpb24oKTtcblx0fVxuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBzZXQgZGlzcGxheUZvcm1hdChmb3JtYXQ6IEx1RGlzcGxheUZvcm1hdCkge1xuXHRcdHRoaXMuZGlzcGxheUZvcm1hdCA9IGZvcm1hdDtcblx0fVxuXG5cdHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ6IEx1RGlzcGxheUZvcm1hdCA9IEx1RGlzcGxheUZ1bGxuYW1lLmxhc3RmaXJzdDtcblxuXHRwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGZpbHRlcnMoZmlsdGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pIHtcblx0XHR0aGlzLl9maWx0ZXJzLnNldChmaWx0ZXJzKTtcblx0fVxuXG5cdHByb3RlY3RlZCBfdXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zZWxlY3Qub3B0aW9uVHBsID0gTHVVc2VyT3B0aW9uQ29tcG9uZW50O1xuXHRcdHRoaXMuc2VsZWN0LnZhbHVlVHBsID0gTHVVc2VyRGlzcGxheWVyQ29tcG9uZW50O1xuXHR9XG5cblx0cHJvdGVjdGVkIF9vcmRlckJ5ID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgX2ZpbHRlcnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+KHt9KTtcblx0cHJvdGVjdGVkIF9vcGVyYXRpb25JZHMgPSBzaWduYWw8bnVtYmVyW10gfCBudWxsPihudWxsKTtcblx0cHJvdGVjdGVkIF9hcHBJbnN0YW5jZUlkID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgX2VuYWJsZUZvcm1lckVtcGxveWVlcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cdHByb3RlY3RlZCBkZWZhdWx0VXJsID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuX2FwcEluc3RhbmNlSWQoKSAmJiB0aGlzLl9vcGVyYXRpb25JZHMoKT8ubGVuZ3RoID8gdGhpcy4jZGVmYXVsdFNjb3BlZFNlYXJjaFVybCA6IHRoaXMuI2RlZmF1bHRTZWFyY2hVcmwpKTtcblx0cHJvdGVjdGVkIGN1c3RvbVVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblx0cHJvdGVjdGVkIF9kaXNwbGF5TWVPcHRpb24gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG5cdHByb3RlY3RlZCBkaXNwbGF5TWVPcHRpb24kID0gdG9PYnNlcnZhYmxlKHRoaXMuX2Rpc3BsYXlNZU9wdGlvbik7XG5cblx0cHJvdGVjdGVkIG92ZXJyaWRlIHBhcmFtcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+ID0gY29tYmluZUxhdGVzdChbXG5cdFx0dG9PYnNlcnZhYmxlKHRoaXMuX2ZpbHRlcnMpLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9vcmRlckJ5KSxcblx0XHR0aGlzLmNsdWUkLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9vcGVyYXRpb25JZHMpLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9hcHBJbnN0YW5jZUlkKSxcblx0XHR0b09ic2VydmFibGUodGhpcy5fZW5hYmxlRm9ybWVyRW1wbG95ZWVzKSxcblx0XSkucGlwZShcblx0XHRtYXAoKFtmaWx0ZXJzLCBvcmRlckJ5LCBjbHVlLCBvcGVyYXRpb25JZHMsIGFwcEluc3RhbmNlSWQsIGVuYWJsZUZvcm1lckVtcGxveWVlc10pID0+ICh7XG5cdFx0XHRmaWVsZHM6IHRoaXMuI3VzZXJGaWVsZHMsXG5cdFx0XHQuLi5maWx0ZXJzLFxuXHRcdFx0Li4uKG9yZGVyQnkgPyB7IG9yZGVyQnkgfSA6IHt9KSxcblx0XHRcdC4uLihjbHVlID8geyBjbHVlOiBzYW5pdGl6ZUNsdWVGaWx0ZXIoY2x1ZSkgfSA6IHt9KSxcblx0XHRcdC4uLihvcGVyYXRpb25JZHMgPyB7IG9wZXJhdGlvbklkczogb3BlcmF0aW9uSWRzLmpvaW4oJywnKSB9IDoge30pLFxuXHRcdFx0Li4uKGFwcEluc3RhbmNlSWQgPyB7IGFwcEluc3RhbmNlSWQgfSA6IHt9KSxcblx0XHRcdC4uLihlbmFibGVGb3JtZXJFbXBsb3llZXMgPyB7IGVuYWJsZUZvcm1lckVtcGxveWVlcyB9IDoge30pLFxuXHRcdH0pKSxcblx0KTtcblxuXHRwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0T3B0aW9ucyhwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+LCBwYWdlOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRbXT4ge1xuXHRcdGNvbnN0IHVybCA9IHRoaXMuY3VzdG9tVXJsKCkgfHwgdGhpcy5kZWZhdWx0VXJsKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50XG5cdFx0XHQuZ2V0PElMdUFwaUNvbGxlY3Rpb25SZXNwb25zZTx7IGl0ZW06IFQgfT4+KHVybCwge1xuXHRcdFx0XHRwYXJhbXM6IHtcblx0XHRcdFx0XHQuLi5wYXJhbXMsXG5cdFx0XHRcdFx0cGFnaW5nOiBgJHtwYWdlICogdGhpcy5wYWdlU2l6ZX0sJHt0aGlzLnBhZ2VTaXplfWAsXG5cdFx0XHRcdH0sXG5cdFx0XHR9KVxuXHRcdFx0LnBpcGUobWFwKChyZXMpID0+IHJlcy5kYXRhLml0ZW1zLm1hcCgoeyBpdGVtIH0pID0+IGl0ZW0pKSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0TWUoKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD4ge1xuXHRcdGNvbnN0IHVybCA9IHRoaXMuY3VzdG9tVXJsKCkgfHwgdGhpcy5kZWZhdWx0VXJsKCk7XG5cblx0XHRjb25zdCBwYXJhbXMgPSB7XG5cdFx0XHRpZDogdGhpcy5jdXJyZW50VXNlcklkLFxuXHRcdFx0ZmllbGRzOiB0aGlzLiN1c2VyRmllbGRzLFxuXHRcdFx0Li4uKHRoaXMuX2ZpbHRlcnMoKSA/PyB7fSksXG5cdFx0XHQuLi4odGhpcy5fb3BlcmF0aW9uSWRzKCkgPyB7IG9wZXJhdGlvbklkczogdGhpcy5fb3BlcmF0aW9uSWRzKCkuam9pbignLCcpIH0gOiB7fSksXG5cdFx0XHQuLi4odGhpcy5fYXBwSW5zdGFuY2VJZCgpID8geyBhcHBJbnN0YW5jZUlkOiB0aGlzLl9hcHBJbnN0YW5jZUlkKCkgfSA6IHt9KSxcblx0XHRcdC4uLih0aGlzLl9lbmFibGVGb3JtZXJFbXBsb3llZXMoKSA/IHsgZW5hYmxlRm9ybWVyRW1wbG95ZWVzOiB0aGlzLl9lbmFibGVGb3JtZXJFbXBsb3llZXMoKSB9IDoge30pLFxuXHRcdH07XG5cblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50XG5cdFx0XHQuZ2V0PElMdUFwaUNvbGxlY3Rpb25SZXNwb25zZTx7IGl0ZW06IFQgfT4+KHVybCwge1xuXHRcdFx0XHRwYXJhbXMsXG5cdFx0XHR9KVxuXHRcdFx0LnBpcGUobWFwKChyZXMpID0+IHJlcy5kYXRhLml0ZW1zLm1hcCgoeyBpdGVtIH0pID0+IGl0ZW0pWzBdID8/IG51bGwpKTtcblx0fVxuXG5cdHByb3RlY3RlZCBvdmVycmlkZSBidWlsZE9wdGlvbnMoKTogT2JzZXJ2YWJsZTxUW10+IHtcblx0XHRjb25zdCBoYXNDbHVlJCA9IHRoaXMuY2x1ZSQucGlwZShtYXAoKGNsdWUpID0+ICEhY2x1ZSkpO1xuXHRcdGNvbnN0IGRpc3BsYXlNZSQgPSBjb21iaW5lTGF0ZXN0KFtoYXNDbHVlJCwgdGhpcy5kaXNwbGF5TWVPcHRpb24kXSkucGlwZShcblx0XHRcdG1hcCgoW2hhc0NsdWUsIGRpc3BsYXlNZU9wdGlvbl0pID0+IGRpc3BsYXlNZU9wdGlvbiAmJiAhaGFzQ2x1ZSksXG5cdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuXHRcdCk7XG5cblx0XHQvLyBXYWl0IGZvciB0aGUgZmlyc3QgdGltZSB0aGUgcGFuZWwgaXMgb3BlbiB0byBnZXQgdGhlIGN1cnJlbnQgdXNlclxuXHRcdGNvbnN0IG1lJCA9IHRoaXMuc2VsZWN0LmlzUGFuZWxPcGVuJC5waXBlKFxuXHRcdFx0ZmlsdGVyKChpc09wZW4pID0+IGlzT3BlbiksXG5cdFx0XHR0YWtlKDEpLFxuXHRcdFx0c3dpdGNoTWFwKChpc09wZW4pID0+IChpc09wZW4gPyB0aGlzLmdldE1lKCkgOiBFTVBUWSkpLFxuXHRcdFx0c2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgb3B0aW9ucyQgPSBzdXBlci5idWlsZE9wdGlvbnMoKTtcblxuXHRcdHJldHVybiBkaXNwbGF5TWUkLnBpcGUoXG5cdFx0XHRzd2l0Y2hNYXAoKGRpc3BsYXlNZSkgPT4gY29tYmluZUxhdGVzdChbb3B0aW9ucyQsIGRpc3BsYXlNZSA/IG1lJCA6IG9mKG51bGwpXSkpLFxuXHRcdFx0bWFwKChbb3B0aW9ucywgbWVdKSA9PiAobWUgPyBbbWUsIC4uLihvcHRpb25zID8/IFtdKS5maWx0ZXIoKG8pID0+IG8uaWQgIT09IG1lLmlkKV0gOiBvcHRpb25zKSksXG5cdFx0XHRzd2l0Y2hNYXAoKHVzZXJzKSA9PiB0aGlzLiN1c2VySG9tb255bXNTZXJ2aWNlLmhhbmRsZUhvbW9ueW1zKHVzZXJzLCB0aGlzLmRpc3BsYXlGb3JtYXQpKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIG92ZXJyaWRlIG9wdGlvbkNvbXBhcmVyID0gKGE6IFQsIGI6IFQpID0+IGEuaWQgPT09IGIuaWQ7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplQ2x1ZUZpbHRlcihjbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIGNsdWVcblx0XHQuc3BsaXQoJyAnKVxuXHRcdC5tYXAoKGM6IHN0cmluZykgPT4gZW5jb2RlVVJJQ29tcG9uZW50KGMpKVxuXHRcdC5qb2luKCcsJyk7XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmcvY29yZS1zZWxlY3QvdXNlci91c2Vycy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0gsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVVoRSxNQUFNLE9BQU8sMEJBQTBFLFNBQVEseUJBQTRCO0lBQzFILGlCQUFpQixDQUEwQjtJQUMzQyx1QkFBdUIsQ0FBZ0M7SUFDdkQsb0JBQW9CLENBQTJDO0lBRS9ELHlEQUF5RDtJQUN6RCxXQUFXLENBQXdDO0lBS25ELElBQ1csR0FBRyxDQUFDLEdBQWtCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFD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YUFBYTtzQkFEdkIsS0FBSztnQkFNSyxxQkFBcUI7c0JBRC9CLEtBQUs7Z0JBTUssZUFBZTtzQkFEekIsS0FBSztnQkFVSyxhQUFhO3NCQUR2QixLQUFLO2dCQVlLLE9BQU87c0JBRGpCLEtBQUs7O0FBb0dQLFNBQVMsa0JBQWtCLENBQUMsSUFBWTtJQUN2QyxPQUFPLElBQUk7U0FDVCxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUx1QXBpQ29sbGVjdGlvblJlc3BvbnNlIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL2FwaSc7XG5pbXBvcnQgeyBBTHVDb3JlU2VsZWN0QXBpRGlyZWN0aXZlIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL2NvcmUtc2VsZWN0L2FwaSc7XG5pbXBvcnQgeyBMdURpc3BsYXlGb3JtYXQsIEx1RGlzcGxheUZ1bGxuYW1lIH0gZnJvbSAnQGx1Y2NhLWZyb250L25nL3VzZXInO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExVX0NPUkVfU0VMRUNUX0NVUlJFTlRfVVNFUl9JRCB9IGZyb20gJy4vbWUucHJvdmlkZXInO1xuaW1wb3J0IHsgTHVVc2VyRGlzcGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLWRpc3BsYXllci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSB9IGZyb20gJy4vdXNlci1ob21vbnltLnNlcnZpY2UnO1xuaW1wb3J0IHsgTHVVc2VyT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTHVDb3JlU2VsZWN0VXNlciB9IGZyb20gJy4vdXNlci1vcHRpb24ubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcblx0Ly8gVGhlIGF0dHJpYnV0ZSBpcyBhbHJlYWR5IHByZWZpeGVkIHdpdGggXCJsdS1zaW1wbGUtc2VsZWN0XCJcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3Jcblx0c2VsZWN0b3I6ICdsdS1zaW1wbGUtc2VsZWN0W3VzZXJzXSxsdS1tdWx0aS1zZWxlY3RbdXNlcnNdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0ZXhwb3J0QXM6ICdsdVVzZXJzJyxcbn0pXG5leHBvcnQgY2xhc3MgTHVDb3JlU2VsZWN0VXNlcnNEaXJlY3RpdmU8VCBleHRlbmRzIEx1Q29yZVNlbGVjdFVzZXIgPSBMdUNvcmVTZWxlY3RVc2VyPiBleHRlbmRzIEFMdUNvcmVTZWxlY3RBcGlEaXJlY3RpdmU8VD4ge1xuXHQjZGVmYXVsdFNlYXJjaFVybCA9ICcvYXBpL3YzL3VzZXJzL3NlYXJjaCc7XG5cdCNkZWZhdWx0U2NvcGVkU2VhcmNoVXJsID0gJy9hcGkvdjMvdXNlcnMvc2NvcGVkc2VhcmNoJztcblx0I3VzZXJIb21vbnltc1NlcnZpY2UgPSBpbmplY3QoTHVDb3JlU2VsZWN0VXNlckhvbW9ueW1zU2VydmljZSk7XG5cblx0Ly8gTm90IG92ZXJyaWRhYmxlIHNvIGl0IHdpbGwgZWFzZSBlbXBsb3llZSBBUEkgbWlncmF0aW9uXG5cdCN1c2VyRmllbGRzID0gJ2lkLGZpcnN0TmFtZSxsYXN0TmFtZSxwaWN0dXJlLmhyZWYnO1xuXG5cdHByb3RlY3RlZCBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXHRwdWJsaWMgY3VycmVudFVzZXJJZCA9IGluamVjdChMVV9DT1JFX1NFTEVDVF9DVVJSRU5UX1VTRVJfSUQpO1xuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBzZXQgdXJsKHVybDogc3RyaW5nIHwgbnVsbCkge1xuXHRcdHRoaXMuY3VzdG9tVXJsLnNldCh1cmwpO1xuXHR9XG5cblx0QElucHV0KClcblx0cHVibGljIHNldCBvcGVyYXRpb25JZHMoaWRzOiBudW1iZXJbXSB8IG51bGwpIHtcblx0XHR0aGlzLl9vcGVyYXRpb25JZHMuc2V0KGlkcyk7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGFwcEluc3RhbmNlSWQoaWQ6IG51bWJlciB8IG51bGwpIHtcblx0XHR0aGlzLl9hcHBJbnN0YW5jZUlkLnNldChpZCk7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGVuYWJsZUZvcm1lckVtcGxveWVlcyh2YWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuX2VuYWJsZUZvcm1lckVtcGxveWVlcy5zZXQodmFsdWUpO1xuXHR9XG5cblx0QElucHV0KClcblx0cHVibGljIHNldCBkaXNwbGF5TWVPcHRpb24odmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLl9kaXNwbGF5TWVPcHRpb24uc2V0KHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQgZGlzcGxheU1lT3B0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLl9kaXNwbGF5TWVPcHRpb24oKTtcblx0fVxuXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBzZXQgZGlzcGxheUZvcm1hdChmb3JtYXQ6IEx1RGlzcGxheUZvcm1hdCkge1xuXHRcdHRoaXMuZGlzcGxheUZvcm1hdCA9IGZvcm1hdDtcblx0fVxuXG5cdHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ6IEx1RGlzcGxheUZvcm1hdCA9IEx1RGlzcGxheUZ1bGxuYW1lLmxhc3RmaXJzdDtcblxuXHRwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG5cdH1cblxuXHRASW5wdXQoKVxuXHRwdWJsaWMgc2V0IGZpbHRlcnMoZmlsdGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4pIHtcblx0XHR0aGlzLl9maWx0ZXJzLnNldChmaWx0ZXJzKTtcblx0fVxuXG5cdHByb3RlY3RlZCBfdXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zZWxlY3Qub3B0aW9uVHBsID0gTHVVc2VyT3B0aW9uQ29tcG9uZW50O1xuXHRcdHRoaXMuc2VsZWN0LnZhbHVlVHBsID0gTHVVc2VyRGlzcGxheWVyQ29tcG9uZW50O1xuXHR9XG5cblx0cHJvdGVjdGVkIF9vcmRlckJ5ID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgX2ZpbHRlcnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+KHt9KTtcblx0cHJvdGVjdGVkIF9vcGVyYXRpb25JZHMgPSBzaWduYWw8bnVtYmVyW10gfCBudWxsPihudWxsKTtcblx0cHJvdGVjdGVkIF9hcHBJbnN0YW5jZUlkID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuXHRwcm90ZWN0ZWQgX2VuYWJsZUZvcm1lckVtcGxveWVlcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cdHByb3RlY3RlZCBkZWZhdWx0VXJsID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuX2FwcEluc3RhbmNlSWQoKSAmJiB0aGlzLl9vcGVyYXRpb25JZHMoKT8ubGVuZ3RoID8gdGhpcy4jZGVmYXVsdFNjb3BlZFNlYXJjaFVybCA6IHRoaXMuI2RlZmF1bHRTZWFyY2hVcmwpKTtcblx0cHJvdGVjdGVkIGN1c3RvbVVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblx0cHJvdGVjdGVkIF9kaXNwbGF5TWVPcHRpb24gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG5cdHByb3RlY3RlZCBkaXNwbGF5TWVPcHRpb24kID0gdG9PYnNlcnZhYmxlKHRoaXMuX2Rpc3BsYXlNZU9wdGlvbik7XG5cblx0cHJvdGVjdGVkIG92ZXJyaWRlIHBhcmFtcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+ID0gY29tYmluZUxhdGVzdChbXG5cdFx0dG9PYnNlcnZhYmxlKHRoaXMuX2ZpbHRlcnMpLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9vcmRlckJ5KSxcblx0XHR0aGlzLmNsdWUkLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9vcGVyYXRpb25JZHMpLFxuXHRcdHRvT2JzZXJ2YWJsZSh0aGlzLl9hcHBJbnN0YW5jZUlkKSxcblx0XHR0b09ic2VydmFibGUodGhpcy5fZW5hYmxlRm9ybWVyRW1wbG95ZWVzKSxcblx0XSkucGlwZShcblx0XHRtYXAoKFtmaWx0ZXJzLCBvcmRlckJ5LCBjbHVlLCBvcGVyYXRpb25JZHMsIGFwcEluc3RhbmNlSWQsIGVuYWJsZUZvcm1lckVtcGxveWVlc10pID0+ICh7XG5cdFx0XHRmaWVsZHM6IHRoaXMuI3VzZXJGaWVsZHMsXG5cdFx0XHQuLi5maWx0ZXJzLFxuXHRcdFx0Li4uKG9yZGVyQnkgPyB7IG9yZGVyQnkgfSA6IHt9KSxcblx0XHRcdC4uLihjbHVlID8geyBjbHVlOiBzYW5pdGl6ZUNsdWVGaWx0ZXIoY2x1ZSkgfSA6IHt9KSxcblx0XHRcdC4uLihvcGVyYXRpb25JZHMgPyB7IG9wZXJhdGlvbnM6IG9wZXJhdGlvbklkcy5qb2luKCcsJykgfSA6IHt9KSxcblx0XHRcdC4uLihhcHBJbnN0YW5jZUlkID8geyBhcHBJbnN0YW5jZUlkIH0gOiB7fSksXG5cdFx0XHQuLi4oZW5hYmxlRm9ybWVyRW1wbG95ZWVzID8geyBlbmFibGVGb3JtZXJFbXBsb3llZXMgfSA6IHt9KSxcblx0XHR9KSksXG5cdCk7XG5cblx0cHJvdGVjdGVkIG92ZXJyaWRlIGdldE9wdGlvbnMocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiwgcGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxUW10+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLmN1c3RvbVVybCgpIHx8IHRoaXMuZGVmYXVsdFVybCgpO1xuXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudFxuXHRcdFx0LmdldDxJTHVBcGlDb2xsZWN0aW9uUmVzcG9uc2U8eyBpdGVtOiBUIH0+Pih1cmwsIHtcblx0XHRcdFx0cGFyYW1zOiB7XG5cdFx0XHRcdFx0Li4ucGFyYW1zLFxuXHRcdFx0XHRcdHBhZ2luZzogYCR7cGFnZSAqIHRoaXMucGFnZVNpemV9LCR7dGhpcy5wYWdlU2l6ZX1gLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSlcblx0XHRcdC5waXBlKG1hcCgocmVzKSA9PiByZXMuZGF0YS5pdGVtcy5tYXAoKHsgaXRlbSB9KSA9PiBpdGVtKSkpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGdldE1lKCk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcblx0XHRjb25zdCB1cmwgPSB0aGlzLmN1c3RvbVVybCgpIHx8IHRoaXMuZGVmYXVsdFVybCgpO1xuXG5cdFx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdFx0aWQ6IHRoaXMuY3VycmVudFVzZXJJZCxcblx0XHRcdGZpZWxkczogdGhpcy4jdXNlckZpZWxkcyxcblx0XHRcdC4uLih0aGlzLl9maWx0ZXJzKCkgPz8ge30pLFxuXHRcdFx0Li4uKHRoaXMuX29wZXJhdGlvbklkcygpID8geyBvcGVyYXRpb25JZHM6IHRoaXMuX29wZXJhdGlvbklkcygpLmpvaW4oJywnKSB9IDoge30pLFxuXHRcdFx0Li4uKHRoaXMuX2FwcEluc3RhbmNlSWQoKSA/IHsgYXBwSW5zdGFuY2VJZDogdGhpcy5fYXBwSW5zdGFuY2VJZCgpIH0gOiB7fSksXG5cdFx0XHQuLi4odGhpcy5fZW5hYmxlRm9ybWVyRW1wbG95ZWVzKCkgPyB7IGVuYWJsZUZvcm1lckVtcGxveWVlczogdGhpcy5fZW5hYmxlRm9ybWVyRW1wbG95ZWVzKCkgfSA6IHt9KSxcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudFxuXHRcdFx0LmdldDxJTHVBcGlDb2xsZWN0aW9uUmVzcG9uc2U8eyBpdGVtOiBUIH0+Pih1cmwsIHtcblx0XHRcdFx0cGFyYW1zLFxuXHRcdFx0fSlcblx0XHRcdC5waXBlKG1hcCgocmVzKSA9PiByZXMuZGF0YS5pdGVtcy5tYXAoKHsgaXRlbSB9KSA9PiBpdGVtKVswXSA/PyBudWxsKSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgb3ZlcnJpZGUgYnVpbGRPcHRpb25zKCk6IE9ic2VydmFibGU8VFtdPiB7XG5cdFx0Y29uc3QgaGFzQ2x1ZSQgPSB0aGlzLmNsdWUkLnBpcGUobWFwKChjbHVlKSA9PiAhIWNsdWUpKTtcblx0XHRjb25zdCBkaXNwbGF5TWUkID0gY29tYmluZUxhdGVzdChbaGFzQ2x1ZSQsIHRoaXMuZGlzcGxheU1lT3B0aW9uJF0pLnBpcGUoXG5cdFx0XHRtYXAoKFtoYXNDbHVlLCBkaXNwbGF5TWVPcHRpb25dKSA9PiBkaXNwbGF5TWVPcHRpb24gJiYgIWhhc0NsdWUpLFxuXHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcblx0XHQpO1xuXG5cdFx0Ly8gV2FpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdGhlIHBhbmVsIGlzIG9wZW4gdG8gZ2V0IHRoZSBjdXJyZW50IHVzZXJcblx0XHRjb25zdCBtZSQgPSB0aGlzLnNlbGVjdC5pc1BhbmVsT3BlbiQucGlwZShcblx0XHRcdGZpbHRlcigoaXNPcGVuKSA9PiBpc09wZW4pLFxuXHRcdFx0dGFrZSgxKSxcblx0XHRcdHN3aXRjaE1hcCgoaXNPcGVuKSA9PiAoaXNPcGVuID8gdGhpcy5nZXRNZSgpIDogRU1QVFkpKSxcblx0XHRcdHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG5cdFx0KTtcblxuXHRcdGNvbnN0IG1lRmlsdGVyJCA9IGRpc3BsYXlNZSQucGlwZShzd2l0Y2hNYXAoKGRpc3BsYXlNZSkgPT4gKGRpc3BsYXlNZSA/IG1lJCA6IG9mKG51bGwpKSkpO1xuXG5cdFx0cmV0dXJuIGNvbWJpbmVMYXRlc3QoW3N1cGVyLmJ1aWxkT3B0aW9ucygpLCBtZUZpbHRlciRdKS5waXBlKFxuXHRcdFx0bWFwKChbb3B0aW9ucywgbWVGaWx0ZXJdKSA9PiAobWVGaWx0ZXIgPyBbbWVGaWx0ZXIsIC4uLihvcHRpb25zID8/IFtdKS5maWx0ZXIoKG8pID0+IG8uaWQgIT09IG1lRmlsdGVyLmlkKV0gOiBvcHRpb25zKSksXG5cdFx0XHRzd2l0Y2hNYXAoKHVzZXJzKSA9PiB0aGlzLiN1c2VySG9tb255bXNTZXJ2aWNlLmhhbmRsZUhvbW9ueW1zKHVzZXJzLCB0aGlzLmRpc3BsYXlGb3JtYXQpKSxcblx0XHQpO1xuXHR9XG5cblx0cHJvdGVjdGVkIG92ZXJyaWRlIG9wdGlvbkNvbXBhcmVyID0gKGE6IFQsIGI6IFQpID0+IGEuaWQgPT09IGIuaWQ7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplQ2x1ZUZpbHRlcihjbHVlOiBzdHJpbmcpIHtcblx0cmV0dXJuIGNsdWVcblx0XHQuc3BsaXQoJyAnKVxuXHRcdC5tYXAoKGM6IHN0cmluZykgPT4gZW5jb2RlVVJJQ29tcG9uZW50KGMpKVxuXHRcdC5qb2luKCcsJyk7XG59XG4iXX0=
@@ -4,7 +4,7 @@ import { HttpClient } from '@angular/common/http';
4
4
  import { toObservable } from '@angular/core/rxjs-interop';
5
5
  import { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';
6
6
  import { LuUserDisplayPipe, luUserDisplay, LuDisplayFullname } from '@lucca-front/ng/user';
7
- import { of, map, startWith, combineLatest, distinctUntilChanged, filter, take, EMPTY, switchMap, shareReplay } from 'rxjs';
7
+ import { of, map, startWith, tap, combineLatest, distinctUntilChanged, filter, take, EMPTY, switchMap, shareReplay } from 'rxjs';
8
8
  import { NgIf, AsyncPipe } from '@angular/common';
9
9
  import { LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';
10
10
  import { getIntl } from '@lucca-front/ng/core';
@@ -46,6 +46,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
46
46
  class LuCoreSelectUserHomonymsService {
47
47
  constructor() {
48
48
  this.http = inject(HttpClient);
49
+ this.cache = {};
49
50
  }
50
51
  extractHomonyms(users, format) {
51
52
  const usersByFullName = {};
@@ -68,7 +69,7 @@ class LuCoreSelectUserHomonymsService {
68
69
  if (homonyms.has(user)) {
69
70
  return {
70
71
  ...user,
71
- additionalInformation: additionalInformation[user.id],
72
+ additionalInformation: this.cache[user.id] || additionalInformation[user.id],
72
73
  };
73
74
  }
74
75
  return user;
@@ -76,7 +77,10 @@ class LuCoreSelectUserHomonymsService {
76
77
  }), startWith(users));
77
78
  }
78
79
  getAdditionalInformationByUserId(homonyms) {
79
- const userIds = homonyms.map((user) => user.id);
80
+ const userIds = homonyms.map((user) => user.id).filter((id) => !this.cache[id]);
81
+ if (userIds.length === 0) {
82
+ return of({});
83
+ }
80
84
  return this.http
81
85
  .get(`/api/v3/users`, {
82
86
  params: {
@@ -87,7 +91,12 @@ class LuCoreSelectUserHomonymsService {
87
91
  .pipe(map((res) => res.data.items), map((infos) => infos.reduce((acc, info) => ({
88
92
  ...acc,
89
93
  [info.id]: info.department?.name || '',
90
- }), {})));
94
+ }), {})), tap((infos) => {
95
+ this.cache = {
96
+ ...this.cache,
97
+ ...infos,
98
+ };
99
+ }));
91
100
  }
92
101
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUserHomonymsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
93
102
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUserHomonymsService, providedIn: 'root' }); }
@@ -220,7 +229,7 @@ class LuCoreSelectUsersDirective extends ALuCoreSelectApiDirective {
220
229
  ...filters,
221
230
  ...(orderBy ? { orderBy } : {}),
222
231
  ...(clue ? { clue: sanitizeClueFilter(clue) } : {}),
223
- ...(operationIds ? { operationIds: operationIds.join(',') } : {}),
232
+ ...(operationIds ? { operations: operationIds.join(',') } : {}),
224
233
  ...(appInstanceId ? { appInstanceId } : {}),
225
234
  ...(enableFormerEmployees ? { enableFormerEmployees } : {}),
226
235
  })));
@@ -260,8 +269,8 @@ class LuCoreSelectUsersDirective extends ALuCoreSelectApiDirective {
260
269
  const displayMe$ = combineLatest([hasClue$, this.displayMeOption$]).pipe(map(([hasClue, displayMeOption]) => displayMeOption && !hasClue), distinctUntilChanged());
261
270
  // Wait for the first time the panel is open to get the current user
262
271
  const me$ = this.select.isPanelOpen$.pipe(filter((isOpen) => isOpen), take(1), switchMap((isOpen) => (isOpen ? this.getMe() : EMPTY)), shareReplay({ bufferSize: 1, refCount: true }));
263
- const options$ = super.buildOptions();
264
- return displayMe$.pipe(switchMap((displayMe) => combineLatest([options$, displayMe ? me$ : of(null)])), map(([options, me]) => (me ? [me, ...(options ?? []).filter((o) => o.id !== me.id)] : options)), switchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)));
272
+ const meFilter$ = displayMe$.pipe(switchMap((displayMe) => (displayMe ? me$ : of(null))));
273
+ return combineLatest([super.buildOptions(), meFilter$]).pipe(map(([options, meFilter]) => (meFilter ? [meFilter, ...(options ?? []).filter((o) => o.id !== meFilter.id)] : options)), switchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)));
265
274
  }
266
275
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: LuCoreSelectUsersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
267
276
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: LuCoreSelectUsersDirective, isStandalone: true, selector: "lu-simple-select[users],lu-multi-select[users]", inputs: { url: "url", operationIds: "operationIds", appInstanceId: "appInstanceId", enableFormerEmployees: "enableFormerEmployees", displayMeOption: "displayMeOption", displayFormat: "displayFormat", filters: "filters" }, exportAs: ["luUsers"], usesInheritance: true, ngImport: i0 }); }
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-core-select-user.mjs","sources":["../../../packages/ng/core-select/user/me.provider.ts","../../../packages/ng/core-select/user/user-displayer.component.ts","../../../packages/ng/core-select/user/user-homonym.service.ts","../../../packages/ng/core-select/user/user.translate.ts","../../../packages/ng/core-select/user/user-option.component.ts","../../../packages/ng/core-select/user/users.directive.ts","../../../packages/ng/core-select/user/lucca-front-ng-core-select-user.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LU_CORE_SELECT_CURRENT_USER_ID = new InjectionToken<number>('LuCoreSelectCurrentUserId');\n\nexport function provideCoreSelectCurrentUserId(factory: () => number): Provider {\n\treturn {\n\t\tprovide: LU_CORE_SELECT_CURRENT_USER_ID,\n\t\tuseFactory: factory,\n\t};\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-displayer',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t{{ user | luUserDisplay : userDirective.displayFormat }}\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n})\nexport class LuUserDisplayerComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { LuDisplayFormat, luUserDisplay } from '@lucca-front/ng/user';\nimport { Observable, map, of, startWith } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Injectable({ providedIn: 'root' })\nexport class LuCoreSelectUserHomonymsService {\n\tprotected http = inject(HttpClient);\n\n\tprotected extractHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Set<T> {\n\t\tconst usersByFullName: Record<string, T[]> = {};\n\n\t\tfor (const user of users) {\n\t\t\tconst name = luUserDisplay(user, format);\n\t\t\tusersByFullName[name] ||= [];\n\t\t\tusersByFullName[name].push(user);\n\t\t}\n\n\t\treturn new Set(\n\t\t\tObject.values(usersByFullName)\n\t\t\t\t.filter((users) => users.length > 1)\n\t\t\t\t.flatMap((users) => users),\n\t\t);\n\t}\n\n\tpublic handleHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Observable<T[]> {\n\t\tconst homonyms = this.extractHomonyms(users, format);\n\n\t\tif (homonyms.size === 0) {\n\t\t\treturn of(users);\n\t\t}\n\n\t\treturn this.getAdditionalInformationByUserId(Array.from(homonyms)).pipe(\n\t\t\tmap((additionalInformation) => {\n\t\t\t\treturn users.map((user) => {\n\t\t\t\t\tif (homonyms.has(user)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\tadditionalInformation: additionalInformation[user.id],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn user;\n\t\t\t\t});\n\t\t\t}),\n\t\t\tstartWith(users),\n\t\t);\n\t}\n\n\tprotected getAdditionalInformationByUserId<T extends LuCoreSelectUser>(homonyms: T[]): Observable<Record<number, string>> {\n\t\tconst userIds = homonyms.map((user) => user.id);\n\n\t\treturn this.http\n\t\t\t.get<ILuApiCollectionResponse<{ id: number; department?: { name: string } }>>(`/api/v3/users`, {\n\t\t\t\tparams: {\n\t\t\t\t\tid: userIds.join(','),\n\t\t\t\t\tfields: 'id,department.name',\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((res) => res.data.items),\n\t\t\t\tmap((infos) =>\n\t\t\t\t\tinfos.reduce<Record<number, string>>(\n\t\t\t\t\t\t(acc, info) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[info.id]: info.department?.name || '',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t}\n}\n","import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_CORE_SELECT_USER_TRANSLATIONS = new InjectionToken('LuCoreSelectUserTranslations', {\n\tfactory: () => luCoreSelectUserTranslations,\n});\n\nexport interface LuCoreSelectUserTranslations {\n\tme: string;\n}\n\nexport const luCoreSelectUserTranslations: ILuTranslation<LuCoreSelectUserTranslations> = {\n\ten: {\n\t\tme: 'Me:',\n\t},\n\tfr: {\n\t\tme: 'Moi :',\n\t},\n\tes: {\n\t\tme: 'Yo :',\n\t},\n\tde: {\n\t\tme: 'Ich:',\n\t},\n\tpt: {\n\t\tme: 'Eu:',\n\t},\n};\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { map, startWith } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-option',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<div *ngIf=\"userDirective.displayMeOption && user.id === userDirective.currentUserId && hasEmptyClue$ | async; else notMe\">\n\t\t\t\t<b>{{ intl.me }} {{ user | luUserDisplay : userDirective.displayFormat }}</b>\n\t\t\t</div>\n\n\t\t\t<ng-template #notMe>\n\t\t\t\t<div>{{ user | luUserDisplay : userDirective.displayFormat }}</div>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-select-additionalInformation\" *ngIf=\"user.additionalInformation\">({{ user.additionalInformation }})</div>\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n\tstyles: [\n\t\t`\n\t\t\t.lu-select-additionalInformation {\n\t\t\t\tfont-size: 80%;\n\t\t\t\tfont-style: italic;\n\t\t\t\tmargin-top: -0.25em;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class LuUserOptionComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n\tprotected intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\tprotected hasEmptyClue$ = this.userDirective.select.clueChange.pipe(\n\t\tstartWith(this.userDirective.select.clue),\n\t\tmap((clue) => !clue),\n\t);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, Input, computed, inject, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { LuDisplayFormat, LuDisplayFullname } from '@lucca-front/ng/user';\nimport { EMPTY, Observable, combineLatest, distinctUntilChanged, filter, map, of, shareReplay, switchMap, take } from 'rxjs';\nimport { LU_CORE_SELECT_CURRENT_USER_ID } from './me.provider';\nimport { LuUserDisplayerComponent } from './user-displayer.component';\nimport { LuCoreSelectUserHomonymsService } from './user-homonym.service';\nimport { LuUserOptionComponent } from './user-option.component';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[users],lu-multi-select[users]',\n\tstandalone: true,\n\texportAs: 'luUsers',\n})\nexport class LuCoreSelectUsersDirective<T extends LuCoreSelectUser = LuCoreSelectUser> extends ALuCoreSelectApiDirective<T> {\n\t#defaultSearchUrl = '/api/v3/users/search';\n\t#defaultScopedSearchUrl = '/api/v3/users/scopedsearch';\n\t#userHomonymsService = inject(LuCoreSelectUserHomonymsService);\n\n\t// Not overridable so it will ease employee API migration\n\t#userFields = 'id,firstName,lastName,picture.href';\n\n\tprotected httpClient = inject(HttpClient);\n\tpublic currentUserId = inject(LU_CORE_SELECT_CURRENT_USER_ID);\n\n\t@Input()\n\tpublic set url(url: string | null) {\n\t\tthis.customUrl.set(url);\n\t}\n\n\t@Input()\n\tpublic set operationIds(ids: number[] | null) {\n\t\tthis._operationIds.set(ids);\n\t}\n\n\t@Input()\n\tpublic set appInstanceId(id: number | null) {\n\t\tthis._appInstanceId.set(id);\n\t}\n\n\t@Input()\n\tpublic set enableFormerEmployees(value: boolean) {\n\t\tthis._enableFormerEmployees.set(value);\n\t}\n\n\t@Input()\n\tpublic set displayMeOption(value: boolean) {\n\t\tthis._displayMeOption.set(value);\n\t}\n\n\tpublic get displayMeOption() {\n\t\treturn this._displayMeOption();\n\t}\n\n\t@Input()\n\tpublic set displayFormat(format: LuDisplayFormat) {\n\t\tthis.displayFormat = format;\n\t}\n\n\tprivate _displayFormat: LuDisplayFormat = LuDisplayFullname.lastfirst;\n\n\tpublic get displayFormat() {\n\t\treturn this._displayFormat;\n\t}\n\n\t@Input()\n\tpublic set filters(filters: Record<string, string | number | boolean>) {\n\t\tthis._filters.set(filters);\n\t}\n\n\tprotected _url = signal<string | null>(null);\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.select.optionTpl = LuUserOptionComponent;\n\t\tthis.select.valueTpl = LuUserDisplayerComponent;\n\t}\n\n\tprotected _orderBy = signal<string | null>(null);\n\tprotected _filters = signal<Record<string, string | number | boolean>>({});\n\tprotected _operationIds = signal<number[] | null>(null);\n\tprotected _appInstanceId = signal<number | null>(null);\n\tprotected _enableFormerEmployees = signal<boolean>(false);\n\tprotected defaultUrl = computed(() => (this._appInstanceId() && this._operationIds()?.length ? this.#defaultScopedSearchUrl : this.#defaultSearchUrl));\n\tprotected customUrl = signal<string | null>(null);\n\tprotected _displayMeOption = signal<boolean>(true);\n\tprotected displayMeOption$ = toObservable(this._displayMeOption);\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = combineLatest([\n\t\ttoObservable(this._filters),\n\t\ttoObservable(this._orderBy),\n\t\tthis.clue$,\n\t\ttoObservable(this._operationIds),\n\t\ttoObservable(this._appInstanceId),\n\t\ttoObservable(this._enableFormerEmployees),\n\t]).pipe(\n\t\tmap(([filters, orderBy, clue, operationIds, appInstanceId, enableFormerEmployees]) => ({\n\t\t\tfields: this.#userFields,\n\t\t\t...filters,\n\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t...(clue ? { clue: sanitizeClueFilter(clue) } : {}),\n\t\t\t...(operationIds ? { operationIds: operationIds.join(',') } : {}),\n\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t...(enableFormerEmployees ? { enableFormerEmployees } : {}),\n\t\t})),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\tconst url = this.customUrl() || this.defaultUrl();\n\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)));\n\t}\n\n\tprotected getMe(): Observable<T | null> {\n\t\tconst url = this.customUrl() || this.defaultUrl();\n\n\t\tconst params = {\n\t\t\tid: this.currentUserId,\n\t\t\tfields: this.#userFields,\n\t\t\t...(this._filters() ?? {}),\n\t\t\t...(this._operationIds() ? { operationIds: this._operationIds().join(',') } : {}),\n\t\t\t...(this._appInstanceId() ? { appInstanceId: this._appInstanceId() } : {}),\n\t\t\t...(this._enableFormerEmployees() ? { enableFormerEmployees: this._enableFormerEmployees() } : {}),\n\t\t};\n\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(url, {\n\t\t\t\tparams,\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)[0] ?? null));\n\t}\n\n\tprotected override buildOptions(): Observable<T[]> {\n\t\tconst hasClue$ = this.clue$.pipe(map((clue) => !!clue));\n\t\tconst displayMe$ = combineLatest([hasClue$, this.displayMeOption$]).pipe(\n\t\t\tmap(([hasClue, displayMeOption]) => displayMeOption && !hasClue),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\n\t\t// Wait for the first time the panel is open to get the current user\n\t\tconst me$ = this.select.isPanelOpen$.pipe(\n\t\t\tfilter((isOpen) => isOpen),\n\t\t\ttake(1),\n\t\t\tswitchMap((isOpen) => (isOpen ? this.getMe() : EMPTY)),\n\t\t\tshareReplay({ bufferSize: 1, refCount: true }),\n\t\t);\n\n\t\tconst options$ = super.buildOptions();\n\n\t\treturn displayMe$.pipe(\n\t\t\tswitchMap((displayMe) => combineLatest([options$, displayMe ? me$ : of(null)])),\n\t\t\tmap(([options, me]) => (me ? [me, ...(options ?? []).filter((o) => o.id !== me.id)] : options)),\n\t\t\tswitchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)),\n\t\t);\n\t}\n\n\tprotected override optionComparer = (a: T, b: T) => a.id === b.id;\n}\n\nfunction sanitizeClueFilter(clue: string) {\n\treturn clue\n\t\t.split(' ')\n\t\t.map((c: string) => encodeURIComponent(c))\n\t\t.join(',');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;AAEO,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAAS,2BAA2B,CAAC,CAAC;AAEhG,SAAU,8BAA8B,CAAC,OAAqB,EAAA;IACnE,OAAO;AACN,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,UAAU,EAAE,OAAO;KACnB,CAAC;AACH;;MCQa,wBAAwB,CAAA;AAVrC,IAAA,WAAA,GAAA;AAWW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAqC,iBAAiB,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC7D,KAAA;8GAHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAP1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAQhC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC;AAC7C,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,CAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;;;MCRY,+BAA+B,CAAA;AAD5C,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAgEpC,KAAA;IA9DU,eAAe,CAA6B,KAAU,EAAE,MAAuB,EAAA;QACxF,MAAM,eAAe,GAAwB,EAAE,CAAC;AAEhD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzC,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;QAED,OAAO,IAAI,GAAG,CACb,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aACnC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAC3B,CAAC;KACF;IAEM,cAAc,CAA6B,KAAU,EAAE,MAAuB,EAAA;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAErD,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACjB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,qBAAqB,KAAI;AAC7B,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACzB,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACvB,OAAO;AACN,wBAAA,GAAG,IAAI;AACP,wBAAA,qBAAqB,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;qBACrD,CAAC;AACF,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,CAChB,CAAC;KACF;AAES,IAAA,gCAAgC,CAA6B,QAAa,EAAA;AACnF,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,IAAI;aACd,GAAG,CAA0E,eAAe,EAAE;AAC9F,YAAA,MAAM,EAAE;AACP,gBAAA,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACrB,gBAAA,MAAM,EAAE,oBAAoB;AAC5B,aAAA;SACD,CAAC;AACD,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5B,GAAG,CAAC,CAAC,KAAK,KACT,KAAK,CAAC,MAAM,CACX,CAAC,GAAG,EAAE,IAAI,MAAM;AACf,YAAA,GAAG,GAAG;YACN,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE;AACtC,SAAA,CAAC,EACF,EAAE,CACF,CACD,CACD,CAAC;KACH;8GAhEW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACJ3B,MAAM,gCAAgC,GAAG,IAAI,cAAc,CAAC,8BAA8B,EAAE;AAClG,IAAA,OAAO,EAAE,MAAM,4BAA4B;AAC3C,CAAA,CAAC,CAAC;AAMI,MAAM,4BAA4B,GAAiD;AACzF,IAAA,EAAE,EAAE;AACH,QAAA,EAAE,EAAE,KAAK;AACT,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,EAAE,EAAE,OAAO;AACX,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,EAAE,EAAE,MAAM;AACV,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,EAAE,EAAE,MAAM;AACV,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,EAAE,EAAE,KAAK;AACT,KAAA;CACD;;MCSY,qBAAqB,CAAA;AA1BlC,IAAA,WAAA,GAAA;AA2BW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAqC,iBAAiB,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,IAAI,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAClE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EACzC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CACpB,CAAC;AACF,KAAA;8GARY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAvBvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAZS,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAwBhC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;+BACC,gBAAgB,EAAA,OAAA,EACjB,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,EACnC,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,CAAA,CAAA,EAAA,UAAA,EACW,IAAI,EAAA,MAAA,EAAA,CAAA,uFAAA,CAAA,EAAA,CAAA;;;ACLX,MAAO,0BAA0E,SAAQ,yBAA4B,CAAA;AAC1H,IAAA,iBAAiB,CAA0B;AAC3C,IAAA,uBAAuB,CAAgC;AACvD,IAAA,oBAAoB,CAA2C;;AAG/D,IAAA,WAAW,CAAwC;IAKnD,IACW,GAAG,CAAC,GAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IACW,YAAY,CAAC,GAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,IACW,aAAa,CAAC,EAAiB,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC5B;IAED,IACW,qBAAqB,CAAC,KAAc,EAAA;AAC9C,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,IACW,eAAe,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAW,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC/B;IAED,IACW,aAAa,CAAC,MAAuB,EAAA;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;KAC5B;AAID,IAAA,IAAW,aAAa,GAAA;QACvB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC3B;IAED,IACW,OAAO,CAAC,OAAkD,EAAA;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3B;AAID,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE,CAAC;QA1DT,IAAiB,CAAA,iBAAA,GAAG,sBAAsB,CAAC;QAC3C,IAAuB,CAAA,uBAAA,GAAG,4BAA4B,CAAC;AACvD,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;;QAG/D,IAAW,CAAA,WAAA,GAAG,oCAAoC,CAAC;AAEzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAoCtD,QAAA,IAAA,CAAA,cAAc,GAAoB,iBAAiB,CAAC,SAAS,CAAC;AAW5D,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAQnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA4C,EAAE,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7I,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAO,CAAA,OAAA,GAA0D,aAAa,CAAC;AACjG,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK;AACV,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;SACzC,CAAC,CAAC,IAAI,CACN,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,CAAC,MAAM;YACtF,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,GAAG,OAAO;AACV,YAAA,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;AAC9B,YAAA,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;AAClD,YAAA,IAAI,YAAY,GAAG,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;AAChE,YAAA,IAAI,aAAa,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE;AAC1C,YAAA,IAAI,qBAAqB,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE;SAC1D,CAAC,CAAC,CACH,CAAC;AA0DiB,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,CAAI,EAAE,CAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAzFjE,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,wBAAwB,CAAC;KAChD;IA+BkB,UAAU,CAAC,MAAiD,EAAE,IAAY,EAAA;QAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAElD,OAAO,IAAI,CAAC,UAAU;aACpB,GAAG,CAAwC,GAAG,EAAE;AAChD,YAAA,MAAM,EAAE;AACP,gBAAA,GAAG,MAAM;gBACT,MAAM,EAAE,CAAG,EAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA;AAClD,aAAA;SACD,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7D;IAES,KAAK,GAAA;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AAElD,QAAA,MAAM,MAAM,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,aAAa;YACtB,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YACzB,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;YAChF,IAAI,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE;YACzE,IAAI,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE;SACjG,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU;aACpB,GAAG,CAAwC,GAAG,EAAE;YAChD,MAAM;SACN,CAAC;AACD,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;KACxE;IAEkB,YAAY,GAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,eAAe,IAAI,CAAC,OAAO,CAAC,EAChE,oBAAoB,EAAE,CACtB,CAAC;;AAGF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CACxC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAC1B,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,EACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC9C,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAEtC,OAAO,UAAU,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC/E,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAC/F,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CACzF,CAAC;KACF;8GAnJW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;;AAGV,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACnB,iBAAA,CAAA;wDAaW,GAAG,EAAA,CAAA;sBADb,KAAK;gBAMK,YAAY,EAAA,CAAA;sBADtB,KAAK;gBAMK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBAMK,qBAAqB,EAAA,CAAA;sBAD/B,KAAK;gBAMK,eAAe,EAAA,CAAA;sBADzB,KAAK;gBAUK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBAYK,OAAO,EAAA,CAAA;sBADjB,KAAK;;AAqGP,SAAS,kBAAkB,CAAC,IAAY,EAAA;AACvC,IAAA,OAAO,IAAI;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAS,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;;ACjLA;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-core-select-user.mjs","sources":["../../../packages/ng/core-select/user/me.provider.ts","../../../packages/ng/core-select/user/user-displayer.component.ts","../../../packages/ng/core-select/user/user-homonym.service.ts","../../../packages/ng/core-select/user/user.translate.ts","../../../packages/ng/core-select/user/user-option.component.ts","../../../packages/ng/core-select/user/users.directive.ts","../../../packages/ng/core-select/user/lucca-front-ng-core-select-user.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LU_CORE_SELECT_CURRENT_USER_ID = new InjectionToken<number>('LuCoreSelectCurrentUserId');\n\nexport function provideCoreSelectCurrentUserId(factory: () => number): Provider {\n\treturn {\n\t\tprovide: LU_CORE_SELECT_CURRENT_USER_ID,\n\t\tuseFactory: factory,\n\t};\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-displayer',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t{{ user | luUserDisplay : userDirective.displayFormat }}\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n})\nexport class LuUserDisplayerComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { LuDisplayFormat, luUserDisplay } from '@lucca-front/ng/user';\nimport { Observable, map, of, startWith, tap } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Injectable({ providedIn: 'root' })\nexport class LuCoreSelectUserHomonymsService {\n\tprotected http = inject(HttpClient);\n\tprotected cache: Record<number, string> = {};\n\n\tprotected extractHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Set<T> {\n\t\tconst usersByFullName: Record<string, T[]> = {};\n\n\t\tfor (const user of users) {\n\t\t\tconst name = luUserDisplay(user, format);\n\t\t\tusersByFullName[name] ||= [];\n\t\t\tusersByFullName[name].push(user);\n\t\t}\n\n\t\treturn new Set(\n\t\t\tObject.values(usersByFullName)\n\t\t\t\t.filter((users) => users.length > 1)\n\t\t\t\t.flatMap((users) => users),\n\t\t);\n\t}\n\n\tpublic handleHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Observable<T[]> {\n\t\tconst homonyms = this.extractHomonyms(users, format);\n\n\t\tif (homonyms.size === 0) {\n\t\t\treturn of(users);\n\t\t}\n\n\t\treturn this.getAdditionalInformationByUserId(Array.from(homonyms)).pipe(\n\t\t\tmap((additionalInformation) => {\n\t\t\t\treturn users.map((user) => {\n\t\t\t\t\tif (homonyms.has(user)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\tadditionalInformation: this.cache[user.id] || additionalInformation[user.id],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn user;\n\t\t\t\t});\n\t\t\t}),\n\t\t\tstartWith(users),\n\t\t);\n\t}\n\n\tprotected getAdditionalInformationByUserId<T extends LuCoreSelectUser>(homonyms: T[]): Observable<Record<number, string>> {\n\t\tconst userIds = homonyms.map((user) => user.id).filter((id) => !this.cache[id]);\n\n\t\tif (userIds.length === 0) {\n\t\t\treturn of({});\n\t\t}\n\n\t\treturn this.http\n\t\t\t.get<ILuApiCollectionResponse<{ id: number; department?: { name: string } }>>(`/api/v3/users`, {\n\t\t\t\tparams: {\n\t\t\t\t\tid: userIds.join(','),\n\t\t\t\t\tfields: 'id,department.name',\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((res) => res.data.items),\n\t\t\t\tmap((infos) =>\n\t\t\t\t\tinfos.reduce<Record<number, string>>(\n\t\t\t\t\t\t(acc, info) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[info.id]: info.department?.name || '',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\ttap((infos) => {\n\t\t\t\t\tthis.cache = {\n\t\t\t\t\t\t...this.cache,\n\t\t\t\t\t\t...infos,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t}\n}\n","import { InjectionToken } from '@angular/core';\nimport { ILuTranslation } from '@lucca-front/ng/core';\n\nexport const LU_CORE_SELECT_USER_TRANSLATIONS = new InjectionToken('LuCoreSelectUserTranslations', {\n\tfactory: () => luCoreSelectUserTranslations,\n});\n\nexport interface LuCoreSelectUserTranslations {\n\tme: string;\n}\n\nexport const luCoreSelectUserTranslations: ILuTranslation<LuCoreSelectUserTranslations> = {\n\ten: {\n\t\tme: 'Me:',\n\t},\n\tfr: {\n\t\tme: 'Moi :',\n\t},\n\tes: {\n\t\tme: 'Yo :',\n\t},\n\tde: {\n\t\tme: 'Ich:',\n\t},\n\tpt: {\n\t\tme: 'Eu:',\n\t},\n};\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { map, startWith } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-option',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<div *ngIf=\"userDirective.displayMeOption && user.id === userDirective.currentUserId && hasEmptyClue$ | async; else notMe\">\n\t\t\t\t<b>{{ intl.me }} {{ user | luUserDisplay : userDirective.displayFormat }}</b>\n\t\t\t</div>\n\n\t\t\t<ng-template #notMe>\n\t\t\t\t<div>{{ user | luUserDisplay : userDirective.displayFormat }}</div>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-select-additionalInformation\" *ngIf=\"user.additionalInformation\">({{ user.additionalInformation }})</div>\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n\tstyles: [\n\t\t`\n\t\t\t.lu-select-additionalInformation {\n\t\t\t\tfont-size: 80%;\n\t\t\t\tfont-style: italic;\n\t\t\t\tmargin-top: -0.25em;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class LuUserOptionComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n\tprotected intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\tprotected hasEmptyClue$ = this.userDirective.select.clueChange.pipe(\n\t\tstartWith(this.userDirective.select.clue),\n\t\tmap((clue) => !clue),\n\t);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, Input, computed, inject, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { LuDisplayFormat, LuDisplayFullname } from '@lucca-front/ng/user';\nimport { EMPTY, Observable, combineLatest, distinctUntilChanged, filter, map, of, shareReplay, switchMap, take } from 'rxjs';\nimport { LU_CORE_SELECT_CURRENT_USER_ID } from './me.provider';\nimport { LuUserDisplayerComponent } from './user-displayer.component';\nimport { LuCoreSelectUserHomonymsService } from './user-homonym.service';\nimport { LuUserOptionComponent } from './user-option.component';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[users],lu-multi-select[users]',\n\tstandalone: true,\n\texportAs: 'luUsers',\n})\nexport class LuCoreSelectUsersDirective<T extends LuCoreSelectUser = LuCoreSelectUser> extends ALuCoreSelectApiDirective<T> {\n\t#defaultSearchUrl = '/api/v3/users/search';\n\t#defaultScopedSearchUrl = '/api/v3/users/scopedsearch';\n\t#userHomonymsService = inject(LuCoreSelectUserHomonymsService);\n\n\t// Not overridable so it will ease employee API migration\n\t#userFields = 'id,firstName,lastName,picture.href';\n\n\tprotected httpClient = inject(HttpClient);\n\tpublic currentUserId = inject(LU_CORE_SELECT_CURRENT_USER_ID);\n\n\t@Input()\n\tpublic set url(url: string | null) {\n\t\tthis.customUrl.set(url);\n\t}\n\n\t@Input()\n\tpublic set operationIds(ids: number[] | null) {\n\t\tthis._operationIds.set(ids);\n\t}\n\n\t@Input()\n\tpublic set appInstanceId(id: number | null) {\n\t\tthis._appInstanceId.set(id);\n\t}\n\n\t@Input()\n\tpublic set enableFormerEmployees(value: boolean) {\n\t\tthis._enableFormerEmployees.set(value);\n\t}\n\n\t@Input()\n\tpublic set displayMeOption(value: boolean) {\n\t\tthis._displayMeOption.set(value);\n\t}\n\n\tpublic get displayMeOption() {\n\t\treturn this._displayMeOption();\n\t}\n\n\t@Input()\n\tpublic set displayFormat(format: LuDisplayFormat) {\n\t\tthis.displayFormat = format;\n\t}\n\n\tprivate _displayFormat: LuDisplayFormat = LuDisplayFullname.lastfirst;\n\n\tpublic get displayFormat() {\n\t\treturn this._displayFormat;\n\t}\n\n\t@Input()\n\tpublic set filters(filters: Record<string, string | number | boolean>) {\n\t\tthis._filters.set(filters);\n\t}\n\n\tprotected _url = signal<string | null>(null);\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.select.optionTpl = LuUserOptionComponent;\n\t\tthis.select.valueTpl = LuUserDisplayerComponent;\n\t}\n\n\tprotected _orderBy = signal<string | null>(null);\n\tprotected _filters = signal<Record<string, string | number | boolean>>({});\n\tprotected _operationIds = signal<number[] | null>(null);\n\tprotected _appInstanceId = signal<number | null>(null);\n\tprotected _enableFormerEmployees = signal<boolean>(false);\n\tprotected defaultUrl = computed(() => (this._appInstanceId() && this._operationIds()?.length ? this.#defaultScopedSearchUrl : this.#defaultSearchUrl));\n\tprotected customUrl = signal<string | null>(null);\n\tprotected _displayMeOption = signal<boolean>(true);\n\tprotected displayMeOption$ = toObservable(this._displayMeOption);\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = combineLatest([\n\t\ttoObservable(this._filters),\n\t\ttoObservable(this._orderBy),\n\t\tthis.clue$,\n\t\ttoObservable(this._operationIds),\n\t\ttoObservable(this._appInstanceId),\n\t\ttoObservable(this._enableFormerEmployees),\n\t]).pipe(\n\t\tmap(([filters, orderBy, clue, operationIds, appInstanceId, enableFormerEmployees]) => ({\n\t\t\tfields: this.#userFields,\n\t\t\t...filters,\n\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t...(clue ? { clue: sanitizeClueFilter(clue) } : {}),\n\t\t\t...(operationIds ? { operations: operationIds.join(',') } : {}),\n\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t...(enableFormerEmployees ? { enableFormerEmployees } : {}),\n\t\t})),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\tconst url = this.customUrl() || this.defaultUrl();\n\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)));\n\t}\n\n\tprotected getMe(): Observable<T | null> {\n\t\tconst url = this.customUrl() || this.defaultUrl();\n\n\t\tconst params = {\n\t\t\tid: this.currentUserId,\n\t\t\tfields: this.#userFields,\n\t\t\t...(this._filters() ?? {}),\n\t\t\t...(this._operationIds() ? { operationIds: this._operationIds().join(',') } : {}),\n\t\t\t...(this._appInstanceId() ? { appInstanceId: this._appInstanceId() } : {}),\n\t\t\t...(this._enableFormerEmployees() ? { enableFormerEmployees: this._enableFormerEmployees() } : {}),\n\t\t};\n\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(url, {\n\t\t\t\tparams,\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)[0] ?? null));\n\t}\n\n\tprotected override buildOptions(): Observable<T[]> {\n\t\tconst hasClue$ = this.clue$.pipe(map((clue) => !!clue));\n\t\tconst displayMe$ = combineLatest([hasClue$, this.displayMeOption$]).pipe(\n\t\t\tmap(([hasClue, displayMeOption]) => displayMeOption && !hasClue),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\n\t\t// Wait for the first time the panel is open to get the current user\n\t\tconst me$ = this.select.isPanelOpen$.pipe(\n\t\t\tfilter((isOpen) => isOpen),\n\t\t\ttake(1),\n\t\t\tswitchMap((isOpen) => (isOpen ? this.getMe() : EMPTY)),\n\t\t\tshareReplay({ bufferSize: 1, refCount: true }),\n\t\t);\n\n\t\tconst meFilter$ = displayMe$.pipe(switchMap((displayMe) => (displayMe ? me$ : of(null))));\n\n\t\treturn combineLatest([super.buildOptions(), meFilter$]).pipe(\n\t\t\tmap(([options, meFilter]) => (meFilter ? [meFilter, ...(options ?? []).filter((o) => o.id !== meFilter.id)] : options)),\n\t\t\tswitchMap((users) => this.#userHomonymsService.handleHomonyms(users, this.displayFormat)),\n\t\t);\n\t}\n\n\tprotected override optionComparer = (a: T, b: T) => a.id === b.id;\n}\n\nfunction sanitizeClueFilter(clue: string) {\n\treturn clue\n\t\t.split(' ')\n\t\t.map((c: string) => encodeURIComponent(c))\n\t\t.join(',');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, InjectionToken, inject, Component, TemplateRef, Pipe, ViewContainerRef, Injector, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, HostBinding, ViewChild, EventEmitter, booleanAttribute, Output, HostListener, Injectable } from '@angular/core';
3
3
  import { OverlayContainer, Overlay } from '@angular/cdk/overlay';
4
- import { BehaviorSubject, asyncScheduler, observeOn, ReplaySubject, Subject, map, distinctUntilChanged, skip, take, switchMap, startWith, of } from 'rxjs';
4
+ import { BehaviorSubject, asyncScheduler, observeOn, ReplaySubject, Subject, take, switchMap, map, distinctUntilChanged, skip, startWith, of } from 'rxjs';
5
5
  import { AsyncPipe, NgIf, DOCUMENT } from '@angular/common';
6
6
  import { PortalDirective } from '@lucca-front/ng/core';
7
7
  import { Platform } from '@angular/cdk/platform';
@@ -430,11 +430,18 @@ class ALuSelectInputComponent {
430
430
  onKeyDownNavigation($event) {
431
431
  switch ($event.key) {
432
432
  case 'Escape':
433
+ if (this.isPanelOpen) {
434
+ $event.stopPropagation();
435
+ }
436
+ this.panelRef?.close();
437
+ break;
433
438
  case 'Tab':
434
439
  this.panelRef?.close();
435
440
  break;
436
441
  case 'Enter':
437
442
  if (this.isPanelOpen) {
443
+ // Prevent form submission when selecting a value with Enter
444
+ $event.preventDefault();
438
445
  this.panelRef.selectCurrentlyHighlightedValue();
439
446
  }
440
447
  else {
@@ -500,8 +507,8 @@ class ALuSelectInputComponent {
500
507
  return;
501
508
  }
502
509
  this.panelRef.valueChanged.subscribe((value) => this.updateValue(value));
503
- this.panelRef.nextPage.subscribe(() => this.nextPage.emit());
504
- this.panelRef.previousPage.subscribe(() => this.previousPage.emit());
510
+ this.#pageChanged(this.panelRef.nextPage).subscribe(() => this.nextPage.emit());
511
+ this.#pageChanged(this.panelRef.previousPage).subscribe(() => this.previousPage.emit());
505
512
  this.panelRef.activeOptionIdChanged.subscribe((optionId) => {
506
513
  this.activeDescendant$.next(optionId);
507
514
  this.changeDetectorRef.markForCheck();
@@ -541,6 +548,10 @@ class ALuSelectInputComponent {
541
548
  this.onChange?.(value);
542
549
  this.onTouched?.();
543
550
  }
551
+ // Ensure nextPage/previousPage does not emit too often
552
+ #pageChanged(pageEmitter) {
553
+ return this.options$.pipe(switchMap(() => pageEmitter.pipe(take(1))));
554
+ }
544
555
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: ALuSelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
545
556
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.2", type: ALuSelectInputComponent, inputs: { placeholder: "placeholder", clearable: ["clearable", "clearable", booleanAttribute], overlayConfig: "overlayConfig", loading: "loading", options: "options", optionComparer: "optionComparer", optionTpl: "optionTpl", valueTpl: "valueTpl" }, outputs: { clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage" }, host: { listeners: { "click": "onClickOpenPanel($event)", "keydown": "onKeyDownNavigation($event)" }, properties: { "class.is-clearable": "this.clearable", "class.is-selected": "this.isSelectedClass", "class.is-searchFilled": "this.isSearchFilledClass" } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0 }); }
546
557
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-core-select.mjs","sources":["../../../packages/ng/core-select/displayer/displayer.directive.ts","../../../packages/ng/core-select/option/option.token.ts","../../../packages/ng/core-select/option/default-option.component.ts","../../../packages/ng/core-select/option/disabled.directive.ts","../../../packages/ng/core-select/option/group.directive.ts","../../../packages/ng/core-select/option/group.pipe.ts","../../../packages/ng/core-select/option/option-outlet.directive.ts","../../../packages/ng/core-select/select.model.ts","../../../packages/ng/core-select/option/option.component.ts","../../../packages/ng/core-select/option/option.component.html","../../../packages/ng/core-select/option/option.directive.ts","../../../packages/ng/core-select/input/select-input.component.ts","../../../packages/ng/core-select/input/select-input.models.ts","../../../packages/ng/core-select/panel/panel.models.ts","../../../packages/ng/core-select/panel/panel.utils.ts","../../../packages/ng/core-select/lucca-front-ng-core-select.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input';\nimport { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luDisplayer]',\n\tstandalone: true,\n})\nexport class LuDisplayerDirective<TOption, TValue> {\n\t@Input('luDisplayerSelect') set select(select: ALuSelectInputComponent<TOption, TValue>) {\n\t\tselect.valueTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuDisplayerDirective<TOption, TValue>, ctx: unknown): ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface ILuOptionContext<T> {\n\tisDisabled$: BehaviorSubject<boolean>;\n\toption$: BehaviorSubject<T | undefined>;\n\tdestroy(): void;\n}\n\nexport const LU_OPTION_CONTEXT = new InjectionToken<ILuOptionContext<unknown>>('LuOptionContext');\n\nfunction optionContextFactory<T>(): ILuOptionContext<T> {\n\tconst isDisabled$ = new BehaviorSubject(false);\n\tconst option$ = new BehaviorSubject<T | undefined>(undefined);\n\treturn {\n\t\tisDisabled$,\n\t\toption$,\n\t\tdestroy(): void {\n\t\t\tisDisabled$.complete();\n\t\t\toption$.complete();\n\t\t},\n\t};\n}\n\nexport function provideOptionContext(): Provider {\n\treturn {\n\t\tprovide: LU_OPTION_CONTEXT,\n\t\tuseFactory: optionContextFactory,\n\t};\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\n@Component({\n\tselector: 'lu-simple-select-default-option',\n\tstandalone: true,\n\timports: [AsyncPipe, NgIf],\n\ttemplate: `<ng-container *ngIf=\"context.option$ | async as option\">{{ option?.name ?? option }}</ng-container>`,\n})\nexport class LuSimpleSelectDefaultOptionComponent {\n\tpublic context = inject<ILuOptionContext<{ name?: string }>>(LU_OPTION_CONTEXT);\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { LU_OPTION_CONTEXT } from './option.token';\n\n@Directive({\n\tselector: '[luDisabledOption]',\n\tstandalone: true,\n})\nexport class LuDisabledOptionDirective {\n\tprivate context = inject(LU_OPTION_CONTEXT);\n\n\t@Input('luDisabledOption') public set isDisabled(disabled: boolean | null) {\n\t\tif (disabled !== null) {\n\t\t\tthis.context.isDisabled$.next(disabled);\n\t\t}\n\t}\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionGroupByContext } from '../select.model';\n\nexport interface LuOptionGrouping<TOption, TGroup> {\n\tselector: (option: TOption) => TGroup;\n\tcontent: PortalContent<LuOptionGroupByContext<TOption, TGroup>>;\n}\n\n@Directive({\n\tselector: '[luOptionGroup]',\n\tstandalone: true,\n})\nexport class LuOptionGroupDirective<TOption, TValue, TGroup> implements LuOptionGrouping<TOption, TGroup>, OnInit {\n\t@Input('luOptionGroupSelect') select: ALuSelectInputComponent<TOption, TValue>;\n\n\t@Input('luOptionGroupBy') selector: (option: TOption) => TGroup;\n\n\treadonly content = inject<TemplateRef<LuOptionGroupByContext<TOption, TGroup>>>(TemplateRef);\n\n\tpublic static ngTemplateContextGuard<TOption, TValue, TGroup>(_dir: LuOptionGroupDirective<TOption, TValue, TGroup>, ctx: unknown): ctx is LuOptionGroupByContext<TOption, TGroup> {\n\t\treturn true;\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tthis.select.grouping = this;\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionGroup } from '../select.model';\n\n/**\n * Generate groups with a O(n) complexity. Note that the options must be sorted by group.\n */\nexport function generateGroups<T, TGroup>(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] {\n\tif (!options?.length) {\n\t\treturn [];\n\t}\n\n\tconst groups: Array<LuOptionGroup<T, TGroup>> = [];\n\tlet group: LuOptionGroup<T, TGroup>;\n\n\tfor (const option of options) {\n\t\tconst groupKey = selector(option);\n\t\tif (!group || group.key !== groupKey) {\n\t\t\tif (group) {\n\t\t\t\tgroups.push(group);\n\t\t\t}\n\t\t\tgroup = { key: groupKey, options: [option] };\n\t\t} else {\n\t\t\tgroup.options.push(option);\n\t\t}\n\t}\n\n\tif (group) {\n\t\tgroups.push(group);\n\t}\n\n\treturn groups;\n}\n\n@Pipe({\n\tname: 'luOptionGroup',\n\tstandalone: true,\n})\nexport class LuOptionGroupPipe<T, TGroup> implements PipeTransform {\n\tpublic transform(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[];\n\tpublic transform(options: T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>;\n\tpublic transform(options: T[] | T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] | LuOptionGroup<T, TGroup> {\n\t\treturn Array.isArray(options) ? generateGroups(options, selector) : generateGroups([options], selector)[0];\n\t}\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, inject, Injector, Input, OnChanges, OnDestroy, SimpleChanges, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { LuOptionContext } from '../select.model';\nimport { LU_OPTION_CONTEXT, provideOptionContext } from './option.token';\n\n@Directive({\n\tselector: '[luOptionOutlet]',\n\tstandalone: true,\n\tproviders: [provideOptionContext()],\n})\nexport class LuOptionOutletDirective<T> implements OnChanges, OnDestroy {\n\t@Input() luOptionOutlet?: Type<unknown> | TemplateRef<LuOptionContext<T>>;\n\t@Input() luOptionOutletValue: T | undefined;\n\t@Input() luOptionShowNull = false;\n\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\tprivate injector = inject(Injector);\n\tprivate embeddedViewRef?: EmbeddedViewRef<LuOptionContext<T>>;\n\tprivate componentRef?: ComponentRef<unknown>;\n\tprivate optionContext = inject(LU_OPTION_CONTEXT);\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['luOptionOutlet'] || !this.luOptionOutletValue) {\n\t\t\tthis.clearContainer();\n\t\t}\n\n\t\tconst hasRef = this.embeddedViewRef || this.componentRef;\n\n\t\tif (changes['luOptionOutlet'] || (changes['luOptionOutletValue'].currentValue && !hasRef)) {\n\t\t\tconst newValue = changes['luOptionOutletValue'].currentValue as T | undefined;\n\t\t\tif (newValue !== null && newValue !== undefined) {\n\t\t\t\tthis.createComponent();\n\t\t\t}\n\t\t} else if (changes['luOptionOutletValue']) {\n\t\t\tthis.updateRefValue();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.optionContext.destroy();\n\t}\n\n\tprivate clearContainer(): void {\n\t\tthis.viewContainerRef.clear();\n\t\tthis.embeddedViewRef?.destroy();\n\t\tthis.componentRef?.destroy();\n\t\tthis.embeddedViewRef = undefined;\n\t\tthis.componentRef = undefined;\n\t}\n\n\tprivate createComponent(): void {\n\t\tif (!this.luOptionOutlet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.luOptionOutlet instanceof TemplateRef) {\n\t\t\tthis.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.luOptionOutlet, { $implicit: this.luOptionOutletValue }, { injector: this.injector });\n\t\t} else {\n\t\t\tthis.optionContext.option$.next(this.luOptionOutletValue);\n\t\t\tthis.componentRef = this.viewContainerRef.createComponent(this.luOptionOutlet, { injector: this.injector });\n\t\t}\n\t}\n\n\tprivate updateRefValue(): void {\n\t\tif (this.embeddedViewRef) {\n\t\t\tthis.embeddedViewRef.context = { $implicit: this.luOptionOutletValue };\n\t\t} else if (this.componentRef) {\n\t\t\tthis.optionContext.option$.next(this.luOptionOutletValue);\n\t\t}\n\t}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface LuOptionContext<T> {\n\t$implicit: T;\n}\n\nexport interface LuOptionGroupByContext<T, TGroup> {\n\t$implicit: LuOptionGroup<T, TGroup>;\n}\n\nexport interface LuOptionGroup<T, TGroup> {\n\tkey: TGroup;\n\toptions: T[];\n}\n\nexport const SELECT_ID = new InjectionToken<number>('LuSelectPanelData');\nexport const SELECT_LABEL = new InjectionToken<HTMLLabelElement | undefined>('LuSelectLabel');\nexport const SELECT_LABEL_ID = new InjectionToken<string>('LuSelectLabelId');\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Input, OnDestroy, TemplateRef, Type, ViewChild, inject } from '@angular/core';\nimport { PortalDirective } from '@lucca-front/ng/core';\nimport { BehaviorSubject, Subscription, asyncScheduler, observeOn } from 'rxjs';\nimport { LuOptionContext, SELECT_ID } from '../select.model';\nimport { LuOptionGrouping } from './group.directive';\nimport { LuOptionGroupPipe } from './group.pipe';\nimport { LuOptionOutletDirective } from './option-outlet.directive';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\nexport const MAGIC_OPTION_SCROLL_DELAY = 15;\n\n@Component({\n\tselector: 'lu-select-option',\n\ttemplateUrl: './option.component.html',\n\tstyleUrls: ['./option.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [AsyncPipe, LuOptionOutletDirective, NgIf, PortalDirective, LuOptionGroupPipe],\n})\nexport class LuOptionComponent<T> implements Highlightable, AfterViewInit, OnDestroy {\n\t@HostBinding('class.optionItem')\n\tpublic hasOptionItemClass = true;\n\n\t@Input()\n\tpublic optionTpl: TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined;\n\n\t@Input()\n\t@HostBinding('attr.aria-selected')\n\tisSelected = false;\n\n\t@Input() option?: T;\n\t@Input() grouping?: LuOptionGrouping<T, unknown>;\n\n\t@Input()\n\tpublic optionIndex = 0;\n\n\t@Input()\n\tscrollIntoViewOptions: ScrollIntoViewOptions = {};\n\n\tisHighlighted$ = new BehaviorSubject(false);\n\n\t/**\n\t * Whether option is disabled. Used by ListKeyManager.\n\t */\n\tdisabled = false;\n\n\t@ViewChild(LuOptionOutletDirective, { read: LU_OPTION_CONTEXT, static: true })\n\tprivate optionContext?: ILuOptionContext<T>;\n\n\tprivate cdr = inject(ChangeDetectorRef);\n\tprivate subscription?: Subscription;\n\n\t@HostBinding('attr.role')\n\tpublic role = 'option';\n\n\t@HostBinding('attr.id')\n\tpublic get id(): string {\n\t\treturn `lu-select-${this.selectId}-option-${this.optionIndex}`;\n\t}\n\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected selectId = inject(SELECT_ID);\n\n\tngOnDestroy(): void {\n\t\tthis.subscription?.unsubscribe();\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.subscription = this.optionContext.isDisabled$.pipe(observeOn(asyncScheduler)).subscribe((isDisabled) => {\n\t\t\tthis.disabled = isDisabled;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tsetActiveStyles(): void {\n\t\tthis.isHighlighted$.next(true);\n\t\t// Somehow, adding this small delay works, even tho 0ms delay doesn't, I think there's\n\t\t// a race condition somewhere that I can't find so this will just fix it for now.\n\t\tsetTimeout(() => {\n\t\t\tthis.elementRef.nativeElement.scrollIntoView(this.scrollIntoViewOptions);\n\t\t}, MAGIC_OPTION_SCROLL_DELAY);\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis.isHighlighted$.next(false);\n\t}\n\n\tselectOption($event: Event): void {\n\t\tif (this.disabled) {\n\t\t\t$event.stopPropagation();\n\t\t}\n\t}\n}\n","<div\n\tclass=\"optionItem-value\"\n\t[class.is-selected]=\"isSelected\"\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\n\t[class.is-disabled]=\"disabled\"\n\t(click)=\"selectOption($event)\"\n>\n\t<ng-container *luOptionOutlet=\"optionTpl; value: option\" />\n\n\t<div *ngIf=\"grouping\" class=\"optionItem-value-group\">\n\t\t<ng-container *luPortal=\"grouping.content; context: { $implicit: option | luOptionGroup:grouping.selector }\" />\n\t</div>\n</div>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOption]',\n\tstandalone: true,\n})\nexport class LuOptionDirective<TOption, TValue> {\n\t@Input('luOptionSelect') set select(select: ALuSelectInputComponent<TOption, TValue>) {\n\t\tselect.optionTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuOptionDirective<TOption, TValue>, ctx: unknown): ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';\nimport {\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tTemplateRef,\n\tType,\n\tViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { LuOptionGrouping, LuSimpleSelectDefaultOptionComponent } from '../option';\nimport { LuSelectPanelRef } from '../panel';\nimport { LuOptionContext, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\nimport { ControlValueAccessor } from '@angular/forms';\n\n@Directive()\nexport abstract class ALuSelectInputComponent<TOption, TValue> implements OnDestroy, OnInit, ControlValueAccessor {\n\t@ViewChild('inputElement')\n\tprivate inputElementRef: ElementRef<HTMLInputElement>;\n\n\tpublic placeholder$ = new BehaviorSubject('');\n\n\tpublic disabled$ = new BehaviorSubject(false);\n\n\t@Input()\n\tset placeholder(value: string) {\n\t\tthis.placeholder$.next(value);\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\t@HostBinding('class.is-clearable')\n\tclearable = false;\n\n\tget searchable(): boolean {\n\t\treturn this.clueChange.observed;\n\t}\n\n\t@HostBinding('class.is-selected')\n\tprotected get isSelectedClass(): boolean {\n\t\treturn this.hasValue;\n\t}\n\n\t@HostBinding('class.is-searchFilled')\n\tprotected get isSearchFilledClass(): boolean {\n\t\treturn this.clue?.length > 0;\n\t}\n\n\tprotected abstract readonly hasValue: boolean;\n\n\tpublic get isPanelOpen(): boolean {\n\t\treturn this.isPanelOpen$.value;\n\t}\n\n\tpublic isPanelOpen$ = new BehaviorSubject(false);\n\n\tpublic activeDescendant$ = new BehaviorSubject('');\n\n\tget ariaControls(): string {\n\t\treturn this.overlayContainerRef.id;\n\t}\n\n\t@Input()\n\toverlayConfig?: OverlayConfig = {\n\t\thasBackdrop: true,\n\t\tbackdropClass: 'cdk-overlay-transparent-backdrop',\n\t};\n\n\t@Input() set loading(value: boolean) {\n\t\tif (value !== this.loading) {\n\t\t\tthis.loading$.next(value);\n\t\t}\n\t}\n\n\t@Input() set options(options: TOption[]) {\n\t\tthis.options$.next(options);\n\t\tif (this.panelRef) {\n\t\t\t// We have to put it in a setTimeout so it'll be triggered AFTER the DOM is updated and not right now,\n\t\t\t// which is before the panel size has been modified by the arrival of the new options\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.panelRef.updatePosition();\n\t\t\t});\n\t\t}\n\t}\n\n\t@Input() optionComparer: (option1: TOption, option2: TOption) => boolean = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2);\n\t@Input() optionTpl?: TemplateRef<LuOptionContext<TOption>> | Type<unknown> = LuSimpleSelectDefaultOptionComponent;\n\t@Input() valueTpl?: TemplateRef<LuOptionContext<TOption>> | Type<unknown>;\n\tgrouping?: LuOptionGrouping<TOption, unknown>;\n\n\t@Output() clueChange = new EventEmitter<string>();\n\t@Output() nextPage = new EventEmitter<void>();\n\t@Output() previousPage = new EventEmitter<void>();\n\n\tpublic get value(): TValue {\n\t\treturn this._value;\n\t}\n\n\tprotected set value(value: TValue) {\n\t\tthis._value = value;\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tpublic get inputPlaceholder(): string | null {\n\t\treturn this.value ? null : this.placeholder$.value;\n\t}\n\n\tpublic clueChanged(clue: string, skipPanelOpen = false): void {\n\t\tthis.clue = clue;\n\n\t\tif (!skipPanelOpen && !this.isPanelOpen) {\n\t\t\tthis.openPanel(clue);\n\t\t} else if (this.lastEmittedClue !== clue) {\n\t\t\tthis.clueChange.emit(clue);\n\t\t\tthis.lastEmittedClue = clue;\n\t\t}\n\t}\n\n\tprotected _value?: TValue;\n\n\toptions$ = new ReplaySubject<TOption[]>(1);\n\tloading$ = new BehaviorSubject(false);\n\tclue: string | null = null;\n\t// This is the clue stored after we selected an option to know if we should emit an empty clue on open or not\n\tlastEmittedClue: string = '';\n\n\tprotected onChange?: (value: TValue | null) => void;\n\tprotected onTouched?: () => void;\n\n\tpublic get panelRef(): LuSelectPanelRef<TOption, TValue> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected _panelRef?: LuSelectPanelRef<TOption, TValue>;\n\n\tprotected destroyed$ = new Subject<void>();\n\n\t@HostListener('click', ['$event'])\n\tonClickOpenPanel($event: KeyboardEvent) {\n\t\tif (!this.isPanelOpen) {\n\t\t\tthis.openPanel();\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeyDownNavigation($event: KeyboardEvent): void {\n\t\tswitch ($event.key) {\n\t\t\tcase 'Escape':\n\t\t\tcase 'Tab':\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef.selectCurrentlyHighlightedValue();\n\t\t\t\t} else {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ' ':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowUp':\n\t\t\t\t// Initial space should just open the panel, not trigger a clue change\n\t\t\t\tif (!this.clue && $event.key === ' ') {\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.openPanel();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprotected changeDetectorRef = inject(ChangeDetectorRef);\n\tprotected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement();\n\n\tprotected labelElement: HTMLElement | undefined = inject(SELECT_LABEL);\n\tprotected labelId: string = inject(SELECT_LABEL_ID);\n\n\tregisterOnChange(onChange: (value: TValue) => void): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: () => void): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled$.next(isDisabled);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closePanel();\n\t\tthis.destroyed$.next();\n\t\tthis.destroyed$.complete();\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.labelElement) {\n\t\t\tthis.labelElement.id = this.labelId;\n\t\t}\n\t}\n\n\tclearValue(event: Event): void {\n\t\tevent.stopPropagation();\n\t\tthis.updateValue(null, true);\n\t\tthis.inputElementRef.nativeElement.focus();\n\t}\n\n\topenPanel(clue: string = ''): void {\n\t\tif (this.isPanelOpen || this.disabled$.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isPanelOpen$.next(true);\n\t\tthis.clueChanged(clue);\n\t\tthis._panelRef = this.buildPanelRef();\n\t\tthis.bindInputToPanelRefEvents();\n\t\tsetTimeout(() => this.focusInput());\n\t}\n\n\tprotected abstract buildPanelRef(): this['panelRef'];\n\n\tprotected bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.panelRef.valueChanged.subscribe((value) => this.updateValue(value));\n\t\tthis.panelRef.nextPage.subscribe(() => this.nextPage.emit());\n\t\tthis.panelRef.previousPage.subscribe(() => this.previousPage.emit());\n\t\tthis.panelRef.activeOptionIdChanged.subscribe((optionId) => {\n\t\t\tthis.activeDescendant$.next(optionId);\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t\tthis.panelRef.closed.subscribe(() => this.closePanel());\n\t}\n\n\tprotected focusInput(): void {\n\t\tif (this.inputElementRef) {\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t}\n\t}\n\n\tprotected emptyClue(): void {\n\t\tif (this.clue) {\n\t\t\tthis.clue = null;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\tpublic closePanel(): void {\n\t\tif (!this.isPanelOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.emptyClue();\n\t\tthis.activeDescendant$.next('');\n\t\tthis.changeDetectorRef.markForCheck();\n\t\tthis.onTouched?.();\n\t\tthis.isPanelOpen$.next(false);\n\t\tthis.panelRef.close();\n\t\tthis._panelRef = undefined;\n\t}\n\n\tpublic writeValue(value: TValue): void {\n\t\tthis.value = value;\n\t}\n\n\tpublic updateValue(value: TValue, skipPanelOpen = false): void {\n\t\tthis.value = value;\n\t\tthis.emptyClue();\n\t\tthis.clueChanged('', skipPanelOpen);\n\t\tthis.onChange?.(value);\n\t\tthis.onTouched?.();\n\t}\n}\n","import { Overlay, OverlayContainer } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Provider, inject } from '@angular/core';\nimport { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\n\nlet selectId = 0;\n\nfunction selectIdFactory(): number {\n\treturn selectId++;\n}\n\nfunction selectLabelFactory(): HTMLLabelElement | undefined {\n\tconst elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tfunction getLabel(node: HTMLElement): HTMLLabelElement | undefined {\n\t\tif (node instanceof HTMLLabelElement) {\n\t\t\treturn node;\n\t\t}\n\n\t\tif (!node.parentElement) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn getLabel(node.parentElement);\n\t}\n\n\treturn getLabel(elementRef.nativeElement);\n}\n\nfunction selectLabelIdFactory(): string {\n\treturn inject(SELECT_LABEL)?.id || `lu-select-label-${inject(SELECT_ID)}`;\n}\n\nexport function provideLuSelectLabelsAndIds(): Provider[] {\n\treturn [\n\t\t{ provide: SELECT_ID, useFactory: selectIdFactory },\n\t\t{ provide: SELECT_LABEL, useFactory: selectLabelFactory },\n\t\t{ provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory },\n\t];\n}\n\n@Injectable()\nclass LuSelectOverlayContainer extends OverlayContainer {\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tconstructor() {\n\t\tsuper(inject(DOCUMENT), inject(Platform));\n\t}\n\n\tprotected override _createContainer(): void {\n\t\tsuper._createContainer();\n\t\tthis._containerElement.setAttribute('aria-labelledby', this.selectLabelId);\n\t\tthis._containerElement.id = `lu-select-overlay-container-${this.selectId}`;\n\t}\n}\n\nexport function provideLuSelectOverlayContainer(): Provider[] {\n\treturn [\n\t\tOverlay,\n\t\t{\n\t\t\tprovide: OverlayContainer,\n\t\t\tuseClass: LuSelectOverlayContainer,\n\t\t},\n\t];\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuSelectPanelRef<TOption, TValue> {\n\tclosed = new EventEmitter<void>();\n\tpreviousPage = new EventEmitter<void>();\n\tnextPage = new EventEmitter<void>();\n\tvalueChanged = new EventEmitter<TValue>();\n\tclueChanged = new EventEmitter<string>();\n\tactiveOptionIdChanged = new EventEmitter<string>();\n\toptions$: Observable<TOption>;\n\n\tabstract updatePosition(): void;\n\n\tabstract handleKeyManagerEvent(event: KeyboardEvent): void;\n\n\tabstract emitValue(value: TValue): void;\n\n\tabstract selectCurrentlyHighlightedValue(): void;\n\n\tclose(): void {\n\t\tthis.closed.next();\n\t\tthis.closed.complete();\n\t\tthis.nextPage.complete();\n\t\tthis.previousPage.complete();\n\t\tthis.valueChanged.complete();\n\t\tthis.clueChanged.emit('');\n\t\tthis.clueChanged.complete();\n\t\tthis.activeOptionIdChanged.complete();\n\t}\n}\n","import { Observable, distinctUntilChanged, map, of, skip, startWith, switchMap, take } from 'rxjs';\n\nexport type GroupTemplateLocation = 'group-header' | 'option' | 'none';\n\n/**\n * In order to avoid a blinking when we go from empty clue to a clue\n * We need to delay the change of group displayer location by waiting for the options to be updated.\n */\nexport function getGroupTemplateLocation(hasGrouping: boolean, clueChange$: Observable<string>, options$: Observable<unknown[]>): Observable<GroupTemplateLocation> {\n\treturn hasGrouping\n\t\t? clueChange$.pipe(\n\t\t\t\tmap((clue) => !!clue),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tswitchMap((hasClue) =>\n\t\t\t\t\toptions$.pipe(\n\t\t\t\t\t\tskip(1),\n\t\t\t\t\t\ttake(1),\n\t\t\t\t\t\tmap((): GroupTemplateLocation => (hasClue ? 'option' : 'group-header')),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tstartWith('group-header' as const),\n\t\t )\n\t\t: of('none' as const);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-core-select.mjs","sources":["../../../packages/ng/core-select/displayer/displayer.directive.ts","../../../packages/ng/core-select/option/option.token.ts","../../../packages/ng/core-select/option/default-option.component.ts","../../../packages/ng/core-select/option/disabled.directive.ts","../../../packages/ng/core-select/option/group.directive.ts","../../../packages/ng/core-select/option/group.pipe.ts","../../../packages/ng/core-select/option/option-outlet.directive.ts","../../../packages/ng/core-select/select.model.ts","../../../packages/ng/core-select/option/option.component.ts","../../../packages/ng/core-select/option/option.component.html","../../../packages/ng/core-select/option/option.directive.ts","../../../packages/ng/core-select/input/select-input.component.ts","../../../packages/ng/core-select/input/select-input.models.ts","../../../packages/ng/core-select/panel/panel.models.ts","../../../packages/ng/core-select/panel/panel.utils.ts","../../../packages/ng/core-select/lucca-front-ng-core-select.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input';\nimport { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luDisplayer]',\n\tstandalone: true,\n})\nexport class LuDisplayerDirective<TOption, TValue> {\n\t@Input('luDisplayerSelect') set select(select: ALuSelectInputComponent<TOption, TValue>) {\n\t\tselect.valueTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuDisplayerDirective<TOption, TValue>, ctx: unknown): ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface ILuOptionContext<T> {\n\tisDisabled$: BehaviorSubject<boolean>;\n\toption$: BehaviorSubject<T | undefined>;\n\tdestroy(): void;\n}\n\nexport const LU_OPTION_CONTEXT = new InjectionToken<ILuOptionContext<unknown>>('LuOptionContext');\n\nfunction optionContextFactory<T>(): ILuOptionContext<T> {\n\tconst isDisabled$ = new BehaviorSubject(false);\n\tconst option$ = new BehaviorSubject<T | undefined>(undefined);\n\treturn {\n\t\tisDisabled$,\n\t\toption$,\n\t\tdestroy(): void {\n\t\t\tisDisabled$.complete();\n\t\t\toption$.complete();\n\t\t},\n\t};\n}\n\nexport function provideOptionContext(): Provider {\n\treturn {\n\t\tprovide: LU_OPTION_CONTEXT,\n\t\tuseFactory: optionContextFactory,\n\t};\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\n@Component({\n\tselector: 'lu-simple-select-default-option',\n\tstandalone: true,\n\timports: [AsyncPipe, NgIf],\n\ttemplate: `<ng-container *ngIf=\"context.option$ | async as option\">{{ option?.name ?? option }}</ng-container>`,\n})\nexport class LuSimpleSelectDefaultOptionComponent {\n\tpublic context = inject<ILuOptionContext<{ name?: string }>>(LU_OPTION_CONTEXT);\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { LU_OPTION_CONTEXT } from './option.token';\n\n@Directive({\n\tselector: '[luDisabledOption]',\n\tstandalone: true,\n})\nexport class LuDisabledOptionDirective {\n\tprivate context = inject(LU_OPTION_CONTEXT);\n\n\t@Input('luDisabledOption') public set isDisabled(disabled: boolean | null) {\n\t\tif (disabled !== null) {\n\t\t\tthis.context.isDisabled$.next(disabled);\n\t\t}\n\t}\n}\n","import { Directive, inject, Input, OnInit, TemplateRef } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionGroupByContext } from '../select.model';\n\nexport interface LuOptionGrouping<TOption, TGroup> {\n\tselector: (option: TOption) => TGroup;\n\tcontent: PortalContent<LuOptionGroupByContext<TOption, TGroup>>;\n}\n\n@Directive({\n\tselector: '[luOptionGroup]',\n\tstandalone: true,\n})\nexport class LuOptionGroupDirective<TOption, TValue, TGroup> implements LuOptionGrouping<TOption, TGroup>, OnInit {\n\t@Input('luOptionGroupSelect') select: ALuSelectInputComponent<TOption, TValue>;\n\n\t@Input('luOptionGroupBy') selector: (option: TOption) => TGroup;\n\n\treadonly content = inject<TemplateRef<LuOptionGroupByContext<TOption, TGroup>>>(TemplateRef);\n\n\tpublic static ngTemplateContextGuard<TOption, TValue, TGroup>(_dir: LuOptionGroupDirective<TOption, TValue, TGroup>, ctx: unknown): ctx is LuOptionGroupByContext<TOption, TGroup> {\n\t\treturn true;\n\t}\n\n\tpublic ngOnInit(): void {\n\t\tthis.select.grouping = this;\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionGroup } from '../select.model';\n\n/**\n * Generate groups with a O(n) complexity. Note that the options must be sorted by group.\n */\nexport function generateGroups<T, TGroup>(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] {\n\tif (!options?.length) {\n\t\treturn [];\n\t}\n\n\tconst groups: Array<LuOptionGroup<T, TGroup>> = [];\n\tlet group: LuOptionGroup<T, TGroup>;\n\n\tfor (const option of options) {\n\t\tconst groupKey = selector(option);\n\t\tif (!group || group.key !== groupKey) {\n\t\t\tif (group) {\n\t\t\t\tgroups.push(group);\n\t\t\t}\n\t\t\tgroup = { key: groupKey, options: [option] };\n\t\t} else {\n\t\t\tgroup.options.push(option);\n\t\t}\n\t}\n\n\tif (group) {\n\t\tgroups.push(group);\n\t}\n\n\treturn groups;\n}\n\n@Pipe({\n\tname: 'luOptionGroup',\n\tstandalone: true,\n})\nexport class LuOptionGroupPipe<T, TGroup> implements PipeTransform {\n\tpublic transform(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[];\n\tpublic transform(options: T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>;\n\tpublic transform(options: T[] | T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] | LuOptionGroup<T, TGroup> {\n\t\treturn Array.isArray(options) ? generateGroups(options, selector) : generateGroups([options], selector)[0];\n\t}\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, inject, Injector, Input, OnChanges, OnDestroy, SimpleChanges, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { LuOptionContext } from '../select.model';\nimport { LU_OPTION_CONTEXT, provideOptionContext } from './option.token';\n\n@Directive({\n\tselector: '[luOptionOutlet]',\n\tstandalone: true,\n\tproviders: [provideOptionContext()],\n})\nexport class LuOptionOutletDirective<T> implements OnChanges, OnDestroy {\n\t@Input() luOptionOutlet?: Type<unknown> | TemplateRef<LuOptionContext<T>>;\n\t@Input() luOptionOutletValue: T | undefined;\n\t@Input() luOptionShowNull = false;\n\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\tprivate injector = inject(Injector);\n\tprivate embeddedViewRef?: EmbeddedViewRef<LuOptionContext<T>>;\n\tprivate componentRef?: ComponentRef<unknown>;\n\tprivate optionContext = inject(LU_OPTION_CONTEXT);\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['luOptionOutlet'] || !this.luOptionOutletValue) {\n\t\t\tthis.clearContainer();\n\t\t}\n\n\t\tconst hasRef = this.embeddedViewRef || this.componentRef;\n\n\t\tif (changes['luOptionOutlet'] || (changes['luOptionOutletValue'].currentValue && !hasRef)) {\n\t\t\tconst newValue = changes['luOptionOutletValue'].currentValue as T | undefined;\n\t\t\tif (newValue !== null && newValue !== undefined) {\n\t\t\t\tthis.createComponent();\n\t\t\t}\n\t\t} else if (changes['luOptionOutletValue']) {\n\t\t\tthis.updateRefValue();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.optionContext.destroy();\n\t}\n\n\tprivate clearContainer(): void {\n\t\tthis.viewContainerRef.clear();\n\t\tthis.embeddedViewRef?.destroy();\n\t\tthis.componentRef?.destroy();\n\t\tthis.embeddedViewRef = undefined;\n\t\tthis.componentRef = undefined;\n\t}\n\n\tprivate createComponent(): void {\n\t\tif (!this.luOptionOutlet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.luOptionOutlet instanceof TemplateRef) {\n\t\t\tthis.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.luOptionOutlet, { $implicit: this.luOptionOutletValue }, { injector: this.injector });\n\t\t} else {\n\t\t\tthis.optionContext.option$.next(this.luOptionOutletValue);\n\t\t\tthis.componentRef = this.viewContainerRef.createComponent(this.luOptionOutlet, { injector: this.injector });\n\t\t}\n\t}\n\n\tprivate updateRefValue(): void {\n\t\tif (this.embeddedViewRef) {\n\t\t\tthis.embeddedViewRef.context = { $implicit: this.luOptionOutletValue };\n\t\t} else if (this.componentRef) {\n\t\t\tthis.optionContext.option$.next(this.luOptionOutletValue);\n\t\t}\n\t}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface LuOptionContext<T> {\n\t$implicit: T;\n}\n\nexport interface LuOptionGroupByContext<T, TGroup> {\n\t$implicit: LuOptionGroup<T, TGroup>;\n}\n\nexport interface LuOptionGroup<T, TGroup> {\n\tkey: TGroup;\n\toptions: T[];\n}\n\nexport const SELECT_ID = new InjectionToken<number>('LuSelectPanelData');\nexport const SELECT_LABEL = new InjectionToken<HTMLLabelElement | undefined>('LuSelectLabel');\nexport const SELECT_LABEL_ID = new InjectionToken<string>('LuSelectLabelId');\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Input, OnDestroy, TemplateRef, Type, ViewChild, inject } from '@angular/core';\nimport { PortalDirective } from '@lucca-front/ng/core';\nimport { BehaviorSubject, Subscription, asyncScheduler, observeOn } from 'rxjs';\nimport { LuOptionContext, SELECT_ID } from '../select.model';\nimport { LuOptionGrouping } from './group.directive';\nimport { LuOptionGroupPipe } from './group.pipe';\nimport { LuOptionOutletDirective } from './option-outlet.directive';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\nexport const MAGIC_OPTION_SCROLL_DELAY = 15;\n\n@Component({\n\tselector: 'lu-select-option',\n\ttemplateUrl: './option.component.html',\n\tstyleUrls: ['./option.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [AsyncPipe, LuOptionOutletDirective, NgIf, PortalDirective, LuOptionGroupPipe],\n})\nexport class LuOptionComponent<T> implements Highlightable, AfterViewInit, OnDestroy {\n\t@HostBinding('class.optionItem')\n\tpublic hasOptionItemClass = true;\n\n\t@Input()\n\tpublic optionTpl: TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined;\n\n\t@Input()\n\t@HostBinding('attr.aria-selected')\n\tisSelected = false;\n\n\t@Input() option?: T;\n\t@Input() grouping?: LuOptionGrouping<T, unknown>;\n\n\t@Input()\n\tpublic optionIndex = 0;\n\n\t@Input()\n\tscrollIntoViewOptions: ScrollIntoViewOptions = {};\n\n\tisHighlighted$ = new BehaviorSubject(false);\n\n\t/**\n\t * Whether option is disabled. Used by ListKeyManager.\n\t */\n\tdisabled = false;\n\n\t@ViewChild(LuOptionOutletDirective, { read: LU_OPTION_CONTEXT, static: true })\n\tprivate optionContext?: ILuOptionContext<T>;\n\n\tprivate cdr = inject(ChangeDetectorRef);\n\tprivate subscription?: Subscription;\n\n\t@HostBinding('attr.role')\n\tpublic role = 'option';\n\n\t@HostBinding('attr.id')\n\tpublic get id(): string {\n\t\treturn `lu-select-${this.selectId}-option-${this.optionIndex}`;\n\t}\n\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected selectId = inject(SELECT_ID);\n\n\tngOnDestroy(): void {\n\t\tthis.subscription?.unsubscribe();\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.subscription = this.optionContext.isDisabled$.pipe(observeOn(asyncScheduler)).subscribe((isDisabled) => {\n\t\t\tthis.disabled = isDisabled;\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tsetActiveStyles(): void {\n\t\tthis.isHighlighted$.next(true);\n\t\t// Somehow, adding this small delay works, even tho 0ms delay doesn't, I think there's\n\t\t// a race condition somewhere that I can't find so this will just fix it for now.\n\t\tsetTimeout(() => {\n\t\t\tthis.elementRef.nativeElement.scrollIntoView(this.scrollIntoViewOptions);\n\t\t}, MAGIC_OPTION_SCROLL_DELAY);\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis.isHighlighted$.next(false);\n\t}\n\n\tselectOption($event: Event): void {\n\t\tif (this.disabled) {\n\t\t\t$event.stopPropagation();\n\t\t}\n\t}\n}\n","<div\n\tclass=\"optionItem-value\"\n\t[class.is-selected]=\"isSelected\"\n\t[class.is-highlighted]=\"isHighlighted$ | async\"\n\t[class.is-disabled]=\"disabled\"\n\t(click)=\"selectOption($event)\"\n>\n\t<ng-container *luOptionOutlet=\"optionTpl; value: option\" />\n\n\t<div *ngIf=\"grouping\" class=\"optionItem-value-group\">\n\t\t<ng-container *luPortal=\"grouping.content; context: { $implicit: option | luOptionGroup:grouping.selector }\" />\n\t</div>\n</div>\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOption]',\n\tstandalone: true,\n})\nexport class LuOptionDirective<TOption, TValue> {\n\t@Input('luOptionSelect') set select(select: ALuSelectInputComponent<TOption, TValue>) {\n\t\tselect.optionTpl = this.templateRef;\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuOptionDirective<TOption, TValue>, ctx: unknown): ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';\nimport {\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tTemplateRef,\n\tType,\n\tViewChild,\n\tbooleanAttribute,\n\tinject,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, switchMap, take } from 'rxjs';\nimport { LuOptionGrouping, LuSimpleSelectDefaultOptionComponent } from '../option';\nimport { LuSelectPanelRef } from '../panel';\nimport { LuOptionContext, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\n\n@Directive()\nexport abstract class ALuSelectInputComponent<TOption, TValue> implements OnDestroy, OnInit, ControlValueAccessor {\n\t@ViewChild('inputElement')\n\tprivate inputElementRef: ElementRef<HTMLInputElement>;\n\n\tpublic placeholder$ = new BehaviorSubject('');\n\n\tpublic disabled$ = new BehaviorSubject(false);\n\n\t@Input()\n\tset placeholder(value: string) {\n\t\tthis.placeholder$.next(value);\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\t@HostBinding('class.is-clearable')\n\tclearable = false;\n\n\tget searchable(): boolean {\n\t\treturn this.clueChange.observed;\n\t}\n\n\t@HostBinding('class.is-selected')\n\tprotected get isSelectedClass(): boolean {\n\t\treturn this.hasValue;\n\t}\n\n\t@HostBinding('class.is-searchFilled')\n\tprotected get isSearchFilledClass(): boolean {\n\t\treturn this.clue?.length > 0;\n\t}\n\n\tprotected abstract readonly hasValue: boolean;\n\n\tpublic get isPanelOpen(): boolean {\n\t\treturn this.isPanelOpen$.value;\n\t}\n\n\tpublic isPanelOpen$ = new BehaviorSubject(false);\n\n\tpublic activeDescendant$ = new BehaviorSubject('');\n\n\tget ariaControls(): string {\n\t\treturn this.overlayContainerRef.id;\n\t}\n\n\t@Input()\n\toverlayConfig?: OverlayConfig = {\n\t\thasBackdrop: true,\n\t\tbackdropClass: 'cdk-overlay-transparent-backdrop',\n\t};\n\n\t@Input() set loading(value: boolean) {\n\t\tif (value !== this.loading) {\n\t\t\tthis.loading$.next(value);\n\t\t}\n\t}\n\n\t@Input() set options(options: TOption[]) {\n\t\tthis.options$.next(options);\n\t\tif (this.panelRef) {\n\t\t\t// We have to put it in a setTimeout so it'll be triggered AFTER the DOM is updated and not right now,\n\t\t\t// which is before the panel size has been modified by the arrival of the new options\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.panelRef.updatePosition();\n\t\t\t});\n\t\t}\n\t}\n\n\t@Input() optionComparer: (option1: TOption, option2: TOption) => boolean = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2);\n\t@Input() optionTpl?: TemplateRef<LuOptionContext<TOption>> | Type<unknown> = LuSimpleSelectDefaultOptionComponent;\n\t@Input() valueTpl?: TemplateRef<LuOptionContext<TOption>> | Type<unknown>;\n\tgrouping?: LuOptionGrouping<TOption, unknown>;\n\n\t@Output() clueChange = new EventEmitter<string>();\n\t@Output() nextPage = new EventEmitter<void>();\n\t@Output() previousPage = new EventEmitter<void>();\n\n\tpublic get value(): TValue {\n\t\treturn this._value;\n\t}\n\n\tprotected set value(value: TValue) {\n\t\tthis._value = value;\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tpublic get inputPlaceholder(): string | null {\n\t\treturn this.value ? null : this.placeholder$.value;\n\t}\n\n\tpublic clueChanged(clue: string, skipPanelOpen = false): void {\n\t\tthis.clue = clue;\n\n\t\tif (!skipPanelOpen && !this.isPanelOpen) {\n\t\t\tthis.openPanel(clue);\n\t\t} else if (this.lastEmittedClue !== clue) {\n\t\t\tthis.clueChange.emit(clue);\n\t\t\tthis.lastEmittedClue = clue;\n\t\t}\n\t}\n\n\tprotected _value?: TValue;\n\n\toptions$ = new ReplaySubject<TOption[]>(1);\n\tloading$ = new BehaviorSubject(false);\n\tclue: string | null = null;\n\t// This is the clue stored after we selected an option to know if we should emit an empty clue on open or not\n\tlastEmittedClue: string = '';\n\n\tprotected onChange?: (value: TValue | null) => void;\n\tprotected onTouched?: () => void;\n\n\tpublic get panelRef(): LuSelectPanelRef<TOption, TValue> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected _panelRef?: LuSelectPanelRef<TOption, TValue>;\n\n\tprotected destroyed$ = new Subject<void>();\n\n\t@HostListener('click', ['$event'])\n\tonClickOpenPanel($event: KeyboardEvent) {\n\t\tif (!this.isPanelOpen) {\n\t\t\tthis.openPanel();\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t}\n\n\t@HostListener('keydown', ['$event'])\n\tonKeyDownNavigation($event: KeyboardEvent): void {\n\t\tswitch ($event.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t$event.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Tab':\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t// Prevent form submission when selecting a value with Enter\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t\tthis.panelRef.selectCurrentlyHighlightedValue();\n\t\t\t\t} else {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ' ':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowUp':\n\t\t\t\t// Initial space should just open the panel, not trigger a clue change\n\t\t\t\tif (!this.clue && $event.key === ' ') {\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.openPanel();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprotected changeDetectorRef = inject(ChangeDetectorRef);\n\tprotected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement();\n\n\tprotected labelElement: HTMLElement | undefined = inject(SELECT_LABEL);\n\tprotected labelId: string = inject(SELECT_LABEL_ID);\n\n\tregisterOnChange(onChange: (value: TValue) => void): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: () => void): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled$.next(isDisabled);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closePanel();\n\t\tthis.destroyed$.next();\n\t\tthis.destroyed$.complete();\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.labelElement) {\n\t\t\tthis.labelElement.id = this.labelId;\n\t\t}\n\t}\n\n\tclearValue(event: Event): void {\n\t\tevent.stopPropagation();\n\t\tthis.updateValue(null, true);\n\t\tthis.inputElementRef.nativeElement.focus();\n\t}\n\n\topenPanel(clue: string = ''): void {\n\t\tif (this.isPanelOpen || this.disabled$.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isPanelOpen$.next(true);\n\t\tthis.clueChanged(clue);\n\t\tthis._panelRef = this.buildPanelRef();\n\t\tthis.bindInputToPanelRefEvents();\n\t\tsetTimeout(() => this.focusInput());\n\t}\n\n\tprotected abstract buildPanelRef(): this['panelRef'];\n\n\tprotected bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.panelRef.valueChanged.subscribe((value) => this.updateValue(value));\n\n\t\tthis.#pageChanged(this.panelRef.nextPage).subscribe(() => this.nextPage.emit());\n\t\tthis.#pageChanged(this.panelRef.previousPage).subscribe(() => this.previousPage.emit());\n\n\t\tthis.panelRef.activeOptionIdChanged.subscribe((optionId) => {\n\t\t\tthis.activeDescendant$.next(optionId);\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t\tthis.panelRef.closed.subscribe(() => this.closePanel());\n\t}\n\n\tprotected focusInput(): void {\n\t\tif (this.inputElementRef) {\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t}\n\t}\n\n\tprotected emptyClue(): void {\n\t\tif (this.clue) {\n\t\t\tthis.clue = null;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\tpublic closePanel(): void {\n\t\tif (!this.isPanelOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.emptyClue();\n\t\tthis.activeDescendant$.next('');\n\t\tthis.changeDetectorRef.markForCheck();\n\t\tthis.onTouched?.();\n\t\tthis.isPanelOpen$.next(false);\n\t\tthis.panelRef.close();\n\t\tthis._panelRef = undefined;\n\t}\n\n\tpublic writeValue(value: TValue): void {\n\t\tthis.value = value;\n\t}\n\n\tpublic updateValue(value: TValue, skipPanelOpen = false): void {\n\t\tthis.value = value;\n\t\tthis.emptyClue();\n\t\tthis.clueChanged('', skipPanelOpen);\n\t\tthis.onChange?.(value);\n\t\tthis.onTouched?.();\n\t}\n\n\t// Ensure nextPage/previousPage does not emit too often\n\t#pageChanged(pageEmitter: EventEmitter<void>): Observable<void> {\n\t\treturn this.options$.pipe(switchMap(() => pageEmitter.pipe(take(1))));\n\t}\n}\n","import { Overlay, OverlayContainer } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Injectable, Provider, inject } from '@angular/core';\nimport { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\n\nlet selectId = 0;\n\nfunction selectIdFactory(): number {\n\treturn selectId++;\n}\n\nfunction selectLabelFactory(): HTMLLabelElement | undefined {\n\tconst elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tfunction getLabel(node: HTMLElement): HTMLLabelElement | undefined {\n\t\tif (node instanceof HTMLLabelElement) {\n\t\t\treturn node;\n\t\t}\n\n\t\tif (!node.parentElement) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn getLabel(node.parentElement);\n\t}\n\n\treturn getLabel(elementRef.nativeElement);\n}\n\nfunction selectLabelIdFactory(): string {\n\treturn inject(SELECT_LABEL)?.id || `lu-select-label-${inject(SELECT_ID)}`;\n}\n\nexport function provideLuSelectLabelsAndIds(): Provider[] {\n\treturn [\n\t\t{ provide: SELECT_ID, useFactory: selectIdFactory },\n\t\t{ provide: SELECT_LABEL, useFactory: selectLabelFactory },\n\t\t{ provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory },\n\t];\n}\n\n@Injectable()\nclass LuSelectOverlayContainer extends OverlayContainer {\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tconstructor() {\n\t\tsuper(inject(DOCUMENT), inject(Platform));\n\t}\n\n\tprotected override _createContainer(): void {\n\t\tsuper._createContainer();\n\t\tthis._containerElement.setAttribute('aria-labelledby', this.selectLabelId);\n\t\tthis._containerElement.id = `lu-select-overlay-container-${this.selectId}`;\n\t}\n}\n\nexport function provideLuSelectOverlayContainer(): Provider[] {\n\treturn [\n\t\tOverlay,\n\t\t{\n\t\t\tprovide: OverlayContainer,\n\t\t\tuseClass: LuSelectOverlayContainer,\n\t\t},\n\t];\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuSelectPanelRef<TOption, TValue> {\n\tclosed = new EventEmitter<void>();\n\tpreviousPage = new EventEmitter<void>();\n\tnextPage = new EventEmitter<void>();\n\tvalueChanged = new EventEmitter<TValue>();\n\tclueChanged = new EventEmitter<string>();\n\tactiveOptionIdChanged = new EventEmitter<string>();\n\toptions$: Observable<TOption>;\n\n\tabstract updatePosition(): void;\n\n\tabstract handleKeyManagerEvent(event: KeyboardEvent): void;\n\n\tabstract emitValue(value: TValue): void;\n\n\tabstract selectCurrentlyHighlightedValue(): void;\n\n\tclose(): void {\n\t\tthis.closed.next();\n\t\tthis.closed.complete();\n\t\tthis.nextPage.complete();\n\t\tthis.previousPage.complete();\n\t\tthis.valueChanged.complete();\n\t\tthis.clueChanged.emit('');\n\t\tthis.clueChanged.complete();\n\t\tthis.activeOptionIdChanged.complete();\n\t}\n}\n","import { Observable, distinctUntilChanged, map, of, skip, startWith, switchMap, take } from 'rxjs';\n\nexport type GroupTemplateLocation = 'group-header' | 'option' | 'none';\n\n/**\n * In order to avoid a blinking when we go from empty clue to a clue\n * We need to delay the change of group displayer location by waiting for the options to be updated.\n */\nexport function getGroupTemplateLocation(hasGrouping: boolean, clueChange$: Observable<string>, options$: Observable<unknown[]>): Observable<GroupTemplateLocation> {\n\treturn hasGrouping\n\t\t? clueChange$.pipe(\n\t\t\t\tmap((clue) => !!clue),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tswitchMap((hasClue) =>\n\t\t\t\t\toptions$.pipe(\n\t\t\t\t\t\tskip(1),\n\t\t\t\t\t\ttake(1),\n\t\t\t\t\t\tmap((): GroupTemplateLocation => (hasClue ? 'option' : 'group-header')),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tstartWith('group-header' as const),\n\t\t )\n\t\t: of('none' as const);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucca-front/ng",
3
- "version": "17.3.8",
3
+ "version": "17.3.10",
4
4
  "description": "A library of icons made by the team @Lucca",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,8 +26,8 @@
26
26
  "@angular/common": "^17.0.2",
27
27
  "@angular/core": "^17.0.2",
28
28
  "@angular/cdk": "^17.0.0",
29
- "@lucca-front/icons": "v17.3.8",
30
- "@lucca-front/scss": "v17.3.8",
29
+ "@lucca-front/icons": "v17.3.10",
30
+ "@lucca-front/scss": "v17.3.10",
31
31
  "@types/dompurify": "^3.0.0",
32
32
  "isomorphic-dompurify": "^2.2.0",
33
33
  "rxjs": "^7.8.1"
@@ -59,11 +59,11 @@
59
59
  "esm": "./esm2022/animations/lucca-front-ng-animations.mjs",
60
60
  "default": "./fesm2022/lucca-front-ng-animations.mjs"
61
61
  },
62
- "./api": {
63
- "types": "./api/index.d.ts",
64
- "esm2022": "./esm2022/api/lucca-front-ng-api.mjs",
65
- "esm": "./esm2022/api/lucca-front-ng-api.mjs",
66
- "default": "./fesm2022/lucca-front-ng-api.mjs"
62
+ "./button": {
63
+ "types": "./button/index.d.ts",
64
+ "esm2022": "./esm2022/button/lucca-front-ng-button.mjs",
65
+ "esm": "./esm2022/button/lucca-front-ng-button.mjs",
66
+ "default": "./fesm2022/lucca-front-ng-button.mjs"
67
67
  },
68
68
  "./callout": {
69
69
  "types": "./callout/index.d.ts",
@@ -71,17 +71,17 @@
71
71
  "esm": "./esm2022/callout/lucca-front-ng-callout.mjs",
72
72
  "default": "./fesm2022/lucca-front-ng-callout.mjs"
73
73
  },
74
- "./button": {
75
- "types": "./button/index.d.ts",
76
- "esm2022": "./esm2022/button/lucca-front-ng-button.mjs",
77
- "esm": "./esm2022/button/lucca-front-ng-button.mjs",
78
- "default": "./fesm2022/lucca-front-ng-button.mjs"
74
+ "./core": {
75
+ "types": "./core/index.d.ts",
76
+ "esm2022": "./esm2022/core/lucca-front-ng-core.mjs",
77
+ "esm": "./esm2022/core/lucca-front-ng-core.mjs",
78
+ "default": "./fesm2022/lucca-front-ng-core.mjs"
79
79
  },
80
- "./core-select": {
81
- "types": "./core-select/index.d.ts",
82
- "esm2022": "./esm2022/core-select/lucca-front-ng-core-select.mjs",
83
- "esm": "./esm2022/core-select/lucca-front-ng-core-select.mjs",
84
- "default": "./fesm2022/lucca-front-ng-core-select.mjs"
80
+ "./api": {
81
+ "types": "./api/index.d.ts",
82
+ "esm2022": "./esm2022/api/lucca-front-ng-api.mjs",
83
+ "esm": "./esm2022/api/lucca-front-ng-api.mjs",
84
+ "default": "./fesm2022/lucca-front-ng-api.mjs"
85
85
  },
86
86
  "./date": {
87
87
  "types": "./date/index.d.ts",
@@ -89,11 +89,11 @@
89
89
  "esm": "./esm2022/date/lucca-front-ng-date.mjs",
90
90
  "default": "./fesm2022/lucca-front-ng-date.mjs"
91
91
  },
92
- "./core": {
93
- "types": "./core/index.d.ts",
94
- "esm2022": "./esm2022/core/lucca-front-ng-core.mjs",
95
- "esm": "./esm2022/core/lucca-front-ng-core.mjs",
96
- "default": "./fesm2022/lucca-front-ng-core.mjs"
92
+ "./core-select": {
93
+ "types": "./core-select/index.d.ts",
94
+ "esm2022": "./esm2022/core-select/lucca-front-ng-core-select.mjs",
95
+ "esm": "./esm2022/core-select/lucca-front-ng-core-select.mjs",
96
+ "default": "./fesm2022/lucca-front-ng-core-select.mjs"
97
97
  },
98
98
  "./department": {
99
99
  "types": "./department/index.d.ts",
@@ -137,18 +137,18 @@
137
137
  "esm": "./esm2022/formly/lucca-front-ng-formly.mjs",
138
138
  "default": "./fesm2022/lucca-front-ng-formly.mjs"
139
139
  },
140
- "./icon": {
141
- "types": "./icon/index.d.ts",
142
- "esm2022": "./esm2022/icon/lucca-front-ng-icon.mjs",
143
- "esm": "./esm2022/icon/lucca-front-ng-icon.mjs",
144
- "default": "./fesm2022/lucca-front-ng-icon.mjs"
145
- },
146
140
  "./forms": {
147
141
  "types": "./forms/index.d.ts",
148
142
  "esm2022": "./esm2022/forms/lucca-front-ng-forms.mjs",
149
143
  "esm": "./esm2022/forms/lucca-front-ng-forms.mjs",
150
144
  "default": "./fesm2022/lucca-front-ng-forms.mjs"
151
145
  },
146
+ "./icon": {
147
+ "types": "./icon/index.d.ts",
148
+ "esm2022": "./esm2022/icon/lucca-front-ng-icon.mjs",
149
+ "esm": "./esm2022/icon/lucca-front-ng-icon.mjs",
150
+ "default": "./fesm2022/lucca-front-ng-icon.mjs"
151
+ },
152
152
  "./inline-message": {
153
153
  "types": "./inline-message/index.d.ts",
154
154
  "esm2022": "./esm2022/inline-message/lucca-front-ng-inline-message.mjs",
@@ -161,18 +161,18 @@
161
161
  "esm": "./esm2022/input/lucca-front-ng-input.mjs",
162
162
  "default": "./fesm2022/lucca-front-ng-input.mjs"
163
163
  },
164
- "./modal": {
165
- "types": "./modal/index.d.ts",
166
- "esm2022": "./esm2022/modal/lucca-front-ng-modal.mjs",
167
- "esm": "./esm2022/modal/lucca-front-ng-modal.mjs",
168
- "default": "./fesm2022/lucca-front-ng-modal.mjs"
169
- },
170
164
  "./multi-select": {
171
165
  "types": "./multi-select/index.d.ts",
172
166
  "esm2022": "./esm2022/multi-select/lucca-front-ng-multi-select.mjs",
173
167
  "esm": "./esm2022/multi-select/lucca-front-ng-multi-select.mjs",
174
168
  "default": "./fesm2022/lucca-front-ng-multi-select.mjs"
175
169
  },
170
+ "./modal": {
171
+ "types": "./modal/index.d.ts",
172
+ "esm2022": "./esm2022/modal/lucca-front-ng-modal.mjs",
173
+ "esm": "./esm2022/modal/lucca-front-ng-modal.mjs",
174
+ "default": "./fesm2022/lucca-front-ng-modal.mjs"
175
+ },
176
176
  "./new-badge": {
177
177
  "types": "./new-badge/index.d.ts",
178
178
  "esm2022": "./esm2022/new-badge/lucca-front-ng-new-badge.mjs",
@@ -239,30 +239,24 @@
239
239
  "esm": "./esm2022/select/lucca-front-ng-select.mjs",
240
240
  "default": "./fesm2022/lucca-front-ng-select.mjs"
241
241
  },
242
- "./simple-select": {
243
- "types": "./simple-select/index.d.ts",
244
- "esm2022": "./esm2022/simple-select/lucca-front-ng-simple-select.mjs",
245
- "esm": "./esm2022/simple-select/lucca-front-ng-simple-select.mjs",
246
- "default": "./fesm2022/lucca-front-ng-simple-select.mjs"
247
- },
248
242
  "./sidepanel": {
249
243
  "types": "./sidepanel/index.d.ts",
250
244
  "esm2022": "./esm2022/sidepanel/lucca-front-ng-sidepanel.mjs",
251
245
  "esm": "./esm2022/sidepanel/lucca-front-ng-sidepanel.mjs",
252
246
  "default": "./fesm2022/lucca-front-ng-sidepanel.mjs"
253
247
  },
248
+ "./simple-select": {
249
+ "types": "./simple-select/index.d.ts",
250
+ "esm2022": "./esm2022/simple-select/lucca-front-ng-simple-select.mjs",
251
+ "esm": "./esm2022/simple-select/lucca-front-ng-simple-select.mjs",
252
+ "default": "./fesm2022/lucca-front-ng-simple-select.mjs"
253
+ },
254
254
  "./title": {
255
255
  "types": "./title/index.d.ts",
256
256
  "esm2022": "./esm2022/title/lucca-front-ng-title.mjs",
257
257
  "esm": "./esm2022/title/lucca-front-ng-title.mjs",
258
258
  "default": "./fesm2022/lucca-front-ng-title.mjs"
259
259
  },
260
- "./tooltip": {
261
- "types": "./tooltip/index.d.ts",
262
- "esm2022": "./esm2022/tooltip/lucca-front-ng-tooltip.mjs",
263
- "esm": "./esm2022/tooltip/lucca-front-ng-tooltip.mjs",
264
- "default": "./fesm2022/lucca-front-ng-tooltip.mjs"
265
- },
266
260
  "./toast": {
267
261
  "types": "./toast/index.d.ts",
268
262
  "esm2022": "./esm2022/toast/lucca-front-ng-toast.mjs",
@@ -275,6 +269,12 @@
275
269
  "esm": "./esm2022/user/lucca-front-ng-user.mjs",
276
270
  "default": "./fesm2022/lucca-front-ng-user.mjs"
277
271
  },
272
+ "./tooltip": {
273
+ "types": "./tooltip/index.d.ts",
274
+ "esm2022": "./esm2022/tooltip/lucca-front-ng-tooltip.mjs",
275
+ "esm": "./esm2022/tooltip/lucca-front-ng-tooltip.mjs",
276
+ "default": "./fesm2022/lucca-front-ng-tooltip.mjs"
277
+ },
278
278
  "./core-select/api": {
279
279
  "types": "./core-select/api/index.d.ts",
280
280
  "esm2022": "./esm2022/core-select/api/lucca-front-ng-core-select-api.mjs",
@@ -3,11 +3,13 @@
3
3
  "schematics": {
4
4
  "ng-add": {
5
5
  "description": "Add my lucca-front to the project.",
6
- "factory": "./ng-add/index#ngAdd"
6
+ "factory": "./ng-add/index#ngAdd",
7
+ "schema": "./ng-add/schema.json"
7
8
  },
8
9
  "new-icons": {
9
10
  "description": "Replace old icon names with new ones.",
10
- "factory": "./new-icons/index"
11
+ "factory": "./new-icons/index",
12
+ "schema": "./new-icons/schema.json"
11
13
  }
12
14
  }
13
15
  }