@elderbyte/ngx-starter 13.6.0 → 13.7.2
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.
- package/esm2020/lib/common/utils/collection-util.mjs +4 -1
- package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +77 -0
- package/esm2020/lib/components/select/auto/elder-select-first-util.mjs +62 -0
- package/esm2020/lib/components/select/elder-select/elder-select.component.mjs +14 -9
- package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +104 -0
- package/esm2020/lib/components/select/elder-select.module.mjs +11 -11
- package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +103 -39
- package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +13 -13
- package/fesm2015/elderbyte-ngx-starter.mjs +226 -144
- package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
- package/fesm2020/elderbyte-ngx-starter.mjs +226 -144
- package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/utils/collection-util.d.ts +1 -0
- package/lib/components/select/{auto-select-first.directive.d.ts → auto/elder-auto-select-first.directive.d.ts} +4 -13
- package/lib/components/select/auto/elder-select-first-util.d.ts +22 -0
- package/lib/components/select/elder-select/elder-select.component.d.ts +11 -1
- package/lib/components/select/{select-on-tab.directive.d.ts → elder-select-on-tab.directive.d.ts} +3 -3
- package/lib/components/select/elder-select.module.d.ts +5 -5
- package/lib/components/select/multi/elder-multi-select-base.d.ts +39 -15
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +11 -11
- package/package.json +1 -1
- package/esm2020/lib/components/select/auto-select-first.directive.mjs +0 -126
- package/esm2020/lib/components/select/select-on-tab.directive.mjs +0 -104
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Directive, HostListener, Inject, SkipSelf } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs/internal/Subject';
|
|
3
|
+
import { delay, map, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { merge } from 'rxjs';
|
|
5
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
6
|
+
import { ELDER_SELECT_BASE } from './elder-select-base';
|
|
7
|
+
import { isElderEntityValueAccessor } from './elder-entity-value-accessor';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/material/autocomplete";
|
|
10
|
+
import * as i2 from "./elder-select-base";
|
|
11
|
+
export class ElderSelectOnTabDirective {
|
|
12
|
+
/***************************************************************************
|
|
13
|
+
* *
|
|
14
|
+
* Constructor *
|
|
15
|
+
* *
|
|
16
|
+
**************************************************************************/
|
|
17
|
+
constructor(autoTrigger, elderSelectBase) {
|
|
18
|
+
this.autoTrigger = autoTrigger;
|
|
19
|
+
/***************************************************************************
|
|
20
|
+
* *
|
|
21
|
+
* Fields *
|
|
22
|
+
* *
|
|
23
|
+
**************************************************************************/
|
|
24
|
+
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
25
|
+
this.destroy$ = new Subject();
|
|
26
|
+
/**
|
|
27
|
+
* Whether the autocomplete panel was open before the event
|
|
28
|
+
*/
|
|
29
|
+
this.panelOpen = false;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the user selected an option.
|
|
32
|
+
* (We want to ignore selections if there is already a selection present and the user tabs away)
|
|
33
|
+
*/
|
|
34
|
+
this.userInput = false;
|
|
35
|
+
this.controlValueAccessor = elderSelectBase;
|
|
36
|
+
}
|
|
37
|
+
/***************************************************************************
|
|
38
|
+
* *
|
|
39
|
+
* Event Listener *
|
|
40
|
+
* *
|
|
41
|
+
**************************************************************************/
|
|
42
|
+
onBlur() {
|
|
43
|
+
if (!this.panelOpen) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (this.controlValueAccessor.value) {
|
|
47
|
+
// If there is already a value present, only allow tab based value setting if the user actually modified the value
|
|
48
|
+
if (!this.userInput) {
|
|
49
|
+
this.logger.warn('Discarding TAB since the user did probably not intend to change the value! userInput:', this.userInput);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const activeOption = this.autoTrigger.activeOption;
|
|
54
|
+
if (activeOption) {
|
|
55
|
+
const entity = activeOption.value;
|
|
56
|
+
this.updateValueByEntity(entity);
|
|
57
|
+
this.autoTrigger.writeValue(entity);
|
|
58
|
+
this.logger.warn('Wrote option.value to control: ', entity);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
updateValueByEntity(entity) {
|
|
62
|
+
if (isElderEntityValueAccessor(this.controlValueAccessor)) {
|
|
63
|
+
// Since elder-select may use the entity id as value (valueAsId),
|
|
64
|
+
// we can not directly write to the value safely.
|
|
65
|
+
this.controlValueAccessor.updateValueByEntity(entity);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// By default, write the selected option to the control value
|
|
69
|
+
this.controlValueAccessor.updateValue(entity);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/***************************************************************************
|
|
73
|
+
* *
|
|
74
|
+
* Life Cycle *
|
|
75
|
+
* *
|
|
76
|
+
**************************************************************************/
|
|
77
|
+
ngAfterViewInit() {
|
|
78
|
+
const autocomplete = this.autoTrigger.autocomplete;
|
|
79
|
+
merge(autocomplete.opened.pipe(map(() => true)), autocomplete.closed.pipe(map(() => false))).pipe(takeUntil(this.destroy$), delay(0)).subscribe(value => this.panelOpen = value);
|
|
80
|
+
this.autoTrigger.optionSelections.pipe(// TODO https://github.com/angular/components/pull/14813
|
|
81
|
+
takeUntil(this.destroy$), map(opt => opt.isUserInput)).subscribe(isUserInput => this.userInput = isUserInput);
|
|
82
|
+
}
|
|
83
|
+
ngOnDestroy() {
|
|
84
|
+
this.destroy$.next();
|
|
85
|
+
this.destroy$.complete();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
ElderSelectOnTabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderSelectOnTabDirective, deps: [{ token: i1.MatAutocompleteTrigger }, { token: ELDER_SELECT_BASE, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
89
|
+
ElderSelectOnTabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.1", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]", host: { listeners: { "keydown.tab": "onBlur()" } }, ngImport: i0 });
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderSelectOnTabDirective, decorators: [{
|
|
91
|
+
type: Directive,
|
|
92
|
+
args: [{
|
|
93
|
+
selector: '[elderSelectOnTab]'
|
|
94
|
+
}]
|
|
95
|
+
}], ctorParameters: function () { return [{ type: i1.MatAutocompleteTrigger }, { type: i2.ElderSelectBase, decorators: [{
|
|
96
|
+
type: SkipSelf
|
|
97
|
+
}, {
|
|
98
|
+
type: Inject,
|
|
99
|
+
args: [ELDER_SELECT_BASE]
|
|
100
|
+
}] }]; }, propDecorators: { onBlur: [{
|
|
101
|
+
type: HostListener,
|
|
102
|
+
args: ['keydown.tab']
|
|
103
|
+
}] } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0LW9uLXRhYi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9lbGRlci1zZWxlY3Qtb24tdGFiLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBUSxZQUFZLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLHFCQUFxQixDQUFDO0FBRXZFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBS3pFLE1BQU0sT0FBTyx5QkFBeUI7SUF5QnBDOzs7O2dGQUk0RTtJQUU1RSxZQUNtQixXQUFtQyxFQUNiLGVBQStDO1FBRHJFLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQTlCdEQ7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFTLENBQUM7UUFJakQ7O1dBRUc7UUFDSyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7V0FHRztRQUNLLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZeEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBR3JFLE1BQU07UUFFWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUVoQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7WUFDbkMsa0hBQWtIO1lBQ2xILElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1RkFBdUYsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFILE9BQU87YUFDUjtTQUNGO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFrQyxDQUFDO1FBRXpFLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWU7UUFDekMsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUN6RCxpRUFBaUU7WUFDakUsaURBQWlEO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLGVBQWU7UUFDcEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDbkQsS0FBSyxDQUNILFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN6QyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDM0MsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNULENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBRSx3REFBd0Q7UUFDOUYsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUM1QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3NIQXZHVSx5QkFBeUIsd0RBaUNkLGlCQUFpQjswR0FqQzVCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9COzswQkFrQ0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7NENBWWhDLE1BQU07c0JBRFosWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEhvc3QsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIFNraXBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJqZWN0JztcbmltcG9ydCB7ZGVsYXksIG1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vLi4vY29tbW9uL2Zvcm1zL3ZhbHVlLWFjY2Vzc29yLWJhc2UnO1xuaW1wb3J0IHtFTERFUl9TRUxFQ1RfQkFTRSwgRWxkZXJTZWxlY3RCYXNlfSBmcm9tICcuL2VsZGVyLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7TWF0T3B0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7aXNFbGRlckVudGl0eVZhbHVlQWNjZXNzb3J9IGZyb20gJy4vZWxkZXItZW50aXR5LXZhbHVlLWFjY2Vzc29yJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyU2VsZWN0T25UYWJdJ1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlbGVjdE9uVGFiRGlyZWN0aXZlPFRFbnRpdHkgPSBhbnksIFRJZCA9IGFueT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8bmV2ZXI+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sVmFsdWVBY2Nlc3NvcjogVmFsdWVBY2Nlc3NvckJhc2U8YW55PjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsIHdhcyBvcGVuIGJlZm9yZSB0aGUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcGFuZWxPcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgc2VsZWN0ZWQgYW4gb3B0aW9uLlxuICAgKiAoV2Ugd2FudCB0byBpZ25vcmUgc2VsZWN0aW9ucyBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgc2VsZWN0aW9uIHByZXNlbnQgYW5kIHRoZSB1c2VyIHRhYnMgYXdheSlcbiAgICovXG4gIHByaXZhdGUgdXNlcklucHV0ID0gZmFsc2U7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRvVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgICBAU2tpcFNlbGYoKSBASW5qZWN0KEVMREVSX1NFTEVDVF9CQVNFKSBlbGRlclNlbGVjdEJhc2U6IEVsZGVyU2VsZWN0QmFzZTxhbnksIGFueSwgYW55PlxuICApIHtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yID0gZWxkZXJTZWxlY3RCYXNlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEV2ZW50IExpc3RlbmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi50YWInKVxuICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuXG4gICAgaWYgKCF0aGlzLnBhbmVsT3BlbikgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yLnZhbHVlKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgdmFsdWUgcHJlc2VudCwgb25seSBhbGxvdyB0YWIgYmFzZWQgdmFsdWUgc2V0dGluZyBpZiB0aGUgdXNlciBhY3R1YWxseSBtb2RpZmllZCB0aGUgdmFsdWVcbiAgICAgIGlmICghdGhpcy51c2VySW5wdXQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignRGlzY2FyZGluZyBUQUIgc2luY2UgdGhlIHVzZXIgZGlkIHByb2JhYmx5IG5vdCBpbnRlbmQgdG8gY2hhbmdlIHRoZSB2YWx1ZSEgdXNlcklucHV0OicsIHRoaXMudXNlcklucHV0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuYXV0b1RyaWdnZXIuYWN0aXZlT3B0aW9uIGFzIE1hdE9wdGlvbjxURW50aXR5PjtcblxuICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IGFjdGl2ZU9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVCeUVudGl0eShlbnRpdHkpO1xuICAgICAgdGhpcy5hdXRvVHJpZ2dlci53cml0ZVZhbHVlKGVudGl0eSk7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdXcm90ZSBvcHRpb24udmFsdWUgdG8gY29udHJvbDogJywgZW50aXR5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlQnlFbnRpdHkoZW50aXR5OiBURW50aXR5KTogdm9pZCB7XG4gICAgaWYgKGlzRWxkZXJFbnRpdHlWYWx1ZUFjY2Vzc29yKHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3IpKSB7XG4gICAgICAvLyBTaW5jZSBlbGRlci1zZWxlY3QgbWF5IHVzZSB0aGUgZW50aXR5IGlkIGFzIHZhbHVlICh2YWx1ZUFzSWQpLFxuICAgICAgLy8gd2UgY2FuIG5vdCBkaXJlY3RseSB3cml0ZSB0byB0aGUgdmFsdWUgc2FmZWx5LlxuICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3Nvci51cGRhdGVWYWx1ZUJ5RW50aXR5KGVudGl0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIHdyaXRlIHRoZSBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGNvbnRyb2wgdmFsdWVcbiAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3IudXBkYXRlVmFsdWUoZW50aXR5KTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IHRoaXMuYXV0b1RyaWdnZXIuYXV0b2NvbXBsZXRlO1xuICAgIG1lcmdlKFxuICAgICAgYXV0b2NvbXBsZXRlLm9wZW5lZC5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICBhdXRvY29tcGxldGUuY2xvc2VkLnBpcGUobWFwKCgpID0+IGZhbHNlKSlcbiAgICApLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBkZWxheSgwKVxuICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMucGFuZWxPcGVuID0gdmFsdWUpO1xuXG4gICAgdGhpcy5hdXRvVHJpZ2dlci5vcHRpb25TZWxlY3Rpb25zLnBpcGUoIC8vIFRPRE8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzE0ODEzXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICBtYXAob3B0ID0+IG9wdC5pc1VzZXJJbnB1dClcbiAgICApLnN1YnNjcmliZShpc1VzZXJJbnB1dCA9PiB0aGlzLnVzZXJJbnB1dCA9IGlzVXNlcklucHV0KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIl19
|
|
@@ -19,23 +19,23 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
|
19
19
|
import { ElderTableModule } from '../data-view/table/elder-table.module';
|
|
20
20
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
21
21
|
import { ElderInfiniteScrollModule } from '../infinitescroll/elder-infinite-scroll.module';
|
|
22
|
-
import {
|
|
22
|
+
import { ElderSelectOnTabDirective } from './elder-select-on-tab.directive';
|
|
23
23
|
import { ElderAutocompleteModule } from '../input/autocomplete/elder-autocomplete.module';
|
|
24
24
|
import { ElderSelectValueDirective } from './elder-select-value.directive';
|
|
25
25
|
import { ElderMultiSelectChipsComponent } from './multi/elder-multi-select-chips/elder-multi-select-chips.component';
|
|
26
26
|
import { MatChipsModule } from '@angular/material/chips';
|
|
27
27
|
import { ElderSelectChipDirective } from './elder-select-chip.directive';
|
|
28
|
-
import {
|
|
28
|
+
import { ElderAutoSelectFirstDirective } from './auto/elder-auto-select-first.directive';
|
|
29
29
|
import * as i0 from "@angular/core";
|
|
30
30
|
export { ElderSelectValueDirective } from './elder-select-value.directive';
|
|
31
31
|
export { ElderSelectChipDirective } from './elder-select-chip.directive';
|
|
32
|
-
export {
|
|
32
|
+
export { ElderSelectOnTabDirective } from './elder-select-on-tab.directive';
|
|
33
33
|
export { ElderSelectComponent } from './elder-select/elder-select.component';
|
|
34
34
|
export { TemplatedSelectionDialogComponent } from './popup/templated-selection-dialog/templated-selection-dialog.component';
|
|
35
35
|
export { SelectionModelPopupDirective, ElderDataViewSelectionMode } from './popup/selection-model-popup.directive';
|
|
36
36
|
export { ElderMultiSelectBase } from './multi/elder-multi-select-base';
|
|
37
37
|
export { ElderMultiSelectChipsComponent } from './multi/elder-multi-select-chips/elder-multi-select-chips.component';
|
|
38
|
-
export {
|
|
38
|
+
export { ElderAutoSelectFirstDirective } from './auto/elder-auto-select-first.directive';
|
|
39
39
|
export class ElderSelectModule {
|
|
40
40
|
}
|
|
41
41
|
ElderSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -43,10 +43,10 @@ ElderSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
43
43
|
ElderSelectValueDirective,
|
|
44
44
|
TemplatedSelectionDialogComponent,
|
|
45
45
|
SelectionModelPopupDirective,
|
|
46
|
-
|
|
46
|
+
ElderSelectOnTabDirective,
|
|
47
47
|
ElderMultiSelectChipsComponent,
|
|
48
48
|
ElderSelectChipDirective,
|
|
49
|
-
|
|
49
|
+
ElderAutoSelectFirstDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
50
50
|
MatFormFieldModule,
|
|
51
51
|
MatIconModule,
|
|
52
52
|
MatSelectModule,
|
|
@@ -61,7 +61,7 @@ ElderSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
61
61
|
SelectionModelPopupDirective,
|
|
62
62
|
ElderMultiSelectChipsComponent,
|
|
63
63
|
ElderSelectChipDirective,
|
|
64
|
-
|
|
64
|
+
ElderAutoSelectFirstDirective] });
|
|
65
65
|
ElderSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderSelectModule, imports: [[
|
|
66
66
|
CommonModule, FormsModule, ReactiveFormsModule,
|
|
67
67
|
MatFormFieldModule,
|
|
@@ -94,10 +94,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
|
|
|
94
94
|
ElderSelectValueDirective,
|
|
95
95
|
TemplatedSelectionDialogComponent,
|
|
96
96
|
SelectionModelPopupDirective,
|
|
97
|
-
|
|
97
|
+
ElderSelectOnTabDirective,
|
|
98
98
|
ElderMultiSelectChipsComponent,
|
|
99
99
|
ElderSelectChipDirective,
|
|
100
|
-
|
|
100
|
+
ElderAutoSelectFirstDirective
|
|
101
101
|
],
|
|
102
102
|
exports: [
|
|
103
103
|
ElderSelectComponent,
|
|
@@ -106,8 +106,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
|
|
|
106
106
|
SelectionModelPopupDirective,
|
|
107
107
|
ElderMultiSelectChipsComponent,
|
|
108
108
|
ElderSelectChipDirective,
|
|
109
|
-
|
|
109
|
+
ElderAutoSelectFirstDirective
|
|
110
110
|
]
|
|
111
111
|
}]
|
|
112
112
|
}] });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L2VsZGVyLXNlbGVjdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHlFQUF5RSxDQUFDO0FBQzFILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FB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LGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlLEVBQUUsZUFBZTt3QkFDaEMsY0FBYyxFQUFFLHFCQUFxQjt3QkFDckMsZ0JBQWdCLEVBQUUsb0JBQW9CO3dCQUN0Qyx3QkFBd0I7d0JBRXhCLFVBQVUsRUFBRSxlQUFlO3dCQUUzQiwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxjQUFjO3FCQUNqSDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLGlDQUFpQzt3QkFDakMsNEJBQTRCO3dCQUM1Qix5QkFBeUI7d0JBQ3pCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4Qiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3dCQUNqQyw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4Qiw2QkFBNkI7cUJBQzlCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RWxkZXJTZWxlY3RDb21wb25lbnR9IGZyb20gJy4vZWxkZXItc2VsZWN0L2VsZGVyLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0U2VsZWN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUZW1wbGF0ZWRTZWxlY3Rpb25EaWFsb2dDb21wb25lbnR9IGZyb20gJy4vcG9wdXAvdGVtcGxhdGVkLXNlbGVjdGlvbi1kaWFsb2cvdGVtcGxhdGVkLXNlbGVjdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHtNYXREaWFsb2dNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWxQb3B1cERpcmVjdGl2ZX0gZnJvbSAnLi9wb3B1cC9zZWxlY3Rpb24tbW9kZWwtcG9wdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJGb3Jtc0RpcmVjdGl2ZXNNb2R1bGV9IGZyb20gJy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItZm9ybXMtZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge01hdFRvb2xiYXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHtNYXRQcm9ncmVzc0Jhck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7RWxkZXJUYWJsZU1vZHVsZX0gZnJvbSAnLi4vZGF0YS12aWV3L3RhYmxlL2VsZGVyLXRhYmxlLm1vZHVsZSc7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQge0VsZGVySW5maW5pdGVTY3JvbGxNb2R1bGV9IGZyb20gJy4uL2luZmluaXRlc2Nyb2xsL2VsZGVyLWluZmluaXRlLXNjcm9sbC5tb2R1bGUnO1xuaW1wb3J0IHtFbGRlclNlbGVjdE9uVGFiRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLXNlbGVjdC1vbi10YWIuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJy4uL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUubW9kdWxlJztcbmltcG9ydCB7RWxkZXJTZWxlY3RWYWx1ZURpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJNdWx0aVNlbGVjdENoaXBzQ29tcG9uZW50fSBmcm9tICcuL211bHRpL2VsZGVyLW11bHRpLXNlbGVjdC1jaGlwcy9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMuY29tcG9uZW50JztcbmltcG9ydCB7TWF0Q2hpcHNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7RWxkZXJTZWxlY3RDaGlwRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLXNlbGVjdC1jaGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyQXV0b1NlbGVjdEZpcnN0RGlyZWN0aXZlfSBmcm9tICcuL2F1dG8vZWxkZXItYXV0by1zZWxlY3QtZmlyc3QuZGlyZWN0aXZlJztcblxuZXhwb3J0IHtFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLXNlbGVjdC12YWx1ZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHtFbGRlclNlbGVjdENoaXBEaXJlY3RpdmV9IGZyb20gJy4vZWxkZXItc2VsZWN0LWNoaXAuZGlyZWN0aXZlJztcbmV4cG9ydCB7RWxkZXJTZWxlY3RPblRhYkRpcmVjdGl2ZX0gZnJvbSAnLi9lbGRlci1zZWxlY3Qtb24tdGFiLmRpcmVjdGl2ZSc7XG5leHBvcnQge0VsZGVyU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuL2VsZGVyLXNlbGVjdC9lbGRlci1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gIFRlbXBsYXRlZFNlbGVjdGlvbkRpYWxvZ0NvbXBvbmVudCwgSVNlbGVjdGlvbk1vZGVsRGlhbG9nT3B0aW9uc1xufSBmcm9tICcuL3BvcHVwL3RlbXBsYXRlZC1zZWxlY3Rpb24tZGlhbG9nL3RlbXBsYXRlZC1zZWxlY3Rpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQge1NlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmUsIEVsZGVyRGF0YVZpZXdTZWxlY3Rpb25Nb2RlfSBmcm9tICcuL3BvcHVwL3NlbGVjdGlvbi1tb2RlbC1wb3B1cC5kaXJlY3RpdmUnO1xuZXhwb3J0IHtFbGRlck11bHRpU2VsZWN0QmFzZX0gZnJvbSAnLi9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZSc7XG5leHBvcnQge0VsZGVyTXVsdGlTZWxlY3RDaGlwc0NvbXBvbmVudH0gZnJvbSAnLi9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtY2hpcHMvZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzLmNvbXBvbmVudCc7XG5leHBvcnQge0VsZGVyQXV0b1NlbGVjdEZpcnN0RGlyZWN0aXZlfSBmcm9tICcuL2F1dG8vZWxkZXItYXV0by1zZWxlY3QtZmlyc3QuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLCBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG5cbiAgICBGbGV4TW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsXG5cbiAgICBFbGRlckZvcm1zRGlyZWN0aXZlc01vZHVsZSwgRWxkZXJUYWJsZU1vZHVsZSwgRWxkZXJJbmZpbml0ZVNjcm9sbE1vZHVsZSwgRWxkZXJBdXRvY29tcGxldGVNb2R1bGUsIE1hdENoaXBzTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFbGRlclNlbGVjdENvbXBvbmVudCxcbiAgICBFbGRlclNlbGVjdFZhbHVlRGlyZWN0aXZlLFxuICAgIFRlbXBsYXRlZFNlbGVjdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgICBTZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlLFxuICAgIEVsZGVyU2VsZWN0T25UYWJEaXJlY3RpdmUsXG4gICAgRWxkZXJNdWx0aVNlbGVjdENoaXBzQ29tcG9uZW50LFxuICAgIEVsZGVyU2VsZWN0Q2hpcERpcmVjdGl2ZSxcbiAgICBFbGRlckF1dG9TZWxlY3RGaXJzdERpcmVjdGl2ZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRWxkZXJTZWxlY3RDb21wb25lbnQsXG4gICAgRWxkZXJTZWxlY3RWYWx1ZURpcmVjdGl2ZSxcbiAgICBUZW1wbGF0ZWRTZWxlY3Rpb25EaWFsb2dDb21wb25lbnQsXG4gICAgU2VsZWN0aW9uTW9kZWxQb3B1cERpcmVjdGl2ZSxcbiAgICBFbGRlck11bHRpU2VsZWN0Q2hpcHNDb21wb25lbnQsXG4gICAgRWxkZXJTZWxlY3RDaGlwRGlyZWN0aXZlLFxuICAgIEVsZGVyQXV0b1NlbGVjdEZpcnN0RGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWxlY3RNb2R1bGUge1xufVxuIl19
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Directive, Input, Output } from '@angular/core';
|
|
2
2
|
import { ElderSelectBase, ElderSelectComponentState } from '../elder-select-base';
|
|
3
|
-
import { of } from 'rxjs';
|
|
3
|
+
import { BehaviorSubject, combineLatest, of } from 'rxjs';
|
|
4
4
|
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
5
|
-
import { catchError, map } from 'rxjs/operators';
|
|
5
|
+
import { catchError, filter, map } from 'rxjs/operators';
|
|
6
6
|
import { Sets } from '../../../common/sets';
|
|
7
|
+
import { CollectionUtil } from '../../../common/utils/collection-util';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
/**
|
|
9
10
|
* Base component implementation of elder-multi-select.
|
|
@@ -29,67 +30,123 @@ export class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
29
30
|
* *
|
|
30
31
|
**************************************************************************/
|
|
31
32
|
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
32
|
-
this.
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}));
|
|
33
|
+
this.entities$ = new BehaviorSubject([]);
|
|
34
|
+
this.entityIdsChange = this.valueChange.pipe(map(values => this.entityIdsFromValues(values)));
|
|
35
|
+
this.entityIdsUpdated = this.valueUpdated.pipe(map(values => this.entityIdsFromValues(values)));
|
|
36
|
+
this.entitiesUpdated = combineLatest([this.entityIdsUpdated, this.entities$]).pipe(filter(([updatedIds, entities]) => this.equalIds(this.getEntityIds(entities), updatedIds)), map(([updatedIds, entities]) => entities));
|
|
41
37
|
}
|
|
42
38
|
/***************************************************************************
|
|
43
39
|
* *
|
|
44
40
|
* Properties *
|
|
45
41
|
* *
|
|
46
42
|
**************************************************************************/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this._valueIds = ids;
|
|
54
|
-
this.selectValuesByIds(ids);
|
|
55
|
-
}
|
|
43
|
+
set entities(entities) {
|
|
44
|
+
this.entities$.next(entities);
|
|
45
|
+
this.writeValueInternal(this.entitiesToValues(entities));
|
|
46
|
+
}
|
|
47
|
+
get entities() {
|
|
48
|
+
return this.entities$.getValue();
|
|
56
49
|
}
|
|
57
|
-
|
|
58
|
-
if (this.
|
|
59
|
-
|
|
50
|
+
set entityIds(ids) {
|
|
51
|
+
if (this.valueAsId) {
|
|
52
|
+
this.writeValueInternal(ids);
|
|
60
53
|
}
|
|
61
54
|
else {
|
|
62
|
-
|
|
55
|
+
this.selectEntitiesByIds(ids);
|
|
63
56
|
}
|
|
64
57
|
}
|
|
58
|
+
get entityIds() {
|
|
59
|
+
return this.entityIdsFromValues(this.value);
|
|
60
|
+
}
|
|
61
|
+
/***************************************************************************
|
|
62
|
+
* *
|
|
63
|
+
* Public API *
|
|
64
|
+
* *
|
|
65
|
+
**************************************************************************/
|
|
66
|
+
updateValueByEntities(entities) {
|
|
67
|
+
this.updateValue(this.entitiesToValues(entities));
|
|
68
|
+
}
|
|
65
69
|
/***************************************************************************
|
|
66
70
|
* *
|
|
67
71
|
* Internal Methods *
|
|
68
72
|
* *
|
|
69
73
|
**************************************************************************/
|
|
70
74
|
onSuggestionsDcChanged(data) {
|
|
71
|
-
if (this.
|
|
72
|
-
this.
|
|
75
|
+
if (this.valueAsId) {
|
|
76
|
+
this.selectEntitiesByIds(this.entityIds);
|
|
73
77
|
}
|
|
74
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* This method is invoked after a value has been written to this control.
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
writeToControl(value) {
|
|
84
|
+
if (this.valueAsId) {
|
|
85
|
+
const entityIds = value;
|
|
86
|
+
// Value was written as entity ids, ensure we select entity by id
|
|
87
|
+
this.logger.debug('writeToControl: value was written as ids: ' + entityIds, value);
|
|
88
|
+
this.selectEntitiesByIds(entityIds);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Value was written as entity, ensure entity is updated
|
|
92
|
+
const currentEntities = this.entities;
|
|
93
|
+
const newEntities = value;
|
|
94
|
+
this.logger.debug('writeToControl: value was written as entities (size): ' + newEntities?.length, value);
|
|
95
|
+
if (!this.equalEntities(currentEntities, newEntities)) {
|
|
96
|
+
this.entities$.next(newEntities);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.logger.warn('Ignored written entities as they are already set to entities$!');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
super.writeToControl(value);
|
|
103
|
+
}
|
|
75
104
|
/***************************************************************************
|
|
76
105
|
* *
|
|
77
106
|
* Private Methods *
|
|
78
107
|
* *
|
|
79
108
|
**************************************************************************/
|
|
80
|
-
|
|
109
|
+
entityIdsFromValues(values) {
|
|
110
|
+
return values?.map(v => this.entityIdFromValue(v));
|
|
111
|
+
}
|
|
112
|
+
entityIdFromValue(value) {
|
|
113
|
+
if (this.valueAsId) {
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const entity = value;
|
|
118
|
+
return this.getEntityId(entity);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
entitiesToValues(entities) {
|
|
122
|
+
return entities?.map(e => this.entityToValue(e));
|
|
123
|
+
}
|
|
124
|
+
entityToValue(entity) {
|
|
125
|
+
if (this.valueAsId) {
|
|
126
|
+
const id = this.getEntityId(entity);
|
|
127
|
+
return id;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return entity;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getEntityIds(values) {
|
|
81
134
|
return values.map(v => this.getEntityId(v));
|
|
82
135
|
}
|
|
83
136
|
equalIds(idsA, idsB) {
|
|
84
137
|
return Sets.equalContent(idsA, idsB);
|
|
85
138
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
139
|
+
equalEntities(entitiesA, entitiesB) {
|
|
140
|
+
return this.equalIds(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
|
|
141
|
+
}
|
|
142
|
+
selectEntitiesByIds(ids) {
|
|
143
|
+
const currentEntities = this.entities;
|
|
144
|
+
if (currentEntities && this.equalIds(this.getEntityIds(currentEntities), ids)) {
|
|
145
|
+
return; // Entities already loaded
|
|
89
146
|
}
|
|
90
|
-
if (ids
|
|
91
|
-
if (
|
|
92
|
-
this.writeValueInternal([]);
|
|
147
|
+
if (!CollectionUtil.hasElements(ids)) {
|
|
148
|
+
if (CollectionUtil.hasElements(currentEntities)) {
|
|
149
|
+
this.writeValueInternal([]);
|
|
93
150
|
}
|
|
94
151
|
}
|
|
95
152
|
else {
|
|
@@ -101,8 +158,8 @@ export class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
101
158
|
loaded.forEach((v, k) => existing.set(k, v));
|
|
102
159
|
return existing;
|
|
103
160
|
}), map(allValuesMap => Array.from(allValuesMap.values())) // TODO Sort?
|
|
104
|
-
).subscribe(
|
|
105
|
-
this.
|
|
161
|
+
).subscribe(entities => {
|
|
162
|
+
this.entities = entities;
|
|
106
163
|
});
|
|
107
164
|
}
|
|
108
165
|
else {
|
|
@@ -116,6 +173,7 @@ export class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
116
173
|
this.updateState(ElderSelectComponentState.error(err));
|
|
117
174
|
return of([]);
|
|
118
175
|
}), map(values => {
|
|
176
|
+
this.logger.debug('Loaded entities by id:', values);
|
|
119
177
|
const valueMap = new Map();
|
|
120
178
|
values.forEach(v => valueMap.set(this.getEntityId(v), v));
|
|
121
179
|
return valueMap;
|
|
@@ -134,12 +192,18 @@ export class ElderMultiSelectBase extends ElderSelectBase {
|
|
|
134
192
|
}
|
|
135
193
|
}
|
|
136
194
|
ElderMultiSelectBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderMultiSelectBase, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
137
|
-
ElderMultiSelectBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.1", type: ElderMultiSelectBase, inputs: {
|
|
195
|
+
ElderMultiSelectBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.1", type: ElderMultiSelectBase, inputs: { entities: "entities", entityIds: "entityIds" }, outputs: { entityIdsChange: "entityIdsChange", entityIdsUpdated: "entityIdsUpdated", entitiesUpdated: "entitiesUpdated" }, usesInheritance: true, ngImport: i0 });
|
|
138
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ElderMultiSelectBase, decorators: [{
|
|
139
197
|
type: Directive
|
|
140
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: {
|
|
198
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { entityIdsChange: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], entityIdsUpdated: [{
|
|
141
201
|
type: Output
|
|
142
|
-
}],
|
|
202
|
+
}], entitiesUpdated: [{
|
|
203
|
+
type: Output
|
|
204
|
+
}], entities: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], entityIds: [{
|
|
143
207
|
type: Input
|
|
144
208
|
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhGLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQUcxQzs7Ozs7Ozs7R0FRRztBQUVILGtEQUFrRDtBQUNsRCxNQUFNLE9BQWdCLG9CQUE2QixTQUFRLGVBQTRCO0lBZXJGOzs7O2dGQUk0RTtJQUU1RSxZQUNFLElBQVk7UUFFWixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUF0QmQ7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakUsY0FBUyxHQUFVLElBQUksQ0FBQztRQWdCOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFF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LENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxHQUFVO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDekMsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSTtpQkFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDOztpSEFuSm1CLG9CQUFvQjtxR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRnpDLFNBQVM7NkZBZVEsY0FBYztzQkFEN0IsTUFBTTtnQkFvQ0ksUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgTmdab25lLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbGRlclNlbGVjdEJhc2UsIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGV9IGZyb20gJy4uL2VsZGVyLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7SURhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTZXRzfSBmcm9tICcuLi8uLi8uLi9jb21tb24vc2V0cyc7XG5cblxuLyoqXG4gKiBCYXNlIGNvbXBvbmVudCBpbXBsZW1lbnRhdGlvbiBvZiBlbGRlci1tdWx0aS1zZWxlY3QuXG4gKlxuICogTXVsdGkgU2VsZWN0IGhhcyB0aGUgZm9sbG93aW5nIGFic3RyYWN0IGNvbmNlcHQ6XG4gKlxuICogLSBTdWdnZXN0aW9uLU1vZGVsOiBBIERhdGFTb3VyY2UgYW5kIGRlcml2ZWQgRGF0YUNvbnRleHQgZm9yIHRoZSAoYXV0by1jb21wbGV0ZSkgc3VnZ2VzdGlvbnMuXG4gKiAtIFRoZSBiYWNraW5nIFZhbHVlIGlzIGEgbGlzdCBvZiB0aGUgY3VycmVudCBzZWxlY3RlZCBlbnRpdGllcy4gVFtdXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRWxkZXJNdWx0aVNlbGVjdEJhc2U8VElkLCBUPiBleHRlbmRzIEVsZGVyU2VsZWN0QmFzZTxUSWQsIFQsIFRbXT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF92YWx1ZUlkczogVElkW10gPSBudWxsO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVJZHNDaGFuZ2U6IE9ic2VydmFibGU8VElkW10+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoem9uZSk7XG5cbiAgICB0aGlzLnZhbHVlSWRzQ2hhbmdlID0gdGhpcy52YWx1ZUNoYW5nZS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVzLm1hcCh2ID0+IHRoaXMuZ2V0RW50aXR5SWQodikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogU2VsZWN0IHRoZSB2YWx1ZSB3aXRoIHRoZSBnaXZlbiBpZC5cbiAgICogQHBhcmFtIGlkc1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZUlkcyhpZHM6IFRJZFtdKSB7XG4gICAgaWYgKCF0aGlzLmVxdWFsSWRzKGlkcywgdGhpcy5fdmFsdWVJZHMpKSB7XG4gICAgICB0aGlzLl92YWx1ZUlkcyA9IGlkcztcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWVzQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlSWRzKCk6IFRJZFtdIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVJZHModGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZUlkcztcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSW50ZXJuYWwgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgb25TdWdnZXN0aW9uc0RjQ2hhbmdlZChkYXRhOiBJRGF0YUNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmFsdWVJZHMpIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWVzQnlJZHModGhpcy5fdmFsdWVJZHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgZ2V0VmFsdWVJZHModmFsdWVzOiBUW10pIHtcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh2ID0+IHRoaXMuZ2V0RW50aXR5SWQodikpO1xuICB9XG5cbiAgcHJpdmF0ZSBlcXVhbElkcyhpZHNBOiBUSWRbXSwgaWRzQjogVElkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2V0cy5lcXVhbENvbnRlbnQoaWRzQSwgaWRzQik7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFZhbHVlc0J5SWRzKGlkczogVElkW10pOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuZXF1YWxJZHModGhpcy5nZXRWYWx1ZUlkcyh0aGlzLnZhbHVlKSwgaWRzKSkge1xuICAgICAgcmV0dXJuOyAvLyBBbHJlYWR5IHNlbGVjdGVkXG4gICAgfVxuXG4gICAgaWYgKGlkcyA9PT0gbnVsbCB8fCBpZHMgPT09IHVuZGVmaW5lZCB8fCBpZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwoW10pOyAvLyBUT0RPIE9yIHdyaXRlIGVtcHR5IGxpc3Q/PyBbXVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uc0RjKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maW5kSW5EYXRhQ29udGV4dChpZHMpO1xuICAgICAgICBjb25zdCBtaXNzaW5nSWRzID0gaWRzLmZpbHRlcihpZCA9PiAhZXhpc3RpbmcuaGFzKGlkKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlTG9hZFJlcXVlc3QkID0gbWlzc2luZ0lkcy5sZW5ndGggPiAwID8gdGhpcy5sb2FkRW50aXR5QnlJZHMobWlzc2luZ0lkcykgOiBvZihuZXcgTWFwKCkpO1xuXG4gICAgICAgIHZhbHVlTG9hZFJlcXVlc3QkLnBpcGUoXG4gICAgICAgICAgbWFwKGxvYWRlZCA9PiB7XG4gICAgICAgICAgICBsb2FkZWQuZm9yRWFjaCgodiwgaykgPT4gZXhpc3Rpbmcuc2V0KGssIHYpKTtcbiAgICAgICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoYWxsVmFsdWVzTWFwID0+IEFycmF5LmZyb20oYWxsVmFsdWVzTWFwLnZhbHVlcygpKSkgLy8gVE9ETyBTb3J0P1xuICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICB2YWx1ZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwodmFsdWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gc2VsZWN0IHZhbHVlIGJ5IElkczogJyArIGlkcyArICcgLSBEYXRhQ29udGV4dCBub3QgYXZhaWxhYmxlLicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVudGl0eUJ5SWRzKGlkczogVElkW10pOiBPYnNlcnZhYmxlPE1hcDxUSWQsIFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvbnNEYy5kYXRhU291cmNlLmZpbmRCeUlkcyhpZHMpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gbG9hZCB2YWx1ZXMgYnkgaWRzICcgKyBpZHMsIGVycik7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGUoRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZS5lcnJvcihlcnIpKTtcbiAgICAgICAgcmV0dXJuIG9mKDxUW10+W10pO1xuICAgICAgfSksXG4gICAgICBtYXAodmFsdWVzID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVNYXAgPSBuZXcgTWFwPFRJZCwgVD4oKTtcbiAgICAgICAgdmFsdWVzLmZvckVhY2godiA9PiB2YWx1ZU1hcC5zZXQodGhpcy5nZXRFbnRpdHlJZCh2KSwgdikpO1xuICAgICAgICByZXR1cm4gdmFsdWVNYXA7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRJbkRhdGFDb250ZXh0KGlkczogVElkW10pOiBNYXA8VElkLCBUPiB7XG4gICAgY29uc3QgZXhpc3RpbmdWYWx1ZXMgPSBuZXcgTWFwPFRJZCwgVD4oKTtcbiAgICBpZiAoaWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5zdWdnZXN0aW9uc0RjLnNuYXBzaG90LmRhdGE7XG4gICAgICBjb25zdCByZXF1aXJlZElkcyA9IG5ldyBTZXQoaWRzKTtcbiAgICAgIGRhdGFcbiAgICAgICAgLmZpbHRlcihkID0+IHJlcXVpcmVkSWRzLmhhcyh0aGlzLmdldEVudGl0eUlkKGQpKSlcbiAgICAgICAgLmZvckVhY2goZCA9PiBleGlzdGluZ1ZhbHVlcy5zZXQodGhpcy5nZXRFbnRpdHlJZChkKSwgZCkpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpc3RpbmdWYWx1ZXM7XG4gIH1cbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFHckU7Ozs7Ozs7O0dBUUc7QUFFSCxrREFBa0Q7QUFDbEQsTUFBTSxPQUFnQixvQkFBMkMsU0FBUSxlQUF1QztJQTZCOUc7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ0UsSUFBWTtRQUVaLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQXBDZDs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVksRUFBRSxDQUFDLENBQUM7UUE4QmhFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENB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WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RWxkZXJTZWxlY3RCYXNlLCBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlfSBmcm9tICcuLi9lbGRlci1zZWxlY3QtYmFzZSc7XG5pbXBvcnQge0lEYXRhQ29udGV4dH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NldHN9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXRzJztcbmltcG9ydCB7Q29sbGVjdGlvblV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlscy9jb2xsZWN0aW9uLXV0aWwnO1xuXG5cbi8qKlxuICogQmFzZSBjb21wb25lbnQgaW1wbGVtZW50YXRpb24gb2YgZWxkZXItbXVsdGktc2VsZWN0LlxuICpcbiAqIE11bHRpIFNlbGVjdCBoYXMgdGhlIGZvbGxvd2luZyBhYnN0cmFjdCBjb25jZXB0OlxuICpcbiAqIC0gU3VnZ2VzdGlvbi1Nb2RlbDogQSBEYXRhU291cmNlIGFuZCBkZXJpdmVkIERhdGFDb250ZXh0IGZvciB0aGUgKGF1dG8tY29tcGxldGUpIHN1Z2dlc3Rpb25zLlxuICogLSBUaGUgYmFja2luZyBWYWx1ZSBpcyBhIGxpc3Qgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgZW50aXRpZXMuIFRbXVxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVsZGVyTXVsdGlTZWxlY3RCYXNlPFRJZCwgVEVudGl0eSwgVFZhbHVlPiBleHRlbmRzIEVsZGVyU2VsZWN0QmFzZTxUSWQsIFRFbnRpdHksIFRWYWx1ZVtdPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBlbnRpdGllcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRFbnRpdHlbXT4oW10pO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5SWRzQ2hhbmdlOiBPYnNlcnZhYmxlPFRJZFtdPjtcblxuICAvKipcbiAgICogU2ltaWxhciB0byBlbnRpdHktaWQgY2hhbmdlLCBidXQgZW1pdHMgb25seSB3aGVuIHRoZSB1c2VyXG4gICAqIGhhcyB1cGRhdGVkIHRoZSB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5SWRzVXBkYXRlZDogT2JzZXJ2YWJsZTxUSWRbXT47XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gZW50aXR5IGNoYW5nZSwgYnV0IGVtaXRzIG9ubHkgd2hlbiB0aGUgdXNlclxuICAgKiBoYXMgdXBkYXRlZCB0aGUgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzVXBkYXRlZDogT2JzZXJ2YWJsZTxURW50aXR5W10+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoem9uZSk7XG5cbiAgICB0aGlzLmVudGl0eUlkc0NoYW5nZSA9IHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcCh2YWx1ZXMgPT4gdGhpcy5lbnRpdHlJZHNGcm9tVmFsdWVzKHZhbHVlcykpXG4gICAgKTtcblxuICAgIHRoaXMuZW50aXR5SWRzVXBkYXRlZCA9IHRoaXMudmFsdWVVcGRhdGVkLnBpcGUoXG4gICAgICBtYXAodmFsdWVzID0+IHRoaXMuZW50aXR5SWRzRnJvbVZhbHVlcyh2YWx1ZXMpKVxuICAgICk7XG5cbiAgICB0aGlzLmVudGl0aWVzVXBkYXRlZCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbdGhpcy5lbnRpdHlJZHNVcGRhdGVkLCB0aGlzLmVudGl0aWVzJF1cbiAgICApLnBpcGUoXG4gICAgICBmaWx0ZXIoKFt1cGRhdGVkSWRzLCBlbnRpdGllc10pID0+IHRoaXMuZXF1YWxJZHModGhpcy5nZXRFbnRpdHlJZHMoZW50aXRpZXMpLCB1cGRhdGVkSWRzKSksXG4gICAgICBtYXAoKFt1cGRhdGVkSWRzLCBlbnRpdGllc10pID0+IGVudGl0aWVzKVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVudGl0aWVzKGVudGl0aWVzOiBURW50aXR5W10pIHtcbiAgICB0aGlzLmVudGl0aWVzJC5uZXh0KGVudGl0aWVzKTtcbiAgICB0aGlzLndyaXRlVmFsdWVJbnRlcm5hbChcbiAgICAgIHRoaXMuZW50aXRpZXNUb1ZhbHVlcyhlbnRpdGllcylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBlbnRpdGllcygpOiBURW50aXR5W10ge1xuICAgIHJldHVybiB0aGlzLmVudGl0aWVzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbnRpdHlJZHMoaWRzOiBUSWRbXSkge1xuICAgIGlmICh0aGlzLnZhbHVlQXNJZCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwoPGFueT5pZHMgYXMgVFZhbHVlW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEVudGl0aWVzQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVudGl0eUlkcygpOiBUSWRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5SWRzRnJvbVZhbHVlcyh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZUJ5RW50aXRpZXMoZW50aXRpZXM6IFRFbnRpdHlbXSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUoXG4gICAgICB0aGlzLmVudGl0aWVzVG9WYWx1ZXMoZW50aXRpZXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBJbnRlcm5hbCBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBvblN1Z2dlc3Rpb25zRGNDaGFuZ2VkKGRhdGE6IElEYXRhQ29udGV4dDxURW50aXR5Pik6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlQXNJZCkge1xuICAgICAgdGhpcy5zZWxlY3RFbnRpdGllc0J5SWRzKHRoaXMuZW50aXR5SWRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBhZnRlciBhIHZhbHVlIGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhpcyBjb250cm9sLlxuICAgKlxuICAgKi9cbiAgcHJvdGVjdGVkIHdyaXRlVG9Db250cm9sKHZhbHVlOiBUVmFsdWVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlQXNJZCkge1xuICAgICAgY29uc3QgZW50aXR5SWRzID0gPGFueT52YWx1ZSBhcyBUSWRbXTtcbiAgICAgIC8vIFZhbHVlIHdhcyB3cml0dGVuIGFzIGVudGl0eSBpZHMsIGVuc3VyZSB3ZSBzZWxlY3QgZW50aXR5IGJ5IGlkXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1Zygnd3JpdGVUb0NvbnRyb2w6IHZhbHVlIHdhcyB3cml0dGVuIGFzIGlkczogJyArIGVudGl0eUlkcywgdmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RFbnRpdGllc0J5SWRzKGVudGl0eUlkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFZhbHVlIHdhcyB3cml0dGVuIGFzIGVudGl0eSwgZW5zdXJlIGVudGl0eSBpcyB1cGRhdGVkXG4gICAgICBjb25zdCBjdXJyZW50RW50aXRpZXMgPSB0aGlzLmVudGl0aWVzO1xuICAgICAgY29uc3QgbmV3RW50aXRpZXMgPSA8YW55PnZhbHVlIGFzIFRFbnRpdHlbXTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd3cml0ZVRvQ29udHJvbDogdmFsdWUgd2FzIHdyaXR0ZW4gYXMgZW50aXRpZXMgKHNpemUpOiAnICsgbmV3RW50aXRpZXM/Lmxlbmd0aCwgdmFsdWUpO1xuICAgICAgaWYgKCF0aGlzLmVxdWFsRW50aXRpZXMoY3VycmVudEVudGl0aWVzLCBuZXdFbnRpdGllcykpIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcyQubmV4dChuZXdFbnRpdGllcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdJZ25vcmVkIHdyaXR0ZW4gZW50aXRpZXMgYXMgdGhleSBhcmUgYWxyZWFkeSBzZXQgdG8gZW50aXRpZXMkIScpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci53cml0ZVRvQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGVudGl0eUlkc0Zyb21WYWx1ZXModmFsdWVzOiBUVmFsdWVbXSk6IFRJZFtdIHtcbiAgICByZXR1cm4gdmFsdWVzPy5tYXAodiA9PiB0aGlzLmVudGl0eUlkRnJvbVZhbHVlKHYpKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50aXR5SWRGcm9tVmFsdWUodmFsdWU6IFRWYWx1ZSk6IFRJZCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0lkKSB7XG4gICAgICByZXR1cm4gPGFueT52YWx1ZSBhcyBUSWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9ICg8YW55PnZhbHVlKSBhcyBURW50aXR5O1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5SWQoZW50aXR5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVudGl0aWVzVG9WYWx1ZXMoZW50aXRpZXM6IFRFbnRpdHlbXSk6IFRWYWx1ZVtdIHtcbiAgICByZXR1cm4gZW50aXRpZXM/Lm1hcChlID0+IHRoaXMuZW50aXR5VG9WYWx1ZShlKSk7XG4gIH1cblxuICBwcml2YXRlIGVudGl0eVRvVmFsdWUoZW50aXR5OiBURW50aXR5KTogVFZhbHVlIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRFbnRpdHlJZChlbnRpdHkpO1xuICAgICAgcmV0dXJuIDxhbnk+aWQgYXMgVFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPGFueT5lbnRpdHkgYXMgVFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50aXR5SWRzKHZhbHVlczogVEVudGl0eVtdKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodiA9PiB0aGlzLmdldEVudGl0eUlkKHYpKTtcbiAgfVxuXG4gIHByaXZhdGUgZXF1YWxJZHMoaWRzQTogVElkW10sIGlkc0I6IFRJZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNldHMuZXF1YWxDb250ZW50KGlkc0EsIGlkc0IpO1xuICB9XG5cbiAgcHJpdmF0ZSBlcXVhbEVudGl0aWVzKGVudGl0aWVzQTogVEVudGl0eVtdLCBlbnRpdGllc0I6IFRFbnRpdHlbXSkge1xuICAgIHJldHVybiB0aGlzLmVxdWFsSWRzKHRoaXMuZ2V0RW50aXR5SWRzKGVudGl0aWVzQSksIHRoaXMuZ2V0RW50aXR5SWRzKGVudGl0aWVzQikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RFbnRpdGllc0J5SWRzKGlkczogVElkW10pOiB2b2lkIHtcblxuICAgIGNvbnN0IGN1cnJlbnRFbnRpdGllcyA9IHRoaXMuZW50aXRpZXM7XG4gICAgaWYgKGN1cnJlbnRFbnRpdGllcyAmJiB0aGlzLmVxdWFsSWRzKHRoaXMuZ2V0RW50aXR5SWRzKGN1cnJlbnRFbnRpdGllcyksIGlkcykpIHtcbiAgICAgIHJldHVybjsgLy8gRW50aXRpZXMgYWxyZWFkeSBsb2FkZWRcbiAgICB9XG5cbiAgICBpZiAoIUNvbGxlY3Rpb25VdGlsLmhhc0VsZW1lbnRzKGlkcykpIHtcbiAgICAgIGlmIChDb2xsZWN0aW9uVXRpbC5oYXNFbGVtZW50cyhjdXJyZW50RW50aXRpZXMpKSB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZUludGVybmFsKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnNEYykge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZmluZEluRGF0YUNvbnRleHQoaWRzKTtcbiAgICAgICAgY29uc3QgbWlzc2luZ0lkcyA9IGlkcy5maWx0ZXIoaWQgPT4gIWV4aXN0aW5nLmhhcyhpZCkpO1xuICAgICAgICBjb25zdCB2YWx1ZUxvYWRSZXF1ZXN0JCA9IG1pc3NpbmdJZHMubGVuZ3RoID4gMCA/IHRoaXMubG9hZEVudGl0eUJ5SWRzKG1pc3NpbmdJZHMpIDogb2YobmV3IE1hcCgpKTtcblxuICAgICAgICB2YWx1ZUxvYWRSZXF1ZXN0JC5waXBlKFxuICAgICAgICAgIG1hcChsb2FkZWQgPT4ge1xuICAgICAgICAgICAgbG9hZGVkLmZvckVhY2goKHYsIGspID0+IGV4aXN0aW5nLnNldChrLCB2KSk7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKGFsbFZhbHVlc01hcCA9PiBBcnJheS5mcm9tKGFsbFZhbHVlc01hcC52YWx1ZXMoKSkpIC8vIFRPRE8gU29ydD9cbiAgICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgICAgZW50aXRpZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbnRpdGllcyA9IGVudGl0aWVzO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBzZWxlY3QgdmFsdWUgYnkgSWRzOiAnICsgaWRzICsgJyAtIERhdGFDb250ZXh0IG5vdCBhdmFpbGFibGUuJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRW50aXR5QnlJZHMoaWRzOiBUSWRbXSk6IE9ic2VydmFibGU8TWFwPFRJZCwgVEVudGl0eT4+IHtcbiAgICByZXR1cm4gdGhpcy5zdWdnZXN0aW9uc0RjLmRhdGFTb3VyY2UuZmluZEJ5SWRzKGlkcykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIHZhbHVlcyBieSBpZHMgJyArIGlkcywgZXJyKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmVycm9yKGVycikpO1xuICAgICAgICByZXR1cm4gb2YoPFRFbnRpdHlbXT5bXSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCh2YWx1ZXMgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTG9hZGVkIGVudGl0aWVzIGJ5IGlkOicsIHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHZhbHVlTWFwID0gbmV3IE1hcDxUSWQsIFRFbnRpdHk+KCk7XG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKHYgPT4gdmFsdWVNYXAuc2V0KHRoaXMuZ2V0RW50aXR5SWQodiksIHYpKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlTWFwO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSW5EYXRhQ29udGV4dChpZHM6IFRJZFtdKTogTWFwPFRJZCwgVEVudGl0eT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nVmFsdWVzID0gbmV3IE1hcDxUSWQsIFRFbnRpdHk+KCk7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc3VnZ2VzdGlvbnNEYy5zbmFwc2hvdC5kYXRhO1xuICAgICAgY29uc3QgcmVxdWlyZWRJZHMgPSBuZXcgU2V0KGlkcyk7XG4gICAgICBkYXRhXG4gICAgICAgIC5maWx0ZXIoZCA9PiByZXF1aXJlZElkcy5oYXModGhpcy5nZXRFbnRpdHlJZChkKSkpXG4gICAgICAgIC5mb3JFYWNoKGQgPT4gZXhpc3RpbmdWYWx1ZXMuc2V0KHRoaXMuZ2V0RW50aXR5SWQoZCksIGQpKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nVmFsdWVzO1xuICB9XG5cblxufVxuIl19
|