@skyux/progress-indicator 7.0.0-beta.8 → 7.0.0
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/documentation.json +547 -426
- package/esm2020/lib/modules/progress-indicator/progress-indicator-item/progress-indicator-item.component.mjs +47 -28
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-class.pipe.mjs +28 -0
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-disabled.pipe.mjs +19 -0
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button.component.mjs +73 -90
- package/esm2020/lib/modules/progress-indicator/progress-indicator-reset-button/progress-indicator-reset-button.component.mjs +7 -8
- package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker-class.pipe.mjs +31 -0
- package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker.component.mjs +26 -44
- package/esm2020/lib/modules/progress-indicator/progress-indicator-title/progress-indicator-title.component.mjs +4 -4
- package/esm2020/lib/modules/progress-indicator/progress-indicator.component.mjs +202 -212
- package/esm2020/lib/modules/progress-indicator/progress-indicator.module.mjs +14 -5
- package/esm2020/lib/modules/progress-indicator/types/progress-indicator-action-click-progress-handler.mjs +1 -1
- package/esm2020/lib/modules/progress-indicator/types/progress-indicator-message.mjs +1 -1
- package/esm2020/lib/modules/shared/sky-progress-indicator-resources.module.mjs +5 -5
- package/fesm2015/skyux-progress-indicator.mjs +443 -388
- package/fesm2015/skyux-progress-indicator.mjs.map +1 -1
- package/fesm2020/skyux-progress-indicator.mjs +449 -401
- package/fesm2020/skyux-progress-indicator.mjs.map +1 -1
- package/lib/modules/progress-indicator/progress-indicator-item/progress-indicator-item.component.d.ts +9 -9
- package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-class.pipe.d.ts +7 -0
- package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-disabled.pipe.d.ts +9 -0
- package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button.component.d.ts +12 -21
- package/lib/modules/progress-indicator/progress-indicator-reset-button/progress-indicator-reset-button.component.d.ts +4 -4
- package/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker-class.pipe.d.ts +8 -0
- package/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker.component.d.ts +3 -6
- package/lib/modules/progress-indicator/progress-indicator.component.d.ts +13 -39
- package/lib/modules/progress-indicator/progress-indicator.module.d.ts +14 -11
- package/lib/modules/progress-indicator/types/progress-indicator-action-click-progress-handler.d.ts +2 -2
- package/package.json +7 -7
|
@@ -1,69 +1,88 @@
|
|
|
1
|
-
|
|
1
|
+
var _SkyProgressIndicatorItemComponent_instances, _SkyProgressIndicatorItemComponent_titlePrefix, _SkyProgressIndicatorItemComponent_changeDetector, _SkyProgressIndicatorItemComponent__title, _SkyProgressIndicatorItemComponent__status, _SkyProgressIndicatorItemComponent_updateFormattedTitle;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
2
4
|
import { SkyProgressIndicatorItemStatus } from '../types/progress-indicator-item-status';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
import * as i1 from "@angular/common";
|
|
5
7
|
import * as i2 from "@skyux/theme";
|
|
6
8
|
import * as i3 from "@skyux/core";
|
|
7
9
|
import * as i4 from "../progress-indicator-status-marker/progress-indicator-status-marker.component";
|
|
10
|
+
const STATUS_DEFAULT = SkyProgressIndicatorItemStatus.Incomplete;
|
|
11
|
+
const STATUS_NAME_DEFAULT = 'incomplete';
|
|
8
12
|
/**
|
|
9
13
|
* Specifies a step to include in the progress indicator. Each step requires a label,
|
|
10
14
|
* and you can also specify step details within the `sky-progress-indicator-item` element.
|
|
11
15
|
*/
|
|
12
16
|
export class SkyProgressIndicatorItemComponent {
|
|
13
17
|
constructor(changeDetector) {
|
|
14
|
-
this
|
|
18
|
+
_SkyProgressIndicatorItemComponent_instances.add(this);
|
|
15
19
|
this.isVisible = false;
|
|
16
20
|
this.showStatusMarker = true;
|
|
17
21
|
this.showTitle = true;
|
|
22
|
+
this.statusName = STATUS_NAME_DEFAULT;
|
|
23
|
+
_SkyProgressIndicatorItemComponent_titlePrefix.set(this, void 0);
|
|
24
|
+
_SkyProgressIndicatorItemComponent_changeDetector.set(this, void 0);
|
|
25
|
+
_SkyProgressIndicatorItemComponent__title.set(this, void 0);
|
|
26
|
+
_SkyProgressIndicatorItemComponent__status.set(this, STATUS_DEFAULT);
|
|
27
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_changeDetector, changeDetector, "f");
|
|
18
28
|
}
|
|
19
|
-
|
|
20
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Specifies a step label for the step in the progress indicator.
|
|
31
|
+
* @required
|
|
32
|
+
*/
|
|
33
|
+
set title(value) {
|
|
34
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent__title, value, "f");
|
|
35
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
|
|
21
36
|
}
|
|
22
|
-
get
|
|
23
|
-
|
|
24
|
-
if (this._status === undefined) {
|
|
25
|
-
return SkyProgressIndicatorItemStatus.Incomplete;
|
|
26
|
-
}
|
|
27
|
-
return this._status;
|
|
37
|
+
get title() {
|
|
38
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__title, "f");
|
|
28
39
|
}
|
|
29
40
|
set status(value) {
|
|
30
|
-
if (value === this
|
|
41
|
+
if (value === __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f")) {
|
|
31
42
|
return;
|
|
32
43
|
}
|
|
33
|
-
|
|
34
|
-
this
|
|
35
|
-
|
|
36
|
-
get statusName() {
|
|
37
|
-
let name;
|
|
38
|
-
switch (this.status) {
|
|
44
|
+
/* istanbul ignore next */
|
|
45
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent__status, value ?? STATUS_DEFAULT, "f");
|
|
46
|
+
switch (__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f")) {
|
|
39
47
|
case SkyProgressIndicatorItemStatus.Active:
|
|
40
|
-
|
|
48
|
+
this.statusName = 'active';
|
|
41
49
|
break;
|
|
42
50
|
case SkyProgressIndicatorItemStatus.Complete:
|
|
43
|
-
|
|
51
|
+
this.statusName = 'complete';
|
|
44
52
|
break;
|
|
45
53
|
case SkyProgressIndicatorItemStatus.Incomplete:
|
|
46
|
-
|
|
54
|
+
this.statusName = 'incomplete';
|
|
47
55
|
break;
|
|
48
56
|
case SkyProgressIndicatorItemStatus.Pending:
|
|
49
|
-
|
|
57
|
+
this.statusName = 'pending';
|
|
50
58
|
break;
|
|
51
59
|
}
|
|
52
|
-
|
|
60
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_changeDetector, "f").markForCheck();
|
|
61
|
+
}
|
|
62
|
+
get status() {
|
|
63
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f");
|
|
64
|
+
}
|
|
65
|
+
ngOnInit() {
|
|
66
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
|
|
53
67
|
}
|
|
54
68
|
showStepNumber(step) {
|
|
55
|
-
this
|
|
69
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_titlePrefix, `${step} - `, "f");
|
|
70
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
|
|
56
71
|
}
|
|
57
72
|
hideStepNumber() {
|
|
58
|
-
this
|
|
73
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_titlePrefix, '', "f");
|
|
74
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
|
|
59
75
|
}
|
|
60
76
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
_SkyProgressIndicatorItemComponent_titlePrefix = new WeakMap(), _SkyProgressIndicatorItemComponent_changeDetector = new WeakMap(), _SkyProgressIndicatorItemComponent__title = new WeakMap(), _SkyProgressIndicatorItemComponent__status = new WeakMap(), _SkyProgressIndicatorItemComponent_instances = new WeakSet(), _SkyProgressIndicatorItemComponent_updateFormattedTitle = function _SkyProgressIndicatorItemComponent_updateFormattedTitle() {
|
|
78
|
+
this.formattedTitle = `${__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_titlePrefix, "f")}${this.title}`;
|
|
79
|
+
};
|
|
80
|
+
SkyProgressIndicatorItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
SkyProgressIndicatorItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyProgressIndicatorItemComponent, selector: "sky-progress-indicator-item", inputs: { title: "title" }, ngImport: i0, template: "<div\n *ngIf=\"isVisible\"\n class=\"sky-progress-indicator-item\"\n [ngClass]=\"'sky-progress-indicator-item-status-' + statusName\"\n>\n <sky-progress-indicator-status-marker\n *ngIf=\"showStatusMarker\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n\n <div class=\"sky-progress-indicator-item-content\">\n <div\n *ngIf=\"showTitle\"\n aria-level=\"2\"\n class=\"sky-progress-indicator-item-heading\"\n role=\"heading\"\n [ngClass]=\"{\n 'sky-deemphasized': statusName === 'pending'\n }\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n >\n {{ formattedTitle }}\n <span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n ></span>\n </div>\n <div class=\"sky-progress-indicator-item-body\">\n <ng-template [ngIf]=\"statusName !== 'incomplete'\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".sky-progress-indicator-item{display:flex;margin-bottom:-1px}.sky-progress-indicator-item-content{flex:1 1 100%}.sky-progress-indicator-item-body{min-height:20px;padding-top:10px;padding-bottom:30px}.sky-progress-indicator-item-status-incomplete .sky-progress-indicator-item-body{padding:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item{margin:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body{padding:20px 0 30px}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body:empty{padding:0}.sky-theme-modern .sky-progress-indicator-item{margin:0}.sky-theme-modern .sky-progress-indicator-item-body{padding:20px 0 30px}.sky-theme-modern .sky-progress-indicator-item-body:empty{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i3.λ4, selector: "[skyTrim]" }, { kind: "component", type: i4.SkyProgressIndicatorStatusMarkerComponent, selector: "sky-progress-indicator-status-marker", inputs: ["displayMode", "status"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorItemComponent, decorators: [{
|
|
64
83
|
type: Component,
|
|
65
84
|
args: [{ selector: 'sky-progress-indicator-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"isVisible\"\n class=\"sky-progress-indicator-item\"\n [ngClass]=\"'sky-progress-indicator-item-status-' + statusName\"\n>\n <sky-progress-indicator-status-marker\n *ngIf=\"showStatusMarker\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n\n <div class=\"sky-progress-indicator-item-content\">\n <div\n *ngIf=\"showTitle\"\n aria-level=\"2\"\n class=\"sky-progress-indicator-item-heading\"\n role=\"heading\"\n [ngClass]=\"{\n 'sky-deemphasized': statusName === 'pending'\n }\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n >\n {{ formattedTitle }}\n <span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n ></span>\n </div>\n <div class=\"sky-progress-indicator-item-body\">\n <ng-template [ngIf]=\"statusName !== 'incomplete'\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".sky-progress-indicator-item{display:flex;margin-bottom:-1px}.sky-progress-indicator-item-content{flex:1 1 100%}.sky-progress-indicator-item-body{min-height:20px;padding-top:10px;padding-bottom:30px}.sky-progress-indicator-item-status-incomplete .sky-progress-indicator-item-body{padding:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item{margin:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body{padding:20px 0 30px}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body:empty{padding:0}.sky-theme-modern .sky-progress-indicator-item{margin:0}.sky-theme-modern .sky-progress-indicator-item-body{padding:20px 0 30px}.sky-theme-modern .sky-progress-indicator-item-body:empty{padding:0}\n"] }]
|
|
66
85
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { title: [{
|
|
67
86
|
type: Input
|
|
68
87
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1pdGVtL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBRXpGLE1BQU0sY0FBYyxHQUFHLDhCQUE4QixDQUFDLFVBQVUsQ0FBQztBQUNqRSxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQztBQUV6Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8saUNBQWlDO0lBeUQ1QyxZQUFZLGNBQWlDOztRQVh0QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQztRQUV4QyxpRUFBaUM7UUFDakMsb0VBQW1DO1FBRW5DLDREQUE0QjtRQUM1QixxREFBVyxjQUFjLEVBQUM7UUFHeEIsdUJBQUEsSUFBSSxxREFBbUIsY0FBYyxNQUFBLENBQUM7SUFDeEMsQ0FBQztJQTFERDs7O09BR0c7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUF5QjtRQUN4Qyx1QkFBQSxJQUFJLDZDQUFXLEtBQUssTUFBQSxDQUFDO1FBQ3JCLHVCQUFBLElBQUksNkdBQXNCLE1BQTFCLElBQUksQ0FBd0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyx1QkFBQSxJQUFJLGlEQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsTUFBTSxDQUFDLEtBQWlEO1FBQ2pFLElBQUksS0FBSyxLQUFLLHVCQUFBLElBQUksa0RBQVMsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCwwQkFBMEI7UUFDMUIsdUJBQUEsSUFBSSw4Q0FBWSxLQUFLLElBQUksY0FBYyxNQUFBLENBQUM7UUFFeEMsUUFBUSx1QkFBQSxJQUFJLGtEQUFTLEVBQUU7WUFDckIsS0FBSyw4QkFBOEIsQ0FBQyxNQUFNO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssOEJBQThCLENBQUMsUUFBUTtnQkFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLDhCQUE4QixDQUFDLFVBQVU7Z0JBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyw4QkFBOEIsQ0FBQyxPQUFPO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsTUFBTTtTQUNUO1FBRUQsdUJBQUEsSUFBSSx5REFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyx1QkFBQSxJQUFJLGtEQUFTLENBQUM7SUFDdkIsQ0FBQztJQWtCTSxRQUFRO1FBQ2IsdUJBQUEsSUFBSSw2R0FBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBQy9CLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyx1QkFBQSxJQUFJLGtEQUFnQixHQUFHLElBQUksS0FBSyxNQUFBLENBQUM7UUFDakMsdUJBQUEsSUFBSSw2R0FBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBQy9CLENBQUM7SUFFTSxjQUFjO1FBQ25CLHVCQUFBLElBQUksa0RBQWdCLEVBQUUsTUFBQSxDQUFDO1FBQ3ZCLHVCQUFBLElBQUksNkdBQXNCLE1BQTFCLElBQUksQ0FBd0IsQ0FBQztJQUMvQixDQUFDOzs7SUFHQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsdUJBQUEsSUFBSSxzREFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1RCxDQUFDOytIQTdFVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQywrRkN2QjlDLHloQ0FxQ0E7NEZEZGEsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLDZCQUE2QixtQkFHdEIsdUJBQXVCLENBQUMsTUFBTTt3R0FRcEMsS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS1zdGF0dXMnO1xuXG5jb25zdCBTVEFUVVNfREVGQVVMVCA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlO1xuY29uc3QgU1RBVFVTX05BTUVfREVGQVVMVCA9ICdpbmNvbXBsZXRlJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgYSBzdGVwIHRvIGluY2x1ZGUgaW4gdGhlIHByb2dyZXNzIGluZGljYXRvci4gRWFjaCBzdGVwIHJlcXVpcmVzIGEgbGFiZWwsXG4gKiBhbmQgeW91IGNhbiBhbHNvIHNwZWNpZnkgc3RlcCBkZXRhaWxzIHdpdGhpbiB0aGUgYHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbWAgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBzdGVwIGxhYmVsIGZvciB0aGUgc3RlcCBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190aXRsZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvcm1hdHRlZFRpdGxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc3RhdHVzKHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuI19zdGF0dXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuI19zdGF0dXMgPSB2YWx1ZSA/PyBTVEFUVVNfREVGQVVMVDtcblxuICAgIHN3aXRjaCAodGhpcy4jX3N0YXR1cykge1xuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQWN0aXZlOlxuICAgICAgICB0aGlzLnN0YXR1c05hbWUgPSAnYWN0aXZlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5Db21wbGV0ZTpcbiAgICAgICAgdGhpcy5zdGF0dXNOYW1lID0gJ2NvbXBsZXRlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlOlxuICAgICAgICB0aGlzLnN0YXR1c05hbWUgPSAnaW5jb21wbGV0ZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuUGVuZGluZzpcbiAgICAgICAgdGhpcy5zdGF0dXNOYW1lID0gJ3BlbmRpbmcnO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdHVzKCk6IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0dGVkVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1N0YXR1c01hcmtlciA9IHRydWU7XG4gIHB1YmxpYyBzaG93VGl0bGUgPSB0cnVlO1xuICBwdWJsaWMgc3RhdHVzTmFtZSA9IFNUQVRVU19OQU1FX0RFRkFVTFQ7XG5cbiAgI3RpdGxlUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI190aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3N0YXR1cyA9IFNUQVRVU19ERUZBVUxUO1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVGl0bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93U3RlcE51bWJlcihzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLiN0aXRsZVByZWZpeCA9IGAke3N0ZXB9IC0gYDtcbiAgICB0aGlzLiN1cGRhdGVGb3JtYXR0ZWRUaXRsZSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVTdGVwTnVtYmVyKCk6IHZvaWQge1xuICAgIHRoaXMuI3RpdGxlUHJlZml4ID0gJyc7XG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVGl0bGUoKTtcbiAgfVxuXG4gICN1cGRhdGVGb3JtYXR0ZWRUaXRsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdHRlZFRpdGxlID0gYCR7dGhpcy4jdGl0bGVQcmVmaXh9JHt0aGlzLnRpdGxlfWA7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJpc1Zpc2libGVcIlxuICBjbGFzcz1cInNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tc3RhdHVzLScgKyBzdGF0dXNOYW1lXCJcbj5cbiAgPHNreS1wcm9ncmVzcy1pbmRpY2F0b3Itc3RhdHVzLW1hcmtlclxuICAgICpuZ0lmPVwic2hvd1N0YXR1c01hcmtlclwiXG4gICAgW3N0YXR1c109XCJzdGF0dXNcIlxuICA+XG4gIDwvc2t5LXByb2dyZXNzLWluZGljYXRvci1zdGF0dXMtbWFya2VyPlxuXG4gIDxkaXYgY2xhc3M9XCJza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tY29udGVudFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2hvd1RpdGxlXCJcbiAgICAgIGFyaWEtbGV2ZWw9XCIyXCJcbiAgICAgIGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWhlYWRpbmdcIlxuICAgICAgcm9sZT1cImhlYWRpbmdcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6IHN0YXR1c05hbWUgPT09ICdwZW5kaW5nJ1xuICAgICAgfVwiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICBza3lUcmltXG4gICAgPlxuICAgICAge3sgZm9ybWF0dGVkVGl0bGUgfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIiBza3lUcmltXG4gICAgICAgID48bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiPjwvbmctY29udGVudFxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXNOYW1lICE9PSAnaW5jb21wbGV0ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SkyProgressIndicatorNavButtonClass {
|
|
4
|
+
transform(buttonType) {
|
|
5
|
+
const classNames = [`sky-progress-indicator-nav-button-${buttonType}`];
|
|
6
|
+
switch (buttonType) {
|
|
7
|
+
case 'next':
|
|
8
|
+
case 'finish':
|
|
9
|
+
classNames.push('sky-btn-primary');
|
|
10
|
+
break;
|
|
11
|
+
case 'reset':
|
|
12
|
+
classNames.push('sky-btn-link');
|
|
13
|
+
break;
|
|
14
|
+
default:
|
|
15
|
+
classNames.push('sky-btn-default');
|
|
16
|
+
}
|
|
17
|
+
return classNames;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
SkyProgressIndicatorNavButtonClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
21
|
+
SkyProgressIndicatorNavButtonClass.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, name: "skyProgressIndicatorNavButtonClass" });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, decorators: [{
|
|
23
|
+
type: Pipe,
|
|
24
|
+
args: [{
|
|
25
|
+
name: 'skyProgressIndicatorNavButtonClass',
|
|
26
|
+
}]
|
|
27
|
+
}] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24tY2xhc3MucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi1jbGFzcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sa0NBQWtDO0lBQ3RDLFNBQVMsQ0FBQyxVQUFrQjtRQUNqQyxNQUFNLFVBQVUsR0FBRyxDQUFDLHFDQUFxQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxRQUFRO2dCQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1I7Z0JBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7Z0lBakJVLGtDQUFrQzs4SEFBbEMsa0NBQWtDOzRGQUFsQyxrQ0FBa0M7a0JBSDlDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9DQUFvQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uQ2xhc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvbkNsYXNzIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oYnV0dG9uVHlwZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbYHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi0ke2J1dHRvblR5cGV9YF07XG5cbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGUpIHtcbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgY2FzZSAnZmluaXNoJzpcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdza3ktYnRuLXByaW1hcnknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1saW5rJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdza3ktYnRuLWRlZmF1bHQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SkyProgressIndicatorNavButtonDisabledPipe {
|
|
4
|
+
transform(disabled, buttonType, activeIndex, itemStatuses) {
|
|
5
|
+
const isLastStep = itemStatuses && activeIndex === itemStatuses.length - 1;
|
|
6
|
+
return ((buttonType === 'next' && isLastStep) ||
|
|
7
|
+
(buttonType === 'previous' && activeIndex === 0) ||
|
|
8
|
+
disabled);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
SkyProgressIndicatorNavButtonDisabledPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
12
|
+
SkyProgressIndicatorNavButtonDisabledPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, name: "skyProgressIndicatorNavButtonDisabled" });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, decorators: [{
|
|
14
|
+
type: Pipe,
|
|
15
|
+
args: [{
|
|
16
|
+
name: 'skyProgressIndicatorNavButtonDisabled',
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24tZGlzYWJsZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi1kaXNhYmxlZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQVFwRCxNQUFNLE9BQU8seUNBQXlDO0lBRzdDLFNBQVMsQ0FDZCxRQUE2QixFQUM3QixVQUE2QyxFQUM3QyxXQUErQixFQUMvQixZQUEwRDtRQUUxRCxNQUFNLFVBQVUsR0FBRyxZQUFZLElBQUksV0FBVyxLQUFLLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sQ0FDTCxDQUFDLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxDQUFDO1lBQ3JDLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDO1lBQ2hELFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQzs7dUlBaEJVLHlDQUF5QztxSUFBekMseUNBQXlDOzRGQUF6Qyx5Q0FBeUM7a0JBSHJELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVDQUF1QztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLXN0YXR1cyc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi10eXBlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25EaXNhYmxlZCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uRGlzYWJsZWRQaXBlXG4gIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybVxue1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgIGJ1dHRvblR5cGU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSxcbiAgICBhY3RpdmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGl0ZW1TdGF0dXNlczogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzW10gfCB1bmRlZmluZWRcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNMYXN0U3RlcCA9IGl0ZW1TdGF0dXNlcyAmJiBhY3RpdmVJbmRleCA9PT0gaXRlbVN0YXR1c2VzLmxlbmd0aCAtIDE7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJiBpc0xhc3RTdGVwKSB8fFxuICAgICAgKGJ1dHRvblR5cGUgPT09ICdwcmV2aW91cycgJiYgYWN0aXZlSW5kZXggPT09IDApIHx8XG4gICAgICBkaXNhYmxlZFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,28 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
var _SkyProgressIndicatorNavButtonComponent_instances, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, _SkyProgressIndicatorNavButtonComponent_parentTimeout, _SkyProgressIndicatorNavButtonComponent__buttonType, _SkyProgressIndicatorNavButtonComponent__disabled, _SkyProgressIndicatorNavButtonComponent__isVisible, _SkyProgressIndicatorNavButtonComponent__progressIndicator, _SkyProgressIndicatorNavButtonComponent_changeDetector, _SkyProgressIndicatorNavButtonComponent_parentComponent, _SkyProgressIndicatorNavButtonComponent_sendMessage, _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, } from '@angular/core';
|
|
2
4
|
import { Subject } from 'rxjs';
|
|
3
5
|
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { SkyProgressIndicatorComponent } from '../progress-indicator.component';
|
|
5
6
|
import { SkyProgressIndicatorActionClickProgressHandler } from '../types/progress-indicator-action-click-progress-handler';
|
|
6
7
|
import { SkyProgressIndicatorMessageType } from '../types/progress-indicator-message-type';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "../progress-indicator.component";
|
|
9
10
|
import * as i2 from "@angular/common";
|
|
10
11
|
import * as i3 from "@skyux/i18n";
|
|
12
|
+
import * as i4 from "./progress-indicator-nav-button-class.pipe";
|
|
13
|
+
import * as i5 from "./progress-indicator-nav-button-disabled.pipe";
|
|
14
|
+
const BUTTON_TYPE_DEFAULT = 'next';
|
|
11
15
|
/**
|
|
12
16
|
* Displays a button to navigate the steps in modal wizards. We recommend against using it in
|
|
13
17
|
* passive progress indicators and waterfall progress indicators.
|
|
14
18
|
*/
|
|
15
19
|
export class SkyProgressIndicatorNavButtonComponent {
|
|
16
20
|
constructor(changeDetector, parentComponent) {
|
|
17
|
-
this
|
|
18
|
-
this.parentComponent = parentComponent;
|
|
21
|
+
_SkyProgressIndicatorNavButtonComponent_instances.add(this);
|
|
19
22
|
/**
|
|
20
23
|
* Fires when users select the nav button and emits a `SkyProgressIndicatorActionClickArgs`
|
|
21
24
|
* object that is passed into the callback function to allow consumers to decide whether
|
|
22
25
|
* the button’s action should complete successfully.
|
|
23
26
|
*/
|
|
24
27
|
this.actionClick = new EventEmitter();
|
|
25
|
-
this
|
|
28
|
+
_SkyProgressIndicatorNavButtonComponent_ngUnsubscribe.set(this, new Subject());
|
|
29
|
+
_SkyProgressIndicatorNavButtonComponent_parentTimeout.set(this, void 0);
|
|
30
|
+
_SkyProgressIndicatorNavButtonComponent__buttonType.set(this, BUTTON_TYPE_DEFAULT);
|
|
31
|
+
_SkyProgressIndicatorNavButtonComponent__disabled.set(this, void 0);
|
|
32
|
+
_SkyProgressIndicatorNavButtonComponent__isVisible.set(this, void 0);
|
|
33
|
+
_SkyProgressIndicatorNavButtonComponent__progressIndicator.set(this, void 0);
|
|
34
|
+
_SkyProgressIndicatorNavButtonComponent_changeDetector.set(this, void 0);
|
|
35
|
+
_SkyProgressIndicatorNavButtonComponent_parentComponent.set(this, void 0);
|
|
36
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, changeDetector, "f");
|
|
37
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, parentComponent, "f");
|
|
26
38
|
}
|
|
27
39
|
/**
|
|
28
40
|
* Specifies the type of nav button to include.
|
|
@@ -30,57 +42,45 @@ export class SkyProgressIndicatorNavButtonComponent {
|
|
|
30
42
|
* @default "next"
|
|
31
43
|
*/
|
|
32
44
|
set buttonType(value) {
|
|
33
|
-
this
|
|
45
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__buttonType, value || BUTTON_TYPE_DEFAULT, "f");
|
|
34
46
|
}
|
|
35
47
|
get buttonType() {
|
|
36
|
-
|
|
37
|
-
return 'next';
|
|
38
|
-
}
|
|
39
|
-
return this._buttonType;
|
|
48
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__buttonType, "f");
|
|
40
49
|
}
|
|
41
50
|
/**
|
|
42
51
|
* Indicates whether to disable the nav button.
|
|
43
52
|
* @default false
|
|
44
53
|
*/
|
|
45
54
|
set disabled(value) {
|
|
46
|
-
this
|
|
47
|
-
this.
|
|
55
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__disabled, value, "f");
|
|
56
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, "f").markForCheck();
|
|
48
57
|
}
|
|
49
58
|
get disabled() {
|
|
50
|
-
|
|
51
|
-
const activeIndex = this.lastProgressChange.activeIndex;
|
|
52
|
-
const isLastStep = activeIndex === this.lastProgressChange.itemStatuses.length - 1;
|
|
53
|
-
if (buttonType === 'previous' && activeIndex === 0) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
if (buttonType === 'next' && isLastStep) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
return this._disabled || false;
|
|
59
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__disabled, "f");
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Specifies the progress indicator component to associate with the nav button.
|
|
63
63
|
* @required
|
|
64
64
|
*/
|
|
65
65
|
set progressIndicator(value) {
|
|
66
|
-
this
|
|
67
|
-
if (
|
|
66
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, value, "f");
|
|
67
|
+
if (__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f")) {
|
|
68
68
|
if (this.buttonType === 'finish') {
|
|
69
69
|
// The `hasFinishButton` field was added to support legacy API.
|
|
70
70
|
// Some implementations only include a next button; we cannot
|
|
71
71
|
// assume that every implementation includes both a finish button and a next button.
|
|
72
|
-
this.
|
|
72
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f").hasFinishButton = true;
|
|
73
73
|
}
|
|
74
|
-
this.
|
|
75
|
-
.pipe(distinctUntilChanged(), takeUntil(this
|
|
74
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f").progressChanges
|
|
75
|
+
.pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f")))
|
|
76
76
|
.subscribe((change) => {
|
|
77
77
|
this.lastProgressChange = change;
|
|
78
|
-
this.
|
|
78
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility).call(this, change);
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
|
-
if (!this
|
|
83
|
-
this
|
|
82
|
+
if (!__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentTimeout, "f")) {
|
|
83
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_parentTimeout, window.setTimeout(() => {
|
|
84
84
|
/* istanbul ignore else */
|
|
85
85
|
if (!this.progressIndicator) {
|
|
86
86
|
throw new Error('The `<sky-progress-indicator-nav-button>` component requires a reference to ' +
|
|
@@ -94,51 +94,31 @@ export class SkyProgressIndicatorNavButtonComponent {
|
|
|
94
94
|
'>\n' +
|
|
95
95
|
'</sky-progress-indicator-nav-button>');
|
|
96
96
|
}
|
|
97
|
-
}, 50);
|
|
97
|
+
}, 50), "f");
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
get progressIndicator() {
|
|
102
|
-
return this
|
|
103
|
-
}
|
|
104
|
-
get cssClassNames() {
|
|
105
|
-
const buttonType = this.buttonType;
|
|
106
|
-
const classNames = [`sky-progress-indicator-nav-button-${this.buttonType}`];
|
|
107
|
-
switch (buttonType) {
|
|
108
|
-
case 'next':
|
|
109
|
-
case 'finish':
|
|
110
|
-
classNames.push('sky-btn-primary');
|
|
111
|
-
break;
|
|
112
|
-
case 'reset':
|
|
113
|
-
classNames.push('sky-btn-link');
|
|
114
|
-
break;
|
|
115
|
-
default:
|
|
116
|
-
classNames.push('sky-btn-default');
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
return classNames.join(' ');
|
|
120
|
-
}
|
|
121
|
-
get buttonLabelResourceString() {
|
|
122
|
-
return `skyux_progress_indicator_navigator_${this.buttonType}`;
|
|
102
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f");
|
|
123
103
|
}
|
|
124
104
|
set isVisible(value) {
|
|
125
|
-
this
|
|
126
|
-
this.
|
|
105
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__isVisible, value, "f");
|
|
106
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, "f").markForCheck();
|
|
127
107
|
}
|
|
128
108
|
get isVisible() {
|
|
129
|
-
return this
|
|
109
|
+
return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__isVisible, "f");
|
|
130
110
|
}
|
|
131
111
|
ngAfterViewInit() {
|
|
132
|
-
if (!this.progressIndicator && this
|
|
133
|
-
this.progressIndicator = this
|
|
112
|
+
if (!this.progressIndicator && __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, "f")) {
|
|
113
|
+
this.progressIndicator = __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, "f");
|
|
134
114
|
}
|
|
135
115
|
else if (!this.progressIndicator) {
|
|
136
116
|
this.progressIndicator = undefined;
|
|
137
117
|
}
|
|
138
118
|
}
|
|
139
119
|
ngOnDestroy() {
|
|
140
|
-
this.
|
|
141
|
-
this.
|
|
120
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f").next();
|
|
121
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f").complete();
|
|
142
122
|
this.actionClick.complete();
|
|
143
123
|
}
|
|
144
124
|
onClick(event) {
|
|
@@ -157,8 +137,6 @@ export class SkyProgressIndicatorNavButtonComponent {
|
|
|
157
137
|
case 'reset':
|
|
158
138
|
type = SkyProgressIndicatorMessageType.Reset;
|
|
159
139
|
break;
|
|
160
|
-
default:
|
|
161
|
-
break;
|
|
162
140
|
}
|
|
163
141
|
// If the consumer has subscribed to the `actionClick` event,
|
|
164
142
|
// allow them to decide when to advance to the next step.
|
|
@@ -166,42 +144,47 @@ export class SkyProgressIndicatorNavButtonComponent {
|
|
|
166
144
|
this.actionClick.emit({
|
|
167
145
|
event,
|
|
168
146
|
progressHandler: new SkyProgressIndicatorActionClickProgressHandler(() => {
|
|
169
|
-
this.
|
|
147
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_sendMessage).call(this, type);
|
|
170
148
|
}),
|
|
171
149
|
});
|
|
172
150
|
}
|
|
173
151
|
else {
|
|
174
|
-
this.
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
updateButtonVisibility(change) {
|
|
178
|
-
const isLastStep = change.activeIndex === change.itemStatuses.length - 1;
|
|
179
|
-
const buttonType = this.buttonType;
|
|
180
|
-
// Hide the button if all steps are complete
|
|
181
|
-
// (except for the reset button)
|
|
182
|
-
if (buttonType !== 'reset' && change.isComplete) {
|
|
183
|
-
this.isVisible = false;
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
if (buttonType === 'finish') {
|
|
187
|
-
this.isVisible = isLastStep;
|
|
188
|
-
return;
|
|
152
|
+
__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_sendMessage).call(this, type);
|
|
189
153
|
}
|
|
190
|
-
// Hide the next button on the last step only if a finish button exists.
|
|
191
|
-
if (buttonType === 'next' &&
|
|
192
|
-
isLastStep &&
|
|
193
|
-
this.progressIndicator.hasFinishButton) {
|
|
194
|
-
this.isVisible = false;
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
this.isVisible = true;
|
|
198
154
|
}
|
|
199
155
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
156
|
+
_SkyProgressIndicatorNavButtonComponent_ngUnsubscribe = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_parentTimeout = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__buttonType = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__disabled = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__isVisible = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__progressIndicator = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_changeDetector = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_parentComponent = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_instances = new WeakSet(), _SkyProgressIndicatorNavButtonComponent_sendMessage = function _SkyProgressIndicatorNavButtonComponent_sendMessage(type) {
|
|
157
|
+
if (type !== undefined) {
|
|
158
|
+
this.progressIndicator?.sendMessage({ type });
|
|
159
|
+
}
|
|
160
|
+
}, _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility = function _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility(change) {
|
|
161
|
+
const isLastStep = change.itemStatuses &&
|
|
162
|
+
change.activeIndex === change.itemStatuses.length - 1;
|
|
163
|
+
const buttonType = this.buttonType;
|
|
164
|
+
// Hide the button if all steps are complete
|
|
165
|
+
// (except for the reset button)
|
|
166
|
+
if (buttonType !== 'reset' && change.isComplete) {
|
|
167
|
+
this.isVisible = false;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (buttonType === 'finish') {
|
|
171
|
+
this.isVisible = isLastStep;
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Hide the next button on the last step only if a finish button exists.
|
|
175
|
+
if (buttonType === 'next' &&
|
|
176
|
+
isLastStep &&
|
|
177
|
+
this.progressIndicator?.hasFinishButton) {
|
|
178
|
+
this.isVisible = false;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
this.isVisible = true;
|
|
182
|
+
};
|
|
183
|
+
SkyProgressIndicatorNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyProgressIndicatorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
+
SkyProgressIndicatorNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyProgressIndicatorNavButtonComponent, selector: "sky-progress-indicator-nav-button", inputs: { buttonText: "buttonText", buttonType: "buttonType", disabled: "disabled", progressIndicator: "progressIndicator" }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"\n disabled\n | skyProgressIndicatorNavButtonDisabled\n : buttonType\n : lastProgressChange?.activeIndex\n : lastProgressChange?.itemStatuses\n \"\n [ngClass]=\"buttonType | skyProgressIndicatorNavButtonClass\"\n (click)=\"onClick($event)\"\n>\n {{\n buttonText ||\n ('skyux_progress_indicator_navigator_' + buttonType | skyLibResources)\n }}\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i4.SkyProgressIndicatorNavButtonClass, name: "skyProgressIndicatorNavButtonClass" }, { kind: "pipe", type: i5.SkyProgressIndicatorNavButtonDisabledPipe, name: "skyProgressIndicatorNavButtonDisabled" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, decorators: [{
|
|
203
186
|
type: Component,
|
|
204
|
-
args: [{ selector: 'sky-progress-indicator-nav-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"disabled\"\n [ngClass]=\"
|
|
187
|
+
args: [{ selector: 'sky-progress-indicator-nav-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"\n disabled\n | skyProgressIndicatorNavButtonDisabled\n : buttonType\n : lastProgressChange?.activeIndex\n : lastProgressChange?.itemStatuses\n \"\n [ngClass]=\"buttonType | skyProgressIndicatorNavButtonClass\"\n (click)=\"onClick($event)\"\n>\n {{\n buttonText ||\n ('skyux_progress_indicator_navigator_' + buttonType | skyLibResources)\n }}\n</button>\n" }]
|
|
205
188
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyProgressIndicatorComponent, decorators: [{
|
|
206
189
|
type: Optional
|
|
207
190
|
}] }]; }, propDecorators: { buttonText: [{
|
|
@@ -215,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
215
198
|
}], actionClick: [{
|
|
216
199
|
type: Output
|
|
217
200
|
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTNILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7OztBQUczRjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sc0NBQXNDO0lBNkpqRCxZQUNVLGNBQWlDLEVBQ3JCLGVBQThDO1FBRDFELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNy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QUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLDRDQUE0QztRQUM1QyxnQ0FBZ0M7UUFDaEMsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1lBQzVCLE9BQU87U0FDUjtRQUVELHdFQUF3RTtRQUN4RSxJQUNFLFVBQVUsS0FBSyxNQUFNO1lBQ3JCLFVBQVU7WUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUN0QztZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7O21JQXJQVSxzQ0FBc0M7dUhBQXRDLHNDQUFzQyxnUEMvQm5ELDJRQVVBOzJGRHFCYSxzQ0FBc0M7a0JBTGxELFNBQVM7K0JBQ0UsbUNBQW1DLG1CQUU1Qix1QkFBdUIsQ0FBQyxNQUFNOzswQkFpSzVDLFFBQVE7NENBdkpKLFVBQVU7c0JBRGhCLEtBQUs7Z0JBU0ssVUFBVTtzQkFEcEIsS0FBSztnQkFrQkssUUFBUTtzQkFEbEIsS0FBSztnQkE0QkssaUJBQWlCO3NCQUQzQixLQUFLO2dCQW1EQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrQXJncyB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1hY3Rpb24tY2xpY2stYXJncyc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWFjdGlvbi1jbGljay1wcm9ncmVzcy1oYW5kbGVyJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi10eXBlJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIGJ1dHRvbiB0byBuYXZpZ2F0ZSB0aGUgc3RlcHMgaW4gbW9kYWwgd2l6YXJkcy4gV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgaXQgaW5cbiAqIHBhc3NpdmUgcHJvZ3Jlc3MgaW5kaWNhdG9ycyBhbmQgd2F0ZXJmYWxsIHByb2dyZXNzIGluZGljYXRvcnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCB0byBkaXNwbGF5IG9uIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBcIk5leHRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGJ1dHRvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIG5hdiBidXR0b24gdG8gaW5jbHVkZS5cbiAgICogVGhlIHZhbGlkIG9wdGlvbnMgYXJlIGBcImZpbmlzaFwiYCwgYFwibmV4dFwiYCwgYFwicHJldmlvdXNcImAsIGFuZCBgXCJyZXNldFwiYC5cbiAgICogQGRlZmF1bHQgXCJuZXh0XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYnV0dG9uVHlwZSh2YWx1ZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25UeXBlKSB7XG4gICAgdGhpcy5fYnV0dG9uVHlwZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25UeXBlKCk6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB7XG4gICAgaWYgKHRoaXMuX2J1dHRvblR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICduZXh0JztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnV0dG9uVHlwZSA9IHRoaXMuYnV0dG9uVHlwZTtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMubGFzdFByb2dyZXNzQ2hhbmdlLmFjdGl2ZUluZGV4O1xuICAgIGNvbnN0IGlzTGFzdFN0ZXAgPVxuICAgICAgYWN0aXZlSW5kZXggPT09IHRoaXMubGFzdFByb2dyZXNzQ2hhbmdlLml0ZW1TdGF0dXNlcy5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGJ1dHRvblR5cGUgPT09ICdwcmV2aW91cycgJiYgYWN0aXZlSW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnbmV4dCcgJiYgaXNMYXN0U3RlcCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb2dyZXNzSW5kaWNhdG9yKHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCkge1xuICAgIHRoaXMuX3Byb2dyZXNzSW5kaWNhdG9yID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09ICdmaW5pc2gnKSB7XG4gICAgICAgIC8vIFRoZSBgaGFzRmluaXNoQnV0dG9uYCBmaWVsZCB3YXMgYWRkZWQgdG8gc3VwcG9ydCBsZWdhY3kgQVBJLlxuICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBvbmx5IGluY2x1ZGUgYSBuZXh0IGJ1dHRvbjsgd2UgY2Fubm90XG4gICAgICAgIC8vIGFzc3VtZSB0aGF0IGV2ZXJ5IGltcGxlbWVudGF0aW9uIGluY2x1ZGVzIGJvdGggYSBmaW5pc2ggYnV0dG9uIGFuZCBhIG5leHQgYnV0dG9uLlxuICAgICAgICB0aGlzLl9wcm9ncmVzc0luZGljYXRvci5oYXNGaW5pc2hCdXR0b24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wcm9ncmVzc0luZGljYXRvci5wcm9ncmVzc0NoYW5nZXNcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RQcm9ncmVzc0NoYW5nZSA9IGNoYW5nZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvblZpc2liaWxpdHkoY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5wYXJlbnRUaW1lb3V0KSB7XG4gICAgICAgIHRoaXMucGFyZW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc0luZGljYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnVGhlIGA8c2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uPmAgY29tcG9uZW50IHJlcXVpcmVzIGEgcmVmZXJlbmNlIHRvICcgK1xuICAgICAgICAgICAgICAgICd0aGUgYDxza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yPmAgY29tcG9uZW50IGl0IGNvbnRyb2xzLiBGb3IgZXhhbXBsZTpcXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3JcXG4nICtcbiAgICAgICAgICAgICAgICAnICAjbXlQcm9ncmVzc0luZGljYXRvclxcbicgK1xuICAgICAgICAgICAgICAgICc+XFxuJyArXG4gICAgICAgICAgICAgICAgJzwvc2t5LXByb2dyZXNzLWluZGljYXRvcj5cXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvblxcbicgK1xuICAgICAgICAgICAgICAgICcgIFtwcm9ncmVzc0luZGljYXRvcl09XCJteVByb2dyZXNzSW5kaWNhdG9yXCJcXG4nICtcbiAgICAgICAgICAgICAgICAnPlxcbicgK1xuICAgICAgICAgICAgICAgICc8L3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbj4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3NJbmRpY2F0b3IoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzc0luZGljYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgbmF2IGJ1dHRvbiBhbmQgZW1pdHMgYSBgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JBY3Rpb25DbGlja0FyZ3NgXG4gICAqIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbnRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhbGxvdyBjb25zdW1lcnMgdG8gZGVjaWRlIHdoZXRoZXJcbiAgICogdGhlIGJ1dHRvbuKAmXMgYWN0aW9uIHNob3VsZCBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrQXJncz4oKTtcblxuICBwdWJsaWMgZ2V0IGNzc0NsYXNzTmFtZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtgc2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLSR7dGhpcy5idXR0b25UeXBlfWBdO1xuXG4gICAgc3dpdGNoIChidXR0b25UeXBlKSB7XG4gICAgICBjYXNlICduZXh0JzpcbiAgICAgIGNhc2UgJ2ZpbmlzaCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1wcmltYXJ5Jyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1saW5rJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjbGFzc05hbWVzLnB1c2goJ3NreS1idG4tZGVmYXVsdCcpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcy5qb2luKCcgJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1dHRvbkxhYmVsUmVzb3VyY2VTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNreXV4X3Byb2dyZXNzX2luZGljYXRvcl9uYXZpZ2F0b3JfJHt0aGlzLmJ1dHRvblR5cGV9YDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaXNWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNWaXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGUgfHwgZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxhc3RQcm9ncmVzc0NoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2U7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcGFyZW50VGltZW91dDogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2J1dHRvblR5cGU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lzVmlzaWJsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3NJbmRpY2F0b3I6IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50Q29tcG9uZW50OiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudFxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgJiYgdGhpcy5wYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgPSB0aGlzLnBhcmVudENvbXBvbmVudDtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByb2dyZXNzSW5kaWNhdG9yKSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGxldCB0eXBlOiBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlO1xuXG4gICAgc3dpdGNoICh0aGlzLmJ1dHRvblR5cGUpIHtcbiAgICAgIGNhc2UgJ2ZpbmlzaCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkZpbmlzaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICB0eXBlID0gU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5Qcm9ncmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVncmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVzZXQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29uc3VtZXIgaGFzIHN1YnNjcmliZWQgdG8gdGhlIGBhY3Rpb25DbGlja2AgZXZlbnQsXG4gICAgLy8gYWxsb3cgdGhlbSB0byBkZWNpZGUgd2hlbiB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IHN0ZXAuXG4gICAgaWYgKHRoaXMuYWN0aW9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwcm9ncmVzc0hhbmRsZXI6IG5ldyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3Iuc2VuZE1lc3NhZ2UoeyB0eXBlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yLnNlbmRNZXNzYWdlKHsgdHlwZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJ1dHRvblZpc2liaWxpdHkoY2hhbmdlOiBTa3lQcm9ncmVzc0luZGljYXRvckNoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IGlzTGFzdFN0ZXAgPSBjaGFuZ2UuYWN0aXZlSW5kZXggPT09IGNoYW5nZS5pdGVtU3RhdHVzZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgLy8gSGlkZSB0aGUgYnV0dG9uIGlmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVcbiAgICAvLyAoZXhjZXB0IGZvciB0aGUgcmVzZXQgYnV0dG9uKVxuICAgIGlmIChidXR0b25UeXBlICE9PSAncmVzZXQnICYmIGNoYW5nZS5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc0xhc3RTdGVwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhpZGUgdGhlIG5leHQgYnV0dG9uIG9uIHRoZSBsYXN0IHN0ZXAgb25seSBpZiBhIGZpbmlzaCBidXR0b24gZXhpc3RzLlxuICAgIGlmIChcbiAgICAgIGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJlxuICAgICAgaXNMYXN0U3RlcCAmJlxuICAgICAgdGhpcy5wcm9ncmVzc0luZGljYXRvci5oYXNGaW5pc2hCdXR0b25cbiAgICApIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICpuZ0lmPVwiaXNWaXNpYmxlXCJcbiAgY2xhc3M9XCJza3ktYnRuIHNreS1tYXJnaW4taW5saW5lLXNtXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cImNzc0NsYXNzTmFtZXNcIlxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbj5cbiAge3sgYnV0dG9uVGV4dCB8fCAoYnV0dG9uTGFiZWxSZXNvdXJjZVN0cmluZyB8IHNreUxpYlJlc291cmNlcykgfX1cbjwvYnV0dG9uPlxuIl19
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUUzSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQUczRixNQUFNLG1CQUFtQixHQUFzQyxNQUFNLENBQUM7QUFFdEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHNDQUFzQztJQXVIakQsWUFDRSxjQUFpQyxFQUNyQixlQUErQzs7UUFoQzdEOzs7O1dBSUc7UUFFSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QyxDQUFD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QURoQixLQUFLO2dCQVNLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBY0ssUUFBUTtzQkFEbEIsS0FBSztnQkFlSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcURDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWFjdGlvbi1jbGljay1hcmdzJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tQcm9ncmVzc0hhbmRsZXIgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItYWN0aW9uLWNsaWNrLXByb2dyZXNzLWhhbmRsZXInO1xuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItY2hhbmdlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLXR5cGUnO1xuXG5jb25zdCBCVVRUT05fVFlQRV9ERUZBVUxUOiBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgPSAnbmV4dCc7XG5cbi8qKlxuICogRGlzcGxheXMgYSBidXR0b24gdG8gbmF2aWdhdGUgdGhlIHN0ZXBzIGluIG1vZGFsIHdpemFyZHMuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IHVzaW5nIGl0IGluXG4gKiBwYXNzaXZlIHByb2dyZXNzIGluZGljYXRvcnMgYW5kIHdhdGVyZmFsbCBwcm9ncmVzcyBpbmRpY2F0b3JzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgdG8gZGlzcGxheSBvbiB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgXCJOZXh0XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBuYXYgYnV0dG9uIHRvIGluY2x1ZGUuXG4gICAqIFRoZSB2YWxpZCBvcHRpb25zIGFyZSBgXCJmaW5pc2hcImAsIGBcIm5leHRcImAsIGBcInByZXZpb3VzXCJgLCBhbmQgYFwicmVzZXRcImAuXG4gICAqIEBkZWZhdWx0IFwibmV4dFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19idXR0b25UeXBlID0gdmFsdWUgfHwgQlVUVE9OX1RZUEVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfYnV0dG9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb2dyZXNzSW5kaWNhdG9yKFxuICAgIHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09ICdmaW5pc2gnKSB7XG4gICAgICAgIC8vIFRoZSBgaGFzRmluaXNoQnV0dG9uYCBmaWVsZCB3YXMgYWRkZWQgdG8gc3VwcG9ydCBsZWdhY3kgQVBJLlxuICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBvbmx5IGluY2x1ZGUgYSBuZXh0IGJ1dHRvbjsgd2UgY2Fubm90XG4gICAgICAgIC8vIGFzc3VtZSB0aGF0IGV2ZXJ5IGltcGxlbWVudGF0aW9uIGluY2x1ZGVzIGJvdGggYSBmaW5pc2ggYnV0dG9uIGFuZCBhIG5leHQgYnV0dG9uLlxuICAgICAgICB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IuaGFzRmluaXNoQnV0dG9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jX3Byb2dyZXNzSW5kaWNhdG9yLnByb2dyZXNzQ2hhbmdlc1xuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RQcm9ncmVzc0NoYW5nZSA9IGNoYW5nZTtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVCdXR0b25WaXNpYmlsaXR5KGNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuI3BhcmVudFRpbWVvdXQpIHtcbiAgICAgICAgdGhpcy4jcGFyZW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc0luZGljYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnVGhlIGA8c2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uPmAgY29tcG9uZW50IHJlcXVpcmVzIGEgcmVmZXJlbmNlIHRvICcgK1xuICAgICAgICAgICAgICAgICd0aGUgYDxza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yPmAgY29tcG9uZW50IGl0IGNvbnRyb2xzLiBGb3IgZXhhbXBsZTpcXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3JcXG4nICtcbiAgICAgICAgICAgICAgICAnICAjbXlQcm9ncmVzc0luZGljYXRvclxcbicgK1xuICAgICAgICAgICAgICAgICc+XFxuJyArXG4gICAgICAgICAgICAgICAgJzwvc2t5LXByb2dyZXNzLWluZGljYXRvcj5cXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvblxcbicgK1xuICAgICAgICAgICAgICAgICcgIFtwcm9ncmVzc0luZGljYXRvcl09XCJteVByb2dyZXNzSW5kaWNhdG9yXCJcXG4nICtcbiAgICAgICAgICAgICAgICAnPlxcbicgK1xuICAgICAgICAgICAgICAgICc8L3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbj4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3NJbmRpY2F0b3IoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIG5hdiBidXR0b24gYW5kIGVtaXRzIGEgYFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tBcmdzYFxuICAgKiBvYmplY3QgdGhhdCBpcyBwYXNzZWQgaW50byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWxsb3cgY29uc3VtZXJzIHRvIGRlY2lkZSB3aGV0aGVyXG4gICAqIHRoZSBidXR0b27igJlzIGFjdGlvbiBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JBY3Rpb25DbGlja0FyZ3M+KCk7XG5cbiAgcHVibGljIHNldCBpc1Zpc2libGUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaXNWaXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UHJvZ3Jlc3NDaGFuZ2U6IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3BhcmVudFRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjX2J1dHRvblR5cGUgPSBCVVRUT05fVFlQRV9ERUZBVUxUO1xuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX2lzVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19wcm9ncmVzc0luZGljYXRvcjogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3BhcmVudENvbXBvbmVudDogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHBhcmVudENvbXBvbmVudD86IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcGFyZW50Q29tcG9uZW50ID0gcGFyZW50Q29tcG9uZW50O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgJiYgdGhpcy4jcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yID0gdGhpcy4jcGFyZW50Q29tcG9uZW50O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBsZXQgdHlwZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZSB8IHVuZGVmaW5lZDtcblxuICAgIHN3aXRjaCAodGhpcy5idXR0b25UeXBlKSB7XG4gICAgICBjYXNlICdmaW5pc2gnOlxuICAgICAgICB0eXBlID0gU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5GaW5pc2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLlByb2dyZXNzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVncmVzcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLlJlc2V0O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29uc3VtZXIgaGFzIHN1YnNjcmliZWQgdG8gdGhlIGBhY3Rpb25DbGlja2AgZXZlbnQsXG4gICAgLy8gYWxsb3cgdGhlbSB0byBkZWNpZGUgd2hlbiB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IHN0ZXAuXG4gICAgaWYgKHRoaXMuYWN0aW9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwcm9ncmVzc0hhbmRsZXI6IG5ldyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NlbmRNZXNzYWdlKHR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNzZW5kTWVzc2FnZSh0eXBlKTtcbiAgICB9XG4gIH1cblxuICAjc2VuZE1lc3NhZ2UodHlwZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICh0eXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3I/LnNlbmRNZXNzYWdlKHsgdHlwZSB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQnV0dG9uVmlzaWJpbGl0eShjaGFuZ2U6IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgaXNMYXN0U3RlcCA9XG4gICAgICBjaGFuZ2UuaXRlbVN0YXR1c2VzICYmXG4gICAgICBjaGFuZ2UuYWN0aXZlSW5kZXggPT09IGNoYW5nZS5pdGVtU3RhdHVzZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgLy8gSGlkZSB0aGUgYnV0dG9uIGlmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVcbiAgICAvLyAoZXhjZXB0IGZvciB0aGUgcmVzZXQgYnV0dG9uKVxuICAgIGlmIChidXR0b25UeXBlICE9PSAncmVzZXQnICYmIGNoYW5nZS5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc0xhc3RTdGVwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhpZGUgdGhlIG5leHQgYnV0dG9uIG9uIHRoZSBsYXN0IHN0ZXAgb25seSBpZiBhIGZpbmlzaCBidXR0b24gZXhpc3RzLlxuICAgIGlmIChcbiAgICAgIGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJlxuICAgICAgaXNMYXN0U3RlcCAmJlxuICAgICAgdGhpcy5wcm9ncmVzc0luZGljYXRvcj8uaGFzRmluaXNoQnV0dG9uXG4gICAgKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cImlzVmlzaWJsZVwiXG4gIGNsYXNzPVwic2t5LWJ0biBza3ktbWFyZ2luLWlubGluZS1zbVwiXG4gIHR5cGU9XCJidXR0b25cIlxuICBbZGlzYWJsZWRdPVwiXG4gICAgZGlzYWJsZWRcbiAgICAgIHwgc2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25EaXNhYmxlZFxuICAgICAgICA6IGJ1dHRvblR5cGVcbiAgICAgICAgOiBsYXN0UHJvZ3Jlc3NDaGFuZ2U/LmFjdGl2ZUluZGV4XG4gICAgICAgIDogbGFzdFByb2dyZXNzQ2hhbmdlPy5pdGVtU3RhdHVzZXNcbiAgXCJcbiAgW25nQ2xhc3NdPVwiYnV0dG9uVHlwZSB8IHNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uQ2xhc3NcIlxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbj5cbiAge3tcbiAgICBidXR0b25UZXh0IHx8XG4gICAgICAoJ3NreXV4X3Byb2dyZXNzX2luZGljYXRvcl9uYXZpZ2F0b3JfJyArIGJ1dHRvblR5cGUgfCBza3lMaWJSZXNvdXJjZXMpXG4gIH19XG48L2J1dHRvbj5cbiJdfQ==
|