@worktile/gantt 18.1.0-next.2 → 19.0.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 (74) hide show
  1. package/components/main/gantt-main.component.d.ts +3 -2
  2. package/fesm2022/worktile-gantt.mjs +124 -127
  3. package/fesm2022/worktile-gantt.mjs.map +1 -1
  4. package/gantt-item-upper.d.ts +1 -1
  5. package/gantt-upper.d.ts +1 -1
  6. package/gantt.module.d.ts +1 -1
  7. package/gantt.pipe.d.ts +5 -5
  8. package/package.json +4 -6
  9. package/esm2022/class/baseline.mjs +0 -18
  10. package/esm2022/class/date-point.mjs +0 -11
  11. package/esm2022/class/event.mjs +0 -27
  12. package/esm2022/class/group.mjs +0 -17
  13. package/esm2022/class/index.mjs +0 -9
  14. package/esm2022/class/item.mjs +0 -85
  15. package/esm2022/class/link.mjs +0 -19
  16. package/esm2022/class/toolbar.mjs +0 -2
  17. package/esm2022/class/view-type.mjs +0 -10
  18. package/esm2022/components/bar/bar-drag.mjs +0 -560
  19. package/esm2022/components/bar/bar.component.mjs +0 -132
  20. package/esm2022/components/baseline/baseline.component.mjs +0 -43
  21. package/esm2022/components/calendar/grid/calendar-grid.component.mjs +0 -66
  22. package/esm2022/components/calendar/header/calendar-header.component.mjs +0 -70
  23. package/esm2022/components/drag-backdrop/drag-backdrop.component.mjs +0 -21
  24. package/esm2022/components/icon/icon.component.mjs +0 -37
  25. package/esm2022/components/icon/icons.mjs +0 -93
  26. package/esm2022/components/links/lines/curve.mjs +0 -95
  27. package/esm2022/components/links/lines/factory.mjs +0 -14
  28. package/esm2022/components/links/lines/line.mjs +0 -24
  29. package/esm2022/components/links/lines/straight.mjs +0 -58
  30. package/esm2022/components/links/links.component.mjs +0 -196
  31. package/esm2022/components/loader/loader.component.mjs +0 -30
  32. package/esm2022/components/main/gantt-main.component.mjs +0 -94
  33. package/esm2022/components/range/range.component.mjs +0 -25
  34. package/esm2022/components/scrollbar/scrollbar.component.mjs +0 -27
  35. package/esm2022/components/table/body/gantt-table-body.component.mjs +0 -329
  36. package/esm2022/components/table/header/gantt-table-header.component.mjs +0 -152
  37. package/esm2022/components/toolbar/toolbar.component.mjs +0 -37
  38. package/esm2022/gantt-abstract.mjs +0 -3
  39. package/esm2022/gantt-dom.service.mjs +0 -156
  40. package/esm2022/gantt-drag-container.mjs +0 -78
  41. package/esm2022/gantt-item-upper.mjs +0 -67
  42. package/esm2022/gantt-print.service.mjs +0 -94
  43. package/esm2022/gantt-upper.mjs +0 -402
  44. package/esm2022/gantt.component.mjs +0 -361
  45. package/esm2022/gantt.config.mjs +0 -69
  46. package/esm2022/gantt.module.mjs +0 -141
  47. package/esm2022/gantt.pipe.mjs +0 -61
  48. package/esm2022/gantt.styles.mjs +0 -10
  49. package/esm2022/i18n/i18n.mjs +0 -12
  50. package/esm2022/i18n/index.mjs +0 -18
  51. package/esm2022/i18n/locales/de-de.mjs +0 -51
  52. package/esm2022/i18n/locales/en-us.mjs +0 -49
  53. package/esm2022/i18n/locales/ja-jp.mjs +0 -49
  54. package/esm2022/i18n/locales/ru-ru.mjs +0 -51
  55. package/esm2022/i18n/locales/zh-hans.mjs +0 -49
  56. package/esm2022/i18n/locales/zh-hant.mjs +0 -49
  57. package/esm2022/public-api.mjs +0 -28
  58. package/esm2022/root.component.mjs +0 -174
  59. package/esm2022/table/gantt-column.component.mjs +0 -46
  60. package/esm2022/table/gantt-table.component.mjs +0 -49
  61. package/esm2022/utils/date.mjs +0 -180
  62. package/esm2022/utils/drag-scroll.mjs +0 -54
  63. package/esm2022/utils/helpers.mjs +0 -73
  64. package/esm2022/utils/passive-listeners.mjs +0 -30
  65. package/esm2022/utils/set-style-with-vendor-prefix.mjs +0 -15
  66. package/esm2022/views/day.mjs +0 -58
  67. package/esm2022/views/factory.mjs +0 -22
  68. package/esm2022/views/hour.mjs +0 -89
  69. package/esm2022/views/month.mjs +0 -52
  70. package/esm2022/views/quarter.mjs +0 -55
  71. package/esm2022/views/view.mjs +0 -177
  72. package/esm2022/views/week.mjs +0 -53
  73. package/esm2022/views/year.mjs +0 -54
  74. package/esm2022/worktile-gantt.mjs +0 -5
@@ -1,132 +0,0 @@
1
- import { Component, HostBinding, Inject, ViewChild, Output, EventEmitter, ViewChildren } from '@angular/core';
2
- import { from, fromEvent, merge, Observable } from 'rxjs';
3
- import { startWith, switchMap, take, 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 { NgIf, NgTemplateOutlet } from '@angular/common';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../../gantt-drag-container";
12
- import * as i2 from "./bar-drag";
13
- import * as i3 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
- }
27
- ngOnInit() {
28
- super.ngOnInit();
29
- this.dragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
30
- this.elementRef.nativeElement.style.pointerEvents = 'none';
31
- });
32
- this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
33
- this.elementRef.nativeElement.style.pointerEvents = '';
34
- this.setContentBackground();
35
- });
36
- }
37
- ngOnChanges(changes) {
38
- super.ngOnChanges(changes);
39
- if (!this.firstChange) {
40
- this.drag.updateItem(this.item);
41
- if (changes.item.currentValue.refs?.width !== changes.item.previousValue.refs?.width ||
42
- changes.item.currentValue.color !== changes.item.previousValue.color ||
43
- changes.item.currentValue.start?.value !== changes.item.previousValue.start?.value ||
44
- changes.item.currentValue.end?.value !== changes.item.previousValue.end?.value) {
45
- this.setContentBackground();
46
- }
47
- }
48
- }
49
- ngAfterViewInit() {
50
- // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
51
- // the `onStable` will never emit any value.
52
- const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));
53
- // Normally this isn't in the zone, but it can cause performance regressions for apps
54
- // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.
55
- this.ngZone.runOutsideAngular(() => {
56
- onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
57
- this.drag.initialize(this.elementRef, this.item, this.ganttUpper);
58
- });
59
- });
60
- this.setContentBackground();
61
- this.handles.changes
62
- .pipe(startWith(this.handles), switchMap(() =>
63
- // Note: we need to explicitly subscribe outside of the Angular zone since `addEventListener`
64
- // is called when the `fromEvent` is subscribed.
65
- new Observable((subscriber) => this.ngZone.runOutsideAngular(() => merge(...this.handles.toArray().map((handle) => fromEvent(handle.nativeElement, 'mousedown'))).subscribe(subscriber)))), takeUntil(this.unsubscribe$))
66
- .subscribe((event) => {
67
- event.stopPropagation();
68
- });
69
- }
70
- onBarClick(event) {
71
- this.barClick.emit({ event, item: this.item.origin });
72
- }
73
- setContentBackground() {
74
- if (this.item.refs?.width) {
75
- const contentElement = this.contentElementRef.nativeElement;
76
- const color = this.item.color || barBackground;
77
- const style = this.item.barStyle || {};
78
- const barElement = this.elementRef.nativeElement;
79
- if (this.item.origin.start && this.item.origin.end) {
80
- style.background = color;
81
- style.borderRadius = '';
82
- }
83
- if (this.item.origin.start && !this.item.origin.end) {
84
- style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));
85
- const borderRadius = '4px 12.5px 12.5px 4px';
86
- style.borderRadius = borderRadius;
87
- barElement.style.borderRadius = borderRadius;
88
- }
89
- if (!this.item.origin.start && this.item.origin.end) {
90
- style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));
91
- const borderRadius = '12.5px 4px 4px 12.5px';
92
- style.borderRadius = borderRadius;
93
- barElement.style.borderRadius = borderRadius;
94
- }
95
- if (this.item.progress >= 0) {
96
- const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress');
97
- style.background = hexToRgb(color, 0.3);
98
- style.borderRadius = '';
99
- contentProgressElement.style.background = color;
100
- }
101
- for (const key in style) {
102
- if (style.hasOwnProperty(key)) {
103
- contentElement.style[key] = style[key];
104
- }
105
- }
106
- }
107
- }
108
- stopPropagation(event) {
109
- event.stopPropagation();
110
- }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", 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 }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: NgxGanttBarComponent, isStandalone: true, 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, usesOnChanges: 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", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
113
- }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxGanttBarComponent, decorators: [{
115
- type: Component,
116
- args: [{ selector: 'ngx-gantt-bar,gantt-bar', providers: [GanttBarDrag], standalone: true, imports: [NgIf, NgTemplateOutlet], 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" }]
117
- }], ctorParameters: () => [{ type: i1.GanttDragContainer }, { type: i2.GanttBarDrag }, { type: i0.ElementRef }, { type: i3.GanttUpper, decorators: [{
118
- type: Inject,
119
- args: [GANTT_UPPER_TOKEN]
120
- }] }, { type: i0.NgZone }], propDecorators: { barClick: [{
121
- type: Output
122
- }], contentElementRef: [{
123
- type: ViewChild,
124
- args: ['content']
125
- }], ganttItemClass: [{
126
- type: HostBinding,
127
- args: ['class.gantt-bar']
128
- }], handles: [{
129
- type: ViewChildren,
130
- args: ['handle']
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV6RCxTQUFTLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3JFLE9BQU8sbUJBQW1CLFlBQVksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQVNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBU3BELFlBQ1ks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RUFBRSxnQkFBZ0IsQ0FBQzs7MEJBZTVCLE1BQU07MkJBQUMsaUJBQWlCOzhEQVpuQixRQUFRO3NCQUFqQixNQUFNO2dCQUVlLGlCQUFpQjtzQkFBdEMsU0FBUzt1QkFBQyxTQUFTO2dCQUVZLGNBQWM7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUVOLE9BQU87c0JBQTlCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5mdW5jdGlvbiBsaW5lYXJHcmFkaWVudChzaWRlT3JDb3JuZXI6IHN0cmluZywgY29sb3I6IHN0cmluZywgc3RvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBsaW5lYXItZ3JhZGllbnQoJHtzaWRlT3JDb3JuZXJ9LCR7Y29sb3J9IDAlLCR7c3RvcH0gNDAlKWA7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWdhbnR0LWJhcixnYW50dC1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0dhbnR0QmFyRHJhZ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4R2FudHRCYXJDb21wb25lbnQgZXh0ZW5kcyBHYW50dEl0ZW1VcHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBPdXRwdXQoKSBiYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRCYXJDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtYmFyJykgZ2FudHRJdGVtQ2xhc3MgPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZHJlbignaGFuZGxlJykgaGFuZGxlczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lcixcbiAgICAgICAgcHJpdmF0ZSBkcmFnOiBHYW50dEJhckRyYWcsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgb3ZlcnJpZGUgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBnYW50dFVwcGVyKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5kcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdDb250YWluZXIuZHJhZ0VuZGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWcudXBkYXRlSXRlbSh0aGlzLml0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY2hhbmdlcy5pdGVtLmN1cnJlbnRWYWx1ZS5yZWZzPy53aWR0aCAhPT0gY2hhbmdlcy5pdGVtLnByZXZpb3VzVmFsdWUucmVmcz8ud2lkdGggfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmNvbG9yICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5jb2xvciB8fFxuICAgICAgICAgICAgICAgIGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWUuc3RhcnQ/LnZhbHVlICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5zdGFydD8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLmVuZD8udmFsdWUgIT09IGNoYW5nZXMuaXRlbS5wcmV2aW91c1ZhbHVlLmVuZD8udmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudEJhY2tncm91bmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gTm90ZTogdGhlIHpvbmUgbWF5IGJlIG5vb3BlZCB0aHJvdWdoIGBCb290c3RyYXBPcHRpb25zYCB3aGVuIGJvb3RzdHJhcHBpbmcgdGhlIHJvb3QgbW9kdWxlLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIHRoZSBgb25TdGFibGVgIHdpbGwgbmV2ZXIgZW1pdCBhbnkgdmFsdWUuXG4gICAgICAgIGNvbnN0IG9uU3RhYmxlJCA9IHRoaXMubmdab25lLmlzU3RhYmxlID8gZnJvbShQcm9taXNlLnJlc29sdmUoKSkgOiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpO1xuICAgICAgICAvLyBOb3JtYWxseSB0aGlzIGlzbid0IGluIHRoZSB6b25lLCBidXQgaXQgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGZvciBhcHBzXG4gICAgICAgIC8vIHVzaW5nIGB6b25lLXBhdGNoLXJ4anNgIGJlY2F1c2UgaXQnbGwgdHJpZ2dlciBhIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpdCB1bnN1YnNjcmliZXMuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3RhYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnLmluaXRpYWxpemUodGhpcy5lbGVtZW50UmVmLCB0aGlzLml0ZW0sIHRoaXMuZ2FudHRVcHBlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXRDb250ZW50QmFja2dyb3VuZCgpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5oYW5kbGVzKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgc3Vic2NyaWJlIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgem9uZSBzaW5jZSBgYWRkRXZlbnRMaXN0ZW5lcmBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGNhbGxlZCB3aGVuIHRoZSBgZnJvbUV2ZW50YCBpcyBzdWJzY3JpYmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9ic2VydmFibGU8RXZlbnQ+KChzdWJzY3JpYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlKC4uLnRoaXMuaGFuZGxlcy50b0FycmF5KCkubWFwKChoYW5kbGUpID0+IGZyb21FdmVudChoYW5kbGUubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQmFyQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuYmFyQ2xpY2suZW1pdCh7IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW0ub3JpZ2luIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udGVudEJhY2tncm91bmQoKSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW0ucmVmcz8ud2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLml0ZW0uY29sb3IgfHwgYmFyQmFja2dyb3VuZDtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0gdGhpcy5pdGVtLmJhclN0eWxlIHx8IHt9O1xuICAgICAgICAgICAgY29uc3QgYmFyRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmICF0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gbGVmdCcsIGhleFRvUmdiKGNvbG9yLCAwLjU1KSwgaGV4VG9SZ2IoY29sb3IsIDEpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9ICc0cHggMTIuNXB4IDEyLjVweCA0cHgnO1xuICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGl1cztcbiAgICAgICAgICAgICAgICBiYXJFbGVtZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9IGJvcmRlclJhZGl1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gcmlnaHQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJSYWRpdXMgPSAnMTIuNXB4IDRweCA0cHggMTIuNXB4JztcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICAgICAgYmFyRWxlbWVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLnByb2dyZXNzID49IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UHJvZ3Jlc3NFbGVtZW50ID0gY29udGVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWJhci1jb250ZW50LXByb2dyZXNzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGhleFRvUmdiKGNvbG9yLCAwLjMpO1xuICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcnO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRQcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IGNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LnN0eWxlW2tleV0gPSBzdHlsZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWJhci1sYXllclwiPlxuICA8ZGl2IGNsYXNzPVwiZHJhZy1oYW5kbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZHJhZ2dhYmxlICYmIGdhbnR0VXBwZXIuZHJhZ2dhYmxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiICNoYW5kbGU+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIiAjaGFuZGxlPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpdGVtLmxpbmthYmxlICYmIGdhbnR0VXBwZXIubGlua2FibGVcIiBjbGFzcz1cImxpbmstaGFuZGxlc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCI+PHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIj4gPHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWJvcmRlclwiPjwvZGl2PlxuPGRpdiAjY29udGVudCBjbGFzcz1cImdhbnR0LWJhci1jb250ZW50XCIgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWNvbnRlbnQtcHJvZ3Jlc3NcIiAqbmdJZj1cIml0ZW0ucHJvZ3Jlc3MgPj0gMFwiIFtzdHlsZS53aWR0aC4lXT1cIml0ZW0ucHJvZ3Jlc3MgKiAxMDBcIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbS5vcmlnaW4sIHJlZnM6IGl0ZW0ucmVmcyB9XCI+IDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { Component, HostBinding, Inject, Input } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { takeUntil } from 'rxjs/operators';
4
- import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
5
- import { NgIf, NgTemplateOutlet } from '@angular/common';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../gantt-upper";
8
- export class NgxGanttBaselineComponent {
9
- constructor(elementRef, ganttUpper) {
10
- this.elementRef = elementRef;
11
- this.ganttUpper = ganttUpper;
12
- this.unsubscribe$ = new Subject();
13
- this.ganttBaselineClass = true;
14
- }
15
- ngOnInit() {
16
- this.baselineItem.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
17
- this.setPositions();
18
- });
19
- }
20
- setPositions() {
21
- const itemElement = this.elementRef.nativeElement;
22
- itemElement.style.left = this.baselineItem.refs.x + 'px';
23
- itemElement.style.bottom = '2px';
24
- itemElement.style.width = this.baselineItem.refs.width + 'px';
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxGanttBaselineComponent, deps: [{ token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: NgxGanttBaselineComponent, isStandalone: true, selector: "ngx-gantt-baseline,gantt-baseline", inputs: { baselineItem: "baselineItem", template: "template" }, host: { properties: { "class.gantt-baseline": "this.ganttBaselineClass" } }, ngImport: i0, template: "<div #content *ngIf=\"baselineItem\" class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgxGanttBaselineComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'ngx-gantt-baseline,gantt-baseline', standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div #content *ngIf=\"baselineItem\" class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n</div>\n" }]
32
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.GanttUpper, decorators: [{
33
- type: Inject,
34
- args: [GANTT_UPPER_TOKEN]
35
- }] }], propDecorators: { baselineItem: [{
36
- type: Input
37
- }], template: [{
38
- type: Input
39
- }], ganttBaselineClass: [{
40
- type: HostBinding,
41
- args: ['class.gantt-baseline']
42
- }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFzZWxpbmUvYmFzZWxpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFzZWxpbmUvYmFzZWxpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBa0MsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFRekQsTUFBTSxPQUFPLHlCQUF5QjtJQVNsQyxZQUFvQixVQUFtQyxFQUFvQyxVQUFzQjtRQUE3RixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUFvQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSjFHLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVMLHVCQUFrQixHQUFHLElBQUksQ0FBQztJQUVxRCxDQUFDO0lBRXJILFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFlBQVk7UUFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDbEQsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6RCxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDakMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNsRSxDQUFDOzhHQXRCUSx5QkFBeUIsNENBUytCLGlCQUFpQjtrR0FUekUseUJBQXlCLDBPQ2J0Qyw4T0FNQSw0Q0RLYyxJQUFJLDZGQUFFLGdCQUFnQjs7MkZBRXZCLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSxtQ0FBbUMsY0FFakMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDOzswQkFXeUIsTUFBTTsyQkFBQyxpQkFBaUI7eUNBUnpFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJK0Isa0JBQWtCO3NCQUF0RCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRCYXNlbGluZUl0ZW1JbnRlcm5hbCB9IGZyb20gJy4uLy4uL2NsYXNzL2Jhc2VsaW5lJztcbmltcG9ydCB7IEdhbnR0VXBwZXIsIEdBTlRUX1VQUEVSX1RPS0VOIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWdhbnR0LWJhc2VsaW5lLGdhbnR0LWJhc2VsaW5lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFzZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0QmFzZWxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGJhc2VsaW5lSXRlbTogR2FudHRCYXNlbGluZUl0ZW1JbnRlcm5hbDtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWJhc2VsaW5lJykgZ2FudHRCYXNlbGluZUNsYXNzID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYmFzZWxpbmVJdGVtLnJlZnMkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UG9zaXRpb25zKCkge1xuICAgICAgICBjb25zdCBpdGVtRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBpdGVtRWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy5iYXNlbGluZUl0ZW0ucmVmcy54ICsgJ3B4JztcbiAgICAgICAgaXRlbUVsZW1lbnQuc3R5bGUuYm90dG9tID0gJzJweCc7XG4gICAgICAgIGl0ZW1FbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5iYXNlbGluZUl0ZW0ucmVmcy53aWR0aCArICdweCc7XG4gICAgfVxufVxuIiwiPGRpdiAjY29udGVudCAqbmdJZj1cImJhc2VsaW5lSXRlbVwiIGNsYXNzPVwiYmFzZWxpbmUtY29udGVudFwiPlxuICA8bmctdGVtcGxhdGVcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogYmFzZWxpbmVJdGVtLm9yaWdpbiwgcmVmczogYmFzZWxpbmVJdGVtLnJlZnMgfVwiXG4gID48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,66 +0,0 @@
1
- import { Component, HostBinding, Inject } from '@angular/core';
2
- import { Subject, merge } from 'rxjs';
3
- import { take, takeUntil } from 'rxjs/operators';
4
- import { isNumber } from '../../../utils/helpers';
5
- import { GANTT_UPPER_TOKEN } from '../../../gantt-upper';
6
- import { GanttViewType } from './../../../class/view-type';
7
- import { todayBorderRadius } from '../../../gantt.styles';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../../gantt-upper";
10
- const mainHeight = 5000;
11
- export class GanttCalendarGridComponent {
12
- get view() {
13
- return this.ganttUpper.view;
14
- }
15
- constructor(ganttUpper, ngZone, elementRef) {
16
- this.ganttUpper = ganttUpper;
17
- this.ngZone = ngZone;
18
- this.elementRef = elementRef;
19
- this.unsubscribe$ = new Subject();
20
- this.mainHeight = mainHeight;
21
- this.todayBorderRadius = todayBorderRadius;
22
- this.viewTypes = GanttViewType;
23
- this.className = `gantt-calendar gantt-calendar-grid`;
24
- }
25
- setTodayPoint() {
26
- const x = this.view.getTodayXPoint();
27
- const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
28
- const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0];
29
- if (isNumber(x)) {
30
- if (line) {
31
- line.style.left = `${x}px`;
32
- line.style.top = `0px`;
33
- line.style.bottom = `${-mainHeight}px`;
34
- }
35
- }
36
- else {
37
- todayEle.style.display = 'none';
38
- }
39
- }
40
- ngOnInit() {
41
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
42
- merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
43
- .pipe(takeUntil(this.unsubscribe$))
44
- .subscribe(() => {
45
- this.setTodayPoint();
46
- });
47
- });
48
- }
49
- ngOnDestroy() {
50
- this.unsubscribe$.next();
51
- this.unsubscribe$.complete();
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarGridComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: GanttCalendarGridComponent, isStandalone: true, selector: "gantt-calendar-grid", host: { properties: { "class": "this.className" } }, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n" }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarGridComponent, decorators: [{
57
- type: Component,
58
- args: [{ selector: 'gantt-calendar-grid', standalone: true, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n" }]
59
- }], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
60
- type: Inject,
61
- args: [GANTT_UPPER_TOKEN]
62
- }] }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { className: [{
63
- type: HostBinding,
64
- args: ['class']
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9jYWxlbmRhci9ncmlkL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvZ3JpZC9jYWxlbmRhci1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUErQyxNQUFNLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBT3hCLE1BQU0sT0FBTywwQkFBMEI7SUFDbkMsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBV0QsWUFDc0MsVUFBc0IsRUFDaEQsTUFBYyxFQUNkLFVBQW1DO1FBRlQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFidkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTNDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFFeEIsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFFdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUVKLGNBQVMsR0FBRyxvQ0FBb0MsQ0FBQztJQU1wRSxDQUFDO0lBRUosYUFBYTtRQUNULE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDeEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRWxHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQzNDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2lCQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDbEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBakRRLDBCQUEwQixrQkFldkIsaUJBQWlCO2tHQWZwQiwwQkFBMEIsb0lDakJ2QyxzK0JBa0NBOzsyRkRqQmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQixjQUVuQixJQUFJOzswQkFpQlgsTUFBTTsyQkFBQyxpQkFBaUI7dUZBSFAsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgTmdab25lLCBJbmplY3QsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4vLi4vLi4vLi4vY2xhc3Mvdmlldy10eXBlJztcbmltcG9ydCB7IHRvZGF5Qm9yZGVyUmFkaXVzIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQuc3R5bGVzJztcblxuY29uc3QgbWFpbkhlaWdodCA9IDUwMDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtY2FsZW5kYXItZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRDYWxlbmRhckdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZ2V0IHZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbnR0VXBwZXIudmlldztcbiAgICB9XG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgbWFpbkhlaWdodCA9IG1haW5IZWlnaHQ7XG5cbiAgICB0b2RheUJvcmRlclJhZGl1cyA9IHRvZGF5Qm9yZGVyUmFkaXVzO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtY2FsZW5kYXIgZ2FudHQtY2FsZW5kYXItZ3JpZGA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBzZXRUb2RheVBvaW50KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIGNvbnN0IHRvZGF5RWxlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ2FudHQtY2FsZW5kYXItdG9kYXktb3ZlcmxheScpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndG9kYXktbGluZScpWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChpc051bWJlcih4KSkge1xuICAgICAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLnRvcCA9IGAwcHhgO1xuICAgICAgICAgICAgICAgIGxpbmUuc3R5bGUuYm90dG9tID0gYCR7LW1haW5IZWlnaHR9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9kYXlFbGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZSh0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSwgdGhpcy5nYW50dFVwcGVyLnZpZXcuc3RhcnQkKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VG9kYXlQb2ludCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5XCIgW3N0eWxlLndpZHRoLnB4XT1cInZpZXcud2lkdGhcIj5cbiAgQGlmIChnYW50dFVwcGVyLnNob3dUb2RheUxpbmUpIHtcbiAgPHNwYW4gY2xhc3M9XCJ0b2RheS1saW5lXCI+IDwvc3Bhbj5cbiAgfVxuPC9kaXY+XG5cbjxzdmcgY2xhc3M9XCJnYW50dC1jYWxlbmRhci1ncmlkLW1haW5cIiBbYXR0ci53aWR0aF09XCJ2aWV3LndpZHRoXCIgW2F0dHIuaGVpZ2h0XT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodCAtIDFcIj5cbiAgPGc+XG4gICAgQGlmICh2aWV3LnNob3dUaW1lbGluZSkge1xuICAgIDxnPlxuICAgICAgQGZvciAocG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyB0cmFjayBwb2ludC54KSB7XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIoJGluZGV4ICsgMSkgKiB2aWV3LmNlbGxXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIigkaW5kZXggKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInNlY29uZGFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuICAgIH1cbiAgICA8Zz5cbiAgICAgIEBmb3IgKHBvaW50IG9mIHZpZXcucHJpbWFyeURhdGVQb2ludHM7IHRyYWNrIHBvaW50LngpIHtcbiAgICAgIDxsaW5lXG4gICAgICAgIFthdHRyLngxXT1cIigkaW5kZXggKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKCRpbmRleCArIDEpICogdmlldy5wcmltYXJ5V2lkdGhcIlxuICAgICAgICBbYXR0ci55MV09XCIwXCJcbiAgICAgICAgW2F0dHIueTJdPVwibWFpbkhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuICA8L2c+XG48L3N2Zz5cbiJdfQ==
@@ -1,70 +0,0 @@
1
- import { Component, HostBinding, Inject } from '@angular/core';
2
- import { todayHeight, todayWidth } from '../../../gantt.styles';
3
- import { GANTT_UPPER_TOKEN } from '../../../gantt-upper';
4
- import { GanttViewType } from '../../../class';
5
- import { take, takeUntil } from 'rxjs/operators';
6
- import { Subject, merge } from 'rxjs';
7
- import { GanttDate } from '../../../utils/date';
8
- import { isNumber } from '../../../utils/helpers';
9
- import { NgStyle } from '@angular/common';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../../../gantt-upper";
12
- export class GanttCalendarHeaderComponent {
13
- get view() {
14
- return this.ganttUpper.view;
15
- }
16
- get height() {
17
- return this.ganttUpper.styles.headerHeight + 'px';
18
- }
19
- constructor(ganttUpper, ngZone, elementRef) {
20
- this.ganttUpper = ganttUpper;
21
- this.ngZone = ngZone;
22
- this.elementRef = elementRef;
23
- this.unsubscribe$ = new Subject();
24
- this.viewTypes = GanttViewType;
25
- this.className = `gantt-calendar gantt-calendar-header`;
26
- }
27
- ngOnInit() {
28
- // 头部日期定位
29
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
30
- merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
31
- .pipe(takeUntil(this.unsubscribe$))
32
- .subscribe(() => {
33
- if (this.ganttUpper.viewType === GanttViewType.day)
34
- this.setTodayPoint();
35
- });
36
- });
37
- }
38
- setTodayPoint() {
39
- const x = this.view.getTodayXPoint();
40
- const today = new GanttDate().getDate();
41
- const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
42
- const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0];
43
- if (isNumber(x)) {
44
- if (rect) {
45
- rect.style.left = `${x - todayWidth / 2}px`;
46
- rect.style.top = `${this.ganttUpper.styles.headerHeight - todayHeight}px`;
47
- rect.innerHTML = today.toString();
48
- }
49
- }
50
- else {
51
- todayEle.style.display = 'none';
52
- }
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarHeaderComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: GanttCalendarHeaderComponent, isStandalone: true, selector: "gantt-calendar-header", host: { properties: { "class": "this.className", "style.height": "this.height" } }, 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</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n } @for (point of view.secondaryDatePoints; track point.x) {\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttCalendarHeaderComponent, decorators: [{
58
- type: Component,
59
- args: [{ selector: 'gantt-calendar-header', standalone: true, imports: [NgStyle], template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n } @for (point of view.secondaryDatePoints; track point.x) {\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n" }]
60
- }], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
61
- type: Inject,
62
- args: [GANTT_UPPER_TOKEN]
63
- }] }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { className: [{
64
- type: HostBinding,
65
- args: ['class']
66
- }], height: [{
67
- type: HostBinding,
68
- args: ['style.height']
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2NhbGVuZGFyL2hlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVExQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3JDLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQVFELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFDc0MsVUFBc0IsRUFDaEQsTUFBYyxFQUNkLFVBQW1DO1FBRlQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFkdkMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXJDLGNBQVMsR0FBRyxhQUFhLENBQUM7UUFFSixjQUFTLEdBQUcsc0NBQXNDLENBQUM7SUFXdEUsQ0FBQztJQUVKLFFBQVE7UUFDSixTQUFTO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2xDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRztvQkFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ3hILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUVsRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFdBQVcsSUFBSSxDQUFDO2dCQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7OEdBaERRLDRCQUE0QixrQkFpQnpCLGlCQUFpQjtrR0FqQnBCLDRCQUE0QixxS0NoQnpDLGlpREFvREEsNENEdENjLE9BQU87OzJGQUVSLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDOzswQkFtQmIsTUFBTTsyQkFBQyxpQkFBaUI7dUZBUlAsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUdoQixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0QmluZGluZywgSW5qZWN0LCBOZ1pvbmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvZGF5SGVpZ2h0LCB0b2RheVdpZHRoIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHYW50dERhdGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kYXRlJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nU3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0Q2FsZW5kYXJIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGdldCB2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnZpZXc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSBgZ2FudHQtY2FsZW5kYXIgZ2FudHQtY2FsZW5kYXItaGVhZGVyYDtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0JylcbiAgICBnZXQgaGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5oZWFkZXJIZWlnaHQgKyAncHgnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyDlpLTpg6jml6XmnJ/lrprkvY1cbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgbWVyZ2UodGhpcy5nYW50dFVwcGVyLnZpZXdDaGFuZ2UsIHRoaXMuZ2FudHRVcHBlci52aWV3LnN0YXJ0JClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nYW50dFVwcGVyLnZpZXdUeXBlID09PSBHYW50dFZpZXdUeXBlLmRheSkgdGhpcy5zZXRUb2RheVBvaW50KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRvZGF5UG9pbnQoKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnZpZXcuZ2V0VG9kYXlYUG9pbnQoKTtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgR2FudHREYXRlKCkuZ2V0RGF0ZSgpO1xuICAgICAgICBjb25zdCB0b2RheUVsZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dhbnR0LWNhbGVuZGFyLXRvZGF5LW92ZXJsYXknKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZGF5LXJlY3QnKVswXSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNOdW1iZXIoeCkpIHtcbiAgICAgICAgICAgIGlmIChyZWN0KSB7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS5sZWZ0ID0gYCR7eCAtIHRvZGF5V2lkdGggLyAyfXB4YDtcbiAgICAgICAgICAgICAgICByZWN0LnN0eWxlLnRvcCA9IGAke3RoaXMuZ2FudHRVcHBlci5zdHlsZXMuaGVhZGVySGVpZ2h0IC0gdG9kYXlIZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIHJlY3QuaW5uZXJIVE1MID0gdG9kYXkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvZGF5RWxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtY2FsZW5kYXItdG9kYXktb3ZlcmxheVwiIFtzdHlsZS53aWR0aC5weF09XCJ2aWV3LndpZHRoXCI+XG4gIDxzcGFuIGNsYXNzPVwidG9kYXktcmVjdFwiIFtoaWRkZW5dPVwiZ2FudHRVcHBlci52aWV3VHlwZSAhPT0gdmlld1R5cGVzLmRheVwiPiA8L3NwYW4+XG48L2Rpdj5cbjxzdmcgW2F0dHIud2lkdGhdPVwidmlldy53aWR0aFwiIFthdHRyLmhlaWdodF09XCJnYW50dFVwcGVyLnN0eWxlcy5oZWFkZXJIZWlnaHRcIj5cbiAgPGc+XG4gICAgQGZvciAocG9pbnQgb2Ygdmlldy5wcmltYXJ5RGF0ZVBvaW50czsgdHJhY2sgcG9pbnQueCkge1xuICAgIDx0ZXh0XG4gICAgICBjbGFzcz1cInByaW1hcnktdGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJwb2ludC5zdHlsZVwiXG4gICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgIFtjbGFzcy53ZWVrZW5kXT1cInBvaW50LmFkZGl0aW9ucz8uaXNXZWVrZW5kXCJcbiAgICAgIFthdHRyLnhdPVwicG9pbnQueFwiXG4gICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgID5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgfSBAZm9yIChwb2ludCBvZiB2aWV3LnNlY29uZGFyeURhdGVQb2ludHM7IHRyYWNrIHBvaW50LngpIHtcbiAgICA8dGV4dFxuICAgICAgY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiXG4gICAgICBbbmdTdHlsZV09XCJwb2ludC5zdHlsZVwiXG4gICAgICBbY2xhc3MudG9kYXldPVwicG9pbnQuYWRkaXRpb25zPy5pc1RvZGF5XCJcbiAgICAgIFtjbGFzcy53ZWVrZW5kXT1cInBvaW50LmFkZGl0aW9ucz8uaXNXZWVrZW5kXCJcbiAgICAgIFthdHRyLnhdPVwicG9pbnQueFwiXG4gICAgICBbYXR0ci55XT1cInBvaW50LnlcIlxuICAgID5cbiAgICAgIHt7IHBvaW50LnRleHQgfX1cbiAgICA8L3RleHQ+XG4gICAgfVxuXG4gICAgPGc+XG4gICAgICBAZm9yIChwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyB0cmFjayBwb2ludC54KSB7XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIoJGluZGV4ICsgMSkgKiB2aWV3LnByaW1hcnlXaWR0aFwiXG4gICAgICAgIFthdHRyLngyXT1cIigkaW5kZXggKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwicHJpbWFyeS1saW5lXCJcbiAgICAgID48L2xpbmU+XG4gICAgICB9XG4gICAgPC9nPlxuXG4gICAgPGc+XG4gICAgICA8bGluZVxuICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgW2F0dHIueDJdPVwidmlldy53aWR0aFwiXG4gICAgICAgIFthdHRyLnkxXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIFthdHRyLnkyXT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuIl19
@@ -1,21 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../gantt-upper";
5
- export class GanttDragBackdropComponent {
6
- constructor(ganttUpper) {
7
- this.ganttUpper = ganttUpper;
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDragBackdropComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GanttDragBackdropComponent, isStandalone: true, selector: "gantt-drag-backdrop", host: { classAttribute: "gantt-drag-backdrop" }, ngImport: i0, template: "<div class=\"gantt-drag-mask\" [style.top.px]=\"ganttUpper.styles.headerHeight\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttDragBackdropComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'gantt-drag-backdrop', host: {
15
- class: 'gantt-drag-backdrop'
16
- }, standalone: true, template: "<div class=\"gantt-drag-mask\" [style.top.px]=\"ganttUpper.styles.headerHeight\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n" }]
17
- }], ctorParameters: () => [{ type: i1.GanttUpper, decorators: [{
18
- type: Inject,
19
- args: [GANTT_UPPER_TOKEN]
20
- }] }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1iYWNrZHJvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9kcmFnLWJhY2tkcm9wL2RyYWctYmFja2Ryb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvZHJhZy1iYWNrZHJvcC9kcmFnLWJhY2tkcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDOzs7QUFTbEUsTUFBTSxPQUFPLDBCQUEwQjtJQUNuQyxZQUE4QyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQzs4R0FEL0QsMEJBQTBCLGtCQUNmLGlCQUFpQjtrR0FENUIsMEJBQTBCLGdJQ1Z2Qyx5TUFNQTs7MkZESWEsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNJLHFCQUFxQixRQUV6Qjt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQixjQUNXLElBQUk7OzBCQUdILE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1kcmFnLWJhY2tkcm9wJyxcbiAgICB0ZW1wbGF0ZVVybDogYC4vZHJhZy1iYWNrZHJvcC5jb21wb25lbnQuaHRtbGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2dhbnR0LWRyYWctYmFja2Ryb3AnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0RHJhZ0JhY2tkcm9wQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEdBTlRUX1VQUEVSX1RPS0VOKSBwdWJsaWMgZ2FudHRVcHBlcjogR2FudHRVcHBlcikge31cbn1cbiIsIjxkaXYgY2xhc3M9XCJnYW50dC1kcmFnLW1hc2tcIiBbc3R5bGUudG9wLnB4XT1cImdhbnR0VXBwZXIuc3R5bGVzLmhlYWRlckhlaWdodFwiPlxuICA8ZGl2IGNsYXNzPVwiZGF0ZS1yYW5nZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwic3RhcnRcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJlbmRcIj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,37 +0,0 @@
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
- set iconName(name) {
6
- this.setSvg(name);
7
- }
8
- constructor(elementRef) {
9
- this.elementRef = elementRef;
10
- this.isIcon = true;
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttIconComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GanttIconComponent, isStandalone: true, selector: "gantt-icon", inputs: { iconName: "iconName" }, host: { properties: { "class.gantt-icon": "this.isIcon" } }, ngImport: i0, template: '', isInline: true }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GanttIconComponent, decorators: [{
25
- type: Component,
26
- args: [{
27
- selector: 'gantt-icon',
28
- template: '',
29
- standalone: true
30
- }]
31
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { isIcon: [{
32
- type: HostBinding,
33
- args: ['class.gantt-icon']
34
- }], iconName: [{
35
- type: Input
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQU9oQyxNQUFNLE9BQU8sa0JBQWtCO0lBRzNCLElBQWEsUUFBUSxDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFOdEIsV0FBTSxHQUFHLElBQUksQ0FBQztJQU1XLENBQUM7SUFFM0QsTUFBTSxDQUFDLElBQVk7UUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDOzhHQWhCUSxrQkFBa0I7a0dBQWxCLGtCQUFrQixxS0FIakIsRUFBRTs7MkZBR0gsa0JBQWtCO2tCQUw5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7K0VBRW9DLE1BQU07c0JBQXRDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUVsQixRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGljb25zIH0gZnJvbSAnLi9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZ2FudHQtaWNvbicsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRJY29uQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWljb24nKSBpc0ljb24gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2V0IGljb25OYW1lKG5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldFN2ZyhuYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgc2V0U3ZnKG5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBpY29uU3ZnID0gaWNvbnNbbmFtZV07XG4gICAgICAgIGlmIChpY29uU3ZnKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBpY29uU3ZnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,93 +0,0 @@
1
- const angleRight = `<svg xmlns="http://www.w3.org/2000/svg" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="amnavigation/angle-right" stroke-width="1" fill-rule="evenodd"><path d="M7.978 11.498l-.005.005L2.3 5.831 3.13 5l4.848 4.848L12.826 5l.83.831-5.673 5.672-.005-.005z" transform="rotate(-90 7.978 8.252)"></path></g></svg>`;
2
- const angleDown = `<svg xmlns="http://www.w3.org/2000/svg" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="aknavigation/angle-down" stroke-width="1" fill-rule="evenodd"><path d="M7.978 11.997l-.005.006L2.3 6.33l.83-.831 4.848 4.848L12.826 5.5l.83.83-5.673 5.673-.005-.006z" ></path></g></svg>`;
3
- const plusSquare = `<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="kxaction/plus-square" stroke-width="1" fill-rule="evenodd"><path d="M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm5.45 6.2V4.75h1.2V7.4h2.65v1.2H8.65v2.65h-1.2V8.6H4.8V7.4h2.65z"></path></g></svg>`;
4
- const minusSquare = `<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="jnaction/minus-square" stroke-width="1" fill-rule="evenodd"><path d="M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm2.8 6.2h6.5v1.2H4.8V7.4z"></path></g></svg>`;
5
- const loadingIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space="preserve">
6
- <path fill="#aaa" d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z" transform="rotate(275.098 25 25)">
7
- <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatCount="indefinite"></animateTransform>
8
- </path>
9
- </svg>`;
10
- const emptyIcon = `<svg
11
- width="148px"
12
- height="134px"
13
- viewBox="0 0 148 134"
14
- version="1.1"
15
- xmlns="http://www.w3.org/2000/svg"
16
- xmlns:xlink="http://www.w3.org/1999/xlink"
17
- >
18
- <defs>
19
- <filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-1">
20
- <feGaussianBlur stdDeviation="0" in="SourceGraphic"></feGaussianBlur>
21
- </filter>
22
- </defs>
23
- <g id="148x134" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
24
- <g id="编组-6" transform="translate(1.000000, 1.000000)">
25
- <ellipse
26
- id="椭圆形"
27
- fill="#EDEEF2"
28
- opacity="0.3"
29
- filter="url(#filter-1)"
30
- cx="73.0800017"
31
- cy="115.920003"
32
- rx="73.0800017"
33
- ry="16.8000004"
34
- ></ellipse>
35
- <g id="编组-5" transform="translate(15.120000, 0.000000)">
36
- <polygon
37
- id="矩形"
38
- fill="#E2E4E9"
39
- points="19.2789848 49.5600011 99.1200023 48.7200011 117.600003 75.9297673 117.600003 92.313049 0 92.313049 0 75.0356267"
40
- ></polygon>
41
- <path
42
- d="M23.5200005,0 L94.0800002,0 C97.7913538,2.06413823e-16 100.8,3.00864655 100.8,6.72000015 L100.8,99.1200023 L100.8,99.1200023 L16.8000004,99.1200023 L16.8000004,6.72000015 C16.8000004,3.00864655 19.8086469,1.56994302e-15 23.5200005,0 Z"
43
- id="矩形"
44
- fill="#F9FAFB"
45
- ></path>
46
- <path
47
- d="M30.9200007,12.4400003 L86.6800019,12.4400003 C88.5356787,12.4400003 90.040002,13.9443236 90.040002,15.8000004 L90.040002,42.000001 C90.040002,43.8556778 88.5356787,45.360001 86.6800019,45.360001 L30.9200007,45.360001 C29.0643239,45.360001 27.5600006,43.8556778 27.5600006,42.000001 L27.5600006,15.8000004 C27.5600006,13.9443236 29.0643239,12.4400003 30.9200007,12.4400003 Z"
48
- id="矩形"
49
- fill="#E8EAEE"
50
- ></path>
51
- <text
52
- id="&lt;/null&gt;"
53
- font-family="PingFangSC-Medium, PingFang SC"
54
- font-size="15.1200003"
55
- font-weight="400"
56
- fill="#BCBECD"
57
- >
58
- <tspan x="33.6000008" y="32.8000004">&lt;/null&gt;</tspan>
59
- </text>
60
- <rect id="矩形" fill="#E8EAEE" x="27.5600006" y="52.0800012" width="61.4800014" height="5.04000011" rx="2.52000006"></rect>
61
- <rect
62
- id="矩形备份"
63
- fill="#E8EAEE"
64
- x="27.5600006"
65
- y="63.8400014"
66
- width="61.4800014"
67
- height="5.04000011"
68
- rx="2.52000006"
69
- ></rect>
70
- <path
71
- d="M0,75.6000017 L29.280235,75.6000017 C32.0637502,75.6000017 34.3202352,77.8564866 34.3202352,80.6400018 L34.3202352,86.2591426 C34.3202352,89.0426578 36.5767201,91.2991427 39.3602353,91.2991427 L78.4136737,91.2991427 C81.1971889,91.2991427 83.4536738,89.0426578 83.4536738,86.2591426 L83.4536738,80.6400018 C83.4536738,77.8564866 85.7101587,75.6000017 88.4936739,75.6000017 L117.600003,75.6000017 L117.600003,75.6000017 L117.600003,110.880003 C117.600003,115.519195 113.839194,119.280003 109.200002,119.280003 L8.40000019,119.280003 C3.76080819,119.280003 -6.53729019e-15,115.519195 0,110.880003 L0,75.6000017 L0,75.6000017 Z"
72
- id="矩形"
73
- fill="#EDEFF2"
74
- ></path>
75
- </g>
76
- </g>
77
- </g>
78
- </svg>`;
79
- const dragIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="aijaction/drag--" stroke-width="1" fill-rule="evenodd"><g id="aij拖动" transform="translate(5 1)" fill-rule="nonzero"><path d="M1 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM1 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" id="aij形状结合"></path></g></g></svg>`;
80
- const arrowLeftIcon = `<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fit="" height="1em" width="1em" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="adinavigation/arrow-left" stroke-width="1" fill-rule="evenodd"><path d="M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z" id="adi形状结合" transform="rotate(-90 7.995 8)"></path></g></svg>`;
81
- const arrowRightIcon = `<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fit="" height="1em" width="1em" preserveAspectRatio="xMidYMid meet" focusable="false"><g id="adlnavigation/arrow-right" stroke-width="1" fill-rule="evenodd"><path d="M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z" id="adl形状结合" transform="rotate(90 7.995 8)"></path></g></svg>`;
82
- export const icons = {
83
- 'angle-right': angleRight,
84
- 'angle-down': angleDown,
85
- 'plus-square': plusSquare,
86
- 'minus-square': minusSquare,
87
- loading: loadingIcon,
88
- empty: emptyIcon,
89
- drag: dragIcon,
90
- 'arrow-left': arrowLeftIcon,
91
- 'arrow-right': arrowRightIcon
92
- };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9pY29uL2ljb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxHQUFHLDRVQUE0VSxDQUFDO0FBQ2hXLE1BQU0sU0FBUyxHQUFHLHdTQUF3UyxDQUFDO0FBQzNULE1BQU0sVUFBVSxHQUFHLHFiQUFxYixDQUFDO0FBQ3pjLE1BQU0sV0FBVyxHQUFHLDZZQUE2WSxDQUFDO0FBQ2xhLE1BQU0sV0FBVyxHQUFHOzs7O09BSWIsQ0FBQztBQUNSLE1BQU0sU0FBUyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9FWCxDQUFDO0FBRVIsTUFBTSxRQUFRLEdBQUcsMm5CQUEybkIsQ0FBQztBQUM3b0IsTUFBTSxhQUFhLEdBQUcsa2RBQWtkLENBQUM7QUFDemUsTUFBTSxjQUFjLEdBQUcsa2RBQWtkLENBQUM7QUFDMWUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLGNBQWMsRUFBRSxXQUFXO0lBQzNCLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLElBQUksRUFBRSxRQUFRO0lBQ2QsWUFBWSxFQUFFLGFBQWE7SUFDM0IsYUFBYSxFQUFFLGNBQWM7Q0FDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGFuZ2xlUmlnaHQgPSBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZml0PVwiXCIgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCIgZm9jdXNhYmxlPVwiZmFsc2VcIj48ZyBpZD1cImFtbmF2aWdhdGlvbi9hbmdsZS1yaWdodFwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+PHBhdGggZD1cIk03Ljk3OCAxMS40OThsLS4wMDUuMDA1TDIuMyA1LjgzMSAzLjEzIDVsNC44NDggNC44NDhMMTIuODI2IDVsLjgzLjgzMS01LjY3MyA1LjY3Mi0uMDA1LS4wMDV6XCIgICB0cmFuc2Zvcm09XCJyb3RhdGUoLTkwIDcuOTc4IDguMjUyKVwiPjwvcGF0aD48L2c+PC9zdmc+YDtcbmNvbnN0IGFuZ2xlRG93biA9IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaXQ9XCJcIiAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxnIGlkPVwiYWtuYXZpZ2F0aW9uL2FuZ2xlLWRvd25cIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPjxwYXRoIGQ9XCJNNy45NzggMTEuOTk3bC0uMDA1LjAwNkwyLjMgNi4zM2wuODMtLjgzMSA0Ljg0OCA0Ljg0OEwxMi44MjYgNS41bC44My44My01LjY3MyA1LjY3My0uMDA1LS4wMDZ6XCIgPjwvcGF0aD48L2c+PC9zdmc+YDtcbmNvbnN0IHBsdXNTcXVhcmUgPSBgPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpdD1cIlwiICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxnIGlkPVwia3hhY3Rpb24vcGx1cy1zcXVhcmVcIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPjxwYXRoIGQ9XCJNMiAwaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem0wIDEuMmEuOC44IDAgMCAwLS44Ljh2MTJhLjguOCAwIDAgMCAuOC44aDEyYS44LjggMCAwIDAgLjgtLjhWMmEuOC44IDAgMCAwLS44LS44SDJ6bTUuNDUgNi4yVjQuNzVoMS4yVjcuNGgyLjY1djEuMkg4LjY1djIuNjVoLTEuMlY4LjZINC44VjcuNGgyLjY1elwiPjwvcGF0aD48L2c+PC9zdmc+YDtcbmNvbnN0IG1pbnVzU3F1YXJlID0gYDxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaXQ9XCJcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PGcgaWQ9XCJqbmFjdGlvbi9taW51cy1zcXVhcmVcIiBzdHJva2Utd2lkdGg9XCIxXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPjxwYXRoIGQ9XCJNMiAwaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem0wIDEuMmEuOC44IDAgMCAwLS44Ljh2MTJhLjguOCAwIDAgMCAuOC44aDEyYS44LjggMCAwIDAgLjgtLjhWMmEuOC44IDAgMCAwLS44LS44SDJ6bTIuOCA2LjJoNi41djEuMkg0LjhWNy40elwiPjwvcGF0aD48L2c+PC9zdmc+YDtcbmNvbnN0IGxvYWRpbmdJY29uID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiICB2aWV3Qm94PVwiMCAwIDUwIDUwXCIgc3R5bGU9XCJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUwIDUwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbjxwYXRoIGZpbGw9XCIjYWFhXCIgZD1cIk0yNS4yNTEsNi40NjFjLTEwLjMxOCwwLTE4LjY4Myw4LjM2NS0xOC42ODMsMTguNjgzaDQuMDY4YzAtOC4wNzEsNi41NDMtMTQuNjE1LDE0LjYxNS0xNC42MTVWNi40NjF6XCIgdHJhbnNmb3JtPVwicm90YXRlKDI3NS4wOTggMjUgMjUpXCI+XG4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlVHlwZT1cInhtbFwiIGF0dHJpYnV0ZU5hbWU9XCJ0cmFuc2Zvcm1cIiB0eXBlPVwicm90YXRlXCIgZnJvbT1cIjAgMjUgMjVcIiB0bz1cIjM2MCAyNSAyNVwiIGR1cj1cIjAuNnNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIj48L2FuaW1hdGVUcmFuc2Zvcm0+XG48L3BhdGg+XG48L3N2Zz5gO1xuY29uc3QgZW1wdHlJY29uID0gYDxzdmdcbndpZHRoPVwiMTQ4cHhcIlxuaGVpZ2h0PVwiMTM0cHhcIlxudmlld0JveD1cIjAgMCAxNDggMTM0XCJcbnZlcnNpb249XCIxLjFcIlxueG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG54bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuPlxuPGRlZnM+XG4gIDxmaWx0ZXIgeD1cIjAuMCVcIiB5PVwiMC4wJVwiIHdpZHRoPVwiMTAwLjAlXCIgaGVpZ2h0PVwiMTAwLjAlXCIgZmlsdGVyVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiIGlkPVwiZmlsdGVyLTFcIj5cbiAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMFwiIGluPVwiU291cmNlR3JhcGhpY1wiPjwvZmVHYXVzc2lhbkJsdXI+XG4gIDwvZmlsdGVyPlxuPC9kZWZzPlxuPGcgaWQ9XCIxNDh4MTM0XCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cbiAgPGcgaWQ9XCLnvJbnu4QtNlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApXCI+XG4gICAgPGVsbGlwc2VcbiAgICAgIGlkPVwi5qSt5ZyG5b2iXCJcbiAgICAgIGZpbGw9XCIjRURFRUYyXCJcbiAgICAgIG9wYWNpdHk9XCIwLjNcIlxuICAgICAgZmlsdGVyPVwidXJsKCNmaWx0ZXItMSlcIlxuICAgICAgY3g9XCI3My4wODAwMDE3XCJcbiAgICAgIGN5PVwiMTE1LjkyMDAwM1wiXG4gICAgICByeD1cIjczLjA4MDAwMTdcIlxuICAgICAgcnk9XCIxNi44MDAwMDA0XCJcbiAgICA+PC9lbGxpcHNlPlxuICAgIDxnIGlkPVwi57yW57uELTVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTUuMTIwMDAwLCAwLjAwMDAwMClcIj5cbiAgICAgIDxwb2x5Z29uXG4gICAgICAgIGlkPVwi55+p5b2iXCJcbiAgICAgICAgZmlsbD1cIiNFMkU0RTlcIlxuICAgICAgICBwb2ludHM9XCIxOS4yNzg5ODQ4IDQ5LjU2MDAwMTEgOTkuMTIwMDAyMyA0OC43MjAwMDExIDExNy42MDAwMDMgNzUuOTI5NzY3MyAxMTcuNjAwMDAzIDkyLjMxMzA0OSAwIDkyLjMxMzA0OSAwIDc1LjAzNTYyNjdcIlxuICAgICAgPjwvcG9seWdvbj5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMjMuNTIwMDAwNSwwIEw5NC4wODAwMDAyLDAgQzk3Ljc5MTM1MzgsMi4wNjQxMzgyM2UtMTYgMTAwLjgsMy4wMDg2NDY1NSAxMDAuOCw2LjcyMDAwMDE1IEwxMDAuOCw5OS4xMjAwMDIzIEwxMDAuOCw5OS4xMjAwMDIzIEwxNi44MDAwMDA0LDk5LjEyMDAwMjMgTDE2LjgwMDAwMDQsNi43MjAwMDAxNSBDMTYuODAwMDAwNCwzLjAwODY0NjU1IDE5LjgwODY0NjksMS41Njk5NDMwMmUtMTUgMjMuNTIwMDAwNSwwIFpcIlxuICAgICAgICBpZD1cIuefqeW9olwiXG4gICAgICAgIGZpbGw9XCIjRjlGQUZCXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTMwLjkyMDAwMDcsMTIuNDQwMDAwMyBMODYuNjgwMDAxOSwxMi40NDAwMDAzIEM4OC41MzU2Nzg3LDEyLjQ0MDAwMDMgOTAuMDQwMDAyLDEzLjk0NDMyMzYgOTAuMDQwMDAyLDE1LjgwMDAwMDQgTDkwLjA0MDAwMiw0Mi4wMDAwMDEgQzkwLjA0MDAwMiw0My44NTU2Nzc4IDg4LjUzNTY3ODcsNDUuMzYwMDAxIDg2LjY4MDAwMTksNDUuMzYwMDAxIEwzMC45MjAwMDA3LDQ1LjM2MDAwMSBDMjkuMDY0MzIzOSw0NS4zNjAwMDEgMjcuNTYwMDAwNiw0My44NTU2Nzc4IDI3LjU2MDAwMDYsNDIuMDAwMDAxIEwyNy41NjAwMDA2LDE1LjgwMDAwMDQgQzI3LjU2MDAwMDYsMTMuOTQ0MzIzNiAyOS4wNjQzMjM5LDEyLjQ0MDAwMDMgMzAuOTIwMDAwNywxMi40NDAwMDAzIFpcIlxuICAgICAgICBpZD1cIuefqeW9olwiXG4gICAgICAgIGZpbGw9XCIjRThFQUVFXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8dGV4dFxuICAgICAgICBpZD1cIiZsdDsvbnVsbCZndDtcIlxuICAgICAgICBmb250LWZhbWlseT1cIlBpbmdGYW5nU0MtTWVkaXVtLCBQaW5nRmFuZyBTQ1wiXG4gICAgICAgIGZvbnQtc2l6ZT1cIjE1LjEyMDAwMDNcIlxuICAgICAgICBmb250LXdlaWdodD1cIjQwMFwiXG4gICAgICAgIGZpbGw9XCIjQkNCRUNEXCJcbiAgICAgID5cbiAgICAgICAgPHRzcGFuIHg9XCIzMy42MDAwMDA4XCIgeT1cIjMyLjgwMDAwMDRcIj4mbHQ7L251bGwmZ3Q7PC90c3Bhbj5cbiAgICAgIDwvdGV4dD5cbiAgICAgIDxyZWN0IGlkPVwi55+p5b2iXCIgZmlsbD1cIiNFOEVBRUVcIiB4PVwiMjcuNTYwMDAwNlwiIHk9XCI1Mi4wODAwMDEyXCIgd2lkdGg9XCI2MS40ODAwMDE0XCIgaGVpZ2h0PVwiNS4wNDAwMDAxMVwiIHJ4PVwiMi41MjAwMDAwNlwiPjwvcmVjdD5cbiAgICAgIDxyZWN0XG4gICAgICAgIGlkPVwi55+p5b2i5aSH5Lu9XCJcbiAgICAgICAgZmlsbD1cIiNFOEVBRUVcIlxuICAgICAgICB4PVwiMjcuNTYwMDAwNlwiXG4gICAgICAgIHk9XCI2My44NDAwMDE0XCJcbiAgICAgICAgd2lkdGg9XCI2MS40ODAwMDE0XCJcbiAgICAgICAgaGVpZ2h0PVwiNS4wNDAwMDAxMVwiXG4gICAgICAgIHJ4PVwiMi41MjAwMDAwNlwiXG4gICAgICA+PC9yZWN0PlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0wLDc1LjYwMDAwMTcgTDI5LjI4MDIzNSw3NS42MDAwMDE3IEMzMi4wNjM3NTAyLDc1LjYwMDAwMTcgMzQuMzIwMjM1Miw3Ny44NTY0ODY2IDM0LjMyMDIzNTIsODAuNjQwMDAxOCBMMzQuMzIwMjM1Miw4Ni4yNTkxNDI2IEMzNC4zMjAyMzUyLDg5LjA0MjY1NzggMzYuNTc2NzIwMSw5MS4yOTkxNDI3IDM5LjM2MDIzNTMsOTEuMjk5MTQyNyBMNzguNDEzNjczNyw5MS4yOTkxNDI3IEM4MS4xOTcxODg5LDkxLjI5OTE0MjcgODMuNDUzNjczOCw4OS4wNDI2NTc4IDgzLjQ1MzY3MzgsODYuMjU5MTQyNiBMODMuNDUzNjczOCw4MC42NDAwMDE4IEM4My40NTM2NzM4LDc3Ljg1NjQ4NjYgODUuNzEwMTU4Nyw3NS42MDAwMDE3IDg4LjQ5MzY3MzksNzUuNjAwMDAxNyBMMTE3LjYwMDAwMyw3NS42MDAwMDE3IEwxMTcuNjAwMDAzLDc1LjYwMDAwMTcgTDExNy42MDAwMDMsMTEwLjg4MDAwMyBDMTE3LjYwMDAwMywxMTUuNTE5MTk1IDExMy44MzkxOTQsMTE5LjI4MDAwMyAxMDkuMjAwMDAyLDExOS4yODAwMDMgTDguNDAwMDAwMTksMTE5LjI4MDAwMyBDMy43NjA4MDgxOSwxMTkuMjgwMDAzIC02LjUzNzI5MDE5ZS0xNSwxMTUuNTE5MTk1IDAsMTEwLjg4MDAwMyBMMCw3NS42MDAwMDE3IEwwLDc1LjYwMDAwMTcgWlwiXG4gICAgICAgIGlkPVwi55+p5b2iXCJcbiAgICAgICAgZmlsbD1cIiNFREVGRjJcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L2c+XG4gIDwvZz5cbjwvZz5cbjwvc3ZnPmA7XG5cbmNvbnN0IGRyYWdJY29uID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZml0PVwiXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjxnIGlkPVwiYWlqYWN0aW9uL2RyYWctLVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+PGcgaWQ9XCJhaWrmi5bliqhcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNSAxKVwiIGZpbGwtcnVsZT1cIm5vbnplcm9cIj48cGF0aCBkPVwiTTEgMmExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bTQgMGExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6TTEgNmExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bTQgMGExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bS00IDRhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyem00IDBhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyem0tNCA0YTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnptNCAwYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpcIiBpZD1cImFpauW9oueKtue7k+WQiFwiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPmA7XG5jb25zdCBhcnJvd0xlZnRJY29uID0gYDxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaXQ9XCJcIiBoZWlnaHQ9XCIxZW1cIiB3aWR0aD1cIjFlbVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZCBtZWV0XCIgZm9jdXNhYmxlPVwiZmFsc2VcIj48ZyBpZD1cImFkaW5hdmlnYXRpb24vYXJyb3ctbGVmdFwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsLXJ1bGU9XCJldmVub2RkXCI+PHBhdGggZD1cIk03LjQgNC4xNUw0LjQzOCA3LjMxNWEuNi42IDAgMCAxLS44NzYtLjgybDMuOTctNC4yNDNhLjU5OC41OTggMCAwIDEgLjkzLS4wNTdsMy45NyA0LjMyM2EuNi42IDAgMSAxLS44ODUuODEyTDguNiA0LjExOHY5LjE0OWMwIC40MDQtLjI2OS43MzMtLjYuNzMzLS4zMzIgMC0uNi0uMzI5LS42LS43MzNWNC4xNXpcIiBpZD1cImFkaeW9oueKtue7k+WQiFwiIHRyYW5zZm9ybT1cInJvdGF0ZSgtOTAgNy45OTUgOClcIj48L3BhdGg+PC9nPjwvc3ZnPmA7XG5jb25zdCBhcnJvd1JpZ2h0SWNvbiA9IGA8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZml0PVwiXCIgaGVpZ2h0PVwiMWVtXCIgd2lkdGg9XCIxZW1cIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PGcgaWQ9XCJhZGxuYXZpZ2F0aW9uL2Fycm93LXJpZ2h0XCIgc3Ryb2tlLXdpZHRoPVwiMVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj48cGF0aCBkPVwiTTcuNCA0LjE1TDQuNDM4IDcuMzE1YS42LjYgMCAwIDEtLjg3Ni0uODJsMy45Ny00LjI0M2EuNTk4LjU5OCAwIDAgMSAuOTMtLjA1N2wzLjk3IDQuMzIzYS42LjYgMCAxIDEtLjg4NS44MTJMOC42IDQuMTE4djkuMTQ5YzAgLjQwNC0uMjY5LjczMy0uNi43MzMtLjMzMiAwLS42LS4zMjktLjYtLjczM1Y0LjE1elwiIGlkPVwiYWRs5b2i54q257uT5ZCIXCIgdHJhbnNmb3JtPVwicm90YXRlKDkwIDcuOTk1IDgpXCI+PC9wYXRoPjwvZz48L3N2Zz5gO1xuZXhwb3J0IGNvbnN0IGljb25zID0ge1xuICAgICdhbmdsZS1yaWdodCc6IGFuZ2xlUmlnaHQsXG4gICAgJ2FuZ2xlLWRvd24nOiBhbmdsZURvd24sXG4gICAgJ3BsdXMtc3F1YXJlJzogcGx1c1NxdWFyZSxcbiAgICAnbWludXMtc3F1YXJlJzogbWludXNTcXVhcmUsXG4gICAgbG9hZGluZzogbG9hZGluZ0ljb24sXG4gICAgZW1wdHk6IGVtcHR5SWNvbixcbiAgICBkcmFnOiBkcmFnSWNvbixcbiAgICAnYXJyb3ctbGVmdCc6IGFycm93TGVmdEljb24sXG4gICAgJ2Fycm93LXJpZ2h0JzogYXJyb3dSaWdodEljb25cbn07XG4iXX0=