@wizishop/angular-components 15.1.5 → 15.1.7
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/angular-components.scss +154 -139
- package/esm2020/lib/components/alert-popup/alert-popup.component.mjs +3 -3
- package/esm2020/lib/components/expansion/expansion-panel-header/expansion-panel-header.directive.mjs +1 -2
- package/esm2020/lib/components/inputs/input-search/input-search.component.mjs +1 -1
- package/esm2020/lib/components/radio/radio-directive.mjs +3 -3
- package/esm2020/lib/components/radio/radio-group.directive.mjs +4 -4
- package/esm2020/lib/components/search/search.component.mjs +1 -1
- package/esm2020/lib/components/select/call-to-action.model.mjs +2 -0
- package/esm2020/lib/components/select/option/option-selection-handler.interface.mjs +2 -0
- package/esm2020/lib/components/select/option/option-selection-handler.token.mjs +3 -0
- package/esm2020/lib/components/{selects → select}/option/option.component.mjs +1 -1
- package/esm2020/lib/components/select/option/select-option.directive.mjs +97 -0
- package/esm2020/lib/components/{selects → select}/option-call-to-action/option-call-to-action.component.mjs +1 -1
- package/esm2020/lib/components/select/select/select.component.mjs +194 -0
- package/esm2020/lib/components/select/select/select.directive.mjs +164 -0
- package/esm2020/lib/components/select/select/value-change.service.mjs +190 -0
- package/esm2020/lib/components/select/select-items.dto.mjs +2 -0
- package/esm2020/lib/components/{selects → select}/select-search-trigger/select-search-trigger.component.mjs +1 -1
- package/esm2020/lib/components/select-in-text/select-in-text.component.mjs +103 -0
- package/esm2020/lib/components/shared-components.module.mjs +15 -14
- package/esm2020/lib/components/tab/tab.component.mjs +4 -3
- package/esm2020/lib/components/table/directives/checkBoxRow.directive.mjs +4 -7
- package/esm2020/lib/components/table/directives/column.directive.mjs +3 -5
- package/esm2020/lib/components/table/directives/columnHeader.directive.mjs +7 -13
- package/esm2020/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.mjs +32 -0
- package/esm2020/lib/directives/shared-directives.module.mjs +9 -8
- package/esm2020/lib/pipes/select/select-filters.pipe.mjs +1 -1
- package/esm2020/public-api.mjs +12 -11
- package/fesm2015/wizishop-angular-components.mjs +61 -45
- package/fesm2015/wizishop-angular-components.mjs.map +1 -1
- package/fesm2020/wizishop-angular-components.mjs +61 -45
- package/fesm2020/wizishop-angular-components.mjs.map +1 -1
- package/lib/components/radio/radio-directive.d.ts +1 -1
- package/lib/components/radio/radio-group.directive.d.ts +2 -2
- package/lib/components/{selects → select}/call-to-action.model.d.ts +0 -0
- package/lib/components/{selects → select}/option/option-selection-handler.interface.d.ts +0 -0
- package/lib/components/{selects → select}/option/option-selection-handler.token.d.ts +0 -0
- package/lib/components/{selects → select}/option/option.component.d.ts +0 -0
- package/lib/components/{selects → select}/option/select-option.directive.d.ts +0 -0
- package/lib/components/{selects → select}/option-call-to-action/option-call-to-action.component.d.ts +0 -0
- package/lib/components/{selects → select}/select/select.component.d.ts +1 -2
- package/lib/components/{selects → select}/select/select.directive.d.ts +0 -0
- package/lib/components/{selects → select}/select/value-change.service.d.ts +0 -0
- package/lib/components/{selects → select}/select-items.dto.d.ts +0 -0
- package/lib/components/{selects → select}/select-search-trigger/select-search-trigger.component.d.ts +0 -0
- package/lib/components/{selects/select-in-text → select-in-text}/select-in-text.component.d.ts +2 -2
- package/lib/components/shared-components.module.d.ts +88 -88
- package/lib/components/tab/tab.component.d.ts +1 -1
- package/lib/directives/copy-to-clipboard/copy-to-clipboard.directive.d.ts +12 -0
- package/lib/directives/shared-directives.module.d.ts +4 -3
- package/lib/pipes/select/select-filters.pipe.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +11 -10
- package/wizishop-angular-components-15.1.7.tgz +0 -0
- package/esm2020/lib/components/selects/call-to-action.model.mjs +0 -2
- package/esm2020/lib/components/selects/option/option-selection-handler.interface.mjs +0 -2
- package/esm2020/lib/components/selects/option/option-selection-handler.token.mjs +0 -3
- package/esm2020/lib/components/selects/option/select-option.directive.mjs +0 -97
- package/esm2020/lib/components/selects/select/select.component.mjs +0 -197
- package/esm2020/lib/components/selects/select/select.directive.mjs +0 -164
- package/esm2020/lib/components/selects/select/value-change.service.mjs +0 -190
- package/esm2020/lib/components/selects/select-in-text/select-in-text.component.mjs +0 -103
- package/esm2020/lib/components/selects/select-items.dto.mjs +0 -2
- package/wizishop-angular-components-15.1.5.tgz +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import { OPTION_SELECTION_HANDLER } from './option-selection-handler.token';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// todo create a select module and in the select-option.directive.ts
|
|
5
|
+
export class SelectOptionDirective {
|
|
6
|
+
onClick(event) {
|
|
7
|
+
this.onSelectOption();
|
|
8
|
+
if (this.onClickEventPreventDefault) {
|
|
9
|
+
event.preventDefault();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
get isOptionSelected() {
|
|
13
|
+
return this.selected;
|
|
14
|
+
}
|
|
15
|
+
get isOptionDisabled() {
|
|
16
|
+
return this.disabled || this.disabledByParent;
|
|
17
|
+
}
|
|
18
|
+
get cursor() {
|
|
19
|
+
return this.disabled || this.disabledByParent ? 'not-allowed' : 'pointer';
|
|
20
|
+
}
|
|
21
|
+
constructor(contentRef, changeDetectorRef) {
|
|
22
|
+
this.contentRef = contentRef;
|
|
23
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
24
|
+
this.disabled = false;
|
|
25
|
+
this.disabledByParent = false;
|
|
26
|
+
this.selected = false;
|
|
27
|
+
this.onClickEventPreventDefault = true;
|
|
28
|
+
this.selectedChange = new EventEmitter();
|
|
29
|
+
this.multiple = false;
|
|
30
|
+
}
|
|
31
|
+
setSelected(selected) {
|
|
32
|
+
this.selected = selected;
|
|
33
|
+
this.changeDetectorRef.markForCheck();
|
|
34
|
+
}
|
|
35
|
+
onSelectOption() {
|
|
36
|
+
if (this.disabled || this.disabledByParent) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.selected = this.multiple ? !this.selected : true; // If not multiple mode -> can not be unselected
|
|
40
|
+
this.selectedChange.emit(this.selected);
|
|
41
|
+
this.changeDetectorRef.markForCheck();
|
|
42
|
+
}
|
|
43
|
+
getValue() {
|
|
44
|
+
return this.value;
|
|
45
|
+
}
|
|
46
|
+
setValue(value) {
|
|
47
|
+
this.value = value;
|
|
48
|
+
this.changeDetectorRef.markForCheck();
|
|
49
|
+
}
|
|
50
|
+
isSelected() {
|
|
51
|
+
return this.selected;
|
|
52
|
+
}
|
|
53
|
+
getContentRef() {
|
|
54
|
+
return this.contentRef;
|
|
55
|
+
}
|
|
56
|
+
setDisabledState(isDisabled) {
|
|
57
|
+
this.disabledByParent = isDisabled;
|
|
58
|
+
this.changeDetectorRef.markForCheck();
|
|
59
|
+
}
|
|
60
|
+
setMultiple(multiple) {
|
|
61
|
+
this.multiple = multiple;
|
|
62
|
+
this.changeDetectorRef.markForCheck();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
SelectOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectOptionDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
66
|
+
SelectOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: SelectOptionDirective, selector: "[wacOption]", inputs: { disabled: "disabled", value: "value", selected: "selected", onClickEventPreventDefault: "onClickEventPreventDefault" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.wac-option-selected": "this.isOptionSelected", "class.wac-option-disabled": "this.isOptionDisabled", "style.cursor": "this.cursor" } }, providers: [{ provide: OPTION_SELECTION_HANDLER, useExisting: SelectOptionDirective }], exportAs: ["wacOption"], ngImport: i0 });
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectOptionDirective, decorators: [{
|
|
68
|
+
type: Directive,
|
|
69
|
+
args: [{
|
|
70
|
+
selector: '[wacOption]',
|
|
71
|
+
providers: [{ provide: OPTION_SELECTION_HANDLER, useExisting: SelectOptionDirective }],
|
|
72
|
+
exportAs: 'wacOption'
|
|
73
|
+
}]
|
|
74
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onClick: [{
|
|
75
|
+
type: HostListener,
|
|
76
|
+
args: ['click', ['$event']]
|
|
77
|
+
}], isOptionSelected: [{
|
|
78
|
+
type: HostBinding,
|
|
79
|
+
args: ['class.wac-option-selected']
|
|
80
|
+
}], isOptionDisabled: [{
|
|
81
|
+
type: HostBinding,
|
|
82
|
+
args: ['class.wac-option-disabled']
|
|
83
|
+
}], cursor: [{
|
|
84
|
+
type: HostBinding,
|
|
85
|
+
args: ['style.cursor']
|
|
86
|
+
}], disabled: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], value: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], selected: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], onClickEventPreventDefault: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], selectedChange: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}] } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9vcHRpb24vc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFNUUsb0VBQW9FO0FBTXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFFRyxPQUFPLENBQUMsS0FBbUI7UUFDNUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxJQUE4QyxnQkFBZ0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUE4QyxnQkFBZ0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBaUMsTUFBTTtRQUNyQyxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM1RSxDQUFDO0lBb0JELFlBQXNCLFVBQXNCLEVBQVksaUJBQW9DO1FBQXRFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBWSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBakI1RixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVAscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBTW5DLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFakIsK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBRzNDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3QyxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBRThFLENBQUM7SUFFaEcsV0FBVyxDQUFDLFFBQWlCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdEQUFnRDtRQUN2RyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBbUI7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWlCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDOztrSEFoRlUscUJBQXFCO3NHQUFyQixxQkFBcUIsdWFBSHJCLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLENBQUM7MkZBRzNFLHFCQUFxQjtrQkFMakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyx1QkFBdUIsRUFBRSxDQUFDO29CQUN0RixRQUFRLEVBQUUsV0FBVztpQkFDdEI7aUlBR29DLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9hLGdCQUFnQjtzQkFBN0QsV0FBVzt1QkFBQywyQkFBMkI7Z0JBSU0sZ0JBQWdCO3NCQUE3RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFJUCxNQUFNO3NCQUF0QyxXQUFXO3VCQUFDLGNBQWM7Z0JBSzNCLFFBQVE7c0JBRFAsS0FBSztnQkFNTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUdHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFHTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9wdGlvblNlbGVjdGlvbkhhbmRsZXIgfSBmcm9tICcuL29wdGlvbi1zZWxlY3Rpb24taGFuZGxlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1BUSU9OX1NFTEVDVElPTl9IQU5ETEVSIH0gZnJvbSAnLi9vcHRpb24tc2VsZWN0aW9uLWhhbmRsZXIudG9rZW4nO1xuXG4vLyB0b2RvIGNyZWF0ZSBhIHNlbGVjdCBtb2R1bGUgYW5kIGluIHRoZSBzZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZS50c1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3dhY09wdGlvbl0nLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE9QVElPTl9TRUxFQ1RJT05fSEFORExFUiwgdXNlRXhpc3Rpbmc6IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9XSxcbiAgZXhwb3J0QXM6ICd3YWNPcHRpb24nXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdE9wdGlvbkRpcmVjdGl2ZTxUT3B0aW9uVmFsdWU+IGltcGxlbWVudHMgT3B0aW9uU2VsZWN0aW9uSGFuZGxlcjxUT3B0aW9uVmFsdWU+IHtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIG9uQ2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIHRoaXMub25TZWxlY3RPcHRpb24oKTtcbiAgICBpZiAodGhpcy5vbkNsaWNrRXZlbnRQcmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndhYy1vcHRpb24tc2VsZWN0ZWQnKSBnZXQgaXNPcHRpb25TZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2FjLW9wdGlvbi1kaXNhYmxlZCcpIGdldCBpc09wdGlvbkRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWRCeVBhcmVudDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuY3Vyc29yJykgZ2V0IGN1cnNvciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEJ5UGFyZW50ID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGRpc2FibGVkQnlQYXJlbnQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB2YWx1ZTogVE9wdGlvblZhbHVlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgb25DbGlja0V2ZW50UHJldmVudERlZmF1bHQgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjb250ZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHNldFNlbGVjdGVkKHNlbGVjdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvblNlbGVjdE9wdGlvbigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkQnlQYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMubXVsdGlwbGUgPyAhdGhpcy5zZWxlY3RlZCA6IHRydWU7IC8vIElmIG5vdCBtdWx0aXBsZSBtb2RlIC0+IGNhbiBub3QgYmUgdW5zZWxlY3RlZFxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogVE9wdGlvblZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkO1xuICB9XG5cbiAgZ2V0Q29udGVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRSZWY7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkQnlQYXJlbnQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzZXRNdWx0aXBsZShtdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMubXVsdGlwbGUgPSBtdWx0aXBsZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59Il19
|
|
@@ -9,4 +9,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
|
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'wac-option-call-to-action', template: "\n<div class=\"wac-option-call-to-action\">\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n\n" }]
|
|
11
11
|
}], ctorParameters: function () { return []; } });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWNhbGwtdG8tYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L29wdGlvbi1jYWxsLXRvLWFjdGlvbi9vcHRpb24tY2FsbC10by1hY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvb3B0aW9uLWNhbGwtdG8tYWN0aW9uL29wdGlvbi1jYWxsLXRvLWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU14QyxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLGdCQUFlLENBQUM7O3dIQUZMLDJCQUEyQjs0R0FBM0IsMkJBQTJCLGlFQ054QywyR0FPQTsyRkREYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtb3B0aW9uLWNhbGwtdG8tYWN0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29wdGlvbi1jYWxsLXRvLWFjdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uQ2FsbFRvQWN0aW9uQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJ3YWMtb3B0aW9uLWNhbGwtdG8tYWN0aW9uXCI+XG4gIDxkaXY+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { ValueChangeService } from './value-change.service';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { SelectSearchTriggerComponent } from '../select-search-trigger/select-search-trigger.component';
|
|
7
|
+
import { DOWN_ARROW, ENTER, ESCAPE, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW, } from '@angular/cdk/keycodes';
|
|
8
|
+
import { LabelComponent } from '../../common/label/label.component';
|
|
9
|
+
import { SelectDirective } from './select.directive';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "./value-change.service";
|
|
12
|
+
import * as i2 from "@angular/common";
|
|
13
|
+
import * as i3 from "../../../directives/auto-hide/auto-hide.directive";
|
|
14
|
+
import * as i4 from "../../../directives/zindex-toggle/zindex-toggle.directive";
|
|
15
|
+
import * as i5 from "ngx-perfect-scrollbar";
|
|
16
|
+
import * as i6 from "@ngx-translate/core";
|
|
17
|
+
export class SelectComponent extends SelectDirective {
|
|
18
|
+
/** Whether the component is required. */
|
|
19
|
+
get required() {
|
|
20
|
+
return this._required ?? false;
|
|
21
|
+
}
|
|
22
|
+
set required(value) {
|
|
23
|
+
this._required = value;
|
|
24
|
+
}
|
|
25
|
+
get selectedOptionContent() {
|
|
26
|
+
return this.valueChangeService.selectedOptionContent;
|
|
27
|
+
}
|
|
28
|
+
;
|
|
29
|
+
set keepPanelOpen(keepPanelOpen) {
|
|
30
|
+
this.openPanel = keepPanelOpen;
|
|
31
|
+
this._keepPanelOpen = keepPanelOpen;
|
|
32
|
+
}
|
|
33
|
+
get keepPanelOpen() {
|
|
34
|
+
return this._keepPanelOpen;
|
|
35
|
+
}
|
|
36
|
+
set openPanel(openPanel) {
|
|
37
|
+
const wasOpen = this._openPanel;
|
|
38
|
+
this._openPanel = this.keepPanelOpen || openPanel;
|
|
39
|
+
if (openPanel) {
|
|
40
|
+
this.customSearchTrigger?.setFocus();
|
|
41
|
+
}
|
|
42
|
+
if (wasOpen) {
|
|
43
|
+
this.onSelectTouch(this.value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
get openPanel() {
|
|
47
|
+
return this._openPanel;
|
|
48
|
+
}
|
|
49
|
+
constructor(valueChangeService) {
|
|
50
|
+
super(valueChangeService);
|
|
51
|
+
this.valueChangeService = valueChangeService;
|
|
52
|
+
//! Refacto improve sroll on mobile, see with Pauline
|
|
53
|
+
// angular material select https://github.com/angular/components/blob/main/src/material/select/select.ts
|
|
54
|
+
this.role = 'combobox';
|
|
55
|
+
this._openPanel = false;
|
|
56
|
+
this.openPanelChange = new EventEmitter();
|
|
57
|
+
this.tabIndex = -1;
|
|
58
|
+
this.isDestroyed$ = new Subject();
|
|
59
|
+
this.isKeyBoardAction = false;
|
|
60
|
+
this.skipIfTriggeredByKeyboardAction = () => {
|
|
61
|
+
if (!this.isKeyBoardAction) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
this.isKeyBoardAction = false;
|
|
65
|
+
return false;
|
|
66
|
+
};
|
|
67
|
+
this.onSelectTouch = () => { };
|
|
68
|
+
}
|
|
69
|
+
ngOnInit() {
|
|
70
|
+
super.ngOnInit();
|
|
71
|
+
this.closeTabOnValueChange();
|
|
72
|
+
}
|
|
73
|
+
closeTabOnValueChange() {
|
|
74
|
+
this.valueChangeService.valueChange$.pipe(takeUntil(this.isDestroyed$), filter(this.skipIfTriggeredByKeyboardAction)).subscribe(() => {
|
|
75
|
+
this.onClosePanel();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
onTogglePanel() {
|
|
79
|
+
this.openPanel = !this.openPanel;
|
|
80
|
+
this.openPanelChange.emit(this.openPanel);
|
|
81
|
+
}
|
|
82
|
+
onClosePanel() {
|
|
83
|
+
this.openPanel = false;
|
|
84
|
+
this.openPanelChange.emit(this.openPanel);
|
|
85
|
+
}
|
|
86
|
+
onKeydown(event) {
|
|
87
|
+
const keyCode = event.keyCode;
|
|
88
|
+
if (event.keyCode === TAB) {
|
|
89
|
+
// go to the next element with tabindex
|
|
90
|
+
if (this.openPanel) {
|
|
91
|
+
this.openPanel = false;
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (this.disabled) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const actionTriggered = this.openPanel ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);
|
|
99
|
+
if (actionTriggered) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.isKeyBoardAction = true;
|
|
103
|
+
super.onKeydown(event);
|
|
104
|
+
}
|
|
105
|
+
handleKeyboardActionWithSearch(event) {
|
|
106
|
+
const keyCode = event.keyCode;
|
|
107
|
+
if (keyCode === DOWN_ARROW) {
|
|
108
|
+
this.isKeyBoardAction = true;
|
|
109
|
+
this.valueChangeService.selectNextOption();
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (keyCode === UP_ARROW) {
|
|
113
|
+
this.isKeyBoardAction = true;
|
|
114
|
+
this.valueChangeService.selectPreviousOption();
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
/** Handles keyboard events while the select is closed. */
|
|
120
|
+
_handleClosedKeydown(event) {
|
|
121
|
+
const keyCode = event.keyCode;
|
|
122
|
+
const isArrowKey = keyCode === DOWN_ARROW ||
|
|
123
|
+
keyCode === UP_ARROW ||
|
|
124
|
+
keyCode === LEFT_ARROW ||
|
|
125
|
+
keyCode === RIGHT_ARROW;
|
|
126
|
+
const isOpenKey = keyCode === ENTER;
|
|
127
|
+
// Open the select on ALT + arrow key to match the native <select>
|
|
128
|
+
if ((isOpenKey && !hasModifierKey(event)) ||
|
|
129
|
+
(event.altKey && isArrowKey)) {
|
|
130
|
+
this.openPanel = true;
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
/** Handles keyboard events when the selected is open. */
|
|
136
|
+
_handleOpenKeydown(event) {
|
|
137
|
+
const keyCode = event.keyCode;
|
|
138
|
+
const isArrowKey = keyCode === DOWN_ARROW ||
|
|
139
|
+
keyCode === UP_ARROW ||
|
|
140
|
+
keyCode === LEFT_ARROW ||
|
|
141
|
+
keyCode === RIGHT_ARROW;
|
|
142
|
+
const isEscapeKey = keyCode === ESCAPE || keyCode === ENTER || keyCode === TAB;
|
|
143
|
+
if ((isArrowKey && event.altKey) || isEscapeKey) {
|
|
144
|
+
// Close the select on ALT + arrow key to match the native <select>
|
|
145
|
+
this.openPanel = false;
|
|
146
|
+
if (this.customSearchTrigger && keyCode !== TAB) {
|
|
147
|
+
// If a escape key is used with the search, the focus on the select is loosed. And we can not interact with the select anymore.
|
|
148
|
+
this.selectHeader.nativeElement.focus();
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
registerOnTouched(fn) {
|
|
155
|
+
this.onSelectTouch = fn;
|
|
156
|
+
}
|
|
157
|
+
ngOnDestroy() {
|
|
158
|
+
this.isDestroyed$.next();
|
|
159
|
+
this.isDestroyed$.complete();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectComponent, deps: [{ token: i1.ValueChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
+
SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: SelectComponent, selector: "wac-select", inputs: { required: "required", keepPanelOpen: "keepPanelOpen", openPanel: "openPanel" }, outputs: { openPanelChange: "openPanelChange" }, host: { properties: { "attr.role": "this.role" } }, providers: [
|
|
164
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true },
|
|
165
|
+
ValueChangeService
|
|
166
|
+
], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n<div\n class=\"wac-select\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!selectedOptionContent\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select__header__selection wac-option__placeholder\"\n *ngIf=\"!!selectedOptionContent\"\n [innerHtml]=\"selectedOptionContent\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectComponent, decorators: [{
|
|
168
|
+
type: Component,
|
|
169
|
+
args: [{ selector: 'wac-select', providers: [
|
|
170
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true },
|
|
171
|
+
ValueChangeService
|
|
172
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: "<p *ngIf=\"!!label\" class=\"wac-select__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n<div\n class=\"wac-select\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!selectedOptionContent\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select__header__selection wac-option__placeholder\"\n *ngIf=\"!!selectedOptionContent\"\n [innerHtml]=\"selectedOptionContent\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>" }]
|
|
173
|
+
}], ctorParameters: function () { return [{ type: i1.ValueChangeService }]; }, propDecorators: { role: [{
|
|
174
|
+
type: HostBinding,
|
|
175
|
+
args: ['attr.role']
|
|
176
|
+
}], customSearchTrigger: [{
|
|
177
|
+
type: ContentChild,
|
|
178
|
+
args: [SelectSearchTriggerComponent]
|
|
179
|
+
}], label: [{
|
|
180
|
+
type: ContentChild,
|
|
181
|
+
args: [LabelComponent]
|
|
182
|
+
}], selectHeader: [{
|
|
183
|
+
type: ViewChild,
|
|
184
|
+
args: ['selectHeader']
|
|
185
|
+
}], required: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], keepPanelOpen: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], openPanel: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], openPanelChange: [{
|
|
192
|
+
type: Output
|
|
193
|
+
}] } });
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2TCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEdBQUcsRUFDSCxRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQWFyRCxNQUFNLE9BQU8sZUFBOEIsU0FBUSxlQUE2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RUFBRSxDQUFDO2FBQ3pDO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUlRLGlCQUFpQixDQUFDLEVBQU87UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7NEdBbE1VLGVBQWU7Z0dBQWYsZUFBZSxvT0FQZjtRQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtRQUN6RSxrQkFBa0I7S0FDbkIsMkVBVWEsNEJBQTRCLHdFQUU1QixjQUFjLHFMQ3RDOUIsdzZEQXFETTsyRkR2Qk8sZUFBZTtrQkFWM0IsU0FBUzsrQkFDRSxZQUFZLGFBRVg7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUN6RSxrQkFBa0I7cUJBQ25CLGlCQUNjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE9BQU87eUdBTXRCLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFFb0IsbUJBQW1CO3NCQUE5RCxZQUFZO3VCQUFDLDRCQUE0QjtnQkFFWixLQUFLO3NCQUFsQyxZQUFZO3VCQUFDLGNBQWM7Z0JBRUQsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUlyQixRQUFRO3NCQURYLEtBQUs7Z0JBZ0JGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQW1CSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVmFsdWVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS1jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hUcmlnZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LXNlYXJjaC10cmlnZ2VyL3NlbGVjdC1zZWFyY2gtdHJpZ2dlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgaGFzTW9kaWZpZXJLZXksXG4gIExFRlRfQVJST1csXG4gIFJJR0hUX0FSUk9XLFxuICBUQUIsXG4gIFVQX0FSUk9XLFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdERpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0LmRpcmVjdGl2ZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FjLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgIFZhbHVlQ2hhbmdlU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudDxUT3B0aW9uVmFsdWU+IGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlPFRPcHRpb25WYWx1ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vISBSZWZhY3RvIGltcHJvdmUgc3JvbGwgb24gbW9iaWxlLCBzZWUgd2l0aCBQYXVsaW5lXG4gIC8vIGFuZ3VsYXIgbWF0ZXJpYWwgc2VsZWN0IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9tYXRlcmlhbC9zZWxlY3Qvc2VsZWN0LnRzXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2NvbWJvYm94JztcblxuICBAQ29udGVudENoaWxkKFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQpIGN1c3RvbVNlYXJjaFRyaWdnZXI6IFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChMYWJlbENvbXBvbmVudCkgbGFiZWw6IExhYmVsQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEhlYWRlcicpIHNlbGVjdEhlYWRlcjogRWxlbWVudFJlZjtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlcXVpcmVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IGZhbHNlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25Db250ZW50O1xuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBrZWVwUGFuZWxPcGVuKGtlZXBQYW5lbE9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGtlZXBQYW5lbE9wZW47XG4gICAgdGhpcy5fa2VlcFBhbmVsT3BlbiA9IGtlZXBQYW5lbE9wZW47XG4gIH1cblxuICBnZXQga2VlcFBhbmVsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fa2VlcFBhbmVsT3BlbiA7XG4gIH1cblxuICBwcml2YXRlIF9rZWVwUGFuZWxPcGVuOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBvcGVuUGFuZWwob3BlblBhbmVsOiBib29sZWFuKSB7XG4gICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuX29wZW5QYW5lbDtcbiAgICB0aGlzLl9vcGVuUGFuZWwgPSB0aGlzLmtlZXBQYW5lbE9wZW4gfHwgb3BlblBhbmVsO1xuXG4gICAgaWYgKG9wZW5QYW5lbCkge1xuICAgICAgdGhpcy5jdXN0b21TZWFyY2hUcmlnZ2VyPy5zZXRGb2N1cygpO1xuICAgIH1cblxuICAgIGlmICh3YXNPcGVuKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0VG91Y2godGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wZW5QYW5lbCgpIDogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5QYW5lbDtcbiAgfVxuICBfb3BlblBhbmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9wZW5QYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBvdmVycmlkZSB0YWJJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgaXNEZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGlzS2V5Qm9hcmRBY3Rpb24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdmFsdWVDaGFuZ2VTZXJ2aWNlOiBWYWx1ZUNoYW5nZVNlcnZpY2U8VE9wdGlvblZhbHVlPixcbiAgICApIHtcbiAgICAgIHN1cGVyKHZhbHVlQ2hhbmdlU2VydmljZSk7XG4gICAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5jbG9zZVRhYk9uVmFsdWVDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VUYWJPblZhbHVlQ2hhbmdlKCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5waXBlKHRha2VVbnRpbCh0aGlzLmlzRGVzdHJveWVkJCksIGZpbHRlcih0aGlzLnNraXBJZlRyaWdnZXJlZEJ5S2V5Ym9hcmRBY3Rpb24pKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNsb3NlUGFuZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcElmVHJpZ2dlcmVkQnlLZXlib2FyZEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZighdGhpcy5pc0tleUJvYXJkQWN0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pc0tleUJvYXJkQWN0aW9uID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGVQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9ICF0aGlzLm9wZW5QYW5lbDtcbiAgICB0aGlzLm9wZW5QYW5lbENoYW5nZS5lbWl0KHRoaXMub3BlblBhbmVsKTtcbiAgfVxuXG4gIG9uQ2xvc2VQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMub3BlblBhbmVsQ2hhbmdlLmVtaXQodGhpcy5vcGVuUGFuZWwpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFRBQikge1xuICAgICAgLy8gZ28gdG8gdGhlIG5leHQgZWxlbWVudCB3aXRoIHRhYmluZGV4XG4gICAgICBpZiAodGhpcy5vcGVuUGFuZWwpIHtcbiAgICAgICAgdGhpcy5vcGVuUGFuZWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb25UcmlnZ2VyZWQgPSB0aGlzLm9wZW5QYW5lbCA/IHRoaXMuX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50KSA6IHRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQpO1xuXG4gICAgaWYgKGFjdGlvblRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xuICAgIHN1cGVyLm9uS2V5ZG93bihldmVudCk7XG4gIH1cblxuICBoYW5kbGVLZXlib2FyZEFjdGlvbldpdGhTZWFyY2goZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcblxuICAgIGlmIChrZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0TmV4dE9wdGlvbigpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChrZXlDb2RlID09PSBVUF9BUlJPVykge1xuICAgICAgdGhpcy5pc0tleUJvYXJkQWN0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnNlbGVjdFByZXZpb3VzT3B0aW9uKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIHdoaWxlIHRoZSBzZWxlY3QgaXMgY2xvc2VkLiAqL1xuICBwcml2YXRlIF9oYW5kbGVDbG9zZWRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNBcnJvd0tleSA9XG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBVUF9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gTEVGVF9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XG4gICAgY29uc3QgaXNPcGVuS2V5ID0ga2V5Q29kZSA9PT0gRU5URVI7XG4gICAgLy8gT3BlbiB0aGUgc2VsZWN0IG9uIEFMVCArIGFycm93IGtleSB0byBtYXRjaCB0aGUgbmF0aXZlIDxzZWxlY3Q+XG4gICAgaWYgKFxuICAgICAgKGlzT3BlbktleSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB8fFxuICAgICAgKGV2ZW50LmFsdEtleSAmJiBpc0Fycm93S2V5KVxuICAgICkge1xuICAgICAgdGhpcy5vcGVuUGFuZWwgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIHdoZW4gdGhlIHNlbGVjdGVkIGlzIG9wZW4uICovXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNBcnJvd0tleSA9XG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBVUF9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gTEVGVF9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XG4gICAgY29uc3QgaXNFc2NhcGVLZXkgPSBrZXlDb2RlID09PSBFU0NBUEUgfHwga2V5Q29kZSA9PT0gRU5URVIgfHwga2V5Q29kZSA9PT0gVEFCO1xuXG4gICAgaWYgKChpc0Fycm93S2V5ICYmIGV2ZW50LmFsdEtleSkgfHwgaXNFc2NhcGVLZXkpIHtcbiAgICAgIC8vIENsb3NlIHRoZSBzZWxlY3Qgb24gQUxUICsgYXJyb3cga2V5IHRvIG1hdGNoIHRoZSBuYXRpdmUgPHNlbGVjdD5cbiAgICAgIHRoaXMub3BlblBhbmVsID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLmN1c3RvbVNlYXJjaFRyaWdnZXIgJiYga2V5Q29kZSAhPT0gVEFCKSB7XG4gICAgICAgIC8vIElmIGEgZXNjYXBlIGtleSBpcyB1c2VkIHdpdGggdGhlIHNlYXJjaCwgdGhlIGZvY3VzIG9uIHRoZSBzZWxlY3QgaXMgbG9vc2VkLiBBbmQgd2UgY2FuIG5vdCBpbnRlcmFjdCB3aXRoIHRoZSBzZWxlY3QgYW55bW9yZS5cbiAgICAgICAgdGhpcy5zZWxlY3RIZWFkZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25TZWxlY3RUb3VjaDogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBvdmVycmlkZSByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KXtcbiAgICB0aGlzLm9uU2VsZWN0VG91Y2ggPSBmbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaXNEZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmlzRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8cCAqbmdJZj1cIiEhbGFiZWxcIiBjbGFzcz1cIndhYy1zZWxlY3RfX2xhYmVsXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIndhYy1sYWJlbCwgLndhYy1sYWJlbFwiID48L25nLWNvbnRlbnQ+XG48L3A+XG5cbjxkaXZcbiAgY2xhc3M9XCJ3YWMtc2VsZWN0XCJcbiAgd3pBdXRvSGlkZVxuICAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xvc2VQYW5lbCgpXCJcbiAgW3RyaWdnZXJFbGVtZW50XT1cIid3YWMtc2VsZWN0X19oZWFkZXJfX3NlbGVjdGlvbidcIlxuICBbekluZGV4VG9nZ2xlXT1cIm9wZW5QYW5lbFwiXG4gID5cblxuICAgIDxkaXYgI3NlbGVjdEhlYWRlciBjbGFzcz1cIndhYy1zZWxlY3RfX2hlYWRlclwiIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdC1kaXNhYmxlZCcgOiBkaXNhYmxlZCB9XCIgKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiBvblRvZ2dsZVBhbmVsKClcIiB0YWJpbmRleD1cIjBcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJvcGVuUGFuZWwgPyBvcGVuUGFuZWxUcmlnZ2VyIDogY2xvc2VQYW5lbFRyaWdnZXJcIiA+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjbG9zZVBhbmVsVHJpZ2dlcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlZmF1bHRUcmlnZ2VyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcGVuUGFuZWxUcmlnZ2VyPlxuICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiISFjdXN0b21TZWFyY2hUcmlnZ2VyOyBlbHNlIGRlZmF1bHRUcmlnZ2VyXCIgc2VsZWN0PVwid2FjLXNlbGVjdC1zZWFyY2gtdHJpZ2dlclwiID48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VHJpZ2dlcj5cbiAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzZWxlY3RlZE9wdGlvbkNvbnRlbnRcIiBzZWxlY3Q9XCJ3YWMtcGxhY2Vob2xkZXIsW3JvbGU9cGxhY2Vob2xkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwid2FjLXNlbGVjdF9faGVhZGVyX19zZWxlY3Rpb24gd2FjLW9wdGlvbl9fcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhIXNlbGVjdGVkT3B0aW9uQ29udGVudFwiXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cInNlbGVjdGVkT3B0aW9uQ29udGVudFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJ3YWMtc2VsZWN0X19oZWFkZXJfX2NoZXZyb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9zcGFuPlxuXG4gICAgPC9kaXY+XG5cblxuICAgIDxkaXYgY2xhc3M9XCJ3YWMtc2VsZWN0X19jb250ZW50XCIgKm5nSWY9XCIhZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7IGhpZGRlbjogIW9wZW5QYW5lbCwgb3Blbjogb3BlblBhbmVsIH1cIj5cblxuICAgICAgPHBlcmZlY3Qtc2Nyb2xsYmFyIFtjb25maWddPVwieyBzdXBwcmVzc1Njcm9sbFg6IHRydWUgfVwiPlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgIHNlbGVjdD1cIndhYy1vcHRpb24tY2FsbC10by1hY3Rpb24sIHdhYy1vcHRpb24sIG9wdGlvbiwgLm9wdGlvbiwgW3NlbGVjdE9wdGlvbl1cIj5cbiAgICAgICAgPC9uZy1jb250ZW50PlxuICAgICAgPC9wZXJmZWN0LXNjcm9sbGJhcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFvcHRpb25DaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJ3YWMtc2VsZWN0X19jb250ZW50X19lbXB0eVwiPlxuICAgICAgICA8c3Bhbj57eyd3YWMuZGF0YXRhYmxlLm5vcmVzdWx0JyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes';
|
|
2
|
+
import { ContentChildren, Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
+
import { startWith, Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { OPTION_SELECTION_HANDLER } from '../option/option-selection-handler.token';
|
|
6
|
+
import { ValueChangeService } from './value-change.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./value-change.service";
|
|
9
|
+
export class SelectDirective {
|
|
10
|
+
get tabindex() {
|
|
11
|
+
return this.tabIndex;
|
|
12
|
+
}
|
|
13
|
+
get isSelectDisabled() {
|
|
14
|
+
return this.disabled;
|
|
15
|
+
}
|
|
16
|
+
/** Handles all keydown events on the select. */
|
|
17
|
+
onKeydown(event) {
|
|
18
|
+
if (event.keyCode === TAB) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (this.disabled) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.handleKeyboardAction(event);
|
|
25
|
+
}
|
|
26
|
+
set value(value) {
|
|
27
|
+
this._value = value;
|
|
28
|
+
if (!this.optionChildren) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.valueChangeService.assignValue(value);
|
|
32
|
+
}
|
|
33
|
+
get value() {
|
|
34
|
+
return this._value;
|
|
35
|
+
}
|
|
36
|
+
get multiple() {
|
|
37
|
+
return this._multiple;
|
|
38
|
+
}
|
|
39
|
+
set multiple(value) {
|
|
40
|
+
this._multiple = value;
|
|
41
|
+
this.valueChangeService.setMultiple(value);
|
|
42
|
+
}
|
|
43
|
+
set disabled(disabled) {
|
|
44
|
+
this._disabled = disabled;
|
|
45
|
+
this.valueChangeService.setDisabledState(disabled);
|
|
46
|
+
}
|
|
47
|
+
get disabled() {
|
|
48
|
+
return this._disabled;
|
|
49
|
+
}
|
|
50
|
+
constructor(valueChangeService) {
|
|
51
|
+
this.valueChangeService = valueChangeService;
|
|
52
|
+
this.valueChange = new EventEmitter();
|
|
53
|
+
this._multiple = false;
|
|
54
|
+
this._disabled = false;
|
|
55
|
+
this.tabIndex = 0;
|
|
56
|
+
this.isDestroyed$ = new Subject();
|
|
57
|
+
// ControlValueAccessor methods
|
|
58
|
+
this.onChange = () => { };
|
|
59
|
+
this.onTouch = () => { };
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
this.handleValueChange();
|
|
63
|
+
}
|
|
64
|
+
ngAfterViewInit() {
|
|
65
|
+
this.handleOptionChildren();
|
|
66
|
+
}
|
|
67
|
+
handleValueChange() {
|
|
68
|
+
this.valueChangeService.valueChange$.pipe(takeUntil(this.isDestroyed$)).subscribe(value => {
|
|
69
|
+
this._value = value;
|
|
70
|
+
this.valueChange.emit(this.value);
|
|
71
|
+
this.onChange(this.value);
|
|
72
|
+
this.onTouch(this.value);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
handleOptionChildren() {
|
|
76
|
+
this.optionChildren.changes.pipe(takeUntil(this.isDestroyed$), startWith(this.optionChildren)).subscribe(optionChildren => {
|
|
77
|
+
this.valueChangeService.handleSelectOptionsChange(optionChildren, this.value);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** Handles keyboard events when the selected is open. */
|
|
81
|
+
handleKeyboardAction(event) {
|
|
82
|
+
const keyCode = event.keyCode;
|
|
83
|
+
const isArrowKey = keyCode === DOWN_ARROW ||
|
|
84
|
+
keyCode === UP_ARROW ||
|
|
85
|
+
keyCode === LEFT_ARROW ||
|
|
86
|
+
keyCode === RIGHT_ARROW;
|
|
87
|
+
// const isTyping = (keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE);
|
|
88
|
+
if (isArrowKey) {
|
|
89
|
+
event.preventDefault(); // prevents the page from scrolling
|
|
90
|
+
// select the next option on arrow key down
|
|
91
|
+
if (keyCode === DOWN_ARROW || keyCode === RIGHT_ARROW) {
|
|
92
|
+
this.valueChangeService.selectNextOption();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.valueChangeService.selectPreviousOption();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
/*
|
|
99
|
+
if (isTyping) {
|
|
100
|
+
this.valueChangeService.searchOptionByFirstLetter(event.key);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
*/
|
|
104
|
+
}
|
|
105
|
+
writeValue(value) {
|
|
106
|
+
if (typeof value === 'undefined') {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.value = value;
|
|
110
|
+
}
|
|
111
|
+
registerOnChange(fn) {
|
|
112
|
+
this.onChange = fn;
|
|
113
|
+
}
|
|
114
|
+
registerOnTouched(fn) {
|
|
115
|
+
this.onTouch = fn;
|
|
116
|
+
}
|
|
117
|
+
setDisabledState(isDisabled) {
|
|
118
|
+
this.disabled = isDisabled;
|
|
119
|
+
}
|
|
120
|
+
;
|
|
121
|
+
ngOnDestroy() {
|
|
122
|
+
this.isDestroyed$.next();
|
|
123
|
+
this.isDestroyed$.complete();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
SelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectDirective, deps: [{ token: i1.ValueChangeService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
127
|
+
SelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: SelectDirective, selector: "[wacSelect]", inputs: { value: "value", multiple: "multiple", disabled: "disabled", tabIndex: "tabIndex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "attr.tabindex": "this.tabindex", "class.wac-select-disabled": "this.isSelectDisabled" } }, providers: [
|
|
128
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectDirective, multi: true },
|
|
129
|
+
ValueChangeService
|
|
130
|
+
], queries: [{ propertyName: "optionChildren", predicate: OPTION_SELECTION_HANDLER, descendants: true }], exportAs: ["wacSelect"], ngImport: i0 });
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SelectDirective, decorators: [{
|
|
132
|
+
type: Directive,
|
|
133
|
+
args: [{
|
|
134
|
+
selector: '[wacSelect]',
|
|
135
|
+
providers: [
|
|
136
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectDirective, multi: true },
|
|
137
|
+
ValueChangeService
|
|
138
|
+
],
|
|
139
|
+
exportAs: 'wacSelect'
|
|
140
|
+
}]
|
|
141
|
+
}], ctorParameters: function () { return [{ type: i1.ValueChangeService }]; }, propDecorators: { tabindex: [{
|
|
142
|
+
type: HostBinding,
|
|
143
|
+
args: ['attr.tabindex']
|
|
144
|
+
}], isSelectDisabled: [{
|
|
145
|
+
type: HostBinding,
|
|
146
|
+
args: ['class.wac-select-disabled']
|
|
147
|
+
}], onKeydown: [{
|
|
148
|
+
type: HostListener,
|
|
149
|
+
args: ['keydown', ['$event']]
|
|
150
|
+
}], optionChildren: [{
|
|
151
|
+
type: ContentChildren,
|
|
152
|
+
args: [OPTION_SELECTION_HANDLER, { descendants: true }]
|
|
153
|
+
}], value: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], valueChange: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], multiple: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], disabled: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], tabIndex: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}] } });
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQW9CLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdHLE9BQU8sRUFBaUIsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFXNUQsTUFBTSxPQUFPLGVBQWU7SUFFeEIsSUFBa0MsUUFBUTtRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQThDLGdCQUFnQjtRQUM1RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGdEQUFnRDtJQUNYLFNBQVMsQ0FBQyxLQUFvQjtRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFO1lBQ3pCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENB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ZUFBZTtrQkFUM0IsU0FBUzttQkFDUjtvQkFDRSxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsU0FBUyxFQUFFO3dCQUNQLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDekUsa0JBQWtCO3FCQUNuQjtvQkFDSCxRQUFRLEVBQUUsV0FBVztpQkFDeEI7eUdBR3FDLFFBQVE7c0JBQXpDLFdBQVc7dUJBQUMsZUFBZTtnQkFJa0IsZ0JBQWdCO3NCQUE3RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFLSCxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVc0MsY0FBYztzQkFBdEYsZUFBZTt1QkFBQyx3QkFBK0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBR25FLEtBQUs7c0JBRFIsS0FBSztnQkFpQk4sV0FBVztzQkFEVixNQUFNO2dCQUlILFFBQVE7c0JBRFgsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBV0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgQSwgWiwgWkVSTywgTklORSwgVEFCIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vb3B0aW9uL29wdGlvbi1zZWxlY3Rpb24taGFuZGxlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1BUSU9OX1NFTEVDVElPTl9IQU5ETEVSIH0gZnJvbSAnLi4vb3B0aW9uL29wdGlvbi1zZWxlY3Rpb24taGFuZGxlci50b2tlbic7XG5pbXBvcnQgeyBWYWx1ZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3ZhbHVlLWNoYW5nZS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZShcbiAge1xuICAgIHNlbGVjdG9yOiAnW3dhY1NlbGVjdF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogU2VsZWN0RGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICBWYWx1ZUNoYW5nZVNlcnZpY2VcbiAgICAgIF0sXG4gICAgZXhwb3J0QXM6ICd3YWNTZWxlY3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERpcmVjdGl2ZTxUT3B0aW9uVmFsdWU+IGltcGxlbWVudHMgIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSBnZXQgdGFiaW5kZXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJJbmRleDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLndhYy1zZWxlY3QtZGlzYWJsZWQnKSBnZXQgaXNTZWxlY3REaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVzIGFsbCBrZXlkb3duIGV2ZW50cyBvbiB0aGUgc2VsZWN0LiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKSBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBUQUIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVLZXlib2FyZEFjdGlvbihldmVudCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihPUFRJT05fU0VMRUNUSU9OX0hBTkRMRVIgYXMgYW55LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbkNoaWxkcmVuITogUXVlcnlMaXN0PE9wdGlvblNlbGVjdGlvbkhhbmRsZXI8VE9wdGlvblZhbHVlPj47XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogVE9wdGlvblZhbHVlIHwgVE9wdGlvblZhbHVlW10pIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGlmICghdGhpcy5vcHRpb25DaGlsZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLmFzc2lnblZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSA6IFRPcHRpb25WYWx1ZSB8IFRPcHRpb25WYWx1ZVtdIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgX3ZhbHVlOiBUT3B0aW9uVmFsdWUgfCBUT3B0aW9uVmFsdWVbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgICB9XG4gICAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICB0aGlzLl9tdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2V0TXVsdGlwbGUodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCkgOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cblxuICAgIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgaXNEZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB2YWx1ZUNoYW5nZVNlcnZpY2U6IFZhbHVlQ2hhbmdlU2VydmljZTxUT3B0aW9uVmFsdWU+KSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgdGhpcy5oYW5kbGVPcHRpb25DaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5waXBlKHRha2VVbnRpbCh0aGlzLmlzRGVzdHJveWVkJCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICB0aGlzLm9uVG91Y2godGhpcy52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlT3B0aW9uQ2hpbGRyZW4oKSB7XG4gICAgICAgIHRoaXMub3B0aW9uQ2hpbGRyZW4uY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmlzRGVzdHJveWVkJCksIHN0YXJ0V2l0aCh0aGlzLm9wdGlvbkNoaWxkcmVuKSkuc3Vic2NyaWJlKG9wdGlvbkNoaWxkcmVuID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLmhhbmRsZVNlbGVjdE9wdGlvbnNDaGFuZ2Uob3B0aW9uQ2hpbGRyZW4sIHRoaXMudmFsdWUpO1xuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGVuIHRoZSBzZWxlY3RlZCBpcyBvcGVuLiAqL1xuICAgIHByb3RlY3RlZCBoYW5kbGVLZXlib2FyZEFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICBjb25zdCBpc0Fycm93S2V5ID1cbiAgICAgICAga2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fFxuICAgICAgICBrZXlDb2RlID09PSBVUF9BUlJPVyB8fFxuICAgICAgICBrZXlDb2RlID09PSBMRUZUX0FSUk9XIHx8XG4gICAgICAgIGtleUNvZGUgPT09IFJJR0hUX0FSUk9XO1xuICAgICAgLy8gY29uc3QgaXNUeXBpbmcgPSAoa2V5Q29kZSA+PSBBICYmIGtleUNvZGUgPD0gWikgfHwgKGtleUNvZGUgPj0gWkVSTyAmJiBrZXlDb2RlIDw9IE5JTkUpO1xuICAgICAgaWYgKGlzQXJyb3dLZXkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gcHJldmVudHMgdGhlIHBhZ2UgZnJvbSBzY3JvbGxpbmdcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBuZXh0IG9wdGlvbiBvbiBhcnJvdyBrZXkgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fCBrZXlDb2RlID09PSBSSUdIVF9BUlJPVykge1xuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnNlbGVjdE5leHRPcHRpb24oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0UHJldmlvdXNPcHRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgaWYgKGlzVHlwaW5nKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnNlYXJjaE9wdGlvbkJ5Rmlyc3RMZXR0ZXIoZXZlbnQua2V5KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgICovXG4gICAgfVxuXG4gICAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kc1xuXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBvblRvdWNoOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KXtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KXtcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgIHRoaXMuaXNEZXN0cm95ZWQkLm5leHQoKTtcbiAgICAgIHRoaXMuaXNEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG59XG4iXX0=
|