@worktile/gantt 15.2.0 → 16.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/baseline/baseline.component.d.ts +1 -1
- package/components/icon/icon.component.d.ts +1 -1
- package/components/links/links.component.d.ts +1 -1
- package/components/main/gantt-main.component.d.ts +1 -1
- package/components/table/body/gantt-table-body.component.d.ts +1 -1
- package/components/table/header/gantt-table-header.component.d.ts +1 -1
- package/components/toolbar/toolbar.component.d.ts +1 -1
- package/{esm2020 → esm2022}/components/bar/bar-drag.mjs +4 -4
- package/{esm2020 → esm2022}/components/bar/bar.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/baseline/baseline.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/calendar/grid/calendar-grid.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/calendar/header/calendar-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/drag-backdrop/drag-backdrop.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/icon/icon.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/links/links.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/loader/loader.component.mjs +6 -6
- package/{esm2020 → esm2022}/components/main/gantt-main.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/range/range.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/table/body/gantt-table-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/table/header/gantt-table-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/components/toolbar/toolbar.component.mjs +4 -4
- package/{esm2020 → esm2022}/gantt-dom.service.mjs +4 -4
- package/{esm2020 → esm2022}/gantt-drag-container.mjs +4 -4
- package/{esm2020 → esm2022}/gantt-item-upper.mjs +4 -4
- package/{esm2020 → esm2022}/gantt-print.service.mjs +4 -4
- package/{esm2020 → esm2022}/gantt-upper.mjs +4 -4
- package/esm2022/gantt.component.mjs +315 -0
- package/esm2022/gantt.module.mjs +113 -0
- package/{esm2020 → esm2022}/gantt.pipe.mjs +10 -10
- package/{esm2020 → esm2022}/root.component.mjs +4 -4
- package/{esm2020 → esm2022}/table/gantt-column.component.mjs +4 -4
- package/{esm2020 → esm2022}/table/gantt-table.component.mjs +4 -4
- package/{fesm2020 → fesm2022}/worktile-gantt.mjs +128 -128
- package/{fesm2020 → fesm2022}/worktile-gantt.mjs.map +1 -1
- package/gantt-item-upper.d.ts +1 -1
- package/gantt-upper.d.ts +1 -1
- package/gantt.component.d.ts +1 -1
- package/package.json +8 -14
- package/root.component.d.ts +1 -1
- package/table/gantt-column.component.d.ts +1 -1
- package/table/gantt-table.component.d.ts +1 -1
- package/esm2020/gantt.component.mjs +0 -315
- package/esm2020/gantt.module.mjs +0 -113
- package/fesm2015/worktile-gantt.mjs +0 -4241
- package/fesm2015/worktile-gantt.mjs.map +0 -1
- /package/{esm2020 → esm2022}/class/baseline.mjs +0 -0
- /package/{esm2020 → esm2022}/class/date-point.mjs +0 -0
- /package/{esm2020 → esm2022}/class/event.mjs +0 -0
- /package/{esm2020 → esm2022}/class/group.mjs +0 -0
- /package/{esm2020 → esm2022}/class/index.mjs +0 -0
- /package/{esm2020 → esm2022}/class/item.mjs +0 -0
- /package/{esm2020 → esm2022}/class/link.mjs +0 -0
- /package/{esm2020 → esm2022}/class/toolbar.mjs +0 -0
- /package/{esm2020 → esm2022}/class/view-type.mjs +0 -0
- /package/{esm2020 → esm2022}/components/icon/icons.mjs +0 -0
- /package/{esm2020 → esm2022}/components/links/lines/curve.mjs +0 -0
- /package/{esm2020 → esm2022}/components/links/lines/factory.mjs +0 -0
- /package/{esm2020 → esm2022}/components/links/lines/line.mjs +0 -0
- /package/{esm2020 → esm2022}/components/links/lines/straight.mjs +0 -0
- /package/{esm2020 → esm2022}/gantt-abstract.mjs +0 -0
- /package/{esm2020 → esm2022}/gantt.config.mjs +0 -0
- /package/{esm2020 → esm2022}/gantt.styles.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/date.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/drag-scroll.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/helpers.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/passive-listeners.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/set-style-with-vendor-prefix.mjs +0 -0
- /package/{esm2020 → esm2022}/views/day.mjs +0 -0
- /package/{esm2020 → esm2022}/views/factory.mjs +0 -0
- /package/{esm2020 → esm2022}/views/month.mjs +0 -0
- /package/{esm2020 → esm2022}/views/quarter.mjs +0 -0
- /package/{esm2020 → esm2022}/views/view.mjs +0 -0
- /package/{esm2020 → esm2022}/views/week.mjs +0 -0
- /package/{esm2020 → esm2022}/views/year.mjs +0 -0
- /package/{esm2020 → esm2022}/worktile-gantt.mjs +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, ContentChildren, ContentChild, forwardRef, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { takeUntil, take, finalize, skip } from 'rxjs/operators';
|
|
3
|
+
import { from } from 'rxjs';
|
|
4
|
+
import { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';
|
|
5
|
+
import { NgxGanttTableColumnComponent } from './table/gantt-column.component';
|
|
6
|
+
import { NgxGanttTableComponent } from './table/gantt-table.component';
|
|
7
|
+
import { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';
|
|
8
|
+
import { GANTT_GLOBAL_CONFIG } from './gantt.config';
|
|
9
|
+
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
10
|
+
import { keyBy, recursiveItems, uniqBy } from './utils/helpers';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/cdk/scrolling";
|
|
13
|
+
import * as i2 from "@angular/common";
|
|
14
|
+
import * as i3 from "./components/table/header/gantt-table-header.component";
|
|
15
|
+
import * as i4 from "./components/table/body/gantt-table-body.component";
|
|
16
|
+
import * as i5 from "./components/main/gantt-main.component";
|
|
17
|
+
import * as i6 from "./components/calendar/header/calendar-header.component";
|
|
18
|
+
import * as i7 from "./components/calendar/grid/calendar-grid.component";
|
|
19
|
+
import * as i8 from "./components/loader/loader.component";
|
|
20
|
+
import * as i9 from "./components/drag-backdrop/drag-backdrop.component";
|
|
21
|
+
import * as i10 from "./root.component";
|
|
22
|
+
export class NgxGanttComponent extends GanttUpper {
|
|
23
|
+
set loading(loading) {
|
|
24
|
+
if (loading) {
|
|
25
|
+
if (this.loadingDelay > 0) {
|
|
26
|
+
this.loadingTimer = setTimeout(() => {
|
|
27
|
+
this._loading = loading;
|
|
28
|
+
this.cdr.markForCheck();
|
|
29
|
+
}, this.loadingDelay);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this._loading = loading;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
clearTimeout(this.loadingTimer);
|
|
37
|
+
this._loading = loading;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
get loading() {
|
|
41
|
+
return this._loading;
|
|
42
|
+
}
|
|
43
|
+
constructor(elementRef, cdr, ngZone, viewportRuler, config) {
|
|
44
|
+
super(elementRef, cdr, ngZone, config);
|
|
45
|
+
this.viewportRuler = viewportRuler;
|
|
46
|
+
this.maxLevel = 2;
|
|
47
|
+
this.virtualScrollEnabled = true;
|
|
48
|
+
this.loadingDelay = 0;
|
|
49
|
+
this.linkDragStarted = new EventEmitter();
|
|
50
|
+
this.linkDragEnded = new EventEmitter();
|
|
51
|
+
this.lineClick = new EventEmitter();
|
|
52
|
+
this.selectedChange = new EventEmitter();
|
|
53
|
+
this.virtualScrolledIndexChange = new EventEmitter();
|
|
54
|
+
this.flatItems = [];
|
|
55
|
+
this.viewportItems = [];
|
|
56
|
+
this._loading = false;
|
|
57
|
+
this.rangeStart = 0;
|
|
58
|
+
this.rangeEnd = 0;
|
|
59
|
+
this.computeAllRefs = false;
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
62
|
+
super.ngOnInit();
|
|
63
|
+
this.buildFlatItems();
|
|
64
|
+
// Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
|
|
65
|
+
// the `onStable` will never emit any value.
|
|
66
|
+
const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
|
|
67
|
+
// Normally this isn't in the zone, but it can cause performance regressions for apps
|
|
68
|
+
// using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
|
|
69
|
+
this.ngZone.runOutsideAngular(() => {
|
|
70
|
+
onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
71
|
+
this.dragContainer.linkDragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {
|
|
72
|
+
this.linkDragStarted.emit(event);
|
|
73
|
+
});
|
|
74
|
+
this.dragContainer.linkDragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {
|
|
75
|
+
this.linkDragEnded.emit(event);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
80
|
+
this.computeTempDataRefs();
|
|
81
|
+
});
|
|
82
|
+
if (!this.virtualScrollEnabled) {
|
|
83
|
+
this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);
|
|
84
|
+
this.computeTempDataRefs();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
ngOnChanges(changes) {
|
|
88
|
+
super.ngOnChanges(changes);
|
|
89
|
+
if (!this.firstChange) {
|
|
90
|
+
if (changes.viewType && changes.viewType.currentValue) {
|
|
91
|
+
this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);
|
|
92
|
+
this.computeTempDataRefs();
|
|
93
|
+
}
|
|
94
|
+
if (changes.originItems || changes.originGroups) {
|
|
95
|
+
this.buildFlatItems();
|
|
96
|
+
this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);
|
|
97
|
+
this.computeTempDataRefs();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
ngAfterViewInit() {
|
|
102
|
+
if (this.virtualScrollEnabled) {
|
|
103
|
+
this.virtualScroll.renderedRangeStream.pipe(takeUntil(this.unsubscribe$)).subscribe((range) => {
|
|
104
|
+
const linksElement = this.elementRef.nativeElement.querySelector('.gantt-links-overlay');
|
|
105
|
+
linksElement.style.top = `${-(this.styles.lineHeight * range.start)}px`;
|
|
106
|
+
this.rangeStart = range.start;
|
|
107
|
+
this.rangeEnd = range.end;
|
|
108
|
+
this.viewportItems = this.flatItems.slice(range.start, range.end);
|
|
109
|
+
this.computeTempDataRefs();
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
ngAfterViewChecked() {
|
|
114
|
+
if (this.virtualScrollEnabled && this.viewportRuler && this.virtualScroll.getRenderedRange().end > 0) {
|
|
115
|
+
const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
|
|
116
|
+
this.ngZone.runOutsideAngular(() => {
|
|
117
|
+
onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
118
|
+
if (!this.ganttRoot.verticalScrollbarWidth) {
|
|
119
|
+
this.ganttRoot.computeScrollBarOffset();
|
|
120
|
+
this.cdr.markForCheck();
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
buildFlatItems() {
|
|
127
|
+
const virtualData = [];
|
|
128
|
+
if (this.groups.length) {
|
|
129
|
+
this.groups.forEach((group) => {
|
|
130
|
+
virtualData.push(group);
|
|
131
|
+
if (group.expanded) {
|
|
132
|
+
const items = recursiveItems(group.items);
|
|
133
|
+
virtualData.push(...items);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (this.items.length) {
|
|
138
|
+
virtualData.push(...recursiveItems(this.items));
|
|
139
|
+
}
|
|
140
|
+
this.flatItems = [...virtualData];
|
|
141
|
+
this.flatItemsMap = keyBy(this.flatItems, 'id');
|
|
142
|
+
if (!this.virtualScrollEnabled) {
|
|
143
|
+
this.rangeStart = 0;
|
|
144
|
+
this.rangeEnd = this.flatItems.length;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
afterExpand() {
|
|
148
|
+
this.buildFlatItems();
|
|
149
|
+
this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);
|
|
150
|
+
}
|
|
151
|
+
computeTempDataRefs() {
|
|
152
|
+
const tempItemData = [];
|
|
153
|
+
this.viewportItems.forEach((data) => {
|
|
154
|
+
if (!data.hasOwnProperty('items')) {
|
|
155
|
+
const item = data;
|
|
156
|
+
if (item.links) {
|
|
157
|
+
item.links.forEach((link) => {
|
|
158
|
+
if (this.flatItemsMap[link.link]) {
|
|
159
|
+
tempItemData.push(this.flatItemsMap[link.link]);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
tempItemData.push(data);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
this.computeItemsRefs(...uniqBy(tempItemData, 'id'));
|
|
167
|
+
this.flatItems = [...this.flatItems];
|
|
168
|
+
this.viewportItems = [...this.viewportItems];
|
|
169
|
+
}
|
|
170
|
+
expandChildren(item) {
|
|
171
|
+
if (!item.expanded) {
|
|
172
|
+
item.setExpand(true);
|
|
173
|
+
if (this.async && this.childrenResolve && item.children.length === 0) {
|
|
174
|
+
item.loading = true;
|
|
175
|
+
this.childrenResolve(item.origin)
|
|
176
|
+
.pipe(take(1), finalize(() => {
|
|
177
|
+
item.loading = false;
|
|
178
|
+
this.afterExpand();
|
|
179
|
+
this.expandChange.emit(item);
|
|
180
|
+
this.cdr.detectChanges();
|
|
181
|
+
}))
|
|
182
|
+
.subscribe((items) => {
|
|
183
|
+
item.addChildren(items);
|
|
184
|
+
this.computeItemsRefs(...item.children);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.computeItemsRefs(...item.children);
|
|
189
|
+
this.afterExpand();
|
|
190
|
+
this.expandChange.emit(item);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
item.setExpand(false);
|
|
195
|
+
this.afterExpand();
|
|
196
|
+
this.expandChange.emit(item);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
selectItem(selectEvent) {
|
|
200
|
+
if (!this.selectable) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const { event, selectedValue } = selectEvent;
|
|
204
|
+
this.selectionModel.toggle(selectedValue.id);
|
|
205
|
+
const selectedIds = this.selectionModel.selected;
|
|
206
|
+
if (this.multiple) {
|
|
207
|
+
const _selectedValue = this.getGanttItems(selectedIds).map((item) => item.origin);
|
|
208
|
+
this.selectedChange.emit({ event, selectedValue: _selectedValue });
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
const _selectedValue = this.getGanttItem(selectedIds[0])?.origin;
|
|
212
|
+
this.selectedChange.emit({ event, selectedValue: _selectedValue });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
scrollToToday() {
|
|
216
|
+
this.ganttRoot.scrollToToday();
|
|
217
|
+
}
|
|
218
|
+
scrollToDate(date) {
|
|
219
|
+
this.ganttRoot.scrollToDate(date);
|
|
220
|
+
}
|
|
221
|
+
scrolledIndexChange(index) {
|
|
222
|
+
this.virtualScrolledIndexChange.emit({
|
|
223
|
+
index,
|
|
224
|
+
renderedRange: {
|
|
225
|
+
start: this.rangeStart,
|
|
226
|
+
end: this.rangeEnd
|
|
227
|
+
},
|
|
228
|
+
count: this.flatItems.length
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
expandGroups(expanded) {
|
|
232
|
+
this.groups.forEach((group) => {
|
|
233
|
+
group.setExpand(expanded);
|
|
234
|
+
});
|
|
235
|
+
this.afterExpand();
|
|
236
|
+
this.expandChange.next(null);
|
|
237
|
+
this.cdr.detectChanges();
|
|
238
|
+
}
|
|
239
|
+
expandGroup(group) {
|
|
240
|
+
group.setExpand(!group.expanded);
|
|
241
|
+
this.afterExpand();
|
|
242
|
+
this.expandChange.emit();
|
|
243
|
+
this.cdr.detectChanges();
|
|
244
|
+
}
|
|
245
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.ViewportRuler }, { token: GANTT_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
246
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgxGanttComponent, selector: "ngx-gantt", inputs: { maxLevel: "maxLevel", async: "async", childrenResolve: "childrenResolve", linkable: "linkable", loading: "loading", virtualScrollEnabled: "virtualScrollEnabled", loadingDelay: "loadingDelay" }, outputs: { linkDragStarted: "linkDragStarted", linkDragEnded: "linkDragEnded", lineClick: "lineClick", selectedChange: "selectedChange", virtualScrolledIndexChange: "virtualScrolledIndexChange" }, providers: [
|
|
247
|
+
{
|
|
248
|
+
provide: GANTT_UPPER_TOKEN,
|
|
249
|
+
useExisting: NgxGanttComponent
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
provide: GANTT_ABSTRACT_TOKEN,
|
|
253
|
+
useExisting: forwardRef(() => NgxGanttComponent)
|
|
254
|
+
}
|
|
255
|
+
], queries: [{ propertyName: "table", first: true, predicate: NgxGanttTableComponent, descendants: true }, { propertyName: "tableEmptyTemplate", first: true, predicate: ["tableEmpty"], descendants: true, static: true }, { propertyName: "footerTemplate", first: true, predicate: ["footer"], descendants: true, static: true }, { propertyName: "columns", predicate: NgxGanttTableColumnComponent, descendants: true }], viewQueries: [{ propertyName: "ganttRoot", first: true, predicate: ["ganttRoot"], descendants: true }, { propertyName: "virtualScroll", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ngx-gantt-root #ganttRoot>\n <div class=\"gantt-header\">\n <gantt-table-header #tableHeader [columns]=\"columns\"></gantt-table-header>\n <div class=\"gantt-container-header\">\n <gantt-calendar-header [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"></gantt-calendar-header>\n </div>\n </div>\n <gantt-loader *ngIf=\"loading\"></gantt-loader>\n\n <cdk-virtual-scroll-viewport\n class=\"gantt-virtual-scroll-viewport\"\n [ngClass]=\"{\n 'gantt-normal-viewport': !virtualScrollEnabled,\n 'gantt-scroll-container': virtualScrollEnabled,\n 'with-footer': table?.tableFooterTemplate || footerTemplate\n }\"\n [itemSize]=\"styles.lineHeight\"\n [minBufferPx]=\"styles.lineHeight * 10\"\n [maxBufferPx]=\"styles.lineHeight * 20\"\n (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n >\n <ng-container *cdkVirtualFor=\"let item of flatItems; trackBy: trackBy\"></ng-container>\n <div class=\"gantt-side\" [style.width.px]=\"tableHeader.tableWidth + 1\" [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\">\n <div class=\"gantt-table\">\n <gantt-table-body\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"table.tableEmptyTemplate || tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n [draggable]=\"table.draggable\"\n [dropEnterPredicate]=\"table.dropEnterPredicate\"\n (dragDropped)=\"table.dragDropped.emit($event)\"\n (dragStarted)=\"table.dragStarted.emit($event)\"\n (dragEnded)=\"table.dragEnded.emit($event)\"\n (itemClick)=\"selectItem($event)\"\n >\n </gantt-table-body>\n </div>\n </div>\n </div>\n <div class=\"gantt-container\">\n <gantt-calendar-grid\n [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <div class=\"gantt-main\">\n <gantt-main\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <gantt-drag-backdrop [style.left.px]=\"tableHeader.tableWidth + 1\"></gantt-drag-backdrop>\n\n <div\n class=\"gantt-scrollbar\"\n [style.height.px]=\"ganttRoot.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n >\n <div\n [style.width.px]=\"tableHeader.tableWidth\"\n class=\"gantt-table-scrollbar\"\n [class.with-scrollbar]=\"ganttRoot.horizontalScrollbarHeight\"\n ></div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"view.width\"></div>\n </div>\n </div>\n\n <div class=\"gantt-footer\" [style.right.px]=\"ganttRoot.verticalScrollbarWidth\" [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\" *ngIf=\"table?.tableFooterTemplate\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n <div class=\"gantt-container-footer\" *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n </div>\n</ngx-gantt-root>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i3.GanttTableHeaderComponent, selector: "gantt-table-header", inputs: ["columns"] }, { kind: "component", type: i4.GanttTableBodyComponent, selector: "gantt-table-body", inputs: ["viewportItems", "flatItems", "columns", "groupTemplate", "emptyTemplate", "rowBeforeTemplate", "rowAfterTemplate", "draggable", "dropEnterPredicate"], outputs: ["dragDropped", "dragStarted", "dragEnded", "itemClick"] }, { kind: "component", type: i5.GanttMainComponent, selector: "gantt-main", inputs: ["viewportItems", "flatItems", "groupHeaderTemplate", "itemTemplate", "barTemplate", "rangeTemplate"], outputs: ["barClick", "lineClick"] }, { kind: "component", type: i6.GanttCalendarHeaderComponent, selector: "gantt-calendar-header" }, { kind: "component", type: i7.GanttCalendarGridComponent, selector: "gantt-calendar-grid" }, { kind: "component", type: i8.GanttLoaderComponent, selector: "gantt-loader" }, { kind: "component", type: i9.GanttDragBackdropComponent, selector: "gantt-drag-backdrop" }, { kind: "component", type: i10.NgxGanttRootComponent, selector: "ngx-gantt-root", inputs: ["sideWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
256
|
+
}
|
|
257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttComponent, decorators: [{
|
|
258
|
+
type: Component,
|
|
259
|
+
args: [{ selector: 'ngx-gantt', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
260
|
+
{
|
|
261
|
+
provide: GANTT_UPPER_TOKEN,
|
|
262
|
+
useExisting: NgxGanttComponent
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
provide: GANTT_ABSTRACT_TOKEN,
|
|
266
|
+
useExisting: forwardRef(() => NgxGanttComponent)
|
|
267
|
+
}
|
|
268
|
+
], template: "<ngx-gantt-root #ganttRoot>\n <div class=\"gantt-header\">\n <gantt-table-header #tableHeader [columns]=\"columns\"></gantt-table-header>\n <div class=\"gantt-container-header\">\n <gantt-calendar-header [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"></gantt-calendar-header>\n </div>\n </div>\n <gantt-loader *ngIf=\"loading\"></gantt-loader>\n\n <cdk-virtual-scroll-viewport\n class=\"gantt-virtual-scroll-viewport\"\n [ngClass]=\"{\n 'gantt-normal-viewport': !virtualScrollEnabled,\n 'gantt-scroll-container': virtualScrollEnabled,\n 'with-footer': table?.tableFooterTemplate || footerTemplate\n }\"\n [itemSize]=\"styles.lineHeight\"\n [minBufferPx]=\"styles.lineHeight * 10\"\n [maxBufferPx]=\"styles.lineHeight * 20\"\n (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n >\n <ng-container *cdkVirtualFor=\"let item of flatItems; trackBy: trackBy\"></ng-container>\n <div class=\"gantt-side\" [style.width.px]=\"tableHeader.tableWidth + 1\" [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\">\n <div class=\"gantt-table\">\n <gantt-table-body\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"table.tableEmptyTemplate || tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n [draggable]=\"table.draggable\"\n [dropEnterPredicate]=\"table.dropEnterPredicate\"\n (dragDropped)=\"table.dragDropped.emit($event)\"\n (dragStarted)=\"table.dragStarted.emit($event)\"\n (dragEnded)=\"table.dragEnded.emit($event)\"\n (itemClick)=\"selectItem($event)\"\n >\n </gantt-table-body>\n </div>\n </div>\n </div>\n <div class=\"gantt-container\">\n <gantt-calendar-grid\n [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <div class=\"gantt-main\">\n <gantt-main\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <gantt-drag-backdrop [style.left.px]=\"tableHeader.tableWidth + 1\"></gantt-drag-backdrop>\n\n <div\n class=\"gantt-scrollbar\"\n [style.height.px]=\"ganttRoot.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n >\n <div\n [style.width.px]=\"tableHeader.tableWidth\"\n class=\"gantt-table-scrollbar\"\n [class.with-scrollbar]=\"ganttRoot.horizontalScrollbarHeight\"\n ></div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"view.width\"></div>\n </div>\n </div>\n\n <div class=\"gantt-footer\" [style.right.px]=\"ganttRoot.verticalScrollbarWidth\" [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\" *ngIf=\"table?.tableFooterTemplate\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n <div class=\"gantt-container-footer\" *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n </div>\n</ngx-gantt-root>\n" }]
|
|
269
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ViewportRuler }, { type: undefined, decorators: [{
|
|
270
|
+
type: Inject,
|
|
271
|
+
args: [GANTT_GLOBAL_CONFIG]
|
|
272
|
+
}] }]; }, propDecorators: { maxLevel: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], async: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], childrenResolve: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], linkable: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], loading: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], virtualScrollEnabled: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], loadingDelay: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], linkDragStarted: [{
|
|
287
|
+
type: Output
|
|
288
|
+
}], linkDragEnded: [{
|
|
289
|
+
type: Output
|
|
290
|
+
}], lineClick: [{
|
|
291
|
+
type: Output
|
|
292
|
+
}], selectedChange: [{
|
|
293
|
+
type: Output
|
|
294
|
+
}], virtualScrolledIndexChange: [{
|
|
295
|
+
type: Output
|
|
296
|
+
}], table: [{
|
|
297
|
+
type: ContentChild,
|
|
298
|
+
args: [NgxGanttTableComponent]
|
|
299
|
+
}], columns: [{
|
|
300
|
+
type: ContentChildren,
|
|
301
|
+
args: [NgxGanttTableColumnComponent, { descendants: true }]
|
|
302
|
+
}], tableEmptyTemplate: [{
|
|
303
|
+
type: ContentChild,
|
|
304
|
+
args: ['tableEmpty', { static: true }]
|
|
305
|
+
}], ganttRoot: [{
|
|
306
|
+
type: ViewChild,
|
|
307
|
+
args: ['ganttRoot']
|
|
308
|
+
}], footerTemplate: [{
|
|
309
|
+
type: ContentChild,
|
|
310
|
+
args: ['footer', { static: true }]
|
|
311
|
+
}], virtualScroll: [{
|
|
312
|
+
type: ViewChild,
|
|
313
|
+
args: [CdkVirtualScrollViewport]
|
|
314
|
+
}] } });
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFHTixlQUFlLEVBR2YsWUFBWSxFQUVaLFVBQVUsRUFDVixNQUFNLEVBQ04sU0FBUyxFQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRixPQUFPLEVBQWMsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBZ0I1RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQVM3QyxJQUFhLE9BQU8sQ0FBQyxPQUFnQjtRQUNqQyxJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLFlBQVks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WTt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRW9CLGNBQWM7c0JBQXZELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFSCxhQUFhO3NCQUFqRCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIElucHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgTmdab25lLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgVmlld0NoaWxkLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEFmdGVyVmlld0NoZWNrZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRha2UsIGZpbmFsaXplLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2FudHRVcHBlciwgR0FOVFRfVVBQRVJfVE9LRU4gfSBmcm9tICcuL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7XG4gICAgR2FudHRMaW5rRHJhZ0V2ZW50LFxuICAgIEdhbnR0TGluZUNsaWNrRXZlbnQsXG4gICAgR2FudHRJdGVtSW50ZXJuYWwsXG4gICAgR2FudHRJdGVtLFxuICAgIEdhbnR0U2VsZWN0ZWRFdmVudCxcbiAgICBHYW50dEdyb3VwSW50ZXJuYWwsXG4gICAgR2FudHRWaXJ0dWFsU2Nyb2xsZWRJbmRleENoYW5nZUV2ZW50XG59IGZyb20gJy4vY2xhc3MnO1xuaW1wb3J0IHsgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS9nYW50dC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR0FOVFRfQUJTVFJBQ1RfVE9LRU4gfSBmcm9tICcuL2dhbnR0LWFic3RyYWN0JztcbmltcG9ydCB7IEdhbnR0R2xvYmFsQ29uZmlnLCBHQU5UVF9HTE9CQUxfQ09ORklHIH0gZnJvbSAnLi9nYW50dC5jb25maWcnO1xuaW1wb3J0IHsgTmd4R2FudHRSb290Q29tcG9uZW50IH0gZnJvbSAnLi9yb290LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dERhdGUgfSBmcm9tICcuL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5LCBrZXlCeSwgcmVjdXJzaXZlSXRlbXMsIHVuaXFCeSB9IGZyb20gJy4vdXRpbHMvaGVscGVycyc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1nYW50dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dhbnR0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogR0FOVFRfVVBQRVJfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTmd4R2FudHRDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogR0FOVFRfQUJTVFJBQ1RfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ3hHYW50dENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FudHRDb21wb25lbnQgZXh0ZW5kcyBHYW50dFVwcGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICAgIEBJbnB1dCgpIG1heExldmVsID0gMjtcblxuICAgIEBJbnB1dCgpIGFzeW5jOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2hpbGRyZW5SZXNvbHZlOiAoR2FudHRJdGVtKSA9PiBPYnNlcnZhYmxlPEdhbnR0SXRlbVtdPjtcblxuICAgIEBJbnB1dCgpIG92ZXJyaWRlIGxpbmthYmxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgc2V0IGxvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xuICAgICAgICBpZiAobG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZ0RlbGF5ID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmcgPSBsb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzLmxvYWRpbmdEZWxheSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmcgPSBsb2FkaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGluZ1RpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmcgPSBsb2FkaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgdmlydHVhbFNjcm9sbEVuYWJsZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgbG9hZGluZ0RlbGF5ID0gMDtcblxuICAgIEBPdXRwdXQoKSBsaW5rRHJhZ1N0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGlua0RyYWdFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBvdmVycmlkZSBsaW5rRHJhZ0VuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmtEcmFnRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dFNlbGVjdGVkRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgdmlydHVhbFNjcm9sbGVkSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0VmlydHVhbFNjcm9sbGVkSW5kZXhDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGQoTmd4R2FudHRUYWJsZUNvbXBvbmVudCkgb3ZlcnJpZGUgdGFibGU6IE5neEdhbnR0VGFibGVDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29sdW1uczogUXVlcnlMaXN0PE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgLy8g5q2k5qih54mI5bey5oyq5YiwIHRhYmxlIOe7hOS7tuS4i++8jOS4uuS6huWFvOWuueatpOWkhOaaguaXtuS/neeVmVxuICAgIEBDb250ZW50Q2hpbGQoJ3RhYmxlRW1wdHknLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZUVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdnYW50dFJvb3QnKSBnYW50dFJvb3Q6IE5neEdhbnR0Um9vdENvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2Zvb3RlcicsIHsgc3RhdGljOiB0cnVlIH0pIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpcnR1YWxTY3JvbGw6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIGdldCBsb2FkaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZmxhdEl0ZW1zOiAoR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwpW10gPSBbXTtcblxuICAgIHB1YmxpYyB2aWV3cG9ydEl0ZW1zOiAoR2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWwpW10gPSBbXTtcblxuICAgIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbG9hZGluZ1RpbWVyO1xuXG4gICAgcHJpdmF0ZSByYW5nZVN0YXJ0ID0gMDtcblxuICAgIHByaXZhdGUgcmFuZ2VFbmQgPSAwO1xuXG4gICAgcHJpdmF0ZSBmbGF0SXRlbXNNYXA6IERpY3Rpb25hcnk8R2FudHRHcm91cEludGVybmFsIHwgR2FudHRJdGVtSW50ZXJuYWw+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgICAgICBASW5qZWN0KEdBTlRUX0dMT0JBTF9DT05GSUcpIGNvbmZpZzogR2FudHRHbG9iYWxDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBuZ1pvbmUsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuY29tcHV0ZUFsbFJlZnMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5idWlsZEZsYXRJdGVtcygpO1xuICAgICAgICAvLyBOb3RlOiB0aGUgem9uZSBtYXkgYmUgbm9vcGVkIHRocm91Z2ggYEJvb3RzdHJhcE9wdGlvbnNgIHdoZW4gYm9vdHN0cmFwcGluZyB0aGUgcm9vdCBtb2R1bGUuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gdGhlIGBvblN0YWJsZWAgd2lsbCBuZXZlciBlbWl0IGFueSB2YWx1ZS5cbiAgICAgICAgY29uc3Qgb25TdGFibGUkID0gdGhpcy5uZ1pvbmUuaXNTdGFibGUgPyBmcm9tKFByb21pc2UucmVzb2x2ZSgpKSA6IHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSk7XG4gICAgICAgIC8vIE5vcm1hbGx5IHRoaXMgaXNuJ3QgaW4gdGhlIHpvbmUsIGJ1dCBpdCBjYW4gY2F1c2UgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgZm9yIGFwcHNcbiAgICAgICAgLy8gdXNpbmcgYHpvbmUtcGF0Y2gtcnhqc2AgYmVjYXVzZSBpdCdsbCB0cmlnZ2VyIGEgY2hhbmdlIGRldGVjdGlvbiB3aGVuIGl0IHVuc3Vic2NyaWJlcy5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgb25TdGFibGUkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdDb250YWluZXIubGlua0RyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChldmVudDogR2FudHRMaW5rRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlua0RyYWdTdGFydGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmxpbmtEcmFnRW5kZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBHYW50dExpbmtEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rRHJhZ0VuZGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudmlldy5zdGFydCQucGlwZShza2lwKDEpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wdXRlVGVtcERhdGFSZWZzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydEl0ZW1zID0gdGhpcy5mbGF0SXRlbXMuc2xpY2UodGhpcy5yYW5nZVN0YXJ0LCB0aGlzLnJhbmdlRW5kKTtcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZVRlbXBEYXRhUmVmcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy52aWV3VHlwZSAmJiBjaGFuZ2VzLnZpZXdUeXBlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnRJdGVtcyA9IHRoaXMuZmxhdEl0ZW1zLnNsaWNlKHRoaXMucmFuZ2VTdGFydCwgdGhpcy5yYW5nZUVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlVGVtcERhdGFSZWZzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5vcmlnaW5JdGVtcyB8fCBjaGFuZ2VzLm9yaWdpbkdyb3Vwcykge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRGbGF0SXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0SXRlbXMgPSB0aGlzLmZsYXRJdGVtcy5zbGljZSh0aGlzLnJhbmdlU3RhcnQsIHRoaXMucmFuZ2VFbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZVRlbXBEYXRhUmVmcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsLnJlbmRlcmVkUmFuZ2VTdHJlYW0ucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3NFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWxpbmtzLW92ZXJsYXknKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgICAgICBsaW5rc0VsZW1lbnQuc3R5bGUudG9wID0gYCR7LSh0aGlzLnN0eWxlcy5saW5lSGVpZ2h0ICogcmFuZ2Uuc3RhcnQpfXB4YDtcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlU3RhcnQgPSByYW5nZS5zdGFydDtcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlRW5kID0gcmFuZ2UuZW5kO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnRJdGVtcyA9IHRoaXMuZmxhdEl0ZW1zLnNsaWNlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZVRlbXBEYXRhUmVmcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxFbmFibGVkICYmIHRoaXMudmlld3BvcnRSdWxlciAmJiB0aGlzLnZpcnR1YWxTY3JvbGwuZ2V0UmVuZGVyZWRSYW5nZSgpLmVuZCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uU3RhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5nYW50dFJvb3QudmVydGljYWxTY3JvbGxiYXJXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dFJvb3QuY29tcHV0ZVNjcm9sbEJhck9mZnNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZsYXRJdGVtcygpIHtcbiAgICAgICAgY29uc3QgdmlydHVhbERhdGEgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICB2aXJ0dWFsRGF0YS5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIHZpcnR1YWxEYXRhLnB1c2goLi4uaXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2aXJ0dWFsRGF0YS5wdXNoKC4uLnJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZsYXRJdGVtcyA9IFsuLi52aXJ0dWFsRGF0YV07XG4gICAgICAgIHRoaXMuZmxhdEl0ZW1zTWFwID0ga2V5QnkodGhpcy5mbGF0SXRlbXMsICdpZCcpO1xuICAgICAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VTdGFydCA9IDA7XG4gICAgICAgICAgICB0aGlzLnJhbmdlRW5kID0gdGhpcy5mbGF0SXRlbXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlckV4cGFuZCgpIHtcbiAgICAgICAgdGhpcy5idWlsZEZsYXRJdGVtcygpO1xuICAgICAgICB0aGlzLnZpZXdwb3J0SXRlbXMgPSB0aGlzLmZsYXRJdGVtcy5zbGljZSh0aGlzLnJhbmdlU3RhcnQsIHRoaXMucmFuZ2VFbmQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZVRlbXBEYXRhUmVmcygpIHtcbiAgICAgICAgY29uc3QgdGVtcEl0ZW1EYXRhID0gW107XG4gICAgICAgIHRoaXMudmlld3BvcnRJdGVtcy5mb3JFYWNoKChkYXRhOiBHYW50dEdyb3VwSW50ZXJuYWwgfCBHYW50dEl0ZW1JbnRlcm5hbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCdpdGVtcycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGRhdGEgYXMgR2FudHRJdGVtSW50ZXJuYWw7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mbGF0SXRlbXNNYXBbbGluay5saW5rXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBJdGVtRGF0YS5wdXNoKHRoaXMuZmxhdEl0ZW1zTWFwW2xpbmsubGlua10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGVtcEl0ZW1EYXRhLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtc1JlZnMoLi4udW5pcUJ5KHRlbXBJdGVtRGF0YSwgJ2lkJykpO1xuICAgICAgICB0aGlzLmZsYXRJdGVtcyA9IFsuLi50aGlzLmZsYXRJdGVtc107XG4gICAgICAgIHRoaXMudmlld3BvcnRJdGVtcyA9IFsuLi50aGlzLnZpZXdwb3J0SXRlbXNdO1xuICAgIH1cblxuICAgIGV4cGFuZENoaWxkcmVuKGl0ZW06IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIGlmICghaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgaXRlbS5zZXRFeHBhbmQodHJ1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5hc3luYyAmJiB0aGlzLmNoaWxkcmVuUmVzb2x2ZSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlblJlc29sdmUoaXRlbS5vcmlnaW4pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFkZENoaWxkcmVuKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZUl0ZW1zUmVmcyguLi5pdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW0uc2V0RXhwYW5kKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJFeHBhbmQoKTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kQ2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RJdGVtKHNlbGVjdEV2ZW50OiBHYW50dFNlbGVjdGVkRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGV2ZW50LCBzZWxlY3RlZFZhbHVlIH0gPSBzZWxlY3RFdmVudDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoKHNlbGVjdGVkVmFsdWUgYXMgR2FudHRJdGVtKS5pZCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgX3NlbGVjdGVkVmFsdWUgPSB0aGlzLmdldEdhbnR0SXRlbXMoc2VsZWN0ZWRJZHMpLm1hcCgoaXRlbSkgPT4gaXRlbS5vcmlnaW4pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHsgZXZlbnQsIHNlbGVjdGVkVmFsdWU6IF9zZWxlY3RlZFZhbHVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgX3NlbGVjdGVkVmFsdWUgPSB0aGlzLmdldEdhbnR0SXRlbShzZWxlY3RlZElkc1swXSk/Lm9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh7IGV2ZW50LCBzZWxlY3RlZFZhbHVlOiBfc2VsZWN0ZWRWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvVG9kYXkoKSB7XG4gICAgICAgIHRoaXMuZ2FudHRSb290LnNjcm9sbFRvVG9kYXkoKTtcbiAgICB9XG5cbiAgICBzY3JvbGxUb0RhdGUoZGF0ZTogbnVtYmVyIHwgR2FudHREYXRlKSB7XG4gICAgICAgIHRoaXMuZ2FudHRSb290LnNjcm9sbFRvRGF0ZShkYXRlKTtcbiAgICB9XG5cbiAgICBzY3JvbGxlZEluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsZWRJbmRleENoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgcmVuZGVyZWRSYW5nZToge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLnJhbmdlU3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kOiB0aGlzLnJhbmdlRW5kXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnQ6IHRoaXMuZmxhdEl0ZW1zLmxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBleHBhbmRHcm91cHMoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgIGdyb3VwLnNldEV4cGFuZChleHBhbmRlZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWZ0ZXJFeHBhbmQoKTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGV4cGFuZEdyb3VwKGdyb3VwOiBHYW50dEdyb3VwSW50ZXJuYWwpIHtcbiAgICAgICAgZ3JvdXAuc2V0RXhwYW5kKCFncm91cC5leHBhbmRlZCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJFeHBhbmQoKTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPG5neC1nYW50dC1yb290ICNnYW50dFJvb3Q+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1oZWFkZXJcIj5cbiAgICA8Z2FudHQtdGFibGUtaGVhZGVyICN0YWJsZUhlYWRlciBbY29sdW1uc109XCJjb2x1bW5zXCI+PC9nYW50dC10YWJsZS1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImdhbnR0LWNvbnRhaW5lci1oZWFkZXJcIj5cbiAgICAgIDxnYW50dC1jYWxlbmRhci1oZWFkZXIgW3N0eWxlLnBhZGRpbmctcmlnaHQucHhdPVwiZ2FudHRSb290LnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhcIj48L2dhbnR0LWNhbGVuZGFyLWhlYWRlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxnYW50dC1sb2FkZXIgKm5nSWY9XCJsb2FkaW5nXCI+PC9nYW50dC1sb2FkZXI+XG5cbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgIGNsYXNzPVwiZ2FudHQtdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdnYW50dC1ub3JtYWwtdmlld3BvcnQnOiAhdmlydHVhbFNjcm9sbEVuYWJsZWQsXG4gICAgICAnZ2FudHQtc2Nyb2xsLWNvbnRhaW5lcic6IHZpcnR1YWxTY3JvbGxFbmFibGVkLFxuICAgICAgJ3dpdGgtZm9vdGVyJzogdGFibGU/LnRhYmxlRm9vdGVyVGVtcGxhdGUgfHwgZm9vdGVyVGVtcGxhdGVcbiAgICB9XCJcbiAgICBbaXRlbVNpemVdPVwic3R5bGVzLmxpbmVIZWlnaHRcIlxuICAgIFttaW5CdWZmZXJQeF09XCJzdHlsZXMubGluZUhlaWdodCAqIDEwXCJcbiAgICBbbWF4QnVmZmVyUHhdPVwic3R5bGVzLmxpbmVIZWlnaHQgKiAyMFwiXG4gICAgKHNjcm9sbGVkSW5kZXhDaGFuZ2UpPVwic2Nyb2xsZWRJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBmbGF0SXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtc2lkZVwiIFtzdHlsZS53aWR0aC5weF09XCJ0YWJsZUhlYWRlci50YWJsZVdpZHRoICsgMVwiIFtzdHlsZS5wYWRkaW5nLWJvdHRvbS5weF09XCJnYW50dFJvb3QuaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LXNpZGUtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnYW50dC10YWJsZVwiPlxuICAgICAgICAgIDxnYW50dC10YWJsZS1ib2R5XG4gICAgICAgICAgICBbZmxhdEl0ZW1zXT1cImZsYXRJdGVtc1wiXG4gICAgICAgICAgICBbdmlld3BvcnRJdGVtc109XCJ2aWV3cG9ydEl0ZW1zXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgW2dyb3VwVGVtcGxhdGVdPVwiZ3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbZW1wdHlUZW1wbGF0ZV09XCJ0YWJsZS50YWJsZUVtcHR5VGVtcGxhdGUgfHwgdGFibGVFbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtyb3dCZWZvcmVUZW1wbGF0ZV09XCJ0YWJsZT8ucm93QmVmb3JlVGVtcGxhdGVcIlxuICAgICAgICAgICAgW3Jvd0FmdGVyVGVtcGxhdGVdPVwidGFibGU/LnJvd0FmdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgW2RyYWdnYWJsZV09XCJ0YWJsZS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgW2Ryb3BFbnRlclByZWRpY2F0ZV09XCJ0YWJsZS5kcm9wRW50ZXJQcmVkaWNhdGVcIlxuICAgICAgICAgICAgKGRyYWdEcm9wcGVkKT1cInRhYmxlLmRyYWdEcm9wcGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZHJhZ1N0YXJ0ZWQpPVwidGFibGUuZHJhZ1N0YXJ0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcmFnRW5kZWQpPVwidGFibGUuZHJhZ0VuZGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaXRlbUNsaWNrKT1cInNlbGVjdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZ2FudHQtdGFibGUtYm9keT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtY29udGFpbmVyXCI+XG4gICAgICA8Z2FudHQtY2FsZW5kYXItZ3JpZFxuICAgICAgICBbc3R5bGUucGFkZGluZy1yaWdodC5weF09XCJnYW50dFJvb3QudmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nLWJvdHRvbS5weF09XCJnYW50dFJvb3QuaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodFwiXG4gICAgICA+PC9nYW50dC1jYWxlbmRhci1ncmlkPlxuICAgICAgPGRpdiBjbGFzcz1cImdhbnR0LW1haW5cIj5cbiAgICAgICAgPGdhbnR0LW1haW5cbiAgICAgICAgICBbZmxhdEl0ZW1zXT1cImZsYXRJdGVtc1wiXG4gICAgICAgICAgW3ZpZXdwb3J0SXRlbXNdPVwidmlld3BvcnRJdGVtc1wiXG4gICAgICAgICAgW2dyb3VwSGVhZGVyVGVtcGxhdGVdPVwiZ3JvdXBIZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFtiYXJUZW1wbGF0ZV09XCJiYXJUZW1wbGF0ZVwiXG4gICAgICAgICAgW3JhbmdlVGVtcGxhdGVdPVwicmFuZ2VUZW1wbGF0ZVwiXG4gICAgICAgICAgKGJhckNsaWNrKT1cImJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGxpbmVDbGljayk9XCJsaW5lQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2dhbnR0LW1haW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiAgPGdhbnR0LWRyYWctYmFja2Ryb3AgW3N0eWxlLmxlZnQucHhdPVwidGFibGVIZWFkZXIudGFibGVXaWR0aCArIDFcIj48L2dhbnR0LWRyYWctYmFja2Ryb3A+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZ2FudHQtc2Nyb2xsYmFyXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdhbnR0Um9vdC5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ICsgMVwiXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cImdhbnR0Um9vdC52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ0YWJsZUhlYWRlci50YWJsZVdpZHRoXCJcbiAgICAgIGNsYXNzPVwiZ2FudHQtdGFibGUtc2Nyb2xsYmFyXCJcbiAgICAgIFtjbGFzcy53aXRoLXNjcm9sbGJhcl09XCJnYW50dFJvb3QuaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodFwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnYW50dC1tYWluLXNjcm9sbGJhclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCIgW3N0eWxlLndpZHRoLnB4XT1cInZpZXcud2lkdGhcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImdhbnR0LWZvb3RlclwiIFtzdHlsZS5yaWdodC5weF09XCJnYW50dFJvb3QudmVydGljYWxTY3JvbGxiYXJXaWR0aFwiIFtzdHlsZS5ib3R0b20ucHhdPVwiZ2FudHRSb290Lmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtdGFibGUtZm9vdGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cInRhYmxlSGVhZGVyLnRhYmxlV2lkdGggKyAxXCIgKm5nSWY9XCJ0YWJsZT8udGFibGVGb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlPy50YWJsZUZvb3RlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sdW1uczogY29sdW1ucyB9XCI+IDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdhbnR0LWNvbnRhaW5lci1mb290ZXJcIiAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj4gPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25neC1nYW50dC1yb290PlxuIl19
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgxGanttComponent } from './gantt.component';
|
|
4
|
+
import { NgxGanttTableComponent } from './table/gantt-table.component';
|
|
5
|
+
import { NgxGanttTableColumnComponent } from './table/gantt-column.component';
|
|
6
|
+
import { NgxGanttBarComponent } from './components/bar/bar.component';
|
|
7
|
+
import { GanttMainComponent } from './components/main/gantt-main.component';
|
|
8
|
+
import { GanttIconComponent } from './components/icon/icon.component';
|
|
9
|
+
import { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';
|
|
10
|
+
import { GanttLinksComponent } from './components/links/links.component';
|
|
11
|
+
import { NgxGanttRootComponent } from './root.component';
|
|
12
|
+
import { NgxGanttRangeComponent } from './components/range/range.component';
|
|
13
|
+
import { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from './gantt.pipe';
|
|
14
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
15
|
+
import { GANTT_GLOBAL_CONFIG, defaultConfig } from './gantt.config';
|
|
16
|
+
import { NgxGanttBaselineComponent } from './components/baseline/baseline.component';
|
|
17
|
+
import { NgxGanttToolbarComponent } from './components/toolbar/toolbar.component';
|
|
18
|
+
import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
|
|
19
|
+
import { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';
|
|
20
|
+
import { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';
|
|
21
|
+
import { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';
|
|
22
|
+
import { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';
|
|
23
|
+
import { GanttLoaderComponent } from './components/loader/loader.component';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
export class NgxGanttModule {
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttModule, declarations: [NgxGanttComponent,
|
|
28
|
+
NgxGanttTableComponent,
|
|
29
|
+
NgxGanttTableColumnComponent,
|
|
30
|
+
GanttTableHeaderComponent,
|
|
31
|
+
GanttTableBodyComponent,
|
|
32
|
+
GanttMainComponent,
|
|
33
|
+
GanttCalendarHeaderComponent,
|
|
34
|
+
GanttCalendarGridComponent,
|
|
35
|
+
GanttLinksComponent,
|
|
36
|
+
GanttLoaderComponent,
|
|
37
|
+
NgxGanttBarComponent,
|
|
38
|
+
GanttIconComponent,
|
|
39
|
+
GanttDragBackdropComponent,
|
|
40
|
+
NgxGanttRangeComponent,
|
|
41
|
+
NgxGanttRootComponent,
|
|
42
|
+
NgxGanttBaselineComponent,
|
|
43
|
+
NgxGanttToolbarComponent,
|
|
44
|
+
IsGanttRangeItemPipe,
|
|
45
|
+
IsGanttBarItemPipe,
|
|
46
|
+
IsGanttCustomItemPipe], imports: [CommonModule, DragDropModule, ScrollingModule], exports: [NgxGanttComponent,
|
|
47
|
+
NgxGanttTableComponent,
|
|
48
|
+
NgxGanttTableColumnComponent,
|
|
49
|
+
NgxGanttRootComponent,
|
|
50
|
+
NgxGanttBarComponent,
|
|
51
|
+
NgxGanttRangeComponent,
|
|
52
|
+
NgxGanttBaselineComponent,
|
|
53
|
+
NgxGanttToolbarComponent,
|
|
54
|
+
GanttCalendarHeaderComponent,
|
|
55
|
+
GanttCalendarGridComponent,
|
|
56
|
+
GanttDragBackdropComponent] }); }
|
|
57
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttModule, providers: [
|
|
58
|
+
CdkVirtualScrollViewport,
|
|
59
|
+
{
|
|
60
|
+
provide: GANTT_GLOBAL_CONFIG,
|
|
61
|
+
useValue: defaultConfig
|
|
62
|
+
}
|
|
63
|
+
], imports: [CommonModule, DragDropModule, ScrollingModule] }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxGanttModule, decorators: [{
|
|
66
|
+
type: NgModule,
|
|
67
|
+
args: [{
|
|
68
|
+
imports: [CommonModule, DragDropModule, ScrollingModule],
|
|
69
|
+
exports: [
|
|
70
|
+
NgxGanttComponent,
|
|
71
|
+
NgxGanttTableComponent,
|
|
72
|
+
NgxGanttTableColumnComponent,
|
|
73
|
+
NgxGanttRootComponent,
|
|
74
|
+
NgxGanttBarComponent,
|
|
75
|
+
NgxGanttRangeComponent,
|
|
76
|
+
NgxGanttBaselineComponent,
|
|
77
|
+
NgxGanttToolbarComponent,
|
|
78
|
+
GanttCalendarHeaderComponent,
|
|
79
|
+
GanttCalendarGridComponent,
|
|
80
|
+
GanttDragBackdropComponent
|
|
81
|
+
],
|
|
82
|
+
declarations: [
|
|
83
|
+
NgxGanttComponent,
|
|
84
|
+
NgxGanttTableComponent,
|
|
85
|
+
NgxGanttTableColumnComponent,
|
|
86
|
+
GanttTableHeaderComponent,
|
|
87
|
+
GanttTableBodyComponent,
|
|
88
|
+
GanttMainComponent,
|
|
89
|
+
GanttCalendarHeaderComponent,
|
|
90
|
+
GanttCalendarGridComponent,
|
|
91
|
+
GanttLinksComponent,
|
|
92
|
+
GanttLoaderComponent,
|
|
93
|
+
NgxGanttBarComponent,
|
|
94
|
+
GanttIconComponent,
|
|
95
|
+
GanttDragBackdropComponent,
|
|
96
|
+
NgxGanttRangeComponent,
|
|
97
|
+
NgxGanttRootComponent,
|
|
98
|
+
NgxGanttBaselineComponent,
|
|
99
|
+
NgxGanttToolbarComponent,
|
|
100
|
+
IsGanttRangeItemPipe,
|
|
101
|
+
IsGanttBarItemPipe,
|
|
102
|
+
IsGanttCustomItemPipe
|
|
103
|
+
],
|
|
104
|
+
providers: [
|
|
105
|
+
CdkVirtualScrollViewport,
|
|
106
|
+
{
|
|
107
|
+
provide: GANTT_GLOBAL_CONFIG,
|
|
108
|
+
useValue: defaultConfig
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}]
|
|
112
|
+
}] });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2dhbnR0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBK0M1RSxNQUFNLE9BQU8sY0FBYzs4R0FBZCxjQUFjOytHQUFkLGNBQWMsaUJBN0JuQixpQkFBaUI7WUFDakIsc0JBQXNCO1lBQ3RCLDRCQUE0QjtZQUM1Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQiw0QkFBNEI7WUFDNUIsMEJBQTBCO1lBQzFCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLGtCQUFrQjtZQUNsQiwwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixrQkFBa0I7WUFDbEIscUJBQXFCLGFBbENmLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxhQUVuRCxpQkFBaUI7WUFDakIsc0JBQXNCO1lBQ3RCLDRCQUE0QjtZQUM1QixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0Qix5QkFBeUI7WUFDekIsd0JBQXdCO1lBQ3hCLDRCQUE0QjtZQUM1QiwwQkFBMEI7WUFDMUIsMEJBQTBCOytHQWdDckIsY0FBYyxhQVJaO1lBQ1Asd0JBQXdCO1lBQ3hCO2dCQUNJLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFFBQVEsRUFBRSxhQUFhO2FBQzFCO1NBQ0osWUExQ1MsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlOzsyRkE0QzlDLGNBQWM7a0JBN0MxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDO29CQUN4RCxPQUFPLEVBQUU7d0JBQ0wsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7cUJBQzdCO29CQUNELFlBQVksRUFBRTt3QkFDVixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQiwwQkFBMEI7d0JBQzFCLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQLHdCQUF3Qjt3QkFDeEI7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsUUFBUSxFQUFFLGFBQWE7eUJBQzFCO3FCQUNKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3hHYW50dENvbXBvbmVudCB9IGZyb20gJy4vZ2FudHQuY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2dhbnR0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IE5neEdhbnR0QmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0TWFpbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0RHJhZ0JhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYWctYmFja2Ryb3AvZHJhZy1iYWNrZHJvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2FudHRMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9saW5rcy9saW5rcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4R2FudHRSb290Q29tcG9uZW50IH0gZnJvbSAnLi9yb290LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JhbmdlL3JhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJc0dhbnR0UmFuZ2VJdGVtUGlwZSwgSXNHYW50dEJhckl0ZW1QaXBlLCBJc0dhbnR0Q3VzdG9tSXRlbVBpcGUgfSBmcm9tICcuL2dhbnR0LnBpcGUnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEdBTlRUX0dMT0JBTF9DT05GSUcsIGRlZmF1bHRDb25maWcgfSBmcm9tICcuL2dhbnR0LmNvbmZpZyc7XG5pbXBvcnQgeyBOZ3hHYW50dEJhc2VsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Jhc2VsaW5lL2Jhc2VsaW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hHYW50dFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgR2FudHRUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS9oZWFkZXIvZ2FudHQtdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dENhbGVuZGFySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2hlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0Q2FsZW5kYXJHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2dyaWQvY2FsZW5kYXItZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2FudHRUYWJsZUJvZHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvYm9keS9nYW50dC10YWJsZS1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIFNjcm9sbGluZ01vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBOZ3hHYW50dENvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSb290Q29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dEJhckNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSYW5nZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRCYXNlbGluZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBHYW50dENhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBHYW50dENhbGVuZGFyR3JpZENvbXBvbmVudCxcbiAgICAgICAgR2FudHREcmFnQmFja2Ryb3BDb21wb25lbnRcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBOZ3hHYW50dENvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgR2FudHRUYWJsZUhlYWRlckNvbXBvbmVudCxcbiAgICAgICAgR2FudHRUYWJsZUJvZHlDb21wb25lbnQsXG4gICAgICAgIEdhbnR0TWFpbkNvbXBvbmVudCxcbiAgICAgICAgR2FudHRDYWxlbmRhckhlYWRlckNvbXBvbmVudCxcbiAgICAgICAgR2FudHRDYWxlbmRhckdyaWRDb21wb25lbnQsXG4gICAgICAgIEdhbnR0TGlua3NDb21wb25lbnQsXG4gICAgICAgIEdhbnR0TG9hZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dEJhckNvbXBvbmVudCxcbiAgICAgICAgR2FudHRJY29uQ29tcG9uZW50LFxuICAgICAgICBHYW50dERyYWdCYWNrZHJvcENvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSYW5nZUNvbXBvbmVudCxcbiAgICAgICAgTmd4R2FudHRSb290Q29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dEJhc2VsaW5lQ29tcG9uZW50LFxuICAgICAgICBOZ3hHYW50dFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIElzR2FudHRSYW5nZUl0ZW1QaXBlLFxuICAgICAgICBJc0dhbnR0QmFySXRlbVBpcGUsXG4gICAgICAgIElzR2FudHRDdXN0b21JdGVtUGlwZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogR0FOVFRfR0xPQkFMX0NPTkZJRyxcbiAgICAgICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0Q29uZmlnXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -5,10 +5,10 @@ export class IsGanttRangeItemPipe {
|
|
|
5
5
|
transform(value) {
|
|
6
6
|
return value === GanttItemType.range;
|
|
7
7
|
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttRangeItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
9
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: IsGanttRangeItemPipe, name: "isGanttRangeItem" }); }
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
IsGanttRangeItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: IsGanttRangeItemPipe, name: "isGanttRangeItem" });
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: IsGanttRangeItemPipe, decorators: [{
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttRangeItemPipe, decorators: [{
|
|
12
12
|
type: Pipe,
|
|
13
13
|
args: [{
|
|
14
14
|
name: 'isGanttRangeItem'
|
|
@@ -18,10 +18,10 @@ export class IsGanttBarItemPipe {
|
|
|
18
18
|
transform(value) {
|
|
19
19
|
return value === GanttItemType.bar;
|
|
20
20
|
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttBarItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
22
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: IsGanttBarItemPipe, name: "isGanttBarItem" }); }
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
IsGanttBarItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: IsGanttBarItemPipe, name: "isGanttBarItem" });
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: IsGanttBarItemPipe, decorators: [{
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttBarItemPipe, decorators: [{
|
|
25
25
|
type: Pipe,
|
|
26
26
|
args: [{
|
|
27
27
|
name: 'isGanttBarItem'
|
|
@@ -31,13 +31,13 @@ export class IsGanttCustomItemPipe {
|
|
|
31
31
|
transform(value) {
|
|
32
32
|
return value === GanttItemType.custom;
|
|
33
33
|
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttCustomItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: IsGanttCustomItemPipe, name: "isGanttCustomItem" }); }
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
IsGanttCustomItemPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: IsGanttCustomItemPipe, name: "isGanttCustomItem" });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: IsGanttCustomItemPipe, decorators: [{
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: IsGanttCustomItemPipe, decorators: [{
|
|
38
38
|
type: Pipe,
|
|
39
39
|
args: [{
|
|
40
40
|
name: 'isGanttCustomItem'
|
|
41
41
|
}]
|
|
42
42
|
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9nYW50dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBS3hDLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsU0FBUyxDQUFDLEtBQW9CO1FBQzFCLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQzs4R0FIUSxvQkFBb0I7NEdBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFIaEMsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsa0JBQWtCO2lCQUMzQjs7QUFXRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixPQUFPLEtBQUssS0FBSyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLENBQUM7OEdBSFEsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGdCQUFnQjtpQkFDekI7O0FBV0QsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixTQUFTLENBQUMsS0FBb0I7UUFDMUIsT0FBTyxLQUFLLEtBQUssYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDOzhHQUhRLHFCQUFxQjs0R0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUhqQyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxtQkFBbUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHRJdGVtVHlwZSB9IGZyb20gJy4vY2xhc3MnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lzR2FudHRSYW5nZUl0ZW0nXG59KVxuZXhwb3J0IGNsYXNzIElzR2FudHRSYW5nZUl0ZW1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBHYW50dEl0ZW1UeXBlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gR2FudHRJdGVtVHlwZS5yYW5nZTtcbiAgICB9XG59XG5cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdpc0dhbnR0QmFySXRlbSdcbn0pXG5leHBvcnQgY2xhc3MgSXNHYW50dEJhckl0ZW1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBHYW50dEl0ZW1UeXBlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gR2FudHRJdGVtVHlwZS5iYXI7XG4gICAgfVxufVxuXG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaXNHYW50dEN1c3RvbUl0ZW0nXG59KVxuZXhwb3J0IGNsYXNzIElzR2FudHRDdXN0b21JdGVtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogR2FudHRJdGVtVHlwZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IEdhbnR0SXRlbVR5cGUuY3VzdG9tO1xuICAgIH1cbn1cbiJdfQ==
|