@tetacom/svg-charts 1.4.21 → 1.4.23

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 (138) hide show
  1. package/chart/base/series-base.component.d.ts +1 -1
  2. package/chart/chart/chart.component.d.ts +1 -1
  3. package/chart/chart-container/annotation/annotation.component.d.ts +1 -1
  4. package/chart/chart-container/chart-container.component.d.ts +1 -1
  5. package/chart/chart-container/crosshair/crosshair.component.d.ts +1 -1
  6. package/chart/chart-container/gridlines/gridlines.component.d.ts +1 -1
  7. package/chart/chart-container/plotband/plot-band.component.d.ts +1 -1
  8. package/chart/chart-container/plotline/plotline.component.d.ts +1 -1
  9. package/chart/chart-container/series/area-series/area-series.component.d.ts +1 -1
  10. package/chart/chart-container/series/bar/bar-series.component.d.ts +1 -1
  11. package/chart/chart-container/series/block-area-series/block-area-series.component.d.ts +1 -1
  12. package/chart/chart-container/series/block-series/block-series.component.d.ts +1 -1
  13. package/chart/chart-container/series/line/line-series.component.d.ts +1 -1
  14. package/chart/chart-container/series/linear-series-base.d.ts +1 -1
  15. package/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +1 -1
  16. package/chart/chart-container/series-host/series-host.component.d.ts +1 -1
  17. package/chart/chart-container/tooltip/tooltip.component.d.ts +1 -1
  18. package/chart/chart-container/x-axis/x-axis.component.d.ts +1 -1
  19. package/chart/chart-container/y-axis/y-axis.component.d.ts +1 -1
  20. package/chart/directives/brushable.directive.d.ts +1 -1
  21. package/chart/directives/draggable-point.directive.d.ts +1 -1
  22. package/chart/directives/zoomable.directive.d.ts +1 -1
  23. package/chart/legend/legend.component.d.ts +1 -1
  24. package/chart/model/i-broadcast-message.d.ts +2 -2
  25. package/chart/stories/bandseries/bandseries.component.d.ts +1 -1
  26. package/esm2022/chart/base/series-base.component.mjs +50 -0
  27. package/esm2022/chart/chart/chart.component.mjs +175 -0
  28. package/esm2022/chart/chart-container/annotation/annotation.component.mjs +108 -0
  29. package/esm2022/chart/chart-container/chart-container.component.mjs +194 -0
  30. package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +39 -0
  31. package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +45 -0
  32. package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +174 -0
  33. package/esm2022/chart/chart-container/plotline/plotline.component.mjs +98 -0
  34. package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +74 -0
  35. package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +68 -0
  36. package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +69 -0
  37. package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +69 -0
  38. package/{esm2020 → esm2022}/chart/chart-container/series/line/line-series.component.mjs +37 -30
  39. package/esm2022/chart/chart-container/series/linear-series-base.mjs +210 -0
  40. package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +53 -0
  41. package/esm2022/chart/chart-container/series-host/series-host.component.mjs +50 -0
  42. package/{esm2020 → esm2022}/chart/chart-container/tooltip/tooltip.component.mjs +18 -5
  43. package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +54 -0
  44. package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +40 -0
  45. package/{esm2020 → esm2022}/chart/chart.module.mjs +36 -36
  46. package/esm2022/chart/core/axis/axis.mjs +135 -0
  47. package/esm2022/chart/core/axis/builders/axis-size-builder.mjs +31 -0
  48. package/esm2022/chart/core/axis/builders/extremes-builder.mjs +33 -0
  49. package/esm2022/chart/directives/brushable.directive.mjs +162 -0
  50. package/esm2022/chart/directives/draggable-point.directive.mjs +147 -0
  51. package/esm2022/chart/directives/zoomable.directive.mjs +263 -0
  52. package/esm2022/chart/legend/legend.component.mjs +38 -0
  53. package/{esm2020 → esm2022}/chart/model/chart-bounds.mjs +5 -5
  54. package/esm2022/chart/model/i-broadcast-message.mjs +27 -0
  55. package/esm2022/chart/model/plot-band.mjs +28 -0
  56. package/esm2022/chart/model/plot-line.mjs +21 -0
  57. package/esm2022/chart/service/broadcast.service.mjs +24 -0
  58. package/esm2022/chart/service/brush.service.mjs +22 -0
  59. package/esm2022/chart/service/chart.service.mjs +244 -0
  60. package/esm2022/chart/service/scale.service.mjs +206 -0
  61. package/esm2022/chart/service/zoom.service.mjs +85 -0
  62. package/esm2022/chart/stories/bandseries/bandseries.component.mjs +36 -0
  63. package/{fesm2020 → fesm2022}/tetacom-svg-charts.mjs +584 -338
  64. package/fesm2022/tetacom-svg-charts.mjs.map +1 -0
  65. package/package.json +8 -14
  66. package/esm2020/chart/base/series-base.component.mjs +0 -42
  67. package/esm2020/chart/chart/chart.component.mjs +0 -172
  68. package/esm2020/chart/chart-container/annotation/annotation.component.mjs +0 -99
  69. package/esm2020/chart/chart-container/chart-container.component.mjs +0 -182
  70. package/esm2020/chart/chart-container/crosshair/crosshair.component.mjs +0 -34
  71. package/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +0 -37
  72. package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +0 -163
  73. package/esm2020/chart/chart-container/plotline/plotline.component.mjs +0 -87
  74. package/esm2020/chart/chart-container/series/area-series/area-series.component.mjs +0 -67
  75. package/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +0 -59
  76. package/esm2020/chart/chart-container/series/block-area-series/block-area-series.component.mjs +0 -60
  77. package/esm2020/chart/chart-container/series/block-series/block-series.component.mjs +0 -60
  78. package/esm2020/chart/chart-container/series/linear-series-base.mjs +0 -198
  79. package/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +0 -43
  80. package/esm2020/chart/chart-container/series-host/series-host.component.mjs +0 -46
  81. package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +0 -48
  82. package/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +0 -36
  83. package/esm2020/chart/core/axis/axis.mjs +0 -128
  84. package/esm2020/chart/core/axis/builders/axis-size-builder.mjs +0 -33
  85. package/esm2020/chart/core/axis/builders/extremes-builder.mjs +0 -35
  86. package/esm2020/chart/directives/brushable.directive.mjs +0 -153
  87. package/esm2020/chart/directives/draggable-point.directive.mjs +0 -141
  88. package/esm2020/chart/directives/zoomable.directive.mjs +0 -254
  89. package/esm2020/chart/legend/legend.component.mjs +0 -36
  90. package/esm2020/chart/model/i-broadcast-message.mjs +0 -18
  91. package/esm2020/chart/model/plot-band.mjs +0 -17
  92. package/esm2020/chart/model/plot-line.mjs +0 -13
  93. package/esm2020/chart/service/broadcast.service.mjs +0 -23
  94. package/esm2020/chart/service/brush.service.mjs +0 -21
  95. package/esm2020/chart/service/chart.service.mjs +0 -229
  96. package/esm2020/chart/service/scale.service.mjs +0 -203
  97. package/esm2020/chart/service/zoom.service.mjs +0 -80
  98. package/esm2020/chart/stories/bandseries/bandseries.component.mjs +0 -29
  99. package/fesm2015/tetacom-svg-charts.mjs +0 -3095
  100. package/fesm2015/tetacom-svg-charts.mjs.map +0 -1
  101. package/fesm2020/tetacom-svg-charts.mjs.map +0 -1
  102. /package/{esm2020 → esm2022}/chart/chart-container/series/public-api.mjs +0 -0
  103. /package/{esm2020 → esm2022}/chart/core/axis/builders/public-api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/chart/core/utils/generate-ticks.mjs +0 -0
  105. /package/{esm2020 → esm2022}/chart/core/utils/get-text-width.mjs +0 -0
  106. /package/{esm2020 → esm2022}/chart/core/utils/public-api.mjs +0 -0
  107. /package/{esm2020 → esm2022}/chart/default/default-axis-config.mjs +0 -0
  108. /package/{esm2020 → esm2022}/chart/default/default-chart-config.mjs +0 -0
  109. /package/{esm2020 → esm2022}/chart/default/default-series-config.mjs +0 -0
  110. /package/{esm2020 → esm2022}/chart/default/defaultSeriesTypeMapping.mjs +0 -0
  111. /package/{esm2020 → esm2022}/chart/model/annotation.mjs +0 -0
  112. /package/{esm2020 → esm2022}/chart/model/axis-options.mjs +0 -0
  113. /package/{esm2020 → esm2022}/chart/model/base-point.mjs +0 -0
  114. /package/{esm2020 → esm2022}/chart/model/enum/axis-orientation.mjs +0 -0
  115. /package/{esm2020 → esm2022}/chart/model/enum/brush-type.mjs +0 -0
  116. /package/{esm2020 → esm2022}/chart/model/enum/clip-points-direction.mjs +0 -0
  117. /package/{esm2020 → esm2022}/chart/model/enum/drag-point-type.mjs +0 -0
  118. /package/{esm2020 → esm2022}/chart/model/enum/fill-type.mjs +0 -0
  119. /package/{esm2020 → esm2022}/chart/model/enum/public-api.mjs +0 -0
  120. /package/{esm2020 → esm2022}/chart/model/enum/scale-type.mjs +0 -0
  121. /package/{esm2020 → esm2022}/chart/model/enum/series-type.mjs +0 -0
  122. /package/{esm2020 → esm2022}/chart/model/enum/tooltip-tracking.mjs +0 -0
  123. /package/{esm2020 → esm2022}/chart/model/enum/zoom-behavior-type.mjs +0 -0
  124. /package/{esm2020 → esm2022}/chart/model/enum/zoom-type.mjs +0 -0
  125. /package/{esm2020 → esm2022}/chart/model/i-builder.mjs +0 -0
  126. /package/{esm2020 → esm2022}/chart/model/i-chart-config.mjs +0 -0
  127. /package/{esm2020 → esm2022}/chart/model/i-chart-event.mjs +0 -0
  128. /package/{esm2020 → esm2022}/chart/model/i-display-tooltip.mjs +0 -0
  129. /package/{esm2020 → esm2022}/chart/model/i-point-move.mjs +0 -0
  130. /package/{esm2020 → esm2022}/chart/model/i-scales-map.mjs +0 -0
  131. /package/{esm2020 → esm2022}/chart/model/marker-options.mjs +0 -0
  132. /package/{esm2020 → esm2022}/chart/model/public-api.mjs +0 -0
  133. /package/{esm2020 → esm2022}/chart/model/series.mjs +0 -0
  134. /package/{esm2020 → esm2022}/chart/model/svg-attributes.mjs +0 -0
  135. /package/{esm2020 → esm2022}/chart/model/tooltip-options.mjs +0 -0
  136. /package/{esm2020 → esm2022}/chart/service/public-api.mjs +0 -0
  137. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  138. /package/{esm2020 → esm2022}/tetacom-svg-charts.mjs +0 -0
@@ -0,0 +1,147 @@
1
+ import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import { DragPointType } from '../model/enum/drag-point-type';
3
+ import * as i0 from "@angular/core";
4
+ export class DraggablePointDirective {
5
+ _elementRef;
6
+ tetaDraggablePoint;
7
+ dragDirection;
8
+ allowDrag;
9
+ startPosition;
10
+ transformCache;
11
+ constructor(_elementRef) {
12
+ this._elementRef = _elementRef;
13
+ }
14
+ moveStart = new EventEmitter();
15
+ moveProcess = new EventEmitter();
16
+ moveEnd = new EventEmitter();
17
+ mouseDown(event) {
18
+ if (!this.tetaDraggablePoint) {
19
+ return;
20
+ }
21
+ event.stopPropagation();
22
+ event.preventDefault();
23
+ this.startPosition = {
24
+ x: event.x,
25
+ y: event.y
26
+ };
27
+ this.moveStart.emit(this.startPosition);
28
+ }
29
+ mouseUp(event) {
30
+ if (this.startPosition !== null && this.startPosition !== undefined) {
31
+ let deltaX = event.x - this.startPosition.x;
32
+ let deltaY = event.y - this.startPosition.y;
33
+ if (this.dragDirection === DragPointType.x) {
34
+ deltaY = 0;
35
+ }
36
+ if (this.dragDirection === DragPointType.y) {
37
+ deltaX = 0;
38
+ }
39
+ if (this.allowDrag && !this.allowDrag({
40
+ x: event.x,
41
+ y: event.y,
42
+ deltaX,
43
+ deltaY
44
+ })) {
45
+ this.startPosition = null;
46
+ return;
47
+ }
48
+ if (this.transformCache) {
49
+ this.transformCache.x = this.transformCache.x + deltaX;
50
+ this.transformCache.y = this.transformCache.y + deltaY;
51
+ }
52
+ else {
53
+ this.transformCache = {
54
+ x: deltaX,
55
+ y: deltaY
56
+ };
57
+ }
58
+ this.moveEnd.emit({
59
+ x: event.x,
60
+ y: event.y,
61
+ deltaX,
62
+ deltaY
63
+ });
64
+ }
65
+ this.startPosition = null;
66
+ }
67
+ mouseMove(event) {
68
+ if (this.startPosition) {
69
+ let deltaX = event.x - this.startPosition.x;
70
+ let deltaY = event.y - this.startPosition.y;
71
+ if (this.transformCache) {
72
+ deltaX = this.transformCache.x + deltaX;
73
+ deltaY = this.transformCache.y + deltaY;
74
+ }
75
+ if (this.allowDrag && !this.allowDrag({
76
+ x: event.x,
77
+ y: event.y,
78
+ deltaX,
79
+ deltaY
80
+ })) {
81
+ return;
82
+ }
83
+ if (this.dragDirection === DragPointType.x) {
84
+ deltaY = 0;
85
+ }
86
+ if (this.dragDirection === DragPointType.y) {
87
+ deltaX = 0;
88
+ }
89
+ this.setTransform(deltaX, deltaY);
90
+ event.stopPropagation();
91
+ event.preventDefault();
92
+ this.moveProcess.emit({
93
+ x: event.x,
94
+ y: event.y,
95
+ deltaX,
96
+ deltaY
97
+ });
98
+ }
99
+ }
100
+ setTransform(x, y) {
101
+ this._elementRef.nativeElement.style.transform = `translate(${x}px, ${y}px)`;
102
+ }
103
+ resetTransform() {
104
+ this.setTransform(0, 0);
105
+ this.transformCache = null;
106
+ }
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DraggablePointDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
108
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DraggablePointDirective, selector: "[tetaDraggablePoint]", inputs: { tetaDraggablePoint: "tetaDraggablePoint", dragDirection: "dragDirection", allowDrag: "allowDrag" }, outputs: { moveStart: "moveStart", moveProcess: "moveProcess", moveEnd: "moveEnd" }, host: { listeners: { "mousedown": "mouseDown($event)", "touchstart": "mouseDown($event)", "window:mouseup": "mouseUp($event)", "window:touchend": "mouseUp($event)", "window:mousemove": "mouseMove($event)", "window:touchmove": "mouseMove($event)" } }, exportAs: ["tetaDraggablePoint"], ngImport: i0 });
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DraggablePointDirective, decorators: [{
111
+ type: Directive,
112
+ args: [{
113
+ selector: '[tetaDraggablePoint]',
114
+ exportAs: 'tetaDraggablePoint'
115
+ }]
116
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tetaDraggablePoint: [{
117
+ type: Input
118
+ }], dragDirection: [{
119
+ type: Input
120
+ }], allowDrag: [{
121
+ type: Input
122
+ }], moveStart: [{
123
+ type: Output
124
+ }], moveProcess: [{
125
+ type: Output
126
+ }], moveEnd: [{
127
+ type: Output
128
+ }], mouseDown: [{
129
+ type: HostListener,
130
+ args: ['mousedown', ['$event']]
131
+ }, {
132
+ type: HostListener,
133
+ args: ['touchstart', ['$event']]
134
+ }], mouseUp: [{
135
+ type: HostListener,
136
+ args: ['window:mouseup', ['$event']]
137
+ }, {
138
+ type: HostListener,
139
+ args: ['window:touchend', ['$event']]
140
+ }], mouseMove: [{
141
+ type: HostListener,
142
+ args: ['window:mousemove', ['$event']]
143
+ }, {
144
+ type: HostListener,
145
+ args: ['window:touchmove', ['$event']]
146
+ }] } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQU01RCxNQUFNLE9BQU8sdUJBQXVCO0lBb0JkO0lBbkJYLGtCQUFrQixDQUFVO0lBQzVCLGFBQWEsQ0FBZ0I7SUFDN0IsU0FBUyxDQUtKO0lBRU4sYUFBYSxDQUduQjtJQUVNLGNBQWMsQ0FHcEI7SUFFRixZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBRVMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO0lBRUssV0FBVyxHQUFHLElBQUksWUFBWSxFQUtwQyxDQUFDO0lBRUssT0FBTyxHQUFHLElBQUksWUFBWSxFQUtoQyxDQUFDO0lBSUwsU0FBUyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJ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dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RHJhZ1BvaW50VHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9kcmFnLXBvaW50LXR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YURyYWdnYWJsZVBvaW50XScsXG4gIGV4cG9ydEFzOiAndGV0YURyYWdnYWJsZVBvaW50J1xufSlcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVQb2ludERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHRldGFEcmFnZ2FibGVQb2ludDogYm9vbGVhbjtcbiAgQElucHV0KCkgZHJhZ0RpcmVjdGlvbjogRHJhZ1BvaW50VHlwZTtcbiAgQElucHV0KCkgYWxsb3dEcmFnOiAocG9pbnQ6IHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIGRlbHRhWDogbnVtYmVyLFxuICAgIGRlbHRhWTogbnVtYmVyXG4gIH0pID0+IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBzdGFydFBvc2l0aW9uOiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcjtcbiAgfTtcblxuICBwcml2YXRlIHRyYW5zZm9ybUNhY2hlOiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBAT3V0cHV0KCkgbW92ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlclxuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBtb3ZlUHJvY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgZGVsdGFYOiBudW1iZXIsXG4gICAgZGVsdGFZOiBudW1iZXJcbiAgfT4oKTtcblxuICBAT3V0cHV0KCkgbW92ZUVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgZGVsdGFYOiBudW1iZXIsXG4gICAgZGVsdGFZOiBudW1iZXJcbiAgfT4oKTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgbW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnRldGFEcmFnZ2FibGVQb2ludCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LngsXG4gICAgICB5OiBldmVudC55XG4gICAgfTtcbiAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMuc3RhcnRQb3NpdGlvbik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIG1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uICE9PSBudWxsICYmIHRoaXMuc3RhcnRQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgZGVsdGFYID0gZXZlbnQueCAtIHRoaXMuc3RhcnRQb3NpdGlvbi54O1xuICAgICAgbGV0IGRlbHRhWSA9IGV2ZW50LnkgLSB0aGlzLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueCkge1xuICAgICAgICBkZWx0YVkgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS55KSB7XG4gICAgICAgIGRlbHRhWCA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbGxvd0RyYWcgJiYgIXRoaXMuYWxsb3dEcmFnKHtcbiAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgZGVsdGFYLFxuICAgICAgICBkZWx0YVlcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybUNhY2hlKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUueCA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueCArIGRlbHRhWDtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZS55ID0gdGhpcy50cmFuc2Zvcm1DYWNoZS55ICsgZGVsdGFZO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZSA9IHtcbiAgICAgICAgICB4OiBkZWx0YVgsXG4gICAgICAgICAgeTogZGVsdGFZXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLm1vdmVFbmQuZW1pdCh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgbW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbikge1xuICAgICAgbGV0IGRlbHRhWCA9IGV2ZW50LnggLSB0aGlzLnN0YXJ0UG9zaXRpb24ueDtcbiAgICAgIGxldCBkZWx0YVkgPSBldmVudC55IC0gdGhpcy5zdGFydFBvc2l0aW9uLnk7XG4gICAgICBpZiAodGhpcy50cmFuc2Zvcm1DYWNoZSkge1xuICAgICAgICBkZWx0YVggPSB0aGlzLnRyYW5zZm9ybUNhY2hlLnggKyBkZWx0YVg7XG4gICAgICAgIGRlbHRhWSA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueSArIGRlbHRhWTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFsbG93RHJhZyAmJiAhdGhpcy5hbGxvd0RyYWcoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWVxuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS54KSB7XG4gICAgICAgIGRlbHRhWSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLnkpIHtcbiAgICAgICAgZGVsdGFYID0gMDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKGRlbHRhWCwgZGVsdGFZKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubW92ZVByb2Nlc3MuZW1pdCh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRUcmFuc2Zvcm0oeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xuICB9XG5cbiAgcmVzZXRUcmFuc2Zvcm0oKSB7XG4gICAgdGhpcy5zZXRUcmFuc2Zvcm0oMCwgMCk7XG4gICAgdGhpcy50cmFuc2Zvcm1DYWNoZSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,263 @@
1
+ import { Directive, HostBinding, HostListener, Input, } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import { zoomIdentity } from 'd3';
4
+ import { ZoomType } from '../model/enum/zoom-type';
5
+ import { AxisOrientation } from '../model/enum/axis-orientation';
6
+ import { ZoomMessage, } from '../model/i-broadcast-message';
7
+ import { takeWhile } from 'rxjs';
8
+ import { ZoomBehaviorType } from '../model/enum/zoom-behavior-type';
9
+ import { ScaleType } from "../model/enum/scale-type";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../service/zoom.service";
12
+ import * as i2 from "../service/chart.service";
13
+ export class ZoomableDirective {
14
+ elementRef;
15
+ zoomService;
16
+ chartService;
17
+ zone;
18
+ config;
19
+ axis;
20
+ size;
21
+ zoomable = false;
22
+ crosshair = false;
23
+ _element;
24
+ zoom;
25
+ alive = true;
26
+ mouseenter() {
27
+ this.zoom?.on('start zoom end', this.zoomed);
28
+ this._element?.call(this.zoom).on('dblclick.zoom', null);
29
+ // Run wheel event listener
30
+ if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {
31
+ this.runWheelTranslate();
32
+ }
33
+ }
34
+ mouseleave() {
35
+ this.zoom?.on('start zoom end', null);
36
+ this._element?.on('wheel', null);
37
+ }
38
+ currentTransform = zoomIdentity;
39
+ constructor(elementRef, zoomService, chartService, zone) {
40
+ this.elementRef = elementRef;
41
+ this.zoomService = zoomService;
42
+ this.chartService = chartService;
43
+ this.zone = zone;
44
+ }
45
+ ngOnInit() {
46
+ if (this.axis?.options?.zoom || this.config?.zoom?.enable) {
47
+ this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;
48
+ this.crosshair = this.config?.tooltip?.showCrosshair;
49
+ }
50
+ }
51
+ ngAfterViewInit() {
52
+ this.initZoomListeners();
53
+ this.initZoomSync();
54
+ }
55
+ ngOnDestroy() {
56
+ this.zoom?.on('start zoom end', null);
57
+ this._element?.on('wheel', null);
58
+ this.alive = false;
59
+ }
60
+ initZoomSync() {
61
+ this.zoomService.zoomed.pipe(takeWhile(() => this.alive)).subscribe((zoomed) => {
62
+ if (this._element && this.elementRef !== zoomed?.element
63
+ && zoomed?.axis?.index === this.axis.index
64
+ && zoomed?.axis?.orientation === this.axis.orientation) {
65
+ const scale = this.axis.scale.copy().domain(this.axis.originDomain);
66
+ let transform;
67
+ if (zoomed.domain === null) {
68
+ transform = zoomIdentity;
69
+ }
70
+ else {
71
+ transform =
72
+ this.zoomService.getD3Transform(zoomed.domain, this.axis.originDomain, scale, this.axis.orientation, this.axis.options.inverted);
73
+ }
74
+ this._element.call(this.zoom.transform, transform);
75
+ this.currentTransform = transform;
76
+ }
77
+ });
78
+ }
79
+ initZoomListeners() {
80
+ const enable = (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||
81
+ this.config?.zoom?.enable;
82
+ if (!enable) {
83
+ return;
84
+ }
85
+ this._element = d3.select(this.elementRef.nativeElement);
86
+ this.zoom = d3.zoom().extent([
87
+ [0, 0],
88
+ [this.size.width, this.size.height],
89
+ ]);
90
+ const min = this.config?.zoom?.minTranslate != null
91
+ ? this.axis.scale(this.config?.zoom?.minTranslate)
92
+ : -Infinity;
93
+ const max = (this.config?.zoom?.maxTranslate != null
94
+ ? this.axis.scale(this.config?.zoom?.maxTranslate)
95
+ : Infinity);
96
+ if (this.axis.orientation === AxisOrientation.x && this.config.zoom.type === ZoomType.x) {
97
+ this.zoom.translateExtent([
98
+ [Math.min(min, max), -Infinity],
99
+ [Math.max(min, max), Infinity],
100
+ ]);
101
+ }
102
+ if (this.axis.orientation === AxisOrientation.y && this.config.zoom.type === ZoomType.y) {
103
+ this.zoom.translateExtent([
104
+ [-Infinity, Math.min(min, max)],
105
+ [Infinity, Math.max(min, max)],
106
+ ]);
107
+ }
108
+ if (this.config.zoom?.wheelDelta) {
109
+ this.zoom.wheelDelta(this.config.zoom?.wheelDelta);
110
+ }
111
+ if (this.config?.zoom?.wheelFilter) {
112
+ this.zoom.filter(this.config?.zoom?.wheelFilter);
113
+ }
114
+ if (this.axis.options.scaleType.type !== ScaleType.band) {
115
+ const extremes = this.axis.extremes;
116
+ const maxZoom = this.config.zoom?.max
117
+ ? (extremes[1] - extremes[0]) /
118
+ this.config.zoom?.max
119
+ : this.config.zoom?.limitZoomByData
120
+ ? 1
121
+ : 0;
122
+ const minZoom = this.config.zoom?.min
123
+ ? (extremes[1] - extremes[0]) /
124
+ this.config.zoom?.min
125
+ : Infinity;
126
+ this.zoom.scaleExtent([maxZoom, minZoom]);
127
+ }
128
+ if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {
129
+ this.runWheelTranslate();
130
+ }
131
+ }
132
+ zoomed = (event) => {
133
+ if (event.sourceEvent && (this.elementRef.nativeElement === event.sourceEvent.target || this.elementRef.nativeElement.contains(event.sourceEvent.target))) {
134
+ if (Object.keys(event.sourceEvent).length !== 0) {
135
+ const origin = this.axis.scale.copy().domain(this.axis.originDomain);
136
+ if (this.axis.options.scaleType.type === ScaleType.band) {
137
+ return;
138
+ }
139
+ const domain = this.axis.orientation === AxisOrientation.y
140
+ ? event.transform.rescaleY(origin).domain()
141
+ : event.transform.rescaleX(origin).domain();
142
+ if (domain[0] === null || domain[0] === undefined
143
+ || domain[1] === null || domain[1] === undefined
144
+ || Math.abs(domain[0] - domain[1]) < 0.000001) {
145
+ return;
146
+ }
147
+ const message = new ZoomMessage({
148
+ eventType: event.type,
149
+ axis: {
150
+ index: this.axis.index,
151
+ orientation: this.axis.orientation,
152
+ },
153
+ element: this.elementRef,
154
+ domain,
155
+ chartId: this.config.id
156
+ });
157
+ this.zoomService.fireZoom(message);
158
+ this.zoomService.broadcastZoom(message);
159
+ }
160
+ this.currentTransform = event.transform;
161
+ }
162
+ };
163
+ runWheelTranslate() {
164
+ let type = 'start';
165
+ let wheeling;
166
+ // For touch events
167
+ this.zoom.on('start zoom end', this.zoomed);
168
+ this._element?.call(this.zoom);
169
+ this.zoom
170
+ .filter((event) => {
171
+ return (event.ctrlKey && event.type === 'wheel') ||
172
+ Boolean(window.TouchEvent && event.type !== 'wheel');
173
+ })
174
+ .wheelDelta((event) => {
175
+ const delta = this.config?.zoom.type === ZoomType.x
176
+ ? -event.deltaX
177
+ : -event.deltaY;
178
+ return delta * 0.002;
179
+ });
180
+ const emit = (type, event) => {
181
+ const origin = this.axis.scale.copy().domain(this.axis.originDomain);
182
+ let transform = zoomIdentity;
183
+ const delta = type === 'end'
184
+ ? 0
185
+ : this.axis.orientation === AxisOrientation.y
186
+ ? event.deltaY
187
+ : event.deltaX;
188
+ if (this.axis.orientation === AxisOrientation.y) {
189
+ transform = transform.translate(0, this.currentTransform.y - delta / 2);
190
+ }
191
+ if (this.axis.orientation === AxisOrientation.x) {
192
+ transform = transform.translate(this.currentTransform.x - delta / 2, 0);
193
+ }
194
+ transform = transform.scale(this.currentTransform.k);
195
+ let domain = this.axis.orientation === AxisOrientation.y
196
+ ? transform.rescaleY(origin).domain()
197
+ : transform.rescaleX(origin).domain();
198
+ const extent = this.axis.options?.inverted ? domain : [...domain].reverse();
199
+ if (extent[0] <= this.config.zoom?.minTranslate) {
200
+ return;
201
+ }
202
+ if (extent[1] >= this.config.zoom?.maxTranslate) {
203
+ return;
204
+ }
205
+ const message = new ZoomMessage({
206
+ eventType: type,
207
+ element: this.elementRef,
208
+ axis: {
209
+ index: this.axis.index,
210
+ orientation: this.axis.orientation
211
+ },
212
+ domain,
213
+ chartId: this.config.id,
214
+ });
215
+ this._element?.call(this.zoom.transform, transform);
216
+ this.zoomService.fireZoom(message);
217
+ this.zoomService.broadcastZoom(message);
218
+ this.currentTransform = transform;
219
+ };
220
+ this._element.on('wheel', (event) => {
221
+ event.preventDefault();
222
+ if (event.ctrlKey) {
223
+ return;
224
+ }
225
+ this.zone.runOutsideAngular(() => {
226
+ clearTimeout(wheeling);
227
+ emit(type, event);
228
+ type = 'zoom';
229
+ wheeling = setTimeout(() => {
230
+ emit('end', event);
231
+ type = 'start';
232
+ }, 50);
233
+ });
234
+ });
235
+ }
236
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.ChartService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
237
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size" }, host: { listeners: { "mouseenter": "mouseenter()", "mouseleave": "mouseleave()" }, properties: { "class.zoomable": "this.zoomable", "class.crosshair": "this.crosshair" } }, ngImport: i0 });
238
+ }
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ZoomableDirective, decorators: [{
240
+ type: Directive,
241
+ args: [{
242
+ selector: '[tetaZoomable]',
243
+ }]
244
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ZoomService }, { type: i2.ChartService }, { type: i0.NgZone }]; }, propDecorators: { config: [{
245
+ type: Input
246
+ }], axis: [{
247
+ type: Input
248
+ }], size: [{
249
+ type: Input
250
+ }], zoomable: [{
251
+ type: HostBinding,
252
+ args: ['class.zoomable']
253
+ }], crosshair: [{
254
+ type: HostBinding,
255
+ args: ['class.crosshair']
256
+ }], mouseenter: [{
257
+ type: HostListener,
258
+ args: ['mouseenter']
259
+ }], mouseleave: [{
260
+ type: HostListener,
261
+ args: ['mouseleave']
262
+ }] } });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUE0QixZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxHQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLbkQsTUFBTSxPQUFPLGlCQUFpQjtJQStCbEI7SUFDQTtJQUNBO0lBQ0E7SUFqQ0QsTUFBTSxDQUFlO0lBQ3JCLElBQUksQ0FBTztJQUNYLElBQUksQ0FBVTtJQUVnQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFbEQsUUFBUSxDQUEwQztJQUNsRCxJQUFJLENBQXlCO0lBQzdCLEtBQUssR0FBRyxJQUFJLENBQUM7SUFHckIsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxD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QjsyS0FFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ1csU0FBUztzQkFBaEQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTzlCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxZQUFZO2dCQVcxQixVQUFVO3NCQURULFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tICdkMyc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7Wm9vbU1lc3NhZ2UsfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7dGFrZVdoaWxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtab29tQmVoYXZpb3JUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tYmVoYXZpb3ItdHlwZSc7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSBcIi4uL21vZGVsL2VudW0vc2NhbGUtdHlwZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YVpvb21hYmxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21hYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jcm9zc2hhaXInKSBwcml2YXRlIGNyb3NzaGFpciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgbW91c2VlbnRlcigpIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbSkub24oJ2RibGNsaWNrLnpvb20nLCBudWxsKTtcbiAgICAvLyBSdW4gd2hlZWwgZXZlbnQgbGlzdGVuZXJcbiAgICBpZiAodGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS53aGVlbCkge1xuICAgICAgdGhpcy5ydW5XaGVlbFRyYW5zbGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBtb3VzZWxlYXZlKCkge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5heGlzPy5vcHRpb25zPy56b29tIHx8IHRoaXMuY29uZmlnPy56b29tPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuem9vbWFibGUgPSB0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLm1vdmUgJiYgIXRoaXMuY29uZmlnPy50b29sdGlwPy5zaG93Q3Jvc3NoYWlyO1xuICAgICAgdGhpcy5jcm9zc2hhaXIgPSB0aGlzLmNvbmZpZz8udG9vbHRpcD8uc2hvd0Nyb3NzaGFpcjtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0Wm9vbUxpc3RlbmVycygpO1xuICAgIHRoaXMuaW5pdFpvb21TeW5jKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuX2VsZW1lbnQ/Lm9uKCd3aGVlbCcsIG51bGwpO1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFpvb21TeW5jKCkge1xuICAgIHRoaXMuem9vbVNlcnZpY2Uuem9vbWVkLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSlcbiAgICApLnN1YnNjcmliZSgoem9vbWVkOiBab29tTWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2VsZW1lbnQgJiYgdGhpcy5lbGVtZW50UmVmICE9PSB6b29tZWQ/LmVsZW1lbnRcbiAgICAgICAgJiYgem9vbWVkPy5heGlzPy5pbmRleCA9PT0gdGhpcy5heGlzLmluZGV4XG4gICAgICAgICYmIHpvb21lZD8uYXhpcz8ub3JpZW50YXRpb24gPT09IHRoaXMuYXhpcy5vcmllbnRhdGlvbikge1xuICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICBsZXQgdHJhbnNmb3JtO1xuICAgICAgICBpZiAoem9vbWVkLmRvbWFpbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm0gPVxuICAgICAgICAgICAgdGhpcy56b29tU2VydmljZS5nZXREM1RyYW5zZm9ybSh6b29tZWQuZG9tYWluLCB0aGlzLmF4aXMub3JpZ2luRG9tYWluLCBzY2FsZSwgdGhpcy5heGlzLm9yaWVudGF0aW9uLCB0aGlzLmF4aXMub3B0aW9ucy5pbnZlcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIHRyYW5zZm9ybSk7XG4gICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFpvb21MaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZW5hYmxlID1cbiAgICAgICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gJiYgdGhpcy5heGlzPy5vcHRpb25zLnZpc2libGUgIT09IGZhbHNlKSB8fFxuICAgICAgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZTtcblxuICAgIGlmICghZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudCA9IGQzLnNlbGVjdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy56b29tID0gZDMuem9vbSgpLmV4dGVudChbXG4gICAgICBbMCwgMF0sXG4gICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICBdKTtcblxuICAgIGNvbnN0IG1pbiA9IHRoaXMuY29uZmlnPy56b29tPy5taW5UcmFuc2xhdGUgIT0gbnVsbFxuICAgICAgPyB0aGlzLmF4aXMuc2NhbGUodGhpcy5jb25maWc/Lnpvb20/Lm1pblRyYW5zbGF0ZSlcbiAgICAgIDogLUluZmluaXR5O1xuICAgIGNvbnN0IG1heCA9ICh0aGlzLmNvbmZpZz8uem9vbT8ubWF4VHJhbnNsYXRlICE9IG51bGxcbiAgICAgID8gdGhpcy5heGlzLnNjYWxlKHRoaXMuY29uZmlnPy56b29tPy5tYXhUcmFuc2xhdGUpXG4gICAgICA6IEluZmluaXR5KTtcbiAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCAmJiB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLngpIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbTWF0aC5taW4obWluLCBtYXgpLCAtSW5maW5pdHldLFxuICAgICAgICBbTWF0aC5tYXgobWluLCBtYXgpLCBJbmZpbml0eV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSAmJiB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLnkpIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbLUluZmluaXR5LCBNYXRoLm1pbihtaW4sIG1heCldLFxuICAgICAgICBbSW5maW5pdHksIE1hdGgubWF4KG1pbiwgbWF4KV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSkge1xuICAgICAgdGhpcy56b29tLndoZWVsRGVsdGEodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy53aGVlbEZpbHRlcikge1xuICAgICAgdGhpcy56b29tLmZpbHRlcih0aGlzLmNvbmZpZz8uem9vbT8ud2hlZWxGaWx0ZXIpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlICE9PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgY29uc3QgZXh0cmVtZXMgPSB0aGlzLmF4aXMuZXh0cmVtZXMgYXMgbnVtYmVyW107XG4gICAgICBjb25zdCBtYXhab29tID0gdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgID8gKGV4dHJlbWVzWzFdIC0gZXh0cmVtZXNbMF0pIC9cbiAgICAgICAgdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgIDogdGhpcy5jb25maWcuem9vbT8ubGltaXRab29tQnlEYXRhXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiAwO1xuXG4gICAgICBjb25zdCBtaW5ab29tID0gdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgID8gKGV4dHJlbWVzWzFdIC0gZXh0cmVtZXNbMF0pIC9cbiAgICAgICAgdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLndoZWVsKSB7XG4gICAgICB0aGlzLnJ1bldoZWVsVHJhbnNsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQgJiYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PSBldmVudC5zb3VyY2VFdmVudC50YXJnZXQgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQuc291cmNlRXZlbnQudGFyZ2V0KSkpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICBpZiAodGhpcy5heGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5iYW5kKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkb21haW4gPVxuICAgICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnlcbiAgICAgICAgICAgID8gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVZKG9yaWdpbikuZG9tYWluKClcbiAgICAgICAgICAgIDogZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG4gICAgICAgIGlmIChkb21haW5bMF0gPT09IG51bGwgfHwgZG9tYWluWzBdID09PSB1bmRlZmluZWRcbiAgICAgICAgICB8fCBkb21haW5bMV0gPT09IG51bGwgfHwgZG9tYWluWzFdID09PSB1bmRlZmluZWRcbiAgICAgICAgICB8fCBNYXRoLmFicyhkb21haW5bMF0gLSBkb21haW5bMV0pIDwgMC4wMDAwMDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmF4aXMuaW5kZXgsXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5heGlzLm9yaWVudGF0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5maXJlWm9vbShtZXNzYWdlKTtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5icm9hZGNhc3Rab29tKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJ1bldoZWVsVHJhbnNsYXRlKCkge1xuICAgIGxldCB0eXBlOiAnc3RhcnQnIHwgJ3pvb20nIHwgJ2VuZCcgPSAnc3RhcnQnO1xuICAgIGxldCB3aGVlbGluZztcblxuICAgIC8vIEZvciB0b3VjaCBldmVudHNcbiAgICB0aGlzLnpvb20ub24oJ3N0YXJ0IHpvb20gZW5kJywgdGhpcy56b29tZWQpO1xuICAgIHRoaXMuX2VsZW1lbnQ/LmNhbGwodGhpcy56b29tKTtcblxuICAgIHRoaXMuem9vbVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnR5cGUgPT09ICd3aGVlbCcpIHx8XG4gICAgICAgICAgICBCb29sZWFuKHdpbmRvdy5Ub3VjaEV2ZW50ICYmIGV2ZW50LnR5cGUgIT09ICd3aGVlbCcpO1xuICAgICAgICB9XG4gICAgICApXG4gICAgICAud2hlZWxEZWx0YSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGVsdGEgPVxuICAgICAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICAgID8gLWV2ZW50LmRlbHRhWFxuICAgICAgICAgICAgOiAtZXZlbnQuZGVsdGFZO1xuICAgICAgICByZXR1cm4gZGVsdGEgKiAwLjAwMjtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZW1pdCA9ICh0eXBlOiBzdHJpbmcsIGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmF4aXMuc2NhbGUuY29weSgpLmRvbWFpbih0aGlzLmF4aXMub3JpZ2luRG9tYWluKTtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gICAgICBjb25zdCBkZWx0YSA9XG4gICAgICAgIHR5cGUgPT09ICdlbmQnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55XG4gICAgICAgICAgICA/IGV2ZW50LmRlbHRhWVxuICAgICAgICAgICAgOiBldmVudC5kZWx0YVg7XG5cbiAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0ueSAtIGRlbHRhIC8gMlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKFxuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybS54IC0gZGVsdGEgLyAyLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnNjYWxlKHRoaXMuY3VycmVudFRyYW5zZm9ybS5rKTtcblxuICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnlcbiAgICAgICAgICA/IHRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgOiB0cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgY29uc3QgZXh0ZW50ID0gdGhpcy5heGlzLm9wdGlvbnM/LmludmVydGVkID8gZG9tYWluIDogWy4uLmRvbWFpbl0ucmV2ZXJzZSgpO1xuXG4gICAgICBpZiAoZXh0ZW50WzBdIDw9IHRoaXMuY29uZmlnLnpvb20/Lm1pblRyYW5zbGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChleHRlbnRbMV0gPj0gdGhpcy5jb25maWcuem9vbT8ubWF4VHJhbnNsYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuXG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgWm9vbU1lc3NhZ2Uoe1xuICAgICAgICBldmVudFR5cGU6IHR5cGUsXG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgYXhpczoge1xuICAgICAgICAgIGluZGV4OiB0aGlzLmF4aXMuaW5kZXgsXG4gICAgICAgICAgb3JpZW50YXRpb246IHRoaXMuYXhpcy5vcmllbnRhdGlvblxuICAgICAgICB9LFxuICAgICAgICBkb21haW4sXG4gICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQ/LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20obWVzc2FnZSk7XG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmJyb2FkY2FzdFpvb20obWVzc2FnZSk7XG4gICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgfTtcblxuICAgIHRoaXMuX2VsZW1lbnQub24oJ3doZWVsJywgKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQod2hlZWxpbmcpO1xuICAgICAgICBlbWl0KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgdHlwZSA9ICd6b29tJztcbiAgICAgICAgd2hlZWxpbmcgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBlbWl0KCdlbmQnLCBldmVudCk7XG4gICAgICAgICAgdHlwZSA9ICdzdGFydCc7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
2
+ import { SeriesType } from '../model/enum/series-type';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../service/chart.service";
5
+ import * as i2 from "@angular/common";
6
+ export class LegendComponent {
7
+ chartService;
8
+ sizeMapping = new Map()
9
+ .set(SeriesType.line, 2)
10
+ .set(SeriesType.scatter, 2)
11
+ .set(SeriesType.bar, 12)
12
+ .set(SeriesType.area, 2)
13
+ .set(SeriesType.block, 12)
14
+ .set(SeriesType.blockArea, 2);
15
+ series;
16
+ classLegend = true;
17
+ constructor(chartService) {
18
+ this.chartService = chartService;
19
+ }
20
+ getHeight(serie) {
21
+ return this.sizeMapping.get(serie.type ?? SeriesType.line);
22
+ }
23
+ click(serie) {
24
+ this.chartService.toggleVisibilitySeries([serie.id]);
25
+ }
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LegendComponent, deps: [{ token: i1.ChartService }], target: i0.ɵɵFactoryTarget.Component });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: LegendComponent, selector: "teta-legend", inputs: { series: "series" }, host: { properties: { "class.padding-bottom-4": "this.classLegend" } }, ngImport: i0, template: "<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:flex;grid-gap:8px;flex-wrap:wrap;align-items:center;justify-content:space-evenly}:host .legend-item{display:flex;align-items:center}:host .legend-icon-form{width:12px}:host .legend-label{margin-left:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LegendComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'teta-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:flex;grid-gap:8px;flex-wrap:wrap;align-items:center;justify-content:space-evenly}:host .legend-item{display:flex;align-items:center}:host .legend-icon-form{width:12px}:host .legend-label{margin-left:5px}\n"] }]
32
+ }], ctorParameters: function () { return [{ type: i1.ChartService }]; }, propDecorators: { series: [{
33
+ type: Input
34
+ }], classLegend: [{
35
+ type: HostBinding,
36
+ args: ['class.padding-bottom-4']
37
+ }] } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnZW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBU3ZELE1BQU0sT0FBTyxlQUFlO0lBWU47SUFYWixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXNCO1NBQ2hELEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN2QixHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDMUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN2QixHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7U0FDekIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkIsTUFBTSxDQUEyQjtJQUNILFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFMUQsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBRyxDQUFDO0lBRWxELFNBQVMsQ0FBQyxLQUF3QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxLQUFLLENBQUMsS0FBd0I7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7dUdBcEJVLGVBQWU7MkZBQWYsZUFBZSx5SkNqQjVCLDh1QkFZQTs7MkZES2EsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU07bUdBV3RDLE1BQU07c0JBQWQsS0FBSztnQkFDaUMsV0FBVztzQkFBakQsV0FBVzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2VyaWVzVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2VyaWVzLXR5cGUnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1sZWdlbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGVnZW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGVnZW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMZWdlbmRDb21wb25lbnQge1xuICBwcml2YXRlIHNpemVNYXBwaW5nID0gbmV3IE1hcDxTZXJpZXNUeXBlLCBudW1iZXI+KClcbiAgICAuc2V0KFNlcmllc1R5cGUubGluZSwgMilcbiAgICAuc2V0KFNlcmllc1R5cGUuc2NhdHRlciwgMilcbiAgICAuc2V0KFNlcmllc1R5cGUuYmFyLCAxMilcbiAgICAuc2V0KFNlcmllc1R5cGUuYXJlYSwgMilcbiAgICAuc2V0KFNlcmllc1R5cGUuYmxvY2ssIDEyKVxuICAgIC5zZXQoU2VyaWVzVHlwZS5ibG9ja0FyZWEsIDIpO1xuXG4gIEBJbnB1dCgpIHNlcmllczogQXJyYXk8U2VyaWVzPEJhc2VQb2ludD4+O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZGRpbmctYm90dG9tLTQnKSBjbGFzc0xlZ2VuZCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSkge31cblxuICBnZXRIZWlnaHQoc2VyaWU6IFNlcmllczxCYXNlUG9pbnQ+KSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZU1hcHBpbmcuZ2V0KHNlcmllLnR5cGUgPz8gU2VyaWVzVHlwZS5saW5lKTtcbiAgfVxuXG4gIGNsaWNrKHNlcmllOiBTZXJpZXM8QmFzZVBvaW50Pikge1xuICAgdGhpcy5jaGFydFNlcnZpY2UudG9nZ2xlVmlzaWJpbGl0eVNlcmllcyhbc2VyaWUuaWRdKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VyaWUgb2Ygc2VyaWVzXCIgY2xhc3M9XCJwYWRkaW5nLWJvdHRvbS00XCI+XG4gIDxkaXYgKm5nSWY9XCJzZXJpZT8uc2hvd0luTGVnZW5kICE9PSBmYWxzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbGljayhzZXJpZSlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaWNvbi1mb3JtXCJcbiAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJnZXRIZWlnaHQoc2VyaWUpXCJcbiAgICAgICAgICAgW3N0eWxlLmJvcmRlci10b3AtY29sb3JdPVwic2VyaWUudmlzaWJsZSA/IHNlcmllLmNvbG9yIDogJ3ZhcigtLWNvbG9yLXRleHQtMzApJ1wiXG4gICAgICAgICAgIFtzdHlsZS5ib3JkZXItdG9wLXN0eWxlXT1cInNlcmllLnN0eWxlPy5zdHJva2VEYXNoYXJyYXkgPyAnZGFzaGVkJyA6ICdzb2xpZCdcIlxuICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXdpZHRoLnB4XT1cInNlcmllLnN0eWxlPy5zdHJva2VEYXNoYXJyYXkgPyAxIDogMlwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1sYWJlbFwiIHN0eWxlPVwidXNlci1zZWxlY3Q6IG5vbmVcIiBbc3R5bGUudGV4dC1kZWNvcmF0aW9uXT1cInNlcmllLnZpc2libGUgPyAnbm9uZScgOiAnbGluZS10aHJvdWdoJ1wiPnt7IHNlcmllLm5hbWUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,13 +1,13 @@
1
1
  export class ChartBounds {
2
+ top = 0;
3
+ right = 0;
4
+ bottom = 0;
5
+ left = 0;
2
6
  constructor(options) {
3
- this.top = 0;
4
- this.right = 0;
5
- this.bottom = 0;
6
- this.left = 0;
7
7
  this.top = options?.top || 0;
8
8
  this.right = options?.right || 0;
9
9
  this.bottom = options?.bottom || 0;
10
10
  this.left = options?.left || 0;
11
11
  }
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L21vZGVsL2NoYXJ0LWJvdW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQU10QixZQUFZLE9BS1g7UUFWRCxRQUFHLEdBQVksQ0FBQyxDQUFDO1FBQ2pCLFVBQUssR0FBWSxDQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFZLENBQUMsQ0FBQztRQUNwQixTQUFJLEdBQVksQ0FBQyxDQUFDO1FBUWhCLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENoYXJ0Qm91bmRzIHtcbiAgdG9wPzogbnVtYmVyID0gMDtcbiAgcmlnaHQ/OiBudW1iZXIgPSAwO1xuICBib3R0b20/OiBudW1iZXIgPSAwO1xuICBsZWZ0PzogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIHRvcD86IG51bWJlcjtcbiAgICByaWdodD86IG51bWJlcjtcbiAgICBib3R0b20/OiBudW1iZXI7XG4gICAgbGVmdD86IG51bWJlcjtcbiAgfSkge1xuICAgIHRoaXMudG9wID0gb3B0aW9ucz8udG9wIHx8IDA7XG4gICAgdGhpcy5yaWdodCA9IG9wdGlvbnM/LnJpZ2h0IHx8IDA7XG4gICAgdGhpcy5ib3R0b20gPSBvcHRpb25zPy5ib3R0b20gfHwgMDtcbiAgICB0aGlzLmxlZnQgPSBvcHRpb25zPy5sZWZ0IHx8IDA7XG4gIH1cbn1cbiJdfQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L21vZGVsL2NoYXJ0LWJvdW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQUN0QixHQUFHLEdBQVksQ0FBQyxDQUFDO0lBQ2pCLEtBQUssR0FBWSxDQUFDLENBQUM7SUFDbkIsTUFBTSxHQUFZLENBQUMsQ0FBQztJQUNwQixJQUFJLEdBQVksQ0FBQyxDQUFDO0lBRWxCLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENoYXJ0Qm91bmRzIHtcbiAgdG9wPzogbnVtYmVyID0gMDtcbiAgcmlnaHQ/OiBudW1iZXIgPSAwO1xuICBib3R0b20/OiBudW1iZXIgPSAwO1xuICBsZWZ0PzogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIHRvcD86IG51bWJlcjtcbiAgICByaWdodD86IG51bWJlcjtcbiAgICBib3R0b20/OiBudW1iZXI7XG4gICAgbGVmdD86IG51bWJlcjtcbiAgfSkge1xuICAgIHRoaXMudG9wID0gb3B0aW9ucz8udG9wIHx8IDA7XG4gICAgdGhpcy5yaWdodCA9IG9wdGlvbnM/LnJpZ2h0IHx8IDA7XG4gICAgdGhpcy5ib3R0b20gPSBvcHRpb25zPy5ib3R0b20gfHwgMDtcbiAgICB0aGlzLmxlZnQgPSBvcHRpb25zPy5sZWZ0IHx8IDA7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ export class ZoomMessage {
2
+ eventType;
3
+ element;
4
+ axis;
5
+ domain;
6
+ chartId;
7
+ style;
8
+ constructor(options) {
9
+ this.eventType = options?.eventType;
10
+ this.element = options?.element;
11
+ this.axis = options?.axis;
12
+ this.domain = options.domain;
13
+ this.chartId = options?.chartId;
14
+ this.style = options?.style;
15
+ }
16
+ }
17
+ export class BrushMessage {
18
+ chartId;
19
+ selection;
20
+ mode;
21
+ constructor(options) {
22
+ this.chartId = options?.chartId;
23
+ this.selection = options?.selection;
24
+ this.mode = options?.mode;
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1icm9hZGNhc3QtbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFNBQVMsQ0FBb0M7SUFDN0MsT0FBTyxDQUFjO0lBQ3JCLElBQUksQ0FBYTtJQUNqQixNQUFNLENBQW9CO0lBQzFCLE9BQU8sQ0FBUztJQUNoQixLQUFLLENBQWtCO0lBRXZCLFlBQVksT0FPWDtRQUNDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQW1CO0lBQzVCLElBQUksQ0FBbUQ7SUFFdkQsWUFBWSxPQUlYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4vZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7RWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0eWxlID0ge1xuICB0cmFuc2l0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGFyZ2V0QXhpcyA9IHtcbiAgaW5kZXg6IG51bWJlcixcbiAgb3JpZW50YXRpb246IEF4aXNPcmllbnRhdGlvblxufVxuXG5leHBvcnQgY2xhc3MgWm9vbU1lc3NhZ2Uge1xuICBldmVudFR5cGU6ICdzdGFydCcgfCAnem9vbScgfCAnZW5kJyB8IHN0cmluZztcbiAgZWxlbWVudD86IEVsZW1lbnRSZWY7XG4gIGF4aXM6IFRhcmdldEF4aXM7XG4gIGRvbWFpbj86IFtudW1iZXIsIG51bWJlcl07XG4gIGNoYXJ0SWQ6IHN0cmluZztcbiAgc3R5bGU/OiBUcmFuc2Zvcm1TdHlsZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzoge1xuICAgIGV2ZW50VHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnIHwgc3RyaW5nO1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50UmVmO1xuICAgIGF4aXM/OiBUYXJnZXRBeGlzO1xuICAgIGRvbWFpbj86IFtudW1iZXIsIG51bWJlcl1cbiAgICBjaGFydElkOiBzdHJpbmc7XG4gICAgc3R5bGU/OiBUcmFuc2Zvcm1TdHlsZTtcbiAgfSkge1xuICAgIHRoaXMuZXZlbnRUeXBlID0gb3B0aW9ucz8uZXZlbnRUeXBlO1xuICAgIHRoaXMuZWxlbWVudCA9IG9wdGlvbnM/LmVsZW1lbnQ7XG4gICAgdGhpcy5heGlzID0gb3B0aW9ucz8uYXhpcztcbiAgICB0aGlzLmRvbWFpbiA9IG9wdGlvbnMuZG9tYWluO1xuICAgIHRoaXMuY2hhcnRJZCA9IG9wdGlvbnM/LmNoYXJ0SWQ7XG4gICAgdGhpcy5zdHlsZSA9IG9wdGlvbnM/LnN0eWxlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCcnVzaE1lc3NhZ2Uge1xuICBjaGFydElkOiBzdHJpbmc7XG4gIHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXTtcbiAgbW9kZT86ICdkcmFnJyB8ICdzcGFjZScgfCAnaGFuZGxlJyB8ICdjZW50ZXInIHwgJ2luaXQnO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiB7XG4gICAgY2hhcnRJZDogc3RyaW5nO1xuICAgIHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXTtcbiAgICBtb2RlPzogJ2RyYWcnIHwgJ3NwYWNlJyB8ICdoYW5kbGUnIHwgJ2NlbnRlcicgfCAnaW5pdCc7XG4gIH0pIHtcbiAgICB0aGlzLmNoYXJ0SWQgPSBvcHRpb25zPy5jaGFydElkO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gb3B0aW9ucz8uc2VsZWN0aW9uO1xuICAgIHRoaXMubW9kZSA9IG9wdGlvbnM/Lm1vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQnJvYWRjYXN0TWVzc2FnZTxUPiB7XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgbWVzc2FnZTogVDtcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ export class PlotBand {
2
+ id;
3
+ name;
4
+ from;
5
+ to;
6
+ label;
7
+ showGrabbers;
8
+ draggable;
9
+ resizable;
10
+ min;
11
+ max;
12
+ style;
13
+ constructor(options) {
14
+ this.id = options?.id;
15
+ this.name = options?.name;
16
+ this.from = options?.from;
17
+ this.to = options?.to;
18
+ this.label = options?.label;
19
+ this.showGrabbers =
20
+ options?.showGrabbers != null ? options.showGrabbers : true;
21
+ this.draggable = options?.draggable != null ? options?.draggable : false;
22
+ this.resizable = options?.resizable != null ? options?.resizable : true;
23
+ this.min = options?.min;
24
+ this.max = options?.max;
25
+ this.style = options?.style;
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L21vZGVsL3Bsb3QtYmFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sUUFBUTtJQUNuQixFQUFFLENBQW1CO0lBQ3JCLElBQUksQ0FBVTtJQUNkLElBQUksQ0FBUztJQUNiLEVBQUUsQ0FBUztJQUNYLEtBQUssQ0FBVTtJQUNmLFlBQVksQ0FBVztJQUN2QixTQUFTLENBQVc7SUFDcEIsU0FBUyxDQUFXO0lBQ3BCLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLEtBQUssQ0FHSDtJQUVGLFlBQVksT0FlWDtRQUNDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVk7WUFDZixPQUFPLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEUsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ZnQXR0cmlidXRlcyB9IGZyb20gJy4vc3ZnLWF0dHJpYnV0ZXMnO1xuXG5leHBvcnQgY2xhc3MgUGxvdEJhbmQge1xuICBpZD86IG51bWJlciB8IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZnJvbTogbnVtYmVyO1xuICB0bzogbnVtYmVyO1xuICBsYWJlbD86IHN0cmluZztcbiAgc2hvd0dyYWJiZXJzPzogYm9vbGVhbjtcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHN0eWxlPzoge1xuICAgIHBsb3RCYW5kPzogU3ZnQXR0cmlidXRlcztcbiAgICBncmFiYmVycz86IFN2Z0F0dHJpYnV0ZXM7XG4gIH07XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IHtcbiAgICBpZD86IG51bWJlciB8IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGZyb206IG51bWJlcjtcbiAgICB0bzogbnVtYmVyO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIHNob3dHcmFiYmVycz86IGJvb2xlYW47XG4gICAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICByZXNpemFibGU/OiBib29sZWFuO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXI7XG4gICAgc3R5bGU/OiB7XG4gICAgICBwbG90QmFuZD86IFN2Z0F0dHJpYnV0ZXM7XG4gICAgICBncmFiYmVycz86IFN2Z0F0dHJpYnV0ZXM7XG4gICAgfTtcbiAgfSkge1xuICAgIHRoaXMuaWQgPSBvcHRpb25zPy5pZDtcbiAgICB0aGlzLm5hbWUgPSBvcHRpb25zPy5uYW1lO1xuICAgIHRoaXMuZnJvbSA9IG9wdGlvbnM/LmZyb207XG4gICAgdGhpcy50byA9IG9wdGlvbnM/LnRvO1xuICAgIHRoaXMubGFiZWwgPSBvcHRpb25zPy5sYWJlbDtcbiAgICB0aGlzLnNob3dHcmFiYmVycyA9XG4gICAgICBvcHRpb25zPy5zaG93R3JhYmJlcnMgIT0gbnVsbCA/IG9wdGlvbnMuc2hvd0dyYWJiZXJzIDogdHJ1ZTtcbiAgICB0aGlzLmRyYWdnYWJsZSA9IG9wdGlvbnM/LmRyYWdnYWJsZSAhPSBudWxsID8gb3B0aW9ucz8uZHJhZ2dhYmxlIDogZmFsc2U7XG4gICAgdGhpcy5yZXNpemFibGUgPSBvcHRpb25zPy5yZXNpemFibGUgIT0gbnVsbCA/IG9wdGlvbnM/LnJlc2l6YWJsZSA6IHRydWU7XG4gICAgdGhpcy5taW4gPSBvcHRpb25zPy5taW47XG4gICAgdGhpcy5tYXggPSBvcHRpb25zPy5tYXg7XG4gICAgdGhpcy5zdHlsZSA9IG9wdGlvbnM/LnN0eWxlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ export class PlotLine {
2
+ id;
3
+ name;
4
+ value;
5
+ label;
6
+ min;
7
+ max;
8
+ draggable;
9
+ style;
10
+ constructor(options) {
11
+ this.id = options?.id;
12
+ this.name = options?.name;
13
+ this.value = options?.value;
14
+ this.label = options?.label;
15
+ this.min = options?.min;
16
+ this.max = options?.max;
17
+ this.draggable = options?.draggable;
18
+ this.style = options?.style;
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L21vZGVsL3Bsb3QtbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sUUFBUTtJQUNuQixFQUFFLENBQW1CO0lBQ3JCLElBQUksQ0FBVTtJQUNkLEtBQUssQ0FBUztJQUNkLEtBQUssQ0FBVTtJQUNmLEdBQUcsQ0FBVTtJQUNiLEdBQUcsQ0FBVTtJQUNiLFNBQVMsQ0FBVztJQUNwQixLQUFLLENBQWlCO0lBRXRCLFlBQVksT0FTWDtRQUNDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdmdBdHRyaWJ1dGVzfSBmcm9tICcuL3N2Zy1hdHRyaWJ1dGVzJztcblxuZXhwb3J0IGNsYXNzIFBsb3RMaW5lIHtcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgc3R5bGU/OiBTdmdBdHRyaWJ1dGVzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiB7XG4gICAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXI7XG4gICAgZHJhZ2dhYmxlPzogYm9vbGVhbjtcbiAgICBzdHlsZT86IFN2Z0F0dHJpYnV0ZXM7XG4gIH0pIHtcbiAgICB0aGlzLmlkID0gb3B0aW9ucz8uaWQ7XG4gICAgdGhpcy5uYW1lID0gb3B0aW9ucz8ubmFtZTtcbiAgICB0aGlzLnZhbHVlID0gb3B0aW9ucz8udmFsdWU7XG4gICAgdGhpcy5sYWJlbCA9IG9wdGlvbnM/LmxhYmVsO1xuICAgIHRoaXMubWluID0gb3B0aW9ucz8ubWluO1xuICAgIHRoaXMubWF4ID0gb3B0aW9ucz8ubWF4O1xuICAgIHRoaXMuZHJhZ2dhYmxlID0gb3B0aW9ucz8uZHJhZ2dhYmxlO1xuICAgIHRoaXMuc3R5bGUgPSBvcHRpb25zPy5zdHlsZTtcbiAgfVxufVxuIl19