@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.
- package/dist/chart/base/series-base.component.d.ts +4 -1
- package/dist/chart/chart/chart.component.d.ts +12 -9
- package/dist/chart/chart-container/chart-container.component.d.ts +18 -23
- package/dist/chart/chart-container/gridlines/gridlines.component.d.ts +7 -16
- package/dist/chart/chart-container/plotband/{plotband.component.d.ts → plot-band.component.d.ts} +10 -10
- package/dist/chart/chart-container/plotline/plotline.component.d.ts +5 -5
- package/dist/chart/chart-container/series/line/line-series.component.d.ts +2 -2
- package/dist/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +28 -0
- package/dist/chart/chart-container/series-host/series-host.component.d.ts +4 -1
- package/dist/chart/chart-container/tooltip/tooltip.component.d.ts +6 -3
- package/dist/chart/chart-container/x-axis/x-axis.component.d.ts +6 -10
- package/dist/chart/chart-container/y-axis/y-axis.component.d.ts +7 -11
- package/dist/chart/chart.module.d.ts +4 -3
- package/dist/chart/core/axis/axis.d.ts +8 -3
- package/dist/chart/default/default-axis-config.d.ts +2 -0
- package/dist/chart/default/default-chart-config.d.ts +2 -0
- package/dist/chart/default/default-series-config.d.ts +3 -0
- package/dist/chart/directives/brushable.directive.d.ts +2 -1
- package/dist/chart/directives/zoomable.directive.d.ts +1 -3
- package/dist/chart/legend/legend.component.d.ts +1 -3
- package/dist/chart/model/axis-options.d.ts +9 -7
- package/dist/chart/model/base-point.d.ts +1 -1
- package/dist/chart/model/enum/public-api.d.ts +1 -1
- package/dist/chart/model/enum/scale-type.d.ts +8 -0
- package/dist/chart/model/enum/series-type.d.ts +2 -1
- package/dist/chart/model/i-broadcast-message.d.ts +14 -2
- package/dist/chart/model/i-chart-config.d.ts +1 -0
- package/dist/chart/model/{plotband.d.ts → plot-band.d.ts} +7 -5
- package/dist/chart/model/{plotline.d.ts → plot-line.d.ts} +3 -1
- package/dist/chart/model/public-api.d.ts +2 -2
- package/dist/chart/service/brush.service.d.ts +2 -5
- package/dist/chart/service/chart.service.d.ts +16 -17
- package/dist/chart/service/scale.service.d.ts +13 -8
- package/dist/chart/service/zoom.service.d.ts +6 -14
- package/dist/esm2020/chart/base/series-base.component.mjs +7 -9
- package/dist/esm2020/chart/chart/chart.component.mjs +28 -30
- package/dist/esm2020/chart/chart-container/chart-container.component.mjs +97 -115
- package/dist/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +19 -31
- package/dist/esm2020/chart/chart-container/plotband/plot-band.component.mjs +141 -0
- package/dist/esm2020/chart/chart-container/plotline/plotline.component.mjs +11 -14
- package/dist/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +11 -11
- package/dist/esm2020/chart/chart-container/series/line/line-series.component.mjs +33 -29
- package/dist/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +174 -0
- package/dist/esm2020/chart/chart-container/series-host/series-host.component.mjs +16 -5
- package/dist/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +17 -19
- package/dist/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +19 -22
- package/dist/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +20 -25
- package/dist/esm2020/chart/chart.module.mjs +8 -5
- package/dist/esm2020/chart/core/axis/axis.mjs +25 -16
- package/dist/esm2020/chart/core/axis/builders/extremes-builder.mjs +2 -3
- package/dist/esm2020/chart/default/default-axis-config.mjs +9 -0
- package/dist/esm2020/chart/default/default-chart-config.mjs +23 -0
- package/dist/esm2020/chart/default/default-series-config.mjs +8 -0
- package/dist/esm2020/chart/directives/brushable.directive.mjs +5 -3
- package/dist/esm2020/chart/directives/zoomable.directive.mjs +7 -8
- package/dist/esm2020/chart/legend/legend.component.mjs +4 -7
- package/dist/esm2020/chart/model/axis-options.mjs +1 -1
- package/dist/esm2020/chart/model/base-point.mjs +1 -1
- package/dist/esm2020/chart/model/enum/public-api.mjs +2 -2
- package/dist/esm2020/chart/model/enum/scale-type.mjs +10 -0
- package/dist/esm2020/chart/model/enum/series-type.mjs +2 -1
- package/dist/esm2020/chart/model/i-broadcast-message.mjs +1 -1
- package/dist/esm2020/chart/model/i-chart-config.mjs +1 -1
- package/dist/esm2020/chart/model/plot-band.mjs +17 -0
- package/dist/esm2020/chart/model/plot-line.mjs +13 -0
- package/dist/esm2020/chart/model/public-api.mjs +3 -3
- package/dist/esm2020/chart/service/broadcast.service.mjs +3 -5
- package/dist/esm2020/chart/service/brush.service.mjs +26 -23
- package/dist/esm2020/chart/service/chart.service.mjs +61 -43
- package/dist/esm2020/chart/service/scale.service.mjs +138 -50
- package/dist/esm2020/chart/service/zoom.service.mjs +82 -85
- package/dist/esm2020/public-api.mjs +2 -1
- package/dist/fesm2015/tetacom-svg-charts.mjs +942 -659
- package/dist/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/dist/fesm2020/tetacom-svg-charts.mjs +929 -657
- package/dist/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
- package/src/chart/Chart.stories.ts +88 -173
- package/src/chart/base/series-base.component.ts +4 -9
- package/src/chart/chart/chart.component.html +16 -5
- package/src/chart/chart/chart.component.scss +1 -0
- package/src/chart/chart/chart.component.ts +39 -33
- package/src/chart/chart-container/chart-container.component.html +102 -57
- package/src/chart/chart-container/chart-container.component.scss +0 -1
- package/src/chart/chart-container/chart-container.component.ts +136 -165
- package/src/chart/chart-container/gridlines/gridlines.component.html +9 -2
- package/src/chart/chart-container/gridlines/gridlines.component.ts +17 -35
- package/src/chart/chart-container/plotband/{plotband.component.html → plot-band.component.html} +15 -9
- package/src/chart/chart-container/plotband/plot-band.component.scss +13 -0
- package/src/chart/chart-container/plotband/{plotband.component.spec.ts → plot-band.component.spec.ts} +5 -5
- package/src/chart/chart-container/plotband/{plotband.component.ts → plot-band.component.ts} +51 -57
- package/src/chart/chart-container/plotline/plotline.component.html +3 -3
- package/src/chart/chart-container/plotline/plotline.component.ts +10 -22
- package/src/chart/chart-container/series/bar/bar-series.component.ts +10 -12
- package/src/chart/chart-container/series/line/line-series.component.html +29 -31
- package/src/chart/chart-container/series/line/line-series.component.ts +69 -50
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.html +43 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.scss +9 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.spec.ts +25 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.ts +254 -0
- package/src/chart/chart-container/series-host/series-host.component.ts +25 -16
- package/src/chart/chart-container/tooltip/tooltip.component.html +1 -1
- package/src/chart/chart-container/tooltip/tooltip.component.scss +2 -1
- package/src/chart/chart-container/tooltip/tooltip.component.ts +25 -26
- package/src/chart/chart-container/x-axis/x-axis.component.ts +18 -20
- package/src/chart/chart-container/y-axis/y-axis.component.ts +18 -28
- package/src/chart/chart.module.ts +4 -2
- package/src/chart/core/axis/axis.ts +37 -21
- package/src/chart/core/axis/builders/extremes-builder.ts +7 -12
- package/src/chart/core/builder/domain-builder.ts +0 -0
- package/src/chart/default/default-axis-config.ts +10 -0
- package/src/chart/default/default-chart-config.ts +20 -8
- package/src/chart/default/default-series-config.ts +10 -0
- package/src/chart/directives/brushable.directive.ts +2 -1
- package/src/chart/directives/zoomable.directive.ts +6 -9
- package/src/chart/legend/legend.component.html +7 -5
- package/src/chart/legend/legend.component.ts +2 -6
- package/src/chart/model/axis-options.ts +9 -7
- package/src/chart/model/base-point.ts +1 -1
- package/src/chart/model/enum/public-api.ts +1 -1
- package/src/chart/model/enum/scale-type.ts +8 -0
- package/src/chart/model/enum/series-type.ts +1 -0
- package/src/chart/model/i-broadcast-message.ts +17 -2
- package/src/chart/model/i-chart-config.ts +1 -0
- package/src/chart/model/i-dom-rect.ts +6 -0
- package/src/chart/model/{plotband.ts → plot-band.ts} +8 -5
- package/src/chart/model/{plotline.ts → plot-line.ts} +5 -2
- package/src/chart/model/public-api.ts +2 -2
- package/src/chart/service/broadcast.service.ts +5 -4
- package/src/chart/service/brush.service.ts +34 -31
- package/src/chart/service/chart.service.ts +70 -54
- package/src/chart/service/scale.service.ts +218 -61
- package/src/chart/service/zoom.service.ts +144 -113
- package/src/public-api.ts +3 -0
- package/dist/chart/model/enum/axis-type.d.ts +0 -7
- package/dist/chart/service/axes.service.d.ts +0 -11
- package/dist/esm2020/chart/chart-container/plotband/plotband.component.mjs +0 -139
- package/dist/esm2020/chart/model/enum/axis-type.mjs +0 -9
- package/dist/esm2020/chart/model/plotband.mjs +0 -16
- package/dist/esm2020/chart/model/plotline.mjs +0 -12
- package/dist/esm2020/chart/service/axes.service.mjs +0 -29
- package/src/chart/chart-container/plotband/plotband.component.scss +0 -13
- package/src/chart/model/enum/axis-type.ts +0 -7
- package/src/chart/service/axes.service.spec.ts +0 -16
- package/src/chart/service/axes.service.ts +0 -27
|
@@ -1,131 +1,118 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component,
|
|
2
|
-
import { tap } from 'rxjs';
|
|
3
|
-
import { throttleTime } from 'rxjs/operators';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, } from '@angular/core';
|
|
2
|
+
import { combineLatest, map, tap } from 'rxjs';
|
|
4
3
|
import { AxisOrientation } from '../model/enum/axis-orientation';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "../service/chart.service";
|
|
7
|
-
import * as i2 from "../service/
|
|
8
|
-
import * as i3 from "
|
|
9
|
-
import * as i4 from "./
|
|
10
|
-
import * as i5 from "./
|
|
11
|
-
import * as i6 from "./
|
|
12
|
-
import * as i7 from "./
|
|
13
|
-
import * as i8 from "./
|
|
14
|
-
import * as i9 from "./
|
|
15
|
-
import * as i10 from "
|
|
16
|
-
import * as i11 from "
|
|
6
|
+
import * as i2 from "../service/scale.service";
|
|
7
|
+
import * as i3 from "../service/zoom.service";
|
|
8
|
+
import * as i4 from "./tooltip/tooltip.component";
|
|
9
|
+
import * as i5 from "./y-axis/y-axis.component";
|
|
10
|
+
import * as i6 from "./x-axis/x-axis.component";
|
|
11
|
+
import * as i7 from "./gridlines/gridlines.component";
|
|
12
|
+
import * as i8 from "./plotline/plotline.component";
|
|
13
|
+
import * as i9 from "./plotband/plot-band.component";
|
|
14
|
+
import * as i10 from "./series-host/series-host.component";
|
|
15
|
+
import * as i11 from "@angular/common";
|
|
17
16
|
import * as i12 from "../directives/zoomable.directive";
|
|
17
|
+
import * as i13 from "../directives/brushable.directive";
|
|
18
18
|
export class ChartContainerComponent {
|
|
19
|
-
constructor(_svc, _cdr,
|
|
19
|
+
constructor(_svc, _cdr, _scaleService, _zoomService, _elementRef) {
|
|
20
20
|
this._svc = _svc;
|
|
21
21
|
this._cdr = _cdr;
|
|
22
|
+
this._scaleService = _scaleService;
|
|
23
|
+
this._zoomService = _zoomService;
|
|
22
24
|
this._elementRef = _elementRef;
|
|
23
|
-
this._axesService = _axesService;
|
|
24
25
|
this.filterPositionMap = new Map()
|
|
25
26
|
.set(true, (axis) => (_) => _.options.opposite && _.options.visible && axis.index <= _.index)
|
|
26
27
|
.set(false, (axis) => (_) => _.options.opposite !== true &&
|
|
27
28
|
_.options.visible &&
|
|
28
29
|
_.index <= axis.index);
|
|
29
30
|
this.sumSize = (acc, curr) => acc + curr.selfSize;
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
this.config = this._svc.config;
|
|
32
|
+
this.size = this._svc.size;
|
|
33
|
+
this.yAxisMap = this._scaleService.yAxisMap;
|
|
34
|
+
this.xAxisMap = this._scaleService.xAxisMap;
|
|
35
|
+
this.yScaleMap = this._scaleService.yScaleMap;
|
|
36
|
+
this.xScaleMap = this._scaleService.xScaleMap;
|
|
37
|
+
this.brushScale = this._scaleService.xScaleMap.pipe(map((map) => {
|
|
38
|
+
return map.get(0);
|
|
34
39
|
}));
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
this.visibleRect = combineLatest([
|
|
41
|
+
this.size,
|
|
42
|
+
this.xAxisMap,
|
|
43
|
+
this.yAxisMap,
|
|
44
|
+
this._zoomService.zoomed,
|
|
45
|
+
]).pipe(map((data) => {
|
|
46
|
+
const [size, x, y] = data;
|
|
47
|
+
const yAxesArray = [...y.values()];
|
|
48
|
+
const xAxesArray = [...x.values()];
|
|
49
|
+
const left = yAxesArray
|
|
50
|
+
.filter((_) => _.options.opposite !== true && _.options.visible)
|
|
51
|
+
.reduce(this.sumSize, 0);
|
|
52
|
+
const right = yAxesArray
|
|
53
|
+
.filter((_) => _.options.opposite && _.options.visible)
|
|
54
|
+
.reduce(this.sumSize, 0);
|
|
55
|
+
const bottom = xAxesArray
|
|
56
|
+
.filter((_) => _.options.opposite !== true && _.options.visible)
|
|
57
|
+
.reduce(this.sumSize, 0);
|
|
58
|
+
const top = xAxesArray
|
|
59
|
+
.filter((_) => _.options.opposite && _.options.visible)
|
|
60
|
+
.reduce(this.sumSize, 0);
|
|
61
|
+
return {
|
|
62
|
+
x: left,
|
|
63
|
+
y: top,
|
|
64
|
+
width: size.width - left - right + 1,
|
|
65
|
+
height: size.height - top - bottom + 1,
|
|
66
|
+
};
|
|
67
|
+
}), tap((_) => this._cdr.detectChanges()));
|
|
38
68
|
}
|
|
39
69
|
ngOnInit() {
|
|
70
|
+
this.uniqId = (Date.now() + Math.random()).toString(36);
|
|
40
71
|
this._observer = new ResizeObserver((entries) => {
|
|
72
|
+
if (!Array.isArray(entries) || !entries.length) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
41
75
|
this._svc.setSize(entries[0].contentRect);
|
|
42
76
|
});
|
|
43
77
|
this._observer.observe(this._elementRef.nativeElement);
|
|
44
|
-
this._svc.init(this.config);
|
|
45
|
-
}
|
|
46
|
-
oppositeFilter(axis) {
|
|
47
|
-
return (_) => _.options.opposite && _.options.visible && axis.index <= _.index;
|
|
48
|
-
}
|
|
49
|
-
nonOppositeFilter(axis) {
|
|
50
|
-
return (_) => _.options.opposite !== true && _.options.visible && _.index <= axis.index;
|
|
51
|
-
}
|
|
52
|
-
getVisibleRect(size) {
|
|
53
|
-
const yAxesArray = [...this.yAxes.values()];
|
|
54
|
-
const xAxesArray = [...this.xAxes.values()];
|
|
55
|
-
const left = yAxesArray
|
|
56
|
-
.filter((_) => _.options.opposite !== true && _.options.visible)
|
|
57
|
-
.reduce(this.sumSize, 0);
|
|
58
|
-
const right = yAxesArray
|
|
59
|
-
.filter((_) => _.options.opposite && _.options.visible)
|
|
60
|
-
.reduce(this.sumSize, 0);
|
|
61
|
-
const bottom = xAxesArray
|
|
62
|
-
.filter((_) => _.options.opposite !== true && _.options.visible)
|
|
63
|
-
.reduce(this.sumSize, 0);
|
|
64
|
-
const top = xAxesArray
|
|
65
|
-
.filter((_) => _.options.opposite && _.options.visible)
|
|
66
|
-
.reduce(this.sumSize, 0);
|
|
67
|
-
const rect = {
|
|
68
|
-
left,
|
|
69
|
-
top,
|
|
70
|
-
width: size.width - left - right + 1,
|
|
71
|
-
height: size.height - top - bottom + 1,
|
|
72
|
-
};
|
|
73
|
-
return rect;
|
|
74
|
-
}
|
|
75
|
-
getYAxisTranslate(axis, size) {
|
|
76
|
-
const yAxesArray = [...this.yAxes.values()];
|
|
77
|
-
const translateOpposite = yAxesArray
|
|
78
|
-
.filter(this.nonOppositeFilter(axis))
|
|
79
|
-
.reduce(this.sumSize, 0);
|
|
80
|
-
const translateNonOpposite = yAxesArray
|
|
81
|
-
.filter(this.oppositeFilter(axis))
|
|
82
|
-
.reduce(this.sumSize, 0);
|
|
83
|
-
return `translate(${axis.options.opposite
|
|
84
|
-
? size.width - translateNonOpposite
|
|
85
|
-
: translateOpposite}, 0)`;
|
|
86
|
-
}
|
|
87
|
-
getXAxisTranslate(axis, size) {
|
|
88
|
-
const xAxesArray = [...this.xAxes.values()];
|
|
89
|
-
const translateNonOpposite = xAxesArray
|
|
90
|
-
.filter(this.nonOppositeFilter(axis))
|
|
91
|
-
.reduce(this.sumSize, 0);
|
|
92
|
-
const translateOpposite = xAxesArray
|
|
93
|
-
.filter(this.oppositeFilter(axis))
|
|
94
|
-
.reduce(this.sumSize, 0);
|
|
95
|
-
return `translate(0, ${axis.options.opposite
|
|
96
|
-
? translateOpposite
|
|
97
|
-
: size.height - translateNonOpposite})`;
|
|
98
78
|
}
|
|
79
|
+
ngAfterViewInit() { }
|
|
99
80
|
getTranslate(axis, size) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
81
|
+
return combineLatest([this.xAxisMap, this.yAxisMap]).pipe(map((data) => {
|
|
82
|
+
const [x, y] = data;
|
|
83
|
+
const xAxesArray = [...x.values()];
|
|
84
|
+
const yAxesArray = [...y.values()];
|
|
85
|
+
const oppositeFilter = this.filterPositionMap.get(true);
|
|
86
|
+
const nonOppositeFilter = this.filterPositionMap.get(false);
|
|
87
|
+
const oppositeOffsetY = yAxesArray.filter(oppositeFilter(axis));
|
|
88
|
+
const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));
|
|
89
|
+
const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));
|
|
90
|
+
const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));
|
|
91
|
+
const oppositeTranslateY = oppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
92
|
+
const nonOppisteTranslateY = nonOppositeOffsetY.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
93
|
+
const oppositeTranslateX = oppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
94
|
+
const nonOppisteTranslateX = nonOppositeOffsetX.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
95
|
+
const left = yAxesArray
|
|
96
|
+
.filter((_) => _.options.visible && _.options.opposite !== true)
|
|
97
|
+
.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
98
|
+
const top = xAxesArray
|
|
99
|
+
.filter((_) => _.options.visible && _.options.opposite === true)
|
|
100
|
+
.reduce((acc, curr) => acc + curr.selfSize, 0);
|
|
101
|
+
if (axis.orientation === AxisOrientation.x) {
|
|
102
|
+
return `translate(${left}, ${axis.options.opposite
|
|
103
|
+
? oppositeTranslateX
|
|
104
|
+
: size.height - nonOppisteTranslateX})`;
|
|
105
|
+
}
|
|
106
|
+
if (axis.orientation === AxisOrientation.y) {
|
|
107
|
+
return `translate(${axis.options.opposite
|
|
108
|
+
? size.width - oppositeTranslateY
|
|
109
|
+
: nonOppisteTranslateY}, ${top})`;
|
|
110
|
+
}
|
|
111
|
+
return 'translate(0, 0)';
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
identify(index, item) {
|
|
115
|
+
return item.value.index;
|
|
129
116
|
}
|
|
130
117
|
mouseMove(event) {
|
|
131
118
|
this._svc.setPointerMove(event);
|
|
@@ -136,16 +123,11 @@ export class ChartContainerComponent {
|
|
|
136
123
|
id() {
|
|
137
124
|
return this.uniqId;
|
|
138
125
|
}
|
|
139
|
-
ngAfterContentChecked() { }
|
|
140
|
-
ngAfterViewChecked() { }
|
|
141
|
-
ngOnChanges(changes) { }
|
|
142
126
|
}
|
|
143
|
-
ChartContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token:
|
|
144
|
-
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container",
|
|
127
|
+
ChartContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container", ngImport: i0, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async\n} as data\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\" [size]=\"data.size\" [config]=\"data.config\"></teta-tooltip>\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue; trackBy: identify\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"config | async\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.width\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue; trackBy: identify\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"config | async\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"visibleRect | async as rect\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"brushScale | async\"\n [config]=\"config | async\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.transform]=\"'translate('+ rect.x +', '+ rect.y +')'\"\n [attr.viewBox]=\"'0 0 ' + rect.width + ' ' + rect.height\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n <g>\n <g>\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"\n [size]=\"data.size\"></g>\n </g>\n </g>\n </g>\n </svg>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"], components: [{ type: i4.TooltipComponent, selector: "teta-tooltip", inputs: ["size", "config"] }, { type: i5.YAxisComponent, selector: "[teta-y-axis]", inputs: ["axis", "scale", "size"] }, { type: i6.XAxisComponent, selector: "[teta-x-axis]", inputs: ["axis", "scale", "size"] }, { type: i7.GridlinesComponent, selector: "[teta-gridlines]", inputs: ["size", "xScaleMap", "yScaleMap"] }, { type: i8.PlotlineComponent, selector: "[teta-plot-line]", inputs: ["plotLine", "size", "axis", "scale"] }, { type: i9.PlotBandComponent, selector: "[teta-plot-band]", inputs: ["plotBand", "axis", "scale", "size"] }, { type: i10.SeriesHostComponent, selector: "[teta-series-host]", inputs: ["config", "series", "size", "rect"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.ZoomableDirective, selector: "[tetaZoomable]", inputs: ["config", "axis", "size"] }, { type: i13.BrushableDirective, selector: "svg:svg[tetaBrushable]", inputs: ["config", "size", "brushScale"] }], pipes: { "async": i11.AsyncPipe, "keyvalue": i11.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
145
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, decorators: [{
|
|
146
130
|
type: Component,
|
|
147
|
-
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"size | async as
|
|
148
|
-
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type:
|
|
149
|
-
type: Input
|
|
150
|
-
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVWpFLE1BQU0sT0FBTyx1QkFBdUI7SUE2QmxDLFlBQ1UsSUFBa0IsRUFDbEIsSUFBdUIsRUFDdkIsV0FBdUIsRUFDdkIsWUFBeUI7UUFIekIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQXJCM0Isc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBR2hDO2FBQ0EsR0FBRyxDQUNGLElBQUksRUFDSixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFPLEVBQUUsRUFBRSxDQUNwQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQ25FO2FBQ0EsR0FBRyxDQUNGLEtBQUssRUFDTCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFP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QkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsRUFBRTtRQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQscUJBQXFCLEtBQVUsQ0FBQztJQUVoQyxrQkFBa0IsS0FBVSxDQUFDO0lBRTdCLFdBQVcsQ0FBQyxPQUFzQixJQUFTLENBQUM7O29IQXBOakMsdUJBQXVCO3dHQUF2Qix1QkFBdUIsK0dDNUJwQyxxaUdBOEVBOzJGRGxEYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU07c0xBS3RDLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXhlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2F4ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcblxudHlwZSBPcHBvc2l0ZSA9IGJvb2xlYW47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb250YWluZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJDb250ZW50Q2hlY2tlZFxue1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcblxuICB5QXhlczogTWFwPG51bWJlciwgQXhpcz47XG4gIHhBeGVzOiBNYXA8bnVtYmVyLCBBeGlzPjtcbiAgc2l6ZTogT2JzZXJ2YWJsZTxET01SZWN0PjtcblxuICBwcml2YXRlIF9vYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gIHByaXZhdGUgdW5pcUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBmaWx0ZXJQb3NpdGlvbk1hcCA9IG5ldyBNYXA8XG4gICAgT3Bwb3NpdGUsXG4gICAgKGF4aXM6IEF4aXMpID0+IChfOiBBeGlzKSA9PiBib29sZWFuXG4gID4oKVxuICAgIC5zZXQoXG4gICAgICB0cnVlLFxuICAgICAgKGF4aXMpID0+IChfOiBBeGlzKSA9PlxuICAgICAgICBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUgJiYgYXhpcy5pbmRleCA8PSBfLmluZGV4XG4gICAgKVxuICAgIC5zZXQoXG4gICAgICBmYWxzZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmXG4gICAgICAgIF8ub3B0aW9ucy52aXNpYmxlICYmXG4gICAgICAgIF8uaW5kZXggPD0gYXhpcy5pbmRleFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2F4ZXNTZXJ2aWNlOiBBeGVzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZS5waXBlKFxuICAgICAgdGhyb3R0bGVUaW1lKDEwMCwgdW5kZWZpbmVkLCB7IHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnlBeGVzID0gdGhpcy5fYXhlc1NlcnZpY2UueUF4aXM7XG4gICAgdGhpcy54QXhlcyA9IHRoaXMuX2F4ZXNTZXJ2aWNlLnhBeGlzO1xuXG4gICAgdGhpcy51bmlxSWQgPSAoRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRTaXplKGVudHJpZXNbMF0uY29udGVudFJlY3QpO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuX3N2Yy5pbml0KHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc3VtU2l6ZSA9IChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemU7XG5cbiAgcHJpdmF0ZSBvcHBvc2l0ZUZpbHRlcihheGlzPzogQXhpcykge1xuICAgIHJldHVybiAoXykgPT5cbiAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSAmJiBheGlzLmluZGV4IDw9IF8uaW5kZXg7XG4gIH1cblxuICBwcml2YXRlIG5vbk9wcG9zaXRlRmlsdGVyKGF4aXM/OiBBeGlzKSB7XG4gICAgcmV0dXJuIChfKSA9PlxuICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIF8uaW5kZXggPD0gYXhpcy5pbmRleDtcbiAgfVxuXG4gIGdldFZpc2libGVSZWN0KHNpemU6IERPTVJlY3QpIHtcbiAgICBjb25zdCB5QXhlc0FycmF5ID0gWy4uLnRoaXMueUF4ZXMudmFsdWVzKCldO1xuICAgIGNvbnN0IHhBeGVzQXJyYXkgPSBbLi4udGhpcy54QXhlcy52YWx1ZXMoKV07XG5cbiAgICBjb25zdCBsZWZ0ID0geUF4ZXNBcnJheVxuICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgY29uc3QgcmlnaHQgPSB5QXhlc0FycmF5XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICBjb25zdCBib3R0b20gPSB4QXhlc0FycmF5XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICBjb25zdCB0b3AgPSB4QXhlc0FycmF5XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICBjb25zdCByZWN0ID0ge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoOiBzaXplLndpZHRoIC0gbGVmdCAtIHJpZ2h0ICsgMSxcbiAgICAgIGhlaWdodDogc2l6ZS5oZWlnaHQgLSB0b3AgLSBib3R0b20gKyAxLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuXG4gIGdldFlBeGlzVHJhbnNsYXRlKGF4aXM6IEF4aXMsIHNpemU6IERPTVJlY3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHlBeGVzQXJyYXkgPSBbLi4udGhpcy55QXhlcy52YWx1ZXMoKV07XG5cbiAgICBjb25zdCB0cmFuc2xhdGVPcHBvc2l0ZSA9IHlBeGVzQXJyYXlcbiAgICAgIC5maWx0ZXIodGhpcy5ub25PcHBvc2l0ZUZpbHRlcihheGlzKSlcbiAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZU5vbk9wcG9zaXRlID0geUF4ZXNBcnJheVxuICAgICAgLmZpbHRlcih0aGlzLm9wcG9zaXRlRmlsdGVyKGF4aXMpKVxuICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICA/IHNpemUud2lkdGggLSB0cmFuc2xhdGVOb25PcHBvc2l0ZVxuICAgICAgICA6IHRyYW5zbGF0ZU9wcG9zaXRlXG4gICAgfSwgMClgO1xuICB9XG5cbiAgZ2V0WEF4aXNUcmFuc2xhdGUoYXhpczogQXhpcywgc2l6ZTogRE9NUmVjdCk6IHN0cmluZyB7XG4gICAgY29uc3QgeEF4ZXNBcnJheSA9IFsuLi50aGlzLnhBeGVzLnZhbHVlcygpXTtcblxuICAgIGNvbnN0IHRyYW5zbGF0ZU5vbk9wcG9zaXRlID0geEF4ZXNBcnJheVxuICAgICAgLmZpbHRlcih0aGlzLm5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKVxuICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgY29uc3QgdHJhbnNsYXRlT3Bwb3NpdGUgPSB4QXhlc0FycmF5XG4gICAgICAuZmlsdGVyKHRoaXMub3Bwb3NpdGVGaWx0ZXIoYXhpcykpXG4gICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICByZXR1cm4gYHRyYW5zbGF0ZSgwLCAke1xuICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgID8gdHJhbnNsYXRlT3Bwb3NpdGVcbiAgICAgICAgOiBzaXplLmhlaWdodCAtIHRyYW5zbGF0ZU5vbk9wcG9zaXRlXG4gICAgfSlgO1xuICB9XG5cbiAgZ2V0VHJhbnNsYXRlKGF4aXM/OiBBeGlzLCBzaXplPzogRE9NUmVjdCk6IHN0cmluZyB7XG4gICAgY29uc3QgeEF4ZXNBcnJheSA9IFsuLi50aGlzLnhBeGVzLnZhbHVlcygpXTtcbiAgICBjb25zdCB5QXhlc0FycmF5ID0gWy4uLnRoaXMueUF4ZXMudmFsdWVzKCldO1xuXG4gICAgY29uc3Qgb3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldCh0cnVlKTtcbiAgICBjb25zdCBub25PcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KGZhbHNlKTtcblxuICAgIGNvbnN0IG9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcbiAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgY29uc3Qgbm9uT3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIobm9uT3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuXG4gICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVZID0gb3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAwXG4gICAgKTtcbiAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWSA9IG5vbk9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgMFxuICAgICk7XG5cbiAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVggPSBvcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVggPSBub25PcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy52aXNpYmxlICYmIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgMCk7XG5cbiAgICBjb25zdCB0b3AgPSB4QXhlc0FycmF5XG4gICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgPT09IHRydWUpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsIDApO1xuXG4gICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke2xlZnR9LCAke1xuICAgICAgICBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgIDogc2l6ZS5oZWlnaHQgLSBub25PcHBpc3RlVHJhbnNsYXRlWFxuICAgICAgfSlgO1xuICAgIH1cblxuICAgIGlmIChheGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgPyBzaXplLndpZHRoIC0gb3Bwb3NpdGVUcmFuc2xhdGVZXG4gICAgICAgICAgOiBub25PcHBpc3RlVHJhbnNsYXRlWVxuICAgICAgfSwgJHt0b3B9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICd0cmFuc2xhdGUoMCwgMCknO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51bmlxSWQ7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7fVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge31cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzaXplIHwgYXN5bmMgYXMgc1wiPlxuICA8dGV0YS10b29sdGlwIFtzaXplXT1cInNcIj48L3RldGEtdG9vbHRpcD5cbiAgPHN2Z1xuICAgICAgIFt0ZXRhWm9vbWFibGVdXG4gICAgICAgW3RldGFCcnVzaGFibGVdXG4gICAgICAgW3NpemVdPVwic1wiXG4gICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgIFthdHRyLndpZHRoXT1cInMud2lkdGhcIlxuICAgICAgIFthdHRyLmhlaWdodF09XCJzLmhlaWdodFwiXG4gICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcrcy53aWR0aCsnICcrcy5oZWlnaHRcIlxuICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgKG1vdXNlbW92ZSk9XCJtb3VzZU1vdmUoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRWaXNpYmxlUmVjdChzKSBhcyByZWN0XCI+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPGNsaXBQYXRoIFthdHRyLmlkXT1cIid2aXNpYmxlLXdpbmRvdy0nICsgaWQoKVwiPlxuICAgICAgICAgIDxyZWN0IFthdHRyLnhdPVwicmVjdC5sZWZ0XCIgW2F0dHIueV09XCJyZWN0LnRvcFwiIFthdHRyLndpZHRoXT1cInJlY3Qud2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwicmVjdC5oZWlnaHRcIj48L3JlY3Q+XG4gICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICA8L2RlZnM+XG5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgaXRlbSBvZiB5QXhlcyB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgdGV0YS15LWF4aXNcbiAgICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgIFtzaXplXT1cInNcIlxuICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIHMpXCI+PC9nPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBpdGVtIG9mIHhBeGVzIHwga2V5dmFsdWVcIlxuICAgICAgICAgICB0ZXRhLXgtYXhpc1xuXG4gICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICBbc2l6ZV09XCJzXCJcbiAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBzKVwiPjwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnIFthdHRyLmNsaXAtcGF0aF09XCIndXJsKCN2aXNpYmxlLXdpbmRvdy0nKyBpZCgpICsnKSdcIj5cbiAgICAgICAgPGcgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgcmVjdC5sZWZ0ICsnLCAnKyByZWN0LnRvcCArJyknXCI+XG4gICAgICAgICAgPGcgY2xhc3M9XCJncmlkbGluZXNcIiB0ZXRhLWdyaWRsaW5lcyBbc2l6ZV09XCJzXCI+PC9nPlxuXG4gICAgICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdGxpbmUgb2YgYXhpcy5wbG90bGluZXNcIiBbcGxvdGxpbmVdPVwicGxvdGxpbmVcIiBbc2l6ZV09XCJzXCJcbiAgICAgICAgICAgICAgICAgW2F4aXNdPVwieEF4ZXMuZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9nPlxuXG4gICAgICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdGxpbmUgb2YgYXhpcy5wbG90bGluZXNcIiBbcGxvdGxpbmVdPVwicGxvdGxpbmVcIiBbc2l6ZV09XCJzXCJcbiAgICAgICAgICAgICAgICAgW2F4aXNdPVwieUF4ZXMuZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9nPlxuXG4gICAgICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdGJhbmQgb2YgYXhpcy5wbG90YmFuZHNcIiBbcGxvdGJhbmRdPVwicGxvdGJhbmRcIiBbc2l6ZV09XCJzXCJcbiAgICAgICAgICAgICAgICAgW2F4aXNdPVwieEF4ZXMuZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxnIGNsYXNzPVwieS1heGlzLXBsb3RiYW5kLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBjb25maWcueUF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGcgdGV0YS1wbG90LWJhbmQgKm5nRm9yPVwibGV0IHBsb3RiYW5kIG9mIGF4aXMucGxvdGJhbmRzXCIgW3Bsb3RiYW5kXT1cInBsb3RiYW5kXCIgW3NpemVdPVwic1wiXG4gICAgICAgICAgICAgICAgIFtheGlzXT1cInlBeGVzLmdldChpKVwiPjwvZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8ZyBjbGFzcz1cInNlcmllcy10b29sdGlwLWxpbmUtbWFya2VyXCI+PC9nPlxuICAgICAgICAgIDxnIGNsYXNzPVwic2VyaWVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGcgdGV0YS1zZXJpZXMtaG9zdFxuICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBjb25maWcuc2VyaWVzXCJcbiAgICAgICAgICAgICAgIFtzZXJpZXNdPVwic2VyaWVzXCJcbiAgICAgICAgICAgICAgIFtzaXplXT1cInNcIj48L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3ZnPlxuXG5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
131
|
+
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async\n} as data\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\" [size]=\"data.size\" [config]=\"data.config\"></teta-tooltip>\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue; trackBy: identify\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"config | async\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.width\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue; trackBy: identify\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"config | async\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"visibleRect | async as rect\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"brushScale | async\"\n [config]=\"config | async\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.transform]=\"'translate('+ rect.x +', '+ rect.y +')'\"\n [attr.viewBox]=\"'0 0 ' + rect.width + ' ' + rect.height\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n <g>\n <g>\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"\n [size]=\"data.size\"></g>\n </g>\n </g>\n </g>\n </svg>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"] }]
|
|
132
|
+
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsR0FBRyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWFqRSxNQUFNLE9BQU8sdUJBQXVCO0lBZ0NsQyxZQUNVLElBQWtCLEVBQ2xCLElBQXVCLEVBQ3ZCLGFBQTJCLEVBQzNCLFlBQXlCLEVBQ3pCLFdBQXVCO1FBSnZCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUF0QnpCLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUdoQzthQUNBLEdBQUcsQ0FDRixJQUFJLEVBQ0osQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUNuRTthQUNBLEdBQUcsQ0FDRixLQUFLLEVBQ0wsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSTtZQUMzQixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDakIsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUN4QixDQUFDO1FBNkVJLFlBQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBcEVuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUU5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FDRCxDQUNFLElBQXNFLEVBQ3RFLEVBQUU7WUFDRixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDMUIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxVQUFVO2lCQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFM0IsTUFBTSxLQUFLLEdBQUcsVUFBVTtpQkFDckIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFM0IsTUFBTSxNQUFNLEdBQUcsVUFBVTtpQkFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7aUJBQy9ELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTNCLE1BQU0sR0FBRyxHQUFHLFVBQVU7aUJBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7aUJBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTNCLE9BQU87Z0JBQ0wsQ0FBQyxFQUFFLElBQUk7Z0JBQ1AsQ0FBQyxFQUFFLEdBQUc7Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUM7YUFDdkMsQ0FBQztRQUNKLENBQUMsQ0FDRixFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsT0FBOEIsRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDOUMsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZUFBZSxLQUFJLENBQUM7SUFJcEIsWUFBWSxDQUFDLElBQVcsRUFBRSxJQUFjO1FBQ3RDLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLElBQTRDLEVBQUUsRUFBRTtZQUNuRCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNwQixNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRW5DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEUsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFdEUsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUV0RSxNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQy9DLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQ2xDLENBQUMsQ0FDRixDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3BELENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQ2xDLENBQUMsQ0FDRixDQUFDO1lBRUYsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUMvQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUNsQyxDQUFDLENBQ0YsQ0FBQztZQUVGLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUNwRCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUNsQyxDQUFDLENBQ0YsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHLFVBQVU7aUJBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2lCQUMvRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVqRCxNQUFNLEdBQUcsR0FBRyxVQUFVO2lCQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQztpQkFDL0QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFakQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sYUFBYSxJQUFJLEtBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtvQkFDbkIsQ0FBQyxDQUFDLGtCQUFrQjtvQkFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQ3BCLEdBQUcsQ0FBQzthQUNMO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sYUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7b0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQjtvQkFDakMsQ0FBQyxDQUFDLG9CQUNOLEtBQUssR0FBRyxHQUFHLENBQUM7YUFDYjtZQUVELE9BQU8saUJBQWlCLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsRUFBRTtRQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOztvSEEzTFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNERDeEJwQyw4eEpBMkhBOzJGRG5HYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBJQ2hhcnRFdmVudCB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG5cbiAgeUF4aXNNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgQXhpcz4+O1xuICB4QXhpc01hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBBeGlzPj47XG4gIHlTY2FsZU1hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBhbnk+PjtcbiAgeFNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIGJydXNoU2NhbGU6IE9ic2VydmFibGU8YW55PjtcblxuICBwcml2YXRlIF9vYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gIHByaXZhdGUgdW5pcUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBmaWx0ZXJQb3NpdGlvbk1hcCA9IG5ldyBNYXA8XG4gICAgT3Bwb3NpdGUsXG4gICAgKGF4aXM6IEF4aXMpID0+IChfOiBBeGlzKSA9PiBib29sZWFuXG4gID4oKVxuICAgIC5zZXQoXG4gICAgICB0cnVlLFxuICAgICAgKGF4aXMpID0+IChfOiBBeGlzKSA9PlxuICAgICAgICBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUgJiYgYXhpcy5pbmRleCA8PSBfLmluZGV4XG4gICAgKVxuICAgIC5zZXQoXG4gICAgICBmYWxzZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlICYmXG4gICAgICAgIF8ub3B0aW9ucy52aXNpYmxlICYmXG4gICAgICAgIF8uaW5kZXggPD0gYXhpcy5pbmRleFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9zY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcml2YXRlIF96b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuX3N2Yy5jb25maWc7XG4gICAgdGhpcy5zaXplID0gdGhpcy5fc3ZjLnNpemU7XG4gICAgdGhpcy55QXhpc01hcCA9IHRoaXMuX3NjYWxlU2VydmljZS55QXhpc01hcDtcbiAgICB0aGlzLnhBeGlzTWFwID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnhBeGlzTWFwO1xuICAgIHRoaXMueVNjYWxlTWFwID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcDtcbiAgICB0aGlzLnhTY2FsZU1hcCA9IHRoaXMuX3NjYWxlU2VydmljZS54U2NhbGVNYXA7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2UueFNjYWxlTWFwLnBpcGUoXG4gICAgICBtYXAoKG1hcCkgPT4ge1xuICAgICAgICByZXR1cm4gbWFwLmdldCgwKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudmlzaWJsZVJlY3QgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2l6ZSxcbiAgICAgIHRoaXMueEF4aXNNYXAsXG4gICAgICB0aGlzLnlBeGlzTWFwLFxuICAgICAgdGhpcy5fem9vbVNlcnZpY2Uuem9vbWVkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbRE9NUmVjdCwgTWFwPG51bWJlciwgYW55PiwgTWFwPG51bWJlciwgYW55PiwgSUNoYXJ0RXZlbnQ8QXhpcz5dXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzaXplLCB4LCB5XSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcbiAgICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gWy4uLngudmFsdWVzKCldO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCByaWdodCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wLFxuICAgICAgICAgICAgd2lkdGg6IHNpemUud2lkdGggLSBsZWZ0IC0gcmlnaHQgKyAxLFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCAtIHRvcCAtIGJvdHRvbSArIDEsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHRhcCgoXykgPT4gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51bmlxSWQgPSAoRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KTtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykgfHwgIWVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnhBeGlzTWFwLCB0aGlzLnlBeGlzTWFwXSkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogW01hcDxudW1iZXIsIEF4aXM+LCBNYXA8bnVtYmVyLCBBeGlzPl0pID0+IHtcbiAgICAgICAgY29uc3QgW3gsIHldID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IFsuLi54LnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KHRydWUpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KGZhbHNlKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVkgPSBvcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWSA9IG5vbk9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVYID0gb3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWCA9IG5vbk9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICBjb25zdCB0b3AgPSB4QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlID09PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51bmlxSWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIHNpemU6IHNpemUgfCBhc3luYyxcbiAgY29uZmlnOiBjb25maWcgfCBhc3luYyxcbiAgeEF4aXNNYXA6IHhBeGlzTWFwIHwgYXN5bmMsXG4gIHlBeGlzTWFwOiB5QXhpc01hcCB8IGFzeW5jLFxuICB4U2NhbGVNYXA6IHhTY2FsZU1hcCB8IGFzeW5jLFxuICB5U2NhbGVNYXA6IHlTY2FsZU1hcCB8IGFzeW5jXG59IGFzIGRhdGFcIj5cbiAgPHRldGEtdG9vbHRpcCAqbmdJZj1cImRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGVcIiBbc2l6ZV09XCJkYXRhLnNpemVcIiBbY29uZmlnXT1cImRhdGEuY29uZmlnXCI+PC90ZXRhLXRvb2x0aXA+XG4gIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICA8ZyBjbGFzcz1cInktYXhpcy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS55QXhpc01hcCB8IGtleXZhbHVlOyB0cmFja0J5OiBpZGVudGlmeVwiPlxuICAgICAgICA8Z1xuICAgICAgICAgIHRldGEteS1heGlzXG4gICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgW3NjYWxlXT1cImRhdGEueVNjYWxlTWFwLmdldChpdGVtLmtleSlcIlxuICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L2c+XG4gICAgICAgIDxyZWN0XG4gICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMFwiXG4gICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWcgfCBhc3luY1wiXG4gICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICBbYXR0ci54XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IDAgOiAtaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgW2F0dHIueV09XCIwXCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiZGF0YS5zaXplLndpZHRoXCJcbiAgICAgICAgICBbYXR0ci53aWR0aF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgICA8ZyBjbGFzcz1cIngtYXhpcy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS54QXhpc01hcCB8IGtleXZhbHVlOyB0cmFja0J5OiBpZGVudGlmeVwiPlxuICAgICAgICA8Z1xuICAgICAgICAgIHRldGEteC1heGlzXG4gICAgICAgICAgW2F4aXNdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgW3NjYWxlXT1cImRhdGEueFNjYWxlTWFwLmdldChpdGVtLmtleSlcIlxuICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L2c+XG5cbiAgICAgICAgPHJlY3RcbiAgICAgICAgICB0ZXRhWm9vbWFibGVcbiAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZyB8IGFzeW5jXCJcbiAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgW2F0dHIueV09XCIwXCJcbiAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXRhLnNpemUud2lkdGhcIlxuICAgICAgICAgIFthdHRyLmhlaWdodF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aXNpYmxlUmVjdCB8IGFzeW5jIGFzIHJlY3RcIj5cbiAgICA8c3ZnXG4gICAgICB0ZXRhQnJ1c2hhYmxlXG4gICAgICB0ZXRhWm9vbWFibGVcbiAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICBbYnJ1c2hTY2FsZV09XCJicnVzaFNjYWxlIHwgYXN5bmNcIlxuICAgICAgW2NvbmZpZ109XCJjb25maWcgfCBhc3luY1wiXG4gICAgICBbYXR0ci53aWR0aF09XCJyZWN0LndpZHRoXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJyZWN0LmhlaWdodFwiXG4gICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZSgnKyByZWN0LnggKycsICcrIHJlY3QueSArJyknXCJcbiAgICAgIFthdHRyLnZpZXdCb3hdPVwiJzAgMCAnICsgcmVjdC53aWR0aCArICcgJyArIHJlY3QuaGVpZ2h0XCJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gICAgICAobW91c2Vtb3ZlKT1cIm1vdXNlTW92ZSgkZXZlbnQpXCI+XG4gICAgICA8Zz5cbiAgICAgICAgPGc+XG4gICAgICAgICAgPGcgY2xhc3M9XCJncmlkbGluZXNcIlxuICAgICAgICAgICAgIHRldGEtZ3JpZGxpbmVzXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbeFNjYWxlTWFwXT1cImRhdGEueFNjYWxlTWFwXCJcbiAgICAgICAgICAgICBbeVNjYWxlTWFwXT1cImRhdGEueVNjYWxlTWFwXCI+PC9nPlxuICAgICAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdExpbmUgb2YgYXhpcy5wbG90TGluZXNcIlxuICAgICAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS54U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS54QXhpc01hcC5nZXQoaSlcIj48L2c+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2c+XG4gICAgICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnlTY2FsZU1hcC5nZXQoaSlcIlxuICAgICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnlBeGlzTWFwLmdldChpKVwiPjwvZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZz5cblxuICAgICAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RiYW5kLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdEJhbmQgb2YgYXhpcy5wbG90QmFuZHNcIlxuICAgICAgICAgICAgICAgICBbcGxvdEJhbmRdPVwicGxvdEJhbmRcIlxuICAgICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS54U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS54QXhpc01hcC5nZXQoaSlcIj48L2c+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2c+XG4gICAgICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kICpuZ0Zvcj1cImxldCBwbG90QmFuZCBvZiBheGlzLnBsb3RCYW5kc1wiXG4gICAgICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZFwiXG4gICAgICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnlTY2FsZU1hcC5nZXQoaSlcIlxuICAgICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnlBeGlzTWFwLmdldChpKVwiPjwvZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8ZyBjbGFzcz1cInNlcmllcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxnIHRldGEtc2VyaWVzLWhvc3RcbiAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZXJpZXMgb2YgZGF0YS5jb25maWcuc2VyaWVzXCJcbiAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgICAgW3Nlcmllc109XCJzZXJpZXNcIlxuICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCI+PC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,41 +1,29 @@
|
|
|
1
|
-
import { Component, Input, } from '@angular/core';
|
|
2
|
-
import { merge, tap } from 'rxjs';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "../../service/axes.service";
|
|
6
|
-
import * as i3 from "../../service/chart.service";
|
|
7
|
-
import * as i4 from "../../service/zoom.service";
|
|
8
|
-
import * as i5 from "@angular/common";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
9
4
|
export class GridlinesComponent {
|
|
10
|
-
constructor(
|
|
11
|
-
this.scaleService = scaleService;
|
|
12
|
-
this.axesService = axesService;
|
|
13
|
-
this.chartService = chartService;
|
|
14
|
-
this.zoomService = zoomService;
|
|
15
|
-
this.cdr = cdr;
|
|
16
|
-
merge(this.chartService.size, this.zoomService.zoomed)
|
|
17
|
-
.pipe(tap(() => {
|
|
18
|
-
this.draw();
|
|
19
|
-
this.cdr.detectChanges();
|
|
20
|
-
}))
|
|
21
|
-
.subscribe();
|
|
22
|
-
}
|
|
5
|
+
constructor() { }
|
|
23
6
|
draw() {
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.tickYValues = this.y.ticks();
|
|
27
|
-
this.tickXValues = this.x.ticks();
|
|
7
|
+
this.tickYValues = this.yScaleMap.get(0).ticks();
|
|
8
|
+
this.tickXValues = this.xScaleMap.get(0).ticks();
|
|
28
9
|
}
|
|
29
|
-
|
|
30
|
-
|
|
10
|
+
ngOnChanges(changes) {
|
|
11
|
+
if (changes.hasOwnProperty('xScaleMap') &&
|
|
12
|
+
changes.hasOwnProperty('yScaleMap')) {
|
|
13
|
+
this.draw();
|
|
14
|
+
}
|
|
31
15
|
}
|
|
32
16
|
}
|
|
33
|
-
GridlinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GridlinesComponent, deps: [
|
|
34
|
-
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngFor=\"let tick of tickYValues\">\n <svg:line [attr.x1]=\"0\" stroke=\"red\"
|
|
17
|
+
GridlinesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GridlinesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
GridlinesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: { size: "size", xScaleMap: "xScaleMap", yScaleMap: "yScaleMap" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let tick of tickYValues\">\n <svg:line [attr.x1]=\"0\" stroke=\"red\"\n [attr.y1]=\"yScaleMap.get(0)(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"yScaleMap.get(0)(tick)\"></svg:line>\n</ng-container>\n\n<ng-container *ngFor=\"let tick of tickXValues\">\n <svg:line [attr.x1]=\"xScaleMap.get(0)(tick)\"\n stroke=\"red\"\n [attr.y1]=\"0\"\n [attr.x2]=\"xScaleMap.get(0)(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n</ng-container>\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke-dasharray:1,4;stroke:var(--color-text-20)}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: GridlinesComponent, decorators: [{
|
|
36
20
|
type: Component,
|
|
37
|
-
args: [{ selector: '[teta-gridlines]', template: "<ng-container *ngFor=\"let tick of tickYValues\">\n <svg:line [attr.x1]=\"0\" stroke=\"red\"
|
|
38
|
-
}], ctorParameters: function () { return [
|
|
21
|
+
args: [{ selector: '[teta-gridlines]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let tick of tickYValues\">\n <svg:line [attr.x1]=\"0\" stroke=\"red\"\n [attr.y1]=\"yScaleMap.get(0)(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"yScaleMap.get(0)(tick)\"></svg:line>\n</ng-container>\n\n<ng-container *ngFor=\"let tick of tickXValues\">\n <svg:line [attr.x1]=\"xScaleMap.get(0)(tick)\"\n stroke=\"red\"\n [attr.y1]=\"0\"\n [attr.x2]=\"xScaleMap.get(0)(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n</ng-container>\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke-dasharray:1,4;stroke:var(--color-text-20)}\n"] }]
|
|
22
|
+
}], ctorParameters: function () { return []; }, propDecorators: { size: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], xScaleMap: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], yScaleMap: [{
|
|
39
27
|
type: Input
|
|
40
28
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZGxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2dyaWRsaW5lcy9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDOzs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixnQkFBZSxDQUFDO0lBRWhCLElBQUk7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUNFLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQ25DO1lBQ0EsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzsrR0F0QlUsa0JBQWtCO21HQUFsQixrQkFBa0IsdUpDYi9CLGdpQkFjQTsyRkREYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07MEVBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLWdyaWRsaW5lc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZGxpbmVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZGxpbmVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHcmlkbGluZXNDb21wb25lbnQge1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSB4U2NhbGVNYXA6IE1hcDxudW1iZXIsIGFueT47XG4gIEBJbnB1dCgpIHlTY2FsZU1hcDogTWFwPG51bWJlciwgYW55PjtcblxuICB0aWNrWVZhbHVlczogbnVtYmVyW107XG4gIHRpY2tYVmFsdWVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZHJhdygpIHtcbiAgICB0aGlzLnRpY2tZVmFsdWVzID0gdGhpcy55U2NhbGVNYXAuZ2V0KDApLnRpY2tzKCk7XG4gICAgdGhpcy50aWNrWFZhbHVlcyA9IHRoaXMueFNjYWxlTWFwLmdldCgwKS50aWNrcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3hTY2FsZU1hcCcpICYmXG4gICAgICBjaGFuZ2VzLmhhc093blByb3BlcnR5KCd5U2NhbGVNYXAnKVxuICAgICkge1xuICAgICAgdGhpcy5kcmF3KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIHRpY2tZVmFsdWVzXCI+XG4gIDxzdmc6bGluZSBbYXR0ci54MV09XCIwXCIgc3Ryb2tlPVwicmVkXCJcbiAgICAgICAgICAgIFthdHRyLnkxXT1cInlTY2FsZU1hcC5nZXQoMCkodGljaylcIlxuICAgICAgICAgICAgW2F0dHIueDJdPVwic2l6ZT8ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIueTJdPVwieVNjYWxlTWFwLmdldCgwKSh0aWNrKVwiPjwvc3ZnOmxpbmU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiB0aWNrWFZhbHVlc1wiPlxuICA8c3ZnOmxpbmUgW2F0dHIueDFdPVwieFNjYWxlTWFwLmdldCgwKSh0aWNrKVwiXG4gICAgICAgICAgICBzdHJva2U9XCJyZWRcIlxuICAgICAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci54Ml09XCJ4U2NhbGVNYXAuZ2V0KDApKHRpY2spXCJcbiAgICAgICAgICAgIFthdHRyLnkyXT1cInNpemU/LmhlaWdodFwiPjwvc3ZnOmxpbmU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|