@worktile/gantt 12.1.0-next.0 → 12.1.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/bundles/worktile-gantt.umd.js +821 -907
- package/bundles/worktile-gantt.umd.js.map +1 -1
- package/class/event.d.ts +4 -0
- package/class/item.d.ts +4 -5
- package/components/calendar/{grid/calendar-grid.component.d.ts → calendar.component.d.ts} +10 -8
- package/components/links/links.component.d.ts +3 -2
- package/components/main/gantt-main.component.d.ts +4 -4
- package/components/table/gantt-table.component.d.ts +42 -0
- package/esm2015/class/event.js +3 -1
- package/esm2015/class/item.js +1 -1
- package/esm2015/components/bar/bar-drag.js +6 -1
- package/esm2015/components/calendar/calendar.component.js +86 -0
- package/esm2015/components/links/links.component.js +42 -19
- package/esm2015/components/main/gantt-main.component.js +5 -5
- package/esm2015/components/table/gantt-table.component.js +163 -0
- package/esm2015/gantt-dom.service.js +2 -5
- package/esm2015/gantt-drag-container.js +2 -1
- package/esm2015/gantt-item-upper.js +4 -5
- package/esm2015/gantt-print.service.js +2 -2
- package/esm2015/gantt-upper.js +110 -35
- package/esm2015/gantt.component.js +34 -169
- package/esm2015/gantt.config.js +13 -0
- package/esm2015/gantt.module.js +22 -18
- package/esm2015/public-api.js +2 -1
- package/esm2015/root.component.js +7 -8
- package/esm2015/table/gantt-table.component.js +9 -3
- package/esm2015/utils/helpers.js +10 -9
- package/esm2015/views/day.js +2 -2
- package/esm2015/views/month.js +3 -3
- package/esm2015/views/quarter.js +3 -3
- package/esm2015/views/view.js +4 -2
- package/esm2015/views/week.js +3 -3
- package/esm2015/views/year.js +2 -2
- package/fesm2015/worktile-gantt.js +794 -874
- package/fesm2015/worktile-gantt.js.map +1 -1
- package/gantt-dom.service.d.ts +0 -1
- package/gantt-drag-container.d.ts +1 -0
- package/gantt-upper.d.ts +23 -5
- package/gantt.component.d.ts +8 -27
- package/gantt.config.d.ts +23 -0
- package/gantt.module.d.ts +13 -16
- package/main.bundle.scss +206 -233
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/table/gantt-table.component.d.ts +4 -2
- package/utils/helpers.d.ts +3 -5
- package/views/view.d.ts +2 -0
- package/components/calendar/header/calendar-header.component.d.ts +0 -21
- package/components/table/body/gantt-table-body.component.d.ts +0 -24
- package/components/table/header/gantt-table-header.component.d.ts +0 -29
- package/esm2015/components/calendar/grid/calendar-grid.component.js +0 -76
- package/esm2015/components/calendar/header/calendar-header.component.js +0 -70
- package/esm2015/components/table/body/gantt-table-body.component.js +0 -68
- package/esm2015/components/table/header/gantt-table-header.component.js +0 -126
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, HostBinding, Inject } from '@angular/core';
|
|
2
2
|
import { merge, Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil, skip } from 'rxjs/operators';
|
|
4
|
+
import { recursiveItems } from '../../utils/helpers';
|
|
4
5
|
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../../gantt-drag-container";
|
|
@@ -18,7 +19,8 @@ export class GanttLinksComponent {
|
|
|
18
19
|
this.cdr = cdr;
|
|
19
20
|
this.elementRef = elementRef;
|
|
20
21
|
this.ganttDragContainer = ganttDragContainer;
|
|
21
|
-
this.
|
|
22
|
+
this.groups = [];
|
|
23
|
+
this.items = [];
|
|
22
24
|
this.lineClick = new EventEmitter();
|
|
23
25
|
this.links = [];
|
|
24
26
|
this.linkItems = [];
|
|
@@ -28,8 +30,8 @@ export class GanttLinksComponent {
|
|
|
28
30
|
this.ganttLinksOverlay = true;
|
|
29
31
|
}
|
|
30
32
|
ngOnInit() {
|
|
31
|
-
this.firstChange = false;
|
|
32
33
|
this.buildLinks();
|
|
34
|
+
this.firstChange = false;
|
|
33
35
|
this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
34
36
|
this.elementRef.nativeElement.style.visibility = 'hidden';
|
|
35
37
|
});
|
|
@@ -50,21 +52,40 @@ export class GanttLinksComponent {
|
|
|
50
52
|
const lineHeight = this.ganttUpper.styles.lineHeight;
|
|
51
53
|
const barHeight = this.ganttUpper.styles.barHeight;
|
|
52
54
|
this.linkItems = [];
|
|
53
|
-
this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
if (this.groups.length > 0) {
|
|
56
|
+
let itemNum = 0;
|
|
57
|
+
let groupNum = 0;
|
|
58
|
+
this.groups.forEach((group) => {
|
|
59
|
+
groupNum++;
|
|
60
|
+
if (group.expanded) {
|
|
61
|
+
const items = recursiveItems(group.items);
|
|
62
|
+
items.forEach((item, itemIndex) => {
|
|
63
|
+
const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;
|
|
64
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
65
|
+
x: item.refs.x,
|
|
66
|
+
y
|
|
67
|
+
}, after: {
|
|
68
|
+
x: item.refs.x + item.refs.width,
|
|
69
|
+
y
|
|
70
|
+
} }));
|
|
71
|
+
});
|
|
72
|
+
itemNum += items.length;
|
|
65
73
|
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const items = recursiveItems(this.items);
|
|
78
|
+
items.forEach((item, itemIndex) => {
|
|
79
|
+
const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;
|
|
80
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
81
|
+
x: item.refs.x,
|
|
82
|
+
y
|
|
83
|
+
}, after: {
|
|
84
|
+
x: item.refs.x + item.refs.width,
|
|
85
|
+
y
|
|
86
|
+
} }));
|
|
87
|
+
});
|
|
88
|
+
}
|
|
68
89
|
}
|
|
69
90
|
generatePath(source, target) {
|
|
70
91
|
if (source.before && source.after && target.before && target.after) {
|
|
@@ -169,7 +190,7 @@ export class GanttLinksComponent {
|
|
|
169
190
|
}
|
|
170
191
|
}
|
|
171
192
|
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
-
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: {
|
|
193
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: { groups: "groups", items: "items" }, outputs: { lineClick: "lineClick" }, host: { properties: { "class.gantt-links-overlay": "this.ganttLinksOverlay" } }, usesOnChanges: true, ngImport: i0, template: "<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path [attr.d]=\"link.path\" fill=\"transparent\" stroke-width=\"2\" [attr.stroke]=\"link.color\" pointer-events=\"none\"></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
173
194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
174
195
|
type: Component,
|
|
175
196
|
args: [{
|
|
@@ -179,7 +200,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
179
200
|
}], ctorParameters: function () { return [{ type: i3.GanttUpper, decorators: [{
|
|
180
201
|
type: Inject,
|
|
181
202
|
args: [GANTT_UPPER_TOKEN]
|
|
182
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.GanttDragContainer }]; }, propDecorators: {
|
|
203
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.GanttDragContainer }]; }, propDecorators: { groups: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], items: [{
|
|
183
206
|
type: Input
|
|
184
207
|
}], lineClick: [{
|
|
185
208
|
type: Output
|
|
@@ -187,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
187
210
|
type: HostBinding,
|
|
188
211
|
args: ['class.gantt-links-overlay']
|
|
189
212
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNakQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRWxFLElBQUssVUFJSjtBQUpELFdBQUssVUFBVTtJQUNYLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0lBQ25CLGdDQUFrQixDQUFBO0FBQ3RCLENBQUMsRUFKSSxVQUFVLEtBQVYsVUFBVSxRQUlkO0FBdUJELE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBQ3NDLFVBQXNCLEVBQ2hELEdBQXNCLEVBQ3RCLFVBQXNCLEVBQ3RCLGtCQUFzQztRQUhaLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDaEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBcEJ6QyxhQUFRLEdBQStDLEVBQUUsQ0FBQztRQUV6RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFdkQsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFvQixF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bEM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7O2dIQTNMUSxtQkFBbUIsa0JBa0JoQixpQkFBaUI7b0dBbEJwQixtQkFBbUIsd09DakRoQyw0dEJBbUJBOzJGRDhCYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLHdCQUF3QjtpQkFDeEM7OzBCQW1CUSxNQUFNOzJCQUFDLGlCQUFpQjtzSUFqQnBCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFZbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRHcm91cEludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvZ3JvdXAnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0SXRlbSB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgR2FudHREYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZSc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcblxuZW51bSBMaW5rQ29sb3JzIHtcbiAgICBkZWZhdWx0ID0gJyNjYWNhY2EnLFxuICAgIGJsb2NrZWQgPSAnI0ZGNzU3NScsXG4gICAgYWN0aXZlID0gJyMzNDhGRTQnXG59XG5cbmludGVyZmFjZSBHYW50dExpbmtJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGJlZm9yZTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIGFmdGVyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gICAgc3RhcnQ6IEdhbnR0RGF0ZTtcbiAgICBlbmQ6IEdhbnR0RGF0ZTtcbiAgICBvcmlnaW46IEdhbnR0SXRlbTtcbiAgICBsaW5rczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBMaW5rSW50ZXJuYWwge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBzb3VyY2U6IEdhbnR0SXRlbTtcbiAgICB0YXJnZXQ6IEdhbnR0SXRlbTtcbiAgICBjb2xvcjogTGlua0NvbG9ycztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1saW5rcy1vdmVybGF5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlua3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TGlua3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBmbGF0RGF0YTogKEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKVtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgcHVibGljIGxpbmtzOiBMaW5rSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBsaW5rSXRlbXM6IEdhbnR0TGlua0l0ZW1bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBiZXppZXJXZWlnaHQgPSAtMC41O1xuXG4gICAgcHJpdmF0ZSBmaXJzdENoYW5nZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWxpbmtzLW92ZXJsYXknKSBnYW50dExpbmtzT3ZlcmxheSA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGdhbnR0RHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIHRoaXMuZ2FudHREcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5leHBhbmRDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZHJhZ0VuZGVkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmxpbmtEcmFnRW5kZWRcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJdGVtUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuYmFySGVpZ2h0O1xuICAgICAgICB0aGlzLmxpbmtJdGVtcyA9IFtdO1xuXG4gICAgICAgIHRoaXMuZmxhdERhdGEuZm9yRWFjaCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnYW50dEl0ZW0gPSBpdGVtIGFzIEdhbnR0SXRlbUludGVybmFsO1xuICAgICAgICAgICAgICAgIGlmIChnYW50dEl0ZW0ucmVmcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gaXRlbUluZGV4ICogbGluZUhlaWdodCArIGdhbnR0SXRlbS5yZWZzLnkgKyBiYXJIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdhbnR0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGdhbnR0SXRlbS5yZWZzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZ2FudHRJdGVtLnJlZnMueCArIGdhbnR0SXRlbS5yZWZzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSkge1xuICAgICAgICBpZiAoc291cmNlLmJlZm9yZSAmJiBzb3VyY2UuYWZ0ZXIgJiYgdGFyZ2V0LmJlZm9yZSAmJiB0YXJnZXQuYWZ0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgICAgICBjb25zdCB5MSA9IHNvdXJjZS5hZnRlci55O1xuXG4gICAgICAgICAgICBjb25zdCB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuXG4gICAgICAgICAgICBjb25zdCBkeCA9IE1hdGguYWJzKHg0IC0geDEpICogdGhpcy5iZXppZXJXZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB4MiA9IHgxIC0gZHg7XG4gICAgICAgICAgICBjb25zdCB4MyA9IHg0ICsgZHg7XG5cbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4NCkgLyAyO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHk0KSAvIDI7XG5cbiAgICAgICAgICAgIGxldCBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sWSA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCAvIDI7XG5cbiAgICAgICAgICAgIGlmICh4MSA+PSB4NCkge1xuICAgICAgICAgICAgICAgIGlmICh5NCA+IHkxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh5NCAtIHkxKSA8PSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSArIGNvbnRyb2xYfSAke3gxfSAke3kxICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDF9ICR7eTEgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgLSBjb250cm9sWH0gJHt4NH0gJHt5NCAtIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0IC0gY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSArIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHt4MX0gJHt5MSAtIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxIC0gY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0ICsgY29udHJvbFh9ICR7eDR9ICR7eTQgKyBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCArIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX0gQyAke3gyfSAke3kxfSAke3gzfSAke3k0fSAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZExpbmtzKCkge1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5saW5rcyA9IFtdO1xuICAgICAgICB0aGlzLmxpbmtJdGVtcy5mb3JFYWNoKChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3VyY2Uub3JpZ2luLnN0YXJ0IHx8IHNvdXJjZS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLmxpbmtzLmZvckVhY2goKGxpbmtJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmxpbmtJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBsaW5rSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmICh0YXJnZXQub3JpZ2luLnN0YXJ0IHx8IHRhcmdldC5vcmlnaW4uZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdlbmVyYXRlUGF0aChzb3VyY2UsIHRhcmdldCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBzb3VyY2Uub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0Lm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc291cmNlLmVuZC5nZXRUaW1lKCkgPiB0YXJnZXQuc3RhcnQuZ2V0VGltZSgpID8gTGlua0NvbG9ycy5ibG9ja2VkIDogTGlua0NvbG9ycy5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG9uTGluZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5saW5lQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHNvdXJjZTogbGluay5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQ6IGxpbmsudGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1vdXNlRW50ZXJQYXRoKGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICBpZiAobGluay5jb2xvciA9PT0gTGlua0NvbG9ycy5kZWZhdWx0KSB7XG4gICAgICAgICAgICBsaW5rLmNvbG9yID0gTGlua0NvbG9ycy5hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgaWYgKGxpbmsuY29sb3IgPT09IExpbmtDb2xvcnMuYWN0aXZlKSB7XG4gICAgICAgICAgICBsaW5rLmNvbG9yID0gTGlua0NvbG9ycy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8c3ZnIFthdHRyLndpZHRoXT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiIGNsYXNzPVwiZ2FudHQtbGlua3Mtb3ZlcmxheS1tYWluXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxpbmsgb2YgbGlua3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8cGF0aCBbYXR0ci5kXT1cImxpbmsucGF0aFwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiIHN0cm9rZS13aWR0aD1cIjJcIiBbYXR0ci5zdHJva2VdPVwibGluay5jb2xvclwiIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGNsYXNzPVwibGluay1saW5lXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTGluZUNsaWNrKCRldmVudCwgbGluaylcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyUGF0aChsaW5rKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmVQYXRoKGxpbmspXCJcbiAgICAgICAgW2F0dHIuZF09XCJsaW5rLnBhdGhcIlxuICAgICAgICBzdHJva2U9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjlcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIGN1cnNvcj1cInBvaW50ZXJcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L2c+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bGluZSBjbGFzcz1cImxpbmstZHJhZ2dpbmctbGluZVwiPjwvbGluZT5cbjwvc3ZnPlxuIl19
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUVsRSxJQUFLLFVBSUo7QUFKRCxXQUFLLFVBQVU7SUFDWCxpQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBa0IsQ0FBQTtBQUN0QixDQUFDLEVBSkksVUFBVSxLQUFWLFVBQVUsUUFJZDtBQXVCRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI1QixZQUNzQyxVQUFzQixFQUNoRCxHQUFzQixFQUN0QixVQUFzQixFQUN0QixrQkFBc0M7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCekMsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFFbEMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFL0IsY0FBUyxH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Q0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7O2dIQW5OUSxtQkFBbUIsa0JBb0JoQixpQkFBaUI7b0dBcEJwQixtQkFBbUIsb1BDbERoQyw0dEJBbUJBOzJGRCtCYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLHdCQUF3QjtpQkFDeEM7OzBCQXFCUSxNQUFNOzJCQUFDLGlCQUFpQjtzSUFuQnBCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFZbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRHcm91cEludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvZ3JvdXAnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0SXRlbSB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgcmVjdXJzaXZlSXRlbXMgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5cbmVudW0gTGlua0NvbG9ycyB7XG4gICAgZGVmYXVsdCA9ICcjY2FjYWNhJyxcbiAgICBibG9ja2VkID0gJyNGRjc1NzUnLFxuICAgIGFjdGl2ZSA9ICcjMzQ4RkU0J1xufVxuXG5pbnRlcmZhY2UgR2FudHRMaW5rSXRlbSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBiZWZvcmU6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgICBhZnRlcjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIHN0YXJ0OiBHYW50dERhdGU7XG4gICAgZW5kOiBHYW50dERhdGU7XG4gICAgb3JpZ2luOiBHYW50dEl0ZW07XG4gICAgbGlua3M6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgTGlua0ludGVybmFsIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgc291cmNlOiBHYW50dEl0ZW07XG4gICAgdGFyZ2V0OiBHYW50dEl0ZW07XG4gICAgY29sb3I6IExpbmtDb2xvcnM7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtbGlua3Mtb3ZlcmxheScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpbmtzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dExpbmtzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgaXRlbXM6IEdhbnR0SXRlbUludGVybmFsW10gPSBbXTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgbGlua3M6IExpbmtJbnRlcm5hbFtdID0gW107XG5cbiAgICBwcml2YXRlIGxpbmtJdGVtczogR2FudHRMaW5rSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIGJlemllcldlaWdodCA9IC0wLjU7XG5cbiAgICBwcml2YXRlIGZpcnN0Q2hhbmdlID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtbGlua3Mtb3ZlcmxheScpIGdhbnR0TGlua3NPdmVybGF5ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZ2FudHREcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXJcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmdhbnR0RHJhZ0NvbnRhaW5lci5kcmFnU3RhcnRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZXhwYW5kQ2hhbmdlLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLnZpZXcuc3RhcnQkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmRyYWdFbmRlZCxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5saW5rRHJhZ0VuZGVkXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCksIHNraXAoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRMaW5rcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlSXRlbVBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0O1xuICAgICAgICBjb25zdCBiYXJIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmJhckhlaWdodDtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBpdGVtTnVtID0gMDtcbiAgICAgICAgICAgIGxldCBncm91cE51bSA9IDA7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwTnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVjdXJzaXZlSXRlbXMoZ3JvdXAuaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSAoZ3JvdXBOdW0gKyBpdGVtTnVtICsgaXRlbUluZGV4KSAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OdW0gKz0gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBpdGVtSW5kZXggKiBsaW5lSGVpZ2h0ICsgaXRlbS5yZWZzLnkgKyBiYXJIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBiZWZvcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLnggKyBpdGVtLnJlZnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgaWYgKHNvdXJjZS5iZWZvcmUgJiYgc291cmNlLmFmdGVyICYmIHRhcmdldC5iZWZvcmUgJiYgdGFyZ2V0LmFmdGVyKSB7XG4gICAgICAgICAgICBjb25zdCB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgY29uc3QgeTEgPSBzb3VyY2UuYWZ0ZXIueTtcblxuICAgICAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgICAgICBjb25zdCB5NCA9IHRhcmdldC5iZWZvcmUueTtcblxuICAgICAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyh4NCAtIHgxKSAqIHRoaXMuYmV6aWVyV2VpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeDIgPSB4MSAtIGR4O1xuICAgICAgICAgICAgY29uc3QgeDMgPSB4NCArIGR4O1xuXG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDQpIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5NCkgLyAyO1xuXG4gICAgICAgICAgICBsZXQgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgY29udHJvbFkgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICBpZiAoeDEgPj0geDQpIHtcbiAgICAgICAgICAgICAgICBpZiAoeTQgPiB5MSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHt4MX0gJHt5MSArIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxICsgY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7eDR9ICR7eTQgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHk0IC0geTEpIDw9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDEgKyBjb250cm9sWH0gJHt5MX0gJHt4MSArIGNvbnRyb2xYfSAke3kxIC0gY29udHJvbFh9ICR7eDF9ICR7eTEgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5MSAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke3g0fSAke3k0ICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTQgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG4gICAgICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRMaW5rcygpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMubGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLm9yaWdpbi5zdGFydCB8fCBzb3VyY2Uub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5saW5rcy5mb3JFYWNoKChsaW5rSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5saW5rSXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gbGlua0lkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCAmJiAodGFyZ2V0Lm9yaWdpbi5zdGFydCB8fCB0YXJnZXQub3JpZ2luLmVuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZW5lcmF0ZVBhdGgoc291cmNlLCB0YXJnZXQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNvdXJjZS5lbmQuZ2V0VGltZSgpID4gdGFyZ2V0LnN0YXJ0LmdldFRpbWUoKSA/IExpbmtDb2xvcnMuYmxvY2tlZCA6IExpbmtDb2xvcnMuZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBvbkxpbmVDbGljayhldmVudDogTW91c2VFdmVudCwgbGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIHRoaXMubGluZUNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBzb3VyY2U6IGxpbmsuc291cmNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBsaW5rLnRhcmdldFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBtb3VzZUVudGVyUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgaWYgKGxpbmsuY29sb3IgPT09IExpbmtDb2xvcnMuZGVmYXVsdCkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuYWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZVBhdGgobGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIGlmIChsaW5rLmNvbG9yID09PSBMaW5rQ29sb3JzLmFjdGl2ZSkge1xuICAgICAgICAgICAgbGluay5jb2xvciA9IExpbmtDb2xvcnMuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPHN2ZyBbYXR0ci53aWR0aF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIiBjbGFzcz1cImdhbnR0LWxpbmtzLW92ZXJsYXktbWFpblwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgPHBhdGggW2F0dHIuZF09XCJsaW5rLnBhdGhcIiBmaWxsPVwidHJhbnNwYXJlbnRcIiBzdHJva2Utd2lkdGg9XCIyXCIgW2F0dHIuc3Ryb2tlXT1cImxpbmsuY29sb3JcIiBwb2ludGVyLWV2ZW50cz1cIm5vbmVcIj48L3BhdGg+XG4gICAgPGc+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cImxpbmstbGluZVwiXG4gICAgICAgIChjbGljayk9XCJvbkxpbmVDbGljaygkZXZlbnQsIGxpbmspXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlclBhdGgobGluaylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlUGF0aChsaW5rKVwiXG4gICAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgICAgc3Ryb2tlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCI5XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICBjdXJzb3I9XCJwb2ludGVyXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9nPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpbmUgY2xhc3M9XCJsaW5rLWRyYWdnaW5nLWxpbmVcIj48L2xpbmU+XG48L3N2Zz5cbiJdfQ==
|
|
@@ -15,12 +15,12 @@ export class GanttMainComponent {
|
|
|
15
15
|
this.ganttMainClass = true;
|
|
16
16
|
}
|
|
17
17
|
ngOnInit() { }
|
|
18
|
-
trackBy(
|
|
18
|
+
trackBy(index, item) {
|
|
19
19
|
return item.id || index;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttMainComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttMainComponent, selector: "gantt-main", inputs: {
|
|
23
|
+
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttMainComponent, selector: "gantt-main", inputs: { groups: "groups", items: "items", groupHeaderTemplate: "groupHeaderTemplate", itemTemplate: "itemTemplate", barTemplate: "barTemplate", rangeTemplate: "rangeTemplate" }, outputs: { barClick: "barClick", lineClick: "lineClick" }, host: { properties: { "class.gantt-main-container": "this.ganttMainClass" } }, ngImport: i0, template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items;\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n </ng-container>\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", components: [{ type: i1.GanttLinksComponent, selector: "gantt-links-overlay", inputs: ["groups", "items"], outputs: ["lineClick"] }, { type: i2.NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range" }, { type: i3.NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: ["barClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "isGanttCustomItem": i5.IsGanttCustomItemPipe, "isGanttRangeItem": i5.IsGanttRangeItemPipe, "isGanttBarItem": i5.IsGanttBarItemPipe } });
|
|
24
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttMainComponent, decorators: [{
|
|
25
25
|
type: Component,
|
|
26
26
|
args: [{
|
|
@@ -30,9 +30,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
30
30
|
}], ctorParameters: function () { return [{ type: i6.GanttUpper, decorators: [{
|
|
31
31
|
type: Inject,
|
|
32
32
|
args: [GANTT_UPPER_TOKEN]
|
|
33
|
-
}] }]; }, propDecorators: {
|
|
33
|
+
}] }]; }, propDecorators: { groups: [{
|
|
34
34
|
type: Input
|
|
35
|
-
}],
|
|
35
|
+
}], items: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}], groupHeaderTemplate: [{
|
|
38
38
|
type: Input
|
|
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
50
50
|
type: HostBinding,
|
|
51
51
|
args: ['class.gantt-main-container']
|
|
52
52
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFPLGtCQUFrQjtJQW1CM0IsWUFBOEMsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQU4xRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFbEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRW5CLG1CQUFjLEdBQUcsSUFBSSxDQUFDO0lBRU0sQ0FBQztJQUV4RSxRQUFRLEtBQUksQ0FBQztJQUViLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDOzsrR0F6QlEsa0JBQWtCLGtCQW1CUCxpQkFBaUI7bUdBbkI1QixrQkFBa0IsZ1hDVi9CLDQrREF1Q0E7MkZEN0JhLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsV0FBVyxFQUFFLDZCQUE2QjtpQkFDN0M7OzBCQW9CZ0IsTUFBTTsyQkFBQyxpQkFBaUI7NENBbEI1QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRW9DLGNBQWM7c0JBQXhELFdBQVc7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdhbnR0R3JvdXBJbnRlcm5hbCwgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0QmFyQ2xpY2tFdmVudCwgR2FudHRMaW5lQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LW1haW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dE1haW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGdyb3VwczogR2FudHRHcm91cEludGVybmFsW107XG5cbiAgICBASW5wdXQoKSBpdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXTtcblxuICAgIEBJbnB1dCgpIGdyb3VwSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHJhbmdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LW1haW4tY29udGFpbmVyJykgZ2FudHRNYWluQ2xhc3MgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cbn1cbiIsIjxnYW50dC1saW5rcy1vdmVybGF5IFtncm91cHNdPVwiZ3JvdXBzXCIgW2l0ZW1zXT1cIml0ZW1zXCIgKGxpbmVDbGljayk9XCJsaW5lQ2xpY2suZW1pdCgkZXZlbnQpXCI+PC9nYW50dC1saW5rcy1vdmVybGF5PlxuPCEtLSBncm91cHMgLS0+XG48ZGl2IGNsYXNzPVwiZ2FudHQtbWFpbi1ncm91cHNcIiAqbmdJZj1cImdyb3VwcyAmJiBncm91cHMubGVuZ3RoID4gMDsgZWxzZSBpdGVtc1RlbXBsYXRlXCIgW3N0eWxlLndpZHRoLnB4XT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtZ3JvdXBcIiBbbmdDbGFzc109XCJncm91cC5jbGFzc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSGVhZGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBncm91cDogZ3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImdyb3VwLmV4cGFuZGVkXCIgY2xhc3M9XCJnYW50dC1pdGVtc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtczogZ3JvdXAuaXRlbXMgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIGl0ZW1zIC0tPlxuPG5nLXRlbXBsYXRlICNpdGVtc1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtbWFpbi1pdGVtc1wiIFtzdHlsZS53aWR0aC5weF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW1zOiBpdGVtcyB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2dhbnR0SXRlbXMgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcztcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdhbnR0LWl0ZW1cIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJnYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5nYW50dC1tYWluLWl0ZW0tYWN0aXZlXT1cImdhbnR0VXBwZXIuaXNTZWxlY3RlZChpdGVtLmlkKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSB8IGlzR2FudHRDdXN0b21JdGVtXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLm9yaWdpbiwgcmVmczogaXRlbS5yZWZzIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8Z2FudHQtcmFuZ2UgKm5nSWY9XCJpdGVtLnR5cGUgfCBpc0dhbnR0UmFuZ2VJdGVtXCIgW3RlbXBsYXRlXT1cInJhbmdlVGVtcGxhdGVcIiBbaXRlbV09XCJpdGVtXCI+PC9nYW50dC1yYW5nZT5cbiAgICAgIDxnYW50dC1iYXIgKm5nSWY9XCJpdGVtLnR5cGUgfCBpc0dhbnR0QmFySXRlbVwiIFtpdGVtXT1cIml0ZW1cIiBbdGVtcGxhdGVdPVwiYmFyVGVtcGxhdGVcIiAoYmFyQ2xpY2spPVwiYmFyQ2xpY2suZW1pdCgkZXZlbnQpXCI+PC9nYW50dC1iYXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cIml0ZW0uY2hpbGRyZW4gJiYgaXRlbS5leHBhbmRlZFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnYW50dEl0ZW1zXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW1zOiBpdGVtLmNoaWxkcmVuIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Component, HostBinding, Input, ViewChild, Inject, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
3
|
+
import { GANTT_ABSTRACT_TOKEN } from '../../gantt-abstract';
|
|
4
|
+
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../icon/icon.component";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/cdk/drag-drop";
|
|
9
|
+
import * as i4 from "../../gantt.pipe";
|
|
10
|
+
import * as i5 from "../../gantt-upper";
|
|
11
|
+
export const defaultColumnWidth = 100;
|
|
12
|
+
export const minColumnWidth = 80;
|
|
13
|
+
export class GanttTableComponent {
|
|
14
|
+
constructor(gantt, ganttUpper, elementRef) {
|
|
15
|
+
this.gantt = gantt;
|
|
16
|
+
this.ganttUpper = ganttUpper;
|
|
17
|
+
this.elementRef = elementRef;
|
|
18
|
+
this.itemClick = new EventEmitter();
|
|
19
|
+
this.ganttTableClass = true;
|
|
20
|
+
this.ganttTableEmptyClass = false;
|
|
21
|
+
}
|
|
22
|
+
set columns(columns) {
|
|
23
|
+
columns.forEach((column) => {
|
|
24
|
+
if (!column.columnWidth) {
|
|
25
|
+
column.columnWidth = coerceCssPixelValue(defaultColumnWidth);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
this.columnList = columns;
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() { }
|
|
31
|
+
ngOnChanges(changes) {
|
|
32
|
+
var _a, _b;
|
|
33
|
+
if (!((_a = changes.groups.currentValue) === null || _a === void 0 ? void 0 : _a.length) && !((_b = changes.items.currentValue) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
34
|
+
this.ganttTableEmptyClass = true;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.ganttTableEmptyClass = false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
dragFixed(config) {
|
|
41
|
+
if (config.movedWidth < config.minWidth) {
|
|
42
|
+
config.target.style.transform = `translate3d(${config.minWidth - config.originWidth}px, 0, 0)`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
expandGroup(group) {
|
|
46
|
+
this.gantt.expandGroup(group);
|
|
47
|
+
}
|
|
48
|
+
expandChildren(event, item) {
|
|
49
|
+
event.stopPropagation();
|
|
50
|
+
this.gantt.expandChildren(item);
|
|
51
|
+
}
|
|
52
|
+
dragStarted(event) {
|
|
53
|
+
const target = event.source.element.nativeElement;
|
|
54
|
+
this.dragStartLeft = target.getBoundingClientRect().left;
|
|
55
|
+
}
|
|
56
|
+
dragMoved(event, column) {
|
|
57
|
+
const target = event.source.element.nativeElement;
|
|
58
|
+
const left = target.getBoundingClientRect().left;
|
|
59
|
+
let originWidth;
|
|
60
|
+
let movedWidth;
|
|
61
|
+
let minWidth;
|
|
62
|
+
if (column) {
|
|
63
|
+
originWidth = parseInt(column.columnWidth, 10);
|
|
64
|
+
movedWidth = originWidth + (left - this.dragStartLeft);
|
|
65
|
+
minWidth = minColumnWidth;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
originWidth = this.elementRef.nativeElement.getBoundingClientRect().width;
|
|
69
|
+
movedWidth = originWidth + (left - this.dragStartLeft);
|
|
70
|
+
minWidth = minColumnWidth * this.columnList.length;
|
|
71
|
+
}
|
|
72
|
+
this.dragFixed({
|
|
73
|
+
target,
|
|
74
|
+
originWidth,
|
|
75
|
+
movedWidth,
|
|
76
|
+
minWidth
|
|
77
|
+
});
|
|
78
|
+
this.showAuxiliaryLine(event);
|
|
79
|
+
}
|
|
80
|
+
columnDragEnded(event, column) {
|
|
81
|
+
const target = event.source.element.nativeElement;
|
|
82
|
+
const left = target.getBoundingClientRect().left;
|
|
83
|
+
const width = parseInt(column.columnWidth, 10) + (left - this.dragStartLeft);
|
|
84
|
+
const columnWidth = Math.max(width || 0, minColumnWidth);
|
|
85
|
+
column.columnWidth = coerceCssPixelValue(columnWidth);
|
|
86
|
+
if (this.gantt.table) {
|
|
87
|
+
this.gantt.table.columnChanges.emit({ columns: this.columnList });
|
|
88
|
+
}
|
|
89
|
+
this.hideAuxiliaryLine();
|
|
90
|
+
event.source.reset();
|
|
91
|
+
}
|
|
92
|
+
tableDragEnded(event) {
|
|
93
|
+
const target = event.source.element.nativeElement;
|
|
94
|
+
const left = target.getBoundingClientRect().left;
|
|
95
|
+
const tableWidth = this.elementRef.nativeElement.getBoundingClientRect().width;
|
|
96
|
+
const dragWidth = left - this.dragStartLeft;
|
|
97
|
+
this.columnList.forEach((column) => {
|
|
98
|
+
const lastColumnWidth = parseInt(column.columnWidth, 10);
|
|
99
|
+
const distributeWidth = parseInt(String(dragWidth * (lastColumnWidth / tableWidth)), 10);
|
|
100
|
+
const columnWidth = Math.max(lastColumnWidth + distributeWidth || 0, minColumnWidth);
|
|
101
|
+
column.columnWidth = coerceCssPixelValue(columnWidth);
|
|
102
|
+
});
|
|
103
|
+
if (this.gantt.table) {
|
|
104
|
+
this.gantt.table.columnChanges.emit({ columns: this.columnList });
|
|
105
|
+
}
|
|
106
|
+
this.hideAuxiliaryLine();
|
|
107
|
+
event.source.reset();
|
|
108
|
+
}
|
|
109
|
+
showAuxiliaryLine(event) {
|
|
110
|
+
const tableRect = this.elementRef.nativeElement.getBoundingClientRect();
|
|
111
|
+
const targetRect = event.source.element.nativeElement.getBoundingClientRect();
|
|
112
|
+
const distance = { x: targetRect.left - tableRect.left, y: targetRect.top - tableRect.top };
|
|
113
|
+
this.draglineElementRef.nativeElement.style.left = `${distance.x}px`;
|
|
114
|
+
this.draglineElementRef.nativeElement.style.display = 'block';
|
|
115
|
+
}
|
|
116
|
+
hideAuxiliaryLine() {
|
|
117
|
+
this.draglineElementRef.nativeElement.style.display = 'none';
|
|
118
|
+
}
|
|
119
|
+
trackBy(index, item) {
|
|
120
|
+
return item.id || index;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
GanttTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttTableComponent, deps: [{ token: GANTT_ABSTRACT_TOKEN }, { token: GANTT_UPPER_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
+
GanttTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttTableComponent, selector: "gantt-table", inputs: { groups: "groups", items: "items", columns: "columns", groupTemplate: "groupTemplate", emptyTemplate: "emptyTemplate", rowBeforeTemplate: "rowBeforeTemplate", rowAfterTemplate: "rowAfterTemplate" }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.gantt-table": "this.ganttTableClass", "class.gantt-table-empty": "this.ganttTableEmptyClass" } }, viewQueries: [{ propertyName: "draglineElementRef", first: true, predicate: ["dragLine"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">\u6CA1\u6709\u6570\u636E</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", components: [{ type: i1.GanttIconComponent, selector: "gantt-icon", inputs: ["iconName"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "isGanttRangeItem": i4.IsGanttRangeItemPipe } });
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttTableComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{
|
|
128
|
+
selector: 'gantt-table',
|
|
129
|
+
templateUrl: './gantt-table.component.html'
|
|
130
|
+
}]
|
|
131
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
132
|
+
type: Inject,
|
|
133
|
+
args: [GANTT_ABSTRACT_TOKEN]
|
|
134
|
+
}] }, { type: i5.GanttUpper, decorators: [{
|
|
135
|
+
type: Inject,
|
|
136
|
+
args: [GANTT_UPPER_TOKEN]
|
|
137
|
+
}] }, { type: i0.ElementRef }]; }, propDecorators: { groups: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], items: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], columns: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], groupTemplate: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], emptyTemplate: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], rowBeforeTemplate: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], rowAfterTemplate: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], itemClick: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], draglineElementRef: [{
|
|
154
|
+
type: ViewChild,
|
|
155
|
+
args: ['dragLine', { static: true }]
|
|
156
|
+
}], ganttTableClass: [{
|
|
157
|
+
type: HostBinding,
|
|
158
|
+
args: ['class.gantt-table']
|
|
159
|
+
}], ganttTableEmptyClass: [{
|
|
160
|
+
type: HostBinding,
|
|
161
|
+
args: ['class.gantt-table-empty']
|
|
162
|
+
}] } });
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvdGFibGUvZ2FudHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBR1gsS0FBSyxFQUVMLFNBQVMsRUFJVCxNQUFNLEVBQ04sTUFBTSxFQUNOLFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQTBCLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFFbEUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFZakMsTUFBTSxPQUFPLG1CQUFtQjtJQW1DNUIsWUFDeUMsS0FBNkIsRUFDaEMsVUFBc0IsRUFDaEQsVUFBc0I7UUFGTyxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQVk7UUFYeEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBSTNCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sRSxDQUFDO0lBOUJKLElBQ0ksT0FBTyxDQUFDLE9BQWdEO1FBQ3hELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFB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Q0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDakUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDOztnSEFsSlEsbUJBQW1CLGtCQW9DaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQjtvR0FyQ3BCLG1CQUFtQiwwakJDcENoQyw4NUpBbUhBOzJGRC9FYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzlDOzswQkFxQ1EsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLGlCQUFpQjtxRUFoQ3BCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQVVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWtDLGtCQUFrQjtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVMLGVBQWU7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUVRLG9CQUFvQjtzQkFBM0QsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEluamVjdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0R3JvdXBJbnRlcm5hbCwgR2FudHRTZWxlY3RlZEV2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYmxlL2dhbnR0LWNvbHVtbi5jb21wb25lbnQnO1xuLy8gaW1wb3J0IHsgZGVmYXVsdENvbHVtbldpZHRoLCBtaW5Db2x1bW5XaWR0aCB9IGZyb20gJy4uLy4uL2dhbnR0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZGtEcmFnRW5kLCBDZGtEcmFnTW92ZSwgQ2RrRHJhZ1N0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEdhbnR0QWJzdHJhY3RDb21wb25lbnQsIEdBTlRUX0FCU1RSQUNUX1RPS0VOIH0gZnJvbSAnLi4vLi4vZ2FudHQtYWJzdHJhY3QnO1xuaW1wb3J0IHsgR2FudHRVcHBlciwgR0FOVFRfVVBQRVJfVE9LRU4gfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sdW1uV2lkdGggPSAxMDA7XG5leHBvcnQgY29uc3QgbWluQ29sdW1uV2lkdGggPSA4MDtcblxuaW50ZXJmYWNlIERyYWdGaXhlZENvbmZpZyB7XG4gICAgdGFyZ2V0OiBIVE1MRWxlbWVudDtcbiAgICBvcmlnaW5XaWR0aDogbnVtYmVyO1xuICAgIG1vdmVkV2lkdGg6IG51bWJlcjtcbiAgICBtaW5XaWR0aDogbnVtYmVyO1xufVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LXRhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBjb2x1bW5MaXN0OiBRdWVyeUxpc3Q8Tmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0TGVmdDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZ3JvdXBzOiBHYW50dEdyb3VwSW50ZXJuYWxbXTtcblxuICAgIEBJbnB1dCgpIGl0ZW1zOiBHYW50dEl0ZW1JbnRlcm5hbFtdO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgY29sdW1ucyhjb2x1bW5zOiBRdWVyeUxpc3Q8Tmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudD4pIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGlmICghY29sdW1uLmNvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbHVtbldpZHRoID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZShkZWZhdWx0Q29sdW1uV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2x1bW5MaXN0ID0gY29sdW1ucztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHJvd0JlZm9yZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgcm93QWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0U2VsZWN0ZWRFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RyYWdMaW5lJywgeyBzdGF0aWM6IHRydWUgfSkgZHJhZ2xpbmVFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtdGFibGUnKSBnYW50dFRhYmxlQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC10YWJsZS1lbXB0eScpIGdhbnR0VGFibGVFbXB0eUNsYXNzID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9BQlNUUkFDVF9UT0tFTikgcHVibGljIGdhbnR0OiBHYW50dEFic3RyYWN0Q29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoIWNoYW5nZXMuZ3JvdXBzLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoICYmICFjaGFuZ2VzLml0ZW1zLmN1cnJlbnRWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmdhbnR0VGFibGVFbXB0eUNsYXNzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHRUYWJsZUVtcHR5Q2xhc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZHJhZ0ZpeGVkKGNvbmZpZzogRHJhZ0ZpeGVkQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcubW92ZWRXaWR0aCA8IGNvbmZpZy5taW5XaWR0aCkge1xuICAgICAgICAgICAgY29uZmlnLnRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtjb25maWcubWluV2lkdGggLSBjb25maWcub3JpZ2luV2lkdGh9cHgsIDAsIDApYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cGFuZEdyb3VwKGdyb3VwOiBHYW50dEdyb3VwSW50ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5nYW50dC5leHBhbmRHcm91cChncm91cCk7XG4gICAgfVxuXG4gICAgZXhwYW5kQ2hpbGRyZW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmdhbnR0LmV4cGFuZENoaWxkcmVuKGl0ZW0pO1xuICAgIH1cblxuICAgIGRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuc291cmNlLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRMZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgfVxuXG4gICAgZHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZSwgY29sdW1uPzogTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5zb3VyY2UuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cbiAgICAgICAgbGV0IG9yaWdpbldpZHRoOiBudW1iZXI7XG4gICAgICAgIGxldCBtb3ZlZFdpZHRoOiBudW1iZXI7XG4gICAgICAgIGxldCBtaW5XaWR0aDogbnVtYmVyO1xuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICBvcmlnaW5XaWR0aCA9IHBhcnNlSW50KGNvbHVtbi5jb2x1bW5XaWR0aCwgMTApO1xuICAgICAgICAgICAgbW92ZWRXaWR0aCA9IG9yaWdpbldpZHRoICsgKGxlZnQgLSB0aGlzLmRyYWdTdGFydExlZnQpO1xuICAgICAgICAgICAgbWluV2lkdGggPSBtaW5Db2x1bW5XaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9yaWdpbldpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgICAgICBtb3ZlZFdpZHRoID0gb3JpZ2luV2lkdGggKyAobGVmdCAtIHRoaXMuZHJhZ1N0YXJ0TGVmdCk7XG4gICAgICAgICAgICBtaW5XaWR0aCA9IG1pbkNvbHVtbldpZHRoICogdGhpcy5jb2x1bW5MaXN0Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHJhZ0ZpeGVkKHtcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIG9yaWdpbldpZHRoLFxuICAgICAgICAgICAgbW92ZWRXaWR0aCxcbiAgICAgICAgICAgIG1pbldpZHRoXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2hvd0F1eGlsaWFyeUxpbmUoZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbHVtbkRyYWdFbmRlZChldmVudDogQ2RrRHJhZ0VuZCwgY29sdW1uOiBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKSArIChsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0KTtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSBNYXRoLm1heCh3aWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgIGNvbHVtbi5jb2x1bW5XaWR0aCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoY29sdW1uV2lkdGgpO1xuICAgICAgICBpZiAodGhpcy5nYW50dC50YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5nYW50dC50YWJsZS5jb2x1bW5DaGFuZ2VzLmVtaXQoeyBjb2x1bW5zOiB0aGlzLmNvbHVtbkxpc3QgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGVBdXhpbGlhcnlMaW5lKCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHRhYmxlRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBjb25zdCBkcmFnV2lkdGggPSBsZWZ0IC0gdGhpcy5kcmFnU3RhcnRMZWZ0O1xuICAgICAgICB0aGlzLmNvbHVtbkxpc3QuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29sdW1uV2lkdGggPSBwYXJzZUludChjb2x1bW4uY29sdW1uV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RyaWJ1dGVXaWR0aCA9IHBhcnNlSW50KFN0cmluZyhkcmFnV2lkdGggKiAobGFzdENvbHVtbldpZHRoIC8gdGFibGVXaWR0aCkpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IE1hdGgubWF4KGxhc3RDb2x1bW5XaWR0aCArIGRpc3RyaWJ1dGVXaWR0aCB8fCAwLCBtaW5Db2x1bW5XaWR0aCk7XG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uV2lkdGggPSBjb2VyY2VDc3NQaXhlbFZhbHVlKGNvbHVtbldpZHRoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2FudHQudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FudHQudGFibGUuY29sdW1uQ2hhbmdlcy5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5MaXN0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWRlQXV4aWxpYXJ5TGluZSgpO1xuICAgICAgICBldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBdXhpbGlhcnlMaW5lKGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgICAgICBjb25zdCB0YWJsZVJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IGV2ZW50LnNvdXJjZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0geyB4OiB0YXJnZXRSZWN0LmxlZnQgLSB0YWJsZVJlY3QubGVmdCwgeTogdGFyZ2V0UmVjdC50b3AgLSB0YWJsZVJlY3QudG9wIH07XG4gICAgICAgIHRoaXMuZHJhZ2xpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2Rpc3RhbmNlLnh9cHhgO1xuICAgICAgICB0aGlzLmRyYWdsaW5lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZUF1eGlsaWFyeUxpbmUoKSB7XG4gICAgICAgIHRoaXMuZHJhZ2xpbmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1oZWFkZXIgZ2FudHQtdGFibGUtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1jb2x1bW5cIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbkxpc3Q7IGxldCBpID0gaW5kZXhcIiBbc3R5bGUud2lkdGhdPVwiY29sdW1uLmNvbHVtbldpZHRoXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAge3sgY29sdW1uLm5hbWUgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZ2FudHQtdGFibGUtZHJhZy10cmlnZ2VyXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmdhbnR0XCJcbiAgICAgIChjZGtEcmFnTW92ZWQpPVwiZHJhZ01vdmVkKCRldmVudCwgY29sdW1uKVwiXG4gICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiZHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ0VuZGVkKT1cImNvbHVtbkRyYWdFbmRlZCgkZXZlbnQsIGNvbHVtbilcIlxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1ib2R5XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBzLmxlbmd0aCAmJiAhaXRlbXMubGVuZ3RoXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbXB0eVRlbXBsYXRlXCI+XG4gICAgICA8Z2FudHQtaWNvbiBjbGFzcz1cImVtcHR5LWljb25cIiBpY29uTmFtZT1cImVtcHR5XCI+PC9nYW50dC1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXRleHRcIj7msqHmnInmlbDmja48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCA+IDA7IGVsc2UgaXRlbXNUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXRhYmxlLWdyb3VwXCIgW25nQ2xhc3NdPVwiZ3JvdXAuY2xhc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXRhYmxlLWdyb3VwLXRpdGxlXCIgW2NsYXNzLmV4cGFuZGVkXT1cImdyb3VwLmV4cGFuZGVkXCIgKGNsaWNrKT1cImV4cGFuZEdyb3VwKGdyb3VwKVwiPlxuICAgICAgICAgIDxnYW50dC1pY29uIGNsYXNzPVwiZXhwYW5kLWljb25cIiBbaWNvbk5hbWVdPVwiZ3JvdXAuZXhwYW5kZWQgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCI+PC9nYW50dC1pY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cC5vcmlnaW4sIGdyb3VwOiBncm91cC5vcmlnaW4gfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+e3sgZ3JvdXAudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwLmV4cGFuZGVkXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdyb3VwOiBncm91cCwgaXRlbXM6IGdyb3VwLml0ZW1zLCBsZXZlbDogMCB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdlxuICBjbGFzcz1cImdhbnR0LXRhYmxlLWRyYWctdHJpZ2dlclwiXG4gIGNka0RyYWdcbiAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gIGNka0RyYWdCb3VuZGFyeT1cIi5nYW50dFwiXG4gIChjZGtEcmFnTW92ZWQpPVwiZHJhZ01vdmVkKCRldmVudClcIlxuICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiZHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gIChjZGtEcmFnRW5kZWQpPVwidGFibGVEcmFnRW5kZWQoJGV2ZW50KVwiXG4+PC9kaXY+XG5cbjxkaXYgI2RyYWdMaW5lIGNsYXNzPVwiZ2FudHQtdGFibGUtZHJhZy1hdXhpbGlhcnktbGluZVwiPjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2l0ZW1zVGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJnYW50dEl0ZW1zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW1zLCBsZXZlbDogMCB9XCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZ2FudHRJdGVtcyBsZXQtZ3JvdXA9XCJncm91cFwiIGxldC1pdGVtcz1cIml0ZW1zXCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxkaXZcbiAgICAgIChjbGljayk9XCJpdGVtQ2xpY2suZW1pdCh7IGV2ZW50OiAkZXZlbnQsIHNlbGVjdGVkVmFsdWU6IHRoaXMuaXRlbS5vcmlnaW4gfSlcIlxuICAgICAgY2xhc3M9XCJnYW50dC10YWJsZS1pdGVtIGdhbnR0LXRhYmxlLXJvd1wiXG4gICAgICBbY2xhc3MuZ2FudHQtdGFibGUtaXRlbS1maXJzdC1sZXZlbC1ncm91cF09XCJsZXZlbCA9PT0gMCAmJiAoaXRlbS50eXBlIHwgaXNHYW50dFJhbmdlSXRlbSlcIlxuICAgICAgW2NsYXNzLmdhbnR0LXRhYmxlLWl0ZW0td2l0aC1ncm91cF09XCJncm91cFwiXG4gICAgICBbY2xhc3MuZ2FudHQtdGFibGUtaXRlbS1hY3RpdmVdPVwiZ2FudHRVcHBlci5pc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2FudHQuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgICAgW3N0eWxlLmxpbmVIZWlnaHQucHhdPVwiZ2FudHQuc3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dCZWZvcmVUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5vcmlnaW4sIGl0ZW06IGl0ZW0ub3JpZ2luIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5MaXN0OyBsZXQgZmlyc3QgPSBmaXJzdFwiIFtzdHlsZS53aWR0aF09XCJjb2x1bW4uY29sdW1uV2lkdGhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpcnN0XCIgY2xhc3M9XCJnYW50dC1leHBhbmQtaWNvblwiIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cImxldmVsICogMjBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGV2ZWwgPCBnYW50dC5tYXhMZXZlbCAtIDEgJiYgaXRlbS5leHBhbmRhYmxlXCI+XG4gICAgICAgICAgICA8Z2FudHQtaWNvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLmxvYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cIml0ZW0uZXhwYW5kZWQgPyAnYW5nbGUtZG93bicgOiAnYW5nbGUtcmlnaHQnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZENoaWxkcmVuKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICAgIDxnYW50dC1pY29uICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCIgW2ljb25OYW1lXT1cIidsb2FkaW5nJ1wiPjwvZ2FudHQtaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZS1jb2x1bW4tY29udGVudFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5vcmlnaW4sIGl0ZW06IGl0ZW0ub3JpZ2luIH1cIlxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd0FmdGVyVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0ub3JpZ2luLCBpdGVtOiBpdGVtLm9yaWdpbiB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uZXhwYW5kZWRcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtczogaXRlbS5jaGlsZHJlbiwgbGV2ZWw6IGxldmVsICsgMSwgZ3JvdXA6IGdyb3VwIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -32,7 +32,6 @@ export class GanttDomService {
|
|
|
32
32
|
}
|
|
33
33
|
syncScroll(event) {
|
|
34
34
|
const target = event.currentTarget;
|
|
35
|
-
this.calendarHeader.scrollLeft = this.mainContainer.scrollLeft;
|
|
36
35
|
this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;
|
|
37
36
|
this.sideContainer.scrollTop = target.scrollTop;
|
|
38
37
|
this.mainContainer.scrollTop = target.scrollTop;
|
|
@@ -58,8 +57,7 @@ export class GanttDomService {
|
|
|
58
57
|
this.container = this.root.getElementsByClassName('gantt-container')[0];
|
|
59
58
|
this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];
|
|
60
59
|
this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];
|
|
61
|
-
this.
|
|
62
|
-
this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-grid')[0];
|
|
60
|
+
this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-overlay')[0];
|
|
63
61
|
this.monitorScrollChange();
|
|
64
62
|
this.disableBrowserWheelEvent();
|
|
65
63
|
}
|
|
@@ -89,7 +87,6 @@ export class GanttDomService {
|
|
|
89
87
|
if (isNumber(left)) {
|
|
90
88
|
const scrollLeft = left - this.mainContainer.clientWidth / 2;
|
|
91
89
|
this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;
|
|
92
|
-
this.calendarHeader.scrollLeft = this.mainContainer.scrollLeft;
|
|
93
90
|
this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;
|
|
94
91
|
}
|
|
95
92
|
}
|
|
@@ -103,4 +100,4 @@ GanttDomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
|
|
|
103
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttDomService, decorators: [{
|
|
104
101
|
type: Injectable
|
|
105
102
|
}], ctorParameters: function () { return []; } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZG9tLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtZG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVEsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFFM0IsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN2QixxREFBSSxDQUFBO0lBQ0oscURBQUksQ0FBQTtJQUNKLHVEQUFLLENBQUE7QUFDVCxDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFRRCxNQUFNLE9BQU8sZUFBZTtJQW1CeEI7UUFGUSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFNUIsQ0FBQztJQUVSLG1CQUFtQjtRQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVQLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFB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SSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDL0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs0R0F0SFEsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBhaXJ3aXNlLCBtYXAsIGF1ZGl0VGltZSwgdGFrZVVudGlsLCB0YWtlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vdXRpbHMvaGVscGVycyc7XG5cbmNvbnN0IHNjcm9sbFRocmVzaG9sZCA9IDUwO1xuXG5leHBvcnQgZW51bSBTY3JvbGxEaXJlY3Rpb24ge1xuICAgIE5PTkUsXG4gICAgTEVGVCxcbiAgICBSSUdIVFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcm9sbEV2ZW50IHtcbiAgICB0YXJnZXQ6IEVsZW1lbnQ7XG4gICAgZGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb247XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHYW50dERvbVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByb290OiBFbGVtZW50O1xuXG4gICAgcHVibGljIHNpZGU6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgY29udGFpbmVyOiBFbGVtZW50O1xuXG4gICAgcHVibGljIHNpZGVDb250YWluZXI6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgbWFpbkNvbnRhaW5lcjogRWxlbWVudDtcblxuICAgIHB1YmxpYyBjYWxlbmRhckhlYWRlcjogRWxlbWVudDtcblxuICAgIHB1YmxpYyBjYWxlbmRhck92ZXJsYXk6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgbGlua3NPdmVybGF5OiBFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgcHJpdmF0ZSBtb25pdG9yU2Nyb2xsQ2hhbmdlKCkge1xuICAgICAgICBtZXJnZShmcm9tRXZlbnQodGhpcy5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJyksIGZyb21FdmVudCh0aGlzLnNpZGVDb250YWluZXIsICdzY3JvbGwnKSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1Njcm9sbChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuc2lkZS5jbGFzc0xpc3QuYWRkKCdnYW50dC1zaWRlLWhhcy1zaGFkb3cnKTtcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnNpZGUuY2xhc3NMaXN0LnJlbW92ZSgnZ2FudHQtc2lkZS1oYXMtc2hhZG93Jyk7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmNhbGVuZGFySGVhZGVyLnNjcm9sbExlZnQgPSB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdDtcbiAgICAgICAgdGhpcy5jYWxlbmRhck92ZXJsYXkuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuXG4gICAgICAgIHRoaXMuc2lkZUNvbnRhaW5lci5zY3JvbGxUb3AgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgICAgICB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2FibGVCcm93c2VyV2hlZWxFdmVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluQ29udGFpbmVyIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBmcm9tRXZlbnQoY29udGFpbmVyLCAnd2hlZWwnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBldmVudC5kZWx0YVg7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWx0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lci5zY3JvbGxMZWZ0ICsgY29udGFpbmVyLm9mZnNldFdpZHRoID09PSBjb250YWluZXIuc2Nyb2xsV2lkdGggJiYgZGVsdGEgPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVyLnNjcm9sbExlZnQgPT09IDAgJiYgZGVsdGEgPCAwKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUocm9vdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICAgICAgdGhpcy5yb290ID0gcm9vdC5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLnNpZGUgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtc2lkZScpWzBdO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5zaWRlQ29udGFpbmVyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LXNpZGUtY29udGFpbmVyJylbMF07XG4gICAgICAgIHRoaXMubWFpbkNvbnRhaW5lciA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1tYWluLWNvbnRhaW5lcicpWzBdO1xuICAgICAgICB0aGlzLmNhbGVuZGFySGVhZGVyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLWhlYWRlcicpWzBdO1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3ZlcmxheSA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jYWxlbmRhci1ncmlkJylbMF07XG4gICAgICAgIHRoaXMubW9uaXRvclNjcm9sbENoYW5nZSgpO1xuICAgICAgICB0aGlzLmRpc2FibGVCcm93c2VyV2hlZWxFdmVudCgpO1xuICAgIH1cblxuICAgIGdldFZpZXdlclNjcm9sbCgpIHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudDxFdmVudD4odGhpcy5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJykucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCksXG4gICAgICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICAgICAgbWFwKChbcHJldmlvdXMsIGN1cnJlbnRdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnQ6IFNjcm9sbEV2ZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMubWFpbkNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb24uTk9ORVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgLSBwcmV2aW91cyA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0IDwgc2Nyb2xsVGhyZXNob2xkICYmIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZGlyZWN0aW9uID0gU2Nyb2xsRGlyZWN0aW9uLkxFRlQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgLSBwcmV2aW91cyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxXaWR0aCAtIHRoaXMubWFpbkNvbnRhaW5lci5jbGllbnRXaWR0aCAtIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0IDwgc2Nyb2xsVGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5kaXJlY3Rpb24gPSBTY3JvbGxEaXJlY3Rpb24uUklHSFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRSZXNpemUoKSB7XG4gICAgICAgIHJldHVybiBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShhdWRpdFRpbWUoMTUwKSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsTWFpbkNvbnRhaW5lcihsZWZ0OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGxlZnQpKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gbGVmdCAtIHRoaXMubWFpbkNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDI7XG4gICAgICAgICAgICB0aGlzLm1haW5Db250YWluZXIuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgPiBzY3JvbGxUaHJlc2hvbGQgPyBzY3JvbGxMZWZ0IDogMDtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJIZWFkZXIuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhck92ZXJsYXkuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZG9tLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvZ2FudHQtZG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQVEsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFFM0IsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN2QixxREFBSSxDQUFBO0lBQ0oscURBQUksQ0FBQTtJQUNKLHVEQUFLLENBQUE7QUFDVCxDQUFDLEVBSlcsZUFBZSxLQUFmLGVBQWUsUUFJMUI7QUFRRCxNQUFNLE9BQU8sZUFBZTtJQWlCeEI7UUFGUSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFNUIsQ0FBQztJQUVSLG1CQUFtQjtRQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVQLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFB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bkU7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs0R0FqSFEsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBhaXJ3aXNlLCBtYXAsIGF1ZGl0VGltZSwgdGFrZVVudGlsLCB0YWtlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vdXRpbHMvaGVscGVycyc7XG5cbmNvbnN0IHNjcm9sbFRocmVzaG9sZCA9IDUwO1xuXG5leHBvcnQgZW51bSBTY3JvbGxEaXJlY3Rpb24ge1xuICAgIE5PTkUsXG4gICAgTEVGVCxcbiAgICBSSUdIVFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcm9sbEV2ZW50IHtcbiAgICB0YXJnZXQ6IEVsZW1lbnQ7XG4gICAgZGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb247XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHYW50dERvbVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByb290OiBFbGVtZW50O1xuXG4gICAgcHVibGljIHNpZGU6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgY29udGFpbmVyOiBFbGVtZW50O1xuXG4gICAgcHVibGljIHNpZGVDb250YWluZXI6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgbWFpbkNvbnRhaW5lcjogRWxlbWVudDtcblxuICAgIHB1YmxpYyBjYWxlbmRhck92ZXJsYXk6IEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgbGlua3NPdmVybGF5OiBFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgcHJpdmF0ZSBtb25pdG9yU2Nyb2xsQ2hhbmdlKCkge1xuICAgICAgICBtZXJnZShmcm9tRXZlbnQodGhpcy5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJyksIGZyb21FdmVudCh0aGlzLnNpZGVDb250YWluZXIsICdzY3JvbGwnKSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1Njcm9sbChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQodGhpcy5tYWluQ29udGFpbmVyLCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuc2lkZS5jbGFzc0xpc3QuYWRkKCdnYW50dC1zaWRlLWhhcy1zaGFkb3cnKTtcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnNpZGUuY2xhc3NMaXN0LnJlbW92ZSgnZ2FudHQtc2lkZS1oYXMtc2hhZG93Jyk7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2Nyb2xsKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB0aGlzLmNhbGVuZGFyT3ZlcmxheS5zY3JvbGxMZWZ0ID0gdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQ7XG5cbiAgICAgICAgdGhpcy5zaWRlQ29udGFpbmVyLnNjcm9sbFRvcCA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxUb3AgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZUJyb3dzZXJXaGVlbEV2ZW50KCkge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1haW5Db250YWluZXIgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZyb21FdmVudChjb250YWluZXIsICd3aGVlbCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IGV2ZW50LmRlbHRhWDtcbiAgICAgICAgICAgICAgICBpZiAoIWRlbHRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVyLnNjcm9sbExlZnQgKyBjb250YWluZXIub2Zmc2V0V2lkdGggPT09IGNvbnRhaW5lci5zY3JvbGxXaWR0aCAmJiBkZWx0YSA+IDApIHx8XG4gICAgICAgICAgICAgICAgICAgIChjb250YWluZXIuc2Nyb2xsTGVmdCA9PT0gMCAmJiBkZWx0YSA8IDApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZShyb290OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICB0aGlzLnJvb3QgPSByb290Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc2lkZSA9IHRoaXMucm9vdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1zaWRlJylbMF07XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNvbnRhaW5lcicpWzBdO1xuICAgICAgICB0aGlzLnNpZGVDb250YWluZXIgPSB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtc2lkZS1jb250YWluZXInKVswXTtcbiAgICAgICAgdGhpcy5tYWluQ29udGFpbmVyID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LW1haW4tY29udGFpbmVyJylbMF07XG4gICAgICAgIHRoaXMuY2FsZW5kYXJPdmVybGF5ID0gdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLW92ZXJsYXknKVswXTtcbiAgICAgICAgdGhpcy5tb25pdG9yU2Nyb2xsQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZUJyb3dzZXJXaGVlbEV2ZW50KCk7XG4gICAgfVxuXG4gICAgZ2V0Vmlld2VyU2Nyb2xsKCkge1xuICAgICAgICByZXR1cm4gZnJvbUV2ZW50PEV2ZW50Pih0aGlzLm1haW5Db250YWluZXIsICdzY3JvbGwnKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0KSxcbiAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICBtYXAoKFtwcmV2aW91cywgY3VycmVudF0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudDogU2Nyb2xsRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogdGhpcy5tYWluQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbi5OT05FXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudCAtIHByZXZpb3VzIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgPCBzY3JvbGxUaHJlc2hvbGQgJiYgdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5kaXJlY3Rpb24gPSBTY3JvbGxEaXJlY3Rpb24uTEVGVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudCAtIHByZXZpb3VzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbFdpZHRoIC0gdGhpcy5tYWluQ29udGFpbmVyLmNsaWVudFdpZHRoIC0gdGhpcy5tYWluQ29udGFpbmVyLnNjcm9sbExlZnQgPCBzY3JvbGxUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmRpcmVjdGlvbiA9IFNjcm9sbERpcmVjdGlvbi5SSUdIVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFJlc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKGF1ZGl0VGltZSgxNTApKTtcbiAgICB9XG5cbiAgICBzY3JvbGxNYWluQ29udGFpbmVyKGxlZnQ6IG51bWJlcikge1xuICAgICAgICBpZiAoaXNOdW1iZXIobGVmdCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbExlZnQgPSBsZWZ0IC0gdGhpcy5tYWluQ29udGFpbmVyLmNsaWVudFdpZHRoIC8gMjtcbiAgICAgICAgICAgIHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCA+IHNjcm9sbFRocmVzaG9sZCA/IHNjcm9sbExlZnQgOiAwO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhck92ZXJsYXkuc2Nyb2xsTGVmdCA9IHRoaXMubWFpbkNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=
|