@skyux/modals 6.14.0 → 6.17.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 +341 -568
- package/esm2020/lib/modules/confirm/confirm-config-token.mjs +6 -0
- package/esm2020/lib/modules/confirm/confirm.component.mjs +103 -97
- package/esm2020/lib/modules/confirm/confirm.service.mjs +9 -5
- package/esm2020/lib/modules/modal/modal-adapter.service.mjs +20 -15
- package/esm2020/lib/modules/modal/modal-close-args.mjs +1 -1
- package/esm2020/lib/modules/modal/modal-component-adapter.service.mjs +17 -13
- package/esm2020/lib/modules/modal/modal-host.component.mjs +26 -13
- package/esm2020/lib/modules/modal/modal-host.service.mjs +27 -20
- package/esm2020/lib/modules/modal/modal-instance.mjs +31 -29
- package/esm2020/lib/modules/modal/modal-scroll-shadow.directive.mjs +71 -65
- package/esm2020/lib/modules/modal/modal.component.mjs +61 -74
- package/esm2020/lib/modules/modal/modal.service.mjs +51 -45
- package/esm2020/testing/modal-fixture.mjs +61 -84
- package/fesm2015/skyux-modals-testing.mjs +61 -83
- package/fesm2015/skyux-modals-testing.mjs.map +1 -1
- package/fesm2015/skyux-modals.mjs +395 -370
- package/fesm2015/skyux-modals.mjs.map +1 -1
- package/fesm2020/skyux-modals-testing.mjs +61 -83
- package/fesm2020/skyux-modals-testing.mjs.map +1 -1
- package/fesm2020/skyux-modals.mjs +394 -370
- package/fesm2020/skyux-modals.mjs.map +1 -1
- package/lib/modules/confirm/confirm-config-token.d.ts +6 -0
- package/lib/modules/confirm/confirm.component.d.ts +6 -12
- package/lib/modules/confirm/confirm.service.d.ts +1 -1
- package/lib/modules/modal/modal-adapter.service.d.ts +1 -5
- package/lib/modules/modal/modal-close-args.d.ts +1 -1
- package/lib/modules/modal/modal-component-adapter.service.d.ts +1 -2
- package/lib/modules/modal/modal-host.component.d.ts +1 -6
- package/lib/modules/modal/modal-host.service.d.ts +6 -6
- package/lib/modules/modal/modal-instance.d.ts +2 -6
- package/lib/modules/modal/modal-scroll-shadow.directive.d.ts +1 -13
- package/lib/modules/modal/modal.component.d.ts +12 -23
- package/lib/modules/modal/modal.service.d.ts +1 -3
- package/package.json +5 -6
- package/testing/modal-fixture.d.ts +7 -8
- package/esm2020/lib/modules/confirm/confirm-modal-context.mjs +0 -6
- package/esm2020/lib/modules/modal/modal-state-animation.mjs +0 -8
- package/lib/modules/confirm/confirm-modal-context.d.ts +0 -13
- package/lib/modules/modal/modal-state-animation.d.ts +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
var _SkyModalComponent_hostService, _SkyModalComponent_elRef, _SkyModalComponent_windowRef, _SkyModalComponent_componentAdapter, _SkyModalComponent_coreAdapter, _SkyModalComponent_dockService, _SkyModalComponent_mediaQueryService, _SkyModalComponent__ariaRole;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
1
3
|
import { Component, ElementRef, Host, HostBinding, HostListener, Input, Optional, ViewChild, } from '@angular/core';
|
|
2
4
|
import { SkyAppWindowRef, SkyCoreAdapterService, SkyDockLocation, SkyDockService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
|
|
3
5
|
import { SkyModalComponentAdapterService } from './modal-component-adapter.service';
|
|
4
6
|
import { SkyModalConfiguration } from './modal-configuration';
|
|
5
7
|
import { SkyModalHostService } from './modal-host.service';
|
|
6
|
-
import { skyAnimationModalState } from './modal-state-animation';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "./modal-host.service";
|
|
9
10
|
import * as i2 from "./modal-configuration";
|
|
@@ -14,6 +15,7 @@ import * as i6 from "@angular/common";
|
|
|
14
15
|
import * as i7 from "./modal-scroll-shadow.directive";
|
|
15
16
|
import * as i8 from "@skyux/i18n";
|
|
16
17
|
let skyModalUniqueIdentifier = 0;
|
|
18
|
+
const ARIA_ROLE_DEFAULT = 'dialog';
|
|
17
19
|
/**
|
|
18
20
|
* Provides a common look-and-feel for modal content with options to display
|
|
19
21
|
* a common modal header, specify body content, and display a common modal footer
|
|
@@ -21,69 +23,54 @@ let skyModalUniqueIdentifier = 0;
|
|
|
21
23
|
*/
|
|
22
24
|
export class SkyModalComponent {
|
|
23
25
|
constructor(hostService, config, elRef, windowRef, componentAdapter, coreAdapter, dockService, mediaQueryService) {
|
|
24
|
-
this.
|
|
25
|
-
this.config = config;
|
|
26
|
-
this.elRef = elRef;
|
|
27
|
-
this.windowRef = windowRef;
|
|
28
|
-
this.componentAdapter = componentAdapter;
|
|
29
|
-
this.coreAdapter = coreAdapter;
|
|
30
|
-
this.dockService = dockService;
|
|
31
|
-
this.mediaQueryService = mediaQueryService;
|
|
26
|
+
this.ariaRoleOrDefault = ARIA_ROLE_DEFAULT;
|
|
32
27
|
this.modalState = 'in';
|
|
33
28
|
this.modalContentId = 'sky-modal-content-id-' + skyModalUniqueIdentifier.toString();
|
|
34
29
|
this.modalHeaderId = 'sky-modal-header-id-' + skyModalUniqueIdentifier.toString();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
_SkyModalComponent_hostService.set(this, void 0);
|
|
31
|
+
_SkyModalComponent_elRef.set(this, void 0);
|
|
32
|
+
_SkyModalComponent_windowRef.set(this, void 0);
|
|
33
|
+
_SkyModalComponent_componentAdapter.set(this, void 0);
|
|
34
|
+
_SkyModalComponent_coreAdapter.set(this, void 0);
|
|
35
|
+
_SkyModalComponent_dockService.set(this, void 0);
|
|
36
|
+
_SkyModalComponent_mediaQueryService.set(this, void 0);
|
|
37
|
+
_SkyModalComponent__ariaRole.set(this, void 0);
|
|
38
|
+
__classPrivateFieldSet(this, _SkyModalComponent_hostService, hostService, "f");
|
|
39
|
+
__classPrivateFieldSet(this, _SkyModalComponent_elRef, elRef, "f");
|
|
40
|
+
__classPrivateFieldSet(this, _SkyModalComponent_windowRef, windowRef, "f");
|
|
41
|
+
__classPrivateFieldSet(this, _SkyModalComponent_componentAdapter, componentAdapter, "f");
|
|
42
|
+
__classPrivateFieldSet(this, _SkyModalComponent_coreAdapter, coreAdapter, "f");
|
|
43
|
+
__classPrivateFieldSet(this, _SkyModalComponent_dockService, dockService, "f");
|
|
44
|
+
__classPrivateFieldSet(this, _SkyModalComponent_mediaQueryService, mediaQueryService, "f");
|
|
45
|
+
this.ariaDescribedBy = config.ariaDescribedBy || this.modalContentId;
|
|
46
|
+
this.ariaLabelledBy = config.ariaLabelledBy || this.modalHeaderId;
|
|
47
|
+
this.ariaRole = config.ariaRole;
|
|
48
|
+
this.helpKey = config.helpKey;
|
|
49
|
+
this.tiledBody = config.tiledBody;
|
|
50
|
+
this.wrapperClass = config.wrapperClass;
|
|
51
|
+
this.size = config.fullPage
|
|
52
|
+
? 'full-page'
|
|
53
|
+
: config.size?.toLowerCase() || 'medium';
|
|
54
|
+
this.modalZIndex = __classPrivateFieldGet(this, _SkyModalComponent_hostService, "f").zIndex;
|
|
55
|
+
}
|
|
56
|
+
// Ignoring coverage as we only use the setter internally and do not export the class externally for users to be able to use the getter.
|
|
57
|
+
// istanbul ignore next
|
|
39
58
|
/**
|
|
40
59
|
* @internal
|
|
41
60
|
*/
|
|
42
61
|
get ariaRole() {
|
|
43
|
-
return this
|
|
62
|
+
return __classPrivateFieldGet(this, _SkyModalComponent__ariaRole, "f");
|
|
44
63
|
}
|
|
45
64
|
set ariaRole(value) {
|
|
46
|
-
this
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
set tiledBody(value) {
|
|
52
|
-
this.config.tiledBody = value;
|
|
53
|
-
}
|
|
54
|
-
get modalZIndex() {
|
|
55
|
-
return this.hostService.getModalZIndex();
|
|
56
|
-
}
|
|
57
|
-
get modalFullPage() {
|
|
58
|
-
return this.config.fullPage;
|
|
59
|
-
}
|
|
60
|
-
get isSmallSize() {
|
|
61
|
-
return !this.modalFullPage && this.isSizeEqual(this.config.size, 'small');
|
|
62
|
-
}
|
|
63
|
-
get isMediumSize() {
|
|
64
|
-
return !this.modalFullPage && !(this.isSmallSize || this.isLargeSize);
|
|
65
|
-
}
|
|
66
|
-
get isLargeSize() {
|
|
67
|
-
return !this.modalFullPage && this.isSizeEqual(this.config.size, 'large');
|
|
68
|
-
}
|
|
69
|
-
get isTiledBody() {
|
|
70
|
-
return this.config.tiledBody;
|
|
71
|
-
}
|
|
72
|
-
get ariaDescribedBy() {
|
|
73
|
-
return this.config.ariaDescribedBy || this.modalContentId;
|
|
74
|
-
}
|
|
75
|
-
get ariaLabelledBy() {
|
|
76
|
-
return this.config.ariaLabelledBy || this.modalHeaderId;
|
|
77
|
-
}
|
|
78
|
-
get helpKey() {
|
|
79
|
-
return this.config.helpKey;
|
|
65
|
+
__classPrivateFieldSet(this, _SkyModalComponent__ariaRole, value, "f");
|
|
66
|
+
this.ariaRoleOrDefault = value || ARIA_ROLE_DEFAULT;
|
|
80
67
|
}
|
|
81
68
|
onDocumentKeyUp(event) {
|
|
82
69
|
/* istanbul ignore else */
|
|
83
70
|
/* sanity check */
|
|
84
71
|
if (SkyModalHostService.openModalCount > 0) {
|
|
85
72
|
const topModal = SkyModalHostService.topModal;
|
|
86
|
-
if (topModal && topModal === this
|
|
73
|
+
if (topModal && topModal === __classPrivateFieldGet(this, _SkyModalComponent_hostService, "f")) {
|
|
87
74
|
if (event.which === 27) {
|
|
88
75
|
// Escape key up
|
|
89
76
|
event.preventDefault();
|
|
@@ -97,21 +84,21 @@ export class SkyModalComponent {
|
|
|
97
84
|
/* sanity check */
|
|
98
85
|
if (SkyModalHostService.openModalCount > 0) {
|
|
99
86
|
const topModal = SkyModalHostService.topModal;
|
|
100
|
-
if (topModal && topModal === this
|
|
87
|
+
if (topModal && topModal === __classPrivateFieldGet(this, _SkyModalComponent_hostService, "f")) {
|
|
101
88
|
if (event.which === 9) {
|
|
102
89
|
// Tab pressed
|
|
103
90
|
let focusChanged = false;
|
|
104
|
-
const focusElementList = this.
|
|
91
|
+
const focusElementList = __classPrivateFieldGet(this, _SkyModalComponent_coreAdapter, "f").getFocusableChildren(__classPrivateFieldGet(this, _SkyModalComponent_elRef, "f").nativeElement);
|
|
105
92
|
if (event.shiftKey &&
|
|
106
|
-
(this.
|
|
107
|
-
this.
|
|
93
|
+
(__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").isFocusInFirstItem(event, focusElementList) ||
|
|
94
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").isModalFocused(event, __classPrivateFieldGet(this, _SkyModalComponent_elRef, "f")))) {
|
|
108
95
|
focusChanged =
|
|
109
|
-
this.
|
|
96
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").focusLastElement(focusElementList);
|
|
110
97
|
}
|
|
111
98
|
else if (!event.shiftKey &&
|
|
112
|
-
this.
|
|
99
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").isFocusInLastItem(event, focusElementList)) {
|
|
113
100
|
focusChanged =
|
|
114
|
-
this.
|
|
101
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").focusFirstElement(focusElementList);
|
|
115
102
|
}
|
|
116
103
|
if (focusChanged) {
|
|
117
104
|
event.preventDefault();
|
|
@@ -123,52 +110,52 @@ export class SkyModalComponent {
|
|
|
123
110
|
}
|
|
124
111
|
ngAfterViewInit() {
|
|
125
112
|
skyModalUniqueIdentifier++;
|
|
126
|
-
this.
|
|
113
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").handleWindowChange(__classPrivateFieldGet(this, _SkyModalComponent_elRef, "f"));
|
|
127
114
|
// Adding a timeout to avoid ExpressionChangedAfterItHasBeenCheckedError.
|
|
128
115
|
// https://stackoverflow.com/questions/40562845
|
|
129
|
-
this.
|
|
130
|
-
this.
|
|
116
|
+
__classPrivateFieldGet(this, _SkyModalComponent_windowRef, "f").nativeWindow.setTimeout(() => {
|
|
117
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").modalOpened(__classPrivateFieldGet(this, _SkyModalComponent_elRef, "f"));
|
|
131
118
|
});
|
|
132
|
-
this.
|
|
119
|
+
__classPrivateFieldGet(this, _SkyModalComponent_dockService, "f").setDockOptions({
|
|
133
120
|
location: SkyDockLocation.ElementBottom,
|
|
134
121
|
referenceEl: this.modalContentWrapperElement.nativeElement,
|
|
135
122
|
zIndex: 5,
|
|
136
123
|
});
|
|
137
124
|
/* istanbul ignore next */
|
|
138
|
-
if (this
|
|
139
|
-
this.
|
|
125
|
+
if (__classPrivateFieldGet(this, _SkyModalComponent_mediaQueryService, "f")) {
|
|
126
|
+
__classPrivateFieldGet(this, _SkyModalComponent_mediaQueryService, "f").observe(this.modalContentWrapperElement);
|
|
140
127
|
}
|
|
141
128
|
}
|
|
142
129
|
ngOnDestroy() {
|
|
143
130
|
/* istanbul ignore next */
|
|
144
|
-
if (this
|
|
145
|
-
this.
|
|
131
|
+
if (__classPrivateFieldGet(this, _SkyModalComponent_mediaQueryService, "f")) {
|
|
132
|
+
__classPrivateFieldGet(this, _SkyModalComponent_mediaQueryService, "f").unobserve();
|
|
146
133
|
}
|
|
147
134
|
}
|
|
148
135
|
helpButtonClick() {
|
|
149
|
-
|
|
136
|
+
if (this.helpKey) {
|
|
137
|
+
__classPrivateFieldGet(this, _SkyModalComponent_hostService, "f").onOpenHelp(this.helpKey);
|
|
138
|
+
}
|
|
150
139
|
}
|
|
151
140
|
closeButtonClick() {
|
|
152
|
-
this.
|
|
141
|
+
__classPrivateFieldGet(this, _SkyModalComponent_hostService, "f").onClose();
|
|
153
142
|
}
|
|
154
143
|
windowResize() {
|
|
155
|
-
this.
|
|
144
|
+
__classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").handleWindowChange(__classPrivateFieldGet(this, _SkyModalComponent_elRef, "f"));
|
|
156
145
|
}
|
|
157
146
|
scrollShadowChange(args) {
|
|
158
147
|
this.scrollShadow = args;
|
|
159
148
|
}
|
|
160
149
|
viewkeeperEnabled() {
|
|
161
|
-
return this.
|
|
162
|
-
}
|
|
163
|
-
isSizeEqual(actualSize, size) {
|
|
164
|
-
return actualSize && actualSize.toLowerCase() === size;
|
|
150
|
+
return __classPrivateFieldGet(this, _SkyModalComponent_componentAdapter, "f").modalContentHasDirectChildViewkeeper(__classPrivateFieldGet(this, _SkyModalComponent_elRef, "f"));
|
|
165
151
|
}
|
|
166
152
|
}
|
|
153
|
+
_SkyModalComponent_hostService = new WeakMap(), _SkyModalComponent_elRef = new WeakMap(), _SkyModalComponent_windowRef = new WeakMap(), _SkyModalComponent_componentAdapter = new WeakMap(), _SkyModalComponent_coreAdapter = new WeakMap(), _SkyModalComponent_dockService = new WeakMap(), _SkyModalComponent_mediaQueryService = new WeakMap(), _SkyModalComponent__ariaRole = new WeakMap();
|
|
167
154
|
SkyModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalComponent, deps: [{ token: i1.SkyModalHostService }, { token: i2.SkyModalConfiguration }, { token: i0.ElementRef }, { token: i3.SkyAppWindowRef }, { token: i4.SkyModalComponentAdapterService }, { token: i3.SkyCoreAdapterService }, { token: i3.SkyDockService, host: true }, { token: i3.SkyResizeObserverMediaQueryService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
-
SkyModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyModalComponent, selector: "sky-modal", inputs: { ariaRole: "ariaRole", tiledBody: "tiledBody" }, host: { listeners: { "document:keyup": "onDocumentKeyUp($event)", "document:keydown": "onDocumentKeyDown($event)" }, properties: { "class": "this.wrapperClass" } }, providers: [SkyModalComponentAdapterService, SkyDockService], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "
|
|
155
|
+
SkyModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyModalComponent, selector: "sky-modal", inputs: { ariaRole: "ariaRole", tiledBody: "tiledBody" }, host: { listeners: { "document:keyup": "onDocumentKeyUp($event)", "document:keydown": "onDocumentKeyDown($event)" }, properties: { "class": "this.wrapperClass" } }, providers: [SkyModalComponentAdapterService, SkyDockService], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [hidden]=\"!headerContent || !headerContent.children || headerContent.children.length < 1\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n [attr.id]=\"modalHeaderId\"\n [ngClass]=\"{\n 'sky-section-heading': size === 'full-page'\n }\"\n #headerContent\n >\n <ng-content select=\"sky-modal-header\"></ng-content>\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"helpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\"></sky-icon>\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\"></sky-icon>\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n [attr.aria-labelledby]=\"modalHeaderId\"\n [attr.id]=\"modalContentId\"\n (skyModalScrollShadow)=\"scrollShadowChange($event)\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\"></ng-content>\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#686c73;font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-footer ::ng-deep .sky-btn+.sky-btn{margin-left:10px}.sky-modal-footer ::ng-deep .sky-btn+.sky-btn-link{margin-left:-2px}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}:host ::ng-deep .sky-sectioned-form{min-height:460px;margin:-15px}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent}\n"], components: [{ type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.SkyModalScrollShadowDirective, selector: "[skyModalScrollShadow]", outputs: ["skyModalScrollShadow"] }], pipes: { "skyLibResources": i8.SkyLibResourcesPipe } });
|
|
169
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalComponent, decorators: [{
|
|
170
157
|
type: Component,
|
|
171
|
-
args: [{ selector: 'sky-modal',
|
|
158
|
+
args: [{ selector: 'sky-modal', providers: [SkyModalComponentAdapterService, SkyDockService], template: "<div\n class=\"sky-modal-dialog\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.role]=\"ariaRoleOrDefault\"\n (window:resize)=\"windowResize()\"\n>\n <div\n class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n tabindex=\"-1\"\n [ngClass]=\"{\n 'sky-modal-tiled': tiledBody,\n 'sky-modal-viewkeeper': viewkeeperEnabled()\n }\"\n [ngStyle]=\"{\n zIndex: modalZIndex\n }\"\n >\n <div\n class=\"sky-modal-header\"\n [hidden]=\"!headerContent || !headerContent.children || headerContent.children.length < 1\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.topShadow\n }\"\n >\n <div\n class=\"sky-modal-header-content\"\n [attr.id]=\"modalHeaderId\"\n [ngClass]=\"{\n 'sky-section-heading': size === 'full-page'\n }\"\n #headerContent\n >\n <ng-content select=\"sky-modal-header\"></ng-content>\n </div>\n <div class=\"sky-modal-header-buttons\">\n <button\n *ngIf=\"helpKey\"\n class=\"sky-btn sky-modal-btn-help\"\n name=\"help-button\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n (click)=\"helpButtonClick()\"\n >\n <sky-icon icon=\"question-circle\"></sky-icon>\n </button>\n\n <button\n type=\"button\"\n class=\"sky-btn sky-modal-btn-close\"\n [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n (click)=\"closeButtonClick()\"\n >\n <sky-icon icon=\"close\"></sky-icon>\n </button>\n </div>\n </div>\n <div\n class=\"sky-modal-content sky-padding-even-large\"\n role=\"region\"\n tabindex=\"0\"\n [attr.aria-labelledby]=\"modalHeaderId\"\n [attr.id]=\"modalContentId\"\n (skyModalScrollShadow)=\"scrollShadowChange($event)\"\n #modalContentWrapper\n >\n <ng-content select=\"sky-modal-content\"></ng-content>\n </div>\n <div\n class=\"sky-modal-footer\"\n [ngStyle]=\"{\n 'box-shadow': scrollShadow?.bottomShadow\n }\"\n >\n <ng-content select=\"sky-modal-footer\"></ng-content>\n </div>\n </div>\n</div>\n", styles: [".sky-modal{border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2;position:fixed;width:auto;left:0;right:0;top:20px;margin:10px;display:flex;flex-direction:column;overflow:hidden}.sky-modal:focus{outline:none}@media (min-width: 768px){.sky-modal:not(.sky-modal-large){margin:0 auto}.sky-modal-small{width:300px}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:300px}.sky-modal-medium{width:600px}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:600px}}@media (min-width: 920px){.sky-modal-large{margin:0 auto;width:900px}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:900px}}.sky-modal-content{background-color:#fff}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:#686c73;font-weight:300;font-size:19px}.sky-modal-header{padding:9px 3px 9px 15px;background-color:#fff;display:flex;align-items:baseline;border-bottom:1px solid #e2e3e4}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#cdcfd2;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#979ba2;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-footer ::ng-deep .sky-btn+.sky-btn{margin-left:10px}.sky-modal-footer ::ng-deep .sky-btn+.sky-btn-link{margin-left:-2px}.sky-modal-full-page{width:100%;top:0;margin:0}.sky-modal-full-page .sky-modal-header-buttons sky-icon[icon=close]{font-size:20px}.sky-modal-full-page .sky-modal-content{flex-grow:1}:host ::ng-deep .sky-sectioned-form{min-height:460px;margin:-15px}.sky-modal-content>::ng-deep sky-dock{bottom:-15px;margin-left:-15px;margin-bottom:-15px;padding-top:15px;width:calc(100% + 30px)}:host-context(.sky-theme-modern) .sky-modal-header{border:none;padding:20px 30px}:host-context(.sky-theme-modern) .sky-modal-btn-help,:host-context(.sky-theme-modern) .sky-modal-btn-close{display:none}:host-context(.sky-theme-modern) .sky-modal-content{padding:0}:host-context(.sky-theme-modern) .sky-modal-full-page{width:calc(100% - 60px);margin:30px}:host-context(.sky-theme-modern) .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}:host-context(.sky-theme-modern) .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-modal-header{border:none;padding:20px 30px}.sky-theme-modern .sky-modal-btn-help,.sky-theme-modern .sky-modal-btn-close{display:none}.sky-theme-modern .sky-modal-content{padding:0}.sky-theme-modern .sky-modal-full-page{width:calc(100% - 60px);margin:30px}.sky-theme-modern .sky-modal-content>::ng-deep sky-dock{bottom:0;margin-left:initial;margin-bottom:initial;padding-top:initial;width:100%}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:0 4px 8px -4px #0000004d}.sky-theme-modern .sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:#fff;padding-left:30px;padding-right:30px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal{border-color:#121212}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header{color:#fbfcfe}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-header,:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-modal-content{background-color:transparent}.sky-theme-modern.sky-theme-mode-dark .sky-modal{border-color:#121212}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark .sky-modal-header,.sky-theme-modern.sky-theme-mode-dark .sky-modal-content{background-color:transparent}\n"] }]
|
|
172
159
|
}], ctorParameters: function () { return [{ type: i1.SkyModalHostService }, { type: i2.SkyModalConfiguration }, { type: i0.ElementRef }, { type: i3.SkyAppWindowRef }, { type: i4.SkyModalComponentAdapterService }, { type: i3.SkyCoreAdapterService }, { type: i3.SkyDockService, decorators: [{
|
|
173
160
|
type: Host
|
|
174
161
|
}] }, { type: i3.SkyResizeObserverMediaQueryService, decorators: [{
|
|
@@ -190,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
190
177
|
type: HostListener,
|
|
191
178
|
args: ['document:keydown', ['$event']]
|
|
192
179
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGNBQWMsRUFDZCxrQ0FBa0MsR0FDbkMsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7QUFFakUsSUFBSSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFakM7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyxpQkFBaUI7SUEwRTVCLFlBQ1UsV0FBZ0MsRUFDaEMsTUFBNkIsRUFDN0IsS0FBaUIsRUFDakIsU0FBMEIsRUFDMUIsZ0JBQWlELEVBQ2pELFdBQWtDLEVBQzFCLFdBQTJCLEVBRW5DLGlCQUFzRDtRQVJ0RCxnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDN0IsVUFBSyxH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LElBQW1DO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0NBQW9DLENBQy9ELElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBa0IsRUFBRSxJQUFZO1FBQ2xELE9BQU8sVUFBVSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUM7SUFDekQsQ0FBQzs7OEdBck1VLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1RQUZqQixDQUFDLCtCQUErQixFQUFFLGNBQWMsQ0FBQyx3SUF5RWxCLFVBQVUsNkJDL0d0RCw2bEZBeUZBLGl2S0RwRGMsQ0FBQyxzQkFBc0IsQ0FBQzsyRkFHekIsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLFdBQVcsY0FHVCxDQUFDLHNCQUFzQixDQUFDLGFBQ3pCLENBQUMsK0JBQStCLEVBQUUsY0FBYyxDQUFDOzswQkFtRnpELElBQUk7OzBCQUNKLFFBQVE7NENBaEZBLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsT0FBTztnQkFTVCxRQUFRO3NCQURsQixLQUFLO2dCQVlLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBb0RFLDBCQUEwQjtzQkFEakMsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBZ0IvQyxlQUFlO3NCQURyQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCbkMsaUJBQWlCO3NCQUR2QixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFwcFdpbmRvd1JlZixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lEb2NrTG9jYXRpb24sXG4gIFNreURvY2tTZXJ2aWNlLFxuICBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsQ29tcG9uZW50QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWNvbXBvbmVudC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5TW9kYWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tb2RhbC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IFNreU1vZGFsSG9zdFNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWhvc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTa3lNb2RhbFNjcm9sbFNoYWRvd0V2ZW50QXJncyB9IGZyb20gJy4vbW9kYWwtc2Nyb2xsLXNoYWRvdy1ldmVudC1hcmdzJztcbmltcG9ydCB7IHNreUFuaW1hdGlvbk1vZGFsU3RhdGUgfSBmcm9tICcuL21vZGFsLXN0YXRlLWFuaW1hdGlvbic7XG5cbmxldCBza3lNb2RhbFVuaXF1ZUlkZW50aWZpZXIgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgY29tbW9uIGxvb2stYW5kLWZlZWwgZm9yIG1vZGFsIGNvbnRlbnQgd2l0aCBvcHRpb25zIHRvIGRpc3BsYXlcbiAqIGEgY29tbW9uIG1vZGFsIGhlYWRlciwgc3BlY2lmeSBib2R5IGNvbnRlbnQsIGFuZCBkaXNwbGF5IGEgY29tbW9uIG1vZGFsIGZvb3RlclxuICogYW5kIGJ1dHRvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtza3lBbmltYXRpb25Nb2RhbFN0YXRlXSxcbiAgcHJvdmlkZXJzOiBbU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSwgU2t5RG9ja1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwdWJsaWMgZ2V0IHdyYXBwZXJDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy53cmFwcGVyQ2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hcmlhUm9sZSB8fCAnZGlhbG9nJztcbiAgfVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZy5hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aWxlZEJvZHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZy50aWxlZEJvZHkgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxaSW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdFNlcnZpY2UuZ2V0TW9kYWxaSW5kZXgoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxGdWxsUGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZnVsbFBhZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU21hbGxTaXplKCkge1xuICAgIHJldHVybiAhdGhpcy5tb2RhbEZ1bGxQYWdlICYmIHRoaXMuaXNTaXplRXF1YWwodGhpcy5jb25maWcuc2l6ZSwgJ3NtYWxsJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTWVkaXVtU2l6ZSgpIHtcbiAgICByZXR1cm4gIXRoaXMubW9kYWxGdWxsUGFnZSAmJiAhKHRoaXMuaXNTbWFsbFNpemUgfHwgdGhpcy5pc0xhcmdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTGFyZ2VTaXplKCkge1xuICAgIHJldHVybiAhdGhpcy5tb2RhbEZ1bGxQYWdlICYmIHRoaXMuaXNTaXplRXF1YWwodGhpcy5jb25maWcuc2l6ZSwgJ2xhcmdlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVGlsZWRCb2R5KCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy50aWxlZEJvZHk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyaWFEZXNjcmliZWRCeSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYXJpYURlc2NyaWJlZEJ5IHx8IHRoaXMubW9kYWxDb250ZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbGxlZEJ5KCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hcmlhTGFiZWxsZWRCeSB8fCB0aGlzLm1vZGFsSGVhZGVySWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhlbHBLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmhlbHBLZXk7XG4gIH1cblxuICBwdWJsaWMgbW9kYWxTdGF0ZSA9ICdpbic7XG5cbiAgcHVibGljIG1vZGFsQ29udGVudElkOiBzdHJpbmcgPVxuICAgICdza3ktbW9kYWwtY29udGVudC1pZC0nICsgc2t5TW9kYWxVbmlxdWVJZGVudGlmaWVyLnRvU3RyaW5nKCk7XG5cbiAgcHVibGljIG1vZGFsSGVhZGVySWQ6IHN0cmluZyA9XG4gICAgJ3NreS1tb2RhbC1oZWFkZXItaWQtJyArIHNreU1vZGFsVW5pcXVlSWRlbnRpZmllci50b1N0cmluZygpO1xuXG4gIHB1YmxpYyBzY3JvbGxTaGFkb3c6IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudFdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBtb2RhbENvbnRlbnRXcmFwcGVyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3RTZXJ2aWNlOiBTa3lNb2RhbEhvc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBTa3lNb2RhbENvbmZpZ3VyYXRpb24sXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIHByaXZhdGUgY29tcG9uZW50QWRhcHRlcjogU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgQEhvc3QoKSBwcml2YXRlIGRvY2tTZXJ2aWNlOiBTa3lEb2NrU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgbWVkaWFRdWVyeVNlcnZpY2U/OiBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRvY3VtZW50S2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCkge1xuICAgICAgY29uc3QgdG9wTW9kYWwgPSBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsO1xuICAgICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsID09PSB0aGlzLmhvc3RTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChldmVudC53aGljaCA9PT0gMjcpIHtcbiAgICAgICAgICAvLyBFc2NhcGUga2V5IHVwXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlQnV0dG9uQ2xpY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Eb2N1bWVudEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChTa3lNb2RhbEhvc3RTZXJ2aWNlLm9wZW5Nb2RhbENvdW50ID4gMCkge1xuICAgICAgY29uc3QgdG9wTW9kYWwgPSBTa3lNb2RhbEhvc3RTZXJ2aWNlLnRvcE1vZGFsO1xuICAgICAgaWYgKHRvcE1vZGFsICYmIHRvcE1vZGFsID09PSB0aGlzLmhvc3RTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChldmVudC53aGljaCA9PT0gOSkge1xuICAgICAgICAgIC8vIFRhYiBwcmVzc2VkXG4gICAgICAgICAgbGV0IGZvY3VzQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZm9jdXNFbGVtZW50TGlzdCA9IHRoaXMuY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXkgJiZcbiAgICAgICAgICAgICh0aGlzLmNvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luRmlyc3RJdGVtKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgZm9jdXNFbGVtZW50TGlzdFxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIuaXNNb2RhbEZvY3VzZWQoZXZlbnQsIHRoaXMuZWxSZWYpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID1cbiAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLmZvY3VzTGFzdEVsZW1lbnQoZm9jdXNFbGVtZW50TGlzdCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICFldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLmlzRm9jdXNJbkxhc3RJdGVtKGV2ZW50LCBmb2N1c0VsZW1lbnRMaXN0KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID1cbiAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRBZGFwdGVyLmZvY3VzRmlyc3RFbGVtZW50KGZvY3VzRWxlbWVudExpc3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmb2N1c0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNreU1vZGFsVW5pcXVlSWRlbnRpZmllcisrO1xuICAgIHRoaXMuY29tcG9uZW50QWRhcHRlci5oYW5kbGVXaW5kb3dDaGFuZ2UodGhpcy5lbFJlZik7XG5cbiAgICAvLyBBZGRpbmcgYSB0aW1lb3V0IHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDA1NjI4NDVcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIubW9kYWxPcGVuZWQodGhpcy5lbFJlZik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY2tTZXJ2aWNlLnNldERvY2tPcHRpb25zKHtcbiAgICAgIGxvY2F0aW9uOiBTa3lEb2NrTG9jYXRpb24uRWxlbWVudEJvdHRvbSxcbiAgICAgIHJlZmVyZW5jZUVsOiB0aGlzLm1vZGFsQ29udGVudFdyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICB6SW5kZXg6IDUsXG4gICAgfSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLm1lZGlhUXVlcnlTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm1lZGlhUXVlcnlTZXJ2aWNlLm9ic2VydmUodGhpcy5tb2RhbENvbnRlbnRXcmFwcGVyRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMubWVkaWFRdWVyeVNlcnZpY2UpIHtcbiAgICAgIHRoaXMubWVkaWFRdWVyeVNlcnZpY2UudW5vYnNlcnZlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhlbHBCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLmhvc3RTZXJ2aWNlLm9uT3BlbkhlbHAodGhpcy5oZWxwS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUJ1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMuaG9zdFNlcnZpY2Uub25DbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHdpbmRvd1Jlc2l6ZSgpIHtcbiAgICB0aGlzLmNvbXBvbmVudEFkYXB0ZXIuaGFuZGxlV2luZG93Q2hhbmdlKHRoaXMuZWxSZWYpO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFNoYWRvd0NoYW5nZShhcmdzOiBTa3lNb2RhbFNjcm9sbFNoYWRvd0V2ZW50QXJncyk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsU2hhZG93ID0gYXJncztcbiAgfVxuXG4gIHB1YmxpYyB2aWV3a2VlcGVyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRBZGFwdGVyLm1vZGFsQ29udGVudEhhc0RpcmVjdENoaWxkVmlld2tlZXBlcihcbiAgICAgIHRoaXMuZWxSZWZcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NpemVFcXVhbChhY3R1YWxTaXplOiBzdHJpbmcsIHNpemU6IHN0cmluZykge1xuICAgIHJldHVybiBhY3R1YWxTaXplICYmIGFjdHVhbFNpemUudG9Mb3dlckNhc2UoKSA9PT0gc2l6ZTtcbiAgfVxufVxuIiwiPCEtLVxuICBBbmltYXRpb25zIGFyZSBicm9rZW4gaW4gQ2hyb21lIHY1Mi4gQW5ndWxhciAyIFJDNSB3aWxsIGZpeCBpdC5cbiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTAyNDVcbi0tPlxuPCEtLTxkaXYgQG1vZGFsU3RhdGU9XCJtb2RhbFN0YXRlXCI+LS0+XG5cbjxkaXZcbiAgY2xhc3M9XCJza3ktbW9kYWwtZGlhbG9nXCJcbiAgYXJpYS1tb2RhbD1cInRydWVcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICAod2luZG93OnJlc2l6ZSk9XCJ3aW5kb3dSZXNpemUoKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1tb2RhbCBza3ktc2hhZG93IHNreS1ib3ggc2t5LWVsZXZhdGlvbi0xNlwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1tb2RhbC1mdWxsLXBhZ2UnOiBtb2RhbEZ1bGxQYWdlLFxuICAgICAgJ3NreS1tb2RhbC1zbWFsbCc6IGlzU21hbGxTaXplLFxuICAgICAgJ3NreS1tb2RhbC1tZWRpdW0nOiBpc01lZGl1bVNpemUsXG4gICAgICAnc2t5LW1vZGFsLWxhcmdlJzogaXNMYXJnZVNpemUsXG4gICAgICAnc2t5LW1vZGFsLXRpbGVkJzogaXNUaWxlZEJvZHksXG4gICAgICAnc2t5LW1vZGFsLXZpZXdrZWVwZXInOiB2aWV3a2VlcGVyRW5hYmxlZCgpXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgekluZGV4OiBtb2RhbFpJbmRleFxuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyXCJcbiAgICAgIFtoaWRkZW5dPVwiIWhlYWRlckNvbnRlbnQgfHwgIWhlYWRlckNvbnRlbnQuY2hpbGRyZW4gfHwgaGVhZGVyQ29udGVudC5jaGlsZHJlbi5sZW5ndGggJmx0OyAxXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LnRvcFNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1tb2RhbC1oZWFkZXItY29udGVudFwiXG4gICAgICAgIFthdHRyLmlkXT1cIm1vZGFsSGVhZGVySWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1zZWN0aW9uLWhlYWRpbmcnOiBtb2RhbEZ1bGxQYWdlXG4gICAgICAgIH1cIlxuICAgICAgICAjaGVhZGVyQ29udGVudFxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbW9kYWwtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LW1vZGFsLWhlYWRlci1idXR0b25zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImhlbHBLZXlcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktbW9kYWwtYnRuLWhlbHBcIlxuICAgICAgICAgIG5hbWU9XCJoZWxwLWJ1dHRvblwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfbW9kYWxfb3Blbl9oZWxwJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cImhlbHBCdXR0b25DbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwicXVlc3Rpb24tY2lyY2xlXCI+PC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktbW9kYWwtYnRuLWNsb3NlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9tb2RhbF9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgIChjbGljayk9XCJjbG9zZUJ1dHRvbkNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJjbG9zZVwiPjwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtY29udGVudCBza3ktcGFkZGluZy1ldmVuLWxhcmdlXCJcbiAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJtb2RhbEhlYWRlcklkXCJcbiAgICAgIFthdHRyLmlkXT1cIm1vZGFsQ29udGVudElkXCJcbiAgICAgIChza3lNb2RhbFNjcm9sbFNoYWRvdyk9XCJzY3JvbGxTaGFkb3dDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAjbW9kYWxDb250ZW50V3JhcHBlclxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1tb2RhbC1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LW1vZGFsLWZvb3RlclwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdib3gtc2hhZG93Jzogc2Nyb2xsU2hhZG93Py5ib3R0b21TaGFkb3dcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1tb2RhbC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL21vZGFscy9zcmMvbGliL21vZHVsZXMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixJQUFJLEVBQ0osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGtDQUFrQyxHQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQUczRCxJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUVqQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUVuQzs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLGlCQUFpQjtJQTRENUIsWUFDRSxXQUFnQyxFQUNoQyxNQUE2QixFQUM3QixLQUFpQixFQUNqQixTQUEwQixFQUMxQixnQkFBaUQsRUFDakQsV0FBa0MsRUFDMUIsV0FBMkIsRUFFbkMsaUJBQXNEO1FBbERqRCxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQWN0QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLG1CQUFjLEdBQ25CLHVC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QUMsK0JBQStCLEVBQUUsY0FBYyxDQUFDLHdJQWlEbEIsVUFBVSw2QkN2RnRELGd6RUErRUE7MkZEdkNhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxXQUFXLGFBR1YsQ0FBQywrQkFBK0IsRUFBRSxjQUFjLENBQUM7OzBCQXFFekQsSUFBSTs7MEJBQ0osUUFBUTs0Q0FsRUosWUFBWTtzQkFEbEIsV0FBVzt1QkFBQyxPQUFPO2dCQVNULFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JDLFNBQVM7c0JBRGYsS0FBSztnQkF3QkUsMEJBQTBCO3NCQURqQyxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkErQy9DLGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUJuQyxpQkFBaUI7c0JBRHZCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QXBwV2luZG93UmVmLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreURvY2tMb2NhdGlvbixcbiAgU2t5RG9ja1NlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtY29tcG9uZW50LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lNb2RhbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL21vZGFsLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgU2t5TW9kYWxIb3N0U2VydmljZSB9IGZyb20gJy4vbW9kYWwtaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreU1vZGFsU2Nyb2xsU2hhZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9tb2RhbC1zY3JvbGwtc2hhZG93LWV2ZW50LWFyZ3MnO1xuXG5sZXQgc2t5TW9kYWxVbmlxdWVJZGVudGlmaWVyID0gMDtcblxuY29uc3QgQVJJQV9ST0xFX0RFRkFVTFQgPSAnZGlhbG9nJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIGNvbW1vbiBsb29rLWFuZC1mZWVsIGZvciBtb2RhbCBjb250ZW50IHdpdGggb3B0aW9ucyB0byBkaXNwbGF5XG4gKiBhIGNvbW1vbiBtb2RhbCBoZWFkZXIsIHNwZWNpZnkgYm9keSBjb250ZW50LCBhbmQgZGlzcGxheSBhIGNvbW1vbiBtb2RhbCBmb290ZXJcbiAqIGFuZCBidXR0b25zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lNb2RhbENvbXBvbmVudEFkYXB0ZXJTZXJ2aWNlLCBTa3lEb2NrU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyBJZ25vcmluZyBjb3ZlcmFnZSBhcyB3ZSBvbmx5IHVzZSB0aGUgc2V0dGVyIGludGVybmFsbHkgYW5kIGRvIG5vdCBleHBvcnQgdGhlIGNsYXNzIGV4dGVybmFsbHkgZm9yIHVzZXJzIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBnZXR0ZXIuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhUm9sZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhUm9sZSA9IHZhbHVlO1xuICAgIHRoaXMuYXJpYVJvbGVPckRlZmF1bHQgPSB2YWx1ZSB8fCBBUklBX1JPTEVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBhcmlhUm9sZU9yRGVmYXVsdCA9IEFSSUFfUk9MRV9ERUZBVUxUO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aWxlZEJvZHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFyaWFEZXNjcmliZWRCeTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1vZGFsU3RhdGUgPSAnaW4nO1xuXG4gIHB1YmxpYyBtb2RhbENvbnRlbnRJZDogc3RyaW5nID1cbiAgICAnc2t5LW1vZGFsLWNvbnRlbnQtaWQtJyArIHNreU1vZGFsVW5pcXVlSWRlbnRpZmllci50b1N0cmluZygpO1xuXG4gIHB1YmxpYyBtb2RhbEhlYWRlcklkOiBzdHJpbmcgPVxuICAgICdza3ktbW9kYWwtaGVhZGVyLWlkLScgKyBza3lNb2RhbFVuaXF1ZUlkZW50aWZpZXIudG9TdHJpbmcoKTtcblxuICBwdWJsaWMgbW9kYWxaSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2Nyb2xsU2hhZG93OiBTa3lNb2RhbFNjcm9sbFNoYWRvd0V2ZW50QXJncyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2l6ZTogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudFdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBtb2RhbENvbnRlbnRXcmFwcGVyRWxlbWVudDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjaG9zdFNlcnZpY2U6IFNreU1vZGFsSG9zdFNlcnZpY2U7XG4gICNlbFJlZjogRWxlbWVudFJlZjtcbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICAjY29tcG9uZW50QWRhcHRlcjogU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZTtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNkb2NrU2VydmljZTogU2t5RG9ja1NlcnZpY2U7XG4gICNtZWRpYVF1ZXJ5U2VydmljZTogU2t5UmVzaXplT2JzZXJ2ZXJNZWRpYVF1ZXJ5U2VydmljZSB8IHVuZGVmaW5lZDtcblxuICAjX2FyaWFSb2xlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFNlcnZpY2U6IFNreU1vZGFsSG9zdFNlcnZpY2UsXG4gICAgY29uZmlnOiBTa3lNb2RhbENvbmZpZ3VyYXRpb24sXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgY29tcG9uZW50QWRhcHRlcjogU2t5TW9kYWxDb21wb25lbnRBZGFwdGVyU2VydmljZSxcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIEBIb3N0KCkgZG9ja1NlcnZpY2U6IFNreURvY2tTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgbWVkaWFRdWVyeVNlcnZpY2U/OiBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2hvc3RTZXJ2aWNlID0gaG9zdFNlcnZpY2U7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gICAgdGhpcy4jY29tcG9uZW50QWRhcHRlciA9IGNvbXBvbmVudEFkYXB0ZXI7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiNkb2NrU2VydmljZSA9IGRvY2tTZXJ2aWNlO1xuICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlID0gbWVkaWFRdWVyeVNlcnZpY2U7XG5cbiAgICB0aGlzLmFyaWFEZXNjcmliZWRCeSA9IGNvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgdGhpcy5tb2RhbENvbnRlbnRJZDtcbiAgICB0aGlzLmFyaWFMYWJlbGxlZEJ5ID0gY29uZmlnLmFyaWFMYWJlbGxlZEJ5IHx8IHRoaXMubW9kYWxIZWFkZXJJZDtcbiAgICB0aGlzLmFyaWFSb2xlID0gY29uZmlnLmFyaWFSb2xlO1xuICAgIHRoaXMuaGVscEtleSA9IGNvbmZpZy5oZWxwS2V5O1xuICAgIHRoaXMudGlsZWRCb2R5ID0gY29uZmlnLnRpbGVkQm9keTtcbiAgICB0aGlzLndyYXBwZXJDbGFzcyA9IGNvbmZpZy53cmFwcGVyQ2xhc3M7XG5cbiAgICB0aGlzLnNpemUgPSBjb25maWcuZnVsbFBhZ2VcbiAgICAgID8gJ2Z1bGwtcGFnZSdcbiAgICAgIDogY29uZmlnLnNpemU/LnRvTG93ZXJDYXNlKCkgfHwgJ21lZGl1bSc7XG5cbiAgICB0aGlzLm1vZGFsWkluZGV4ID0gdGhpcy4jaG9zdFNlcnZpY2UuekluZGV4O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Eb2N1bWVudEtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoU2t5TW9kYWxIb3N0U2VydmljZS5vcGVuTW9kYWxDb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHRvcE1vZGFsID0gU2t5TW9kYWxIb3N0U2VydmljZS50b3BNb2RhbDtcbiAgICAgIGlmICh0b3BNb2RhbCAmJiB0b3BNb2RhbCA9PT0gdGhpcy4jaG9zdFNlcnZpY2UpIHtcbiAgICAgICAgaWYgKGV2ZW50LndoaWNoID09PSAyNykge1xuICAgICAgICAgIC8vIEVzY2FwZSBrZXkgdXBcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VCdXR0b25DbGljaygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbkRvY3VtZW50S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKFNreU1vZGFsSG9zdFNlcnZpY2Uub3Blbk1vZGFsQ291bnQgPiAwKSB7XG4gICAgICBjb25zdCB0b3BNb2RhbCA9IFNreU1vZGFsSG9zdFNlcnZpY2UudG9wTW9kYWw7XG4gICAgICBpZiAodG9wTW9kYWwgJiYgdG9wTW9kYWwgPT09IHRoaXMuI2hvc3RTZXJ2aWNlKSB7XG4gICAgICAgIGlmIChldmVudC53aGljaCA9PT0gOSkge1xuICAgICAgICAgIC8vIFRhYiBwcmVzc2VkXG4gICAgICAgICAgbGV0IGZvY3VzQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZm9jdXNFbGVtZW50TGlzdCA9IHRoaXMuI2NvcmVBZGFwdGVyLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgICAgdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgKHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaXNGb2N1c0luRmlyc3RJdGVtKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgZm9jdXNFbGVtZW50TGlzdFxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLmlzTW9kYWxGb2N1c2VkKGV2ZW50LCB0aGlzLiNlbFJlZikpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmb2N1c0NoYW5nZWQgPVxuICAgICAgICAgICAgICB0aGlzLiNjb21wb25lbnRBZGFwdGVyLmZvY3VzTGFzdEVsZW1lbnQoZm9jdXNFbGVtZW50TGlzdCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICFldmVudC5zaGlmdEtleSAmJlxuICAgICAgICAgICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5pc0ZvY3VzSW5MYXN0SXRlbShldmVudCwgZm9jdXNFbGVtZW50TGlzdClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlZCA9XG4gICAgICAgICAgICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuZm9jdXNGaXJzdEVsZW1lbnQoZm9jdXNFbGVtZW50TGlzdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZvY3VzQ2hhbmdlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2t5TW9kYWxVbmlxdWVJZGVudGlmaWVyKys7XG4gICAgdGhpcy4jY29tcG9uZW50QWRhcHRlci5oYW5kbGVXaW5kb3dDaGFuZ2UodGhpcy4jZWxSZWYpO1xuXG4gICAgLy8gQWRkaW5nIGEgdGltZW91dCB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLlxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwNTYyODQ1XG4gICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIubW9kYWxPcGVuZWQodGhpcy4jZWxSZWYpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jZG9ja1NlcnZpY2Uuc2V0RG9ja09wdGlvbnMoe1xuICAgICAgbG9jYXRpb246IFNreURvY2tMb2NhdGlvbi5FbGVtZW50Qm90dG9tLFxuICAgICAgcmVmZXJlbmNlRWw6IHRoaXMubW9kYWxDb250ZW50V3JhcHBlckVsZW1lbnQhLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB6SW5kZXg6IDUsXG4gICAgfSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZSkge1xuICAgICAgdGhpcy4jbWVkaWFRdWVyeVNlcnZpY2Uub2JzZXJ2ZSh0aGlzLm1vZGFsQ29udGVudFdyYXBwZXJFbGVtZW50ISk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlKSB7XG4gICAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS51bm9ic2VydmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGVscEJ1dHRvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmhlbHBLZXkpIHtcbiAgICAgIHRoaXMuI2hvc3RTZXJ2aWNlLm9uT3BlbkhlbHAodGhpcy5oZWxwS2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLiNob3N0U2VydmljZS5vbkNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgd2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIuaGFuZGxlV2luZG93Q2hhbmdlKHRoaXMuI2VsUmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxTaGFkb3dDaGFuZ2UoYXJnczogU2t5TW9kYWxTY3JvbGxTaGFkb3dFdmVudEFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFNoYWRvdyA9IGFyZ3M7XG4gIH1cblxuICBwdWJsaWMgdmlld2tlZXBlckVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbXBvbmVudEFkYXB0ZXIubW9kYWxDb250ZW50SGFzRGlyZWN0Q2hpbGRWaWV3a2VlcGVyKFxuICAgICAgdGhpcy4jZWxSZWZcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LW1vZGFsLWRpYWxvZ1wiXG4gIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnlcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5yb2xlXT1cImFyaWFSb2xlT3JEZWZhdWx0XCJcbiAgKHdpbmRvdzpyZXNpemUpPVwid2luZG93UmVzaXplKClcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktbW9kYWwgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tMTYgc2t5LW1vZGFsLXt7IHNpemUgfX1cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktbW9kYWwtdGlsZWQnOiB0aWxlZEJvZHksXG4gICAgICAnc2t5LW1vZGFsLXZpZXdrZWVwZXInOiB2aWV3a2VlcGVyRW5hYmxlZCgpXG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgekluZGV4OiBtb2RhbFpJbmRleFxuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktbW9kYWwtaGVhZGVyXCJcbiAgICAgIFtoaWRkZW5dPVwiIWhlYWRlckNvbnRlbnQgfHwgIWhlYWRlckNvbnRlbnQuY2hpbGRyZW4gfHwgaGVhZGVyQ29udGVudC5jaGlsZHJlbi5sZW5ndGggJmx0OyAxXCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgJ2JveC1zaGFkb3cnOiBzY3JvbGxTaGFkb3c/LnRvcFNoYWRvd1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1tb2RhbC1oZWFkZXItY29udGVudFwiXG4gICAgICAgIFthdHRyLmlkXT1cIm1vZGFsSGVhZGVySWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1zZWN0aW9uLWhlYWRpbmcnOiBzaXplID09PSAnZnVsbC1wYWdlJ1xuICAgICAgICB9XCJcbiAgICAgICAgI2hlYWRlckNvbnRlbnRcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LW1vZGFsLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1tb2RhbC1oZWFkZXItYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJoZWxwS2V5XCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LW1vZGFsLWJ0bi1oZWxwXCJcbiAgICAgICAgICBuYW1lPVwiaGVscC1idXR0b25cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X21vZGFsX29wZW5faGVscCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgIChjbGljayk9XCJoZWxwQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbj1cInF1ZXN0aW9uLWNpcmNsZVwiPjwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LW1vZGFsLWJ0bi1jbG9zZVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2t5dXhfbW9kYWxfY2xvc2UnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2VCdXR0b25DbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiY2xvc2VcIj48L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LW1vZGFsLWNvbnRlbnQgc2t5LXBhZGRpbmctZXZlbi1sYXJnZVwiXG4gICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibW9kYWxIZWFkZXJJZFwiXG4gICAgICBbYXR0ci5pZF09XCJtb2RhbENvbnRlbnRJZFwiXG4gICAgICAoc2t5TW9kYWxTY3JvbGxTaGFkb3cpPVwic2Nyb2xsU2hhZG93Q2hhbmdlKCRldmVudClcIlxuICAgICAgI21vZGFsQ29udGVudFdyYXBwZXJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbW9kYWwtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1tb2RhbC1mb290ZXJcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAnYm94LXNoYWRvdyc6IHNjcm9sbFNoYWRvdz8uYm90dG9tU2hhZG93XG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktbW9kYWwtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
var _SkyModalService_instances, _SkyModalService_dynamicComponentService, _SkyModalService_getConfigFromParameter, _SkyModalService_createHostComponent;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
1
3
|
import { Injectable } from '@angular/core';
|
|
2
4
|
import { SkyDynamicComponentService } from '@skyux/core';
|
|
3
5
|
import { SkyModalHostContext } from './modal-host-context';
|
|
@@ -10,9 +12,12 @@ import * as i1 from "@skyux/core";
|
|
|
10
12
|
* @dynamic
|
|
11
13
|
*/
|
|
12
14
|
export class SkyModalService {
|
|
13
|
-
// TODO:
|
|
15
|
+
// TODO: Make `dynamicComponentService` required. It is optional today to maintain binary compatibility for consumers when they construct
|
|
16
|
+
// the service for unit testing.
|
|
14
17
|
constructor(dynamicComponentService) {
|
|
15
|
-
this
|
|
18
|
+
_SkyModalService_instances.add(this);
|
|
19
|
+
_SkyModalService_dynamicComponentService.set(this, void 0);
|
|
20
|
+
__classPrivateFieldSet(this, _SkyModalService_dynamicComponentService, dynamicComponentService, "f");
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* @internal
|
|
@@ -20,7 +25,7 @@ export class SkyModalService {
|
|
|
20
25
|
*/
|
|
21
26
|
dispose() {
|
|
22
27
|
if (SkyModalService.host) {
|
|
23
|
-
this.
|
|
28
|
+
__classPrivateFieldGet(this, _SkyModalService_dynamicComponentService, "f").removeComponent(SkyModalService.host);
|
|
24
29
|
SkyModalService.host = undefined;
|
|
25
30
|
}
|
|
26
31
|
}
|
|
@@ -31,56 +36,57 @@ export class SkyModalService {
|
|
|
31
36
|
*/
|
|
32
37
|
open(component, config) {
|
|
33
38
|
const modalInstance = new SkyModalInstance();
|
|
34
|
-
this.
|
|
35
|
-
const params = this.
|
|
39
|
+
__classPrivateFieldGet(this, _SkyModalService_instances, "m", _SkyModalService_createHostComponent).call(this);
|
|
40
|
+
const params = __classPrivateFieldGet(this, _SkyModalService_instances, "m", _SkyModalService_getConfigFromParameter).call(this, config);
|
|
41
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
36
42
|
params.providers.push({
|
|
37
43
|
provide: SkyModalInstance,
|
|
38
44
|
useValue: modalInstance,
|
|
39
45
|
});
|
|
40
46
|
SkyModalService.host.instance.open(modalInstance, component, params);
|
|
47
|
+
/* eslint-enable @typescript-eslint/no-non-null-assertion */
|
|
41
48
|
return modalInstance;
|
|
42
49
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
else {
|
|
63
|
-
params = method['config'];
|
|
64
|
-
}
|
|
65
|
-
return params;
|
|
50
|
+
}
|
|
51
|
+
_SkyModalService_dynamicComponentService = new WeakMap(), _SkyModalService_instances = new WeakSet(), _SkyModalService_getConfigFromParameter = function _SkyModalService_getConfigFromParameter(providersOrConfig) {
|
|
52
|
+
const defaultParams = {
|
|
53
|
+
providers: [],
|
|
54
|
+
fullPage: false,
|
|
55
|
+
size: 'medium',
|
|
56
|
+
tiledBody: false,
|
|
57
|
+
};
|
|
58
|
+
let params = {};
|
|
59
|
+
let method = undefined;
|
|
60
|
+
// Object Literal Lookup for backwards compatability.
|
|
61
|
+
method = {
|
|
62
|
+
'providers?': Object.assign({}, defaultParams, {
|
|
63
|
+
providers: providersOrConfig,
|
|
64
|
+
}),
|
|
65
|
+
config: Object.assign({}, defaultParams, providersOrConfig),
|
|
66
|
+
};
|
|
67
|
+
if (Array.isArray(providersOrConfig) === true) {
|
|
68
|
+
params = method['providers?'];
|
|
66
69
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
SkyModalService.host = this.dynamicComponentService.createComponent(SkyModalHostComponent, {
|
|
70
|
-
providers: [
|
|
71
|
-
{
|
|
72
|
-
provide: SkyModalHostContext,
|
|
73
|
-
useValue: new SkyModalHostContext({
|
|
74
|
-
teardownCallback: () => {
|
|
75
|
-
this.dispose();
|
|
76
|
-
},
|
|
77
|
-
}),
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
});
|
|
81
|
-
}
|
|
70
|
+
else {
|
|
71
|
+
params = method['config'];
|
|
82
72
|
}
|
|
83
|
-
|
|
73
|
+
return params;
|
|
74
|
+
}, _SkyModalService_createHostComponent = function _SkyModalService_createHostComponent() {
|
|
75
|
+
if (!SkyModalService.host) {
|
|
76
|
+
SkyModalService.host = __classPrivateFieldGet(this, _SkyModalService_dynamicComponentService, "f").createComponent(SkyModalHostComponent, {
|
|
77
|
+
providers: [
|
|
78
|
+
{
|
|
79
|
+
provide: SkyModalHostContext,
|
|
80
|
+
useValue: new SkyModalHostContext({
|
|
81
|
+
teardownCallback: () => {
|
|
82
|
+
this.dispose();
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
};
|
|
84
90
|
SkyModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalService, deps: [{ token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
91
|
SkyModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalService, providedIn: 'any' });
|
|
86
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyModalService, decorators: [{
|
|
@@ -92,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
92
98
|
providedIn: 'any',
|
|
93
99
|
}]
|
|
94
100
|
}], ctorParameters: function () { return [{ type: i1.SkyDynamicComponentService }]; } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tb2RhbHMvc3JjL2xpYi9tb2R1bGVzL21vZGFsL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUdwRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sZUFBZTtJQUsxQix5SUFBeUk7SUFDekksZ0NBQWdDO0lBQ2hDLFlBQVksdUJBQW9EOztRQUpoRSwyREFBcUQ7UUFLbkQsdUJBQUEsSUFBSSw0Q0FBNEIsdUJBQXdCLE1BQUEsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTztRQUNaLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtZQUN4Qix1QkFBQSxJQUFJLGdEQUF5QixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FDVCxTQUFjLEVBQ2QsTUFBK0M7UUFFL0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLHVCQUFBLElBQUksd0VBQXFCLE1BQXpCLElBQUksQ0FBdUIsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyx1QkFBQSxJQUFJLDJFQUF3QixNQUE1QixJQUFJLEVBQXlCLE1BQU0sQ0FBQyxDQUFDO1FBRXBELDZEQUE2RDtRQUM3RCxNQUFNLENBQUMsU0FBVSxDQUFDLElBQUksQ0FBQztZQUNyQixPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFFBQVEsRUFBRSxhQUFhO1NBQ3hCLENBQUMsQ0FBQztRQUVILGVBQWUsQ0FBQyxJQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLDREQUE0RDtRQUU1RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOztpTUFHQyxpQkFBc0I7SUFFdEIsTUFBTSxhQUFhLEdBQW1DO1FBQ3BELFNBQVMsRUFBRSxFQUFFO1FBQ2IsUUFBUSxFQUFFLEtBQUs7UUFDZixJQUFJLEVBQUUsUUFBUTtRQUNkLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUM7SUFDRixJQUFJLE1BQU0sR0FBbUMsRUFBRSxDQUFDO0lBQ2hELElBQUksTUFBTSxHQUFRLFNBQVMsQ0FBQztJQUU1QixxREFBcUQ7SUFDckQsTUFBTSxHQUFHO1FBQ1AsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRTtZQUM3QyxTQUFTLEVBQUUsaUJBQWlCO1NBQzdCLENBQUM7UUFDRixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixDQUFDO0tBQzVELENBQUM7SUFFRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDN0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMvQjtTQUFNO1FBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMzQjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7SUFHQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtRQUN6QixlQUFlLENBQUMsSUFBSSxHQUFHLHVCQUFBLElBQUksZ0RBQXlCLENBQUMsZUFBZSxDQUNsRSxxQkFBcUIsRUFDckI7WUFDRSxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtvQkFDNUIsUUFBUSxFQUFFLElBQUksbUJBQW1CLENBQUM7d0JBQ2hDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTs0QkFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNqQixDQUFDO3FCQUNGLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQ0YsQ0FBQztLQUNIO0FBQ0gsQ0FBQzs0R0E5RlUsZUFBZTtnSEFBZixlQUFlLGNBRmQsS0FBSzsyRkFFTixlQUFlO2tCQU4zQixVQUFVO21CQUFDO29CQUNWLGdHQUFnRztvQkFDaEcsOEZBQThGO29CQUM5RiwwRkFBMEY7b0JBQzFGLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreU1vZGFsSG9zdENvbnRleHQgfSBmcm9tICcuL21vZGFsLWhvc3QtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lNb2RhbEhvc3RDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UgfSBmcm9tICcuL21vZGFsLWluc3RhbmNlJztcbmltcG9ydCB7IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdGhhdCBsYXVuY2hlcyBtb2RhbHMuXG4gKiBAZHluYW1pY1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIC8vIE11c3QgYmUgJ2FueScgc28gdGhhdCB0aGUgbW9kYWwgY29tcG9uZW50IGlzIGNyZWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgaXRzIG1vZHVsZSdzIGluamVjdG9yLlxuICAvLyBJZiBzZXQgdG8gJ3Jvb3QnLCB0aGUgY29tcG9uZW50J3MgZGVwZW5kZW5jeSBpbmplY3Rpb25zIHdvdWxkIG9ubHkgYmUgZGVyaXZlZCBmcm9tIHRoZSByb290XG4gIC8vIGluamVjdG9yIGFuZCBtYXkgbG9zZSBjb250ZXh0IGlmIHRoZSBtb2RhbCB3YXMgb3BlbmVkIGZyb20gd2l0aGluIGEgbGF6eS1sb2FkZWQgbW9kdWxlLlxuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TW9kYWxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaG9zdDogQ29tcG9uZW50UmVmPFNreU1vZGFsSG9zdENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZTtcblxuICAvLyBUT0RPOiBNYWtlIGBkeW5hbWljQ29tcG9uZW50U2VydmljZWAgcmVxdWlyZWQuIEl0IGlzIG9wdGlvbmFsIHRvZGF5IHRvIG1haW50YWluIGJpbmFyeSBjb21wYXRpYmlsaXR5IGZvciBjb25zdW1lcnMgd2hlbiB0aGV5IGNvbnN0cnVjdFxuICAvLyB0aGUgc2VydmljZSBmb3IgdW5pdCB0ZXN0aW5nLlxuICBjb25zdHJ1Y3RvcihkeW5hbWljQ29tcG9uZW50U2VydmljZT86IFNreUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlKSB7XG4gICAgdGhpcy4jZHluYW1pY0NvbXBvbmVudFNlcnZpY2UgPSBkeW5hbWljQ29tcG9uZW50U2VydmljZSE7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJlbW92ZXMgdGhlIG1vZGFsIGhvc3QgZnJvbSB0aGUgRE9NLlxuICAgKi9cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKFNreU1vZGFsU2VydmljZS5ob3N0KSB7XG4gICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmVDb21wb25lbnQoU2t5TW9kYWxTZXJ2aWNlLmhvc3QpO1xuICAgICAgU2t5TW9kYWxTZXJ2aWNlLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgbW9kYWwgdXNpbmcgdGhlIHNwZWNpZmllZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgRGV0ZXJtaW5lcyB0aGUgY29tcG9uZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2V9IGNvbmZpZyBTcGVjaWZpZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgb3BlbihcbiAgICBjb21wb25lbnQ6IGFueSxcbiAgICBjb25maWc/OiBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2UgfCBhbnlbXVxuICApOiBTa3lNb2RhbEluc3RhbmNlIHtcbiAgICBjb25zdCBtb2RhbEluc3RhbmNlID0gbmV3IFNreU1vZGFsSW5zdGFuY2UoKTtcbiAgICB0aGlzLiNjcmVhdGVIb3N0Q29tcG9uZW50KCk7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy4jZ2V0Q29uZmlnRnJvbVBhcmFtZXRlcihjb25maWcpO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuICAgIHBhcmFtcy5wcm92aWRlcnMhLnB1c2goe1xuICAgICAgcHJvdmlkZTogU2t5TW9kYWxJbnN0YW5jZSxcbiAgICAgIHVzZVZhbHVlOiBtb2RhbEluc3RhbmNlLFxuICAgIH0pO1xuXG4gICAgU2t5TW9kYWxTZXJ2aWNlLmhvc3QhLmluc3RhbmNlLm9wZW4obW9kYWxJbnN0YW5jZSwgY29tcG9uZW50LCBwYXJhbXMpO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuXG4gICAgcmV0dXJuIG1vZGFsSW5zdGFuY2U7XG4gIH1cblxuICAjZ2V0Q29uZmlnRnJvbVBhcmFtZXRlcihcbiAgICBwcm92aWRlcnNPckNvbmZpZzogYW55XG4gICk6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSB7XG4gICAgY29uc3QgZGVmYXVsdFBhcmFtczogU2t5TW9kYWxDb25maWd1cmF0aW9uSW50ZXJmYWNlID0ge1xuICAgICAgcHJvdmlkZXJzOiBbXSxcbiAgICAgIGZ1bGxQYWdlOiBmYWxzZSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgdGlsZWRCb2R5OiBmYWxzZSxcbiAgICB9O1xuICAgIGxldCBwYXJhbXM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IHt9O1xuICAgIGxldCBtZXRob2Q6IGFueSA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9iamVjdCBMaXRlcmFsIExvb2t1cCBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHkuXG4gICAgbWV0aG9kID0ge1xuICAgICAgJ3Byb3ZpZGVycz8nOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0UGFyYW1zLCB7XG4gICAgICAgIHByb3ZpZGVyczogcHJvdmlkZXJzT3JDb25maWcsXG4gICAgICB9KSxcbiAgICAgIGNvbmZpZzogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFBhcmFtcywgcHJvdmlkZXJzT3JDb25maWcpLFxuICAgIH07XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm92aWRlcnNPckNvbmZpZykgPT09IHRydWUpIHtcbiAgICAgIHBhcmFtcyA9IG1ldGhvZFsncHJvdmlkZXJzPyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBtZXRob2RbJ2NvbmZpZyddO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICAjY3JlYXRlSG9zdENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBpZiAoIVNreU1vZGFsU2VydmljZS5ob3N0KSB7XG4gICAgICBTa3lNb2RhbFNlcnZpY2UuaG9zdCA9IHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgU2t5TW9kYWxIb3N0Q29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3ZpZGU6IFNreU1vZGFsSG9zdENvbnRleHQsXG4gICAgICAgICAgICAgIHVzZVZhbHVlOiBuZXcgU2t5TW9kYWxIb3N0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgdGVhcmRvd25DYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|