@tetacom/svg-charts 1.0.2 → 1.1.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 (145) hide show
  1. package/dist/chart/base/series-base.component.d.ts +4 -1
  2. package/dist/chart/chart/chart.component.d.ts +12 -9
  3. package/dist/chart/chart-container/chart-container.component.d.ts +18 -23
  4. package/dist/chart/chart-container/gridlines/gridlines.component.d.ts +7 -16
  5. package/dist/chart/chart-container/plotband/{plotband.component.d.ts → plot-band.component.d.ts} +10 -10
  6. package/dist/chart/chart-container/plotline/plotline.component.d.ts +5 -5
  7. package/dist/chart/chart-container/series/line/line-series.component.d.ts +2 -2
  8. package/dist/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +28 -0
  9. package/dist/chart/chart-container/series-host/series-host.component.d.ts +4 -1
  10. package/dist/chart/chart-container/tooltip/tooltip.component.d.ts +6 -3
  11. package/dist/chart/chart-container/x-axis/x-axis.component.d.ts +6 -10
  12. package/dist/chart/chart-container/y-axis/y-axis.component.d.ts +7 -11
  13. package/dist/chart/chart.module.d.ts +4 -3
  14. package/dist/chart/core/axis/axis.d.ts +8 -3
  15. package/dist/chart/default/default-axis-config.d.ts +2 -0
  16. package/dist/chart/default/default-chart-config.d.ts +2 -0
  17. package/dist/chart/default/default-series-config.d.ts +3 -0
  18. package/dist/chart/directives/brushable.directive.d.ts +2 -1
  19. package/dist/chart/directives/zoomable.directive.d.ts +1 -3
  20. package/dist/chart/legend/legend.component.d.ts +1 -3
  21. package/dist/chart/model/axis-options.d.ts +9 -7
  22. package/dist/chart/model/base-point.d.ts +1 -1
  23. package/dist/chart/model/enum/public-api.d.ts +1 -1
  24. package/dist/chart/model/enum/scale-type.d.ts +8 -0
  25. package/dist/chart/model/enum/series-type.d.ts +2 -1
  26. package/dist/chart/model/i-broadcast-message.d.ts +14 -2
  27. package/dist/chart/model/i-chart-config.d.ts +1 -0
  28. package/dist/chart/model/{plotband.d.ts → plot-band.d.ts} +7 -5
  29. package/dist/chart/model/{plotline.d.ts → plot-line.d.ts} +3 -1
  30. package/dist/chart/model/public-api.d.ts +2 -2
  31. package/dist/chart/service/brush.service.d.ts +2 -5
  32. package/dist/chart/service/chart.service.d.ts +16 -17
  33. package/dist/chart/service/scale.service.d.ts +13 -8
  34. package/dist/chart/service/zoom.service.d.ts +6 -14
  35. package/dist/esm2020/chart/base/series-base.component.mjs +7 -9
  36. package/dist/esm2020/chart/chart/chart.component.mjs +28 -30
  37. package/dist/esm2020/chart/chart-container/chart-container.component.mjs +97 -115
  38. package/dist/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +19 -31
  39. package/dist/esm2020/chart/chart-container/plotband/plot-band.component.mjs +141 -0
  40. package/dist/esm2020/chart/chart-container/plotline/plotline.component.mjs +11 -14
  41. package/dist/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +11 -11
  42. package/dist/esm2020/chart/chart-container/series/line/line-series.component.mjs +33 -29
  43. package/dist/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +174 -0
  44. package/dist/esm2020/chart/chart-container/series-host/series-host.component.mjs +16 -5
  45. package/dist/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +17 -19
  46. package/dist/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +19 -22
  47. package/dist/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +20 -25
  48. package/dist/esm2020/chart/chart.module.mjs +8 -5
  49. package/dist/esm2020/chart/core/axis/axis.mjs +25 -16
  50. package/dist/esm2020/chart/core/axis/builders/extremes-builder.mjs +2 -3
  51. package/dist/esm2020/chart/default/default-axis-config.mjs +9 -0
  52. package/dist/esm2020/chart/default/default-chart-config.mjs +23 -0
  53. package/dist/esm2020/chart/default/default-series-config.mjs +8 -0
  54. package/dist/esm2020/chart/directives/brushable.directive.mjs +5 -3
  55. package/dist/esm2020/chart/directives/zoomable.directive.mjs +7 -8
  56. package/dist/esm2020/chart/legend/legend.component.mjs +4 -7
  57. package/dist/esm2020/chart/model/axis-options.mjs +1 -1
  58. package/dist/esm2020/chart/model/base-point.mjs +1 -1
  59. package/dist/esm2020/chart/model/enum/public-api.mjs +2 -2
  60. package/dist/esm2020/chart/model/enum/scale-type.mjs +10 -0
  61. package/dist/esm2020/chart/model/enum/series-type.mjs +2 -1
  62. package/dist/esm2020/chart/model/i-broadcast-message.mjs +1 -1
  63. package/dist/esm2020/chart/model/i-chart-config.mjs +1 -1
  64. package/dist/esm2020/chart/model/plot-band.mjs +17 -0
  65. package/dist/esm2020/chart/model/plot-line.mjs +13 -0
  66. package/dist/esm2020/chart/model/public-api.mjs +3 -3
  67. package/dist/esm2020/chart/service/broadcast.service.mjs +3 -5
  68. package/dist/esm2020/chart/service/brush.service.mjs +26 -23
  69. package/dist/esm2020/chart/service/chart.service.mjs +61 -43
  70. package/dist/esm2020/chart/service/scale.service.mjs +138 -50
  71. package/dist/esm2020/chart/service/zoom.service.mjs +82 -85
  72. package/dist/esm2020/public-api.mjs +2 -1
  73. package/dist/fesm2015/tetacom-svg-charts.mjs +942 -659
  74. package/dist/fesm2015/tetacom-svg-charts.mjs.map +1 -1
  75. package/dist/fesm2020/tetacom-svg-charts.mjs +929 -657
  76. package/dist/fesm2020/tetacom-svg-charts.mjs.map +1 -1
  77. package/package.json +1 -1
  78. package/src/chart/Chart.stories.ts +88 -173
  79. package/src/chart/base/series-base.component.ts +4 -9
  80. package/src/chart/chart/chart.component.html +16 -5
  81. package/src/chart/chart/chart.component.scss +1 -0
  82. package/src/chart/chart/chart.component.ts +39 -33
  83. package/src/chart/chart-container/chart-container.component.html +102 -57
  84. package/src/chart/chart-container/chart-container.component.scss +0 -1
  85. package/src/chart/chart-container/chart-container.component.ts +136 -165
  86. package/src/chart/chart-container/gridlines/gridlines.component.html +9 -2
  87. package/src/chart/chart-container/gridlines/gridlines.component.ts +17 -35
  88. package/src/chart/chart-container/plotband/{plotband.component.html → plot-band.component.html} +15 -9
  89. package/src/chart/chart-container/plotband/plot-band.component.scss +13 -0
  90. package/src/chart/chart-container/plotband/{plotband.component.spec.ts → plot-band.component.spec.ts} +5 -5
  91. package/src/chart/chart-container/plotband/{plotband.component.ts → plot-band.component.ts} +51 -57
  92. package/src/chart/chart-container/plotline/plotline.component.html +3 -3
  93. package/src/chart/chart-container/plotline/plotline.component.ts +10 -22
  94. package/src/chart/chart-container/series/bar/bar-series.component.ts +10 -12
  95. package/src/chart/chart-container/series/line/line-series.component.html +29 -31
  96. package/src/chart/chart-container/series/line/line-series.component.ts +69 -50
  97. package/src/chart/chart-container/series/scatter-series/scatter-series.component.html +43 -0
  98. package/src/chart/chart-container/series/scatter-series/scatter-series.component.scss +9 -0
  99. package/src/chart/chart-container/series/scatter-series/scatter-series.component.spec.ts +25 -0
  100. package/src/chart/chart-container/series/scatter-series/scatter-series.component.ts +254 -0
  101. package/src/chart/chart-container/series-host/series-host.component.ts +25 -16
  102. package/src/chart/chart-container/tooltip/tooltip.component.html +1 -1
  103. package/src/chart/chart-container/tooltip/tooltip.component.scss +2 -1
  104. package/src/chart/chart-container/tooltip/tooltip.component.ts +25 -26
  105. package/src/chart/chart-container/x-axis/x-axis.component.ts +18 -20
  106. package/src/chart/chart-container/y-axis/y-axis.component.ts +18 -28
  107. package/src/chart/chart.module.ts +4 -2
  108. package/src/chart/core/axis/axis.ts +37 -21
  109. package/src/chart/core/axis/builders/extremes-builder.ts +7 -12
  110. package/src/chart/core/builder/domain-builder.ts +0 -0
  111. package/src/chart/default/default-axis-config.ts +10 -0
  112. package/src/chart/default/default-chart-config.ts +20 -8
  113. package/src/chart/default/default-series-config.ts +10 -0
  114. package/src/chart/directives/brushable.directive.ts +2 -1
  115. package/src/chart/directives/zoomable.directive.ts +6 -9
  116. package/src/chart/legend/legend.component.html +7 -5
  117. package/src/chart/legend/legend.component.ts +2 -6
  118. package/src/chart/model/axis-options.ts +9 -7
  119. package/src/chart/model/base-point.ts +1 -1
  120. package/src/chart/model/enum/public-api.ts +1 -1
  121. package/src/chart/model/enum/scale-type.ts +8 -0
  122. package/src/chart/model/enum/series-type.ts +1 -0
  123. package/src/chart/model/i-broadcast-message.ts +17 -2
  124. package/src/chart/model/i-chart-config.ts +1 -0
  125. package/src/chart/model/i-dom-rect.ts +6 -0
  126. package/src/chart/model/{plotband.ts → plot-band.ts} +8 -5
  127. package/src/chart/model/{plotline.ts → plot-line.ts} +5 -2
  128. package/src/chart/model/public-api.ts +2 -2
  129. package/src/chart/service/broadcast.service.ts +5 -4
  130. package/src/chart/service/brush.service.ts +34 -31
  131. package/src/chart/service/chart.service.ts +70 -54
  132. package/src/chart/service/scale.service.ts +218 -61
  133. package/src/chart/service/zoom.service.ts +144 -113
  134. package/src/public-api.ts +3 -0
  135. package/dist/chart/model/enum/axis-type.d.ts +0 -7
  136. package/dist/chart/service/axes.service.d.ts +0 -11
  137. package/dist/esm2020/chart/chart-container/plotband/plotband.component.mjs +0 -139
  138. package/dist/esm2020/chart/model/enum/axis-type.mjs +0 -9
  139. package/dist/esm2020/chart/model/plotband.mjs +0 -16
  140. package/dist/esm2020/chart/model/plotline.mjs +0 -12
  141. package/dist/esm2020/chart/service/axes.service.mjs +0 -29
  142. package/src/chart/chart-container/plotband/plotband.component.scss +0 -13
  143. package/src/chart/model/enum/axis-type.ts +0 -7
  144. package/src/chart/service/axes.service.spec.ts +0 -16
  145. package/src/chart/service/axes.service.ts +0 -27
@@ -0,0 +1,141 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import { AxisOrientation } from '../../model/enum/axis-orientation';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../service/scale.service";
6
+ import * as i2 from "../../service/zoom.service";
7
+ import * as i3 from "../../service/chart.service";
8
+ import * as i4 from "@angular/common";
9
+ export class PlotBandComponent {
10
+ constructor(scaleService, zoomService, chartService, cdr, element) {
11
+ this.scaleService = scaleService;
12
+ this.zoomService = zoomService;
13
+ this.chartService = chartService;
14
+ this.cdr = cdr;
15
+ this.element = element;
16
+ this.orientation = AxisOrientation;
17
+ }
18
+ emit(event) {
19
+ this.chartService.emitPlotband(event);
20
+ }
21
+ ngAfterViewInit() {
22
+ this.domain = this.scale.domain();
23
+ const plotbandElement = d3
24
+ .select(this.element.nativeElement)
25
+ .select('.plotband')
26
+ .on('click', (event, d) => {
27
+ this.emit({
28
+ event,
29
+ target: d,
30
+ });
31
+ });
32
+ const grabElements = d3
33
+ .select(this.element.nativeElement)
34
+ .selectAll('.grabber');
35
+ const drag = d3
36
+ .drag()
37
+ .subject(() => {
38
+ if (this.axis.orientation === AxisOrientation.x) {
39
+ return { x: plotbandElement.attr('x') };
40
+ }
41
+ if (this.axis.orientation === AxisOrientation.y) {
42
+ return { y: plotbandElement.attr('y') };
43
+ }
44
+ })
45
+ .on('start drag end', (event, d) => {
46
+ let bandSize = parseFloat(plotbandElement.attr(this.axis.orientation === AxisOrientation.x ? 'width' : 'height'));
47
+ d.to = this.scale.invert(event[AxisOrientation[this.axis.orientation]] +
48
+ (this.axis.orientation === AxisOrientation.x ? bandSize : 0));
49
+ d.from = this.scale.invert(event[AxisOrientation[this.axis.orientation]] +
50
+ (this.axis.orientation === AxisOrientation.y ? bandSize : 0));
51
+ this.emit({
52
+ event,
53
+ target: d,
54
+ });
55
+ this.cdr.detectChanges();
56
+ });
57
+ let grabberKey;
58
+ const resize = d3
59
+ .drag()
60
+ .on('start drag end', (event, d) => {
61
+ requestAnimationFrame(() => {
62
+ if (event?.type === 'start') {
63
+ const { grabber } = event?.sourceEvent?.target?.dataset;
64
+ grabberKey = grabber;
65
+ }
66
+ const min = Math.min(...this.domain);
67
+ const max = Math.max(...this.domain);
68
+ const minValue = d.min ?? min;
69
+ const maxValue = d.max ?? max;
70
+ d[grabberKey] = this.scale.invert(event[AxisOrientation[this.axis.orientation]]);
71
+ if (grabberKey === 'from') {
72
+ const borderMin = d.from <= minValue;
73
+ if (d.from >= d.to) {
74
+ d.from = d.to;
75
+ }
76
+ if (borderMin) {
77
+ d.from = minValue;
78
+ }
79
+ }
80
+ if (grabberKey === 'to') {
81
+ const borderMax = d.to >= maxValue;
82
+ if (borderMax) {
83
+ d.to = maxValue;
84
+ }
85
+ if (d.to <= d.from) {
86
+ d.to = d.from;
87
+ }
88
+ }
89
+ this.emit({
90
+ event,
91
+ target: d,
92
+ });
93
+ this.cdr.detectChanges();
94
+ });
95
+ });
96
+ plotbandElement.datum(this.plotBand);
97
+ grabElements.datum(this.plotBand);
98
+ if (this.plotBand.draggable) {
99
+ plotbandElement.call(drag);
100
+ }
101
+ if (this.plotBand.resizable) {
102
+ grabElements.call(resize);
103
+ }
104
+ }
105
+ get bandSize() {
106
+ return Math.abs(this.scale(this.plotBand.to) - this.scale(this.plotBand.from));
107
+ }
108
+ get height() {
109
+ return this.size.height;
110
+ }
111
+ get width() {
112
+ return this.size.width;
113
+ }
114
+ get from() {
115
+ return this.scale(this.plotBand.from);
116
+ }
117
+ get to() {
118
+ return this.scale(this.plotBand.to);
119
+ }
120
+ getFill(d) {
121
+ if (d.style?.plotBand?.patternImage) {
122
+ return `url(#${d.style.plotBand?.patternImage})`;
123
+ }
124
+ return d.style.plotBand?.fill;
125
+ }
126
+ }
127
+ PlotBandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PlotBandComponent, deps: [{ token: i1.ScaleService }, { token: i2.ZoomService }, { token: i3.ChartService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
128
+ PlotBandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: PlotBandComponent, selector: "[teta-plot-band]", inputs: { plotBand: "plotBand", axis: "axis", scale: "scale", size: "size" }, ngImport: i0, template: "<svg:rect\n class=\"plotband\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? to : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PlotBandComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: '[teta-plot-band]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect\n class=\"plotband\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? to : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'red'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}\n"] }]
132
+ }], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ZoomService }, { type: i3.ChartService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { plotBand: [{
133
+ type: Input
134
+ }], axis: [{
135
+ type: Input
136
+ }], scale: [{
137
+ type: Input
138
+ }], size: [{
139
+ type: Input
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQU16QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQVVwRSxNQUFNLE9BQU8saUJBQWlCO0lBUzVCLFlBQ1UsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsR0FBc0IsRUFDdEIsT0FBbUI7UUFKbkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVQ3QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztJQVUzQixDQUFDO0lBRUosSUFBSSxDQUFDLEtBQTRCO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxDLE1BQU0sZUFBZSxHQUFHLEVBQUU7YUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxXQUFX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QUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxZQUFZLEdBQUcsQ0FBQztTQUNsRDtRQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQ2hDLENBQUM7OzhHQTVLVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzSUMxQjlCLDBtR0FnRUE7MkZEdENhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTtpTkFHdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgUGxvdEJhbmQgfSBmcm9tICcuLi8uLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IElDaGFydEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdGV0YS1wbG90LWJhbmRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bsb3QtYmFuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bsb3QtYmFuZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGxvdEJhbmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcGxvdEJhbmQ6IFBsb3RCYW5kO1xuICBASW5wdXQoKSBheGlzOiBBeGlzO1xuICBASW5wdXQoKSBzY2FsZTogYW55O1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBvcmllbnRhdGlvbiA9IEF4aXNPcmllbnRhdGlvbjtcblxuICBkb21haW46IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBlbWl0KGV2ZW50OiBJQ2hhcnRFdmVudDxQbG90QmFuZD4pIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5lbWl0UGxvdGJhbmQoZXZlbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9tYWluID0gdGhpcy5zY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHBsb3RiYW5kRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdCgnLnBsb3RiYW5kJylcbiAgICAgIC5vbignY2xpY2snLCAoZXZlbnQsIGQ6IFBsb3RCYW5kKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiBkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZ3JhYkVsZW1lbnRzID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZ3JhYmJlcicpO1xuXG4gICAgY29uc3QgZHJhZyA9IGQzXG4gICAgICAuZHJhZygpXG4gICAgICAuc3ViamVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIHsgeDogcGxvdGJhbmRFbGVtZW50LmF0dHIoJ3gnKSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4geyB5OiBwbG90YmFuZEVsZW1lbnQuYXR0cigneScpIH07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAub24oXG4gICAgICAgICdzdGFydCBkcmFnIGVuZCcsXG4gICAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90QmFuZCwgYW55PiwgZDogUGxvdEJhbmQpID0+IHtcbiAgICAgICAgICBsZXQgYmFuZFNpemUgPSBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgcGxvdGJhbmRFbGVtZW50LmF0dHIoXG4gICAgICAgICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnggPyAnd2lkdGgnIDogJ2hlaWdodCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZC50byA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dICtcbiAgICAgICAgICAgICAgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnggPyBiYW5kU2l6ZSA6IDApXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGQuZnJvbSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dICtcbiAgICAgICAgICAgICAgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkgPyBiYW5kU2l6ZSA6IDApXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBncmFiYmVyS2V5O1xuXG4gICAgY29uc3QgcmVzaXplID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5vbihcbiAgICAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAgICAgKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIFBsb3RCYW5kLCBhbnk+LCBkOiBQbG90QmFuZCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBncmFiYmVyIH0gPSBldmVudD8uc291cmNlRXZlbnQ/LnRhcmdldD8uZGF0YXNldDtcbiAgICAgICAgICAgICAgZ3JhYmJlcktleSA9IGdyYWJiZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnRoaXMuZG9tYWluKTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnRoaXMuZG9tYWluKTtcblxuICAgICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBkLm1pbiA/PyBtaW47XG4gICAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IGQubWF4ID8/IG1heDtcbiAgICAgICAgICAgIGRbZ3JhYmJlcktleV0gPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZ3JhYmJlcktleSA9PT0gJ2Zyb20nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJvcmRlck1pbiA9IGQuZnJvbSA8PSBtaW5WYWx1ZTtcblxuICAgICAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgICAgICBkLmZyb20gPSBkLnRvO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGJvcmRlck1pbikge1xuICAgICAgICAgICAgICAgIGQuZnJvbSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChncmFiYmVyS2V5ID09PSAndG8nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJvcmRlck1heCA9IGQudG8gPj0gbWF4VmFsdWU7XG5cbiAgICAgICAgICAgICAgaWYgKGJvcmRlck1heCkge1xuICAgICAgICAgICAgICAgIGQudG8gPSBtYXhWYWx1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGQudG8gPSBkLmZyb207XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5lbWl0KHtcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBwbG90YmFuZEVsZW1lbnQuZGF0dW08UGxvdEJhbmQ+KHRoaXMucGxvdEJhbmQpO1xuICAgIGdyYWJFbGVtZW50cy5kYXR1bTxQbG90QmFuZD4odGhpcy5wbG90QmFuZCk7XG5cbiAgICBpZiAodGhpcy5wbG90QmFuZC5kcmFnZ2FibGUpIHtcbiAgICAgIHBsb3RiYW5kRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBsb3RCYW5kLnJlc2l6YWJsZSkge1xuICAgICAgZ3JhYkVsZW1lbnRzLmNhbGwocmVzaXplKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYmFuZFNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoXG4gICAgICB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQudG8pIC0gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLmhlaWdodDtcbiAgfVxuXG4gIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemUud2lkdGg7XG4gIH1cblxuICBnZXQgZnJvbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQuZnJvbSk7XG4gIH1cblxuICBnZXQgdG8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLnRvKTtcbiAgfVxuXG4gIGdldEZpbGwoZDogUGxvdEJhbmQpOiBzdHJpbmcge1xuICAgIGlmIChkLnN0eWxlPy5wbG90QmFuZD8ucGF0dGVybkltYWdlKSB7XG4gICAgICByZXR1cm4gYHVybCgjJHtkLnN0eWxlLnBsb3RCYW5kPy5wYXR0ZXJuSW1hZ2V9KWA7XG4gICAgfVxuICAgIHJldHVybiBkLnN0eWxlLnBsb3RCYW5kPy5maWxsO1xuICB9XG59XG4iLCI8c3ZnOnJlY3RcbiAgICAgICAgICBjbGFzcz1cInBsb3RiYW5kXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dhYmxlXT1cInBsb3RCYW5kPy5kcmFnZ2FibGUgPT09IHRydWVcIlxuICAgICAgICAgIFthdHRyLmZpbGxdPVwiZ2V0RmlsbChwbG90QmFuZClcIlxuICAgICAgICAgIFthdHRyLm9wYWNpdHldPVwicGxvdEJhbmQuc3R5bGU/LnBsb3RCYW5kPy5vcGFjaXR5XCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IGJhbmRTaXplXCJcbiAgICAgICAgICBbYXR0ci53aWR0aF09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gYmFuZFNpemUgOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIueV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55ID8gdG8gOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci54XT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogbnVsbFwiPlxuPC9zdmc6cmVjdD5cblxuPHN2ZzpsaW5lIGNsYXNzPVwiZGlzcGxheS1ncmFiYmVyXCJcbiAgICAgICAgICAqbmdJZj1cInBsb3RCYW5kLnNob3dHcmFiYmVyc1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICdyZWQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2VXaWR0aCB8fCA0XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCInZnJvbSdcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogZnJvbVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IGZyb21cIj5cbjwvc3ZnOmxpbmU+XG5cbjxzdmc6bGluZSBjbGFzcz1cImRpc3BsYXktZ3JhYmJlclwiXG4gICAgICAgICAgKm5nSWY9XCJwbG90QmFuZC5zaG93R3JhYmJlcnNcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZSB8fCAncmVkJ1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlV2lkdGggfHwgNFwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZURhc2hhcnJheVwiXG4gICAgICAgICAgW2F0dHIueDFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogMFwiXG4gICAgICAgICAgW2F0dHIueDJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCIndG8nXCJcbiAgICAgICAgICBbYXR0ci55MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IHRvXCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogdG9cIj5cbjwvc3ZnOmxpbmU+XG5cbjxzdmc6bGluZSBjbGFzcz1cImdyYWJiZXJcIlxuICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueFwiXG4gICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgICAgICAgICBbY2xhc3MucmVzaXplYWJsZV09XCJwbG90QmFuZD8ucmVzaXphYmxlXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCI4XCJcbiAgICAgICAgICBvcGFjaXR5PVwiMFwiXG4gICAgICAgICAgW2F0dHIueDFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ2Zyb20nXCJcbiAgICAgICAgICBbYXR0ci55MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IGZyb21cIlxuICAgICAgICAgIFthdHRyLnkyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBmcm9tXCI+XG48L3N2ZzpsaW5lPlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJncmFiYmVyXCJcbiAgICAgICAgICBbY2xhc3MueC1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICAgICAgICAgIFtjbGFzcy55LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueVwiXG4gICAgICAgICAgW2NsYXNzLnJlc2l6ZWFibGVdPVwicGxvdEJhbmQ/LnJlc2l6YWJsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cIidyZWQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwiOFwiXG4gICAgICAgICAgb3BhY2l0eT1cIjBcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ3RvJ1wiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB0b1wiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHRvXCI+XG48L3N2ZzpsaW5lPlxuXG5cbiJdfQ==
@@ -13,14 +13,9 @@ export class PlotlineComponent {
13
13
  this.chartService = chartService;
14
14
  this.element = element;
15
15
  this.orientation = AxisOrientation;
16
- this.zoomService.zoomed.subscribe(() => {
17
- this.scale = this.scaleService[this.axis.orientation === AxisOrientation.x ? 'xScales' : 'yScales'].get(this.axis.index);
18
- this.cdr.detectChanges();
19
- });
20
16
  }
21
17
  ngOnInit() {
22
- this.scale = this.scaleService[this.axis.orientation === AxisOrientation.x ? 'xScales' : 'yScales'].get(this.axis.index);
23
- this.domain = this.scale.domain();
18
+ this._domain = this.scale.domain();
24
19
  const plotlineElement = d3
25
20
  .select(this.element.nativeElement)
26
21
  .select('.plotline');
@@ -45,9 +40,9 @@ export class PlotlineComponent {
45
40
  });
46
41
  this.cdr.detectChanges();
47
42
  });
48
- plotlineElement.datum(this.plotline);
49
- grabElement.datum(this.plotline);
50
- if (this.plotline.draggable) {
43
+ plotlineElement.datum(this.plotLine);
44
+ grabElement.datum(this.plotLine);
45
+ if (this.plotLine.draggable) {
51
46
  grabElement.call(drag);
52
47
  }
53
48
  }
@@ -55,7 +50,7 @@ export class PlotlineComponent {
55
50
  this.chartService.emitPlotline(event);
56
51
  }
57
52
  get value() {
58
- return this.scale(this.plotline.value);
53
+ return this.scale(this.plotLine.value);
59
54
  }
60
55
  get height() {
61
56
  return this.size.height;
@@ -65,15 +60,17 @@ export class PlotlineComponent {
65
60
  }
66
61
  }
67
62
  PlotlineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PlotlineComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ZoomService }, { token: i2.ScaleService }, { token: i3.ChartService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
68
- PlotlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: PlotlineComponent, selector: "[teta-plot-line]", inputs: { plotline: "plotline", size: "size", axis: "axis" }, ngImport: i0, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotline.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotline.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotline.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
+ PlotlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: PlotlineComponent, selector: "[teta-plot-line]", inputs: { plotLine: "plotLine", size: "size", axis: "axis", scale: "scale" }, ngImport: i0, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: PlotlineComponent, decorators: [{
70
65
  type: Component,
71
- args: [{ selector: '[teta-plot-line]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotline.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotline.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotline.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"] }]
72
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ZoomService }, { type: i2.ScaleService }, { type: i3.ChartService }, { type: i0.ElementRef }]; }, propDecorators: { plotline: [{
66
+ args: [{ selector: '[teta-plot-line]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"] }]
67
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ZoomService }, { type: i2.ScaleService }, { type: i3.ChartService }, { type: i0.ElementRef }]; }, propDecorators: { plotLine: [{
73
68
  type: Input
74
69
  }], size: [{
75
70
  type: Input
76
71
  }], axis: [{
77
72
  type: Input
73
+ }], scale: [{
74
+ type: Input
78
75
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Bsb3RsaW5lL3Bsb3RsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7Ozs7O0FBV3pCLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDVSxHQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUEwQixFQUMxQixPQUFtQjtRQUpuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBVjdCLGdCQUFXLEdBQUcsZUFBZSxDQUFDO1FBWTVCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDcEUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMs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UUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxvdExpbmUgfSBmcm9tICcuLi8uLi9tb2RlbC9wbG90bGluZSc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IElDaGFydEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQgeyBQbG90YmFuZCB9IGZyb20gJy4uLy4uL21vZGVsL3Bsb3RiYW5kJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXBsb3QtbGluZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGxvdGxpbmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbG90bGluZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGxvdGxpbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwbG90bGluZTogUGxvdExpbmU7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIG9yaWVudGF0aW9uID0gQXhpc09yaWVudGF0aW9uO1xuXG4gIHByaXZhdGUgc2NhbGU6IGFueTtcbiAgcHJpdmF0ZSBkb21haW46IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICAgIHRoaXMuem9vbVNlcnZpY2Uuem9vbWVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZVNlcnZpY2VbXG4gICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnggPyAneFNjYWxlcycgOiAneVNjYWxlcydcbiAgICAgIF0uZ2V0KHRoaXMuYXhpcy5pbmRleCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy5zY2FsZVNlcnZpY2VbXG4gICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54ID8gJ3hTY2FsZXMnIDogJ3lTY2FsZXMnXG4gICAgXS5nZXQodGhpcy5heGlzLmluZGV4KTtcblxuICAgIHRoaXMuZG9tYWluID0gdGhpcy5zY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHBsb3RsaW5lRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdCgnLnBsb3RsaW5lJyk7XG5cbiAgICBjb25zdCBncmFiRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdEFsbCgnLmdyYWJiZXInKTtcblxuICAgIGNvbnN0IGRyYWcgPSBkM1xuICAgICAgLmRyYWcoKVxuICAgICAgLnN1YmplY3QoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiB7IHk6IHBsb3RsaW5lRWxlbWVudC5hdHRyKCd5MScpIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgICByZXR1cm4geyB4OiBwbG90bGluZUVsZW1lbnQuYXR0cigneDEnKSB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgUGxvdExpbmUsIGFueT4sIGQ6IFBsb3RMaW5lKSA9PiB7XG4gICAgICAgICAgZC52YWx1ZSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHBsb3RsaW5lRWxlbWVudC5kYXR1bTxQbG90TGluZT4odGhpcy5wbG90bGluZSk7XG4gICAgZ3JhYkVsZW1lbnQuZGF0dW08UGxvdExpbmU+KHRoaXMucGxvdGxpbmUpO1xuXG4gICAgaWYgKHRoaXMucGxvdGxpbmUuZHJhZ2dhYmxlKSB7XG4gICAgICBncmFiRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXQoZXZlbnQ6IElDaGFydEV2ZW50PFBsb3RMaW5lPikge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRQbG90bGluZShldmVudCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90bGluZS52YWx1ZSk7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG59XG4iLCI8c3ZnOmxpbmUgY2xhc3M9XCJwbG90bGluZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RsaW5lLnN0eWxlPy5zdHJva2UgfHwgJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwbG90bGluZS5zdHlsZT8uc3Ryb2tlV2lkdGggfHwgNFwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwbG90bGluZS5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB2YWx1ZVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHZhbHVlXCI+XG48L3N2ZzpsaW5lPlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJncmFiYmVyXCJcblxuICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueFwiXG4gICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCI4XCJcbiAgICAgICAgICBvcGFjaXR5PVwiMFwiXG4gICAgICAgICAgW2F0dHIueDFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHZhbHVlIDogMFwiXG4gICAgICAgICAgW2F0dHIueDJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHZhbHVlIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogdmFsdWVcIlxuICAgICAgICAgIFthdHRyLnkyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB2YWx1ZVwiPlxuPC9zdmc6bGluZT5cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Bsb3RsaW5lL3Bsb3RsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7Ozs7O0FBVXpCLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUIsWUFDVSxHQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUEwQixFQUMxQixPQUFtQjtRQUpuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBVDdCLGdCQUFXLEdBQUcsZUFBZSxDQUFDO0lBVTNCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLE1BQU0sZUFBZSxHQUFHLEVBQUU7YUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QixNQUFNLFdBQVcsR0FBRyxFQUFFO2FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQzthQUNsQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekIsTUFBTSxJQUFJLEdBQUcsRUFBRTthQUNaLElBQUksRUFBRTthQUNOLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2FBQzFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUMxQztRQUNILENBQUMsQ0FBQzthQUNELEVBQUUsQ0FDRCxnQkFBZ0IsRUFDaEIsQ0FBQyxLQUF5QyxFQUFFLENBQVcsRUFBRSxFQUFFO1lBQ3pELENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3pCLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUM5QyxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDUixLQUFLO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2FBQ1YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQ0YsQ0FBQztRQUVKLGVBQWUsQ0FBQyxLQUFLLENBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLFdBQVcsQ0FBQyxLQUFLLENBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OzhHQTVFVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzSUN2QjlCLGdtQ0FzQkE7MkZEQ2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNO2lOQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxvdExpbmUgfSBmcm9tICcuLi8uLi9tb2RlbC9wbG90LWxpbmUnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7IEF4aXNPcmllbnRhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBJQ2hhcnRFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtcGxvdC1saW5lXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbG90bGluZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bsb3RsaW5lLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQbG90bGluZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBsb3RMaW5lOiBQbG90TGluZTtcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2NhbGU6IGFueTtcbiAgb3JpZW50YXRpb24gPSBBeGlzT3JpZW50YXRpb247XG5cbiAgcHJpdmF0ZSBfZG9tYWluOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZG9tYWluID0gdGhpcy5zY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHBsb3RsaW5lRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdCgnLnBsb3RsaW5lJyk7XG5cbiAgICBjb25zdCBncmFiRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdEFsbCgnLmdyYWJiZXInKTtcblxuICAgIGNvbnN0IGRyYWcgPSBkM1xuICAgICAgLmRyYWcoKVxuICAgICAgLnN1YmplY3QoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiB7IHk6IHBsb3RsaW5lRWxlbWVudC5hdHRyKCd5MScpIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgICByZXR1cm4geyB4OiBwbG90bGluZUVsZW1lbnQuYXR0cigneDEnKSB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgUGxvdExpbmUsIGFueT4sIGQ6IFBsb3RMaW5lKSA9PiB7XG4gICAgICAgICAgZC52YWx1ZSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgICAgZXZlbnRbQXhpc09yaWVudGF0aW9uW3RoaXMuYXhpcy5vcmllbnRhdGlvbl1dXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHBsb3RsaW5lRWxlbWVudC5kYXR1bTxQbG90TGluZT4odGhpcy5wbG90TGluZSk7XG4gICAgZ3JhYkVsZW1lbnQuZGF0dW08UGxvdExpbmU+KHRoaXMucGxvdExpbmUpO1xuXG4gICAgaWYgKHRoaXMucGxvdExpbmUuZHJhZ2dhYmxlKSB7XG4gICAgICBncmFiRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXQoZXZlbnQ6IElDaGFydEV2ZW50PFBsb3RMaW5lPikge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRQbG90bGluZShldmVudCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90TGluZS52YWx1ZSk7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG59XG4iLCI8c3ZnOmxpbmUgY2xhc3M9XCJwbG90bGluZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RMaW5lLnN0eWxlPy5zdHJva2UgfHwgJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwbG90TGluZS5zdHlsZT8uc3Ryb2tlV2lkdGggfHwgNFwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwbG90TGluZS5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB2YWx1ZVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHZhbHVlXCI+XG48L3N2ZzpsaW5lPlxuXG48c3ZnOmxpbmUgY2xhc3M9XCJncmFiYmVyXCJcblxuICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueFwiXG4gICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCI4XCJcbiAgICAgICAgICBvcGFjaXR5PVwiMFwiXG4gICAgICAgICAgW2F0dHIueDFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHZhbHVlIDogMFwiXG4gICAgICAgICAgW2F0dHIueDJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHZhbHVlIDogd2lkdGhcIlxuICAgICAgICAgIFthdHRyLnkxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogdmFsdWVcIlxuICAgICAgICAgIFthdHRyLnkyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB2YWx1ZVwiPlxuPC9zdmc6bGluZT5cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
- import * as d3 from 'd3';
3
2
  import { SeriesBaseComponent } from '../../../base/series-base.component';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "../../../service/chart.service";
@@ -16,12 +15,15 @@ export class BarSeriesComponent extends SeriesBaseComponent {
16
15
  this.element = element;
17
16
  }
18
17
  ngOnInit() {
19
- const x = this.scaleService.xScales.get(this.series.xAxisIndex);
20
- const y = this.scaleService.yScales.get(this.series.yAxisIndex);
21
- const domain = this.series.data?.map((_) => _.x);
22
- const range = [x(domain[0]), x(domain[domain?.length - 1])];
23
- this.scaleBand = d3.scaleBand().domain(domain).range(range);
24
- this.y = y;
18
+ // const x = this.scaleService.xScaleMap.get(this.series.xAxisIndex);
19
+ // const y = this.scaleService.yScaleMap.get(this.series.yAxisIndex);
20
+ //
21
+ // const domain = this.series.data?.map((_: BasePoint) => _.x);
22
+ // const range = [x(domain[0]), x(domain[domain?.length - 1])];
23
+ //
24
+ // this.scaleBand = d3.scaleBand<number>().domain(domain).range(range);
25
+ //
26
+ // this.y = y;
25
27
  }
26
28
  width() {
27
29
  return this.scaleBand.bandwidth();
@@ -35,9 +37,7 @@ export class BarSeriesComponent extends SeriesBaseComponent {
35
37
  getY(point) {
36
38
  return this.y(point.y);
37
39
  }
38
- ngOnChanges(changes) {
39
- console.log(changes);
40
- }
40
+ ngOnChanges(changes) { }
41
41
  }
42
42
  BarSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: BarSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
43
43
  BarSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: BarSeriesComponent, selector: "svg:svg[teta-bar-series]", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg:rect *ngFor=\"let point of series.data\" [attr.y]=\"getY(point)\" [attr.x]=\"getX(point)\" [attr.width]=\"width()\"\n [attr.height]=\"height(point)\"\n [attr.fill]=\"point.color\"></svg:rect>\n", styles: [""], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
45
45
  type: Component,
46
46
  args: [{ selector: 'svg:svg[teta-bar-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect *ngFor=\"let point of series.data\" [attr.y]=\"getY(point)\" [attr.x]=\"getX(point)\" [attr.width]=\"width()\"\n [attr.height]=\"height(point)\"\n [attr.fill]=\"point.color\"></svg:rect>\n", styles: [""] }]
47
47
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLXNlcmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsR0FLVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBWTFFLE1BQU0sT0FBTyxrQkFDWCxTQUFRLG1CQUFzQjtJQU05QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUd4QyxDQUFDO0lBRVEsUUFBUTtRQUNmLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWdCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDOzsrR0EvQ1Usa0JBQWtCO21HQUFsQixrQkFBa0IsNEdDdEIvQiwwTkFHQTsyRkRtQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBTZXJpZXNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdmc6c3ZnW3RldGEtYmFyLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFyLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhci1zZXJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJhclNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIFNlcmllc0Jhc2VDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICBwcml2YXRlIHNjYWxlQmFuZDogZDMuU2NhbGVCYW5kPGFueT47XG4gIHByaXZhdGUgeTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB4ID0gdGhpcy5zY2FsZVNlcnZpY2UueFNjYWxlcy5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgY29uc3QgeSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnlTY2FsZXMuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpO1xuXG4gICAgY29uc3QgZG9tYWluID0gdGhpcy5zZXJpZXMuZGF0YT8ubWFwKChfOiBCYXNlUG9pbnQpID0+IF8ueCk7XG4gICAgY29uc3QgcmFuZ2UgPSBbeChkb21haW5bMF0pLCB4KGRvbWFpbltkb21haW4/Lmxlbmd0aCAtIDFdKV07XG5cbiAgICB0aGlzLnNjYWxlQmFuZCA9IGQzLnNjYWxlQmFuZDxudW1iZXI+KCkuZG9tYWluKGRvbWFpbikucmFuZ2UocmFuZ2UpO1xuXG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIHdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLnNjYWxlQmFuZC5iYW5kd2lkdGgoKTtcbiAgfVxuXG4gIGhlaWdodChwb2ludDogQmFzZVBvaW50KSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHRoaXMueSgwKSAtIHRoaXMueShwb2ludC55KSk7XG4gIH1cblxuICBnZXRYKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZUJhbmQocG9pbnQueCk7XG4gIH1cblxuICBnZXRZKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICByZXR1cm4gdGhpcy55KHBvaW50LnkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnNvbGUubG9nKGNoYW5nZXMpO1xuICB9XG59XG4iLCI8c3ZnOnJlY3QgKm5nRm9yPVwibGV0IHBvaW50IG9mIHNlcmllcy5kYXRhXCIgW2F0dHIueV09XCJnZXRZKHBvaW50KVwiIFthdHRyLnhdPVwiZ2V0WChwb2ludClcIiBbYXR0ci53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0KHBvaW50KVwiXG4gICAgICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5jb2xvclwiPjwvc3ZnOnJlY3Q+XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLXNlcmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsR0FLVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7O0FBWTFFLE1BQU0sT0FBTyxrQkFDWCxTQUFRLG1CQUFzQjtJQU05QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUd4QyxDQUFDO0lBRVEsUUFBUTtRQUNmLHFFQUFxRTtRQUNyRSxxRUFBcUU7UUFDckUsRUFBRTtRQUNGLCtEQUErRDtRQUMvRCwrREFBK0Q7UUFDL0QsRUFBRTtRQUNGLHVFQUF1RTtRQUN2RSxFQUFFO1FBQ0YsY0FBYztJQUNoQixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCLElBQUcsQ0FBQzs7K0dBN0MzQixrQkFBa0I7bUdBQWxCLGtCQUFrQiw0R0N0Qi9CLDBOQUdBOzJGRG1CYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IFNlcmllc0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9iYXNlL3Nlcmllcy1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1iYXItc2VyaWVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXItc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFyLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQmFyU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgU2VyaWVzQmFzZUNvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gIHByaXZhdGUgc2NhbGVCYW5kOiBkMy5TY2FsZUJhbmQ8YW55PjtcbiAgcHJpdmF0ZSB5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnN0IHggPSB0aGlzLnNjYWxlU2VydmljZS54U2NhbGVNYXAuZ2V0KHRoaXMuc2VyaWVzLnhBeGlzSW5kZXgpO1xuICAgIC8vIGNvbnN0IHkgPSB0aGlzLnNjYWxlU2VydmljZS55U2NhbGVNYXAuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZG9tYWluID0gdGhpcy5zZXJpZXMuZGF0YT8ubWFwKChfOiBCYXNlUG9pbnQpID0+IF8ueCk7XG4gICAgLy8gY29uc3QgcmFuZ2UgPSBbeChkb21haW5bMF0pLCB4KGRvbWFpbltkb21haW4/Lmxlbmd0aCAtIDFdKV07XG4gICAgLy9cbiAgICAvLyB0aGlzLnNjYWxlQmFuZCA9IGQzLnNjYWxlQmFuZDxudW1iZXI+KCkuZG9tYWluKGRvbWFpbikucmFuZ2UocmFuZ2UpO1xuICAgIC8vXG4gICAgLy8gdGhpcy55ID0geTtcbiAgfVxuXG4gIHdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLnNjYWxlQmFuZC5iYW5kd2lkdGgoKTtcbiAgfVxuXG4gIGhlaWdodChwb2ludDogQmFzZVBvaW50KSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHRoaXMueSgwKSAtIHRoaXMueShwb2ludC55KSk7XG4gIH1cblxuICBnZXRYKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZUJhbmQocG9pbnQueCk7XG4gIH1cblxuICBnZXRZKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICByZXR1cm4gdGhpcy55KHBvaW50LnkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge31cbn1cbiIsIjxzdmc6cmVjdCAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygc2VyaWVzLmRhdGFcIiBbYXR0ci55XT1cImdldFkocG9pbnQpXCIgW2F0dHIueF09XCJnZXRYKHBvaW50KVwiIFthdHRyLndpZHRoXT1cIndpZHRoKClcIlxuICAgICAgICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHQocG9pbnQpXCJcbiAgICAgICAgICBbYXR0ci5maWxsXT1cInBvaW50LmNvbG9yXCI+PC9zdmc6cmVjdD5cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
2
  import * as d3 from 'd3';
3
3
  import { SeriesBaseComponent } from '../../../base/series-base.component';
4
- import { filter, map, tap } from 'rxjs';
4
+ import { combineLatest, map, tap, withLatestFrom, } from 'rxjs';
5
5
  import { TooltipTracking } from '../../../model/enum/tooltip-tracking';
6
6
  import { DragPointType } from '../../../model/enum/drag-point-type';
7
7
  import * as i0 from "@angular/core";
@@ -19,12 +19,24 @@ export class LineSeriesComponent extends SeriesBaseComponent {
19
19
  this.element = element;
20
20
  }
21
21
  ngOnInit() {
22
- this.display = this.zoomService.zoomed.pipe(map(({ event }) => {
23
- return event?.type === 'end' ? 1 : 0;
22
+ this.transform = this.svc.pointerMove.pipe(withLatestFrom(this.scaleService.xScaleMap, this.scaleService.yScaleMap), map((data) => {
23
+ const [event, x, y] = data;
24
+ return this.getTransform(event, x, y);
25
+ }), tap(() => this.cdr.detectChanges()));
26
+ this.path = combineLatest([
27
+ this.scaleService.xScaleMap,
28
+ this.scaleService.yScaleMap,
29
+ ]).pipe(map((data) => {
30
+ const [x, y] = data;
31
+ this.x = x.get(this.series.xAxisIndex);
32
+ this.y = y.get(this.series.yAxisIndex);
33
+ const line = d3
34
+ .line()
35
+ .defined((point) => point.x !== null && point.y !== null && !isNaN(point.x) && !isNaN(point.y))
36
+ .x((point) => this.x(point.x))
37
+ .y((point) => this.y(point.y));
38
+ return line(this.series.data);
24
39
  }));
25
- this.transform = this.svc.pointerMove.pipe(filter(({ event }) => event), map(({ event }) => {
26
- return this.getTransform(event);
27
- }), tap((_) => this.cdr.detectChanges()));
28
40
  }
29
41
  ngAfterViewInit() {
30
42
  const drag = (node, event, d) => {
@@ -66,25 +78,14 @@ export class LineSeriesComponent extends SeriesBaseComponent {
66
78
  .select('.line')
67
79
  .node();
68
80
  }
69
- getPath() {
70
- this.x = this.scaleService.xScales.get(this.series.xAxisIndex);
71
- this.y = this.scaleService.yScales.get(this.series.yAxisIndex);
72
- const line = d3
73
- .line()
74
- .defined((point) => point.x !== null || point.y !== null)
75
- .x((point) => this.x(point.x))
76
- .y((point) => this.y(point.y));
77
- const path = line(this.series.data);
78
- return path;
79
- }
80
81
  getMarkers() {
81
82
  return this.series.data?.filter((_) => _?.marker);
82
83
  }
83
- getTransform(event) {
84
- const mouse = d3.pointer(event);
85
- const foundX = this.scaleService.xScales.get(this.series.xAxisIndex);
86
- const foundY = this.scaleService.yScales.get(this.series.yAxisIndex);
87
- const tooltipTracking = this.svc.config?.tooltip?.tracking;
84
+ getTransform(event, x, y) {
85
+ const mouse = [event?.offsetX, event?.offsetY];
86
+ const foundX = x.get(this.series.xAxisIndex);
87
+ const foundY = y.get(this.series.yAxisIndex);
88
+ const tooltipTracking = this.config?.tooltip?.tracking;
88
89
  const lineIntersection = (p0_x, p0_y, p1_x, p1_y, p2_x, p2_y, p3_x, p3_y) => {
89
90
  const rV = {};
90
91
  let s1_x, s1_y, s2_x, s2_y;
@@ -108,11 +109,11 @@ export class LineSeriesComponent extends SeriesBaseComponent {
108
109
  };
109
110
  if (tooltipTracking === TooltipTracking.x) {
110
111
  const bisect = d3.bisector((_) => _.x).right;
111
- const x0 = foundX.invert(mouse[0]);
112
+ const pointer = mouse[0];
113
+ const x0 = foundX.invert(pointer);
112
114
  const rightId = bisect(this.series.data, x0);
113
115
  const range = foundY.range();
114
- const intersect = lineIntersection(mouse[0], range[0], mouse[0], range[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
115
- console.log(intersect);
116
+ const intersect = lineIntersection(pointer, range[0], pointer, range[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
116
117
  this.svc.setTooltip({
117
118
  point: { x: foundX.invert(intersect.x), y: foundY.invert(intersect.y) },
118
119
  series: this.series,
@@ -129,7 +130,10 @@ export class LineSeriesComponent extends SeriesBaseComponent {
129
130
  const range = foundX.range();
130
131
  const intersect = lineIntersection(range[0], mouse[1], range[1], mouse[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
131
132
  this.svc.setTooltip({
132
- point: { x: foundX.invert(intersect.x), y: foundY.invert(intersect.y) },
133
+ point: {
134
+ x: foundX.invert(intersect.x),
135
+ y: foundY.invert(intersect.y),
136
+ },
133
137
  series: this.series,
134
138
  });
135
139
  return {
@@ -140,9 +144,9 @@ export class LineSeriesComponent extends SeriesBaseComponent {
140
144
  }
141
145
  }
142
146
  LineSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: LineSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
143
- LineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: LineSeriesComponent, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "<svg:path\n class=\"line\"\n [attr.d]=\"getPath()\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n [attr.opacity]=\"display | async\">\n </svg:circle>\n</ng-container>\n\n<ng-container *ngIf=\"getMarkers() as markers\">\n\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n\n\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
147
+ LineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: LineSeriesComponent, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "\n <svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n </svg:path>\n <ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t.x !== undefined && t.y!== undefined\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n </ng-container>\n\n <ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n </ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: LineSeriesComponent, decorators: [{
145
149
  type: Component,
146
- args: [{ selector: 'svg:svg[teta-line-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:path\n class=\"line\"\n [attr.d]=\"getPath()\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n [attr.opacity]=\"display | async\">\n </svg:circle>\n</ng-container>\n\n<ng-container *ngIf=\"getMarkers() as markers\">\n\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n\n\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
150
+ args: [{ selector: 'svg:svg[teta-line-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n <svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n </svg:path>\n <ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t.x !== undefined && t.y!== undefined\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n </ng-container>\n\n <ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n </ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
147
151
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSTFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLG1CQUNYLFNBQVEsbUJBQXNCO0lBVTlCLFlBQ3FCLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CO1FBRXRDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOakMsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO0lBR3hDLENBQUM7SUFFUSxRQUFRO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FB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O2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Z0hBMU5VLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdGQ3pCaEMsd2hDQXNDQTsyRkRiYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBTZXJpZXNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBUb29sdGlwVHJhY2tpbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHsgRHJhZ1BvaW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZHJhZy1wb2ludC10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ZnOnN2Z1t0ZXRhLWxpbmUtc2VyaWVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5lU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgU2VyaWVzQmFzZUNvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICB0cmFuc2Zvcm06IE9ic2VydmFibGU8UGljazxCYXNlUG9pbnQsICd4JyB8ICd5Jz4+O1xuICBkaXNwbGF5OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgc3ZnRWxlbWVudDogU1ZHR2VvbWV0cnlFbGVtZW50O1xuICB4OiBhbnk7XG4gIHk6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ID0gdGhpcy56b29tU2VydmljZS56b29tZWQucGlwZShcbiAgICAgIG1hcCgoeyBldmVudCB9KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudD8udHlwZSA9PT0gJ2VuZCcgPyAxIDogMDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIGZpbHRlcigoeyBldmVudCB9KSA9PiBldmVudCksXG4gICAgICBtYXAoKHsgZXZlbnQgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2Zvcm0oZXZlbnQpO1xuICAgICAgfSksXG4gICAgICB0YXAoKF8pID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGRyYWcgPSAobm9kZSwgZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnggfHxcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnh5XG4gICAgICApIHtcbiAgICAgICAgZC54ID0gdGhpcy54LmludmVydChldmVudC54KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueSB8fFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueHlcbiAgICAgICkge1xuICAgICAgICBkLnkgPSB0aGlzLnkuaW52ZXJ0KGV2ZW50LnkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN2Yy5lbWl0UG9pbnQoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICAgIHBvaW50OiBkLFxuICAgICAgICB9LFxuICAgICAgICBldmVudCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRyYWdNYXJrZXJzID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5zdWJqZWN0KGZ1bmN0aW9uIChldmVudCwgZDogQmFzZVBvaW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgICAgIHJldHVybiB7IHg6IG5vZGUuYXR0cignY3gnKSwgeTogbm9kZS5hdHRyKCdjeScpIH07XG4gICAgICB9KVxuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICBmdW5jdGlvbiAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gZDMuc2VsZWN0KHRoaXMpO1xuXG4gICAgICAgICAgZHJhZyhub2RlLCBldmVudCwgZCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBjb25zdCBkcmFnZ2FibGVNYXJrZXJzID0gdGhpcy5zZXJpZXMuZGF0YT8uZmlsdGVyKFxuICAgICAgKF8pID0+IF8/Lm1hcmtlciAmJiBfPy5tYXJrZXI/LmRyYWdnYWJsZVxuICAgICk7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZHJhZ2dhYmxlLW1hcmtlcicpXG4gICAgICAuZGF0YShkcmFnZ2FibGVNYXJrZXJzKTtcblxuICAgIGVsZW1lbnQuY2FsbChkcmFnTWFya2VycyBhcyBhbnkpO1xuXG4gICAgdGhpcy5zdmdFbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0KCcubGluZScpXG4gICAgICAubm9kZSgpIGFzIFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgfVxuXG4gIGdldFBhdGgoKSB7XG4gICAgdGhpcy54ID0gdGhpcy5zY2FsZVNlcnZpY2UueFNjYWxlcy5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgdGhpcy55ID0gdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlcy5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk7XG5cbiAgICBjb25zdCBsaW5lID0gZDNcbiAgICAgIC5saW5lPEJhc2VQb2ludD4oKVxuICAgICAgLmRlZmluZWQoKHBvaW50KSA9PiBwb2ludC54ICE9PSBudWxsIHx8IHBvaW50LnkgIT09IG51bGwpXG4gICAgICAueCgocG9pbnQpID0+IHRoaXMueChwb2ludC54KSlcbiAgICAgIC55KChwb2ludCkgPT4gdGhpcy55KHBvaW50LnkpKTtcblxuICAgIGNvbnN0IHBhdGggPSBsaW5lKHRoaXMuc2VyaWVzLmRhdGEpO1xuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBnZXRNYXJrZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnNlcmllcy5kYXRhPy5maWx0ZXIoKF8pID0+IF8/Lm1hcmtlcik7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oZXZlbnQ6IGFueSk6IFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+IHtcbiAgICBjb25zdCBtb3VzZSA9IGQzLnBvaW50ZXIoZXZlbnQpO1xuXG4gICAgY29uc3QgZm91bmRYID0gdGhpcy5zY2FsZVNlcnZpY2UueFNjYWxlcy5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgY29uc3QgZm91bmRZID0gdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlcy5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk7XG5cbiAgICBjb25zdCB0b29sdGlwVHJhY2tpbmcgPSB0aGlzLnN2Yy5jb25maWc/LnRvb2x0aXA/LnRyYWNraW5nO1xuXG4gICAgY29uc3QgbGluZUludGVyc2VjdGlvbiA9IChcbiAgICAgIHAwX3gsXG4gICAgICBwMF95LFxuICAgICAgcDFfeCxcbiAgICAgIHAxX3ksXG4gICAgICBwMl94LFxuICAgICAgcDJfeSxcbiAgICAgIHAzX3gsXG4gICAgICBwM195XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByViA9IHt9IGFzIGFueTtcbiAgICAgIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xuICAgICAgczFfeCA9IHAxX3ggLSBwMF94O1xuICAgICAgczFfeSA9IHAxX3kgLSBwMF95O1xuICAgICAgczJfeCA9IHAzX3ggLSBwMl94O1xuICAgICAgczJfeSA9IHAzX3kgLSBwMl95O1xuXG4gICAgICBsZXQgcywgdDtcbiAgICAgIHMgPVxuICAgICAgICAoLXMxX3kgKiAocDBfeCAtIHAyX3gpICsgczFfeCAqIChwMF95IC0gcDJfeSkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcbiAgICAgIHQgPVxuICAgICAgICAoczJfeCAqIChwMF95IC0gcDJfeSkgLSBzMl95ICogKHAwX3ggLSBwMl94KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuXG4gICAgICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XG4gICAgICAgIC8vIENvbGxpc2lvbiBkZXRlY3RlZFxuICAgICAgICByVi54ID0gcDBfeCArIHQgKiBzMV94O1xuICAgICAgICByVi55ID0gcDBfeSArIHQgKiBzMV95O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gclY7XG4gICAgfTtcblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy54KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLngpLnJpZ2h0O1xuXG4gICAgICBjb25zdCB4MCA9IGZvdW5kWC5pbnZlcnQobW91c2VbMF0pO1xuICAgICAgY29uc3QgcmlnaHRJZCA9IGJpc2VjdCh0aGlzLnNlcmllcy5kYXRhLCB4MCk7XG5cbiAgICAgIGNvbnN0IHJhbmdlID0gZm91bmRZLnJhbmdlKCk7XG5cbiAgICAgIGNvbnN0IGludGVyc2VjdCA9IGxpbmVJbnRlcnNlY3Rpb24oXG4gICAgICAgIG1vdXNlWzBdLFxuICAgICAgICByYW5nZVswXSxcbiAgICAgICAgbW91c2VbMF0sXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcblxuICAgICAgY29uc29sZS5sb2coaW50ZXJzZWN0KTtcblxuICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgIHBvaW50OiB7IHg6IGZvdW5kWC5pbnZlcnQoaW50ZXJzZWN0LngpLCB5OiBmb3VuZFkuaW52ZXJ0KGludGVyc2VjdC55KSB9LFxuICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGludGVyc2VjdC54LFxuICAgICAgICB5OiBpbnRlcnNlY3QueSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLnkpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueSkucmlnaHQ7XG5cbiAgICAgIGNvbnN0IHkwID0gZm91bmRZLmludmVydChtb3VzZVsxXSk7XG5cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeTApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBmb3VuZFgucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICByYW5nZVsxXSxcbiAgICAgICAgbW91c2VbMV0sXG4gICAgICAgIGZvdW5kWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIGZvdW5kWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgZm91bmRZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgcG9pbnQ6IHsgeDogZm91bmRYLmludmVydChpbnRlcnNlY3QueCksIHk6IGZvdW5kWS5pbnZlcnQoaW50ZXJzZWN0LnkpIH0sXG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxzdmc6cGF0aFxuICBjbGFzcz1cImxpbmVcIlxuICBbYXR0ci5kXT1cImdldFBhdGgoKVwiXG4gIFthdHRyLnN0cm9rZV09XCJzZXJpZXMuY29sb3JcIlxuICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic2VyaWVzLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gIGZpbGw9XCJub25lXCI+XG48L3N2ZzpwYXRoPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHJhbnNmb3JtIHwgYXN5bmMgYXMgdFwiPlxuICA8c3ZnOmNpcmNsZVxuICAgIHI9XCIzXCJcbiAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiXG4gICAgW2F0dHIub3BhY2l0eV09XCJkaXNwbGF5IHwgYXN5bmNcIj5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRNYXJrZXJzKCkgYXMgbWFya2Vyc1wiPlxuXG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiBtYXJrZXJzXCJcbiAgICAgIFtjbGFzcy5kcmFnZ2FibGUtbWFya2VyXT1cInBvaW50Py5tYXJrZXI/LmRyYWdnYWJsZVwiXG4gICAgICBbYXR0ci5yXT1cInBvaW50Lm1hcmtlci5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LmZpbGwgPz8gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCJcbiAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgW2F0dHIuY3hdPVwieChwb2ludC54KVwiXG4gICAgICBbYXR0ci5jeV09XCJ5KHBvaW50LnkpXCJcbiAgICA+XG4gICAgPC9zdmc6Y2lyY2xlPlxuXG5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBSXhFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUVILEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFRbEUsTUFBTSxPQUFPLG1CQUNYLFNBQVEsbUJBQXNCO0lBUzlCLFlBQ3FCLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CO1FBRXRDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOakMsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO0lBR3hDLENBQUM7SUFFUSxRQUFRO1FBQ2YsSUFBSSxDQUFD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QUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Z0hBdk9VLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdGQy9CaEMsb21DQW9DQTsyRkRMYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge1Nlcmllc0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtCYXNlUG9pbnR9IGZyb20gJy4uLy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge1Rvb2x0aXBUcmFja2luZ30gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZW51bS90b29sdGlwLXRyYWNraW5nJztcbmltcG9ydCB7RHJhZ1BvaW50VHlwZX0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZW51bS9kcmFnLXBvaW50LXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdmc6c3ZnW3RldGEtbGluZS1zZXJpZXNdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGluZS1zZXJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpbmVTZXJpZXNDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBTZXJpZXNCYXNlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgdHJhbnNmb3JtOiBPYnNlcnZhYmxlPFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+PjtcbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBwYXRoOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHN2Z0VsZW1lbnQ6IFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgeDogYW55O1xuICB5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2NhbGVTZXJ2aWNlLnhTY2FsZU1hcCwgdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlTWFwKSxcbiAgICAgIG1hcChcbiAgICAgICAgKFxuICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgIFBvaW50ZXJFdmVudCxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIGFueT4sXG4gICAgICAgICAgICBNYXA8bnVtYmVyLCBhbnk+XG4gICAgICAgICAgXVxuICAgICAgICApID0+IHtcbiAgICAgICAgICBjb25zdCBbZXZlbnQsIHgsIHldID0gZGF0YTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybShldmVudCwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG5cbiAgICB0aGlzLnBhdGggPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2NhbGVTZXJ2aWNlLnhTY2FsZU1hcCxcbiAgICAgIHRoaXMuc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbTWFwPG51bWJlciwgYW55PiwgTWFwPG51bWJlciwgYW55Pl0pID0+IHtcbiAgICAgICAgY29uc3QgW3gsIHldID0gZGF0YTtcbiAgICAgICAgdGhpcy54ID0geC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgICAgIHRoaXMueSA9IHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpO1xuXG4gICAgICAgIGNvbnN0IGxpbmUgPSBkM1xuICAgICAgICAgIC5saW5lPEJhc2VQb2ludD4oKVxuICAgICAgICAgIC5kZWZpbmVkKChwb2ludCkgPT4gcG9pbnQueCAhPT0gbnVsbCAmJiBwb2ludC55ICE9PSBudWxsICYmICFpc05hTihwb2ludC54KSAmJiAhaXNOYU4ocG9pbnQueSkpXG4gICAgICAgICAgLngoKHBvaW50KSA9PiB0aGlzLngocG9pbnQueCkpXG4gICAgICAgICAgLnkoKHBvaW50KSA9PiB0aGlzLnkocG9pbnQueSkpO1xuXG4gICAgICAgIHJldHVybiBsaW5lKHRoaXMuc2VyaWVzLmRhdGEpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGRyYWcgPSAobm9kZSwgZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnggfHxcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnh5XG4gICAgICApIHtcbiAgICAgICAgZC54ID0gdGhpcy54LmludmVydChldmVudC54KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueSB8fFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueHlcbiAgICAgICkge1xuICAgICAgICBkLnkgPSB0aGlzLnkuaW52ZXJ0KGV2ZW50LnkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN2Yy5lbWl0UG9pbnQoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICAgIHBvaW50OiBkLFxuICAgICAgICB9LFxuICAgICAgICBldmVudCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRyYWdNYXJrZXJzID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5zdWJqZWN0KGZ1bmN0aW9uIChldmVudCwgZDogQmFzZVBvaW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgICAgIHJldHVybiB7eDogbm9kZS5hdHRyKCdjeCcpLCB5OiBub2RlLmF0dHIoJ2N5Jyl9O1xuICAgICAgfSlcbiAgICAgIC5vbihcbiAgICAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAgICAgZnVuY3Rpb24gKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcblxuICAgICAgICAgIGRyYWcobm9kZSwgZXZlbnQsIGQpO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgY29uc3QgZHJhZ2dhYmxlTWFya2VycyA9IHRoaXMuc2VyaWVzLmRhdGE/LmZpbHRlcihcbiAgICAgIChfKSA9PiBfPy5tYXJrZXIgJiYgXz8ubWFya2VyPy5kcmFnZ2FibGVcbiAgICApO1xuXG4gICAgY29uc3QgZWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdEFsbCgnLmRyYWdnYWJsZS1tYXJrZXInKVxuICAgICAgLmRhdGEoZHJhZ2dhYmxlTWFya2Vycyk7XG5cbiAgICBlbGVtZW50LmNhbGwoZHJhZ01hcmtlcnMgYXMgYW55KTtcblxuICAgIHRoaXMuc3ZnRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdCgnLmxpbmUnKVxuICAgICAgLm5vZGUoKSBhcyBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIH1cblxuICBnZXRNYXJrZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnNlcmllcy5kYXRhPy5maWx0ZXIoKF8pID0+IF8/Lm1hcmtlcik7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oXG4gICAgZXZlbnQ6IGFueSxcbiAgICB4OiBNYXA8bnVtYmVyLCBhbnk+LFxuICAgIHk6IE1hcDxudW1iZXIsIGFueT5cbiAgKTogUGljazxCYXNlUG9pbnQsICd4JyB8ICd5Jz4ge1xuICAgIGNvbnN0IG1vdXNlID0gW2V2ZW50Py5vZmZzZXRYLCBldmVudD8ub2Zmc2V0WV07XG5cbiAgICBjb25zdCBmb3VuZFggPSB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KTtcbiAgICBjb25zdCBmb3VuZFkgPSB5LmdldCh0aGlzLnNlcmllcy55QXhpc0luZGV4KTtcblxuICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IHRoaXMuY29uZmlnPy50b29sdGlwPy50cmFja2luZztcblxuICAgIGNvbnN0IGxpbmVJbnRlcnNlY3Rpb24gPSAoXG4gICAgICBwMF94LFxuICAgICAgcDBfeSxcbiAgICAgIHAxX3gsXG4gICAgICBwMV95LFxuICAgICAgcDJfeCxcbiAgICAgIHAyX3ksXG4gICAgICBwM194LFxuICAgICAgcDNfeVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgclYgPSB7fSBhcyBhbnk7XG4gICAgICBsZXQgczFfeCwgczFfeSwgczJfeCwgczJfeTtcbiAgICAgIHMxX3ggPSBwMV94IC0gcDBfeDtcbiAgICAgIHMxX3kgPSBwMV95IC0gcDBfeTtcbiAgICAgIHMyX3ggPSBwM194IC0gcDJfeDtcbiAgICAgIHMyX3kgPSBwM195IC0gcDJfeTtcblxuICAgICAgbGV0IHMsIHQ7XG4gICAgICBzID1cbiAgICAgICAgKC1zMV95ICogKHAwX3ggLSBwMl94KSArIHMxX3ggKiAocDBfeSAtIHAyX3kpKSAvXG4gICAgICAgICgtczJfeCAqIHMxX3kgKyBzMV94ICogczJfeSk7XG4gICAgICB0ID1cbiAgICAgICAgKHMyX3ggKiAocDBfeSAtIHAyX3kpIC0gczJfeSAqIChwMF94IC0gcDJfeCkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcblxuICAgICAgaWYgKHMgPj0gMCAmJiBzIDw9IDEgJiYgdCA+PSAwICYmIHQgPD0gMSkge1xuICAgICAgICAvLyBDb2xsaXNpb24gZGV0ZWN0ZWRcbiAgICAgICAgclYueCA9IHAwX3ggKyB0ICogczFfeDtcbiAgICAgICAgclYueSA9IHAwX3kgKyB0ICogczFfeTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJWO1xuICAgIH07XG5cbiAgICBpZiAodG9vbHRpcFRyYWNraW5nID09PSBUb29sdGlwVHJhY2tpbmcueCkge1xuICAgICAgY29uc3QgYmlzZWN0ID0gZDMuYmlzZWN0b3IoKF86IEJhc2VQb2ludCkgPT4gXy54KS5yaWdodDtcbiAgICAgIGNvbnN0IHBvaW50ZXIgPSBtb3VzZVswXTtcblxuICAgICAgY29uc3QgeDAgPSBmb3VuZFguaW52ZXJ0KHBvaW50ZXIpO1xuXG4gICAgICBjb25zdCByaWdodElkID0gYmlzZWN0KHRoaXMuc2VyaWVzLmRhdGEsIHgwKTtcblxuICAgICAgY29uc3QgcmFuZ2UgPSBmb3VuZFkucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICBwb2ludDoge3g6IGZvdW5kWC5pbnZlcnQoaW50ZXJzZWN0LngpLCB5OiBmb3VuZFkuaW52ZXJ0KGludGVyc2VjdC55KX0sXG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodG9vbHRpcFRyYWNraW5nID09PSBUb29sdGlwVHJhY2tpbmcueSkge1xuICAgICAgY29uc3QgYmlzZWN0ID0gZDMuYmlzZWN0b3IoKF86IEJhc2VQb2ludCkgPT4gXy55KS5yaWdodDtcblxuICAgICAgY29uc3QgeTAgPSBmb3VuZFkuaW52ZXJ0KG1vdXNlWzFdKTtcblxuICAgICAgY29uc3QgcmlnaHRJZCA9IGJpc2VjdCh0aGlzLnNlcmllcy5kYXRhLCB5MCk7XG4gICAgICBjb25zdCByYW5nZSA9IGZvdW5kWC5yYW5nZSgpO1xuXG4gICAgICBjb25zdCBpbnRlcnNlY3QgPSBsaW5lSW50ZXJzZWN0aW9uKFxuICAgICAgICByYW5nZVswXSxcbiAgICAgICAgbW91c2VbMV0sXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBtb3VzZVsxXSxcbiAgICAgICAgZm91bmRYKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZCAtIDFdPy54KSxcbiAgICAgICAgZm91bmRZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZCAtIDFdPy55KSxcbiAgICAgICAgZm91bmRYKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICBwb2ludDoge1xuICAgICAgICAgIHg6IGZvdW5kWC5pbnZlcnQoaW50ZXJzZWN0LngpLFxuICAgICAgICAgIHk6IGZvdW5kWS5pbnZlcnQoaW50ZXJzZWN0LnkpLFxuICAgICAgICB9LFxuICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGludGVyc2VjdC54LFxuICAgICAgICB5OiBpbnRlcnNlY3QueSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCJcbiAgPHN2ZzpwYXRoXG4gICAgY2xhc3M9XCJsaW5lXCJcbiAgICBbYXR0ci5kXT1cInBhdGggfCBhc3luY1wiXG4gICAgW2F0dHIuc3Ryb2tlXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInNlcmllcy5zdHlsZT8uc3Ryb2tlV2lkdGhcIlxuICAgIGZpbGw9XCJub25lXCI+XG4gIDwvc3ZnOnBhdGg+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmFuc2Zvcm0gfCBhc3luYyBhcyB0XCI+XG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgICpuZ0lmPVwidC54ICE9PSB1bmRlZmluZWQgJiYgdC55IT09IHVuZGVmaW5lZFwiXG4gICAgICByPVwiM1wiXG4gICAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgnKyB0LnggKycsICcrIHQueSArJyknXCJcbiAgICA+XG4gICAgPC9zdmc6Y2lyY2xlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0TWFya2VycygpIGFzIG1hcmtlcnNcIj5cbiAgICAgIDxzdmc6Y2lyY2xlXG4gICAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHBvaW50IG9mIG1hcmtlcnNcIlxuICAgICAgICBbY2xhc3MuZHJhZ2dhYmxlLW1hcmtlcl09XCJwb2ludD8ubWFya2VyPy5kcmFnZ2FibGVcIlxuICAgICAgICBbYXR0ci5yXT1cInBvaW50Lm1hcmtlci5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgICAgICBbYXR0ci5maWxsXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uZmlsbCA/PyAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlID8/ICdub25lJ1wiXG4gICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gICAgICAgIFthdHRyLmN4XT1cIngocG9pbnQueClcIlxuICAgICAgICBbYXR0ci5jeV09XCJ5KHBvaW50LnkpXCJcbiAgICAgID5cbiAgICAgIDwvc3ZnOmNpcmNsZT5cbiAgPC9uZy1jb250YWluZXI+XG5cblxuXG4iXX0=