@skyux/tabs 8.7.2 → 8.8.1
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 +545 -459
- package/esm2020/lib/modules/tabs/tab.component.mjs +56 -11
- package/fesm2015/skyux-tabs.mjs +55 -11
- package/fesm2015/skyux-tabs.mjs.map +1 -1
- package/fesm2020/skyux-tabs.mjs +55 -11
- package/fesm2020/skyux-tabs.mjs.map +1 -1
- package/lib/modules/tabs/tab.component.d.ts +8 -6
- package/package.json +9 -9
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent_tabIndexChange, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_setPermalinkValueOrDefault;
|
|
1
|
+
var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent__tabElement, _SkyTabComponent_tabIndexChange, _SkyTabComponent_observingTab, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_mediaQueryService, _SkyTabComponent_setPermalinkValueOrDefault, _SkyTabComponent_observeTabResize;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
4
|
+
import { SkyMediaQueryService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
|
|
4
5
|
import { BehaviorSubject } from 'rxjs';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "./tabset-permalink.service";
|
|
@@ -73,16 +74,17 @@ export class SkyTabComponent {
|
|
|
73
74
|
return __classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f");
|
|
74
75
|
}
|
|
75
76
|
/**
|
|
76
|
-
* The
|
|
77
|
-
*
|
|
78
|
-
* the
|
|
79
|
-
*
|
|
80
|
-
* @default "
|
|
77
|
+
* The tab layout that applies spacing to the tab container element. Use the layout
|
|
78
|
+
* that corresponds with the top-level component type used within the tab, or use `fit` to
|
|
79
|
+
* constrain the tab contents to the available viewport.
|
|
80
|
+
* Use `none` for custom content that does not adhere to predefined spacing or constraints.
|
|
81
|
+
* @default "none"
|
|
81
82
|
*/
|
|
82
83
|
set layout(value) {
|
|
83
84
|
const layout = value || LAYOUT_DEFAULT;
|
|
84
85
|
__classPrivateFieldSet(this, _SkyTabComponent__layout, layout, "f");
|
|
85
86
|
this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;
|
|
87
|
+
__classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
|
|
86
88
|
if (this.active) {
|
|
87
89
|
__classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").updateActiveTabLayout(layout);
|
|
88
90
|
}
|
|
@@ -99,6 +101,13 @@ export class SkyTabComponent {
|
|
|
99
101
|
get tabIndexChange() {
|
|
100
102
|
return __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f");
|
|
101
103
|
}
|
|
104
|
+
set tabContentWrapper(tabContentWrapper) {
|
|
105
|
+
__classPrivateFieldSet(this, _SkyTabComponent__tabElement, tabContentWrapper, "f");
|
|
106
|
+
__classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
|
|
107
|
+
}
|
|
108
|
+
get tabContentWrapper() {
|
|
109
|
+
return __classPrivateFieldGet(this, _SkyTabComponent__tabElement, "f");
|
|
110
|
+
}
|
|
102
111
|
constructor(changeDetector, permalinkService, tabsetService) {
|
|
103
112
|
_SkyTabComponent_instances.add(this);
|
|
104
113
|
this.cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;
|
|
@@ -117,10 +126,13 @@ export class SkyTabComponent {
|
|
|
117
126
|
_SkyTabComponent__tabHeading.set(this, void 0);
|
|
118
127
|
_SkyTabComponent__tabIndex.set(this, void 0);
|
|
119
128
|
_SkyTabComponent__layout.set(this, LAYOUT_DEFAULT);
|
|
129
|
+
_SkyTabComponent__tabElement.set(this, void 0);
|
|
120
130
|
_SkyTabComponent_tabIndexChange.set(this, void 0);
|
|
131
|
+
_SkyTabComponent_observingTab.set(this, false);
|
|
121
132
|
_SkyTabComponent_changeDetector.set(this, void 0);
|
|
122
133
|
_SkyTabComponent_permalinkService.set(this, void 0);
|
|
123
134
|
_SkyTabComponent_tabsetService.set(this, void 0);
|
|
135
|
+
_SkyTabComponent_mediaQueryService.set(this, inject(SkyResizeObserverMediaQueryService));
|
|
124
136
|
__classPrivateFieldSet(this, _SkyTabComponent_changeDetector, changeDetector, "f");
|
|
125
137
|
__classPrivateFieldSet(this, _SkyTabComponent_permalinkService, permalinkService, "f");
|
|
126
138
|
__classPrivateFieldSet(this, _SkyTabComponent_tabsetService, tabsetService, "f");
|
|
@@ -139,6 +151,9 @@ export class SkyTabComponent {
|
|
|
139
151
|
(changes['permalinkValue'] && !changes['permalinkValue'].firstChange)) {
|
|
140
152
|
__classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").next();
|
|
141
153
|
}
|
|
154
|
+
if (changes['layout'] && changes['layout'].currentValue === 'none') {
|
|
155
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
156
|
+
}
|
|
142
157
|
}
|
|
143
158
|
ngOnDestroy() {
|
|
144
159
|
__classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").complete();
|
|
@@ -147,6 +162,8 @@ export class SkyTabComponent {
|
|
|
147
162
|
if (this.tabIndex !== undefined) {
|
|
148
163
|
__classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").unregisterTab(this.tabIndex);
|
|
149
164
|
}
|
|
165
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
166
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
|
|
150
167
|
}
|
|
151
168
|
init() {
|
|
152
169
|
__classPrivateFieldSet(this, _SkyTabComponent__tabIndex, __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").registerTab(this.tabIndex), "f");
|
|
@@ -165,16 +182,41 @@ export class SkyTabComponent {
|
|
|
165
182
|
return this.close.observers.length > 0;
|
|
166
183
|
}
|
|
167
184
|
}
|
|
168
|
-
_SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
|
|
185
|
+
_SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent__tabElement = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_observingTab = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_mediaQueryService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
|
|
169
186
|
this.permalinkValueOrDefault =
|
|
170
187
|
__classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.permalinkValue) ||
|
|
171
188
|
__classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.tabHeading);
|
|
189
|
+
}, _SkyTabComponent_observeTabResize = function _SkyTabComponent_observeTabResize() {
|
|
190
|
+
if (this.tabContentWrapper) {
|
|
191
|
+
if (this.layout !== 'none' && !__classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
|
|
192
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, true, "f");
|
|
193
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").observe(this.tabContentWrapper, {
|
|
194
|
+
updateResponsiveClasses: true,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else if (this.layout === 'none' && __classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
|
|
198
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
|
|
199
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
172
202
|
};
|
|
173
203
|
SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyTabsetPermalinkService }, { token: i2.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
-
SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } },
|
|
204
|
+
SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, providers: [
|
|
205
|
+
SkyResizeObserverMediaQueryService,
|
|
206
|
+
{
|
|
207
|
+
provide: SkyMediaQueryService,
|
|
208
|
+
useExisting: SkyResizeObserverMediaQueryService,
|
|
209
|
+
},
|
|
210
|
+
], viewQueries: [{ propertyName: "tabContentWrapper", first: true, predicate: ["tabContentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
175
211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, decorators: [{
|
|
176
212
|
type: Component,
|
|
177
|
-
args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
213
|
+
args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
214
|
+
SkyResizeObserverMediaQueryService,
|
|
215
|
+
{
|
|
216
|
+
provide: SkyMediaQueryService,
|
|
217
|
+
useExisting: SkyResizeObserverMediaQueryService,
|
|
218
|
+
},
|
|
219
|
+
], template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
|
|
178
220
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyTabsetPermalinkService }, { type: i2.SkyTabsetService }]; }, propDecorators: { active: [{
|
|
179
221
|
type: Input
|
|
180
222
|
}], disabled: [{
|
|
@@ -194,5 +236,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
194
236
|
args: ['class']
|
|
195
237
|
}], close: [{
|
|
196
238
|
type: Output
|
|
239
|
+
}], tabContentWrapper: [{
|
|
240
|
+
type: ViewChild,
|
|
241
|
+
args: ['tabContentWrapper']
|
|
197
242
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQU9uRCxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLE1BQU0sY0FBYyxHQUFxQixNQUFNLENBQUM7QUFFaEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBUWYsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7T0FJRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQTBCO1FBQzFDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLHVCQUFBLElBQUksZ0NBQVMsRUFBRTtZQUNwRCx1QkFBQSxJQUFJLDRCQUFZLEtBQUssTUFBQSxDQUFDO1lBQ3RCLHVCQUFBLElBQUkscUNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLHVCQUFBLElBQUksZ0NBQVMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBYyxDQUFDO0lBQzVCLENBQUM7SUFTRDs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxjQUFjLENBQUMsS0FBeUI7UUFDakQsdUJBQUEs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UTtzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBU2IsS0FBSztzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnLi90YWItaW5kZXgnO1xuaW1wb3J0IHsgU2t5VGFiTGF5b3V0VHlwZSB9IGZyb20gJy4vdGFiLWxheW91dC10eXBlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbmNvbnN0IExBWU9VVF9DTEFTU19QUkVGSVggPSAnc2t5LWxheW91dC1ob3N0LSc7XG5jb25zdCBMQVlPVVRfREVGQVVMVDogU2t5VGFiTGF5b3V0VHlwZSA9ICdub25lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0YWIgaXMgYWN0aXZlIHdoZW4gdGhlIHRhYnNldCBsb2Fkcy4gQWZ0ZXIgaW5pdGlhbGl6YXRpb24sIHRoZSBgYWN0aXZlYFxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgdGFic2V0IGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdGhlIGFjdGl2ZSB0YWIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICEhdmFsdWUgIT09IHRoaXMuI19hY3RpdmUpIHtcbiAgICAgIHRoaXMuI19hY3RpdmUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2FjdGl2ZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19hY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYWN0aXZlQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGFiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgdGhlIHRhYi5cbiAgICogVGhpcyB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSB0YWJzZXQncyBgcGVybWFsaW5rSWRgIHRvIGRpc3Rpbmd1aXNoXG4gICAqIHRoZSB0YWIncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyIHRoYXQgaXNcbiAgICogd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmdgLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcXVlcnkgcGFyYW1ldGVyJ3MgdmFsdWUgaXMgcGFyc2VkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgdGFiJ3MgaGVhZGluZyB0ZXh0LlxuICAgKiBUaGlzIGlucHV0IG9ubHkgYXBwbGllcyB3aGVuIHRoZSB0YWJzZXQncyBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1hbGlua1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfcGVybWFsaW5rVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJtYWxpbmtWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfcGVybWFsaW5rVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBjb3VudGVyIGJlc2lkZSB0aGUgdGFiIGhlYWRlci5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggbm8gbG9uZ2VyIHJlY29tbWVuZHMgYWRkaW5nIGNvdW50cyB0byB0YWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYkhlYWRlckNvdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgaGVhZGVyLlxuICAgKiBXaGVuIHVzaW5nIHRhYnMgYXMgdGhlIG1haW4gbmF2aWdhdGlvbiBvbiBhIHBhZ2UsXG4gICAqIHVzZSBbdGhlIEFuZ3VsYXIgYFRpdGxlYCBzZXJ2aWNlXShodHRwczovL2FuZ3VsYXIuaW8vZG9jcy90cy9sYXRlc3QvY29va2Jvb2svc2V0LWRvY3VtZW50LXRpdGxlLmh0bWwpXG4gICAqIGFuZCBbdGhlIFNLWSBVWCBgdGl0bGVgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jYXBwKVxuICAgKiB0byByZWZsZWN0IHRoZSB0YWIgaGVhZGVyIGluIHRoZSBwYWdlIHRpdGxlLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSGVhZGluZyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYkhlYWRpbmcgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkhlYWRpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkhlYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFiLlxuICAgKiBJZiBub3QgZGVmaW5lZCwgdGhlIGlkZW50aWZpZXIgaXMgc2V0IHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIG9uIGxvYWQsIHN0YXJ0aW5nIHdpdGggYDBgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJJbmRleCh2YWx1ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy4jX3RhYkluZGV4ICYmXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLiNfdGFiSW5kZXggIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51cGRhdGVUYWJJbmRleCh0aGlzLiNfdGFiSW5kZXgsIHZhbHVlKTtcbiAgICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuI190YWJJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJJbmRleCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGFnZSBsYXlvdXQgdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSB0b3AtbGV2ZWwgY29tcG9uZW50IHR5cGVcbiAgICogdXNlZCBvbiB0aGUgcGFnZS4gRm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbnRlbnQsIHVzZSBgYXV0b2AgdG8gYWxsb3dcbiAgICogdGhlIHBhZ2UgY29udGVudHMgdG8gZXhwYW5kIGJleW9uZCB0aGUgYm90dG9tIG9mIHRoZSBicm93c2VyIHdpbmRvd1xuICAgKiBvciBgZml0YCB0byBjb25zdHJhaW4gdGhlIHBhZ2UgY29udGVudHMgdG8gdGhlIGF2YWlsYWJsZSB2aWV3cG9ydC5cbiAgICogQGRlZmF1bHQgXCJhdXRvXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGF5b3V0KHZhbHVlOiBTa3lUYWJMYXlvdXRUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGF5b3V0ID0gdmFsdWUgfHwgTEFZT1VUX0RFRkFVTFQ7XG5cbiAgICB0aGlzLiNfbGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuY3NzQ2xhc3MgPSBgJHtMQVlPVVRfQ0xBU1NfUFJFRklYfSR7bGF5b3V0fWA7XG5cbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudXBkYXRlQWN0aXZlVGFiTGF5b3V0KGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYXlvdXQoKTogU2t5VGFiTGF5b3V0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19sYXlvdXQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gYCR7TEFZT1VUX0NMQVNTX1BSRUZJWH0ke0xBWU9VVF9ERUZBVUxUfWA7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBjbG9zZSB0aGUgdGFiLlxuICAgKiBUaGUgY2xvc2UgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIHRoZSB0YWJzZXQncyBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG5cbiAgLyoqXG4gICAqIEFsZXJ0cyB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIHRoaXMgY29tcG9uZW50IGhhcyBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSByZWZsZWN0ZWQgaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIGdldCBzdGF0ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jc3RhdGVDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkluZGV4Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jdGFiSW5kZXhDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgcGVybWFsaW5rVmFsdWVPckRlZmF1bHQgPSAnJztcblxuICBwdWJsaWMgc2hvd0NvbnRlbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgdGFiQnV0dG9uSWQ6IHN0cmluZztcblxuICBwdWJsaWMgdGFiUGFuZWxJZDogc3RyaW5nO1xuXG4gICNfYWN0aXZlID0gZmFsc2U7XG5cbiAgI2FjdGl2ZUNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PHZvaWQgfCB1bmRlZmluZWQ+O1xuXG4gICNfcGVybWFsaW5rVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjc3RhdGVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDx2b2lkPjtcblxuICAjX3RhYkhlYWRpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX3RhYkluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX2xheW91dDogU2t5VGFiTGF5b3V0VHlwZSA9IExBWU9VVF9ERUZBVUxUO1xuXG4gICN0YWJJbmRleENoYW5nZTogQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4IHwgdW5kZWZpbmVkPjtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UgPSBwZXJtYWxpbmtTZXJ2aWNlO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgdGhpcy50YWJQYW5lbElkID0gYHNreS10YWItJHtpZH1gO1xuICAgIHRoaXMudGFiQnV0dG9uSWQgPSBgJHt0aGlzLnRhYlBhbmVsSWR9LW5hdi1idG5gO1xuXG4gICAgdGhpcy4jYWN0aXZlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3N0YXRlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lUYWJJbmRleCB8IHVuZGVmaW5lZD4oXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgKGNoYW5nZXNbJ2Rpc2FibGVkJ10gJiYgIWNoYW5nZXNbJ2Rpc2FibGVkJ10uZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAoY2hhbmdlc1sndGFiSGVhZGluZyddICYmICFjaGFuZ2VzWyd0YWJIZWFkaW5nJ10uZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAoY2hhbmdlc1sndGFiSGVhZGVyQ291bnQnXSAmJiAhY2hhbmdlc1sndGFiSGVhZGVyQ291bnQnXS5maXJzdENoYW5nZSkgfHxcbiAgICAgIChjaGFuZ2VzWydwZXJtYWxpbmtWYWx1ZSddICYmICFjaGFuZ2VzWydwZXJtYWxpbmtWYWx1ZSddLmZpcnN0Q2hhbmdlKVxuICAgICkge1xuICAgICAgdGhpcy4jc3RhdGVDaGFuZ2UubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMudGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51bnJlZ2lzdGVyVGFiKHRoaXMudGFiSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI190YWJJbmRleCA9IHRoaXMuI3RhYnNldFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcy50YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2FjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IGZhbHNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGlzQ2xvc2VhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMucGVybWFsaW5rVmFsdWVPckRlZmF1bHQgPVxuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS51cmxpZnkodGhpcy5wZXJtYWxpbmtWYWx1ZSkgfHxcbiAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UudXJsaWZ5KHRoaXMudGFiSGVhZGluZyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGFiXCJcbiAgcm9sZT1cInRhYnBhbmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYkJ1dHRvbklkXCJcbiAgW2hpZGRlbl09XCIhc2hvd0NvbnRlbnRcIlxuICBbaWRdPVwidGFiUGFuZWxJZFwiXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtDQUFrQyxHQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBT25ELE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDL0MsTUFBTSxjQUFjLEdBQXFCLE1BQU0sQ0FBQztBQUVoRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFlZixNQUFNLE9BQU8sZUFBZTtJQUMxQjs7OztPQUlHO0lBQ0gsSUFDVyxNQUFNLENBQUMsS0FBMEI7UUFDMUMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssdUJBQUEsSUFBSSxnQ0FBUyxFQUFFO1lBQ3BELHVCQUFBLElBQUksNEJBQVksS0FBSyxNQUFBLENBQUM7WUFDdEIsdUJBQUEsSUFBSSxxQ0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sdUJBQUEsSUFBSSxnQ0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyx1QkFBQSxJQUFJ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LHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Qsa0NBQWtDO3dCQUNsQzs0QkFDRSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLEVBQUUsa0NBQWtDO3lCQUNoRDtxQkFDRjsrS0FTVSxNQUFNO3NCQURoQixLQUFLO2dCQXFCQyxRQUFRO3NCQURkLEtBQUs7Z0JBWUssY0FBYztzQkFEeEIsS0FBSztnQkFnQkMsY0FBYztzQkFEcEIsS0FBSztnQkFZSyxVQUFVO3NCQURwQixLQUFLO2dCQWdCSyxRQUFRO3NCQURsQixLQUFLO2dCQTBCSyxNQUFNO3NCQURoQixLQUFLO2dCQW1CQyxRQUFRO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFTYixLQUFLO3NCQURYLE1BQU07Z0JBZUksaUJBQWlCO3NCQUQzQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnLi90YWItaW5kZXgnO1xuaW1wb3J0IHsgU2t5VGFiTGF5b3V0VHlwZSB9IGZyb20gJy4vdGFiLWxheW91dC10eXBlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbmNvbnN0IExBWU9VVF9DTEFTU19QUkVGSVggPSAnc2t5LWxheW91dC1ob3N0LSc7XG5jb25zdCBMQVlPVVRfREVGQVVMVDogU2t5VGFiTGF5b3V0VHlwZSA9ICdub25lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFiIGlzIGFjdGl2ZSB3aGVuIHRoZSB0YWJzZXQgbG9hZHMuIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUgYGFjdGl2ZWBcbiAgICogcHJvcGVydHkgb24gdGhlIHRhYnNldCBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSBhY3RpdmUgdGFiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhIXZhbHVlICE9PSB0aGlzLiNfYWN0aXZlKSB7XG4gICAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWU7XG4gICAgICB0aGlzLiNhY3RpdmVDaGFuZ2UubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVDaGFuZ2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZUNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRhYi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXIgdmFsdWUgZm9yIHRoZSB0YWIuXG4gICAqIFRoaXMgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgdGFic2V0J3MgYHBlcm1hbGlua0lkYCB0byBkaXN0aW5ndWlzaFxuICAgKiB0aGUgdGFiJ3MgdW5pcXVlIHN0YXRlIGluIHRoZSBVUkwgYnkgZ2VuZXJhdGluZyBhIHF1ZXJ5IHBhcmFtZXRlciB0aGF0IGlzXG4gICAqIHdyaXR0ZW4gYXMgYD88cXVlcnlQYXJhbT4tYWN0aXZlLXRhYj08c2FuaXRpemVkLXRhYi1oZWFkaW5nYC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHRhYidzIGhlYWRpbmcgdGV4dC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtYWxpbmtWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Blcm1hbGlua1ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rVmFsdWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua1ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgY291bnRlciBiZXNpZGUgdGhlIHRhYiBoZWFkZXIuXG4gICAqIFRoaXMgaW5wdXQgb25seSBhcHBsaWVzIHdoZW4gdGhlIHRhYnNldCdzIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG5vIGxvbmdlciByZWNvbW1lbmRzIGFkZGluZyBjb3VudHMgdG8gdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkZXJDb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGhlYWRlci5cbiAgICogV2hlbiB1c2luZyB0YWJzIGFzIHRoZSBtYWluIG5hdmlnYXRpb24gb24gYSBwYWdlLFxuICAgKiB1c2UgW3RoZSBBbmd1bGFyIGBUaXRsZWAgc2VydmljZV0oaHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3MvdHMvbGF0ZXN0L2Nvb2tib29rL3NldC1kb2N1bWVudC10aXRsZS5odG1sKVxuICAgKiBhbmQgW3RoZSBTS1kgVVggYHRpdGxlYCBjb25maWd1cmF0aW9uIHByb3BlcnR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2FwcClcbiAgICogdG8gcmVmbGVjdCB0aGUgdGFiIGhlYWRlciBpbiB0aGUgcGFnZSB0aXRsZS5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYkhlYWRpbmcodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJIZWFkaW5nID0gdmFsdWU7XG5cbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJIZWFkaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJIZWFkaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhYi5cbiAgICogSWYgbm90IGRlZmluZWQsIHRoZSBpZGVudGlmaWVyIGlzIHNldCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHRhYiBvbiBsb2FkLCBzdGFydGluZyB3aXRoIGAwYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSW5kZXgodmFsdWU6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMuI190YWJJbmRleCAmJlxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy4jX3RhYkluZGV4ICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudXBkYXRlVGFiSW5kZXgodGhpcy4jX3RhYkluZGV4LCB2YWx1ZSk7XG4gICAgICB0aGlzLiN0YWJJbmRleENoYW5nZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfdGFiSW5kZXggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiSW5kZXgoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGFiSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRhYiBsYXlvdXQgdGhhdCBhcHBsaWVzIHNwYWNpbmcgdG8gdGhlIHRhYiBjb250YWluZXIgZWxlbWVudC4gVXNlIHRoZSBsYXlvdXRcbiAgICogdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSB0b3AtbGV2ZWwgY29tcG9uZW50IHR5cGUgdXNlZCB3aXRoaW4gdGhlIHRhYiwgb3IgdXNlIGBmaXRgIHRvXG4gICAqIGNvbnN0cmFpbiB0aGUgdGFiIGNvbnRlbnRzIHRvIHRoZSBhdmFpbGFibGUgdmlld3BvcnQuXG4gICAqIFVzZSBgbm9uZWAgZm9yIGN1c3RvbSBjb250ZW50IHRoYXQgZG9lcyBub3QgYWRoZXJlIHRvIHByZWRlZmluZWQgc3BhY2luZyBvciBjb25zdHJhaW50cy5cbiAgICogQGRlZmF1bHQgXCJub25lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGF5b3V0KHZhbHVlOiBTa3lUYWJMYXlvdXRUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGF5b3V0ID0gdmFsdWUgfHwgTEFZT1VUX0RFRkFVTFQ7XG5cbiAgICB0aGlzLiNfbGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuY3NzQ2xhc3MgPSBgJHtMQVlPVVRfQ0xBU1NfUFJFRklYfSR7bGF5b3V0fWA7XG5cbiAgICB0aGlzLiNvYnNlcnZlVGFiUmVzaXplKCk7XG5cbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudXBkYXRlQWN0aXZlVGFiTGF5b3V0KGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYXlvdXQoKTogU2t5VGFiTGF5b3V0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19sYXlvdXQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gYCR7TEFZT1VUX0NMQVNTX1BSRUZJWH0ke0xBWU9VVF9ERUZBVUxUfWA7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBjbG9zZSB0aGUgdGFiLlxuICAgKiBUaGUgY2xvc2UgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIHRoZSB0YWJzZXQncyBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG5cbiAgLyoqXG4gICAqIEFsZXJ0cyB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIHRoaXMgY29tcG9uZW50IGhhcyBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSByZWZsZWN0ZWQgaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIGdldCBzdGF0ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jc3RhdGVDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkluZGV4Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jdGFiSW5kZXhDaGFuZ2U7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0YWJDb250ZW50V3JhcHBlcicpXG4gIHB1YmxpYyBzZXQgdGFiQ29udGVudFdyYXBwZXIodGFiQ29udGVudFdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGFiRWxlbWVudCA9IHRhYkNvbnRlbnRXcmFwcGVyO1xuICAgIHRoaXMuI29ic2VydmVUYWJSZXNpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiQ29udGVudFdyYXBwZXIoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID0gJyc7XG5cbiAgcHVibGljIHNob3dDb250ZW50ID0gZmFsc2U7XG5cbiAgcHVibGljIHRhYkJ1dHRvbklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRhYlBhbmVsSWQ6IHN0cmluZztcblxuICAjX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICNhY3RpdmVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPjtcblxuICAjX3Blcm1hbGlua1ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI3N0YXRlQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8dm9pZD47XG5cbiAgI190YWJIZWFkaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI190YWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgI19sYXlvdXQ6IFNreVRhYkxheW91dFR5cGUgPSBMQVlPVVRfREVGQVVMVDtcblxuICAjX3RhYkVsZW1lbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI3RhYkluZGV4Q2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+O1xuXG4gICNvYnNlcnZpbmdUYWIgPSBmYWxzZTtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UgPSBwZXJtYWxpbmtTZXJ2aWNlO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgdGhpcy50YWJQYW5lbElkID0gYHNreS10YWItJHtpZH1gO1xuICAgIHRoaXMudGFiQnV0dG9uSWQgPSBgJHt0aGlzLnRhYlBhbmVsSWR9LW5hdi1idG5gO1xuXG4gICAgdGhpcy4jYWN0aXZlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3N0YXRlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lUYWJJbmRleCB8IHVuZGVmaW5lZD4oXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gICNtZWRpYVF1ZXJ5U2VydmljZSA9IGluamVjdChTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChjaGFuZ2VzWydkaXNhYmxlZCddICYmICFjaGFuZ2VzWydkaXNhYmxlZCddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3RhYkhlYWRpbmcnXSAmJiAhY2hhbmdlc1sndGFiSGVhZGluZyddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3RhYkhlYWRlckNvdW50J10gJiYgIWNoYW5nZXNbJ3RhYkhlYWRlckNvdW50J10uZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAoY2hhbmdlc1sncGVybWFsaW5rVmFsdWUnXSAmJiAhY2hhbmdlc1sncGVybWFsaW5rVmFsdWUnXS5maXJzdENoYW5nZSlcbiAgICApIHtcbiAgICAgIHRoaXMuI3N0YXRlQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snbGF5b3V0J10gJiYgY2hhbmdlc1snbGF5b3V0J10uY3VycmVudFZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnVub2JzZXJ2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMudGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51bnJlZ2lzdGVyVGFiKHRoaXMudGFiSW5kZXgpO1xuICAgIH1cbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS51bm9ic2VydmUoKTtcbiAgICB0aGlzLiNvYnNlcnZpbmdUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI190YWJJbmRleCA9IHRoaXMuI3RhYnNldFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcy50YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2FjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IGZhbHNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGlzQ2xvc2VhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMucGVybWFsaW5rVmFsdWVPckRlZmF1bHQgPVxuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS51cmxpZnkodGhpcy5wZXJtYWxpbmtWYWx1ZSkgfHxcbiAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UudXJsaWZ5KHRoaXMudGFiSGVhZGluZyk7XG4gIH1cblxuICAjb2JzZXJ2ZVRhYlJlc2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJDb250ZW50V3JhcHBlcikge1xuICAgICAgaWYgKHRoaXMubGF5b3V0ICE9PSAnbm9uZScgJiYgIXRoaXMuI29ic2VydmluZ1RhYikge1xuICAgICAgICB0aGlzLiNvYnNlcnZpbmdUYWIgPSB0cnVlO1xuICAgICAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS5vYnNlcnZlKHRoaXMudGFiQ29udGVudFdyYXBwZXIsIHtcbiAgICAgICAgICB1cGRhdGVSZXNwb25zaXZlQ2xhc3NlczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGF5b3V0ID09PSAnbm9uZScgJiYgdGhpcy4jb2JzZXJ2aW5nVGFiKSB7XG4gICAgICAgIHRoaXMuI29ic2VydmluZ1RhYiA9IGZhbHNlO1xuICAgICAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS51bm9ic2VydmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGFiXCJcbiAgcm9sZT1cInRhYnBhbmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYkJ1dHRvbklkXCJcbiAgW2hpZGRlbl09XCIhc2hvd0NvbnRlbnRcIlxuICBbaWRdPVwidGFiUGFuZWxJZFwiXG4gICN0YWJDb250ZW50V3JhcHBlclxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
package/fesm2015/skyux-tabs.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i4 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { NgModule, Injectable, Component, ChangeDetectionStrategy, Optional, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation, HostBinding, Pipe
|
|
4
|
+
import { NgModule, Injectable, Component, ChangeDetectionStrategy, Optional, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation, inject, HostBinding, Pipe } from '@angular/core';
|
|
5
5
|
import { SkyCheckboxModule } from '@skyux/forms';
|
|
6
6
|
import * as i7 from '@skyux/theme';
|
|
7
7
|
import { SkyThemeModule } from '@skyux/theme';
|
|
8
8
|
import * as i1 from '@skyux/core';
|
|
9
|
-
import { SkyMediaBreakpoints, SkyMediaQueryService, SkyIdModule, SkyLayoutHostService } from '@skyux/core';
|
|
9
|
+
import { SkyMediaBreakpoints, SkyMediaQueryService, SkyIdModule, SkyResizeObserverMediaQueryService, SkyLayoutHostService } from '@skyux/core';
|
|
10
10
|
import * as i6 from '@skyux/indicators';
|
|
11
11
|
import { SkyIconModule, SkyExpansionIndicatorModule, SkyStatusIndicatorModule } from '@skyux/indicators';
|
|
12
12
|
import * as i3 from '@skyux/i18n';
|
|
@@ -1674,7 +1674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1674
1674
|
type: Injectable
|
|
1675
1675
|
}], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i4.Location }, { type: i1$1.Router }]; } });
|
|
1676
1676
|
|
|
1677
|
-
var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent_tabIndexChange, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_setPermalinkValueOrDefault;
|
|
1677
|
+
var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent__tabElement, _SkyTabComponent_tabIndexChange, _SkyTabComponent_observingTab, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_mediaQueryService, _SkyTabComponent_setPermalinkValueOrDefault, _SkyTabComponent_observeTabResize;
|
|
1678
1678
|
const LAYOUT_CLASS_PREFIX = 'sky-layout-host-';
|
|
1679
1679
|
const LAYOUT_DEFAULT = 'none';
|
|
1680
1680
|
let nextId = 0;
|
|
@@ -1743,16 +1743,17 @@ class SkyTabComponent {
|
|
|
1743
1743
|
return __classPrivateFieldGet(this, _SkyTabComponent__tabIndex, "f");
|
|
1744
1744
|
}
|
|
1745
1745
|
/**
|
|
1746
|
-
* The
|
|
1747
|
-
*
|
|
1748
|
-
* the
|
|
1749
|
-
*
|
|
1750
|
-
* @default "
|
|
1746
|
+
* The tab layout that applies spacing to the tab container element. Use the layout
|
|
1747
|
+
* that corresponds with the top-level component type used within the tab, or use `fit` to
|
|
1748
|
+
* constrain the tab contents to the available viewport.
|
|
1749
|
+
* Use `none` for custom content that does not adhere to predefined spacing or constraints.
|
|
1750
|
+
* @default "none"
|
|
1751
1751
|
*/
|
|
1752
1752
|
set layout(value) {
|
|
1753
1753
|
const layout = value || LAYOUT_DEFAULT;
|
|
1754
1754
|
__classPrivateFieldSet(this, _SkyTabComponent__layout, layout, "f");
|
|
1755
1755
|
this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;
|
|
1756
|
+
__classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
|
|
1756
1757
|
if (this.active) {
|
|
1757
1758
|
__classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").updateActiveTabLayout(layout);
|
|
1758
1759
|
}
|
|
@@ -1769,6 +1770,13 @@ class SkyTabComponent {
|
|
|
1769
1770
|
get tabIndexChange() {
|
|
1770
1771
|
return __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f");
|
|
1771
1772
|
}
|
|
1773
|
+
set tabContentWrapper(tabContentWrapper) {
|
|
1774
|
+
__classPrivateFieldSet(this, _SkyTabComponent__tabElement, tabContentWrapper, "f");
|
|
1775
|
+
__classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
|
|
1776
|
+
}
|
|
1777
|
+
get tabContentWrapper() {
|
|
1778
|
+
return __classPrivateFieldGet(this, _SkyTabComponent__tabElement, "f");
|
|
1779
|
+
}
|
|
1772
1780
|
constructor(changeDetector, permalinkService, tabsetService) {
|
|
1773
1781
|
_SkyTabComponent_instances.add(this);
|
|
1774
1782
|
this.cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;
|
|
@@ -1787,10 +1795,13 @@ class SkyTabComponent {
|
|
|
1787
1795
|
_SkyTabComponent__tabHeading.set(this, void 0);
|
|
1788
1796
|
_SkyTabComponent__tabIndex.set(this, void 0);
|
|
1789
1797
|
_SkyTabComponent__layout.set(this, LAYOUT_DEFAULT);
|
|
1798
|
+
_SkyTabComponent__tabElement.set(this, void 0);
|
|
1790
1799
|
_SkyTabComponent_tabIndexChange.set(this, void 0);
|
|
1800
|
+
_SkyTabComponent_observingTab.set(this, false);
|
|
1791
1801
|
_SkyTabComponent_changeDetector.set(this, void 0);
|
|
1792
1802
|
_SkyTabComponent_permalinkService.set(this, void 0);
|
|
1793
1803
|
_SkyTabComponent_tabsetService.set(this, void 0);
|
|
1804
|
+
_SkyTabComponent_mediaQueryService.set(this, inject(SkyResizeObserverMediaQueryService));
|
|
1794
1805
|
__classPrivateFieldSet(this, _SkyTabComponent_changeDetector, changeDetector, "f");
|
|
1795
1806
|
__classPrivateFieldSet(this, _SkyTabComponent_permalinkService, permalinkService, "f");
|
|
1796
1807
|
__classPrivateFieldSet(this, _SkyTabComponent_tabsetService, tabsetService, "f");
|
|
@@ -1809,6 +1820,9 @@ class SkyTabComponent {
|
|
|
1809
1820
|
(changes['permalinkValue'] && !changes['permalinkValue'].firstChange)) {
|
|
1810
1821
|
__classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").next();
|
|
1811
1822
|
}
|
|
1823
|
+
if (changes['layout'] && changes['layout'].currentValue === 'none') {
|
|
1824
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
1825
|
+
}
|
|
1812
1826
|
}
|
|
1813
1827
|
ngOnDestroy() {
|
|
1814
1828
|
__classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").complete();
|
|
@@ -1817,6 +1831,8 @@ class SkyTabComponent {
|
|
|
1817
1831
|
if (this.tabIndex !== undefined) {
|
|
1818
1832
|
__classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").unregisterTab(this.tabIndex);
|
|
1819
1833
|
}
|
|
1834
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
1835
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
|
|
1820
1836
|
}
|
|
1821
1837
|
init() {
|
|
1822
1838
|
__classPrivateFieldSet(this, _SkyTabComponent__tabIndex, __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").registerTab(this.tabIndex), "f");
|
|
@@ -1835,16 +1851,41 @@ class SkyTabComponent {
|
|
|
1835
1851
|
return this.close.observers.length > 0;
|
|
1836
1852
|
}
|
|
1837
1853
|
}
|
|
1838
|
-
_SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
|
|
1854
|
+
_SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent__tabElement = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_observingTab = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_mediaQueryService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
|
|
1839
1855
|
this.permalinkValueOrDefault =
|
|
1840
1856
|
__classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.permalinkValue) ||
|
|
1841
1857
|
__classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.tabHeading);
|
|
1858
|
+
}, _SkyTabComponent_observeTabResize = function _SkyTabComponent_observeTabResize() {
|
|
1859
|
+
if (this.tabContentWrapper) {
|
|
1860
|
+
if (this.layout !== 'none' && !__classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
|
|
1861
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, true, "f");
|
|
1862
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").observe(this.tabContentWrapper, {
|
|
1863
|
+
updateResponsiveClasses: true,
|
|
1864
|
+
});
|
|
1865
|
+
}
|
|
1866
|
+
else if (this.layout === 'none' && __classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
|
|
1867
|
+
__classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
|
|
1868
|
+
__classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
|
|
1869
|
+
}
|
|
1870
|
+
}
|
|
1842
1871
|
};
|
|
1843
1872
|
SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1844
|
-
SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } },
|
|
1873
|
+
SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, providers: [
|
|
1874
|
+
SkyResizeObserverMediaQueryService,
|
|
1875
|
+
{
|
|
1876
|
+
provide: SkyMediaQueryService,
|
|
1877
|
+
useExisting: SkyResizeObserverMediaQueryService,
|
|
1878
|
+
},
|
|
1879
|
+
], viewQueries: [{ propertyName: "tabContentWrapper", first: true, predicate: ["tabContentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1845
1880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, decorators: [{
|
|
1846
1881
|
type: Component,
|
|
1847
|
-
args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1882
|
+
args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
1883
|
+
SkyResizeObserverMediaQueryService,
|
|
1884
|
+
{
|
|
1885
|
+
provide: SkyMediaQueryService,
|
|
1886
|
+
useExisting: SkyResizeObserverMediaQueryService,
|
|
1887
|
+
},
|
|
1888
|
+
], template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
|
|
1848
1889
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: SkyTabsetPermalinkService }, { type: SkyTabsetService }]; }, propDecorators: { active: [{
|
|
1849
1890
|
type: Input
|
|
1850
1891
|
}], disabled: [{
|
|
@@ -1864,6 +1905,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
1864
1905
|
args: ['class']
|
|
1865
1906
|
}], close: [{
|
|
1866
1907
|
type: Output
|
|
1908
|
+
}], tabContentWrapper: [{
|
|
1909
|
+
type: ViewChild,
|
|
1910
|
+
args: ['tabContentWrapper']
|
|
1867
1911
|
}] } });
|
|
1868
1912
|
|
|
1869
1913
|
class SkyTabsetNavButtonDisabledPipe {
|