@ifsworld/granite-components 13.2.6 → 13.2.8
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/esm2022/lib/core/core.module.mjs +5 -2
- package/esm2022/lib/core/overlay-base.mjs +18 -0
- package/esm2022/lib/core/overlay-position-config.mjs +2 -0
- package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
- package/esm2022/lib/core/overlay.service.mjs +90 -0
- package/esm2022/lib/input-field/input-field.component.mjs +4 -9
- package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +2 -2
- package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +10 -13
- package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +30 -167
- package/fesm2022/ifsworld-granite-components.mjs +238 -160
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/lib/core/core.module.d.ts +2 -1
- package/lib/core/overlay-base.d.ts +16 -0
- package/lib/core/overlay-position-config.d.ts +12 -0
- package/lib/core/overlay-trigger-for-base.directive.d.ts +32 -0
- package/lib/core/overlay.service.d.ts +21 -0
- package/lib/input-field/input-field.component.d.ts +0 -1
- package/lib/progress-bar/progress-bar-legend-base.d.ts +3 -12
- package/lib/progress-bar/progress-bar-legend-trigger-for.directive.d.ts +14 -37
- package/package.json +1 -1
|
@@ -1,163 +1,38 @@
|
|
|
1
|
-
import { Directive,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, } from '../core/client-environment';
|
|
5
|
-
import { Directionality } from '@angular/cdk/bidi';
|
|
6
|
-
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
7
|
-
import { GraniteProgressBarLegendComponent } from './progress-bar-legend/progress-bar-legend.component';
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { GraniteOverlayTriggerForBaseDirective } from '../core/overlay-trigger-for-base.directive';
|
|
3
|
+
import { OverlayBaseComponent } from '../core/overlay-base';
|
|
8
4
|
import * as i0 from "@angular/core";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
_clientInput,
|
|
16
|
-
/** Client output device information */
|
|
17
|
-
_clientOutput, _dir, _focusMonitor) {
|
|
18
|
-
this._overlay = _overlay;
|
|
19
|
-
this._element = _element;
|
|
20
|
-
this._viewContainerRef = _viewContainerRef;
|
|
21
|
-
this._outsideClickDispatcher = _outsideClickDispatcher;
|
|
22
|
-
this._clientInput = _clientInput;
|
|
23
|
-
this._clientOutput = _clientOutput;
|
|
24
|
-
this._dir = _dir;
|
|
25
|
-
this._focusMonitor = _focusMonitor;
|
|
26
|
-
this._isLegendOpen = false;
|
|
27
|
-
this._portal = null;
|
|
28
|
-
this._overlayRef = null;
|
|
5
|
+
export class GraniteProgressBarLegendTriggerForDirective extends GraniteOverlayTriggerForBaseDirective {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.isLegendOpen = false;
|
|
9
|
+
this.selector = '.granite-progress-bar-legend';
|
|
10
|
+
this.offsetY = 4;
|
|
29
11
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this._overlayRef.dispose();
|
|
33
|
-
this._overlayRef = null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
openLegend() {
|
|
37
|
-
if (this._isLegendOpen) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
this.legend.direction = this._dir.value === 'rtl' ? 'rtl' : 'ltr';
|
|
41
|
-
this.legend.clientInput = this._clientInput;
|
|
42
|
-
this.legend.clientOutput = this._clientOutput;
|
|
43
|
-
const panelClass = [];
|
|
44
|
-
if (this._clientOutput?.device === 'touch') {
|
|
45
|
-
panelClass.push('granite-overlay-pane-center');
|
|
46
|
-
}
|
|
47
|
-
const scrollStrategy = this._clientOutput?.device !== 'touch'
|
|
48
|
-
? this._overlay.scrollStrategies.reposition()
|
|
49
|
-
: this._overlay.scrollStrategies.block();
|
|
50
|
-
const hasBackdrop = this._clientOutput?.device === 'touch';
|
|
51
|
-
if (!this._overlayRef) {
|
|
52
|
-
const config = new OverlayConfig({
|
|
53
|
-
positionStrategy: this._positionStrategy(),
|
|
54
|
-
backdropClass: 'granite-overlay-dark-glass-backdrop',
|
|
55
|
-
scrollStrategy,
|
|
56
|
-
direction: this._dir,
|
|
57
|
-
panelClass,
|
|
58
|
-
hasBackdrop,
|
|
59
|
-
});
|
|
60
|
-
this._overlayRef = this._overlay.create(config);
|
|
61
|
-
}
|
|
62
|
-
if (!this._portal || this._portal.templateRef !== this.legend.templateRef) {
|
|
63
|
-
this._portal = new TemplatePortal(this.legend.templateRef, this._viewContainerRef);
|
|
64
|
-
}
|
|
65
|
-
this._overlayRef.attach(this._portal);
|
|
66
|
-
this._outsideClickDispatcher.add(this._overlayRef);
|
|
67
|
-
this._overlayRef.outsidePointerEvents().subscribe((event) => {
|
|
68
|
-
event.stopPropagation();
|
|
69
|
-
this.closeLegend();
|
|
70
|
-
});
|
|
71
|
-
this._isLegendOpen = true;
|
|
72
|
-
}
|
|
73
|
-
toggleLegend() {
|
|
74
|
-
if (this._isLegendOpen) {
|
|
75
|
-
this.closeLegend();
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.openLegend();
|
|
79
|
-
}
|
|
12
|
+
get legend() {
|
|
13
|
+
return this.componentRef;
|
|
80
14
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
this._outsideClickDispatcher.remove(this._overlayRef);
|
|
86
|
-
this._overlayRef.detach();
|
|
87
|
-
this._restoreFocus();
|
|
88
|
-
this._isLegendOpen = false;
|
|
15
|
+
set legend(value) {
|
|
16
|
+
this.componentRef = value;
|
|
89
17
|
}
|
|
90
|
-
|
|
18
|
+
handleKeydown(event) {
|
|
91
19
|
if (event.key === 'Enter') {
|
|
92
20
|
event.preventDefault();
|
|
93
|
-
this.
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
_handleClick() {
|
|
97
|
-
this.toggleLegend();
|
|
98
|
-
}
|
|
99
|
-
_restoreFocus(origin = 'program', options) {
|
|
100
|
-
if (this._focusMonitor) {
|
|
101
|
-
this._focusMonitor.focusVia(this._element, origin, options);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this._element.nativeElement.focus(options);
|
|
21
|
+
this.isLegendOpen = this.toggleOverlay(this.isLegendOpen);
|
|
105
22
|
}
|
|
106
23
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
.position()
|
|
110
|
-
.flexibleConnectedTo(this._element)
|
|
111
|
-
.withLockedPosition()
|
|
112
|
-
.withTransformOriginOn('.granite-progress-bar-legend')
|
|
113
|
-
.withPush(false);
|
|
114
|
-
this._setPosition(positionStrategy);
|
|
115
|
-
return positionStrategy;
|
|
24
|
+
handleClick() {
|
|
25
|
+
this.isLegendOpen = this.toggleOverlay(this.isLegendOpen);
|
|
116
26
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
let [originY, originFallbackY] = [overlayY, overlayFallbackY];
|
|
121
|
-
const [overlayX, overlayFallbackX] = [originX, originFallbackX];
|
|
122
|
-
const offsetY = 4;
|
|
123
|
-
originY = overlayY === 'top' ? 'bottom' : 'top';
|
|
124
|
-
originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
|
|
125
|
-
positionStrategy.withPositions([
|
|
126
|
-
{ originX, originY, overlayX, overlayY, offsetY },
|
|
127
|
-
{
|
|
128
|
-
originX: originFallbackX,
|
|
129
|
-
originY,
|
|
130
|
-
overlayX: overlayFallbackX,
|
|
131
|
-
overlayY,
|
|
132
|
-
offsetY,
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
originX,
|
|
136
|
-
originY: originFallbackY,
|
|
137
|
-
overlayX,
|
|
138
|
-
overlayY: overlayFallbackY,
|
|
139
|
-
offsetY: -offsetY,
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
originX: originFallbackX,
|
|
143
|
-
originY: originFallbackY,
|
|
144
|
-
overlayX: overlayFallbackX,
|
|
145
|
-
overlayY: overlayFallbackY,
|
|
146
|
-
offsetY: -offsetY,
|
|
147
|
-
},
|
|
148
|
-
]);
|
|
149
|
-
}
|
|
150
|
-
_positionStrategy() {
|
|
151
|
-
if (this._clientOutput?.device !== 'touch') {
|
|
152
|
-
return this._desktopPositionStrategy();
|
|
153
|
-
}
|
|
154
|
-
return this._touchPositionStrategy();
|
|
27
|
+
onOutsideClick() {
|
|
28
|
+
super.onOutsideClick();
|
|
29
|
+
this.isLegendOpen = false;
|
|
155
30
|
}
|
|
156
|
-
|
|
157
|
-
return this.
|
|
31
|
+
getScrollStrategy() {
|
|
32
|
+
return this.setScrollStrategy('reposition');
|
|
158
33
|
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteProgressBarLegendTriggerForDirective, deps:
|
|
160
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: GraniteProgressBarLegendTriggerForDirective, selector: "[graniteProgressBarLegendTriggerFor]", inputs: { legend: ["graniteProgressBarLegendTriggerFor", "legend"] }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "keydown": "
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteProgressBarLegendTriggerForDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: GraniteProgressBarLegendTriggerForDirective, selector: "[graniteProgressBarLegendTriggerFor]", inputs: { legend: ["graniteProgressBarLegendTriggerFor", "legend"] }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "keydown": "handleKeydown($event)", "click": "handleClick($event)" }, properties: { "attr.aria-expanded": "isLegendOpen || null", "attr.aria-controls": "isLegendOpen ? legend.panelId : null" }, classAttribute: "granite-progress-bar-legend-trigger" }, usesInheritance: true, ngImport: i0 }); }
|
|
161
36
|
}
|
|
162
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteProgressBarLegendTriggerForDirective, decorators: [{
|
|
163
38
|
type: Directive,
|
|
@@ -166,26 +41,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
166
41
|
host: {
|
|
167
42
|
class: 'granite-progress-bar-legend-trigger',
|
|
168
43
|
'aria-haspopup': 'true',
|
|
169
|
-
'[attr.aria-expanded]': '
|
|
170
|
-
'[attr.aria-controls]': '
|
|
171
|
-
'(keydown)': '
|
|
172
|
-
'(click)': '
|
|
44
|
+
'[attr.aria-expanded]': 'isLegendOpen || null',
|
|
45
|
+
'[attr.aria-controls]': 'isLegendOpen ? legend.panelId : null',
|
|
46
|
+
'(keydown)': 'handleKeydown($event)',
|
|
47
|
+
'(click)': 'handleClick($event)',
|
|
173
48
|
},
|
|
174
49
|
}]
|
|
175
|
-
}],
|
|
176
|
-
type: Inject,
|
|
177
|
-
args: [GRANITE_CLIENT_INPUT]
|
|
178
|
-
}, {
|
|
179
|
-
type: Optional
|
|
180
|
-
}] }, { type: undefined, decorators: [{
|
|
181
|
-
type: Inject,
|
|
182
|
-
args: [GRANITE_CLIENT_OUTPUT]
|
|
183
|
-
}, {
|
|
184
|
-
type: Optional
|
|
185
|
-
}] }, { type: i2.Directionality, decorators: [{
|
|
186
|
-
type: Optional
|
|
187
|
-
}] }, { type: i3.FocusMonitor }], propDecorators: { legend: [{
|
|
50
|
+
}], propDecorators: { legend: [{
|
|
188
51
|
type: Input,
|
|
189
52
|
args: ['graniteProgressBarLegendTriggerFor']
|
|
190
53
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLWxlZ2VuZC10cmlnZ2VyLWZvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItbGVnZW5kLXRyaWdnZXItZm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFHTCxPQUFPLEVBQ1AsYUFBYSxFQUNiLDZCQUE2QixHQUk5QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFHTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7QUFheEcsTUFBTSxPQUFPLDJDQUEyQztJQVN0RCxZQUNVLFFBQWlCLEVBQ2pCLFFBQWlDLEVBQ2pDLGlCQUFtQyxFQUNuQyx1QkFBc0Q7SUFFOUQsc0NBQXNDO0lBRy9CLFlBQWtDO0lBRXpDLHVDQUF1QztJQUdoQyxhQUFvQyxFQUduQyxJQUFvQixFQUVwQixhQUEyQjtRQWxCM0IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUF5QjtRQUNqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBK0I7UUFLdkQs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S0FBSyxFQUFFLHFDQUFxQzt3QkFDNUMsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLHNCQUFzQixFQUFFLHVCQUF1Qjt3QkFDL0Msc0JBQXNCLEVBQUUsdUNBQXVDO3dCQUMvRCxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3FCQUNsQztpQkFDRjs7MEJBaUJJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUM1QixRQUFROzswQkFHUixRQUFRO29FQXZCWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIEhvcml6b250YWxDb25uZWN0aW9uUG9zLFxuICBPdmVybGF5LFxuICBPdmVybGF5Q29uZmlnLFxuICBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcbiAgT3ZlcmxheVJlZixcbiAgUG9zaXRpb25TdHJhdGVneSxcbiAgVmVydGljYWxDb25uZWN0aW9uUG9zLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuICBHUkFOSVRFX0NMSUVOVF9JTlBVVCxcbiAgR1JBTklURV9DTElFTlRfT1VUUFVULFxufSBmcm9tICcuLi9jb3JlL2NsaWVudC1lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBHcmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzLWJhci1sZWdlbmQvcHJvZ3Jlc3MtYmFyLWxlZ2VuZC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZ3Jhbml0ZVByb2dyZXNzQmFyTGVnZW5kVHJpZ2dlckZvcl0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQtdHJpZ2dlcicsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ19pc0xlZ2VuZE9wZW4gfHwgbnVsbCcsXG4gICAgJ1thdHRyLmFyaWEtY29udHJvbHNdJzogJ19pc0xlZ2VuZE9wZW4gPyBsZWdlbmQucGFuZWxJZCA6IG51bGwnLFxuICAgICcoa2V5ZG93biknOiAnX2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgJyhjbGljayknOiAnX2hhbmRsZUNsaWNrKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHcmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRUcmlnZ2VyRm9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCdncmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRUcmlnZ2VyRm9yJylcbiAgbGVnZW5kOiBHcmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRDb21wb25lbnQ7XG5cbiAgX2lzTGVnZW5kT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcblxuICAgIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9JTlBVVClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBfY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlLFxuXG4gICAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9PVVRQVVQpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgX2NsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3JcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5MZWdlbmQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzTGVnZW5kT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubGVnZW5kLmRpcmVjdGlvbiA9IHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIHRoaXMubGVnZW5kLmNsaWVudElucHV0ID0gdGhpcy5fY2xpZW50SW5wdXQ7XG4gICAgdGhpcy5sZWdlbmQuY2xpZW50T3V0cHV0ID0gdGhpcy5fY2xpZW50T3V0cHV0O1xuXG4gICAgY29uc3QgcGFuZWxDbGFzczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgPT09ICd0b3VjaCcpIHtcbiAgICAgIHBhbmVsQ2xhc3MucHVzaCgnZ3Jhbml0ZS1vdmVybGF5LXBhbmUtY2VudGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPVxuICAgICAgdGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgIT09ICd0b3VjaCdcbiAgICAgICAgPyB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIDogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG5cbiAgICBjb25zdCBoYXNCYWNrZHJvcCA9IHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlID09PSAndG91Y2gnO1xuXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2dyYW5pdGUtb3ZlcmxheS1kYXJrLWdsYXNzLWJhY2tkcm9wJyxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICBoYXNCYWNrZHJvcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BvcnRhbCB8fCB0aGlzLl9wb3J0YWwudGVtcGxhdGVSZWYgIT09IHRoaXMubGVnZW5kLnRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMubGVnZW5kLnRlbXBsYXRlUmVmLFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5hZGQodGhpcy5fb3ZlcmxheVJlZik7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5jbG9zZUxlZ2VuZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faXNMZWdlbmRPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIHRvZ2dsZUxlZ2VuZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNMZWdlbmRPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlTGVnZW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkxlZ2VuZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlTGVnZW5kKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZiB8fCAhdGhpcy5faXNMZWdlbmRPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcy5fb3ZlcmxheVJlZik7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcblxuICAgIHRoaXMuX3Jlc3RvcmVGb2N1cygpO1xuICAgIHRoaXMuX2lzTGVnZW5kT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy50b2dnbGVMZWdlbmQoKTtcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVMZWdlbmQoKTtcbiAgfVxuXG4gIF9yZXN0b3JlRm9jdXMob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJywgb3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mb2N1c01vbml0b3IpIHtcbiAgICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9lbGVtZW50LCBvcmlnaW4sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVza3RvcFBvc2l0aW9uU3RyYXRlZ3koKTogUG9zaXRpb25TdHJhdGVneSB7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX2VsZW1lbnQpXG4gICAgICAud2l0aExvY2tlZFBvc2l0aW9uKClcbiAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24oJy5ncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQnKVxuICAgICAgLndpdGhQdXNoKGZhbHNlKTtcblxuICAgIHRoaXMuX3NldFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0UG9zaXRpb24ocG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KSB7XG4gICAgY29uc3QgW29yaWdpblgsIG9yaWdpbkZhbGxiYWNrWF06IEhvcml6b250YWxDb25uZWN0aW9uUG9zW10gPVxuICAgICAgdGhpcy5sZWdlbmQueFBvc2l0aW9uID09PSAnYmVmb3JlJyA/IFsnZW5kJywgJ3N0YXJ0J10gOiBbJ3N0YXJ0JywgJ2VuZCddO1xuXG4gICAgY29uc3QgW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxuICAgICAgdGhpcy5sZWdlbmQueVBvc2l0aW9uID09PSAnYWJvdmUnID8gWydib3R0b20nLCAndG9wJ10gOiBbJ3RvcCcsICdib3R0b20nXTtcblxuICAgIGxldCBbb3JpZ2luWSwgb3JpZ2luRmFsbGJhY2tZXSA9IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV07XG4gICAgY29uc3QgW292ZXJsYXlYLCBvdmVybGF5RmFsbGJhY2tYXSA9IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdO1xuICAgIGNvbnN0IG9mZnNldFkgPSA0O1xuXG4gICAgb3JpZ2luWSA9IG92ZXJsYXlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgb3JpZ2luRmFsbGJhY2tZID0gb3ZlcmxheUZhbGxiYWNrWSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuXG4gICAgcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKFtcbiAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWSwgb3ZlcmxheVgsIG92ZXJsYXlZLCBvZmZzZXRZIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgIG92ZXJsYXlZLFxuICAgICAgICBvZmZzZXRZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxuICAgICAgICBvcmlnaW5ZOiBvcmlnaW5GYWxsYmFja1ksXG4gICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxuICAgICAgICBvdmVybGF5WTogb3ZlcmxheUZhbGxiYWNrWSxcbiAgICAgICAgb2Zmc2V0WTogLW9mZnNldFksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcG9zaXRpb25TdHJhdGVneSgpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBpZiAodGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgIT09ICd0b3VjaCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZXNrdG9wUG9zaXRpb25TdHJhdGVneSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdG91Y2hQb3NpdGlvblN0cmF0ZWd5KCk7XG4gIH1cblxuICBwcml2YXRlIF90b3VjaFBvc2l0aW9uU3RyYXRlZ3koKTogUG9zaXRpb25TdHJhdGVneSB7XG4gICAgcmV0dXJuIHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtcbiAgfVxufVxuIl19
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLWxlZ2VuZC10cmlnZ2VyLWZvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXItbGVnZW5kLXRyaWdnZXItZm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQjVELE1BQU0sT0FBTywyQ0FBNEMsU0FBUSxxQ0FBcUM7SUFYdEc7O1FBcUJFLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRVgsYUFBUSxHQUFXLDhCQUE4QixDQUFDO1FBQ2xELFlBQU8sR0FBVyxDQUFDLENBQUM7S0F3QnhDO0lBcENDLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBd0M7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQU9ELGFBQWEsQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYztRQUNaLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRVEsaUJBQWlCO1FBSXhCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBcENVLDJDQUEyQztrR0FBM0MsMkNBQTJDOzsyRkFBM0MsMkNBQTJDO2tCQVh2RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUscUNBQXFDO3dCQUM1QyxlQUFlLEVBQUUsTUFBTTt3QkFDdkIsc0JBQXNCLEVBQUUsc0JBQXNCO3dCQUM5QyxzQkFBc0IsRUFBRSxzQ0FBc0M7d0JBQzlELFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLFNBQVMsRUFBRSxxQkFBcUI7cUJBQ2pDO2lCQUNGOzhCQUdLLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzLWJhci1sZWdlbmQvcHJvZ3Jlc3MtYmFyLWxlZ2VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZU92ZXJsYXlUcmlnZ2VyRm9yQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS10cmlnZ2VyLWZvci1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS1iYXNlJztcbmltcG9ydCB7XG4gIEJsb2NrU2Nyb2xsU3RyYXRlZ3ksXG4gIENsb3NlU2Nyb2xsU3RyYXRlZ3ksXG4gIFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZ3Jhbml0ZVByb2dyZXNzQmFyTGVnZW5kVHJpZ2dlckZvcl0nLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQtdHJpZ2dlcicsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzTGVnZW5kT3BlbiB8fCBudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1jb250cm9sc10nOiAnaXNMZWdlbmRPcGVuID8gbGVnZW5kLnBhbmVsSWQgOiBudWxsJyxcbiAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgJyhjbGljayknOiAnaGFuZGxlQ2xpY2soJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVQcm9ncmVzc0JhckxlZ2VuZFRyaWdnZXJGb3JEaXJlY3RpdmUgZXh0ZW5kcyBHcmFuaXRlT3ZlcmxheVRyaWdnZXJGb3JCYXNlRGlyZWN0aXZlIHtcbiAgQElucHV0KCdncmFuaXRlUHJvZ3Jlc3NCYXJMZWdlbmRUcmlnZ2VyRm9yJylcbiAgZ2V0IGxlZ2VuZCgpOiBPdmVybGF5QmFzZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UmVmO1xuICB9XG5cbiAgc2V0IGxlZ2VuZCh2YWx1ZTogR3Jhbml0ZVByb2dyZXNzQmFyTGVnZW5kQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB2YWx1ZTtcbiAgfVxuXG4gIGlzTGVnZW5kT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzZWxlY3Rvcjogc3RyaW5nID0gJy5ncmFuaXRlLXByb2dyZXNzLWJhci1sZWdlbmQnO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb2Zmc2V0WTogbnVtYmVyID0gNDtcblxuICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaXNMZWdlbmRPcGVuID0gdGhpcy50b2dnbGVPdmVybGF5KHRoaXMuaXNMZWdlbmRPcGVuKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGVnZW5kT3BlbiA9IHRoaXMudG9nZ2xlT3ZlcmxheSh0aGlzLmlzTGVnZW5kT3Blbik7XG4gIH1cblxuICBvbk91dHNpZGVDbGljaygpOiB2b2lkIHtcbiAgICBzdXBlci5vbk91dHNpZGVDbGljaygpO1xuICAgIHRoaXMuaXNMZWdlbmRPcGVuID0gZmFsc2U7XG4gIH1cblxuICBvdmVycmlkZSBnZXRTY3JvbGxTdHJhdGVneSgpOlxuICAgIHwgUmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5XG4gICAgfCBCbG9ja1Njcm9sbFN0cmF0ZWd5XG4gICAgfCBDbG9zZVNjcm9sbFN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5zZXRTY3JvbGxTdHJhdGVneSgncmVwb3NpdGlvbicpO1xuICB9XG59XG4iXX0=
|