@worktile/gantt 15.0.0 → 15.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/class/event.d.ts +13 -0
  2. package/class/item.d.ts +7 -1
  3. package/components/bar/bar-drag.d.ts +10 -0
  4. package/components/bar/bar.component.d.ts +2 -1
  5. package/components/bar/bar.component.scss +22 -0
  6. package/components/calendar/calendar.scss +91 -0
  7. package/components/calendar/grid/calendar-grid.component.d.ts +24 -0
  8. package/components/calendar/header/calendar-header.component.d.ts +21 -0
  9. package/components/icon/icons.d.ts +1 -0
  10. package/components/links/links.component.d.ts +5 -5
  11. package/components/loader/loader.component.d.ts +5 -0
  12. package/components/loader/loader.component.scss +90 -0
  13. package/components/main/gantt-main.component.d.ts +3 -3
  14. package/components/table/body/gantt-table-body.component.d.ts +58 -0
  15. package/components/table/gantt-table.component.scss +169 -85
  16. package/components/table/gantt-table.scss +271 -0
  17. package/components/table/header/gantt-table-header.component.d.ts +31 -0
  18. package/esm2020/class/event.mjs +5 -1
  19. package/esm2020/class/item.mjs +9 -4
  20. package/esm2020/components/bar/bar-drag.mjs +106 -42
  21. package/esm2020/components/bar/bar.component.mjs +8 -2
  22. package/esm2020/components/calendar/grid/calendar-grid.component.mjs +71 -0
  23. package/esm2020/components/calendar/header/calendar-header.component.mjs +67 -0
  24. package/esm2020/components/icon/icons.mjs +4 -2
  25. package/esm2020/components/links/links.component.mjs +72 -54
  26. package/esm2020/components/loader/loader.component.mjs +29 -0
  27. package/esm2020/components/main/gantt-main.component.mjs +5 -5
  28. package/esm2020/components/table/body/gantt-table-body.component.mjs +298 -0
  29. package/esm2020/components/table/header/gantt-table-header.component.mjs +140 -0
  30. package/esm2020/gantt-dom.service.mjs +8 -12
  31. package/esm2020/gantt-item-upper.mjs +15 -6
  32. package/esm2020/gantt-print.service.mjs +2 -2
  33. package/esm2020/gantt-upper.mjs +18 -15
  34. package/esm2020/gantt.component.mjs +143 -25
  35. package/esm2020/gantt.module.mjs +28 -10
  36. package/esm2020/public-api.mjs +2 -1
  37. package/esm2020/root.component.mjs +10 -8
  38. package/esm2020/table/gantt-table.component.mjs +12 -4
  39. package/esm2020/utils/helpers.mjs +11 -1
  40. package/fesm2015/worktile-gantt.mjs +969 -378
  41. package/fesm2015/worktile-gantt.mjs.map +1 -1
  42. package/fesm2020/worktile-gantt.mjs +959 -380
  43. package/fesm2020/worktile-gantt.mjs.map +1 -1
  44. package/gantt-dom.service.d.ts +1 -0
  45. package/gantt-item-upper.d.ts +3 -2
  46. package/gantt-upper.d.ts +4 -1
  47. package/gantt.component.d.ts +26 -8
  48. package/gantt.component.scss +39 -0
  49. package/gantt.module.d.ts +19 -15
  50. package/package.json +1 -1
  51. package/public-api.d.ts +1 -0
  52. package/root.component.d.ts +1 -1
  53. package/styles/index.scss +5 -2
  54. package/styles/variables.scss +12 -7
  55. package/table/gantt-table.component.d.ts +5 -2
  56. package/components/calendar/calendar.component.d.ts +0 -26
  57. package/components/table/gantt-table.component.d.ts +0 -42
  58. package/esm2020/components/calendar/calendar.component.mjs +0 -88
  59. package/esm2020/components/table/gantt-table.component.mjs +0 -166
@@ -1,7 +1,148 @@
1
1
  @use '../../styles/variables';
2
2
 
3
+ @mixin gantt-table-item-base() {
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+ box-sizing: border-box;
7
+ border-bottom: 1px solid variables.$gantt-border-color;
8
+
9
+ .gantt-table-column {
10
+ overflow: hidden;
11
+ border-right: 1px solid variables.$gantt-border-color;
12
+ box-sizing: border-box;
13
+ position: relative;
14
+
15
+ &:last-child {
16
+ border-right: none;
17
+ }
18
+ }
19
+ }
20
+
21
+ @mixin gantt-table-item {
22
+ @include gantt-table-item-base();
23
+ position: relative;
24
+ cursor: pointer;
25
+
26
+ &-first-level-group {
27
+ background: variables.$gantt-group-background-color;
28
+ }
29
+
30
+ &-with-group {
31
+ .gantt-table-column {
32
+ &:first-child {
33
+ padding: 0 15px 0 32px;
34
+ }
35
+ }
36
+ }
37
+
38
+ .gantt-table-column {
39
+ display: flex;
40
+ padding: variables.$gantt-table-td-padding;
41
+
42
+ &:last-child {
43
+ border-right: none;
44
+ }
45
+ }
46
+
47
+ .gantt-table-column-content {
48
+ flex: 1;
49
+ position: relative;
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ white-space: nowrap;
53
+ }
54
+
55
+ .gantt-expand-icon {
56
+ display: inline-block;
57
+ width: 20px;
58
+ color: #aaa;
59
+ }
60
+
61
+ .gantt-drag-handle {
62
+ width: 1rem;
63
+ padding: 0 5px 0 0;
64
+ display: flex;
65
+ align-items: center;
66
+ margin-left: -10px;
67
+ }
68
+
69
+ &:hover {
70
+ background-color: variables.$gantt-container-background-color;
71
+ }
72
+
73
+ &-active {
74
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
75
+ &:hover {
76
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
77
+ }
78
+ }
79
+ }
80
+
81
+ @mixin gantt-items-drag-drop() {
82
+ .cdk-drag-preview.gantt-table-item {
83
+ box-sizing: border-box;
84
+ box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.08);
85
+ opacity: 0.9;
86
+ @include gantt-table-item();
87
+ }
88
+
89
+ .gantt-table.gantt-table-draggable {
90
+ .cdk-drag-placeholder {
91
+ display: none !important;
92
+ & + .cdk-drop-list {
93
+ display: none !important;
94
+ }
95
+ }
96
+
97
+ .cdk-drag-disabled.gantt-table-item {
98
+ .gantt-drag-handle {
99
+ svg {
100
+ display: none;
101
+ }
102
+ }
103
+ }
104
+
105
+ .drop-position-inside {
106
+ // border: 2px dashed variables.$gantt-primary-color !important;
107
+ .gantt-table-column {
108
+ height: 100%;
109
+ border-top: 2px dashed variables.$gantt-primary-color !important;
110
+ border-bottom: 2px dashed variables.$gantt-primary-color !important;
111
+ &:first-child {
112
+ border-left: 2px dashed variables.$gantt-primary-color !important;
113
+ }
114
+ &:last-child {
115
+ border-right: 2px dashed variables.$gantt-primary-color !important;
116
+ }
117
+ }
118
+ }
119
+
120
+ .drop-position-before {
121
+ background: #f5f5f5;
122
+ border-top: 2px solid variables.$gantt-primary-color !important;
123
+ }
124
+
125
+ .drop-position-after {
126
+ background: #f5f5f5;
127
+ border-bottom: 2px solid variables.$gantt-primary-color !important;
128
+ }
129
+
130
+ &.gantt-table-dragging {
131
+ .gantt-table-item {
132
+ &:hover {
133
+ background: unset !important;
134
+ .gantt-drag-handle {
135
+ visibility: hidden !important;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+
3
143
  .gantt-table {
4
144
  display: block;
145
+
5
146
  &-empty {
6
147
  height: 100%;
7
148
  position: relative;
@@ -24,48 +165,6 @@
24
165
  }
25
166
  }
26
167
 
27
- &-drag-trigger {
28
- width: variables.$gantt-table-header-drag-line-width;
29
- position: absolute;
30
- top: 0;
31
- right: 0;
32
- bottom: 0;
33
- cursor: ew-resize;
34
- z-index: 1;
35
-
36
- &:hover {
37
- background: variables.$gantt-table-header-drag-line-color;
38
- z-index: 2;
39
- }
40
- }
41
-
42
- &-drag-auxiliary-line {
43
- width: variables.$gantt-table-header-drag-line-width;
44
- background: variables.$gantt-table-header-drag-line-color;
45
- position: absolute;
46
- top: 0;
47
- bottom: 0;
48
- z-index: 100;
49
- display: none;
50
- }
51
-
52
- .gantt-table-row {
53
- display: flex;
54
- box-sizing: border-box;
55
- border-bottom: 1px solid variables.$gantt-border-color;
56
-
57
- .gantt-table-column {
58
- overflow: hidden;
59
- border-right: 1px solid variables.$gantt-border-color;
60
- box-sizing: border-box;
61
- position: relative;
62
-
63
- &:last-child {
64
- border-right: none;
65
- }
66
- }
67
- }
68
-
69
168
  .gantt-table-header {
70
169
  text-align: center;
71
170
  position: sticky;
@@ -75,6 +174,8 @@
75
174
  height: variables.$gantt-header-height;
76
175
  line-height: variables.$gantt-header-height;
77
176
 
177
+ @include gantt-table-item-base();
178
+
78
179
  .gantt-table-column {
79
180
  font-weight: 400;
80
181
  }
@@ -102,52 +203,35 @@
102
203
  }
103
204
 
104
205
  .gantt-table-item {
105
- cursor: pointer;
106
- &-first-level-group {
107
- background: variables.$gantt-group-background-color;
108
- }
109
-
110
- &-with-group {
111
- .gantt-table-column {
112
- &:first-child {
113
- padding: 0 15px 0 32px;
114
- }
115
- }
116
- }
117
-
118
- .gantt-table-column {
119
- display: flex;
120
- padding: variables.$gantt-table-td-padding;
121
-
122
- &:last-child {
123
- border-right: none;
124
- }
125
- }
126
-
127
- .gantt-table-column-content {
128
- flex: 1;
129
- position: relative;
130
- overflow: hidden;
131
- text-overflow: ellipsis;
132
- white-space: nowrap;
133
- }
206
+ @include gantt-table-item();
207
+ }
208
+ }
134
209
 
135
- &:hover {
136
- background-color: variables.$gantt-container-background-color;
137
- }
210
+ .table-resize-trigger,
211
+ .column-resize-handle {
212
+ width: variables.$gantt-table-header-drag-line-width;
213
+ position: absolute;
214
+ top: 0;
215
+ right: 0;
216
+ bottom: 0;
217
+ cursor: ew-resize;
218
+ z-index: 1;
138
219
 
139
- &-active {
140
- background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
141
- &:hover {
142
- background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
143
- }
144
- }
220
+ &:hover {
221
+ background: variables.$gantt-table-header-drag-line-color;
222
+ z-index: 2;
145
223
  }
224
+ }
146
225
 
147
- .gantt-expand-icon {
148
- display: inline-block;
149
- width: 20px;
150
- color: #aaa;
151
- }
226
+ .table-resize-line {
227
+ width: variables.$gantt-table-header-drag-line-width;
228
+ background: variables.$gantt-table-header-drag-line-color;
229
+ position: absolute;
230
+ top: 0;
231
+ bottom: 0;
232
+ z-index: 100;
233
+ display: none;
152
234
  }
153
235
  }
236
+
237
+ @include gantt-items-drag-drop();
@@ -0,0 +1,271 @@
1
+ @use '../../styles/variables';
2
+
3
+ @mixin gantt-table-item-base() {
4
+ display: flex;
5
+ box-sizing: border-box;
6
+ border-bottom: 1px solid variables.$gantt-border-color;
7
+
8
+ .gantt-table-column {
9
+ overflow: hidden;
10
+ border-right: 1px solid variables.$gantt-border-color;
11
+ box-sizing: border-box;
12
+ position: relative;
13
+
14
+ &:last-child {
15
+ border-right: none;
16
+ }
17
+ }
18
+ }
19
+
20
+ @mixin gantt-table-item {
21
+ @include gantt-table-item-base();
22
+ cursor: pointer;
23
+ &-first-level-group {
24
+ background: variables.$gantt-group-background-color;
25
+ }
26
+
27
+ &-with-group {
28
+ .gantt-table-column {
29
+ &:first-child {
30
+ padding: 0 15px 0 32px;
31
+ }
32
+ }
33
+ }
34
+
35
+ .gantt-table-column {
36
+ display: flex;
37
+ padding: variables.$gantt-table-td-padding;
38
+ }
39
+
40
+ .gantt-table-column-content {
41
+ flex: 1;
42
+ position: relative;
43
+ overflow: hidden;
44
+ text-overflow: ellipsis;
45
+ white-space: nowrap;
46
+ }
47
+
48
+ &:hover {
49
+ background-color: variables.$gantt-container-background-color;
50
+ }
51
+
52
+ &-active {
53
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
54
+ &:hover {
55
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
56
+ }
57
+ }
58
+
59
+ .gantt-table-column {
60
+ display: flex;
61
+ padding: variables.$gantt-table-td-padding;
62
+
63
+ &:last-child {
64
+ border-right: none;
65
+ }
66
+ }
67
+
68
+ .gantt-table-column-content {
69
+ flex: 1;
70
+ position: relative;
71
+ overflow: hidden;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
74
+ }
75
+
76
+ .gantt-expand-icon {
77
+ display: inline-block;
78
+ width: 20px;
79
+ color: #aaa;
80
+ }
81
+
82
+ .gantt-drag-handle {
83
+ width: 1rem;
84
+ padding: 0 5px 0 0;
85
+ display: flex;
86
+ align-items: center;
87
+ margin-left: -10px;
88
+ }
89
+
90
+ &:hover {
91
+ background-color: variables.$gantt-container-background-color;
92
+ }
93
+
94
+ &-active {
95
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
96
+ &:hover {
97
+ background-color: rgba($color: variables.$gantt-table-header-drag-line-color, $alpha: 0.1);
98
+ }
99
+ }
100
+ }
101
+
102
+ @mixin gantt-items-drag-drop() {
103
+ .cdk-drag-preview.gantt-table-item {
104
+ box-sizing: border-box;
105
+ box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.08);
106
+ opacity: 0.9;
107
+ @include gantt-table-item();
108
+ }
109
+
110
+ .gantt-table-body.gantt-table-draggable {
111
+ .cdk-drag-placeholder {
112
+ display: none !important;
113
+ & + .cdk-drop-list {
114
+ display: none !important;
115
+ }
116
+ }
117
+
118
+ .cdk-drag-disabled.gantt-table-item {
119
+ .gantt-drag-handle {
120
+ svg {
121
+ display: none;
122
+ }
123
+ }
124
+ }
125
+
126
+ &.gantt-table-dragging {
127
+ .gantt-table-item {
128
+ &:hover {
129
+ background: unset;
130
+ .gantt-drag-handle {
131
+ visibility: hidden !important;
132
+ }
133
+ }
134
+ }
135
+ }
136
+
137
+ .drag-item-hide {
138
+ display: none !important;
139
+ }
140
+
141
+ .drop-position-inside {
142
+ .gantt-table-column {
143
+ height: 100%;
144
+ border-top: 2px dashed variables.$gantt-primary-color !important;
145
+ border-bottom: 2px dashed variables.$gantt-primary-color !important;
146
+ &:first-child {
147
+ border-left: 2px dashed variables.$gantt-primary-color !important;
148
+ }
149
+ &:last-child {
150
+ border-right: 2px dashed variables.$gantt-primary-color !important;
151
+ }
152
+ }
153
+ }
154
+
155
+ .drop-position-before {
156
+ background: variables.$gantt-table-items-drop-background-color !important;
157
+ border-top: 2px solid variables.$gantt-primary-color !important;
158
+ }
159
+
160
+ .drop-position-after {
161
+ background: variables.$gantt-table-items-drop-background-color !important;
162
+ border-bottom: 2px solid variables.$gantt-primary-color !important;
163
+ }
164
+ }
165
+ }
166
+
167
+ .gantt-table-header {
168
+ text-align: center;
169
+ background: #fff;
170
+ height: variables.$gantt-header-height;
171
+ line-height: variables.$gantt-header-height;
172
+ box-shadow: variables.$gantt-side-shadow;
173
+ position: relative;
174
+ z-index: 3;
175
+ border-right: 1px solid variables.$gantt-border-color;
176
+
177
+ @include gantt-table-item();
178
+
179
+ .gantt-table-column {
180
+ font-weight: 400;
181
+ z-index: 1;
182
+ }
183
+ }
184
+
185
+ .gantt-table-body {
186
+ display: block;
187
+ .gantt-table-group {
188
+ display: flex;
189
+ height: variables.$gantt-group-height;
190
+ background: variables.$gantt-group-background-color;
191
+ padding: 0 10px;
192
+ align-items: center;
193
+ border-bottom: 1px solid variables.$gantt-border-color;
194
+ box-sizing: border-box;
195
+ position: relative;
196
+
197
+ .gantt-table-group-title {
198
+ cursor: pointer;
199
+
200
+ .expand-icon {
201
+ color: #aaa;
202
+ margin-right: 6px;
203
+ }
204
+ }
205
+ }
206
+
207
+ .gantt-table-item {
208
+ @include gantt-table-item();
209
+ }
210
+
211
+ .gantt-expand-icon {
212
+ display: inline-block;
213
+ width: 20px;
214
+ color: #aaa;
215
+ }
216
+ }
217
+
218
+ .gantt-table-empty {
219
+ height: 100%;
220
+ position: relative;
221
+ .gantt-table-body-container {
222
+ position: absolute;
223
+ text-align: center;
224
+ top: 50%;
225
+ left: 50%;
226
+ transform: translate(-50%, -50%);
227
+ margin-top: 22px;
228
+ .empty-icon {
229
+ svg {
230
+ height: 78px;
231
+ width: 78px;
232
+ }
233
+ }
234
+ .empty-text {
235
+ color: #cacaca;
236
+ }
237
+ }
238
+ }
239
+
240
+ .table-resize-handle,
241
+ .column-resize-handle {
242
+ width: variables.$gantt-table-header-drag-line-width;
243
+ position: absolute;
244
+ top: 0;
245
+ right: 0;
246
+ bottom: 0;
247
+ cursor: ew-resize;
248
+ height: 5000px;
249
+
250
+ &:hover {
251
+ background: variables.$gantt-table-header-drag-line-color;
252
+ }
253
+ }
254
+
255
+ .column-resize-handle {
256
+ height: unset;
257
+ z-index: 1;
258
+ }
259
+
260
+ .table-resize-auxiliary-line {
261
+ width: variables.$gantt-table-header-drag-line-width;
262
+ background: variables.$gantt-table-header-drag-line-color;
263
+ position: absolute;
264
+ top: 0;
265
+ bottom: 0;
266
+ z-index: 100;
267
+ display: none;
268
+ height: 5000px;
269
+ }
270
+
271
+ @include gantt-items-drag-drop();
@@ -0,0 +1,31 @@
1
+ import { QueryList, OnInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';
2
+ import { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';
3
+ import { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';
4
+ import { GanttAbstractComponent } from '../../../gantt-abstract';
5
+ import * as i0 from "@angular/core";
6
+ export declare const defaultColumnWidth = 100;
7
+ export declare const minColumnWidth = 80;
8
+ export declare class GanttTableHeaderComponent implements OnInit, OnDestroy {
9
+ private elementRef;
10
+ private gantt;
11
+ private cdr;
12
+ dragStartLeft: number;
13
+ tableWidth: number;
14
+ private unsubscribe$;
15
+ columns: QueryList<NgxGanttTableColumnComponent>;
16
+ resizeLineElementRef: ElementRef<HTMLElement>;
17
+ className: string;
18
+ constructor(elementRef: ElementRef, gantt: GanttAbstractComponent, cdr: ChangeDetectorRef);
19
+ ngOnInit(): void;
20
+ private columnsChange;
21
+ private dragFixed;
22
+ onResizeStarted(event: CdkDragStart): void;
23
+ onResizeMoved(event: CdkDragMove, column?: NgxGanttTableColumnComponent): void;
24
+ onResizeEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent): void;
25
+ onOverallResizeEnded(event: CdkDragEnd): void;
26
+ private showAuxiliaryLine;
27
+ private hideAuxiliaryLine;
28
+ ngOnDestroy(): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<GanttTableHeaderComponent, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<GanttTableHeaderComponent, "gantt-table-header", never, { "columns": "columns"; }, {}, never, never, false, never>;
31
+ }
@@ -12,4 +12,8 @@ export class GanttBarClickEvent {
12
12
  }
13
13
  export class GanttSelectedEvent {
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY2xhc3MvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLGNBQWM7Q0FFMUI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUUzQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUI7QUFFRCxNQUFNLE9BQU8sc0JBQXNCO0NBR2xDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtDQUkvQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FHOUI7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0NBRzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hHYW50dFRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUvZ2FudHQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHYW50dEl0ZW0gfSBmcm9tICcuL2l0ZW0nO1xuaW1wb3J0IHsgR2FudHRMaW5rVHlwZSB9IGZyb20gJy4vbGluayc7XG5cbmV4cG9ydCBjbGFzcyBHYW50dERyYWdFdmVudDxUID0gdW5rbm93bj4ge1xuICAgIGl0ZW06IEdhbnR0SXRlbTxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0VGFibGVFdmVudCB7XG4gICAgY29sdW1uczogUXVlcnlMaXN0PE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQ+O1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRMaW5rRHJhZ0V2ZW50PFQgPSB1bmtub3duPiB7XG4gICAgc291cmNlOiBHYW50dEl0ZW08VD47XG4gICAgdGFyZ2V0PzogR2FudHRJdGVtPFQ+O1xuICAgIHR5cGU/OiBHYW50dExpbmtUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRMb2FkT25TY3JvbGxFdmVudCB7XG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgICBlbmQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0TGluZUNsaWNrRXZlbnQ8VCA9IHVua25vd24+IHtcbiAgICBldmVudDogTW91c2VFdmVudDtcbiAgICBzb3VyY2U6IEdhbnR0SXRlbTxUPjtcbiAgICB0YXJnZXQ6IEdhbnR0SXRlbTxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0QmFyQ2xpY2tFdmVudDxUID0gdW5rbm93bj4ge1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICBpdGVtOiBHYW50dEl0ZW08VD47XG59XG5cbmV4cG9ydCBjbGFzcyBHYW50dFNlbGVjdGVkRXZlbnQ8VCA9IHVua25vd24+IHtcbiAgICBldmVudDogRXZlbnQ7XG4gICAgc2VsZWN0ZWRWYWx1ZTogR2FudHRJdGVtPFQ+IHwgR2FudHRJdGVtPFQ+W107XG59XG4iXX0=
15
+ export class GanttTableDragDroppedEvent {
16
+ }
17
+ export class GanttTableDragEnterPredicateContext {
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY2xhc3MvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLGNBQWM7Q0FFMUI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUUzQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUI7QUFFRCxNQUFNLE9BQU8sc0JBQXNCO0NBR2xDO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtDQUkvQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FHOUI7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0NBRzlCO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtDQU10QztBQUlELE1BQU0sT0FBTyxtQ0FBbUM7Q0FJL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neEdhbnR0VGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi90YWJsZS9nYW50dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEdhbnR0SXRlbSB9IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi9saW5rJztcblxuZXhwb3J0IGNsYXNzIEdhbnR0RHJhZ0V2ZW50PFQgPSB1bmtub3duPiB7XG4gICAgaXRlbTogR2FudHRJdGVtPFQ+O1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRUYWJsZUV2ZW50IHtcbiAgICBjb2x1bW5zOiBRdWVyeUxpc3Q8Tmd4R2FudHRUYWJsZUNvbHVtbkNvbXBvbmVudD47XG59XG5cbmV4cG9ydCBjbGFzcyBHYW50dExpbmtEcmFnRXZlbnQ8VCA9IHVua25vd24+IHtcbiAgICBzb3VyY2U6IEdhbnR0SXRlbTxUPjtcbiAgICB0YXJnZXQ/OiBHYW50dEl0ZW08VD47XG4gICAgdHlwZT86IEdhbnR0TGlua1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBHYW50dExvYWRPblNjcm9sbEV2ZW50IHtcbiAgICBzdGFydDogbnVtYmVyO1xuICAgIGVuZDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRMaW5lQ2xpY2tFdmVudDxUID0gdW5rbm93bj4ge1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xuICAgIHNvdXJjZTogR2FudHRJdGVtPFQ+O1xuICAgIHRhcmdldDogR2FudHRJdGVtPFQ+O1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRCYXJDbGlja0V2ZW50PFQgPSB1bmtub3duPiB7XG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIGl0ZW06IEdhbnR0SXRlbTxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0U2VsZWN0ZWRFdmVudDxUID0gdW5rbm93bj4ge1xuICAgIGV2ZW50OiBFdmVudDtcbiAgICBzZWxlY3RlZFZhbHVlOiBHYW50dEl0ZW08VD4gfCBHYW50dEl0ZW08VD5bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdhbnR0VGFibGVEcmFnRHJvcHBlZEV2ZW50PFQgPSB1bmtub3duPiB7XG4gICAgc291cmNlOiBHYW50dEl0ZW08VD47XG4gICAgc291cmNlUGFyZW50OiBHYW50dEl0ZW08VD47XG4gICAgdGFyZ2V0OiBHYW50dEl0ZW08VD47XG4gICAgdGFyZ2V0UGFyZW50OiBHYW50dEl0ZW08VD47XG4gICAgZHJvcFBvc2l0aW9uOiBHYW50dFRhYmxlRHJvcFBvc2l0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBHYW50dFRhYmxlRHJvcFBvc2l0aW9uID0gJ2JlZm9yZScgfCAnaW5zaWRlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCBjbGFzcyBHYW50dFRhYmxlRHJhZ0VudGVyUHJlZGljYXRlQ29udGV4dDxUID0gdW5rbm93bj4ge1xuICAgIHNvdXJjZTogR2FudHRJdGVtPFQ+O1xuICAgIHRhcmdldDogR2FudHRJdGVtPFQ+O1xuICAgIGRyb3BQb3NpdGlvbjogR2FudHRUYWJsZURyb3BQb3NpdGlvbjtcbn1cbiJdfQ==
@@ -11,7 +11,7 @@ export class GanttItemInternal {
11
11
  get refs() {
12
12
  return this.refs$.getValue();
13
13
  }
14
- constructor(item, options) {
14
+ constructor(item, level, options) {
15
15
  this.refs$ = new BehaviorSubject(null);
16
16
  this.origin = item;
17
17
  this.id = this.origin.id;
@@ -30,14 +30,16 @@ export class GanttItemInternal {
30
30
  this.barStyle = this.origin.barStyle;
31
31
  this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;
32
32
  this.draggable = this.origin.draggable === undefined ? true : this.origin.draggable;
33
+ this.itemDraggable = this.origin.itemDraggable;
33
34
  this.expandable = this.origin.expandable || (this.origin.children || []).length > 0;
34
35
  this.expanded = this.origin.expanded === undefined ? false : this.origin.expanded;
35
36
  this.start = item.start ? new GanttDate(item.start) : null;
36
37
  this.end = item.end ? new GanttDate(item.end) : null;
38
+ this.level = level;
37
39
  // 默认填充 30 天
38
40
  this.fillDays = options?.fillDays || 30;
39
41
  this.children = (item.children || []).map((subItem) => {
40
- return new GanttItemInternal(subItem, { fillDays: this.fillDays });
42
+ return new GanttItemInternal(subItem, level + 1, { fillDays: this.fillDays });
41
43
  });
42
44
  this.type = this.origin.type || GanttItemType.bar;
43
45
  this.progress = this.origin.progress;
@@ -64,10 +66,13 @@ export class GanttItemInternal {
64
66
  this.origin.start = this.start.getUnixTime();
65
67
  this.origin.end = this.end.getUnixTime();
66
68
  }
69
+ updateLevel(level) {
70
+ this.level = level;
71
+ }
67
72
  addChildren(items) {
68
73
  this.origin.children = items;
69
74
  this.children = (items || []).map((subItem) => {
70
- return new GanttItemInternal(subItem, { fillDays: this.fillDays });
75
+ return new GanttItemInternal(subItem, this.level + 1, { fillDays: this.fillDays });
71
76
  });
72
77
  }
73
78
  setExpand(expanded) {
@@ -79,4 +84,4 @@ export class GanttItemInternal {
79
84
  this.origin.links = this.links;
80
85
  }
81
86
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jbGFzcy9pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBUWxELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFxQkQsTUFBTSxPQUFPLGlCQUFpQjtJQW1CMUIsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFJRCxZQUFZLElBQWUsRUFBRSxPQUE4QjtRQUYzRCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQTBDLElBQUksQ0FBQyxDQUFDO1FBR3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMxQixPQUFPO29CQUNILElBQUksRUFBRSxhQUFhLENBQUMsRUFBRTtvQkFDdEIsSUFBSTtpQkFDUCxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJLENBQUM7YUFDZjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2pGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHYW50dExpbmssIEdhbnR0TGlua1R5cGUgfSBmcm9tICcuL2xpbmsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0SXRlbVJlZnMge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gR2FudHRJdGVtVHlwZSB7XG4gICAgYmFyID0gJ2JhcicsXG4gICAgcmFuZ2UgPSAncmFuZ2UnLFxuICAgIGN1c3RvbSA9ICdjdXN0b20nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2FudHRJdGVtPFQgPSB1bmtub3duPiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0PzogbnVtYmVyO1xuICAgIGVuZD86IG51bWJlcjtcbiAgICBncm91cF9pZD86IHN0cmluZztcbiAgICBsaW5rcz86IChHYW50dExpbmsgfCBzdHJpbmcpW107XG4gICAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICBsaW5rYWJsZT86IGJvb2xlYW47XG4gICAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGNoaWxkcmVuPzogR2FudHRJdGVtW107XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgYmFyU3R5bGU/OiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuICAgIG9yaWdpbj86IFQ7XG4gICAgdHlwZT86IEdhbnR0SXRlbVR5cGU7XG4gICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBHYW50dEl0ZW1JbnRlcm5hbCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN0YXJ0OiBHYW50dERhdGU7XG4gICAgZW5kOiBHYW50dERhdGU7XG4gICAgbGlua3M6IEdhbnR0TGlua1tdO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIGJhclN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgICBkcmFnZ2FibGU/OiBib29sZWFuO1xuICAgIGxpbmthYmxlPzogYm9vbGVhbjtcbiAgICBvcmlnaW46IEdhbnR0SXRlbTtcbiAgICBleHBhbmRhYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogR2FudHRJdGVtSW50ZXJuYWxbXTtcbiAgICB0eXBlPzogR2FudHRJdGVtVHlwZTtcbiAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICBmaWxsRGF5cz86IG51bWJlcjtcblxuICAgIGdldCByZWZzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHJlZnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHdpZHRoOiBudW1iZXI7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+KG51bGwpO1xuXG4gICAgY29uc3RydWN0b3IoaXRlbTogR2FudHRJdGVtLCBvcHRpb25zPzogeyBmaWxsRGF5czogbnVtYmVyIH0pIHtcbiAgICAgICAgdGhpcy5vcmlnaW4gPSBpdGVtO1xuICAgICAgICB0aGlzLmlkID0gdGhpcy5vcmlnaW4uaWQ7XG4gICAgICAgIHRoaXMubGlua3MgPSAodGhpcy5vcmlnaW4ubGlua3MgfHwgW10pLm1hcCgobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEdhbnR0TGlua1R5cGUuZnMsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGluaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbi5jb2xvcjtcbiAgICAgICAgdGhpcy5iYXJTdHlsZSA9IHRoaXMub3JpZ2luLmJhclN0eWxlO1xuICAgICAgICB0aGlzLmxpbmthYmxlID0gdGhpcy5vcmlnaW4ubGlua2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5saW5rYWJsZTtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGUgPSB0aGlzLm9yaWdpbi5kcmFnZ2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IHRoaXMub3JpZ2luLmV4cGFuZGFibGUgfHwgKHRoaXMub3JpZ2luLmNoaWxkcmVuIHx8IFtdKS5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5vcmlnaW4uZXhwYW5kZWQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5vcmlnaW4uZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpdGVtLnN0YXJ0ID8gbmV3IEdhbnR0RGF0ZShpdGVtLnN0YXJ0KSA6IG51bGw7XG4gICAgICAgIHRoaXMuZW5kID0gaXRlbS5lbmQgPyBuZXcgR2FudHREYXRlKGl0ZW0uZW5kKSA6IG51bGw7XG4gICAgICAgIC8vICDpu5jorqTloavlhYUgMzAg5aSpXG4gICAgICAgIHRoaXMuZmlsbERheXMgPSBvcHRpb25zPy5maWxsRGF5cyB8fCAzMDtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IChpdGVtLmNoaWxkcmVuIHx8IFtdKS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2FudHRJdGVtSW50ZXJuYWwoc3ViSXRlbSwgeyBmaWxsRGF5czogdGhpcy5maWxsRGF5cyB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRoaXMub3JpZ2luLnR5cGUgfHwgR2FudHRJdGVtVHlwZS5iYXI7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLm9yaWdpbi5wcm9ncmVzcztcbiAgICAgICAgLy8gZmlsbCBkYXlzIHdoZW4gc3RhcnQgb3IgZW5kIGlzIG51bGxcbiAgICAgICAgdGhpcy5maWxsSXRlbVN0YXJ0T3JFbmQoaXRlbSk7XG4gICAgfVxuXG4gICAgZmlsbEl0ZW1TdGFydE9yRW5kKGl0ZW06IEdhbnR0SXRlbSkge1xuICAgICAgICBpZiAodGhpcy5maWxsRGF5cyA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGxEYXlzID0gdGhpcy5maWxsRGF5cyAtIDE7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdGFydCAmJiAhaXRlbS5lbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCA9IG5ldyBHYW50dERhdGUoaXRlbS5zdGFydCkuYWRkRGF5cyhmaWxsRGF5cykuZW5kT2ZEYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXRlbS5zdGFydCAmJiBpdGVtLmVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgR2FudHREYXRlKGl0ZW0uZW5kKS5hZGREYXlzKC1maWxsRGF5cykuc3RhcnRPZkRheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUmVmcyhyZWZzOiBHYW50dEl0ZW1SZWZzKSB7XG4gICAgICAgIHRoaXMucmVmcyQubmV4dChyZWZzKTtcbiAgICB9XG5cbiAgICB1cGRhdGVEYXRlKHN0YXJ0OiBHYW50dERhdGUsIGVuZDogR2FudHREYXRlKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydC5zdGFydE9mRGF5KCk7XG4gICAgICAgIHRoaXMuZW5kID0gZW5kLmVuZE9mRGF5KCk7XG4gICAgICAgIHRoaXMub3JpZ2luLnN0YXJ0ID0gdGhpcy5zdGFydC5nZXRVbml4VGltZSgpO1xuICAgICAgICB0aGlzLm9yaWdpbi5lbmQgPSB0aGlzLmVuZC5nZXRVbml4VGltZSgpO1xuICAgIH1cblxuICAgIGFkZENoaWxkcmVuKGl0ZW1zOiBHYW50dEl0ZW1bXSkge1xuICAgICAgICB0aGlzLm9yaWdpbi5jaGlsZHJlbiA9IGl0ZW1zO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gKGl0ZW1zIHx8IFtdKS5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2FudHRJdGVtSW50ZXJuYWwoc3ViSXRlbSwgeyBmaWxsRGF5czogdGhpcy5maWxsRGF5cyB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0RXhwYW5kKGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBleHBhbmRlZDtcbiAgICAgICAgdGhpcy5vcmlnaW4uZXhwYW5kZWQgPSBleHBhbmRlZDtcbiAgICB9XG5cbiAgICBhZGRMaW5rKGxpbms6IEdhbnR0TGluaykge1xuICAgICAgICB0aGlzLmxpbmtzID0gWy4uLnRoaXMubGlua3MsIGxpbmtdO1xuICAgICAgICB0aGlzLm9yaWdpbi5saW5rcyA9IHRoaXMubGlua3M7XG4gICAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jbGFzcy9pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBU2xELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFzQkQsTUFBTSxPQUFPLGlCQUFpQjtJQXNCMUIsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFJRCxZQUFZLElBQWUsRUFBRSxLQUFjLEVBQUUsT0FBOEI7UUFGM0UsVUFBSyxHQUFHLElBQUksZUFBZSxDQUEwQyxJQUFJLENBQUMsQ0FBQztRQUd2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsT0FBTztvQkFDSCxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUU7b0JBQ3RCLElBQUk7aUJBQ1AsQ0FBQzthQUNMO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNwRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFhO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsRCxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFlO1FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JFO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDeEU7U0FDSjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBbUI7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFnQixFQUFFLEdBQWM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWtCO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWlCO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbnR0RGF0ZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHYW50dExpbmssIEdhbnR0TGlua1R5cGUgfSBmcm9tICcuL2xpbmsnO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vdmlldy10eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBHYW50dEl0ZW1SZWZzIHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIEdhbnR0SXRlbVR5cGUge1xuICAgIGJhciA9ICdiYXInLFxuICAgIHJhbmdlID0gJ3JhbmdlJyxcbiAgICBjdXN0b20gPSAnY3VzdG9tJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdhbnR0SXRlbTxUID0gdW5rbm93bj4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdGFydD86IG51bWJlcjtcbiAgICBlbmQ/OiBudW1iZXI7XG4gICAgZ3JvdXBfaWQ/OiBzdHJpbmc7XG4gICAgbGlua3M/OiAoR2FudHRMaW5rIHwgc3RyaW5nKVtdO1xuICAgIGRyYWdnYWJsZT86IGJvb2xlYW47XG4gICAgaXRlbURyYWdnYWJsZT86IGJvb2xlYW47XG4gICAgbGlua2FibGU/OiBib29sZWFuO1xuICAgIGV4cGFuZGFibGU/OiBib29sZWFuO1xuICAgIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbj86IEdhbnR0SXRlbVtdO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIGJhclN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgICBvcmlnaW4/OiBUO1xuICAgIHR5cGU/OiBHYW50dEl0ZW1UeXBlO1xuICAgIHByb2dyZXNzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgR2FudHRJdGVtSW50ZXJuYWwge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdGFydDogR2FudHREYXRlO1xuICAgIGVuZDogR2FudHREYXRlO1xuICAgIGxpbmtzOiBHYW50dExpbmtbXTtcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBiYXJTdHlsZT86IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj47XG4gICAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICBpdGVtRHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICBsaW5rYWJsZT86IGJvb2xlYW47XG4gICAgb3JpZ2luOiBHYW50dEl0ZW07XG4gICAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG4gICAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgY2hpbGRyZW46IEdhbnR0SXRlbUludGVybmFsW107XG4gICAgdHlwZT86IEdhbnR0SXRlbVR5cGU7XG4gICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgZmlsbERheXM/OiBudW1iZXI7XG4gICAgdmlld1R5cGU/OiBHYW50dFZpZXdUeXBlO1xuICAgIGxldmVsPzogbnVtYmVyO1xuXG4gICAgZ2V0IHJlZnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmVmcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgd2lkdGg6IG51bWJlcjsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4obnVsbCk7XG5cbiAgICBjb25zdHJ1Y3RvcihpdGVtOiBHYW50dEl0ZW0sIGxldmVsPzogbnVtYmVyLCBvcHRpb25zPzogeyBmaWxsRGF5czogbnVtYmVyIH0pIHtcbiAgICAgICAgdGhpcy5vcmlnaW4gPSBpdGVtO1xuICAgICAgICB0aGlzLmlkID0gdGhpcy5vcmlnaW4uaWQ7XG4gICAgICAgIHRoaXMubGlua3MgPSAodGhpcy5vcmlnaW4ubGlua3MgfHwgW10pLm1hcCgobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEdhbnR0TGlua1R5cGUuZnMsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGluaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLm9yaWdpbi5jb2xvcjtcbiAgICAgICAgdGhpcy5iYXJTdHlsZSA9IHRoaXMub3JpZ2luLmJhclN0eWxlO1xuICAgICAgICB0aGlzLmxpbmthYmxlID0gdGhpcy5vcmlnaW4ubGlua2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5saW5rYWJsZTtcbiAgICAgICAgdGhpcy5kcmFnZ2FibGUgPSB0aGlzLm9yaWdpbi5kcmFnZ2FibGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB0aGlzLm9yaWdpbi5kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuaXRlbURyYWdnYWJsZSA9IHRoaXMub3JpZ2luLml0ZW1EcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IHRoaXMub3JpZ2luLmV4cGFuZGFibGUgfHwgKHRoaXMub3JpZ2luLmNoaWxkcmVuIHx8IFtdKS5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdGhpcy5vcmlnaW4uZXhwYW5kZWQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdGhpcy5vcmlnaW4uZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpdGVtLnN0YXJ0ID8gbmV3IEdhbnR0RGF0ZShpdGVtLnN0YXJ0KSA6IG51bGw7XG4gICAgICAgIHRoaXMuZW5kID0gaXRlbS5lbmQgPyBuZXcgR2FudHREYXRlKGl0ZW0uZW5kKSA6IG51bGw7XG4gICAgICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgLy8gIOm7mOiupOWhq+WFhSAzMCDlpKlcbiAgICAgICAgdGhpcy5maWxsRGF5cyA9IG9wdGlvbnM/LmZpbGxEYXlzIHx8IDMwO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gKGl0ZW0uY2hpbGRyZW4gfHwgW10pLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBHYW50dEl0ZW1JbnRlcm5hbChzdWJJdGVtLCBsZXZlbCArIDEsIHsgZmlsbERheXM6IHRoaXMuZmlsbERheXMgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLm9yaWdpbi50eXBlIHx8IEdhbnR0SXRlbVR5cGUuYmFyO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5vcmlnaW4ucHJvZ3Jlc3M7XG4gICAgICAgIC8vIGZpbGwgZGF5cyB3aGVuIHN0YXJ0IG9yIGVuZCBpcyBudWxsXG4gICAgICAgIHRoaXMuZmlsbEl0ZW1TdGFydE9yRW5kKGl0ZW0pO1xuICAgIH1cblxuICAgIGZpbGxJdGVtU3RhcnRPckVuZChpdGVtOiBHYW50dEl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsbERheXMgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxsRGF5cyA9IHRoaXMuZmlsbERheXMgLSAxO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc3RhcnQgJiYgIWl0ZW0uZW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmQgPSBuZXcgR2FudHREYXRlKGl0ZW0uc3RhcnQpLmFkZERheXMoZmlsbERheXMpLmVuZE9mRGF5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0uc3RhcnQgJiYgaXRlbS5lbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0ID0gbmV3IEdhbnR0RGF0ZShpdGVtLmVuZCkuYWRkRGF5cygtZmlsbERheXMpLnN0YXJ0T2ZEYXkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVJlZnMocmVmczogR2FudHRJdGVtUmVmcykge1xuICAgICAgICB0aGlzLnJlZnMkLm5leHQocmVmcyk7XG4gICAgfVxuXG4gICAgdXBkYXRlRGF0ZShzdGFydDogR2FudHREYXRlLCBlbmQ6IEdhbnR0RGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQuc3RhcnRPZkRheSgpO1xuICAgICAgICB0aGlzLmVuZCA9IGVuZC5lbmRPZkRheSgpO1xuICAgICAgICB0aGlzLm9yaWdpbi5zdGFydCA9IHRoaXMuc3RhcnQuZ2V0VW5peFRpbWUoKTtcbiAgICAgICAgdGhpcy5vcmlnaW4uZW5kID0gdGhpcy5lbmQuZ2V0VW5peFRpbWUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVMZXZlbChsZXZlbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcbiAgICB9XG5cbiAgICBhZGRDaGlsZHJlbihpdGVtczogR2FudHRJdGVtW10pIHtcbiAgICAgICAgdGhpcy5vcmlnaW4uY2hpbGRyZW4gPSBpdGVtcztcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IChpdGVtcyB8fCBbXSkubWFwKChzdWJJdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEdhbnR0SXRlbUludGVybmFsKHN1Ykl0ZW0sIHRoaXMubGV2ZWwgKyAxLCB7IGZpbGxEYXlzOiB0aGlzLmZpbGxEYXlzIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRFeHBhbmQoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgICAgICB0aGlzLm9yaWdpbi5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgIH1cblxuICAgIGFkZExpbmsobGluazogR2FudHRMaW5rKSB7XG4gICAgICAgIHRoaXMubGlua3MgPSBbLi4udGhpcy5saW5rcywgbGlua107XG4gICAgICAgIHRoaXMub3JpZ2luLmxpbmtzID0gdGhpcy5saW5rcztcbiAgICB9XG59XG4iXX0=