@dereekb/dbx-web 9.6.2 → 9.6.3
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/esm2020/mapbox/lib/mapbox.layout.component.mjs +53 -30
- package/fesm2015/dereekb-dbx-web-mapbox.mjs +51 -28
- package/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-web-mapbox.mjs +51 -28
- package/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/esm2020/lib/mapbox.layout.component.mjs +53 -30
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs +51 -28
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs +51 -28
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/lib/mapbox.layout.component.d.ts +5 -1
- package/mapbox/package.json +3 -3
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { switchMap, first, startWith, shareReplay, throttleTime, map, distinctUntilChanged, BehaviorSubject, combineLatest, Subject } from 'rxjs';
|
|
1
|
+
import { tap, switchMap, first, startWith, shareReplay, throttleTime, map, distinctUntilChanged, BehaviorSubject, combineLatest, Subject } from 'rxjs';
|
|
2
2
|
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
3
3
|
import { DbxMapboxMapStore } from './mapbox.store';
|
|
4
4
|
import { dbxColorBackground } from '@dereekb/dbx-web';
|
|
@@ -26,11 +26,13 @@ export class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
26
26
|
this._resized = new Subject();
|
|
27
27
|
this._updateMargins = new Subject();
|
|
28
28
|
this._forceHasContent = new BehaviorSubject(false);
|
|
29
|
+
this._mode = new BehaviorSubject('side');
|
|
29
30
|
this._side = new BehaviorSubject('right');
|
|
30
31
|
this._openToggle = new BehaviorSubject(true);
|
|
31
32
|
this._color = new BehaviorSubject(undefined);
|
|
32
33
|
this._toggleSub = new SubscriptionObject();
|
|
33
34
|
this.side$ = this._side.pipe(distinctUntilChanged(), shareReplay(1));
|
|
35
|
+
this.mode$ = this._mode.pipe(distinctUntilChanged(), shareReplay(1));
|
|
34
36
|
this.hasContent$ = combineLatest([this._forceHasContent, this.dbxMapboxMapStore.hasContent$]).pipe(map(([hasContent, forceHasContent]) => hasContent || forceHasContent), distinctUntilChanged(), shareReplay(1));
|
|
35
37
|
this.opened$ = combineLatest([this.hasContent$, this._openToggle]).pipe(map(([hasContent, open]) => hasContent && open), distinctUntilChanged(), shareReplay(1));
|
|
36
38
|
this.position$ = this.side$.pipe(map((x) => (x === 'right' ? 'end' : 'start')), distinctUntilChanged(), shareReplay(1));
|
|
@@ -61,32 +63,46 @@ export class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
61
63
|
});
|
|
62
64
|
});
|
|
63
65
|
let init = false;
|
|
64
|
-
this._toggleSub.subscription =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
66
|
+
this._toggleSub.subscription = this.mode$
|
|
67
|
+
.pipe(switchMap((mode) => {
|
|
68
|
+
let obs;
|
|
69
|
+
if (mode === 'push') {
|
|
70
|
+
obs = combineLatest([this.opened$.pipe(distinctUntilChanged()), this._updateMargins]).pipe(tap(([opened]) => {
|
|
71
|
+
let { right } = this.container._contentMargins;
|
|
72
|
+
this.container.updateContentMargins();
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
const flip = opened ? 1 : -1;
|
|
75
|
+
if (opened) {
|
|
76
|
+
right = this.container._contentMargins.right;
|
|
77
|
+
}
|
|
78
|
+
right = (right || 0) * flip;
|
|
79
|
+
const element = this.content.nativeElement;
|
|
80
|
+
const width = element.clientWidth;
|
|
81
|
+
const margin = {
|
|
82
|
+
leftMargin: 0,
|
|
83
|
+
rightMargin: right,
|
|
84
|
+
fullWidth: width
|
|
85
|
+
};
|
|
86
|
+
const easeTo = this.dbxMapboxMapStore.calculateNextCenterOffsetWithScreenMarginChange(margin).pipe(first(), map((center) => ({ to: { center, duration: 3200, essential: false } })));
|
|
87
|
+
this.dbxMapboxMapStore.setMargin(opened ? margin : undefined);
|
|
88
|
+
if (!init) {
|
|
89
|
+
this.dbxMapboxMapStore.easeTo(easeTo);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
init = true;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
obs = combineLatest([this.opened$.pipe(distinctUntilChanged()), this._updateMargins]).pipe(switchMap((_) => this.dbxMapboxMapStore.mapInstance$), tap((x) => {
|
|
99
|
+
this.container.updateContentMargins();
|
|
100
|
+
x.triggerRepaint();
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
return obs;
|
|
104
|
+
}))
|
|
105
|
+
.subscribe();
|
|
90
106
|
}
|
|
91
107
|
ngOnDestroy() {
|
|
92
108
|
this._resized.complete();
|
|
@@ -108,6 +124,11 @@ export class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
108
124
|
this._side.next(side);
|
|
109
125
|
}
|
|
110
126
|
}
|
|
127
|
+
set mode(mode) {
|
|
128
|
+
if (mode != null) {
|
|
129
|
+
this._mode.next(mode);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
111
132
|
set opened(opened) {
|
|
112
133
|
if (opened != null) {
|
|
113
134
|
this._openToggle.next(opened);
|
|
@@ -126,10 +147,10 @@ export class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
126
147
|
}
|
|
127
148
|
}
|
|
128
149
|
DbxMapboxLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, deps: [{ token: i1.DbxMapboxMapStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
-
DbxMapboxLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutComponent, selector: "dbx-mapbox-layout", inputs: { side: "side", opened: "opened", hasContent: "hasContent", drawerColor: "drawerColor" }, viewQueries: [{ propertyName: "container", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"
|
|
150
|
+
DbxMapboxLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutComponent, selector: "dbx-mapbox-layout", inputs: { side: "side", mode: "mode", opened: "opened", hasContent: "hasContent", drawerColor: "drawerColor" }, viewQueries: [{ propertyName: "container", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" [mode]=\"(mode$ | async) || 'side'\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer{max-width:calc(100% - var(--dbx-mapbox-min-width-var, 60px))}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex;overflow:hidden}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i3.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i3.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: i7.DbxMapboxLayoutDrawerComponent, selector: "dbx-mapbox-layout-drawer" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
130
151
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, decorators: [{
|
|
131
152
|
type: Component,
|
|
132
|
-
args: [{ selector: 'dbx-mapbox-layout', template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"
|
|
153
|
+
args: [{ selector: 'dbx-mapbox-layout', template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" [mode]=\"(mode$ | async) || 'side'\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer{max-width:calc(100% - var(--dbx-mapbox-min-width-var, 60px))}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex;overflow:hidden}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"] }]
|
|
133
154
|
}], ctorParameters: function () { return [{ type: i1.DbxMapboxMapStore }]; }, propDecorators: { container: [{
|
|
134
155
|
type: ViewChild,
|
|
135
156
|
args: [MatDrawerContainer]
|
|
@@ -138,6 +159,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
|
|
|
138
159
|
args: ['content', { read: ElementRef, static: true }]
|
|
139
160
|
}], side: [{
|
|
140
161
|
type: Input
|
|
162
|
+
}], mode: [{
|
|
163
|
+
type: Input
|
|
141
164
|
}], opened: [{
|
|
142
165
|
type: Input
|
|
143
166
|
}], hasContent: [{
|
|
@@ -145,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
|
|
|
145
168
|
}], drawerColor: [{
|
|
146
169
|
type: Input
|
|
147
170
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC5sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3gubGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNwSyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFFckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7QUFLL0Q7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQTZEOUQsWUFBcUIsaUJBQW9DO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBRFcsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXREakQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZE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LElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxJQUNJLFVBQVUsQ0FBQyxVQUEwQjtRQUN2QyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUEyQjtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW1CO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7cUhBaExVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHNNQUN4QixrQkFBa0IsZ0hBR0MsVUFBVSxrRUM1QjFDLGc2QkFjQTsyRkRVYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsbUJBQW1CO3dHQU1wQixTQUFTO3NCQURqQixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJcEIsT0FBTztzQkFEZixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpSnBELElBQUk7c0JBRFAsS0FBSztnQkFRRixNQUFNO3NCQURULEtBQUs7Z0JBUUYsVUFBVTtzQkFEYixLQUFLO2dCQVFGLFdBQVc7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNraXAsIHN3aXRjaE1hcCwgZmlyc3QsIHN0YXJ0V2l0aCwgc2hhcmVSZXBsYXksIHRocm90dGxlVGltZSwgbWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhNYXBib3hNYXBTdG9yZSB9IGZyb20gJy4vbWFwYm94LnN0b3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBkYnhDb2xvckJhY2tncm91bmQsIERieFRoZW1lQ29sb3IgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IFJlc2l6ZWRFdmVudCB9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF0RHJhd2VyQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXBib3hFYXNlVG8gfSBmcm9tICcuL21hcGJveCc7XG5cbmV4cG9ydCB0eXBlIERieE1hcGJveExheW91dFNpZGUgPSAnbGVmdCcgfCAncmlnaHQnO1xuXG4vKipcbiAqIFJlc3BvbnNpdmUgY29tcG9uZW50IG1lYW50IHRvIHNwbGl0IGEgbGVmdCBhbmQgcmlnaHQgY29sdW1uLlxuICpcbiAqIFRoZSBsZWZ0IGNvbHVtbiBpcyBzbWFsbGVyIHRoYW4gdGhlIHJpZ2h0IGNvbHVtbiwgd2hpY2ggY29udGFpbnMgdGhlIHByaW1hcnkgY29udGVudC5cbiAqXG4gKiBSZXF1aXJlcyBhIFR3b0NvbHVtbnNDb250ZXh0U3RvcmUgdG8gYmUgcHJvdmlkZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1tYXBib3gtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcGJveC5sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXBib3gubGF5b3V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9uT2JqZWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdERyYXdlckNvbnRhaW5lcilcbiAgcmVhZG9ubHkgY29udGFpbmVyITogTWF0RHJhd2VyQ29udGFpbmVyO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICByZWFkb25seSBjb250ZW50ITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9yZXNpemVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTWFyZ2lucyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2ZvcmNlSGFzQ29udGVudCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9zaWRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhNYXBib3hMYXlvdXRTaWRlPigncmlnaHQnKTtcbiAgcHJpdmF0ZSBfb3BlblRvZ2dsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2NvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYnhUaGVtZUNvbG9yPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfdG9nZ2xlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNpZGUkID0gdGhpcy5fc2lkZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBoYXNDb250ZW50JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2ZvcmNlSGFzQ29udGVudCwgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5oYXNDb250ZW50JF0pLnBpcGUoXG4gICAgbWFwKChbaGFzQ29udGVudCwgZm9yY2VIYXNDb250ZW50XSkgPT4gaGFzQ29udGVudCB8fCBmb3JjZUhhc0NvbnRlbnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBvcGVuZWQkID0gY29tYmluZUxhdGVzdChbdGhpcy5oYXNDb250ZW50JCwgdGhpcy5fb3BlblRvZ2dsZV0pLnBpcGUoXG4gICAgbWFwKChbaGFzQ29udGVudCwgb3Blbl0pID0+IGhhc0NvbnRlbnQgJiYgb3BlbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHBvc2l0aW9uJDogT2JzZXJ2YWJsZTwnc3RhcnQnIHwgJ2VuZCc+ID0gdGhpcy5zaWRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPT09ICdyaWdodCcgPyAnZW5kJyA6ICdzdGFydCcpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZHJhd2VyQ2xhc3NlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNpZGUkLCB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmhhc0NvbnRlbnQkLCB0aGlzLm9wZW5lZCRdKS5waXBlKFxuICAgIC8vXG4gICAgbWFwKChbc2lkZSwgaGFzQ29udGVudCwgb3Blbl0pID0+IChoYXNDb250ZW50ID8gJ2hhcy1kcmF3ZXItY29udGVudCcgOiAnbm8tZHJhd2VyLWNvbnRlbnQnKSArIGAgJHtzaWRlfS1kcmF3ZXIgYCArIChvcGVuID8gJ29wZW4tZHJhd2VyJyA6ICcnKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRyYXdlckJ1dHRvbkNsYXNzZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5oYXNDb250ZW50JCwgdGhpcy5fY29sb3JdKS5waXBlKFxuICAgIC8vXG4gICAgbWFwKChbaGFzQ29udGVudCwgY29sb3JdKSA9PiBkYnhDb2xvckJhY2tncm91bmQoY29sb3IpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uSWNvbiQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2lkZSQsIHRoaXMub3BlbmVkJF0pLnBpcGUoXG4gICAgbWFwKChbc2lkZSwgb3BlbmVkXSkgPT4ge1xuICAgICAgbGV0IGljb25zID0gWydjaGV2cm9uX3JpZ2h0JywgJ2NoZXZyb25fbGVmdCddO1xuXG4gICAgICBpZiAoc2lkZSA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGljb25zID0gaWNvbnMucmV2ZXJzZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3BlbmVkID8gaWNvbnNbMF0gOiBpY29uc1sxXTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRieE1hcGJveE1hcFN0b3JlOiBEYnhNYXBib3hNYXBTdG9yZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IChcbiAgICAgIHRoaXMuc2lkZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgdGhpcy5fcmVzaXplZC5waXBlKFxuICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+ICdyJyksXG4gICAgICAgICAgICBzdGFydFdpdGgoJ3MnKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSBhcyBPYnNlcnZhYmxlPCdzJyB8ICdyJz5cbiAgICApLnN1YnNjcmliZSgocmVhc29uKSA9PiB7XG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLm1hcEluc3RhbmNlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgICAgeC5yZXNpemUoKTtcblxuICAgICAgICAvLyBzaWRlIGNoYW5nZWRcbiAgICAgICAgaWYgKHJlYXNvbiA9PT0gJ3MnKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVNYXJnaW5zLm5leHQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgaW5pdCA9IGZhbHNlO1xuXG4gICAgdGhpcy5fdG9nZ2xlU3ViLnN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3BlbmVkJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLCB0aGlzLl91cGRhdGVNYXJnaW5zXSkuc3Vic2NyaWJlKChbb3BlbmVkXSkgPT4ge1xuICAgICAgbGV0IHsgcmlnaHQgfSA9IHRoaXMuY29udGFpbmVyLl9jb250ZW50TWFyZ2lucztcblxuICAgICAgdGhpcy5jb250YWluZXIudXBkYXRlQ29udGVudE1hcmdpbnMoKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZsaXAgPSBvcGVuZWQgPyAxIDogLTE7XG5cbiAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgIHJpZ2h0ID0gdGhpcy5jb250YWluZXIuX2NvbnRlbnRNYXJnaW5zLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmlnaHQgPSAocmlnaHQgfHwgMCkgKiBmbGlwO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICBjb25zdCBtYXJnaW4gPSB7XG4gICAgICAgICAgbGVmdE1hcmdpbjogMCxcbiAgICAgICAgICByaWdodE1hcmdpbjogcmlnaHQsXG4gICAgICAgICAgZnVsbFdpZHRoOiB3aWR0aFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGVhc2VUbzogT2JzZXJ2YWJsZTxNYXBib3hFYXNlVG8+ID0gdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jYWxjdWxhdGVOZXh0Q2VudGVyT2Zmc2V0V2l0aFNjcmVlbk1hcmdpbkNoYW5nZShtYXJnaW4pLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBtYXAoKGNlbnRlcikgPT4gKHsgdG86IHsgY2VudGVyLCBkdXJhdGlvbjogMzIwMCwgZXNzZW50aWFsOiBmYWxzZSB9IH0gYXMgTWFwYm94RWFzZVRvKSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldE1hcmdpbihvcGVuZWQgPyBtYXJnaW4gOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIGlmICghaW5pdCkge1xuICAgICAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuZWFzZVRvKGVhc2VUbyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5pdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzaXplZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZU1hcmdpbnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zaWRlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fb3BlblRvZ2dsZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NvbG9yLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdG9nZ2xlU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JjZUhhc0NvbnRlbnQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHRvZ2dsZURyYXdlcihvcGVuPzogYm9vbGVhbikge1xuICAgIGlmIChvcGVuID09IG51bGwpIHtcbiAgICAgIG9wZW4gPSAhdGhpcy5fb3BlblRvZ2dsZS52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9vcGVuVG9nZ2xlLm5leHQob3Blbik7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2lkZShzaWRlOiBNYXliZTxEYnhNYXBib3hMYXlvdXRTaWRlPikge1xuICAgIGlmIChzaWRlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3NpZGUubmV4dChzaWRlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgb3BlbmVkKG9wZW5lZDogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICBpZiAob3BlbmVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29wZW5Ub2dnbGUubmV4dChvcGVuZWQpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBoYXNDb250ZW50KGhhc0NvbnRlbnQ6IE1heWJlPGJvb2xlYW4+KSB7XG4gICAgaWYgKGhhc0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fZm9yY2VIYXNDb250ZW50Lm5leHQoaGFzQ29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGRyYXdlckNvbG9yKGNvbG9yOiBNYXliZTxEYnhUaGVtZUNvbG9yPikge1xuICAgIHRoaXMuX2NvbG9yLm5leHQoY29sb3IpO1xuICB9XG5cbiAgb25SZXNpemVkKGV2ZW50OiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNpemVkLm5leHQoKTtcbiAgfVxufVxuIiwiPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZGJ4LW1hcGJveC1sYXlvdXQtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiKGRyYXdlckNsYXNzZXMkIHwgYXN5bmMpIHx8ICcnXCIgW2hhc0JhY2tkcm9wXT1cImZhbHNlXCI+XG4gIDxtYXQtZHJhd2VyIGNsYXNzPVwiZGJ4LW1hcGJveC1sYXlvdXQtZHJhd2VyXCIgI2RyYXdlciBbb3BlbmVkXT1cIm9wZW5lZCQgfCBhc3luY1wiIG1vZGU9XCJwdXNoXCIgW3Bvc2l0aW9uXT1cIihwb3NpdGlvbiQgfCBhc3luYykgfHwgJ2VuZCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1sYXlvdXQtZHJhd2VyLWNvbnRlbnRcIiBbbmdDbGFzc109XCIoZHJhd2VyQnV0dG9uQ2xhc3NlcyQgfCBhc3luYykgfHwgJydcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltkcmF3ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPGRieC1tYXBib3gtbGF5b3V0LWRyYXdlcj48L2RieC1tYXBib3gtbGF5b3V0LWRyYXdlcj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZHJhd2VyPlxuICA8bWF0LWRyYXdlci1jb250ZW50ICNjb250ZW50IGNsYXNzPVwiZGJ4LW1hcGJveC1sYXlvdXQtY29udGVudFwiIChyZXNpemVkKT1cIm9uUmVzaXplZCgkZXZlbnQpXCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZURyYXdlcigpXCIgY2xhc3M9XCJkYngtbWFwYm94LWxheW91dC1kcmF3ZXItYnV0dG9uXCIgW25nQ2xhc3NdPVwiKGRyYXdlckJ1dHRvbkNsYXNzZXMkIHwgYXN5bmMpIHx8ICcnXCI+XG4gICAgICA8bWF0LWljb24+e3sgYnV0dG9uSWNvbiQgfCBhc3luYyB9fTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L21hdC1kcmF3ZXItY29udGVudD5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LmxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC5sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3gubGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQVEsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQThCLE1BQU0sTUFBTSxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7OztBQU8vRDs7Ozs7O0dBTUc7QUFNSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsa0JBQWtCO0lBK0Q5RCxZQUFxQixpQkFBb0M7UUFDdkQsS0FBSyxFQUFFLENBQUM7UUFEVyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBeERqRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDckMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFD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O1FBQ3ZDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELElBQ0ksV0FBVyxDQUFDLEtBQTJCO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOztxSEEvTVUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isb05BQ3hCLGtCQUFrQixnSEFHQyxVQUFVLGtFQzlCMUMsdTdCQWNBOzJGRFlhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxtQkFBbUI7d0dBTXBCLFNBQVM7c0JBRGpCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUlwQixPQUFPO3NCQURmLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlLcEQsSUFBSTtzQkFEUCxLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkFRRixNQUFNO3NCQURULEtBQUs7Z0JBUUYsVUFBVTtzQkFEYixLQUFLO2dCQVFGLFdBQVc7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRhcCwgc2tpcCwgc3dpdGNoTWFwLCBmaXJzdCwgc3RhcnRXaXRoLCBzaGFyZVJlcGxheSwgdGhyb3R0bGVUaW1lLCBtYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIE9ic2VydmFibGUsIGludGVydmFsLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhNYXBib3hNYXBTdG9yZSB9IGZyb20gJy4vbWFwYm94LnN0b3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBkYnhDb2xvckJhY2tncm91bmQsIERieFRoZW1lQ29sb3IgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IFJlc2l6ZWRFdmVudCB9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF0RHJhd2VyQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXBib3hFYXNlVG8gfSBmcm9tICcuL21hcGJveCc7XG5cbmV4cG9ydCB0eXBlIERieE1hcGJveExheW91dFNpZGUgPSAnbGVmdCcgfCAncmlnaHQnO1xuXG5leHBvcnQgdHlwZSBEYnhNYXBib3hMYXlvdXRNb2RlID0gJ3NpZGUnIHwgJ3B1c2gnO1xuXG4vKipcbiAqIFJlc3BvbnNpdmUgY29tcG9uZW50IG1lYW50IHRvIHNwbGl0IGEgbGVmdCBhbmQgcmlnaHQgY29sdW1uLlxuICpcbiAqIFRoZSBsZWZ0IGNvbHVtbiBpcyBzbWFsbGVyIHRoYW4gdGhlIHJpZ2h0IGNvbHVtbiwgd2hpY2ggY29udGFpbnMgdGhlIHByaW1hcnkgY29udGVudC5cbiAqXG4gKiBSZXF1aXJlcyBhIFR3b0NvbHVtbnNDb250ZXh0U3RvcmUgdG8gYmUgcHJvdmlkZWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1tYXBib3gtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcGJveC5sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXBib3gubGF5b3V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4TWFwYm94TGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9uT2JqZWN0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hdERyYXdlckNvbnRhaW5lcilcbiAgcmVhZG9ubHkgY29udGFpbmVyITogTWF0RHJhd2VyQ29udGFpbmVyO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICByZWFkb25seSBjb250ZW50ITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9yZXNpemVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTWFyZ2lucyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2ZvcmNlSGFzQ29udGVudCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9tb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhNYXBib3hMYXlvdXRNb2RlPignc2lkZScpO1xuICBwcml2YXRlIF9zaWRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhNYXBib3hMYXlvdXRTaWRlPigncmlnaHQnKTtcbiAgcHJpdmF0ZSBfb3BlblRvZ2dsZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2NvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYnhUaGVtZUNvbG9yPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfdG9nZ2xlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNpZGUkID0gdGhpcy5fc2lkZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgbW9kZSQ6IE9ic2VydmFibGU8RGJ4TWFwYm94TGF5b3V0TW9kZT4gPSB0aGlzLl9tb2RlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGhhc0NvbnRlbnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZm9yY2VIYXNDb250ZW50LCB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmhhc0NvbnRlbnQkXSkucGlwZShcbiAgICBtYXAoKFtoYXNDb250ZW50LCBmb3JjZUhhc0NvbnRlbnRdKSA9PiBoYXNDb250ZW50IHx8IGZvcmNlSGFzQ29udGVudCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG9wZW5lZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmhhc0NvbnRlbnQkLCB0aGlzLl9vcGVuVG9nZ2xlXSkucGlwZShcbiAgICBtYXAoKFtoYXNDb250ZW50LCBvcGVuXSkgPT4gaGFzQ29udGVudCAmJiBvcGVuKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcG9zaXRpb24kOiBPYnNlcnZhYmxlPCdzdGFydCcgfCAnZW5kJz4gPSB0aGlzLnNpZGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA9PT0gJ3JpZ2h0JyA/ICdlbmQnIDogJ3N0YXJ0JykpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkcmF3ZXJDbGFzc2VzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2lkZSQsIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuaGFzQ29udGVudCQsIHRoaXMub3BlbmVkJF0pLnBpcGUoXG4gICAgLy9cbiAgICBtYXAoKFtzaWRlLCBoYXNDb250ZW50LCBvcGVuXSkgPT4gKGhhc0NvbnRlbnQgPyAnaGFzLWRyYXdlci1jb250ZW50JyA6ICduby1kcmF3ZXItY29udGVudCcpICsgYCAke3NpZGV9LWRyYXdlciBgICsgKG9wZW4gPyAnb3Blbi1kcmF3ZXInIDogJycpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZHJhd2VyQnV0dG9uQ2xhc3NlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRieE1hcGJveE1hcFN0b3JlLmhhc0NvbnRlbnQkLCB0aGlzLl9jb2xvcl0pLnBpcGUoXG4gICAgLy9cbiAgICBtYXAoKFtoYXNDb250ZW50LCBjb2xvcl0pID0+IGRieENvbG9yQmFja2dyb3VuZChjb2xvcikpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBidXR0b25JY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gY29tYmluZUxhdGVzdChbdGhpcy5zaWRlJCwgdGhpcy5vcGVuZWQkXSkucGlwZShcbiAgICBtYXAoKFtzaWRlLCBvcGVuZWRdKSA9PiB7XG4gICAgICBsZXQgaWNvbnMgPSBbJ2NoZXZyb25fcmlnaHQnLCAnY2hldnJvbl9sZWZ0J107XG5cbiAgICAgIGlmIChzaWRlID09PSAnbGVmdCcpIHtcbiAgICAgICAgaWNvbnMgPSBpY29ucy5yZXZlcnNlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcGVuZWQgPyBpY29uc1swXSA6IGljb25zWzFdO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4TWFwYm94TWFwU3RvcmU6IERieE1hcGJveE1hcFN0b3JlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gKFxuICAgICAgdGhpcy5zaWRlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICB0aGlzLl9yZXNpemVkLnBpcGUoXG4gICAgICAgICAgICB0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gJ3InKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgncycpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApIGFzIE9ic2VydmFibGU8J3MnIHwgJ3InPlxuICAgICkuc3Vic2NyaWJlKChyZWFzb24pID0+IHtcbiAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUubWFwSW5zdGFuY2UkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICB4LnJlc2l6ZSgpO1xuXG4gICAgICAgIC8vIHNpZGUgY2hhbmdlZFxuICAgICAgICBpZiAocmVhc29uID09PSAncycpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1hcmdpbnMubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGxldCBpbml0ID0gZmFsc2U7XG5cbiAgICB0aGlzLl90b2dnbGVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5tb2RlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgobW9kZSkgPT4ge1xuICAgICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8dW5rbm93bj47XG5cbiAgICAgICAgICBpZiAobW9kZSA9PT0gJ3B1c2gnKSB7XG4gICAgICAgICAgICBvYnMgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wZW5lZCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSwgdGhpcy5fdXBkYXRlTWFyZ2luc10pLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoW29wZW5lZF0pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgeyByaWdodCB9ID0gdGhpcy5jb250YWluZXIuX2NvbnRlbnRNYXJnaW5zO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIudXBkYXRlQ29udGVudE1hcmdpbnMoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmxpcCA9IG9wZW5lZCA/IDEgOiAtMTtcblxuICAgICAgICAgICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByaWdodCA9IHRoaXMuY29udGFpbmVyLl9jb250ZW50TWFyZ2lucy5yaWdodDtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmlnaHQgPSAocmlnaHQgfHwgMCkgKiBmbGlwO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBtYXJnaW4gPSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnRNYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0TWFyZ2luOiByaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoOiB3aWR0aFxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZWFzZVRvOiBPYnNlcnZhYmxlPE1hcGJveEVhc2VUbz4gPSB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmNhbGN1bGF0ZU5leHRDZW50ZXJPZmZzZXRXaXRoU2NyZWVuTWFyZ2luQ2hhbmdlKG1hcmdpbikucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChjZW50ZXIpID0+ICh7IHRvOiB7IGNlbnRlciwgZHVyYXRpb246IDMyMDAsIGVzc2VudGlhbDogZmFsc2UgfSB9IGFzIE1hcGJveEVhc2VUbykpXG4gICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldE1hcmdpbihvcGVuZWQgPyBtYXJnaW4gOiB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIWluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5lYXNlVG8oZWFzZVRvKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JzID0gY29tYmluZUxhdGVzdChbdGhpcy5vcGVuZWQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksIHRoaXMuX3VwZGF0ZU1hcmdpbnNdKS5waXBlKFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKF8pID0+IHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUubWFwSW5zdGFuY2UkKSxcbiAgICAgICAgICAgICAgdGFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIudXBkYXRlQ29udGVudE1hcmdpbnMoKTtcbiAgICAgICAgICAgICAgICB4LnRyaWdnZXJSZXBhaW50KCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnM7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNpemVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdXBkYXRlTWFyZ2lucy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NpZGUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vcGVuVG9nZ2xlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29sb3IuY29tcGxldGUoKTtcbiAgICB0aGlzLl90b2dnbGVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2ZvcmNlSGFzQ29udGVudC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdG9nZ2xlRHJhd2VyKG9wZW4/OiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT0gbnVsbCkge1xuICAgICAgb3BlbiA9ICF0aGlzLl9vcGVuVG9nZ2xlLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX29wZW5Ub2dnbGUubmV4dChvcGVuKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzaWRlKHNpZGU6IE1heWJlPERieE1hcGJveExheW91dFNpZGU+KSB7XG4gICAgaWYgKHNpZGUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2lkZS5uZXh0KHNpZGUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb2RlKG1vZGU6IE1heWJlPERieE1hcGJveExheW91dE1vZGU+KSB7XG4gICAgaWYgKG1vZGUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fbW9kZS5uZXh0KG1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBvcGVuZWQob3BlbmVkOiBNYXliZTxib29sZWFuPikge1xuICAgIGlmIChvcGVuZWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fb3BlblRvZ2dsZS5uZXh0KG9wZW5lZCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhhc0NvbnRlbnQoaGFzQ29udGVudDogTWF5YmU8Ym9vbGVhbj4pIHtcbiAgICBpZiAoaGFzQ29udGVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9mb3JjZUhhc0NvbnRlbnQubmV4dChoYXNDb250ZW50KTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgZHJhd2VyQ29sb3IoY29sb3I6IE1heWJlPERieFRoZW1lQ29sb3I+KSB7XG4gICAgdGhpcy5fY29sb3IubmV4dChjb2xvcik7XG4gIH1cblxuICBvblJlc2l6ZWQoZXZlbnQ6IFJlc2l6ZWRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2l6ZWQubmV4dCgpO1xuICB9XG59XG4iLCI8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJkYngtbWFwYm94LWxheW91dC1jb250YWluZXJcIiBbbmdDbGFzc109XCIoZHJhd2VyQ2xhc3NlcyQgfCBhc3luYykgfHwgJydcIiBbaGFzQmFja2Ryb3BdPVwiZmFsc2VcIj5cbiAgPG1hdC1kcmF3ZXIgY2xhc3M9XCJkYngtbWFwYm94LWxheW91dC1kcmF3ZXJcIiAjZHJhd2VyIFtvcGVuZWRdPVwib3BlbmVkJCB8IGFzeW5jXCIgW21vZGVdPVwiKG1vZGUkIHwgYXN5bmMpIHx8ICdzaWRlJ1wiIFtwb3NpdGlvbl09XCIocG9zaXRpb24kIHwgYXN5bmMpIHx8ICdlbmQnXCI+XG4gICAgPGRpdiBjbGFzcz1cImRieC1tYXBib3gtbGF5b3V0LWRyYXdlci1jb250ZW50XCIgW25nQ2xhc3NdPVwiKGRyYXdlckJ1dHRvbkNsYXNzZXMkIHwgYXN5bmMpIHx8ICcnXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZHJhd2VyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxkYngtbWFwYm94LWxheW91dC1kcmF3ZXI+PC9kYngtbWFwYm94LWxheW91dC1kcmF3ZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRyYXdlcj5cbiAgPG1hdC1kcmF3ZXItY29udGVudCAjY29udGVudCBjbGFzcz1cImRieC1tYXBib3gtbGF5b3V0LWNvbnRlbnRcIiAocmVzaXplZCk9XCJvblJlc2l6ZWQoJGV2ZW50KVwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVEcmF3ZXIoKVwiIGNsYXNzPVwiZGJ4LW1hcGJveC1sYXlvdXQtZHJhd2VyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cIihkcmF3ZXJCdXR0b25DbGFzc2VzJCB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgPG1hdC1pY29uPnt7IGJ1dHRvbkljb24kIHwgYXN5bmMgfX08L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XG48L21hdC1kcmF3ZXItY29udGFpbmVyPlxuIl19
|
|
@@ -527,11 +527,13 @@ class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
527
527
|
this._resized = new Subject();
|
|
528
528
|
this._updateMargins = new Subject();
|
|
529
529
|
this._forceHasContent = new BehaviorSubject(false);
|
|
530
|
+
this._mode = new BehaviorSubject('side');
|
|
530
531
|
this._side = new BehaviorSubject('right');
|
|
531
532
|
this._openToggle = new BehaviorSubject(true);
|
|
532
533
|
this._color = new BehaviorSubject(undefined);
|
|
533
534
|
this._toggleSub = new SubscriptionObject();
|
|
534
535
|
this.side$ = this._side.pipe(distinctUntilChanged(), shareReplay(1));
|
|
536
|
+
this.mode$ = this._mode.pipe(distinctUntilChanged(), shareReplay(1));
|
|
535
537
|
this.hasContent$ = combineLatest([this._forceHasContent, this.dbxMapboxMapStore.hasContent$]).pipe(map(([hasContent, forceHasContent]) => hasContent || forceHasContent), distinctUntilChanged(), shareReplay(1));
|
|
536
538
|
this.opened$ = combineLatest([this.hasContent$, this._openToggle]).pipe(map(([hasContent, open]) => hasContent && open), distinctUntilChanged(), shareReplay(1));
|
|
537
539
|
this.position$ = this.side$.pipe(map((x) => (x === 'right' ? 'end' : 'start')), distinctUntilChanged(), shareReplay(1));
|
|
@@ -562,32 +564,46 @@ class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
562
564
|
});
|
|
563
565
|
});
|
|
564
566
|
let init = false;
|
|
565
|
-
this._toggleSub.subscription =
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
567
|
+
this._toggleSub.subscription = this.mode$
|
|
568
|
+
.pipe(switchMap((mode) => {
|
|
569
|
+
let obs;
|
|
570
|
+
if (mode === 'push') {
|
|
571
|
+
obs = combineLatest([this.opened$.pipe(distinctUntilChanged()), this._updateMargins]).pipe(tap(([opened]) => {
|
|
572
|
+
let { right } = this.container._contentMargins;
|
|
573
|
+
this.container.updateContentMargins();
|
|
574
|
+
setTimeout(() => {
|
|
575
|
+
const flip = opened ? 1 : -1;
|
|
576
|
+
if (opened) {
|
|
577
|
+
right = this.container._contentMargins.right;
|
|
578
|
+
}
|
|
579
|
+
right = (right || 0) * flip;
|
|
580
|
+
const element = this.content.nativeElement;
|
|
581
|
+
const width = element.clientWidth;
|
|
582
|
+
const margin = {
|
|
583
|
+
leftMargin: 0,
|
|
584
|
+
rightMargin: right,
|
|
585
|
+
fullWidth: width
|
|
586
|
+
};
|
|
587
|
+
const easeTo = this.dbxMapboxMapStore.calculateNextCenterOffsetWithScreenMarginChange(margin).pipe(first(), map((center) => ({ to: { center, duration: 3200, essential: false } })));
|
|
588
|
+
this.dbxMapboxMapStore.setMargin(opened ? margin : undefined);
|
|
589
|
+
if (!init) {
|
|
590
|
+
this.dbxMapboxMapStore.easeTo(easeTo);
|
|
591
|
+
}
|
|
592
|
+
else {
|
|
593
|
+
init = true;
|
|
594
|
+
}
|
|
595
|
+
});
|
|
596
|
+
}));
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
obs = combineLatest([this.opened$.pipe(distinctUntilChanged()), this._updateMargins]).pipe(switchMap((_) => this.dbxMapboxMapStore.mapInstance$), tap((x) => {
|
|
600
|
+
this.container.updateContentMargins();
|
|
601
|
+
x.triggerRepaint();
|
|
602
|
+
}));
|
|
603
|
+
}
|
|
604
|
+
return obs;
|
|
605
|
+
}))
|
|
606
|
+
.subscribe();
|
|
591
607
|
}
|
|
592
608
|
ngOnDestroy() {
|
|
593
609
|
this._resized.complete();
|
|
@@ -609,6 +625,11 @@ class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
609
625
|
this._side.next(side);
|
|
610
626
|
}
|
|
611
627
|
}
|
|
628
|
+
set mode(mode) {
|
|
629
|
+
if (mode != null) {
|
|
630
|
+
this._mode.next(mode);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
612
633
|
set opened(opened) {
|
|
613
634
|
if (opened != null) {
|
|
614
635
|
this._openToggle.next(opened);
|
|
@@ -627,10 +648,10 @@ class DbxMapboxLayoutComponent extends SubscriptionObject {
|
|
|
627
648
|
}
|
|
628
649
|
}
|
|
629
650
|
DbxMapboxLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, deps: [{ token: DbxMapboxMapStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
630
|
-
DbxMapboxLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutComponent, selector: "dbx-mapbox-layout", inputs: { side: "side", opened: "opened", hasContent: "hasContent", drawerColor: "drawerColor" }, viewQueries: [{ propertyName: "container", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"
|
|
651
|
+
DbxMapboxLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutComponent, selector: "dbx-mapbox-layout", inputs: { side: "side", mode: "mode", opened: "opened", hasContent: "hasContent", drawerColor: "drawerColor" }, viewQueries: [{ propertyName: "container", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" [mode]=\"(mode$ | async) || 'side'\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer{max-width:calc(100% - var(--dbx-mapbox-min-width-var, 60px))}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex;overflow:hidden}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i3.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i3.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: DbxMapboxLayoutDrawerComponent, selector: "dbx-mapbox-layout-drawer" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
|
|
631
652
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, decorators: [{
|
|
632
653
|
type: Component,
|
|
633
|
-
args: [{ selector: 'dbx-mapbox-layout', template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"
|
|
654
|
+
args: [{ selector: 'dbx-mapbox-layout', template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" [mode]=\"(mode$ | async) || 'side'\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer{max-width:calc(100% - var(--dbx-mapbox-min-width-var, 60px))}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex;overflow:hidden}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"] }]
|
|
634
655
|
}], ctorParameters: function () { return [{ type: DbxMapboxMapStore }]; }, propDecorators: { container: [{
|
|
635
656
|
type: ViewChild,
|
|
636
657
|
args: [MatDrawerContainer]
|
|
@@ -639,6 +660,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
|
|
|
639
660
|
args: ['content', { read: ElementRef, static: true }]
|
|
640
661
|
}], side: [{
|
|
641
662
|
type: Input
|
|
663
|
+
}], mode: [{
|
|
664
|
+
type: Input
|
|
642
665
|
}], opened: [{
|
|
643
666
|
type: Input
|
|
644
667
|
}], hasContent: [{
|