@kirbydesign/designsystem 5.0.2 → 5.0.6
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/bundles/kirbydesign-designsystem-testing-base.umd.js +86 -37
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +586 -46
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
- package/esm2015/kirbydesign-designsystem.js +15 -13
- package/esm2015/kirbydesign-designsystem.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart-js/chart-js.service.js +137 -19
- package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +203 -0
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +1 -0
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.js +5 -3
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart.component.js +3 -1
- package/esm2015/lib/components/chart/chart.component.metadata.json +1 -1
- package/esm2015/lib/components/chart/chart.types.js +1 -1
- package/esm2015/lib/components/chart/chart.types.metadata.json +1 -1
- package/esm2015/lib/components/chart/configs/global-defaults.config.js +7 -1
- package/esm2015/lib/components/chart/configs/type.config.js +118 -1
- package/esm2015/lib/components/chart/configs/type.config.metadata.json +1 -1
- package/esm2015/lib/components/index.js +4 -1
- package/esm2015/lib/components/index.metadata.json +1 -1
- package/esm2015/lib/components/item/label/label.component.js +1 -1
- package/esm2015/lib/components/item/label/label.component.metadata.json +1 -1
- package/esm2015/lib/components/item-sliding/index.js +3 -0
- package/esm2015/lib/components/item-sliding/index.metadata.json +1 -0
- package/esm2015/lib/components/item-sliding/item-sliding.component.js +27 -0
- package/esm2015/lib/components/item-sliding/item-sliding.component.metadata.json +1 -0
- package/esm2015/lib/components/item-sliding/item-sliding.types.js +2 -0
- package/esm2015/lib/components/item-sliding/item-sliding.types.metadata.json +1 -0
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.js +13 -2
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.metadata.json +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.js +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +1 -1
- package/esm2015/lib/components/list/list-swipe-action.type.js +1 -1
- package/esm2015/lib/components/list/list-swipe-action.type.metadata.json +1 -1
- package/esm2015/lib/components/list/list.component.js +1 -1
- package/esm2015/lib/components/list/list.component.metadata.json +1 -1
- package/esm2015/lib/components/section-header/section-header.component.js +11 -0
- package/esm2015/lib/components/section-header/section-header.component.metadata.json +1 -0
- package/esm2015/lib/helpers/deep-copy.js +11 -2
- package/esm2015/lib/helpers/deep-copy.metadata.json +1 -1
- package/esm2015/lib/helpers/element-has-ancestor.js +24 -0
- package/esm2015/lib/helpers/element-has-ancestor.metadata.json +1 -0
- package/esm2015/lib/helpers/index.js +2 -1
- package/esm2015/lib/helpers/index.metadata.json +1 -1
- package/esm2015/lib/kirby.module.js +5 -1
- package/esm2015/lib/kirby.module.metadata.json +1 -1
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +32 -30
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.js +2 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +23 -0
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.metadata.json +1 -0
- package/esm2015/testing-base/lib/components/mock.section-header.component.js +19 -0
- package/esm2015/testing-base/lib/components/mock.section-header.component.metadata.json +1 -0
- package/esm2015/testing-base/lib/mock-components.js +5 -1
- package/esm2015/testing-base/lib/mock-components.metadata.json +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +43 -2
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +551 -29
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/kirbydesign-designsystem.d.ts +14 -12
- package/kirbydesign-designsystem.metadata.json +1 -1
- package/lib/components/chart/chart-js/chart-js.service.d.ts +17 -1
- package/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.d.ts +14 -0
- package/lib/components/chart/chart.component.d.ts +2 -1
- package/lib/components/chart/chart.types.d.ts +9 -1
- package/lib/components/chart/configs/global-defaults.config.d.ts +6 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/item-sliding/index.d.ts +2 -0
- package/lib/components/item-sliding/item-sliding.component.d.ts +7 -0
- package/lib/components/item-sliding/item-sliding.types.d.ts +10 -0
- package/lib/components/list/list-experimental/list-experimental.component.d.ts +3 -0
- package/lib/components/list/list-swipe-action.type.d.ts +8 -9
- package/lib/components/section-header/section-header.component.d.ts +2 -0
- package/lib/helpers/deep-copy.d.ts +9 -1
- package/lib/helpers/element-has-ancestor.d.ts +1 -0
- package/lib/helpers/index.d.ts +1 -0
- package/package.json +6 -3
- package/scss/_global-styles.scss +4 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts +31 -29
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/testing-base/lib/components/mock.chart.component.d.ts +2 -1
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +5 -0
- package/testing-base/lib/components/mock.section-header.component.d.ts +2 -0
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { toDate } from 'date-fns';
|
|
2
3
|
import { mergeDeepAll } from '../../../helpers/merge-deep';
|
|
3
|
-
import { isNumberArray } from '../chart.types';
|
|
4
|
+
import { isNumberArray, } from '../chart.types';
|
|
4
5
|
import { ChartConfigService } from '../configs/chart-config.service';
|
|
5
6
|
import { Chart } from './configured-chart-js';
|
|
7
|
+
const CHART_LOCALE_DEFAULT = 'en-US';
|
|
6
8
|
export class ChartJSService {
|
|
7
9
|
constructor(chartConfigService) {
|
|
8
10
|
this.chartConfigService = chartConfigService;
|
|
9
11
|
}
|
|
10
12
|
renderChart(args) {
|
|
11
|
-
const { targetElement, type, data, dataLabels, customOptions, annotations, highlightedElements, } = args;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const { targetElement, type, data, dataLabels, customOptions, annotations, dataLabelOptions, highlightedElements, } = args;
|
|
14
|
+
this.dataLabelOptions = dataLabelOptions || null;
|
|
15
|
+
this.highlightedElements = highlightedElements || null;
|
|
16
|
+
this.chartType = type;
|
|
17
|
+
this.locale = (dataLabelOptions === null || dataLabelOptions === void 0 ? void 0 : dataLabelOptions.locale) || CHART_LOCALE_DEFAULT;
|
|
18
|
+
const datasets = this.createDatasets(data);
|
|
19
|
+
const options = this.createOptionsObject({
|
|
20
|
+
customOptions,
|
|
21
|
+
annotations,
|
|
22
|
+
dataLabelOptions,
|
|
23
|
+
});
|
|
24
|
+
let config = this.createConfigurationObject(type, datasets, options, dataLabels);
|
|
15
25
|
this.initializeNewChart(targetElement.nativeElement, config);
|
|
16
26
|
}
|
|
17
27
|
redrawChart() {
|
|
@@ -34,15 +44,20 @@ export class ChartJSService {
|
|
|
34
44
|
this.nonDestructivelyUpdateType(type, customOptions);
|
|
35
45
|
}
|
|
36
46
|
}
|
|
47
|
+
setDataLabelOptions(dataLabelOptions) {
|
|
48
|
+
this.dataLabelOptions = dataLabelOptions;
|
|
49
|
+
}
|
|
37
50
|
updateOptions(customOptions, type) {
|
|
38
51
|
const annotations = this.getExistingChartAnnotations();
|
|
39
|
-
this.
|
|
52
|
+
this.chartType = type;
|
|
53
|
+
this.chart.options = this.createOptionsObject({ customOptions, annotations });
|
|
40
54
|
}
|
|
41
55
|
updateAnnotations(annotations) {
|
|
42
56
|
const annotationsWithDefaults = this.applyDefaultsToAnnotations(annotations);
|
|
43
57
|
this.chart.options.plugins.annotation.annotations = annotationsWithDefaults;
|
|
44
58
|
}
|
|
45
59
|
updateHighlightedElements(highlightedElements) {
|
|
60
|
+
this.highlightedElements = highlightedElements;
|
|
46
61
|
const oldDatasets = this.chart.data.datasets;
|
|
47
62
|
// Clear old datasets of highlighted elements
|
|
48
63
|
oldDatasets.map((dataset) => {
|
|
@@ -51,7 +66,7 @@ export class ChartJSService {
|
|
|
51
66
|
delete dataset.kirbyOptions.highlightedElements;
|
|
52
67
|
}
|
|
53
68
|
});
|
|
54
|
-
this.chart.data.datasets = this.createDatasets(oldDatasets
|
|
69
|
+
this.chart.data.datasets = this.createDatasets(oldDatasets);
|
|
55
70
|
}
|
|
56
71
|
getExistingChartAnnotations() {
|
|
57
72
|
var _a, _b;
|
|
@@ -70,7 +85,8 @@ export class ChartJSService {
|
|
|
70
85
|
const datasets = this.chart.data.datasets;
|
|
71
86
|
const dataLabels = this.chart.data.labels;
|
|
72
87
|
const annotations = this.getExistingChartAnnotations();
|
|
73
|
-
|
|
88
|
+
this.chartType = type;
|
|
89
|
+
const options = this.createOptionsObject({ customOptions, annotations });
|
|
74
90
|
const config = this.createConfigurationObject(type, datasets, options, dataLabels);
|
|
75
91
|
const canvasElement = this.chart.canvas;
|
|
76
92
|
this.chart.destroy();
|
|
@@ -78,8 +94,8 @@ export class ChartJSService {
|
|
|
78
94
|
}
|
|
79
95
|
nonDestructivelyUpdateType(chartType, customOptions) {
|
|
80
96
|
const annotations = this.getExistingChartAnnotations();
|
|
97
|
+
this.chartType = chartType;
|
|
81
98
|
const options = this.createOptionsObject({
|
|
82
|
-
type: chartType,
|
|
83
99
|
customOptions,
|
|
84
100
|
annotations,
|
|
85
101
|
});
|
|
@@ -119,21 +135,73 @@ export class ChartJSService {
|
|
|
119
135
|
});
|
|
120
136
|
return options;
|
|
121
137
|
}
|
|
138
|
+
createStockOptionsObject(dataLabelOptions) {
|
|
139
|
+
return {
|
|
140
|
+
locale: this.locale,
|
|
141
|
+
plugins: {
|
|
142
|
+
tooltip: {
|
|
143
|
+
callbacks: {
|
|
144
|
+
title: (tooltipItems) => {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
const date = toDate((_b = (_a = tooltipItems[0]) === null || _a === void 0 ? void 0 : _a.raw) === null || _b === void 0 ? void 0 : _b.x);
|
|
147
|
+
if (date.valueOf()) {
|
|
148
|
+
return date.toLocaleTimeString(this.locale, {
|
|
149
|
+
day: 'numeric',
|
|
150
|
+
month: 'short',
|
|
151
|
+
hour: '2-digit',
|
|
152
|
+
minute: '2-digit',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
label: (context) => {
|
|
157
|
+
// It's not possible to add spacing between color legend and text so we
|
|
158
|
+
// prefix with a space.
|
|
159
|
+
return ' ' + context.formattedValue + (dataLabelOptions.valueSuffix || '');
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
scales: {
|
|
165
|
+
y: {
|
|
166
|
+
ticks: {
|
|
167
|
+
callback: (value) => {
|
|
168
|
+
return value + (dataLabelOptions.valueSuffix || '');
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
122
175
|
createOptionsObject(args) {
|
|
123
|
-
const {
|
|
124
|
-
const typeConfig = this.chartConfigService.getTypeConfig(
|
|
176
|
+
const { customOptions, annotations, dataLabelOptions: chartDataLabelOptions } = args;
|
|
177
|
+
const typeConfig = this.chartConfigService.getTypeConfig(this.chartType);
|
|
125
178
|
const typeConfigOptions = typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.options;
|
|
126
179
|
const annotationPluginOptions = annotations
|
|
127
180
|
? this.createAnnotationPluginOptionsObject(annotations)
|
|
128
181
|
: {};
|
|
129
|
-
|
|
182
|
+
const stockOptions = this.chartType === 'stock' ? this.createStockOptionsObject(chartDataLabelOptions) : {};
|
|
183
|
+
let options = mergeDeepAll(stockOptions, typeConfigOptions, customOptions, annotationPluginOptions);
|
|
130
184
|
return this.applyInteractionFunctionsExtensions(options);
|
|
131
185
|
}
|
|
186
|
+
getDefaultStockLabels(datasets, locale) {
|
|
187
|
+
const largestDataset = datasets.reduce((previousDataset, currentDataset) => previousDataset.data.length > currentDataset.data.length ? previousDataset : currentDataset);
|
|
188
|
+
return largestDataset.data.map((point) => toDate(point.x).toLocaleDateString(locale, {
|
|
189
|
+
month: 'short',
|
|
190
|
+
day: 'numeric',
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
132
193
|
createConfigurationObject(type, datasets, options, dataLabels) {
|
|
133
|
-
/* chartJS requires labels; if none is provided create an empty string array
|
|
134
|
-
to make it optional for consumer */
|
|
135
|
-
const labels = !dataLabels ? this.createBlankLabels(datasets) : dataLabels;
|
|
136
194
|
const typeConfig = this.chartConfigService.getTypeConfig(type);
|
|
195
|
+
// chartJS requires labels; if none is provided create an empty string array
|
|
196
|
+
// to make it optional for consumer.
|
|
197
|
+
// However the stock chart, should have autogenerated labels if no
|
|
198
|
+
// custom labels are supplied.
|
|
199
|
+
const isStockType = type === 'stock';
|
|
200
|
+
const labels = !dataLabels
|
|
201
|
+
? isStockType
|
|
202
|
+
? this.getDefaultStockLabels(datasets, this.locale)
|
|
203
|
+
: this.createBlankLabels(datasets)
|
|
204
|
+
: dataLabels;
|
|
137
205
|
return mergeDeepAll(typeConfig, {
|
|
138
206
|
data: {
|
|
139
207
|
labels,
|
|
@@ -156,12 +224,62 @@ export class ChartJSService {
|
|
|
156
224
|
}
|
|
157
225
|
});
|
|
158
226
|
}
|
|
159
|
-
createDatasets(data
|
|
227
|
+
createDatasets(data) {
|
|
228
|
+
var _a, _b, _c;
|
|
229
|
+
// We need to modify the datasets in order to add datalabels.
|
|
230
|
+
if (((_a = this.dataLabelOptions) === null || _a === void 0 ? void 0 : _a.showCurrent) || ((_b = this.dataLabelOptions) === null || _b === void 0 ? void 0 : _b.showMax) || ((_c = this.dataLabelOptions) === null || _c === void 0 ? void 0 : _c.showMin)) {
|
|
231
|
+
data = this.addDataLabelsData(data);
|
|
232
|
+
}
|
|
160
233
|
let datasets = isNumberArray(data) ? [{ data }] : data;
|
|
161
|
-
if (highlightedElements)
|
|
162
|
-
this.addHighlightedElementsToDatasets(highlightedElements, datasets);
|
|
234
|
+
if (this.highlightedElements)
|
|
235
|
+
this.addHighlightedElementsToDatasets(this.highlightedElements, datasets);
|
|
163
236
|
return datasets;
|
|
164
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Decorate ChartDataset with properties to allow for datalabels.
|
|
240
|
+
*
|
|
241
|
+
* @param data
|
|
242
|
+
* @returns ChartDataset[]
|
|
243
|
+
*/
|
|
244
|
+
addDataLabelsData(data) {
|
|
245
|
+
if (isNumberArray(data)) {
|
|
246
|
+
throw Error("Currently it's impossible to add dataLabels to non ScatterDataPoint datasets");
|
|
247
|
+
}
|
|
248
|
+
const decorateDataPoint = (set, axis, direction, position) => {
|
|
249
|
+
const { value, pointer } = this.locateValueIndexInDataset(set, axis, direction);
|
|
250
|
+
set.data[pointer] = Object.assign(Object.assign({}, set.data[pointer]), { datalabel: {
|
|
251
|
+
value: value + (this.dataLabelOptions.valueSuffix || ''),
|
|
252
|
+
position,
|
|
253
|
+
} });
|
|
254
|
+
};
|
|
255
|
+
data.map((set) => {
|
|
256
|
+
if (this.dataLabelOptions.showMin) {
|
|
257
|
+
decorateDataPoint(set, 'y', 'low', 'bottom');
|
|
258
|
+
}
|
|
259
|
+
if (this.dataLabelOptions.showMax) {
|
|
260
|
+
decorateDataPoint(set, 'y', 'high', 'top');
|
|
261
|
+
}
|
|
262
|
+
if (this.dataLabelOptions.showCurrent) {
|
|
263
|
+
decorateDataPoint(set, 'x', 'high', 'right');
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
return data;
|
|
267
|
+
}
|
|
268
|
+
locateValueIndexInDataset(dataset, axis, direction) {
|
|
269
|
+
let pointer;
|
|
270
|
+
let value;
|
|
271
|
+
dataset.data.forEach((datapoint, index) => {
|
|
272
|
+
if (direction == 'low' && (!value || datapoint[axis] < value)) {
|
|
273
|
+
value = datapoint['y'];
|
|
274
|
+
pointer = index;
|
|
275
|
+
}
|
|
276
|
+
if (direction == 'high' && (!value || datapoint[axis] > value)) {
|
|
277
|
+
value = datapoint['y'];
|
|
278
|
+
pointer = index;
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
return { value, pointer };
|
|
282
|
+
}
|
|
165
283
|
}
|
|
166
284
|
ChartJSService.decorators = [
|
|
167
285
|
{ type: Injectable }
|
|
@@ -170,4 +288,4 @@ ChartJSService.decorators = [
|
|
|
170
288
|
ChartJSService.ctorParameters = () => [
|
|
171
289
|
{ type: ChartConfigService }
|
|
172
290
|
];
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBcUQsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzlDLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUV2RCxXQUFXLENBQUMsSUFRbEI7UUFDQyxNQUFNLEVBQ0osYUFBYSxFQUNiLElBQUksRUFDSixJQUFJLEVBQ0osVUFBVSxFQUNWLGFBQWEsRUFDYixXQUFXLEVBQ1gsbUJBQW1CLEdBQ3BCLEdBQUcsSUFBSSxDQUFDO1FBRVQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDL0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxF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RCxPQUFPO1NBQ1IsQ0FBdUIsQ0FBQztJQUMzQixDQUFDO0lBRU8sZ0NBQWdDLENBQ3RDLG1CQUE2QyxFQUM3QyxRQUF3QjtRQUV4QixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFOztZQUN4RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUVyQixVQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxZQUFZLDBDQUFFLG1CQUFtQixFQUFFO2dCQUM5QyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMxRDtpQkFBTTtnQkFDTCxPQUFPLENBQUMsWUFBWSxtQ0FDZixPQUFPLENBQUMsWUFBWSxLQUN2QixtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUNqQyxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDTyxjQUFjLENBQ3BCLElBQStCLEVBQy9CLG1CQUE4QztRQUU5QyxJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFdkQsSUFBSSxtQkFBbUI7WUFBRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFOUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7O1lBN05GLFVBQVU7Ozs7WUFKRixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmVFbGVtZW50LCBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0T3B0aW9ucyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IEFubm90YXRpb25PcHRpb25zIH0gZnJvbSAnY2hhcnRqcy1wbHVnaW4tYW5ub3RhdGlvbic7XG5cbmltcG9ydCB7IG1lcmdlRGVlcEFsbCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvbWVyZ2UtZGVlcCc7XG5pbXBvcnQgeyBDaGFydERhdGFzZXQsIENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cywgQ2hhcnRUeXBlLCBpc051bWJlckFycmF5IH0gZnJvbSAnLi4vY2hhcnQudHlwZXMnO1xuaW1wb3J0IHsgQ2hhcnRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlncy9jaGFydC1jb25maWcuc2VydmljZSc7XG5cbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnLi9jb25maWd1cmVkLWNoYXJ0LWpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFydENvbmZpZ1NlcnZpY2U6IENoYXJ0Q29uZmlnU2VydmljZSkge31cblxuICBwdWJsaWMgcmVuZGVyQ2hhcnQoYXJnczoge1xuICAgIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICAgIHR5cGU6IENoYXJ0VHlwZTtcbiAgICBkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdO1xuICAgIGRhdGFMYWJlbHM/OiBzdHJpbmdbXSB8IHN0cmluZ1tdW107XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50cz86IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIHRhcmdldEVsZW1lbnQsXG4gICAgICB0eXBlLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFMYWJlbHMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgICBoaWdobGlnaHRlZEVsZW1lbnRzLFxuICAgIH0gPSBhcmdzO1xuXG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEsIGhpZ2hsaWdodGVkRWxlbWVudHMpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNyZWF0ZU9wdGlvbnNPYmplY3QoeyB0eXBlLCBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucyB9KTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGRhdGFMYWJlbHMpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU5ld0NoYXJ0KHRhcmdldEVsZW1lbnQubmF0aXZlRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXdDaGFydCgpIHtcbiAgICB0aGlzLmNoYXJ0LnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhkYXRhKTtcbiAgICB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMgPSBkYXRhc2V0cztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEYXRhTGFiZWxzKGRhdGFMYWJlbHM6IHN0cmluZ1tdIHwgc3RyaW5nW11bXSkge1xuICAgIHRoaXMuY2hhcnQuZGF0YS5sYWJlbHMgPSBkYXRhTGFiZWxzO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVR5cGUodHlwZTogQ2hhcnRUeXBlLCBjdXN0b21PcHRpb25zPzogQ2hhcnRPcHRpb25zKSB7XG4gICAgaWYgKHR5cGUgPT09ICdiYXInIHx8IHR5cGUgPT09ICdjb2x1bW4nKSB7XG4gICAgICAvKiBpbmRleEF4aXMgZG9lcyBub3QgdXBkYXRlIHByZWRpY3RhYmx5OyB1cGRhdGUgYnkgcmVwbGFjaW5nIFxuICAgICAgICAgdGhlIGNoYXJ0IGVudGlyZWx5IGluc3RlYWQgKi9cbiAgICAgIHRoaXMuZGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUodHlwZSwgY3VzdG9tT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm9uRGVzdHJ1Y3RpdmVseVVwZGF0ZVR5cGUodHlwZSwgY3VzdG9tT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZU9wdGlvbnMoY3VzdG9tT3B0aW9uczogQ2hhcnRPcHRpb25zLCB0eXBlOiBDaGFydFR5cGUpIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG4gICAgdGhpcy5jaGFydC5vcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgdHlwZSwgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVIaWdobGlnaHRlZEVsZW1lbnRzKGhpZ2hsaWdodGVkRWxlbWVudHM/OiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICBjb25zdCBvbGREYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcblxuICAgIC8vIENsZWFyIG9sZCBkYXRhc2V0cyBvZiBoaWdobGlnaHRlZCBlbGVtZW50c1xuICAgIG9sZERhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkZWxldGUgZGF0YXNldC5raXJieU9wdGlvbnMuaGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyA9IHRoaXMuY3JlYXRlRGF0YXNldHMob2xkRGF0YXNldHMsIGhpZ2hsaWdodGVkRWxlbWVudHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTogQW5ub3RhdGlvbk9wdGlvbnNbXSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbnMgPSB0aGlzLmNoYXJ0Lm9wdGlvbnMucGx1Z2lucz8uYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7XG4gICAgLyogSW4gYnJvd3NlciBjaGFydC5qcyBtaWdodCByZXR1cm4gYW5ub3RhdGlvbnMgYXMgYSBQcm94eSBvYmplY3Q7IGZvcmNlIGl0IHRvIGJlIGFuIGFycmF5LlxuICAgICAgIEVhY2ggYW5ub3RhdGlvbk9wdGlvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5ICB3aWxsIGFsc28gYmUgYSBQcm94eSBvYmplY3QuIFxuICAgICAgIEJ1dCBpbnRlcm5hbGx5IGNoYXJ0LmpzIHdpbGwganVzdCB3b3JrIHdpdGggdGhlbSBhcyBub3JtYWwgdmFsdWVzICovXG4gICAgaWYgKGFubm90YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhhbm5vdGF0aW9ucykubWFwKChrZXkpID0+IGFubm90YXRpb25zW2tleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZSh0eXBlOiBDaGFydFR5cGUsIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cyBhcyBDaGFydERhdGFzZXRbXTtcbiAgICBjb25zdCBkYXRhTGFiZWxzID0gdGhpcy5jaGFydC5kYXRhLmxhYmVscztcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuZ2V0RXhpc3RpbmdDaGFydEFubm90YXRpb25zKCk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgdHlwZSwgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBkYXRhTGFiZWxzKTtcbiAgICBjb25zdCBjYW52YXNFbGVtZW50ID0gdGhpcy5jaGFydC5jYW52YXM7XG5cbiAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB0aGlzLmluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZShjaGFydFR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHtcbiAgICAgIHR5cGU6IGNoYXJ0VHlwZSxcbiAgICAgIGN1c3RvbU9wdGlvbnMsXG4gICAgICBhbm5vdGF0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5jaGFydC5jb25maWcudHlwZSA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmNoYXJ0VHlwZVRvQ2hhcnRKU1R5cGUoY2hhcnRUeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU5ld0NoYXJ0KGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50LCBjb25maWc6IENoYXJ0Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQmxhbmtMYWJlbHMoZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhcmdlc3REYXRhc2V0ID0gZGF0YXNldHMucmVkdWNlKChwcmV2aW91c0RhdGFzZXQsIGN1cnJlbnREYXRhc2V0KSA9PlxuICAgICAgcHJldmlvdXNEYXRhc2V0LmRhdGEubGVuZ3RoID4gY3VycmVudERhdGFzZXQuZGF0YS5sZW5ndGggPyBwcmV2aW91c0RhdGFzZXQgOiBjdXJyZW50RGF0YXNldFxuICAgICk7XG4gICAgcmV0dXJuIEFycmF5KGxhcmdlc3REYXRhc2V0LmRhdGEubGVuZ3RoKS5maWxsKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICByZXR1cm4gYW5ub3RhdGlvbnMubWFwKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uVHlwZURlZmF1bHRzID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0QW5ub3RhdGlvbkRlZmF1bHRzKGFubm90YXRpb24udHlwZSk7XG4gICAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKGFubm90YXRpb25UeXBlRGVmYXVsdHMsIGFubm90YXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9uczogQW5ub3RhdGlvbk9wdGlvbnNbXSkge1xuICAgIGNvbnN0IGFubm90YXRpb25zV2l0aERlZmF1bHRzID0gdGhpcy5hcHBseURlZmF1bHRzVG9Bbm5vdGF0aW9ucyhhbm5vdGF0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgYW5ub3RhdGlvbjoge1xuICAgICAgICAgIGFubm90YXRpb25zOiBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9uczogQ2hhcnRPcHRpb25zKTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCBpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMoKTtcbiAgICBPYmplY3QuZW50cmllcyhpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMpLmZvckVhY2goKFtrZXksIF9dKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IG9wdGlvbnNba2V5XTtcbiAgICAgIG9wdGlvbnNba2V5XSA9IChlOiBFdmVudCwgYTogQWN0aXZlRWxlbWVudFtdLCBjOiBDaGFydCkgPT4ge1xuICAgICAgICBpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnNba2V5XShlLCBhLCBjLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zT2JqZWN0KGFyZ3M6IHtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gIH0pOiBDaGFydE9wdGlvbnMge1xuICAgIGNvbnN0IHsgdHlwZSwgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSA9IGFyZ3M7XG5cbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0eXBlKTtcbiAgICBjb25zdCB0eXBlQ29uZmlnT3B0aW9ucyA9IHR5cGVDb25maWc/Lm9wdGlvbnM7XG4gICAgY29uc3QgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnMgPSBhbm5vdGF0aW9uc1xuICAgICAgPyB0aGlzLmNyZWF0ZUFubm90YXRpb25QbHVnaW5PcHRpb25zT2JqZWN0KGFubm90YXRpb25zKVxuICAgICAgOiB7fTtcbiAgICBsZXQgb3B0aW9uczogQ2hhcnRPcHRpb25zID0gbWVyZ2VEZWVwQWxsKFxuICAgICAgdHlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvblBsdWdpbk9wdGlvbnNcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KFxuICAgIHR5cGU6IENoYXJ0VHlwZSxcbiAgICBkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sXG4gICAgb3B0aW9uczogQ2hhcnRPcHRpb25zLFxuICAgIGRhdGFMYWJlbHM/OiB1bmtub3duW11cbiAgKTogQ2hhcnRDb25maWd1cmF0aW9uIHtcbiAgICAvKiBjaGFydEpTIHJlcXVpcmVzIGxhYmVsczsgaWYgbm9uZSBpcyBwcm92aWRlZCBjcmVhdGUgYW4gZW1wdHkgc3RyaW5nIGFycmF5XG4gICAgdG8gbWFrZSBpdCBvcHRpb25hbCBmb3IgY29uc3VtZXIgKi9cbiAgICBjb25zdCBsYWJlbHMgPSAhZGF0YUxhYmVscyA/IHRoaXMuY3JlYXRlQmxhbmtMYWJlbHMoZGF0YXNldHMpIDogZGF0YUxhYmVscztcbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0eXBlKTtcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwodHlwZUNvbmZpZywge1xuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbHMsXG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfSkgYXMgQ2hhcnRDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIaWdobGlnaHRlZEVsZW1lbnRzVG9EYXRhc2V0cyhcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdXG4gICkge1xuICAgIGhpZ2hsaWdodGVkRWxlbWVudHMuZm9yRWFjaCgoW2RhdGFzZXRJbmRleCwgZGF0YUluZGV4XSkgPT4ge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJbmRleF07XG4gICAgICBpZiAoIWRhdGFzZXQpIHJldHVybjtcblxuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzLnB1c2goZGF0YUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHM6IFtkYXRhSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlRGF0YXNldHMoXG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSxcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzPzogQ2hhcnRIaWdobGlnaHRlZEVsZW1lbnRzXG4gICk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBsZXQgZGF0YXNldHMgPSBpc051bWJlckFycmF5KGRhdGEpID8gW3sgZGF0YSB9XSA6IGRhdGE7XG5cbiAgICBpZiAoaGlnaGxpZ2h0ZWRFbGVtZW50cykgdGhpcy5hZGRIaWdobGlnaHRlZEVsZW1lbnRzVG9EYXRhc2V0cyhoaWdobGlnaHRlZEVsZW1lbnRzLCBkYXRhc2V0cyk7XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbn1cbiJdfQ==
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtanMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jaGFydC1qcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQU1MLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztBQUdyQyxNQUFNLE9BQU8sY0FBYztJQU96QixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFdkQsV0FBVyxDQUFDLElBU2xCO1FBQ0MsTUFBTSxFQUNKLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSxFQUNKLFVBQVUsRUFDVixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixtQkFBbUIsR0FDcEIsR0FBRyxJQUFJLENBQUM7UUFFVCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixD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ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZUVsZW1lbnQsIENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRPcHRpb25zLCBTY2F0dGVyRGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk9wdGlvbnMgfSBmcm9tICdjaGFydGpzLXBsdWdpbi1hbm5vdGF0aW9uJztcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgbWVyZ2VEZWVwQWxsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9tZXJnZS1kZWVwJztcbmltcG9ydCB7XG4gIENoYXJ0RGF0YUxhYmVsT3B0aW9ucyxcbiAgQ2hhcnREYXRhc2V0LFxuICBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gIENoYXJ0TG9jYWxlLFxuICBDaGFydFR5cGUsXG4gIGlzTnVtYmVyQXJyYXksXG59IGZyb20gJy4uL2NoYXJ0LnR5cGVzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZ3MvY2hhcnQtY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY29uZmlndXJlZC1jaGFydC1qcyc7XG5cbmNvbnN0IENIQVJUX0xPQ0FMRV9ERUZBVUxUID0gJ2VuLVVTJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoYXJ0SlNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zO1xuICBwcml2YXRlIGhpZ2hsaWdodGVkRWxlbWVudHM6IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgcHJpdmF0ZSBjaGFydFR5cGU6IENoYXJ0VHlwZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IENoYXJ0TG9jYWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhcnRDb25maWdTZXJ2aWNlOiBDaGFydENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgcHVibGljIHJlbmRlckNoYXJ0KGFyZ3M6IHtcbiAgICB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICB0eXBlOiBDaGFydFR5cGU7XG4gICAgZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXTtcbiAgICBkYXRhTGFiZWxzPzogc3RyaW5nW10gfCBzdHJpbmdbXVtdO1xuICAgIGN1c3RvbU9wdGlvbnM/OiBDaGFydE9wdGlvbnM7XG4gICAgYW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uT3B0aW9uc1tdO1xuICAgIGRhdGFMYWJlbE9wdGlvbnM/OiBDaGFydERhdGFMYWJlbE9wdGlvbnM7XG4gICAgaGlnaGxpZ2h0ZWRFbGVtZW50cz86IENoYXJ0SGlnaGxpZ2h0ZWRFbGVtZW50cztcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIHRhcmdldEVsZW1lbnQsXG4gICAgICB0eXBlLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFMYWJlbHMsXG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgICBkYXRhTGFiZWxPcHRpb25zLFxuICAgICAgaGlnaGxpZ2h0ZWRFbGVtZW50cyxcbiAgICB9ID0gYXJncztcblxuICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyA9IGRhdGFMYWJlbE9wdGlvbnMgfHwgbnVsbDtcbiAgICB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMgPSBoaWdobGlnaHRlZEVsZW1lbnRzIHx8IG51bGw7XG4gICAgdGhpcy5jaGFydFR5cGUgPSB0eXBlO1xuICAgIHRoaXMubG9jYWxlID0gZGF0YUxhYmVsT3B0aW9ucz8ubG9jYWxlIHx8IENIQVJUX0xPQ0FMRV9ERUZBVUxUO1xuXG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY3JlYXRlT3B0aW9uc09iamVjdCh7XG4gICAgICBjdXN0b21PcHRpb25zLFxuICAgICAgYW5ub3RhdGlvbnMsXG4gICAgICBkYXRhTGFiZWxPcHRpb25zLFxuICAgIH0pO1xuICAgIGxldCBjb25maWcgPSB0aGlzLmNyZWF0ZUNvbmZpZ3VyYXRpb25PYmplY3QodHlwZSwgZGF0YXNldHMsIG9wdGlvbnMsIGRhdGFMYWJlbHMpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTmV3Q2hhcnQodGFyZ2V0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhd0NoYXJ0KCkge1xuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShkYXRhOiBDaGFydERhdGFzZXRbXSB8IG51bWJlcltdKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0aGlzLmNyZWF0ZURhdGFzZXRzKGRhdGEpO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gZGF0YXNldHM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YUxhYmVscyhkYXRhTGFiZWxzOiBzdHJpbmdbXSB8IHN0cmluZ1tdW10pIHtcbiAgICB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzID0gZGF0YUxhYmVscztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGlmICh0eXBlID09PSAnYmFyJyB8fCB0eXBlID09PSAnY29sdW1uJykge1xuICAgICAgLyogaW5kZXhBeGlzIGRvZXMgbm90IHVwZGF0ZSBwcmVkaWN0YWJseTsgdXBkYXRlIGJ5IHJlcGxhY2luZyBcbiAgICAgICAgIHRoZSBjaGFydCBlbnRpcmVseSBpbnN0ZWFkICovXG4gICAgICB0aGlzLmRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vbkRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGUsIGN1c3RvbU9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRhTGFiZWxPcHRpb25zKGRhdGFMYWJlbE9wdGlvbnM6IENoYXJ0RGF0YUxhYmVsT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YUxhYmVsT3B0aW9ucyA9IGRhdGFMYWJlbE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlT3B0aW9ucyhjdXN0b21PcHRpb25zOiBDaGFydE9wdGlvbnMsIHR5cGU6IENoYXJ0VHlwZSkge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcbiAgICB0aGlzLmNoYXJ0VHlwZSA9IHR5cGU7XG4gICAgdGhpcy5jaGFydC5vcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICBjb25zdCBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyA9IHRoaXMuYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnMpO1xuICAgIHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVIaWdobGlnaHRlZEVsZW1lbnRzKGhpZ2hsaWdodGVkRWxlbWVudHM/OiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMpIHtcbiAgICB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHMgPSBoaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgIGNvbnN0IG9sZERhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuXG4gICAgLy8gQ2xlYXIgb2xkIGRhdGFzZXRzIG9mIGhpZ2hsaWdodGVkIGVsZW1lbnRzXG4gICAgb2xkRGF0YXNldHMubWFwKChkYXRhc2V0KSA9PiB7XG4gICAgICBpZiAoZGF0YXNldD8ua2lyYnlPcHRpb25zPy5oaWdobGlnaHRlZEVsZW1lbnRzKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzID0gdGhpcy5jcmVhdGVEYXRhc2V0cyhvbGREYXRhc2V0cyk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0aW5nQ2hhcnRBbm5vdGF0aW9ucygpOiBBbm5vdGF0aW9uT3B0aW9uc1tdIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IHRoaXMuY2hhcnQub3B0aW9ucy5wbHVnaW5zPy5hbm5vdGF0aW9uPy5hbm5vdGF0aW9ucztcbiAgICAvKiBJbiBicm93c2VyIGNoYXJ0LmpzIG1pZ2h0IHJldHVybiBhbm5vdGF0aW9ucyBhcyBhIFByb3h5IG9iamVjdDsgZm9yY2UgaXQgdG8gYmUgYW4gYXJyYXkuXG4gICAgICAgRWFjaCBhbm5vdGF0aW9uT3B0aW9uIGluIHRoZSByZXN1bHRpbmcgYXJyYXkgIHdpbGwgYWxzbyBiZSBhIFByb3h5IG9iamVjdC4gXG4gICAgICAgQnV0IGludGVybmFsbHkgY2hhcnQuanMgd2lsbCBqdXN0IHdvcmsgd2l0aCB0aGVtIGFzIG5vcm1hbCB2YWx1ZXMgKi9cbiAgICBpZiAoYW5ub3RhdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGFubm90YXRpb25zKS5tYXAoKGtleSkgPT4gYW5ub3RhdGlvbnNba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3RydWN0aXZlbHlVcGRhdGVUeXBlKHR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGNvbnN0IGRhdGFzZXRzID0gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzIGFzIENoYXJ0RGF0YXNldFtdO1xuICAgIGNvbnN0IGRhdGFMYWJlbHMgPSB0aGlzLmNoYXJ0LmRhdGEubGFiZWxzO1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcblxuICAgIHRoaXMuY2hhcnRUeXBlID0gdHlwZTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHsgY3VzdG9tT3B0aW9ucywgYW5ub3RhdGlvbnMgfSk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KHR5cGUsIGRhdGFzZXRzLCBvcHRpb25zLCBkYXRhTGFiZWxzKTtcbiAgICBjb25zdCBjYW52YXNFbGVtZW50ID0gdGhpcy5jaGFydC5jYW52YXM7XG5cbiAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB0aGlzLmluaXRpYWxpemVOZXdDaGFydChjYW52YXNFbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBub25EZXN0cnVjdGl2ZWx5VXBkYXRlVHlwZShjaGFydFR5cGU6IENoYXJ0VHlwZSwgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucykge1xuICAgIGNvbnN0IGFubm90YXRpb25zID0gdGhpcy5nZXRFeGlzdGluZ0NoYXJ0QW5ub3RhdGlvbnMoKTtcbiAgICB0aGlzLmNoYXJ0VHlwZSA9IGNoYXJ0VHlwZTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jcmVhdGVPcHRpb25zT2JqZWN0KHtcbiAgICAgIGN1c3RvbU9wdGlvbnMsXG4gICAgICBhbm5vdGF0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5jaGFydC5jb25maWcudHlwZSA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmNoYXJ0VHlwZVRvQ2hhcnRKU1R5cGUoY2hhcnRUeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU5ld0NoYXJ0KGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50LCBjb25maWc6IENoYXJ0Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoY2FudmFzRWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQmxhbmtMYWJlbHMoZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhcmdlc3REYXRhc2V0ID0gZGF0YXNldHMucmVkdWNlKChwcmV2aW91c0RhdGFzZXQsIGN1cnJlbnREYXRhc2V0KSA9PlxuICAgICAgcHJldmlvdXNEYXRhc2V0LmRhdGEubGVuZ3RoID4gY3VycmVudERhdGFzZXQuZGF0YS5sZW5ndGggPyBwcmV2aW91c0RhdGFzZXQgOiBjdXJyZW50RGF0YXNldFxuICAgICk7XG4gICAgcmV0dXJuIEFycmF5KGxhcmdlc3REYXRhc2V0LmRhdGEubGVuZ3RoKS5maWxsKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0c1RvQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IEFubm90YXRpb25PcHRpb25zW10pIHtcbiAgICByZXR1cm4gYW5ub3RhdGlvbnMubWFwKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhbm5vdGF0aW9uVHlwZURlZmF1bHRzID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0QW5ub3RhdGlvbkRlZmF1bHRzKGFubm90YXRpb24udHlwZSk7XG4gICAgICByZXR1cm4gbWVyZ2VEZWVwQWxsKGFubm90YXRpb25UeXBlRGVmYXVsdHMsIGFubm90YXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbm5vdGF0aW9uUGx1Z2luT3B0aW9uc09iamVjdChhbm5vdGF0aW9uczogQW5ub3RhdGlvbk9wdGlvbnNbXSkge1xuICAgIGNvbnN0IGFubm90YXRpb25zV2l0aERlZmF1bHRzID0gdGhpcy5hcHBseURlZmF1bHRzVG9Bbm5vdGF0aW9ucyhhbm5vdGF0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgYW5ub3RhdGlvbjoge1xuICAgICAgICAgIGFubm90YXRpb25zOiBhbm5vdGF0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMob3B0aW9uczogQ2hhcnRPcHRpb25zKTogQ2hhcnRPcHRpb25zIHtcbiAgICBjb25zdCBpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMgPSB0aGlzLmNoYXJ0Q29uZmlnU2VydmljZS5nZXRJbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMoKTtcbiAgICBPYmplY3QuZW50cmllcyhpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnMpLmZvckVhY2goKFtrZXksIF9dKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IG9wdGlvbnNba2V5XTtcbiAgICAgIG9wdGlvbnNba2V5XSA9IChlOiBFdmVudCwgYTogQWN0aXZlRWxlbWVudFtdLCBjOiBDaGFydCkgPT4ge1xuICAgICAgICBpbnRlcmFjdGlvbkZ1bmN0aW9uc0V4dGVuc2lvbnNba2V5XShlLCBhLCBjLCBjYWxsYmFjayk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdG9ja09wdGlvbnNPYmplY3QoZGF0YUxhYmVsT3B0aW9uczogQ2hhcnREYXRhTGFiZWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICAgIHRpdGxlOiAodG9vbHRpcEl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0b0RhdGUoKHRvb2x0aXBJdGVtc1swXT8ucmF3IGFzIGFueSk/LngpO1xuICAgICAgICAgICAgICBpZiAoZGF0ZS52YWx1ZU9mKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHtcbiAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBhZGQgc3BhY2luZyBiZXR3ZWVuIGNvbG9yIGxlZ2VuZCBhbmQgdGV4dCBzbyB3ZVxuICAgICAgICAgICAgICAvLyBwcmVmaXggd2l0aCBhIHNwYWNlLlxuICAgICAgICAgICAgICByZXR1cm4gJyAnICsgY29udGV4dC5mb3JtYXR0ZWRWYWx1ZSArIChkYXRhTGFiZWxPcHRpb25zLnZhbHVlU3VmZml4IHx8ICcnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzY2FsZXM6IHtcbiAgICAgICAgeToge1xuICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSArIChkYXRhTGFiZWxPcHRpb25zLnZhbHVlU3VmZml4IHx8ICcnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3B0aW9uc09iamVjdChhcmdzOiB7XG4gICAgY3VzdG9tT3B0aW9ucz86IENoYXJ0T3B0aW9ucztcbiAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25PcHRpb25zW107XG4gICAgZGF0YUxhYmVsT3B0aW9ucz86IENoYXJ0RGF0YUxhYmVsT3B0aW9ucztcbiAgfSk6IENoYXJ0T3B0aW9ucyB7XG4gICAgY29uc3QgeyBjdXN0b21PcHRpb25zLCBhbm5vdGF0aW9ucywgZGF0YUxhYmVsT3B0aW9uczogY2hhcnREYXRhTGFiZWxPcHRpb25zIH0gPSBhcmdzO1xuXG4gICAgY29uc3QgdHlwZUNvbmZpZyA9IHRoaXMuY2hhcnRDb25maWdTZXJ2aWNlLmdldFR5cGVDb25maWcodGhpcy5jaGFydFR5cGUpO1xuICAgIGNvbnN0IHR5cGVDb25maWdPcHRpb25zID0gdHlwZUNvbmZpZz8ub3B0aW9ucztcbiAgICBjb25zdCBhbm5vdGF0aW9uUGx1Z2luT3B0aW9ucyA9IGFubm90YXRpb25zXG4gICAgICA/IHRoaXMuY3JlYXRlQW5ub3RhdGlvblBsdWdpbk9wdGlvbnNPYmplY3QoYW5ub3RhdGlvbnMpXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IHN0b2NrT3B0aW9uczogQ2hhcnRPcHRpb25zID1cbiAgICAgIHRoaXMuY2hhcnRUeXBlID09PSAnc3RvY2snID8gdGhpcy5jcmVhdGVTdG9ja09wdGlvbnNPYmplY3QoY2hhcnREYXRhTGFiZWxPcHRpb25zKSA6IHt9O1xuXG4gICAgbGV0IG9wdGlvbnM6IENoYXJ0T3B0aW9ucyA9IG1lcmdlRGVlcEFsbChcbiAgICAgIHN0b2NrT3B0aW9ucyxcbiAgICAgIHR5cGVDb25maWdPcHRpb25zLFxuICAgICAgY3VzdG9tT3B0aW9ucyxcbiAgICAgIGFubm90YXRpb25QbHVnaW5PcHRpb25zXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmFwcGx5SW50ZXJhY3Rpb25GdW5jdGlvbnNFeHRlbnNpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0U3RvY2tMYWJlbHMoZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdLCBsb2NhbGU6IENoYXJ0TG9jYWxlKSB7XG4gICAgY29uc3QgbGFyZ2VzdERhdGFzZXQgPSBkYXRhc2V0cy5yZWR1Y2UoKHByZXZpb3VzRGF0YXNldCwgY3VycmVudERhdGFzZXQpID0+XG4gICAgICBwcmV2aW91c0RhdGFzZXQuZGF0YS5sZW5ndGggPiBjdXJyZW50RGF0YXNldC5kYXRhLmxlbmd0aCA/IHByZXZpb3VzRGF0YXNldCA6IGN1cnJlbnREYXRhc2V0XG4gICAgKTtcbiAgICByZXR1cm4gbGFyZ2VzdERhdGFzZXQuZGF0YS5tYXAoKHBvaW50OiBTY2F0dGVyRGF0YVBvaW50KSA9PlxuICAgICAgdG9EYXRlKHBvaW50LngpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmF0aW9uT2JqZWN0KFxuICAgIHR5cGU6IENoYXJ0VHlwZSxcbiAgICBkYXRhc2V0czogQ2hhcnREYXRhc2V0W10sXG4gICAgb3B0aW9uczogQ2hhcnRPcHRpb25zLFxuICAgIGRhdGFMYWJlbHM/OiB1bmtub3duW11cbiAgKTogQ2hhcnRDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCB0eXBlQ29uZmlnID0gdGhpcy5jaGFydENvbmZpZ1NlcnZpY2UuZ2V0VHlwZUNvbmZpZyh0eXBlKTtcblxuICAgIC8vIGNoYXJ0SlMgcmVxdWlyZXMgbGFiZWxzOyBpZiBub25lIGlzIHByb3ZpZGVkIGNyZWF0ZSBhbiBlbXB0eSBzdHJpbmcgYXJyYXlcbiAgICAvLyB0byBtYWtlIGl0IG9wdGlvbmFsIGZvciBjb25zdW1lci5cbiAgICAvLyBIb3dldmVyIHRoZSBzdG9jayBjaGFydCwgc2hvdWxkIGhhdmUgYXV0b2dlbmVyYXRlZCBsYWJlbHMgaWYgbm9cbiAgICAvLyBjdXN0b20gbGFiZWxzIGFyZSBzdXBwbGllZC5cbiAgICBjb25zdCBpc1N0b2NrVHlwZSA9IHR5cGUgPT09ICdzdG9jayc7XG4gICAgY29uc3QgbGFiZWxzID0gIWRhdGFMYWJlbHNcbiAgICAgID8gaXNTdG9ja1R5cGVcbiAgICAgICAgPyB0aGlzLmdldERlZmF1bHRTdG9ja0xhYmVscyhkYXRhc2V0cywgdGhpcy5sb2NhbGUpXG4gICAgICAgIDogdGhpcy5jcmVhdGVCbGFua0xhYmVscyhkYXRhc2V0cylcbiAgICAgIDogZGF0YUxhYmVscztcblxuICAgIHJldHVybiBtZXJnZURlZXBBbGwodHlwZUNvbmZpZywge1xuICAgICAgZGF0YToge1xuICAgICAgICBsYWJlbHMsXG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfSkgYXMgQ2hhcnRDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIaWdobGlnaHRlZEVsZW1lbnRzVG9EYXRhc2V0cyhcbiAgICBoaWdobGlnaHRlZEVsZW1lbnRzOiBDaGFydEhpZ2hsaWdodGVkRWxlbWVudHMsXG4gICAgZGF0YXNldHM6IENoYXJ0RGF0YXNldFtdXG4gICkge1xuICAgIGhpZ2hsaWdodGVkRWxlbWVudHMuZm9yRWFjaCgoW2RhdGFzZXRJbmRleCwgZGF0YUluZGV4XSkgPT4ge1xuICAgICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJbmRleF07XG4gICAgICBpZiAoIWRhdGFzZXQpIHJldHVybjtcblxuICAgICAgaWYgKGRhdGFzZXQ/LmtpcmJ5T3B0aW9ucz8uaGlnaGxpZ2h0ZWRFbGVtZW50cykge1xuICAgICAgICBkYXRhc2V0LmtpcmJ5T3B0aW9ucy5oaWdobGlnaHRlZEVsZW1lbnRzLnB1c2goZGF0YUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFzZXQua2lyYnlPcHRpb25zID0ge1xuICAgICAgICAgIC4uLmRhdGFzZXQua2lyYnlPcHRpb25zLFxuICAgICAgICAgIGhpZ2hsaWdodGVkRWxlbWVudHM6IFtkYXRhSW5kZXhdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlRGF0YXNldHMoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICAvLyBXZSBuZWVkIHRvIG1vZGlmeSB0aGUgZGF0YXNldHMgaW4gb3JkZXIgdG8gYWRkIGRhdGFsYWJlbHMuXG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93Q3VycmVudCB8fFxuICAgICAgdGhpcy5kYXRhTGFiZWxPcHRpb25zPy5zaG93TWF4IHx8XG4gICAgICB0aGlzLmRhdGFMYWJlbE9wdGlvbnM/LnNob3dNaW5cbiAgICApIHtcbiAgICAgIGRhdGEgPSB0aGlzLmFkZERhdGFMYWJlbHNEYXRhKGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGF0YXNldHMgPSBpc051bWJlckFycmF5KGRhdGEpID8gW3sgZGF0YSB9XSA6IGRhdGE7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRFbGVtZW50cylcbiAgICAgIHRoaXMuYWRkSGlnaGxpZ2h0ZWRFbGVtZW50c1RvRGF0YXNldHModGhpcy5oaWdobGlnaHRlZEVsZW1lbnRzLCBkYXRhc2V0cyk7XG5cbiAgICByZXR1cm4gZGF0YXNldHM7XG4gIH1cbiAgLyoqXG4gICAqIERlY29yYXRlIENoYXJ0RGF0YXNldCB3aXRoIHByb3BlcnRpZXMgdG8gYWxsb3cgZm9yIGRhdGFsYWJlbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIENoYXJ0RGF0YXNldFtdXG4gICAqL1xuICBwdWJsaWMgYWRkRGF0YUxhYmVsc0RhdGEoZGF0YTogQ2hhcnREYXRhc2V0W10gfCBudW1iZXJbXSk6IENoYXJ0RGF0YXNldFtdIHtcbiAgICBpZiAoaXNOdW1iZXJBcnJheShkYXRhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJDdXJyZW50bHkgaXQncyBpbXBvc3NpYmxlIHRvIGFkZCBkYXRhTGFiZWxzIHRvIG5vbiBTY2F0dGVyRGF0YVBvaW50IGRhdGFzZXRzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRlRGF0YVBvaW50ID0gKFxuICAgICAgc2V0OiBDaGFydERhdGFzZXQsXG4gICAgICBheGlzOiAneCcgfCAneScsXG4gICAgICBkaXJlY3Rpb246ICdoaWdoJyB8ICdsb3cnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBwb2ludGVyIH0gPSB0aGlzLmxvY2F0ZVZhbHVlSW5kZXhJbkRhdGFzZXQoc2V0LCBheGlzLCBkaXJlY3Rpb24pO1xuICAgICAgc2V0LmRhdGFbcG9pbnRlcl0gPSB7XG4gICAgICAgIC4uLihzZXQuZGF0YVtwb2ludGVyXSBhcyBTY2F0dGVyRGF0YVBvaW50KSxcbiAgICAgICAgZGF0YWxhYmVsOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlICsgKHRoaXMuZGF0YUxhYmVsT3B0aW9ucy52YWx1ZVN1ZmZpeCB8fCAnJyksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFNjYXR0ZXJEYXRhUG9pbnQ7XG4gICAgfTtcblxuICAgIGRhdGEubWFwKChzZXQpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01pbikge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2xvdycsICdib3R0b20nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFMYWJlbE9wdGlvbnMuc2hvd01heCkge1xuICAgICAgICBkZWNvcmF0ZURhdGFQb2ludChzZXQsICd5JywgJ2hpZ2gnLCAndG9wJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhTGFiZWxPcHRpb25zLnNob3dDdXJyZW50KSB7XG4gICAgICAgIGRlY29yYXRlRGF0YVBvaW50KHNldCwgJ3gnLCAnaGlnaCcsICdyaWdodCcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhdGVWYWx1ZUluZGV4SW5EYXRhc2V0KFxuICAgIGRhdGFzZXQ6IENoYXJ0RGF0YXNldCxcbiAgICBheGlzOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiAnbG93JyB8ICdoaWdoJ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHBvaW50ZXI6IG51bWJlciB9IHtcbiAgICBsZXQgcG9pbnRlcjogbnVtYmVyO1xuICAgIGxldCB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKChkYXRhcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aW9uID09ICdsb3cnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdIDwgdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChkaXJlY3Rpb24gPT0gJ2hpZ2gnICYmICghdmFsdWUgfHwgZGF0YXBvaW50W2F4aXNdID4gdmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gZGF0YXBvaW50Wyd5J107XG4gICAgICAgIHBvaW50ZXIgPSBpbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyB2YWx1ZSwgcG9pbnRlciB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"ChartJSService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ChartJSService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../configs/chart-config.service","name":"ChartConfigService","line":28,"character":42}]}],"renderChart":[{"__symbolic":"method"}],"redrawChart":[{"__symbolic":"method"}],"updateData":[{"__symbolic":"method"}],"updateDataLabels":[{"__symbolic":"method"}],"updateType":[{"__symbolic":"method"}],"setDataLabelOptions":[{"__symbolic":"method"}],"updateOptions":[{"__symbolic":"method"}],"updateAnnotations":[{"__symbolic":"method"}],"updateHighlightedElements":[{"__symbolic":"method"}],"getExistingChartAnnotations":[{"__symbolic":"method"}],"destructivelyUpdateType":[{"__symbolic":"method"}],"nonDestructivelyUpdateType":[{"__symbolic":"method"}],"initializeNewChart":[{"__symbolic":"method"}],"createBlankLabels":[{"__symbolic":"method"}],"applyDefaultsToAnnotations":[{"__symbolic":"method"}],"createAnnotationPluginOptionsObject":[{"__symbolic":"method"}],"applyInteractionFunctionsExtensions":[{"__symbolic":"method"}],"createStockOptionsObject":[{"__symbolic":"method"}],"createOptionsObject":[{"__symbolic":"method"}],"getDefaultStockLabels":[{"__symbolic":"method"}],"createConfigurationObject":[{"__symbolic":"method"}],"addHighlightedElementsToDatasets":[{"__symbolic":"method"}],"createDatasets":[{"__symbolic":"method"}],"addDataLabelsData":[{"__symbolic":"method"}],"locateValueIndexInDataset":[{"__symbolic":"method"}]}}}}]
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// The marker pluin was heavily inspired by https://chartjs-plugin-crosshair.netlify.app
|
|
2
|
+
// This project apears stale, so the feature with the vertical line, which was the only
|
|
3
|
+
// part of the plugin which actually was needed, was implemented here instead.
|
|
4
|
+
import { valueOrDefault } from 'chart.js/helpers';
|
|
5
|
+
var defaultOptions = {
|
|
6
|
+
line: {
|
|
7
|
+
color: 'black',
|
|
8
|
+
width: 1,
|
|
9
|
+
dashPattern: [],
|
|
10
|
+
},
|
|
11
|
+
snap: {
|
|
12
|
+
enabled: false,
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
const hasMarkerConfiguration = (chart) => {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
// using another plugins options is not ideal, so the issue with marker plugin
|
|
18
|
+
// should be resolved. As of right now the only chart that uses
|
|
19
|
+
// tooltip is stock charts.
|
|
20
|
+
return chart.config.options.scales.x && ((_c = (_b = (_a = chart.config.options) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.tooltip) === null || _c === void 0 ? void 0 : _c.enabled);
|
|
21
|
+
// @todo when resolving the typings issue with the markerplugin,
|
|
22
|
+
// this is a better conditional.
|
|
23
|
+
// return chart.config.options.scales.x && chart.config.options.plugins.marker
|
|
24
|
+
};
|
|
25
|
+
const ɵ0 = hasMarkerConfiguration;
|
|
26
|
+
export default {
|
|
27
|
+
id: 'marker',
|
|
28
|
+
afterInit: function (chart) {
|
|
29
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var xScaleType = chart.config.options.scales.x.type;
|
|
33
|
+
if (xScaleType !== 'linear' &&
|
|
34
|
+
xScaleType !== 'time' &&
|
|
35
|
+
xScaleType !== 'category' &&
|
|
36
|
+
xScaleType !== 'logarithmic') {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (chart.options.plugins.marker === undefined) {
|
|
40
|
+
chart.options.plugins.marker = defaultOptions;
|
|
41
|
+
}
|
|
42
|
+
chart.marker = {
|
|
43
|
+
enabled: false,
|
|
44
|
+
suppressUpdate: false,
|
|
45
|
+
x: null,
|
|
46
|
+
originalData: [],
|
|
47
|
+
originalXRange: {},
|
|
48
|
+
dragStarted: false,
|
|
49
|
+
dragStartX: null,
|
|
50
|
+
dragEndX: null,
|
|
51
|
+
suppressTooltips: false,
|
|
52
|
+
ignoreNextEvents: 0,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
getOption: function (chart, category, name) {
|
|
56
|
+
return valueOrDefault(chart.options.plugins.marker[category]
|
|
57
|
+
? chart.options.plugins.marker[category][name]
|
|
58
|
+
: undefined, defaultOptions[category][name]);
|
|
59
|
+
},
|
|
60
|
+
getXScale: function (chart) {
|
|
61
|
+
return chart.data.datasets.length ? chart.scales[chart.getDatasetMeta(0).xAxisID] : null;
|
|
62
|
+
},
|
|
63
|
+
getYScale: function (chart) {
|
|
64
|
+
return chart.scales[chart.getDatasetMeta(0).yAxisID];
|
|
65
|
+
},
|
|
66
|
+
afterEvent: function (chart, event) {
|
|
67
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (chart.config.options.scales.x.length == 0) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
let e = event.event;
|
|
74
|
+
var xScaleType = chart.config.options.scales.x.type;
|
|
75
|
+
if (xScaleType !== 'linear' &&
|
|
76
|
+
xScaleType !== 'time' &&
|
|
77
|
+
xScaleType !== 'category' &&
|
|
78
|
+
xScaleType !== 'logarithmic') {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
var xScale = this.getXScale(chart);
|
|
82
|
+
if (!xScale) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (chart.marker.ignoreNextEvents > 0) {
|
|
86
|
+
chart.marker.ignoreNextEvents -= 1;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// fix for Safari
|
|
90
|
+
var buttons = e.native.buttons === undefined ? e.native.which : e.native.buttons;
|
|
91
|
+
if (e.native.type === 'mouseup') {
|
|
92
|
+
buttons = 0;
|
|
93
|
+
}
|
|
94
|
+
chart.marker.enabled =
|
|
95
|
+
e.type !== 'mouseout' &&
|
|
96
|
+
e.x > xScale.getPixelForValue(xScale.min) &&
|
|
97
|
+
e.x < xScale.getPixelForValue(xScale.max);
|
|
98
|
+
if (!chart.marker.enabled && !chart.marker.suppressUpdate) {
|
|
99
|
+
if (e.x > xScale.getPixelForValue(xScale.max)) {
|
|
100
|
+
// suppress future updates to prevent endless redrawing of chart
|
|
101
|
+
chart.marker.suppressUpdate = true;
|
|
102
|
+
chart.update('none');
|
|
103
|
+
}
|
|
104
|
+
chart.marker.dragStarted = false; // cancel zoom in progress
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
chart.marker.suppressUpdate = false;
|
|
108
|
+
chart.marker.x = e.x;
|
|
109
|
+
chart.draw();
|
|
110
|
+
},
|
|
111
|
+
doDraw: function (chart) {
|
|
112
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!chart.marker.enabled) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.drawTraceLine(chart);
|
|
119
|
+
this.interpolateValues(chart);
|
|
120
|
+
this.drawTracePoints(chart);
|
|
121
|
+
return true;
|
|
122
|
+
},
|
|
123
|
+
beforeDraw: function (chart) {
|
|
124
|
+
return this.doDraw(chart);
|
|
125
|
+
},
|
|
126
|
+
// Logic moved to beforeDraw in order
|
|
127
|
+
// for the vertical line to be drawn
|
|
128
|
+
// under tooltip and datalabels.
|
|
129
|
+
// afterDraw: function(chart) {
|
|
130
|
+
// return this.doDraw(chart);
|
|
131
|
+
// },
|
|
132
|
+
drawTraceLine: function (chart) {
|
|
133
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
var yScale = this.getYScale(chart);
|
|
137
|
+
var lineWidth = this.getOption(chart, 'line', 'width');
|
|
138
|
+
var color = this.getOption(chart, 'line', 'color');
|
|
139
|
+
var dashPattern = this.getOption(chart, 'line', 'dashPattern');
|
|
140
|
+
var snapEnabled = this.getOption(chart, 'snap', 'enabled');
|
|
141
|
+
var lineX = chart.marker.x;
|
|
142
|
+
if (snapEnabled && chart._active.length) {
|
|
143
|
+
lineX = chart._active[0].element.x;
|
|
144
|
+
}
|
|
145
|
+
chart.ctx.beginPath();
|
|
146
|
+
chart.ctx.setLineDash(dashPattern);
|
|
147
|
+
chart.ctx.moveTo(lineX, yScale.getPixelForValue(yScale.max));
|
|
148
|
+
chart.ctx.lineWidth = lineWidth;
|
|
149
|
+
chart.ctx.strokeStyle = color;
|
|
150
|
+
chart.ctx.lineTo(lineX, yScale.getPixelForValue(yScale.min));
|
|
151
|
+
chart.ctx.stroke();
|
|
152
|
+
chart.ctx.setLineDash([]);
|
|
153
|
+
},
|
|
154
|
+
drawTracePoints: function (chart) {
|
|
155
|
+
if (!hasMarkerConfiguration(chart)) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {
|
|
159
|
+
var dataset = chart.data.datasets[chartIndex];
|
|
160
|
+
var meta = chart.getDatasetMeta(chartIndex);
|
|
161
|
+
var yScale = chart.scales[meta.yAxisID];
|
|
162
|
+
if (meta.hidden || !dataset.interpolate) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
chart.ctx.beginPath();
|
|
166
|
+
chart.ctx.arc(chart.marker.x, yScale.getPixelForValue(dataset.interpolatedValue), 3, 0, 2 * Math.PI, false);
|
|
167
|
+
chart.ctx.fillStyle = 'white';
|
|
168
|
+
chart.ctx.lineWidth = 2;
|
|
169
|
+
chart.ctx.strokeStyle = dataset.borderColor;
|
|
170
|
+
chart.ctx.fill();
|
|
171
|
+
chart.ctx.stroke();
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
interpolateValues: function (chart) {
|
|
175
|
+
for (var chartIndex = 0; chartIndex < chart.data.datasets.length; chartIndex++) {
|
|
176
|
+
var dataset = chart.data.datasets[chartIndex];
|
|
177
|
+
var meta = chart.getDatasetMeta(chartIndex);
|
|
178
|
+
var xScale = chart.scales[meta.xAxisID];
|
|
179
|
+
var xValue = xScale.getValueForPixel(chart.marker.x);
|
|
180
|
+
if (meta.hidden || !dataset.interpolate) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
var data = dataset.data;
|
|
184
|
+
var index = data.findIndex(function (o) {
|
|
185
|
+
return o.x >= xValue;
|
|
186
|
+
});
|
|
187
|
+
var prev = data[index - 1];
|
|
188
|
+
var next = data[index];
|
|
189
|
+
if (chart.data.datasets[chartIndex].steppedLine && prev) {
|
|
190
|
+
dataset.interpolatedValue = prev.y;
|
|
191
|
+
}
|
|
192
|
+
else if (prev && next) {
|
|
193
|
+
var slope = (next.y - prev.y) / (next.x - prev.x);
|
|
194
|
+
dataset.interpolatedValue = prev.y + (xValue - prev.x) * slope;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
dataset.interpolatedValue = NaN;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
export { ɵ0 };
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRqcy1wbHVnaW4tbWFya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LWpzL2NoYXJ0anMtcGx1Z2luLW1hcmtlci9jaGFydGpzLXBsdWdpbi1tYXJrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2Riw4RUFBOEU7QUFFOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELElBQUksY0FBYyxHQUFHO0lBQ25CLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxPQUFPO1FBQ2QsS0FBSyxFQUFFLENBQUM7UUFDUixXQUFXLEVBQUUsRUFBRTtLQUNoQjtJQUNELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxLQUFLO0tBQ2Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFOztJQUN2Qyw4RUFBOEU7SUFDOUUsK0RBQStEO0lBQy9ELDJCQUEyQjtJQUMzQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLHVCQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTywwQ0FBRSxPQUFPLDBDQUFFLE9BQU8sMENBQUUsT0FBTyxDQUFBLENBQUM7SUFDeEYsZ0VBQWdFO0lBQ2hFLGdDQUFnQztJQUNoQyw4RUFBOEU7QUFDaEYsQ0FBQyxDQUFDOztBQUVGLGVBQWU7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUVaLFNBQVMsRUFBRSxVQUFTLEtBQUs7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FB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SCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBtYXJrZXIgcGx1aW4gd2FzIGhlYXZpbHkgaW5zcGlyZWQgYnkgaHR0cHM6Ly9jaGFydGpzLXBsdWdpbi1jcm9zc2hhaXIubmV0bGlmeS5hcHBcbi8vIFRoaXMgcHJvamVjdCBhcGVhcnMgc3RhbGUsIHNvIHRoZSBmZWF0dXJlIHdpdGggdGhlIHZlcnRpY2FsIGxpbmUsIHdoaWNoIHdhcyB0aGUgb25seVxuLy8gcGFydCBvZiB0aGUgcGx1Z2luIHdoaWNoIGFjdHVhbGx5IHdhcyBuZWVkZWQsIHdhcyBpbXBsZW1lbnRlZCBoZXJlIGluc3RlYWQuXG5cbmltcG9ydCB7IHZhbHVlT3JEZWZhdWx0IH0gZnJvbSAnY2hhcnQuanMvaGVscGVycyc7XG5cbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgbGluZToge1xuICAgIGNvbG9yOiAnYmxhY2snLFxuICAgIHdpZHRoOiAxLFxuICAgIGRhc2hQYXR0ZXJuOiBbXSxcbiAgfSxcbiAgc25hcDoge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICB9LFxufTtcblxuY29uc3QgaGFzTWFya2VyQ29uZmlndXJhdGlvbiA9IChjaGFydCkgPT4ge1xuICAvLyB1c2luZyBhbm90aGVyIHBsdWdpbnMgb3B0aW9ucyBpcyBub3QgaWRlYWwsIHNvIHRoZSBpc3N1ZSB3aXRoIG1hcmtlciBwbHVnaW5cbiAgLy8gc2hvdWxkIGJlIHJlc29sdmVkLiBBcyBvZiByaWdodCBub3cgdGhlIG9ubHkgY2hhcnQgdGhhdCB1c2VzXG4gIC8vIHRvb2x0aXAgaXMgc3RvY2sgY2hhcnRzLlxuICByZXR1cm4gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLnggJiYgY2hhcnQuY29uZmlnLm9wdGlvbnM/LnBsdWdpbnM/LnRvb2x0aXA/LmVuYWJsZWQ7XG4gIC8vIEB0b2RvIHdoZW4gcmVzb2x2aW5nIHRoZSB0eXBpbmdzIGlzc3VlIHdpdGggdGhlIG1hcmtlcnBsdWdpbixcbiAgLy8gdGhpcyBpcyBhIGJldHRlciBjb25kaXRpb25hbC5cbiAgLy8gcmV0dXJuIGNoYXJ0LmNvbmZpZy5vcHRpb25zLnNjYWxlcy54ICYmIGNoYXJ0LmNvbmZpZy5vcHRpb25zLnBsdWdpbnMubWFya2VyXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAnbWFya2VyJyxcblxuICBhZnRlckluaXQ6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB4U2NhbGVUeXBlID0gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngudHlwZTtcblxuICAgIGlmIChcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsaW5lYXInICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAndGltZScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdjYXRlZ29yeScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsb2dhcml0aG1pYydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgY2hhcnQubWFya2VyID0ge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBzdXBwcmVzc1VwZGF0ZTogZmFsc2UsXG4gICAgICB4OiBudWxsLFxuICAgICAgb3JpZ2luYWxEYXRhOiBbXSxcbiAgICAgIG9yaWdpbmFsWFJhbmdlOiB7fSxcbiAgICAgIGRyYWdTdGFydGVkOiBmYWxzZSxcbiAgICAgIGRyYWdTdGFydFg6IG51bGwsXG4gICAgICBkcmFnRW5kWDogbnVsbCxcbiAgICAgIHN1cHByZXNzVG9vbHRpcHM6IGZhbHNlLFxuICAgICAgaWdub3JlTmV4dEV2ZW50czogMCxcbiAgICB9O1xuICB9LFxuXG4gIGdldE9wdGlvbjogZnVuY3Rpb24oY2hhcnQsIGNhdGVnb3J5LCBuYW1lKSB7XG4gICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KFxuICAgICAgY2hhcnQub3B0aW9ucy5wbHVnaW5zLm1hcmtlcltjYXRlZ29yeV1cbiAgICAgICAgPyBjaGFydC5vcHRpb25zLnBsdWdpbnMubWFya2VyW2NhdGVnb3J5XVtuYW1lXVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRPcHRpb25zW2NhdGVnb3J5XVtuYW1lXVxuICAgICk7XG4gIH0sXG5cbiAgZ2V0WFNjYWxlOiBmdW5jdGlvbihjaGFydCkge1xuICAgIHJldHVybiBjaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aCA/IGNoYXJ0LnNjYWxlc1tjaGFydC5nZXREYXRhc2V0TWV0YSgwKS54QXhpc0lEXSA6IG51bGw7XG4gIH0sXG4gIGdldFlTY2FsZTogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICByZXR1cm4gY2hhcnQuc2NhbGVzW2NoYXJ0LmdldERhdGFzZXRNZXRhKDApLnlBeGlzSURdO1xuICB9LFxuXG4gIGFmdGVyRXZlbnQ6IGZ1bmN0aW9uKGNoYXJ0LCBldmVudCkge1xuICAgIGlmICghaGFzTWFya2VyQ29uZmlndXJhdGlvbihjaGFydCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoYXJ0LmNvbmZpZy5vcHRpb25zLnNjYWxlcy54Lmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGUgPSBldmVudC5ldmVudDtcblxuICAgIHZhciB4U2NhbGVUeXBlID0gY2hhcnQuY29uZmlnLm9wdGlvbnMuc2NhbGVzLngudHlwZTtcblxuICAgIGlmIChcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsaW5lYXInICYmXG4gICAgICB4U2NhbGVUeXBlICE9PSAndGltZScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdjYXRlZ29yeScgJiZcbiAgICAgIHhTY2FsZVR5cGUgIT09ICdsb2dhcml0aG1pYydcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgeFNjYWxlID0gdGhpcy5nZXRYU2NhbGUoY2hhcnQpO1xuXG4gICAgaWYgKCF4U2NhbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnQubWFya2VyLmlnbm9yZU5leHRFdmVudHMgPiAwKSB7XG4gICAgICBjaGFydC5tYXJrZXIuaWdub3JlTmV4dEV2ZW50cyAtPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGZpeCBmb3IgU2FmYXJpXG4gICAgdmFyIGJ1dHRvbnMgPSBlLm5hdGl2ZS5idXR0b25zID09PSB1bmRlZmluZWQgPyBlLm5hdGl2ZS53aGljaCA6IGUubmF0aXZlLmJ1dHRvbnM7XG4gICAgaWYgKGUubmF0aXZlLnR5cGUgPT09ICdtb3VzZXVwJykge1xuICAgICAgYnV0dG9ucyA9IDA7XG4gICAgfVxuXG4gICAgY2hhcnQubWFya2VyLmVuYWJsZWQgPVxuICAgICAgZS50eXBlICE9PSAnbW91c2VvdXQnICYmXG4gICAgICBlLnggPiB4U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh4U2NhbGUubWluKSAmJlxuICAgICAgZS54IDwgeFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeFNjYWxlLm1heCk7XG5cbiAgICBpZiAoIWNoYXJ0Lm1hcmtlci5lbmFibGVkICYmICFjaGFydC5tYXJrZXIuc3VwcHJlc3NVcGRhdGUpIHtcbiAgICAgIGlmIChlLnggPiB4U2NhbGUuZ2V0UGl4ZWxGb3JWYWx1ZSh4U2NhbGUubWF4KSkge1xuICAgICAgICAvLyBzdXBwcmVzcyBmdXR1cmUgdXBkYXRlcyB0byBwcmV2ZW50IGVuZGxlc3MgcmVkcmF3aW5nIG9mIGNoYXJ0XG4gICAgICAgIGNoYXJ0Lm1hcmtlci5zdXBwcmVzc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIGNoYXJ0LnVwZGF0ZSgnbm9uZScpO1xuICAgICAgfVxuICAgICAgY2hhcnQubWFya2VyLmRyYWdTdGFydGVkID0gZmFsc2U7IC8vIGNhbmNlbCB6b29tIGluIHByb2dyZXNzXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNoYXJ0Lm1hcmtlci5zdXBwcmVzc1VwZGF0ZSA9IGZhbHNlO1xuXG4gICAgY2hhcnQubWFya2VyLnggPSBlLng7XG5cbiAgICBjaGFydC5kcmF3KCk7XG4gIH0sXG4gIGRvRHJhdzogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFjaGFydC5tYXJrZXIuZW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd1RyYWNlTGluZShjaGFydCk7XG4gICAgdGhpcy5pbnRlcnBvbGF0ZVZhbHVlcyhjaGFydCk7XG4gICAgdGhpcy5kcmF3VHJhY2VQb2ludHMoY2hhcnQpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGJlZm9yZURyYXc6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gICAgcmV0dXJuIHRoaXMuZG9EcmF3KGNoYXJ0KTtcbiAgfSxcbiAgLy8gTG9naWMgbW92ZWQgdG8gYmVmb3JlRHJhdyBpbiBvcmRlclxuICAvLyBmb3IgdGhlIHZlcnRpY2FsIGxpbmUgdG8gYmUgZHJhd25cbiAgLy8gdW5kZXIgdG9vbHRpcCBhbmQgZGF0YWxhYmVscy5cbiAgLy8gYWZ0ZXJEcmF3OiBmdW5jdGlvbihjaGFydCkge1xuICAvLyAgIHJldHVybiB0aGlzLmRvRHJhdyhjaGFydCk7XG4gIC8vIH0sXG5cbiAgZHJhd1RyYWNlTGluZTogZnVuY3Rpb24oY2hhcnQpIHtcbiAgICBpZiAoIWhhc01hcmtlckNvbmZpZ3VyYXRpb24oY2hhcnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB5U2NhbGUgPSB0aGlzLmdldFlTY2FsZShjaGFydCk7XG5cbiAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRPcHRpb24oY2hhcnQsICdsaW5lJywgJ3dpZHRoJyk7XG4gICAgdmFyIGNvbG9yID0gdGhpcy5nZXRPcHRpb24oY2hhcnQsICdsaW5lJywgJ2NvbG9yJyk7XG4gICAgdmFyIGRhc2hQYXR0ZXJuID0gdGhpcy5nZXRPcHRpb24oY2hhcnQsICdsaW5lJywgJ2Rhc2hQYXR0ZXJuJyk7XG4gICAgdmFyIHNuYXBFbmFibGVkID0gdGhpcy5nZXRPcHRpb24oY2hhcnQsICdzbmFwJywgJ2VuYWJsZWQnKTtcblxuICAgIHZhciBsaW5lWCA9IGNoYXJ0Lm1hcmtlci54O1xuXG4gICAgaWYgKHNuYXBFbmFibGVkICYmIGNoYXJ0Ll9hY3RpdmUubGVuZ3RoKSB7XG4gICAgICBsaW5lWCA9IGNoYXJ0Ll9hY3RpdmVbMF0uZWxlbWVudC54O1xuICAgIH1cblxuICAgIGNoYXJ0LmN0eC5iZWdpblBhdGgoKTtcbiAgICBjaGFydC5jdHguc2V0TGluZURhc2goZGFzaFBhdHRlcm4pO1xuICAgIGNoYXJ0LmN0eC5tb3ZlVG8obGluZVgsIHlTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHlTY2FsZS5tYXgpKTtcbiAgICBjaGFydC5jdHgubGluZVdpZHRoID0gbGluZVdpZHRoO1xuICAgIGNoYXJ0LmN0eC5zdHJva2VTdHlsZSA9IGNvbG9yO1xuICAgIGNoYXJ0LmN0eC5saW5lVG8obGluZVgsIHlTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHlTY2FsZS5taW4pKTtcbiAgICBjaGFydC5jdHguc3Ryb2tlKCk7XG4gICAgY2hhcnQuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgfSxcblxuICBkcmF3VHJhY2VQb2ludHM6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gICAgaWYgKCFoYXNNYXJrZXJDb25maWd1cmF0aW9uKGNoYXJ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKHZhciBjaGFydEluZGV4ID0gMDsgY2hhcnRJbmRleCA8IGNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoOyBjaGFydEluZGV4KyspIHtcbiAgICAgIHZhciBkYXRhc2V0ID0gY2hhcnQuZGF0YS5kYXRhc2V0c1tjaGFydEluZGV4XTtcbiAgICAgIHZhciBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoY2hhcnRJbmRleCk7XG5cbiAgICAgIHZhciB5U2NhbGUgPSBjaGFydC5zY2FsZXNbbWV0YS55QXhpc0lEXTtcblxuICAgICAgaWYgKG1ldGEuaGlkZGVuIHx8ICFkYXRhc2V0LmludGVycG9sYXRlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjaGFydC5jdHguYmVnaW5QYXRoKCk7XG4gICAgICBjaGFydC5jdHguYXJjKFxuICAgICAgICBjaGFydC5tYXJrZXIueCxcbiAgICAgICAgeVNjYWxlLmdldFBpeGVsRm9yVmFsdWUoZGF0YXNldC5pbnRlcnBvbGF0ZWRWYWx1ZSksXG4gICAgICAgIDMsXG4gICAgICAgIDAsXG4gICAgICAgIDIgKiBNYXRoLlBJLFxuICAgICAgICBmYWxzZVxuICAgICAgKTtcbiAgICAgIGNoYXJ0LmN0eC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgICAgY2hhcnQuY3R4LmxpbmVXaWR0aCA9IDI7XG4gICAgICBjaGFydC5jdHguc3Ryb2tlU3R5bGUgPSBkYXRhc2V0LmJvcmRlckNvbG9yO1xuICAgICAgY2hhcnQuY3R4LmZpbGwoKTtcbiAgICAgIGNoYXJ0LmN0eC5zdHJva2UoKTtcbiAgICB9XG4gIH0sXG5cbiAgaW50ZXJwb2xhdGVWYWx1ZXM6IGZ1bmN0aW9uKGNoYXJ0KSB7XG4gICAgZm9yICh2YXIgY2hhcnRJbmRleCA9IDA7IGNoYXJ0SW5kZXggPCBjaGFydC5kYXRhLmRhdGFzZXRzLmxlbmd0aDsgY2hhcnRJbmRleCsrKSB7XG4gICAgICB2YXIgZGF0YXNldCA9IGNoYXJ0LmRhdGEuZGF0YXNldHNbY2hhcnRJbmRleF07XG5cbiAgICAgIHZhciBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoY2hhcnRJbmRleCk7XG5cbiAgICAgIHZhciB4U2NhbGUgPSBjaGFydC5zY2FsZXNbbWV0YS54QXhpc0lEXTtcbiAgICAgIHZhciB4VmFsdWUgPSB4U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChjaGFydC5tYXJrZXIueCk7XG5cbiAgICAgIGlmIChtZXRhLmhpZGRlbiB8fCAhZGF0YXNldC5pbnRlcnBvbGF0ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRhdGEgPSBkYXRhc2V0LmRhdGE7XG4gICAgICB2YXIgaW5kZXggPSBkYXRhLmZpbmRJbmRleChmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBvLnggPj0geFZhbHVlO1xuICAgICAgfSk7XG4gICAgICB2YXIgcHJldiA9IGRhdGFbaW5kZXggLSAxXTtcbiAgICAgIHZhciBuZXh0ID0gZGF0YVtpbmRleF07XG5cbiAgICAgIGlmIChjaGFydC5kYXRhLmRhdGFzZXRzW2NoYXJ0SW5kZXhdLnN0ZXBwZWRMaW5lICYmIHByZXYpIHtcbiAgICAgICAgZGF0YXNldC5pbnRlcnBvbGF0ZWRWYWx1ZSA9IHByZXYueTtcbiAgICAgIH0gZWxzZSBpZiAocHJldiAmJiBuZXh0KSB7XG4gICAgICAgIHZhciBzbG9wZSA9IChuZXh0LnkgLSBwcmV2LnkpIC8gKG5leHQueCAtIHByZXYueCk7XG4gICAgICAgIGRhdGFzZXQuaW50ZXJwb2xhdGVkVmFsdWUgPSBwcmV2LnkgKyAoeFZhbHVlIC0gcHJldi54KSAqIHNsb3BlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YXNldC5pbnRlcnBvbGF0ZWRWYWx1ZSA9IE5hTjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG59O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ɵ0":{"__symbolic":"error","message":"Lambda not supported","line":17,"character":31}}}]
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { BarController, BarElement, CategoryScale, Chart, Filler, Legend, LinearScale, LineController, LineElement, PointElement, } from 'chart.js';
|
|
1
|
+
import { BarController, BarElement, CategoryScale, Chart, Filler, Legend, LinearScale, LineController, LineElement, PointElement, Tooltip, } from 'chart.js';
|
|
2
2
|
import annotationPlugin from 'chartjs-plugin-annotation';
|
|
3
|
+
import ChartDataLabels from 'chartjs-plugin-datalabels';
|
|
3
4
|
import { mergeDeepAll } from '../../../helpers/merge-deep';
|
|
5
|
+
import MarkerPlugin from '../chart-js/chartjs-plugin-marker/chartjs-plugin-marker';
|
|
4
6
|
import { CHART_GLOBAL_DEFAULTS } from '../configs/global-defaults.config';
|
|
5
7
|
const CHART_SCALES = [CategoryScale, LinearScale];
|
|
6
8
|
const CHART_ELEMENTS = [BarElement, LineElement, PointElement];
|
|
7
9
|
const CHART_CONTROLLERS = [BarController, LineController];
|
|
8
|
-
const CHART_PLUGINS = [annotationPlugin, Filler];
|
|
10
|
+
const CHART_PLUGINS = [annotationPlugin, Filler, ChartDataLabels, Tooltip, MarkerPlugin];
|
|
9
11
|
/* Order matters; defaults must be merged after register as
|
|
10
12
|
register modifies the Chart.defaults objects */
|
|
11
13
|
Chart.register(Legend, ...CHART_SCALES, ...CHART_ELEMENTS, ...CHART_CONTROLLERS, ...CHART_PLUGINS);
|
|
@@ -16,4 +18,4 @@ Object.entries(CHART_GLOBAL_DEFAULTS).forEach(([key]) => {
|
|
|
16
18
|
Chart.defaults[key] = mergedDefaults[key];
|
|
17
19
|
});
|
|
18
20
|
export { Chart };
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlZC1jaGFydC1qcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1qcy9jb25maWd1cmVkLWNoYXJ0LWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsVUFBVSxFQUNWLGFBQWEsRUFDYixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsY0FBYyxFQUNkLFdBQVcsRUFDWCxZQUFZLEVBRVosT0FBTyxHQUNSLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sWUFBWSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE1BQU0sWUFBWSxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzFELE1BQU0sYUFBYSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFekY7a0RBQ2tEO0FBQ2xELEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztBQUVuRztvQ0FDb0M7QUFDcEMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUMzRSxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQ3RELEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFyQ29udHJvbGxlcixcbiAgQmFyRWxlbWVudCxcbiAgQ2F0ZWdvcnlTY2FsZSxcbiAgQ2hhcnQsXG4gIEZpbGxlcixcbiAgTGVnZW5kLFxuICBMaW5lYXJTY2FsZSxcbiAgTGluZUNvbnRyb2xsZXIsXG4gIExpbmVFbGVtZW50LFxuICBQb2ludEVsZW1lbnQsXG4gIFRpbWVTY2FsZSxcbiAgVG9vbHRpcCxcbn0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IGFubm90YXRpb25QbHVnaW4gZnJvbSAnY2hhcnRqcy1wbHVnaW4tYW5ub3RhdGlvbic7XG5pbXBvcnQgQ2hhcnREYXRhTGFiZWxzIGZyb20gJ2NoYXJ0anMtcGx1Z2luLWRhdGFsYWJlbHMnO1xuXG5pbXBvcnQgeyBtZXJnZURlZXBBbGwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL21lcmdlLWRlZXAnO1xuaW1wb3J0IE1hcmtlclBsdWdpbiBmcm9tICcuLi9jaGFydC1qcy9jaGFydGpzLXBsdWdpbi1tYXJrZXIvY2hhcnRqcy1wbHVnaW4tbWFya2VyJztcbmltcG9ydCB7IENIQVJUX0dMT0JBTF9ERUZBVUxUUyB9IGZyb20gJy4uL2NvbmZpZ3MvZ2xvYmFsLWRlZmF1bHRzLmNvbmZpZyc7XG5cbmNvbnN0IENIQVJUX1NDQUxFUyA9IFtDYXRlZ29yeVNjYWxlLCBMaW5lYXJTY2FsZV07XG5jb25zdCBDSEFSVF9FTEVNRU5UUyA9IFtCYXJFbGVtZW50LCBMaW5lRWxlbWVudCwgUG9pbnRFbGVtZW50XTtcbmNvbnN0IENIQVJUX0NPTlRST0xMRVJTID0gW0JhckNvbnRyb2xsZXIsIExpbmVDb250cm9sbGVyXTtcbmNvbnN0IENIQVJUX1BMVUdJTlMgPSBbYW5ub3RhdGlvblBsdWdpbiwgRmlsbGVyLCBDaGFydERhdGFMYWJlbHMsIFRvb2x0aXAsIE1hcmtlclBsdWdpbl07XG5cbi8qIE9yZGVyIG1hdHRlcnM7IGRlZmF1bHRzIG11c3QgYmUgbWVyZ2VkIGFmdGVyIHJlZ2lzdGVyIGFzIFxuICAgcmVnaXN0ZXIgbW9kaWZpZXMgdGhlIENoYXJ0LmRlZmF1bHRzIG9iamVjdHMgKi9cbkNoYXJ0LnJlZ2lzdGVyKExlZ2VuZCwgLi4uQ0hBUlRfU0NBTEVTLCAuLi5DSEFSVF9FTEVNRU5UUywgLi4uQ0hBUlRfQ09OVFJPTExFUlMsIC4uLkNIQVJUX1BMVUdJTlMpO1xuXG4vKiBDaGFydC5kZWZhdWx0cyBpcyByZWFkIG9ubHk7IHNldCBlYWNoIGtleSBtb2RpZmllZCBpbiBcbiAgIENIQVJUX0dMT0JBTF9ERUZBVUxUUyBtYW51YWxseSAqL1xuY29uc3QgbWVyZ2VkRGVmYXVsdHMgPSBtZXJnZURlZXBBbGwoQ2hhcnQuZGVmYXVsdHMsIENIQVJUX0dMT0JBTF9ERUZBVUxUUyk7XG5PYmplY3QuZW50cmllcyhDSEFSVF9HTE9CQUxfREVGQVVMVFMpLmZvckVhY2goKFtrZXldKSA9PiB7XG4gIENoYXJ0LmRlZmF1bHRzW2tleV0gPSBtZXJnZWREZWZhdWx0c1trZXldO1xufSk7XG5cbmV4cG9ydCB7IENoYXJ0IH07XG4iXX0=
|