@worktile/gantt 12.2.1 → 13.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.
Files changed (106) hide show
  1. package/components/bar/bar-drag.d.ts +4 -2
  2. package/components/bar/bar.component.d.ts +4 -4
  3. package/components/bar/bar.component.scss +201 -0
  4. package/components/calendar/calendar.component.d.ts +3 -5
  5. package/components/calendar/calendar.component.scss +79 -0
  6. package/components/drag-backdrop/drag-backdrop.component.d.ts +1 -5
  7. package/components/drag-backdrop/drag-backdrop.component.scss +50 -0
  8. package/components/icon/icon.component.d.ts +2 -4
  9. package/components/icon/icon.component.scss +13 -0
  10. package/components/links/links.component.scss +29 -0
  11. package/components/main/gantt-main.component.d.ts +2 -3
  12. package/components/range/range.component.d.ts +2 -5
  13. package/components/range/range.component.scss +35 -0
  14. package/components/table/gantt-table.component.d.ts +2 -3
  15. package/components/table/gantt-table.component.scss +153 -0
  16. package/{esm2015/class/date-point.js → esm2020/class/date-point.mjs} +0 -0
  17. package/{esm2015/class/event.js → esm2020/class/event.mjs} +0 -0
  18. package/{esm2015/class/group.js → esm2020/class/group.mjs} +0 -0
  19. package/{esm2015/class/index.js → esm2020/class/index.mjs} +0 -0
  20. package/{esm2015/class/item.js → esm2020/class/item.mjs} +0 -0
  21. package/{esm2015/class/link.js → esm2020/class/link.mjs} +0 -0
  22. package/{esm2015/class/view-type.js → esm2020/class/view-type.mjs} +0 -0
  23. package/esm2020/components/bar/bar-drag.mjs +308 -0
  24. package/esm2020/components/bar/bar.component.mjs +101 -0
  25. package/esm2020/components/calendar/calendar.component.mjs +88 -0
  26. package/esm2020/components/drag-backdrop/drag-backdrop.component.mjs +13 -0
  27. package/esm2020/components/icon/icon.component.mjs +36 -0
  28. package/{esm2015/components/icon/icons.js → esm2020/components/icon/icons.mjs} +0 -0
  29. package/esm2020/components/links/lines/curve.mjs +95 -0
  30. package/{esm2015/components/links/lines/factory.js → esm2020/components/links/lines/factory.mjs} +0 -0
  31. package/{esm2015/components/links/lines/line.js → esm2020/components/links/lines/line.mjs} +0 -0
  32. package/{esm2015/components/links/lines/straight.js → esm2020/components/links/lines/straight.mjs} +0 -0
  33. package/esm2020/components/links/links.component.mjs +178 -0
  34. package/esm2020/components/main/gantt-main.component.mjs +49 -0
  35. package/esm2020/components/range/range.component.mjs +25 -0
  36. package/esm2020/components/table/gantt-table.component.mjs +163 -0
  37. package/{esm2015/gantt-abstract.js → esm2020/gantt-abstract.mjs} +0 -0
  38. package/esm2020/gantt-dom.service.mjs +117 -0
  39. package/esm2020/gantt-drag-container.mjs +78 -0
  40. package/esm2020/gantt-item-upper.mjs +58 -0
  41. package/esm2020/gantt-print.service.mjs +94 -0
  42. package/esm2020/gantt-upper.mjs +339 -0
  43. package/esm2020/gantt.component.mjs +150 -0
  44. package/{esm2015/gantt.config.js → esm2020/gantt.config.mjs} +0 -0
  45. package/{esm2015/gantt.module.js → esm2020/gantt.module.mjs} +4 -4
  46. package/{esm2015/gantt.pipe.js → esm2020/gantt.pipe.mjs} +9 -9
  47. package/{esm2015/gantt.styles.js → esm2020/gantt.styles.mjs} +0 -0
  48. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  49. package/esm2020/root.component.mjs +130 -0
  50. package/esm2020/table/gantt-column.component.mjs +36 -0
  51. package/esm2020/table/gantt-table.component.mjs +25 -0
  52. package/{esm2015/utils/date.js → esm2020/utils/date.mjs} +0 -0
  53. package/{esm2015/utils/helpers.js → esm2020/utils/helpers.mjs} +0 -0
  54. package/esm2020/utils/passive-listeners.mjs +30 -0
  55. package/esm2020/utils/set-style-with-vendor-prefix.mjs +15 -0
  56. package/{esm2015/views/day.js → esm2020/views/day.mjs} +1 -1
  57. package/{esm2015/views/factory.js → esm2020/views/factory.mjs} +0 -0
  58. package/{esm2015/views/month.js → esm2020/views/month.mjs} +0 -0
  59. package/{esm2015/views/quarter.js → esm2020/views/quarter.mjs} +0 -0
  60. package/{esm2015/views/view.js → esm2020/views/view.mjs} +5 -5
  61. package/{esm2015/views/week.js → esm2020/views/week.mjs} +0 -0
  62. package/{esm2015/views/year.js → esm2020/views/year.mjs} +0 -0
  63. package/{esm2015/worktile-gantt.js → esm2020/worktile-gantt.mjs} +0 -0
  64. package/fesm2015/worktile-gantt.mjs +3080 -0
  65. package/fesm2015/worktile-gantt.mjs.map +1 -0
  66. package/{fesm2015/worktile-gantt.js → fesm2020/worktile-gantt.mjs} +344 -288
  67. package/fesm2020/worktile-gantt.mjs.map +1 -0
  68. package/gantt-dom.service.d.ts +11 -4
  69. package/gantt-drag-container.d.ts +1 -1
  70. package/gantt-item-upper.d.ts +6 -6
  71. package/gantt-print.service.d.ts +1 -1
  72. package/gantt-upper.d.ts +6 -6
  73. package/gantt.component.d.ts +2 -4
  74. package/gantt.component.scss +83 -0
  75. package/package.json +23 -9
  76. package/root.component.d.ts +5 -3
  77. package/styles/index.scss +10 -0
  78. package/styles/variables.scss +46 -0
  79. package/table/gantt-column.component.d.ts +2 -3
  80. package/table/gantt-table.component.d.ts +2 -4
  81. package/utils/passive-listeners.d.ts +13 -0
  82. package/utils/set-style-with-vendor-prefix.d.ts +12 -0
  83. package/README.md +0 -24
  84. package/bundles/worktile-gantt.umd.js +0 -3622
  85. package/bundles/worktile-gantt.umd.js.map +0 -1
  86. package/esm2015/components/bar/bar-drag.js +0 -295
  87. package/esm2015/components/bar/bar.component.js +0 -98
  88. package/esm2015/components/calendar/calendar.component.js +0 -86
  89. package/esm2015/components/drag-backdrop/drag-backdrop.component.js +0 -21
  90. package/esm2015/components/icon/icon.component.js +0 -38
  91. package/esm2015/components/links/lines/curve.js +0 -96
  92. package/esm2015/components/links/links.component.js +0 -173
  93. package/esm2015/components/main/gantt-main.component.js +0 -53
  94. package/esm2015/components/range/range.component.js +0 -37
  95. package/esm2015/components/table/gantt-table.component.js +0 -163
  96. package/esm2015/gantt-dom.service.js +0 -103
  97. package/esm2015/gantt-drag-container.js +0 -77
  98. package/esm2015/gantt-item-upper.js +0 -58
  99. package/esm2015/gantt-print.service.js +0 -94
  100. package/esm2015/gantt-upper.js +0 -331
  101. package/esm2015/gantt.component.js +0 -155
  102. package/esm2015/root.component.js +0 -123
  103. package/esm2015/table/gantt-column.component.js +0 -37
  104. package/esm2015/table/gantt-table.component.js +0 -26
  105. package/fesm2015/worktile-gantt.js.map +0 -1
  106. package/main.bundle.scss +0 -687
@@ -0,0 +1,101 @@
1
+ import { Component, HostBinding, Inject, ViewChild, Output, EventEmitter, ViewChildren } from '@angular/core';
2
+ import { fromEvent, merge, Observable } from 'rxjs';
3
+ import { startWith, switchMap, takeUntil } from 'rxjs/operators';
4
+ import { GanttBarDrag } from './bar-drag';
5
+ import { hexToRgb } from '../../utils/helpers';
6
+ import { barBackground } from '../../gantt.styles';
7
+ import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
8
+ import { GanttItemUpper } from '../../gantt-item-upper';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../gantt-drag-container";
11
+ import * as i2 from "./bar-drag";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "../../gantt-upper";
14
+ function linearGradient(sideOrCorner, color, stop) {
15
+ return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;
16
+ }
17
+ export class NgxGanttBarComponent extends GanttItemUpper {
18
+ constructor(dragContainer, drag, elementRef, ganttUpper, ngZone) {
19
+ super(elementRef, ganttUpper);
20
+ this.dragContainer = dragContainer;
21
+ this.drag = drag;
22
+ this.ganttUpper = ganttUpper;
23
+ this.ngZone = ngZone;
24
+ this.barClick = new EventEmitter();
25
+ this.ganttItemClass = true;
26
+ this.color = 'red';
27
+ }
28
+ ngOnInit() {
29
+ super.ngOnInit();
30
+ this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
31
+ this.setContentBackground();
32
+ });
33
+ }
34
+ ngAfterViewInit() {
35
+ this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);
36
+ this.setContentBackground();
37
+ this.handles.changes
38
+ .pipe(startWith(this.handles), switchMap(() =>
39
+ // Note: we need to explicitly subscribe outside of the Angular zone since `addEventListener`
40
+ // is called when the `fromEvent` is subscribed.
41
+ new Observable((subscriber) => this.ngZone.runOutsideAngular(() => merge(...this.handles.toArray().map((handle) => fromEvent(handle.nativeElement, 'mousedown'))).subscribe(subscriber)))), takeUntil(this.unsubscribe$))
42
+ .subscribe((event) => {
43
+ event.stopPropagation();
44
+ });
45
+ }
46
+ onBarClick(event) {
47
+ this.barClick.emit({ event, item: this.item.origin });
48
+ }
49
+ setContentBackground() {
50
+ const contentElement = this.contentElementRef.nativeElement;
51
+ const color = this.item.color || barBackground;
52
+ const style = this.item.barStyle || {};
53
+ if (this.item.origin.start && this.item.origin.end) {
54
+ style.background = color;
55
+ style.borderRadius = '';
56
+ }
57
+ if (this.item.origin.start && !this.item.origin.end) {
58
+ style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));
59
+ style.borderRadius = '4px 12.5px 12.5px 4px';
60
+ }
61
+ if (!this.item.origin.start && this.item.origin.end) {
62
+ style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));
63
+ style.borderRadius = '12.5px 4px 4px 12.5px';
64
+ }
65
+ if (this.item.progress >= 0) {
66
+ const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress');
67
+ style.background = hexToRgb(color, 0.3);
68
+ style.borderRadius = '';
69
+ contentProgressElement.style.background = color;
70
+ }
71
+ for (const key in style) {
72
+ if (style.hasOwnProperty(key)) {
73
+ contentElement.style[key] = style[key];
74
+ }
75
+ }
76
+ }
77
+ stopPropagation(event) {
78
+ event.stopPropagation();
79
+ }
80
+ }
81
+ NgxGanttBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxGanttBarComponent, deps: [{ token: i1.GanttDragContainer }, { token: i2.GanttBarDrag }, { token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
82
+ NgxGanttBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: { barClick: "barClick" }, host: { properties: { "class.gantt-bar": "this.ganttItemClass" } }, providers: [GanttBarDrag], viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true }, { propertyName: "handles", predicate: ["handle"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NgxGanttBarComponent, decorators: [{
84
+ type: Component,
85
+ args: [{ selector: 'ngx-gantt-bar,gantt-bar', providers: [GanttBarDrag], template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n" }]
86
+ }], ctorParameters: function () { return [{ type: i1.GanttDragContainer }, { type: i2.GanttBarDrag }, { type: i0.ElementRef }, { type: i4.GanttUpper, decorators: [{
87
+ type: Inject,
88
+ args: [GANTT_UPPER_TOKEN]
89
+ }] }, { type: i0.NgZone }]; }, propDecorators: { barClick: [{
90
+ type: Output
91
+ }], contentElementRef: [{
92
+ type: ViewChild,
93
+ args: ['content']
94
+ }], ganttItemClass: [{
95
+ type: HostBinding,
96
+ args: ['class.gantt-bar']
97
+ }], handles: [{
98
+ type: ViewChildren,
99
+ args: ['handle']
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUdmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFFeEQsU0FBUyxjQUFjLENBQUMsWUFBb0IsRUFBRSxLQUFhLEVBQUUsSUFBWTtJQUNyRSxPQUFPLG1CQUFtQixZQUFZLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDO0FBQ3RFLENBQUM7QUFPRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsY0FBYztJQVdwRCxZQUNZLGFBQWlDLEVBQ2pDLElBQWtCLEVBQzFCLFVBQXNDLEVBQ0ssVUFBc0IsRUFDekQsTUFBYztRQUV0QixLQUFLLENBQUMsVUFBVSxF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a0JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSx5QkFBeUIsYUFFeEIsQ0FBQyxZQUFZLENBQUM7OzBCQWlCcEIsTUFBTTsyQkFBQyxpQkFBaUI7aUVBZG5CLFFBQVE7c0JBQWpCLE1BQU07Z0JBRWUsaUJBQWlCO3NCQUF0QyxTQUFTO3VCQUFDLFNBQVM7Z0JBRVksY0FBYztzQkFBN0MsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBRU4sT0FBTztzQkFBOUIsWUFBWTt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBJbmplY3QsXG4gICAgVmlld0NoaWxkLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIE5nWm9uZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcblxuZnVuY3Rpb24gbGluZWFyR3JhZGllbnQoc2lkZU9yQ29ybmVyOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIHN0b3A6IHN0cmluZykge1xuICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7c2lkZU9yQ29ybmVyfSwke2NvbG9yfSAwJSwke3N0b3B9IDQwJSlgO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1nYW50dC1iYXIsZ2FudHQtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtHYW50dEJhckRyYWddXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0QmFyQ29tcG9uZW50IGV4dGVuZHMgR2FudHRJdGVtVXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWJhcicpIGdhbnR0SXRlbUNsYXNzID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2hhbmRsZScpIGhhbmRsZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICBjb2xvciA9ICdyZWQnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyLFxuICAgICAgICBwcml2YXRlIGRyYWc6IEdhbnR0QmFyRHJhZyxcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBvdmVycmlkZSBnYW50dFVwcGVyOiBHYW50dFVwcGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGdhbnR0VXBwZXIpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmRyYWcuY3JlYXRlRHJhZ3ModGhpcy5lbGVtZW50UmVmLCB0aGlzLml0ZW0sIHRoaXMuZ2FudHRVcHBlcik7XG4gICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcblxuICAgICAgICB0aGlzLmhhbmRsZXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuaGFuZGxlcyksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogd2UgbmVlZCB0byBleHBsaWNpdGx5IHN1YnNjcmliZSBvdXRzaWRlIG9mIHRoZSBBbmd1bGFyIHpvbmUgc2luY2UgYGFkZEV2ZW50TGlzdGVuZXJgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBjYWxsZWQgd2hlbiB0aGUgYGZyb21FdmVudGAgaXMgc3Vic2NyaWJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYnNlcnZhYmxlPEV2ZW50Pigoc3Vic2NyaWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZSguLi50aGlzLmhhbmRsZXMudG9BcnJheSgpLm1hcCgoaGFuZGxlKSA9PiBmcm9tRXZlbnQoaGFuZGxlLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkJhckNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmJhckNsaWNrLmVtaXQoeyBldmVudCwgaXRlbTogdGhpcy5pdGVtLm9yaWdpbiB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbnRlbnRCYWNrZ3JvdW5kKCkge1xuICAgICAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLml0ZW0uY29sb3IgfHwgYmFyQmFja2dyb3VuZDtcbiAgICAgICAgY29uc3Qgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB0aGlzLml0ZW0uYmFyU3R5bGUgfHwge307XG4gICAgICAgIGlmICh0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmIHRoaXMuaXRlbS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gY29sb3I7XG4gICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiAhdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gbGVmdCcsIGhleFRvUmdiKGNvbG9yLCAwLjU1KSwgaGV4VG9SZ2IoY29sb3IsIDEpKTtcbiAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHggMTIuNXB4IDEyLjVweCA0cHgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGxpbmVhckdyYWRpZW50KCd0byByaWdodCcsIGhleFRvUmdiKGNvbG9yLCAwLjU1KSwgaGV4VG9SZ2IoY29sb3IsIDEpKTtcbiAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcxMi41cHggNHB4IDRweCAxMi41cHgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLml0ZW0ucHJvZ3Jlc3MgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudFByb2dyZXNzRWxlbWVudCA9IGNvbnRlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nYW50dC1iYXItY29udGVudC1wcm9ncmVzcycpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGhleFRvUmdiKGNvbG9yLCAwLjMpO1xuICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJyc7XG4gICAgICAgICAgICBjb250ZW50UHJvZ3Jlc3NFbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHN0eWxlKSB7XG4gICAgICAgICAgICBpZiAoc3R5bGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LnN0eWxlW2tleV0gPSBzdHlsZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWxheWVyXCI+XG4gIDxkaXYgY2xhc3M9XCJkcmFnLWhhbmRsZXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5kcmFnZ2FibGUgJiYgZ2FudHRVcHBlci5kcmFnZ2FibGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCIgI2hhbmRsZT48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiICNoYW5kbGU+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIml0ZW0ubGlua2FibGUgJiYgZ2FudHRVcHBlci5saW5rYWJsZVwiIGNsYXNzPVwibGluay1oYW5kbGVzXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIj48c3BhbiBjbGFzcz1cInBvaW50XCI+PC9zcGFuPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiPiA8c3BhbiBjbGFzcz1cInBvaW50XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJnYW50dC1iYXItYm9yZGVyXCI+PC9kaXY+XG48ZGl2ICNjb250ZW50IGNsYXNzPVwiZ2FudHQtYmFyLWNvbnRlbnRcIiAoY2xpY2spPVwib25CYXJDbGljaygkZXZlbnQpXCI+XG4gIDxkaXYgY2xhc3M9XCJnYW50dC1iYXItY29udGVudC1wcm9ncmVzc1wiICpuZ0lmPVwiaXRlbS5wcm9ncmVzcyA+PSAwXCIgW3N0eWxlLndpZHRoLiVdPVwiaXRlbS5wcm9ncmVzcyAqIDEwMFwiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBpdGVtLm9yaWdpbiwgcmVmczogaXRlbS5yZWZzIH1cIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,88 @@
1
+ import { Component, HostBinding, Inject } from '@angular/core';
2
+ import { Subject, merge, from } from 'rxjs';
3
+ import { take, takeUntil } from 'rxjs/operators';
4
+ import { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';
5
+ import { isNumber } from '../../utils/helpers';
6
+ import { GanttDate } from '../../utils/date';
7
+ import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
8
+ import { GanttViewType } from './../../class/view-type';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ import * as i2 from "../../gantt-upper";
12
+ const mainHeight = 5000;
13
+ export class GanttCalendarComponent {
14
+ constructor(ganttUpper, ngZone, elementRef) {
15
+ this.ganttUpper = ganttUpper;
16
+ this.ngZone = ngZone;
17
+ this.elementRef = elementRef;
18
+ this.headerHeight = headerHeight;
19
+ this.mainHeight = mainHeight;
20
+ this.todayHeight = todayHeight;
21
+ this.todayWidth = todayWidth;
22
+ this.todayBorderRadius = todayBorderRadius;
23
+ this.viewTypes = GanttViewType;
24
+ this.className = true;
25
+ this.unsubscribe$ = new Subject();
26
+ }
27
+ get view() {
28
+ return this.ganttUpper.view;
29
+ }
30
+ setTodayPoint() {
31
+ const x = this.view.getTodayXPoint();
32
+ const today = new GanttDate().getDate();
33
+ const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
34
+ const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0];
35
+ const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0];
36
+ if (isNumber(x)) {
37
+ if (rect) {
38
+ rect.style.left = `${x - todayWidth / 2}px`;
39
+ rect.style.top = `${headerHeight - todayHeight}px`;
40
+ rect.innerHTML = today.toString();
41
+ }
42
+ if (line) {
43
+ line.style.left = `${x}px`;
44
+ line.style.top = `${headerHeight}px`;
45
+ line.style.bottom = `${-mainHeight}px`;
46
+ }
47
+ }
48
+ else {
49
+ todayEle.style.display = 'none';
50
+ }
51
+ }
52
+ ngOnInit() {
53
+ // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
54
+ // the `onStable` will never emit any value.
55
+ const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
56
+ // Normally this isn't in the zone, but it can cause performance regressions for apps
57
+ // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
58
+ this.ngZone.runOutsideAngular(() => {
59
+ onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
60
+ merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
61
+ .pipe(takeUntil(this.unsubscribe$))
62
+ .subscribe(() => {
63
+ this.setTodayPoint();
64
+ });
65
+ });
66
+ });
67
+ }
68
+ trackBy(index, point) {
69
+ return point.text || index;
70
+ }
71
+ ngOnDestroy() {
72
+ this.unsubscribe$.next();
73
+ this.unsubscribe$.complete();
74
+ }
75
+ }
76
+ GanttCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttCalendarComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
77
+ GanttCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: GanttCalendarComponent, selector: "gantt-calendar-overlay", host: { properties: { "class.gantt-calendar-overlay": "this.className" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttCalendarComponent, decorators: [{
79
+ type: Component,
80
+ args: [{ selector: 'gantt-calendar-overlay', template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
81
+ }], ctorParameters: function () { return [{ type: i2.GanttUpper, decorators: [{
82
+ type: Inject,
83
+ args: [GANTT_UPPER_TOKEN]
84
+ }] }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { className: [{
85
+ type: HostBinding,
86
+ args: ['class.gantt-calendar-overlay']
87
+ }] } });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQXFCLE1BQU0sRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUV4RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFNeEIsTUFBTSxPQUFPLHNCQUFzQjtJQXFCL0IsWUFDc0MsVUFBc0IsRUFDaEQsTUFBYyxFQUNkLFVBQW1DO1FBRlQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFuQi9DLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBRTVCLGVBQVUsR0FBRyxVQUFV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LENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYSxFQUFFLEtBQXFCO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7bUhBMUVRLHNCQUFzQixrQkFzQm5CLGlCQUFpQjt1R0F0QnBCLHNCQUFzQiwwSUNoQm5DLG8vREFvREE7MkZEcENhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDSSx3QkFBd0I7OzBCQXlCN0IsTUFBTTsyQkFBQyxpQkFBaUI7MEZBTGdCLFNBQVM7c0JBQXJELFdBQVc7dUJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE5nWm9uZSwgSW5qZWN0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dERhdGVQb2ludCB9IGZyb20gJy4uLy4uL2NsYXNzL2RhdGUtcG9pbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWVyZ2UsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGhlYWRlckhlaWdodCwgdG9kYXlIZWlnaHQsIHRvZGF5V2lkdGgsIHRvZGF5Qm9yZGVyUmFkaXVzIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERhdGUgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vLi4vLi4vY2xhc3Mvdmlldy10eXBlJztcblxuY29uc3QgbWFpbkhlaWdodCA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtY2FsZW5kYXItb3ZlcmxheScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGdldCB2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnZpZXc7XG4gICAgfVxuXG4gICAgaGVhZGVySGVpZ2h0ID0gaGVhZGVySGVpZ2h0O1xuXG4gICAgbWFpbkhlaWdodCA9IG1haW5IZWlnaHQ7XG5cbiAgICB0b2RheUhlaWdodCA9IHRvZGF5SGVpZ2h0O1xuXG4gICAgdG9kYXlXaWR0aCA9IHRvZGF5V2lkdGg7XG5cbiAgICB0b2RheUJvcmRlclJhZGl1cyA9IHRvZGF5Qm9yZGVyUmFkaXVzO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtY2FsZW5kYXItb3ZlcmxheScpIGNsYXNzTmFtZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBzZXRUb2RheVBvaW50KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IEdhbnR0RGF0ZSgpLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgdG9kYXlFbGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1yZWN0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1saW5lJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBpZiAocmVjdCkge1xuICAgICAgICAgICAgICAgIHJlY3Quc3R5bGUubGVmdCA9IGAke3ggLSB0b2RheVdpZHRoIC8gMn1weGA7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS50b3AgPSBgJHtoZWFkZXJIZWlnaHQgLSB0b2RheUhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgcmVjdC5pbm5lckhUTUwgPSB0b2RheS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLnRvcCA9IGAke2hlYWRlckhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgbGluZS5zdHlsZS5ib3R0b20gPSBgJHstbWFpbkhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2RheUVsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIE5vdGU6IHRoZSB6b25lIG1heSBiZSBub29wZWQgdGhyb3VnaCBgQm9vdHN0cmFwT3B0aW9uc2Agd2hlbiBib290c3RyYXBwaW5nIHRoZSByb290IG1vZHVsZS4gVGhpcyBtZWFuc1xuICAgICAgICAvLyB0aGUgYG9uU3RhYmxlYCB3aWxsIG5ldmVyIGVtaXQgYW55IHZhbHVlLlxuICAgICAgICBjb25zdCBvblN0YWJsZSQgPSB0aGlzLm5nWm9uZS5pc1N0YWJsZSA/IGZyb20oUHJvbWlzZS5yZXNvbHZlKCkpIDogdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgLy8gTm9ybWFsbHkgdGhpcyBpc24ndCBpbiB0aGUgem9uZSwgYnV0IGl0IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBmb3IgYXBwc1xuICAgICAgICAvLyB1c2luZyBgem9uZS1wYXRjaC1yeGpzYCBiZWNhdXNlIGl0J2xsIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gaXQgdW5zdWJzY3JpYmVzLlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBvblN0YWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG1lcmdlKHRoaXMuZ2FudHRVcHBlci52aWV3Q2hhbmdlLCB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUb2RheVBvaW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkoaW5kZXg6IG51bWJlciwgcG9pbnQ6IEdhbnR0RGF0ZVBvaW50KSB7XG4gICAgICAgIHJldHVybiBwb2ludC50ZXh0IHx8IGluZGV4O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXlcIiBbc3R5bGUud2lkdGgucHhdPVwidmlldy53aWR0aFwiPlxuICA8c3BhbiBjbGFzcz1cInRvZGF5LXJlY3RcIiBbaGlkZGVuXT1cImdhbnR0VXBwZXIudmlld1R5cGUgIT09IHZpZXdUeXBlcy5kYXlcIj4gPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInRvZGF5LWxpbmVcIiAqbmdJZj1cImdhbnR0VXBwZXIuc2hvd1RvZGF5TGluZVwiPiA8L3NwYW4+XG48L2Rpdj5cblxuPHN2ZyBjbGFzcz1cImdhbnR0LWNhbGVuZGFyLW92ZXJsYXktbWFpblwiIFthdHRyLndpZHRoXT1cInZpZXcud2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiaGVhZGVySGVpZ2h0XCI+XG4gIDxnPlxuICAgIDx0ZXh0IGNsYXNzPVwicHJpbWFyeS10ZXh0XCIgKm5nRm9yPVwibGV0IHBvaW50IG9mIHZpZXcucHJpbWFyeURhdGVQb2ludHM7IHRyYWNrQnk6IHRyYWNrQnlcIiBbYXR0ci54XT1cInBvaW50LnhcIiBbYXR0ci55XT1cInBvaW50LnlcIj5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8dGV4dCBjbGFzcz1cInNlY29uZGFyeS10ZXh0XCIgW2NsYXNzLnNlY29uZGFyeS10ZXh0LXdlZWtlbmRdPVwicG9pbnQuYWRkaXRpb25zPy5pc1dlZWtlbmRcIiBbYXR0ci54XT1cInBvaW50LnhcIiBbYXR0ci55XT1cInBvaW50LnlcIj5cbiAgICAgICAge3sgcG9pbnQudGV4dCB9fVxuICAgICAgPC90ZXh0PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGc+XG4gICAgICA8bGluZVxuICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5wcmltYXJ5RGF0ZVBvaW50czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgIFthdHRyLngxXT1cIihpICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIihpICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICBbYXR0ci55Ml09XCJtYWluSGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICA8L2c+XG5cbiAgICA8Zz5cbiAgICAgIDxsaW5lIFthdHRyLngxXT1cIjBcIiBbYXR0ci54Ml09XCJ2aWV3LndpZHRoXCIgW2F0dHIueTFdPVwiaGVhZGVySGVpZ2h0XCIgW2F0dHIueTJdPVwiaGVhZGVySGVpZ2h0XCIgY2xhc3M9XCJoZWFkZXItbGluZVwiPjwvbGluZT5cbiAgICA8L2c+XG4gIDwvZz5cbiAgPGc+XG4gICAgPGcgKm5nSWY9XCJ2aWV3LnNob3dUaW1lbGluZVwiPlxuICAgICAgPGxpbmVcbiAgICAgICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIHZpZXcuc2Vjb25kYXJ5RGF0ZVBvaW50czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgIFthdHRyLngxXT1cIihpICsgMSkgKiB2aWV3LmNlbGxXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIihpICsgMSkgKiB2aWV3LmNlbGxXaWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cImhlYWRlckhlaWdodFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInNlY29uZGFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICA8bGluZVxuICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5wcmltYXJ5RGF0ZVBvaW50czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgIFthdHRyLngxXT1cIihpICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIihpICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICBbYXR0ci55Ml09XCJtYWluSGVpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuIl19
@@ -0,0 +1,13 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GanttDragBackdropComponent {
4
+ }
5
+ GanttDragBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDragBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ GanttDragBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: GanttDragBackdropComponent, selector: "gantt-drag-backdrop", host: { classAttribute: "gantt-drag-backdrop" }, ngImport: i0, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttDragBackdropComponent, decorators: [{
8
+ type: Component,
9
+ args: [{ selector: 'gantt-drag-backdrop', host: {
10
+ class: 'gantt-drag-backdrop'
11
+ }, template: "<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" }]
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1iYWNrZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9kcmFnLWJhY2tkcm9wL2RyYWctYmFja2Ryb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvZHJhZy1iYWNrZHJvcC9kcmFnLWJhY2tkcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzFDLE1BQU0sT0FBTywwQkFBMEI7O3VIQUExQiwwQkFBMEI7MkdBQTFCLDBCQUEwQiw0R0NUdkMsdUpBTUE7MkZER2EsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNJLHFCQUFxQixRQUV6Qjt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LWRyYWctYmFja2Ryb3AnLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9kcmFnLWJhY2tkcm9wLmNvbXBvbmVudC5odG1sYCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZ2FudHQtZHJhZy1iYWNrZHJvcCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0RHJhZ0JhY2tkcm9wQ29tcG9uZW50IHt9XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtZHJhZy1tYXNrXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXRlLXJhbmdlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzdGFydFwiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImVuZFwiPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { Component, Input, HostBinding } from '@angular/core';
2
+ import { icons } from './icons';
3
+ import * as i0 from "@angular/core";
4
+ export class GanttIconComponent {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ this.isIcon = true;
8
+ }
9
+ set iconName(name) {
10
+ this.setSvg(name);
11
+ }
12
+ setSvg(name) {
13
+ const iconSvg = icons[name];
14
+ if (iconSvg) {
15
+ this.elementRef.nativeElement.innerHTML = iconSvg;
16
+ }
17
+ else {
18
+ this.elementRef.nativeElement.innerHTML = '';
19
+ }
20
+ }
21
+ }
22
+ GanttIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttIconComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
23
+ GanttIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: GanttIconComponent, selector: "gantt-icon", inputs: { iconName: "iconName" }, host: { properties: { "class.gantt-icon": "this.isIcon" } }, ngImport: i0, template: '', isInline: true });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GanttIconComponent, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'gantt-icon',
28
+ template: ''
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { isIcon: [{
31
+ type: HostBinding,
32
+ args: ['class.gantt-icon']
33
+ }], iconName: [{
34
+ type: Input
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQU1oQyxNQUFNLE9BQU8sa0JBQWtCO0lBTzNCLFlBQW9CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBTnRCLFdBQU0sR0FBRyxJQUFJLENBQUM7SUFNVyxDQUFDO0lBSjNELElBQWEsUUFBUSxDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBSUQsTUFBTSxDQUFDLElBQVk7UUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1NBQ3JEO2FBQU07WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQzs7K0dBaEJRLGtCQUFrQjttR0FBbEIsa0JBQWtCLGlKQUZqQixFQUFFOzJGQUVILGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7aUdBRW9DLE1BQU07c0JBQXRDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUVsQixRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGljb25zIH0gZnJvbSAnLi9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtaWNvbicsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0SWNvbkNvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1pY29uJykgaXNJY29uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNldCBpY29uTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRTdmcobmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIHNldFN2ZyhuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaWNvblN2ZyA9IGljb25zW25hbWVdO1xuICAgICAgICBpZiAoaWNvblN2Zykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaWNvblN2ZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,95 @@
1
+ import { __decorate, __param } from "tslib";
2
+ import { Inject } from '@angular/core';
3
+ import { GanttLinkType } from '../../../class/link';
4
+ import { GANTT_UPPER_TOKEN } from '../../../gantt-upper';
5
+ import { GanttLinkLine } from './line';
6
+ let GanttLinkLineCurve = class GanttLinkLineCurve extends GanttLinkLine {
7
+ constructor(ganttUpper) {
8
+ super();
9
+ this.ganttUpper = ganttUpper;
10
+ }
11
+ generateSSPath(source, target) {
12
+ const x1 = source.before.x;
13
+ const y1 = source.before.y;
14
+ const x4 = target.before.x;
15
+ const y4 = target.before.y;
16
+ const isMirror = y4 > y1 ? 0 : 1;
17
+ const radius = Math.abs(y4 - y1) / 2;
18
+ if (x4 > x1) {
19
+ return `M ${x1} ${y1}
20
+ A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
21
+ L ${x4} ${y4}`;
22
+ }
23
+ else {
24
+ return `M ${x1} ${y1}
25
+ L ${x4} ${y1}
26
+ A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
27
+ }
28
+ }
29
+ generateFFPath(source, target) {
30
+ const x1 = source.after.x;
31
+ const y1 = source.after.y;
32
+ const x4 = target.after.x;
33
+ const y4 = target.after.y;
34
+ const isMirror = y4 > y1 ? 1 : 0;
35
+ const radius = Math.abs(y4 - y1) / 2;
36
+ if (x4 > x1) {
37
+ return `M ${x1} ${y1}
38
+ L ${x4} ${y1}
39
+ A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;
40
+ }
41
+ else {
42
+ return `M ${x1} ${y1}
43
+ A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}
44
+ L ${x4} ${y4}`;
45
+ }
46
+ }
47
+ generateFSAndSFPath(source, target, type) {
48
+ let x1 = source.after.x;
49
+ let y1 = source.after.y;
50
+ let x4 = target.before.x;
51
+ let y4 = target.before.y;
52
+ const bezierWeight = 0.5;
53
+ if (type === GanttLinkType.sf) {
54
+ x1 = target.after.x;
55
+ y1 = target.after.y;
56
+ x4 = source.before.x;
57
+ y4 = source.before.y;
58
+ }
59
+ let dx = Math.abs(x4 - x1) * bezierWeight;
60
+ let x2 = x1 + dx;
61
+ let x3 = x4 - dx;
62
+ const centerX = (x1 + x4) / 2;
63
+ const centerY = (y1 + y4) / 2;
64
+ let controlX = this.ganttUpper.styles.lineHeight / 2;
65
+ const controlY = this.ganttUpper.styles.lineHeight / 2;
66
+ if (x1 >= x4) {
67
+ if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {
68
+ return `M ${x1} ${y1}
69
+ C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${x1} ${y4 > y1 ? y1 + controlY : y1 - controlY}
70
+ L ${x4} ${y4 > y1 ? y4 - controlY : y4 + controlY}
71
+ C ${x4 - controlY} ${y4 > y1 ? y4 - controlY : y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}
72
+ `;
73
+ }
74
+ else {
75
+ controlX = this.ganttUpper.styles.lineHeight;
76
+ return `M ${x1} ${y1}
77
+ C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${centerX} ${centerY}
78
+ C ${x4 - controlX} ${y4 > y1 ? y4 - controlX : y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}
79
+ `;
80
+ }
81
+ }
82
+ else if (this.ganttUpper.linkOptions?.showArrow && x4 - x1 < 200) {
83
+ dx = Math.max(Math.abs(y4 - y1) * bezierWeight, 60);
84
+ x2 = x1 + dx;
85
+ x3 = x4 - dx;
86
+ return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
87
+ }
88
+ return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;
89
+ }
90
+ };
91
+ GanttLinkLineCurve = __decorate([
92
+ __param(0, Inject(GANTT_UPPER_TOKEN))
93
+ ], GanttLinkLineCurve);
94
+ export { GanttLinkLineCurve };
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VydmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9saW5rcy9saW5lcy9jdXJ2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdkMsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBbUIsU0FBUSxhQUFhO0lBQ2pELFlBQStDLFVBQXNCO1FBQ2pFLEtBQUssRUFBRSxDQUFDO1FBRG1DLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFxQixFQUFFLE1BQXFCO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ1IsTUFBTSxJQUFJLE1BQU0sUUFBUSxRQUFRLElBQUksRUFBRSxJQUFJLEVBQUU7d0JBQzVDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0gsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNSLEVBQUUsSUFBSSxFQUFFO3dCQUNSLE1BQU0sSUFBSSxNQUFNLFFBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBcUIsRUFBRSxNQUFxQjtRQUN2RCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixNQUFNLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ1QsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNSLEVBQUUsSUFBSSxFQUFFO3dCQUNSLE1BQU0sSUFBSSxNQUFNLFFBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUM5RDthQUFNO1lBQ0gsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNSLE1BQU0sSUFBSSxNQUFNLFFBQVEsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFO3dCQUM1QyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBcUIsRUFBRSxNQUFxQixFQUFFLElBQW9CO1FBQ2xGLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUV6QixJQUFJLElBQUksS0FBSyxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzNCLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwQixFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUMxQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFdkQsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hELE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDWixFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxJQUN6RixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFDbkM7d0JBQ1EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRO3dCQUM3QyxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLEtBQUssRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7cUJBQy9GLENBQUM7YUFDVDtpQkFBTTtnQkFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUM3QyxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ1osRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxJQUFJLE9BQU8sSUFBSSxPQUFPO3dCQUNyRyxFQUFFLEdBQUcsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLElBQUksRUFBRSxHQUFHLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7cUJBQzlGLENBQUM7YUFDVDtTQUNKO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxTQUFTLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUU7WUFDaEUsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2IsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQ2hFO1FBRUQsT0FBTyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0NBQ0osQ0FBQTtBQTFGWSxrQkFBa0I7SUFDZCxXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0dBRDdCLGtCQUFrQixDQTBGOUI7U0ExRlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHYW50dExpbmtJdGVtLCBHYW50dExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3MvbGluayc7XG5pbXBvcnQgeyBHYW50dFVwcGVyLCBHQU5UVF9VUFBFUl9UT0tFTiB9IGZyb20gJy4uLy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IEdhbnR0TGlua0xpbmUgfSBmcm9tICcuL2xpbmUnO1xuXG5leHBvcnQgY2xhc3MgR2FudHRMaW5rTGluZUN1cnZlIGV4dGVuZHMgR2FudHRMaW5rTGluZSB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHJpdmF0ZSBnYW50dFVwcGVyOiBHYW50dFVwcGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVTU1BhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgY29uc3QgeDEgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgIGNvbnN0IHkxID0gc291cmNlLmJlZm9yZS55O1xuICAgICAgICBjb25zdCB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgY29uc3QgeTQgPSB0YXJnZXQuYmVmb3JlLnk7XG4gICAgICAgIGNvbnN0IGlzTWlycm9yID0geTQgPiB5MSA/IDAgOiAxO1xuICAgICAgICBjb25zdCByYWRpdXMgPSBNYXRoLmFicyh5NCAtIHkxKSAvIDI7XG5cbiAgICAgICAgaWYgKHg0ID4geDEpIHtcbiAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBBICR7cmFkaXVzfSAke3JhZGl1c30gMCAxICR7aXNNaXJyb3J9ICR7eDF9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgQSAke3JhZGl1c30gJHtyYWRpdXN9IDAgMSAke2lzTWlycm9yfSAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2VuZXJhdGVGRlBhdGgoc291cmNlOiBHYW50dExpbmtJdGVtLCB0YXJnZXQ6IEdhbnR0TGlua0l0ZW0pIHtcbiAgICAgICAgY29uc3QgeDEgPSBzb3VyY2UuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTEgPSBzb3VyY2UuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgeDQgPSB0YXJnZXQuYWZ0ZXIueDtcbiAgICAgICAgY29uc3QgeTQgPSB0YXJnZXQuYWZ0ZXIueTtcbiAgICAgICAgY29uc3QgaXNNaXJyb3IgPSB5NCA+IHkxID8gMSA6IDA7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGguYWJzKHk0IC0geTEpIC8gMjtcbiAgICAgICAgaWYgKHg0ID4geDEpIHtcbiAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEEgJHtyYWRpdXN9ICR7cmFkaXVzfSAwIDEgJHtpc01pcnJvcn0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEEgJHtyYWRpdXN9ICR7cmFkaXVzfSAwIDEgJHtpc01pcnJvcn0gJHt4MX0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmF0ZUZTQW5kU0ZQYXRoKHNvdXJjZTogR2FudHRMaW5rSXRlbSwgdGFyZ2V0OiBHYW50dExpbmtJdGVtLCB0eXBlPzogR2FudHRMaW5rVHlwZSkge1xuICAgICAgICBsZXQgeDEgPSBzb3VyY2UuYWZ0ZXIueDtcbiAgICAgICAgbGV0IHkxID0gc291cmNlLmFmdGVyLnk7XG4gICAgICAgIGxldCB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgbGV0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuICAgICAgICBjb25zdCBiZXppZXJXZWlnaHQgPSAwLjU7XG5cbiAgICAgICAgaWYgKHR5cGUgPT09IEdhbnR0TGlua1R5cGUuc2YpIHtcbiAgICAgICAgICAgIHgxID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgICAgICB5MSA9IHRhcmdldC5hZnRlci55O1xuICAgICAgICAgICAgeDQgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgICAgICB5NCA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkeCA9IE1hdGguYWJzKHg0IC0geDEpICogYmV6aWVyV2VpZ2h0O1xuICAgICAgICBsZXQgeDIgPSB4MSArIGR4O1xuICAgICAgICBsZXQgeDMgPSB4NCAtIGR4O1xuXG4gICAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4NCkgLyAyO1xuICAgICAgICBjb25zdCBjZW50ZXJZID0gKHkxICsgeTQpIC8gMjtcblxuICAgICAgICBsZXQgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBjb250cm9sWSA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCAvIDI7XG5cbiAgICAgICAgaWYgKHgxID49IHg0KSB7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTQgPiB5MSA/IHkxICsgY29udHJvbFggOiB5MSAtIGNvbnRyb2xYfSAke3gxfSAke1xuICAgICAgICAgICAgICAgICAgICB5NCA+IHkxID8geTEgKyBjb250cm9sWSA6IHkxIC0gY29udHJvbFlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCA+IHkxID8geTQgLSBjb250cm9sWSA6IHk0ICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xZfSAke3k0ID4geTEgPyB5NCAtIGNvbnRyb2xZIDogeTQgKyBjb250cm9sWX0gICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgYDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTQgPiB5MSA/IHkxICsgY29udHJvbFggOiB5MSAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cbiAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTQgPiB5MSA/IHk0IC0gY29udHJvbFggOiB5NCArIGNvbnRyb2xYfSAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nYW50dFVwcGVyLmxpbmtPcHRpb25zPy5zaG93QXJyb3cgJiYgeDQgLSB4MSA8IDIwMCkge1xuICAgICAgICAgICAgZHggPSBNYXRoLm1heChNYXRoLmFicyh5NCAtIHkxKSAqIGJlemllcldlaWdodCwgNjApO1xuICAgICAgICAgICAgeDIgPSB4MSArIGR4O1xuICAgICAgICAgICAgeDMgPSB4NCAtIGR4O1xuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgIH1cbn1cbiJdfQ==