@agorapulse/ui-charts 20.1.6 → 20.1.7
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.
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Highcharts from 'highcharts';
|
|
2
|
-
import { dateFormat, Chart
|
|
2
|
+
import { numberFormat, setOptions, dateFormat, Chart } from 'highcharts';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Input, ViewChild, Directive, Component, input, EventEmitter, Output, effect, ChangeDetectionStrategy, signal, afterNextRender } from '@angular/core';
|
|
5
5
|
import { mapChart } from 'highcharts/highmaps';
|
|
@@ -237,6 +237,7 @@ class AbstractChartComponent {
|
|
|
237
237
|
chartOptions = {}; // https://api.highcharts.com/highcharts/
|
|
238
238
|
color = ChartColor.ElectricBlue;
|
|
239
239
|
labelDateFormat = '%m/%d';
|
|
240
|
+
locale = 'en';
|
|
240
241
|
series = [];
|
|
241
242
|
chart;
|
|
242
243
|
lastWidth = 0;
|
|
@@ -244,6 +245,7 @@ class AbstractChartComponent {
|
|
|
244
245
|
if ((changes.series && !changes.series.firstChange) ||
|
|
245
246
|
(changes.color && !changes.color.firstChange) ||
|
|
246
247
|
(changes.chartOptions && !changes.chartOptions.firstChange) ||
|
|
248
|
+
(changes.locale && !changes.locale.firstChange) ||
|
|
247
249
|
(changes.metricFormat && !changes.metricFormat.firstChange)) {
|
|
248
250
|
this.initChart();
|
|
249
251
|
}
|
|
@@ -260,7 +262,7 @@ class AbstractChartComponent {
|
|
|
260
262
|
}
|
|
261
263
|
}
|
|
262
264
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AbstractChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
263
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: "chartOptions", color: "color", labelDateFormat: "labelDateFormat", series: "series" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
265
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: "chartOptions", color: "color", labelDateFormat: "labelDateFormat", locale: "locale", series: "series" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0 });
|
|
264
266
|
}
|
|
265
267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AbstractChartComponent, decorators: [{
|
|
266
268
|
type: Directive
|
|
@@ -273,10 +275,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
273
275
|
type: Input
|
|
274
276
|
}], labelDateFormat: [{
|
|
275
277
|
type: Input
|
|
278
|
+
}], locale: [{
|
|
279
|
+
type: Input
|
|
276
280
|
}], series: [{
|
|
277
281
|
type: Input
|
|
278
282
|
}] } });
|
|
279
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Builds Highcharts locale options (lang + tooltip date formats) from a locale string.
|
|
286
|
+
* Uses the browser's Intl API to generate translated month/weekday names and number formatting rules.
|
|
287
|
+
*/
|
|
288
|
+
function buildHighchartsLocaleOptions(locale) {
|
|
289
|
+
const { decimalPoint, thousandsSep } = buildNumberSeparators(locale);
|
|
290
|
+
return {
|
|
291
|
+
lang: {
|
|
292
|
+
decimalPoint,
|
|
293
|
+
thousandsSep,
|
|
294
|
+
weekdays: buildWeekdays(locale),
|
|
295
|
+
shortMonths: buildShortMonths(locale),
|
|
296
|
+
},
|
|
297
|
+
tooltip: {
|
|
298
|
+
dateTimeLabelFormats: {
|
|
299
|
+
day: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',
|
|
300
|
+
week: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
function buildNumberSeparators(locale) {
|
|
306
|
+
const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);
|
|
307
|
+
const decimalPoint = parts.find(p => p.type === 'decimal')?.value ?? '.';
|
|
308
|
+
const thousandsSep = parts.find(p => p.type === 'group')?.value ?? ',';
|
|
309
|
+
return { decimalPoint, thousandsSep };
|
|
310
|
+
}
|
|
311
|
+
function buildWeekdays(locale) {
|
|
312
|
+
const formatter = new Intl.DateTimeFormat(locale, { weekday: 'long' });
|
|
313
|
+
// Jan 4, 1970 is a Sunday
|
|
314
|
+
return Array.from({ length: 7 }, (_, i) => {
|
|
315
|
+
const name = formatter.format(new Date(1970, 0, 4 + i));
|
|
316
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
function buildShortMonths(locale) {
|
|
320
|
+
const formatter = new Intl.DateTimeFormat(locale, { month: 'short' });
|
|
321
|
+
return Array.from({ length: 12 }, (_, i) => {
|
|
322
|
+
const name = formatter.format(new Date(2000, i, 1));
|
|
323
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
280
327
|
class ChartOptions {
|
|
281
328
|
static DEFAULT_DATE_FORMAT = '%A, %b %e, %Y';
|
|
282
329
|
static DEFAULT_OPTIONS = {
|
|
@@ -365,10 +412,7 @@ class ChartOptions {
|
|
|
365
412
|
backgroundColor: ChartColors.WHITE_COLOR,
|
|
366
413
|
borderRadius: 4,
|
|
367
414
|
borderWidth: 0,
|
|
368
|
-
dateTimeLabelFormats: {
|
|
369
|
-
day: ChartOptions.DEFAULT_DATE_FORMAT,
|
|
370
|
-
week: ChartOptions.DEFAULT_DATE_FORMAT,
|
|
371
|
-
},
|
|
415
|
+
dateTimeLabelFormats: {},
|
|
372
416
|
shadow: {
|
|
373
417
|
color: ChartColors.BLACK_COLOR,
|
|
374
418
|
offsetX: 0,
|
|
@@ -408,6 +452,12 @@ class ChartOptions {
|
|
|
408
452
|
text: undefined,
|
|
409
453
|
},
|
|
410
454
|
labels: {
|
|
455
|
+
formatter: function () {
|
|
456
|
+
if (typeof this.value === 'string') {
|
|
457
|
+
return this.value;
|
|
458
|
+
}
|
|
459
|
+
return numberFormat(this.value, -1);
|
|
460
|
+
},
|
|
411
461
|
style: {
|
|
412
462
|
color: ChartColors.GREY_COLORS[85],
|
|
413
463
|
fontSize: '12px',
|
|
@@ -415,8 +465,10 @@ class ChartOptions {
|
|
|
415
465
|
},
|
|
416
466
|
},
|
|
417
467
|
};
|
|
418
|
-
static build(options) {
|
|
419
|
-
|
|
468
|
+
static build(options, locale) {
|
|
469
|
+
const localeOptions = buildHighchartsLocaleOptions(locale);
|
|
470
|
+
setOptions({ lang: localeOptions.lang });
|
|
471
|
+
return mergeDeep(mergeDeep(ChartOptions.DEFAULT_OPTIONS, localeOptions), options);
|
|
420
472
|
}
|
|
421
473
|
static configure(series, options, color, labelDateFormat) {
|
|
422
474
|
// Configure axis
|
|
@@ -550,7 +602,7 @@ function deepCopy(source) {
|
|
|
550
602
|
}
|
|
551
603
|
|
|
552
604
|
class ChartBarOptions extends ChartOptions {
|
|
553
|
-
static buildBars(options, stacked, opposite) {
|
|
605
|
+
static buildBars(options, stacked, opposite, locale) {
|
|
554
606
|
const bar = {
|
|
555
607
|
maxPointWidth: 20,
|
|
556
608
|
};
|
|
@@ -606,7 +658,7 @@ class ChartBarOptions extends ChartOptions {
|
|
|
606
658
|
}
|
|
607
659
|
},
|
|
608
660
|
};
|
|
609
|
-
return super.build(mergeDeep(defaultBarOptions, options));
|
|
661
|
+
return super.build(mergeDeep(defaultBarOptions, options), locale);
|
|
610
662
|
}
|
|
611
663
|
static configureBar(series, categories, options, opposite, color, labelDateFormat) {
|
|
612
664
|
ChartOptions.configure(series, options, color, labelDateFormat);
|
|
@@ -656,7 +708,7 @@ class ChartBarComponent extends AbstractChartComponent {
|
|
|
656
708
|
series = [];
|
|
657
709
|
initChart() {
|
|
658
710
|
if (this.series) {
|
|
659
|
-
const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite);
|
|
711
|
+
const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite, this.locale);
|
|
660
712
|
ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);
|
|
661
713
|
this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
|
|
662
714
|
if (this.chart && this.stacked && !this.opposite) {
|
|
@@ -681,7 +733,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
681
733
|
}] } });
|
|
682
734
|
|
|
683
735
|
class ChartColumnOptions extends ChartOptions {
|
|
684
|
-
static buildColumn(options, stacked) {
|
|
736
|
+
static buildColumn(options, stacked, locale) {
|
|
685
737
|
const column = {
|
|
686
738
|
borderWidth: 0,
|
|
687
739
|
maxPointWidth: 20
|
|
@@ -715,7 +767,7 @@ class ChartColumnOptions extends ChartOptions {
|
|
|
715
767
|
minTickInterval: 1,
|
|
716
768
|
},
|
|
717
769
|
};
|
|
718
|
-
return super.build(mergeDeep(defaultColumnOptions, options));
|
|
770
|
+
return super.build(mergeDeep(defaultColumnOptions, options), locale);
|
|
719
771
|
}
|
|
720
772
|
}
|
|
721
773
|
|
|
@@ -725,7 +777,7 @@ class ChartColumnComponent extends AbstractChartComponent {
|
|
|
725
777
|
chartInitialized = new EventEmitter();
|
|
726
778
|
initChart() {
|
|
727
779
|
if (this.series) {
|
|
728
|
-
const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked());
|
|
780
|
+
const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked(), this.locale);
|
|
729
781
|
ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
|
|
730
782
|
this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
|
|
731
783
|
if (this.chart && this.stacked()) {
|
|
@@ -768,7 +820,7 @@ const COLORS = {
|
|
|
768
820
|
DEFAULT_FONT_COLOR: '#858FA1',
|
|
769
821
|
};
|
|
770
822
|
class ChartHeatmapOptions extends ChartOptions {
|
|
771
|
-
static build(options) {
|
|
823
|
+
static build(options, locale) {
|
|
772
824
|
const defaultHeatmapOptions = {
|
|
773
825
|
chart: {
|
|
774
826
|
type: 'heatmap',
|
|
@@ -828,7 +880,7 @@ class ChartHeatmapOptions extends ChartOptions {
|
|
|
828
880
|
visible: true,
|
|
829
881
|
},
|
|
830
882
|
};
|
|
831
|
-
return super.build(mergeDeep(defaultHeatmapOptions, options));
|
|
883
|
+
return super.build(mergeDeep(defaultHeatmapOptions, options), locale);
|
|
832
884
|
}
|
|
833
885
|
static createColorAxisFormatter(leastLabel, mostLabel) {
|
|
834
886
|
return function () {
|
|
@@ -908,7 +960,7 @@ class ChartHeatmapComponent extends AbstractChartComponent {
|
|
|
908
960
|
}, ...(ngDevMode ? [{ debugName: "legendLabelsEffect" }] : []));
|
|
909
961
|
initChart() {
|
|
910
962
|
if (this.series && this.chartRef) {
|
|
911
|
-
const chartOptions = ChartHeatmapOptions.build(this.chartOptions);
|
|
963
|
+
const chartOptions = ChartHeatmapOptions.build(this.chartOptions, this.locale);
|
|
912
964
|
ChartHeatmapOptions.configureHeatmap(this.categoriesX, this.categoriesY, this.series, chartOptions, this.color, this.legendLabels()?.least, this.legendLabels()?.most, this.labelDateFormat);
|
|
913
965
|
mapChart(this.chartRef.nativeElement, chartOptions);
|
|
914
966
|
}
|
|
@@ -960,7 +1012,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
960
1012
|
}] } });
|
|
961
1013
|
|
|
962
1014
|
class ChartMixedOptions extends ChartOptions {
|
|
963
|
-
static buildMixed(options, singleDayEnabled) {
|
|
1015
|
+
static buildMixed(options, singleDayEnabled, locale) {
|
|
964
1016
|
const defaultOptions = {
|
|
965
1017
|
chart: {
|
|
966
1018
|
type: 'column',
|
|
@@ -995,7 +1047,7 @@ class ChartMixedOptions extends ChartOptions {
|
|
|
995
1047
|
type: 'datetime',
|
|
996
1048
|
},
|
|
997
1049
|
};
|
|
998
|
-
return super.build(mergeDeep(defaultOptions, options));
|
|
1050
|
+
return super.build(mergeDeep(defaultOptions, options), locale);
|
|
999
1051
|
}
|
|
1000
1052
|
}
|
|
1001
1053
|
|
|
@@ -1004,7 +1056,7 @@ class ChartMixedComponent extends AbstractChartComponent {
|
|
|
1004
1056
|
initChart() {
|
|
1005
1057
|
if (this.series) {
|
|
1006
1058
|
const singleDayEnabled = this.series.find(serie => serie.type === 'spline')?.data?.length === 1;
|
|
1007
|
-
const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled);
|
|
1059
|
+
const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled, this.locale);
|
|
1008
1060
|
ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
|
|
1009
1061
|
this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
|
|
1010
1062
|
if (this.chart) {
|
|
@@ -1026,7 +1078,7 @@ const NAME_MAX_LENGTH = 30;
|
|
|
1026
1078
|
const RIGHT_TO_LEFT_CHARACTERS = /[\p{Script=Arabic}\p{Script=Hebrew}\p{Script=Syriac}\p{Script=Thaana}\p{Script=Nko}\p{Script=Samaritan}\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters
|
|
1027
1079
|
const RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\u202B'; // Right-to-left embedding character
|
|
1028
1080
|
class ChartPieOptions extends ChartOptions {
|
|
1029
|
-
static buildPie(options, innerLabels, metricFormat) {
|
|
1081
|
+
static buildPie(options, innerLabels, metricFormat, locale) {
|
|
1030
1082
|
const defaultPieOptions = {
|
|
1031
1083
|
chart: {
|
|
1032
1084
|
type: 'pie',
|
|
@@ -1059,7 +1111,7 @@ class ChartPieOptions extends ChartOptions {
|
|
|
1059
1111
|
? this.name.substring(0, NAME_MAX_LENGTH) + '...'
|
|
1060
1112
|
: this.name;
|
|
1061
1113
|
const displayValue = metricFormat === 'percentage'
|
|
1062
|
-
? Math.round((this.percentage ?? 0) * 10) / 10 + '%'
|
|
1114
|
+
? numberFormat(Math.round((this.percentage ?? 0) * 10) / 10, 1) + '%'
|
|
1063
1115
|
: numberFormat(this.y ?? 0, -1);
|
|
1064
1116
|
// Add right-to-left embedding character only if the first character is a right-to-left character
|
|
1065
1117
|
const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))
|
|
@@ -1090,7 +1142,7 @@ class ChartPieOptions extends ChartOptions {
|
|
|
1090
1142
|
}
|
|
1091
1143
|
: {},
|
|
1092
1144
|
};
|
|
1093
|
-
return super.build(mergeDeep(defaultPieOptions, options));
|
|
1145
|
+
return super.build(mergeDeep(defaultPieOptions, options), locale);
|
|
1094
1146
|
}
|
|
1095
1147
|
static configurePie(series, options, colors, labelDateFormat, innerLabels, mouseEventEnabled = true) {
|
|
1096
1148
|
super.configure(series, options, undefined, labelDateFormat);
|
|
@@ -1208,7 +1260,7 @@ class ChartPieComponent extends AbstractChartComponent {
|
|
|
1208
1260
|
initChart() {
|
|
1209
1261
|
if (this.series) {
|
|
1210
1262
|
const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;
|
|
1211
|
-
const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat());
|
|
1263
|
+
const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat(), this.locale);
|
|
1212
1264
|
// Add placeholder series when there's no data
|
|
1213
1265
|
const updatedSeries = dataAvailable
|
|
1214
1266
|
? this.series
|
|
@@ -1252,7 +1304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1252
1304
|
}] } });
|
|
1253
1305
|
|
|
1254
1306
|
class ChartSplineOptions extends ChartOptions {
|
|
1255
|
-
static buildSpline(options, singleDayEnabled) {
|
|
1307
|
+
static buildSpline(options, singleDayEnabled, locale) {
|
|
1256
1308
|
const defaultSplineOptions = {
|
|
1257
1309
|
chart: {
|
|
1258
1310
|
type: 'spline',
|
|
@@ -1271,7 +1323,7 @@ class ChartSplineOptions extends ChartOptions {
|
|
|
1271
1323
|
type: 'datetime',
|
|
1272
1324
|
},
|
|
1273
1325
|
};
|
|
1274
|
-
return super.build(mergeDeep(defaultSplineOptions, options));
|
|
1326
|
+
return super.build(mergeDeep(defaultSplineOptions, options), locale);
|
|
1275
1327
|
}
|
|
1276
1328
|
}
|
|
1277
1329
|
|
|
@@ -1280,7 +1332,7 @@ class ChartSplineComponent extends AbstractChartComponent {
|
|
|
1280
1332
|
chartInitialized = new EventEmitter();
|
|
1281
1333
|
initChart() {
|
|
1282
1334
|
if (this.series) {
|
|
1283
|
-
const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1);
|
|
1335
|
+
const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1, this.locale);
|
|
1284
1336
|
ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
|
|
1285
1337
|
this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
|
|
1286
1338
|
this.chartInitialized.emit(this.chart);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../libs/ui-charts/src/lib/highcharts-border-radius-plugin.ts","../../../libs/ui-charts/src/lib/chart-colors.ts","../../../libs/ui-charts/src/lib/abstract-chart.component.ts","../../../libs/ui-charts/src/lib/chart-options.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar-options.model.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.html","../../../libs/ui-charts/src/lib/chart-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.html","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap-options.model.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.html","../../../libs/ui-charts/src/lib/chart-metric.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.html","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.html","../../../libs/ui-charts/src/lib/chart-pie/chart-pie-options.model.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.html","../../../libs/ui-charts/src/lib/chart-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.html","../../../libs/ui-charts/index.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const borderRadiusPlugin = function (H: any) {\n if (H.borderRadiusPlugininitialized) {\n return;\n }\n H.borderRadiusPlugininitialized = true;\n\n H.wrap(H.seriesTypes.column.prototype, 'translate', function (proceed: any) {\n // @ts-ignore\n const options = this.options;\n const topMargin = options.topMargin || 0;\n const bottomMargin = options.bottomMargin || 0;\n const borderRadiusTopLeftSettings = options.borderRadiusTopLeft;\n const borderRadiusTopRightSettings = options.borderRadiusTopRight;\n const borderRadiusBottomLeftSettings = options.borderRadiusBottomLeft;\n const borderRadiusBottomRightSettings = options.borderRadiusBottomRight;\n // @ts-ignore\n proceed.call(this);\n\n // @ts-ignore\n if (!this.points) {\n return;\n }\n\n if (\n borderRadiusTopLeftSettings ||\n borderRadiusTopRightSettings ||\n borderRadiusBottomLeftSettings ||\n borderRadiusBottomRightSettings\n ) {\n // @ts-ignore\n this.points.forEach(function (point) {\n roundPoint(\n borderRadiusTopLeftSettings,\n borderRadiusTopRightSettings,\n borderRadiusBottomLeftSettings,\n borderRadiusBottomRightSettings,\n point,\n H,\n topMargin,\n bottomMargin\n );\n });\n }\n });\n};\n\nfunction roundPoint(\n borderRadiusTopLeftSettings: string | any[],\n borderRadiusTopRightSettings: string | any[],\n borderRadiusBottomLeftSettings: string | any[],\n borderRadiusBottomRightSettings: string | any[],\n point: { shapeArgs: { width?: any; height?: any; x?: any; y?: any; d?: any[] }; index: string | number; dlBox: any; shapeType: string },\n H: { relativeLength: (arg0: any, arg1: any) => any },\n topMargin: any,\n bottomMargin: any\n) {\n const w = point.shapeArgs.width;\n const h = point.shapeArgs.height;\n const x = point.shapeArgs.x;\n const y = point.shapeArgs.y;\n const borderRadiusTopLeft = borderRadiusTopLeftSettings?.length\n ? (borderRadiusTopLeftSettings as any)[point.index]\n : borderRadiusTopLeftSettings || 0;\n const borderRadiusTopRight = borderRadiusTopRightSettings?.length\n ? (borderRadiusTopRightSettings as any)[point.index]\n : borderRadiusTopRightSettings || 0;\n const borderRadiusBottomLeft = borderRadiusBottomLeftSettings?.length\n ? (borderRadiusBottomLeftSettings as any)[point.index]\n : borderRadiusBottomLeftSettings || 0;\n const borderRadiusBottomRight = borderRadiusBottomRightSettings?.length\n ? (borderRadiusBottomRightSettings as any)[point.index]\n : borderRadiusBottomRightSettings || 0;\n\n let radiusTopLeft = H.relativeLength(borderRadiusTopLeft, w);\n let radiusTopRight = H.relativeLength(borderRadiusTopRight, w);\n let radiusBottomRight = H.relativeLength(borderRadiusBottomRight, w);\n let radiusBottomLeft = H.relativeLength(borderRadiusBottomLeft, w);\n\n const maxR = Math.min(w, h) / 2;\n\n radiusTopLeft = radiusTopLeft > maxR ? maxR : radiusTopLeft;\n radiusTopRight = radiusTopRight > maxR ? maxR : radiusTopRight;\n radiusBottomRight = radiusBottomRight > maxR ? maxR : radiusBottomRight;\n radiusBottomLeft = radiusBottomLeft > maxR ? maxR : radiusBottomLeft;\n\n point.dlBox = point.shapeArgs;\n\n point.shapeType = 'path';\n point.shapeArgs = {\n d: [\n 'M',\n x + radiusTopLeft,\n y + topMargin,\n 'L',\n x + w - radiusTopRight,\n y + topMargin,\n 'C',\n x + w - radiusTopRight / 2,\n y,\n x + w,\n y + radiusTopRight / 2,\n x + w,\n y + radiusTopRight,\n 'L',\n x + w,\n y + h - radiusBottomRight,\n 'C',\n x + w,\n y + h - radiusBottomRight / 2,\n x + w - radiusBottomRight / 2,\n y + h,\n x + w - radiusBottomRight,\n y + h + bottomMargin,\n 'L',\n x + radiusBottomLeft,\n y + h + bottomMargin,\n 'C',\n x + radiusBottomLeft / 2,\n y + h,\n x,\n y + h - radiusBottomLeft / 2,\n x,\n y + h - radiusBottomLeft,\n 'L',\n x,\n y + radiusTopLeft,\n 'C',\n x,\n y + radiusTopLeft / 2,\n x + radiusTopLeft / 2,\n y,\n x + radiusTopLeft,\n y,\n 'Z',\n ],\n };\n}\n","export enum ChartColor {\n Grey,\n Orange,\n SoftBlue,\n ElectricBlue,\n Purple,\n Green,\n}\n\nexport class ChartColors {\n static readonly SOFT_BLUE_COLORS = {\n '10': '#EFF5FC',\n '20': '#DFEDFA',\n '40': '#C0DBF4',\n '60': '#A0C8EF',\n '85': '#78B1E8',\n '100': '#61A4E4',\n '150': '#2873BA',\n };\n static readonly ELECTRIC_BLUE_COLORS = {\n '10': '#e8f4ff',\n '20': '#d1e8ff',\n '40': '#a2d1ff',\n '60': '#74bbfe',\n '85': '#3a9efe',\n '100': '#178dfe',\n '150': '#0e72d6',\n };\n static readonly ORANGE_COLORS = {\n '10': '#FFEFE9',\n '20': '#FFE1D4',\n '40': '#FFC2A8',\n '60': '#FFA47D',\n '85': '#FF7E46',\n '100': '#FF6726',\n '150': '#C83E07',\n };\n static readonly GREEN_COLORS = {\n '10': '#ECF7ED',\n '20': '#DAF1DD',\n '40': '#B5E3BB',\n '60': '#8FD498',\n '85': '#61C26D',\n '100': '#45B854',\n '150': '#0F821D',\n };\n static readonly PURPLE_COLORS = {\n '10': '#EFEDF8',\n '20': '#E0DDF2',\n '40': '#C1BBE6',\n '60': '#A398D9',\n '85': '#7C6DC9',\n '100': '#6554C0',\n '150': '#3C2C95',\n };\n static readonly GREY_COLORS = {\n '5': '#F5F5F7',\n '10': '#EAECEF',\n '20': '#D6DAE0',\n '40': '#AEB5C1',\n '60': '#858FA1',\n '85': '#5D6A82',\n '100': '#344563',\n '150': '#212E44',\n };\n\n static readonly RED_COLORS = {\n '80': '#F17171',\n '150': '#D80505'\n };\n\n static readonly SOFT_RED_COLORS = {\n 100: '#ff5353',\n 85: '#ff6d6d',\n 60: '#ff9898',\n 10: '#fff9f9',\n };\n\n static readonly BLACK_COLOR: string = '#000000';\n static readonly LIMIT_COLOR: string = '#E81313';\n static readonly WHITE_COLOR: string = '#FFFFFF';\n\n static getChartColors(color: ChartColor | undefined): { [shade: string]: string } {\n switch (color) {\n case ChartColor.Orange:\n return this.ORANGE_COLORS;\n case ChartColor.SoftBlue:\n return this.SOFT_BLUE_COLORS;\n case ChartColor.ElectricBlue:\n return this.ELECTRIC_BLUE_COLORS;\n case ChartColor.Purple:\n return this.PURPLE_COLORS;\n case ChartColor.Green:\n return this.GREEN_COLORS;\n default:\n return this.GREY_COLORS;\n }\n }\n\n static getColors(seriesCount: number, color: ChartColor | undefined): string[] {\n const colors = this.getChartColors(color);\n switch (seriesCount) {\n case 1:\n return [colors[100]];\n case 2:\n return [colors[40], colors[100]];\n case 3:\n return [colors[20], colors[60], colors[100]];\n case 4:\n return [colors[20], colors[40], colors[60], colors[100]];\n case 5:\n return [colors[20], colors[40], colors[60], colors[100], colors[150]];\n default:\n return [colors[20], colors[40], colors[60], colors[85], colors[100], colors[150]];\n }\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Chart, Options, SeriesOptions } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive() // Required since Angular10 for DI to work (must be decorated to use Angular features)\nexport abstract class AbstractChartComponent implements AfterViewChecked, OnChanges {\n @ViewChild('chart') chartRef!: ElementRef;\n\n @Input() chartOptions: Options = {}; // https://api.highcharts.com/highcharts/\n @Input() color: ChartColor = ChartColor.ElectricBlue;\n @Input() labelDateFormat = '%m/%d';\n @Input() series: SeriesOptions[] = [];\n\n protected chart!: Chart;\n private lastWidth = 0;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.series && !changes.series.firstChange) ||\n (changes.color && !changes.color.firstChange) ||\n (changes.chartOptions && !changes.chartOptions.firstChange) ||\n (changes.metricFormat && !changes.metricFormat.firstChange)\n ) {\n this.initChart();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.chartRef && (this.chartRef.nativeElement.clientWidth !== this.lastWidth || this.lastWidth === 0)) {\n this.lastWidth = this.chartRef.nativeElement.clientWidth;\n if (this.chart) {\n this.chart.reflow();\n } else if (this.series && this.series.length) {\n this.initChart();\n }\n }\n }\n\n abstract initChart(): void;\n}\n","import { Chart, dateFormat, Options, Series, SeriesOptionsType } from 'highcharts';\nimport { ChartColor, ChartColors } from './chart-colors';\nimport { SeriesRoundedColumnOptions } from './highchart-series.model';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT: string = '%A, %b %e, %Y';\n static readonly DEFAULT_OPTIONS: Options = {\n /*lang: {\n decimalPoint: (manager && manager.locale !== 'en') ? ',' : '.',\n resetZoom: resetZoomLabel,\n resetZoomTitle: resetZoomHtmlTitle,\n shortMonths: [\n shortJanuary, shortFebruary, shortMarch, shortApril, shortMay, shortJune,\n shortJuly, shortAugust, shortSeptember, shortOctober, shortNovember, shortDecember\n ],\n thousandsSep: (manager && manager.locale !== 'en') ? ' ' : ',',\n weekdays: this.weekDays,\n zoomIn: zoomInHtmlTitle,\n zoomOut: zoomOutHtmlTitle\n },*/\n chart: {\n spacingRight: 20,\n zooming: {\n type: 'xy',\n resetButton: {\n theme: {\n fill: ChartColors.WHITE_COLOR,\n r: 4,\n style: {\n color: ChartColors.GREY_COLORS[100],\n fontSize: '12px',\n },\n states: {\n hover: {\n fill: ChartColors.GREY_COLORS[5],\n },\n },\n },\n },\n },\n panning: {\n enabled: true,\n },\n panKey: 'shift',\n style: {\n fontFamily: \"Averta, 'Open Sans', Helvetica, sans-serif\",\n },\n },\n colorAxis: {\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[60],\n },\n },\n },\n credits: {\n enabled: false,\n },\n legend: {\n borderWidth: 0,\n itemStyle: {\n color: ChartColors.GREY_COLORS[60],\n fontSize: '14px',\n fontWeight: 'normal',\n },\n itemHoverStyle: {\n color: ChartColors.GREY_COLORS[100],\n fontWeight: 'bold',\n },\n },\n plotOptions: {\n series: {\n states: {\n hover: {\n brightness: 0,\n },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: {\n y: 0,\n },\n },\n title: {\n text: undefined,\n },\n tooltip: {\n backgroundColor: ChartColors.WHITE_COLOR,\n borderRadius: 4,\n borderWidth: 0,\n dateTimeLabelFormats: {\n day: ChartOptions.DEFAULT_DATE_FORMAT,\n week: ChartOptions.DEFAULT_DATE_FORMAT,\n },\n shadow: {\n color: ChartColors.BLACK_COLOR,\n offsetX: 0,\n offsetY: 2,\n opacity: 0.02,\n width: 6,\n },\n split: false,\n shared: true,\n useHTML: true,\n headerFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: 12px; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</span></div>`,\n pointFormat:\n `<div style=\"font-size: 14px; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.y}</b> {point.custom.details}</div>',\n },\n xAxis: {\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n tickColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: null,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n yAxis: {\n allowDecimals: false,\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: undefined,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n };\n\n static build(options: Options): Options {\n return mergeDeep(ChartOptions.DEFAULT_OPTIONS, options);\n }\n\n static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string) {\n // Configure axis\n options.xAxis = mergeDeep(\n {\n labels: {\n formatter: function (): string {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return dateFormat(labelDateFormat ?? '%m/%d', this.value);\n },\n },\n //minTickInterval: 24 * 60 * 60 * 1000 // One day\n },\n options.xAxis\n );\n // Configure series\n if (series?.length) {\n options.series = series;\n if (options.legend) {\n options.legend.enabled = options.legend.enabled ?? series.length >= 2;\n }\n options.colors = ChartColors.getColors(series.length, color);\n }\n }\n\n static redrawWithHighestEdgesRounded(chart: Chart): void {\n chart.series.forEach((serie, serieIndex: number, arr) => {\n ChartOptions.roundHighestSerie(arr, serie.options as SeriesRoundedColumnOptions, serieIndex);\n });\n chart.redraw(true);\n }\n\n static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void {\n const roundedTopMap: number[] = [];\n const roundedBottomMap: number[] = [];\n if (serie.data) {\n serie.data.forEach((point, columnIndex) => {\n const pointValue = ChartOptions.getPointValue(point);\n const pointX = ChartOptions.getPointX(point);\n const isNegative = pointValue !== null && pointValue < 0;\n\n if (isNegative) {\n // Negative bars go downward: the visual tip is the physical bottom.\n // Round bottom corners if no higher-index visible series has a negative value here\n // (meaning this series is the bottommost segment of the negative stack).\n const isBottommost = series.slice(serieIndex + 1).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n if (otherPoint === undefined) return true;\n const val = ChartOptions.getPointValue(otherPoint);\n return val === null || val >= 0;\n });\n roundedTopMap[columnIndex] = 0;\n roundedBottomMap[columnIndex] = isBottommost ? 100 : 0;\n } else {\n // Positive bars go upward: the visual tip is the physical top.\n // Round top corners if all lower-index visible series are 0/missing here\n // (meaning this series is the topmost segment of the positive stack).\n const isTopmost = series.slice(0, serieIndex).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n return otherPoint === undefined || ChartOptions.getPointValue(otherPoint) === 0;\n });\n roundedTopMap[columnIndex] = isTopmost ? 100 : 0;\n roundedBottomMap[columnIndex] = 0;\n }\n });\n serie.borderRadiusTopLeft = roundedTopMap;\n serie.borderRadiusTopRight = roundedTopMap;\n serie.borderRadiusBottomLeft = roundedBottomMap;\n serie.borderRadiusBottomRight = roundedBottomMap;\n }\n }\n\n private static getPointX(point: unknown): number | null {\n if (Array.isArray(point)) return point[0] as number;\n if (point && typeof point === 'object') return (point as { x?: number }).x ?? null;\n return null;\n }\n\n private static findPointAtAbscissa(data: unknown[] | undefined, x: number | null, fallbackIndex: number): unknown {\n if (!data) return undefined;\n if (x !== null) {\n return data.find(p => ChartOptions.getPointX(p) === x);\n }\n return data[fallbackIndex];\n }\n\n private static getPointValue(point: unknown): number | null {\n if (typeof point === 'number') return point;\n if (Array.isArray(point)) return point[1] as number;\n if (point && typeof point === 'object') return (point as { y?: number }).y ?? null;\n return null;\n }\n}\n\nexport function isObject(item: any) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any) {\n const output = deepCopy(target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(key => {\n if (isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] });\n else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction deepCopy(source: any) {\n if (typeof source !== 'object' || source === null) {\n return source; // Return the value if source is not an object\n }\n // Create an array or object to hold the values\n const newObject = Array.isArray(source) ? [] : {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n // Recursively (deep) copy for nested objects, including arrays\n (newObject as any)[key] = deepCopy(source[key]);\n }\n }\n return newObject;\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\nimport { ChartColor } from './../chart-colors';\nimport { SeriesRoundedBarOptions } from './../highchart-series.model';\n\nexport class ChartBarOptions extends ChartOptions {\n static buildBars(options: Options, stacked: boolean, opposite: boolean): Options {\n const bar: PlotBarOptions = {\n maxPointWidth: 20,\n }\n if (stacked && !opposite) {\n bar.stacking = 'normal';\n bar.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n bar.borderRadius = 100;\n }\n\n const defaultBarOptions: Options = {\n chart: {\n type: 'bar',\n },\n legend: {\n symbolHeight: 10,\n },\n xAxis: {\n categories: undefined,\n gridLineWidth: 0,\n lineWidth: 0,\n reversed: false,\n tickWidth: 0,\n labels: {\n align: 'center',\n formatter(): string {\n if (this.value && this.value.toString().length > 16) {\n return this.value.toString().substring(0, 15) + '...';\n }\n return this.value.toString();\n },\n style: {\n width: 100,\n },\n },\n type: 'category',\n },\n yAxis: {\n type: 'linear',\n minTickInterval: 1,\n },\n plotOptions: {\n bar,\n series: {\n borderWidth: 0,\n }\n },\n };\n return super.build(mergeDeep(defaultBarOptions, options));\n }\n\n static configureBar(\n series: SeriesBarOptions[],\n categories: string[],\n options: Options,\n opposite: boolean,\n color: ChartColor,\n labelDateFormat?: string\n ): void {\n ChartOptions.configure(series, options, color, labelDateFormat);\n if (categories && categories.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0] as SeriesRoundedBarOptions;\n negativeSerie.borderRadiusBottomLeft = 100;\n negativeSerie.borderRadiusBottomRight = 100;\n negativeSerie.borderRadiusTopLeft = 0;\n negativeSerie.borderRadiusTopRight = 0;\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return {\n ...point,\n y: -Math.abs(point.y),\n };\n } else if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\n });\n if (options.plotOptions?.series) {\n options.plotOptions.series.stacking = 'normal';\n }\n const yAxisLabels = (options.yAxis as YAxisOptions).labels;\n if (yAxisLabels) {\n yAxisLabels.formatter = function (): string {\n return Math.abs(+this.value) + '%';\n };\n }\n if (options.tooltip) {\n options.tooltip.pointFormatter = function (): string {\n return `<div style=\"font-size: 14px; color: #344563; margin: 6px 8px 0 8px;\"><span style=\"color:${\n this.color\n };\">\\u25CF</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n templateUrl: './chart-bar.component.html',\n standalone: true,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n @Input() categories: string[] = [];\n @Input() opposite: boolean = false;\n @Input() stacked: boolean = false;\n @Input() override series: SeriesBarOptions[] = [];\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite);\n ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked && !this.opposite) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { Options, PlotColumnOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartColumnOptions extends ChartOptions {\n static buildColumn(options: Options, stacked: boolean): Options {\n const column: PlotColumnOptions = {\n borderWidth: 0,\n maxPointWidth: 20\n }\n if (stacked) {\n column.stacking = 'normal';\n column.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n column.borderRadius = 100;\n }\n\n const defaultColumnOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n column,\n },\n xAxis: {\n type: 'datetime',\n minTickInterval: 1,\n },\n };\n return super.build(mergeDeep(defaultColumnOptions, options));\n }\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n templateUrl: './chart-column.component.html',\n standalone: true,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n @Input() override series: SeriesColumnOptions[] = [];\n stacked = input<boolean>(false);\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked());\n ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked()) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n SeriesLineOptions,\n SeriesOptionsType,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\nimport { ChartColor, ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst HEATMAP_CONSTANTS = {\n CHART_HEIGHT: 680,\n GRID_LINE_WIDTH: 2,\n BORDER_WIDTH: 1,\n FONT_SIZE: '13px',\n HEADER_FONT_SIZE: '12px',\n TOOLTIP_FONT_SIZE: '14px',\n LEGEND_SYMBOL_WIDTH: 300,\n LEGEND_SYMBOL_HEIGHT: 10,\n TICK_INTERVAL: 3,\n DEFAULT_TICK_AMOUNT: 6,\n DEFAULT_MAX_VALUE: 3,\n MIN_VALUE: 0,\n FONT_WEIGHT: 'normal',\n} as const;\n\nconst COLORS = {\n WHITE: '#FFFFFF',\n GRID_LINE: 'white',\n NULL_COLOR: 'white',\n DEFAULT_FONT_COLOR: '#858FA1',\n} as const;\n\nexport class ChartHeatmapOptions extends ChartOptions {\n static override build(options: Options): Options {\n const defaultHeatmapOptions: Options = {\n chart: {\n type: 'heatmap',\n height: HEATMAP_CONSTANTS.CHART_HEIGHT,\n },\n colorAxis: {\n allowDecimals: false,\n gridLineWidth: HEATMAP_CONSTANTS.GRID_LINE_WIDTH,\n gridLineColor: COLORS.GRID_LINE,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n minColor: COLORS.WHITE,\n labels: {\n style: {\n fontWeight: HEATMAP_CONSTANTS.FONT_WEIGHT,\n fontSize: HEATMAP_CONSTANTS.FONT_SIZE,\n color: COLORS.DEFAULT_FONT_COLOR,\n },\n overflow: 'allow',\n },\n },\n legend: {\n enabled: true,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom',\n symbolWidth: HEATMAP_CONSTANTS.LEGEND_SYMBOL_WIDTH,\n symbolHeight: HEATMAP_CONSTANTS.LEGEND_SYMBOL_HEIGHT,\n },\n plotOptions: {\n heatmap: {\n borderColor: ChartColors.GREY_COLORS[10],\n borderWidth: HEATMAP_CONSTANTS.BORDER_WIDTH,\n nullColor: COLORS.NULL_COLOR,\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: ${HEATMAP_CONSTANTS.HEADER_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.tooltipHeaderLabel}</span></div>` +\n `<div style=\"font-size: ${HEATMAP_CONSTANTS.TOOLTIP_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n `<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n labels: {\n formatter: this.createXAxisFormatter(),\n },\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: {\n step: 3,\n },\n reversed: true,\n visible: true,\n },\n };\n return super.build(mergeDeep(defaultHeatmapOptions, options));\n }\n\n private static createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) {\n return leastLabel;\n }\n if (this.value === this.axis.max) {\n return mostLabel;\n }\n return '';\n };\n }\n\n private static createXAxisFormatter(): AxisLabelsFormatterCallbackFunction {\n return function () {\n return this.value.toString();\n };\n }\n\n static configureHeatmap(\n categoriesX: string[],\n categoriesY: string[],\n series: SeriesOptionsType[],\n options: Options,\n color: ChartColor,\n leastLabel?: string,\n mostLabel?: string,\n labelDateFormat?: string\n ): void {\n super.configure(series, options, color, labelDateFormat);\n\n this.setAxisCategories(options, categoriesX, categoriesY);\n\n const points = (series[0] as SeriesLineOptions).data as { x: number; y: number; value: number }[];\n const maxValue = points.reduce((max, point) => Math.max(max, point.value), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n\n this.configureColorAxis(options, color, maxValue, leastLabel, mostLabel);\n\n this.configureLegend(options);\n }\n\n private static setAxisCategories(options: Options, categoriesX: string[], categoriesY: string[]): void {\n if (categoriesX?.length) {\n (options.xAxis as XAxisOptions).categories = categoriesX;\n }\n if (categoriesY?.length) {\n (options.yAxis as YAxisOptions).categories = categoriesY;\n }\n }\n\n private static configureColorAxis(\n options: Options,\n color: ChartColor,\n maxValue: number,\n leastLabel?: string,\n mostLabel?: string\n ): void {\n const tickPositions = this.buildTickPositions(maxValue);\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n options.colorAxis = {\n ...(options.colorAxis || {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE,\n tickPositions,\n maxColor: ChartColors.getChartColors(color)[100],\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels || {}),\n formatter: this.createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n\n private static configureLegend(options: Options): void {\n options.legend = {\n ...options.legend,\n enabled: true,\n };\n }\n\n private static buildTickPositions(maxValue: number): number[] {\n const tickAmount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;\n\n // Calculate the step between each tick\n // We subtract 1 from tickAmount so that the last tick is exactly at maxValue\n const step = maxValue / (tickAmount - 1);\n\n // Generate an array of positions for the ticks\n // Each position is calculated as i * step and rounded to 2 decimal places\n return Array.from({ length: tickAmount }, (_, i) => parseFloat((i * step).toFixed(2)));\n }\n}\n","import { Component, effect, input, Input } from '@angular/core';\nimport { SeriesHeatmapOptions } from 'highcharts';\nimport { mapChart } from 'highcharts/highmaps';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartHeatmapOptions } from './chart-heatmap-options.model';\n\ntype LabelKeys = 'least' | 'most';\n\n@Component({\n selector: 'ap-chart-heatmap',\n templateUrl: './chart-heatmap.component.html',\n standalone: true,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n @Input() categoriesX: string[] = [];\n @Input() categoriesY: string[] = [];\n @Input() override series: SeriesHeatmapOptions[] = [];\n\n legendLabels = input<Record<LabelKeys, string>>();\n\n private readonly legendLabelsEffect = effect(() => {\n this.legendLabels();\n this.initChart();\n });\n\n initChart(): void {\n if (this.series && this.chartRef) {\n const chartOptions = ChartHeatmapOptions.build(this.chartOptions);\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX,\n this.categoriesY,\n this.series,\n chartOptions,\n this.color,\n this.legendLabels()?.least,\n this.legendLabels()?.most,\n this.labelDateFormat\n );\n mapChart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","export enum ChartMetricType {\n default,\n total,\n}\n\nexport class ChartMetric {\n children?: ChartMetric[];\n name = '';\n type?: ChartMetricType;\n value = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { ChartMetric, ChartMetricType } from '../chart-metric';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-chart-metrics-list',\n styleUrls: ['chart-metrics-list.component.scss'],\n templateUrl: 'chart-metrics-list.component.html',\n imports: [CommonModule, MatListModule, MatDividerModule],\n})\nexport class ChartMetricsListComponent {\n @Input({\n required: true,\n })\n metrics: ChartMetric[] = [];\n @Input() locale = 'en';\n\n ChartMetricType = ChartMetricType;\n digitsInfo = '1.0-1';\n}\n","<mat-list>\n @if (metrics) {\n @for (metric of metrics; track metric; let i = $index) {\n <mat-list-item [ngClass]=\"{ 'chart-metric-total': metric.type === ChartMetricType.total }\">\n @if (!metric.children) {\n <div class=\"chart-metric-name metric-label\">\n {{ metric.name }}\n </div>\n }\n @if (metric.children) {\n <div class=\"chart-metric-name\">\n <span class=\"metric-label\">\n {{ metric.name }}\n </span>\n <span class=\"chart-metric-children\">\n @for (item of metric.children; track item) {\n <span>\n <span class=\"child-label\">{{ item.name }}</span>\n :\n <span class=\"child-value\">{{ item.value }}</span>\n </span>\n }\n </span>\n </div>\n }\n <div class=\"chart-metric-value metric-label\">\n {{ metric.value | number: digitsInfo : locale }}\n </div>\n </mat-list-item>\n }\n }\n</mat-list>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartMixedOptions extends ChartOptions {\n static buildMixed(options: Options, singleDayEnabled: boolean): Options {\n const defaultOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n column: {\n stacking: 'normal',\n borderWidth: 0,\n maxPointWidth: 20,\n events: {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultOptions, options));\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n templateUrl: './chart-mixed.component.html',\n standalone: true,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n @Input() override series: SeriesOptionsType[] = [];\n\n initChart(): void {\n if (this.series) {\n const singleDayEnabled = (this.series.find(serie => serie.type === 'spline') as SeriesSplineOptions)?.data?.length === 1;\n const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled);\n ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { numberFormat, Options, PointOptionsObject, SeriesPieDataLabelsOptionsObject, SeriesPieOptions } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\nconst RIGHT_TO_LEFT_CHARACTERS =\n /[\\p{Script=Arabic}\\p{Script=Hebrew}\\p{Script=Syriac}\\p{Script=Thaana}\\p{Script=Nko}\\p{Script=Samaritan}\\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters\nconst RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\\u202B'; // Right-to-left embedding character\n\nexport class ChartPieOptions extends ChartOptions {\n static buildPie(options: Options, innerLabels: boolean, metricFormat: 'percentage' | 'value'): Options {\n const defaultPieOptions: Options = {\n chart: {\n type: 'pie',\n plotBackgroundColor: undefined,\n plotBorderWidth: undefined,\n plotShadow: false,\n },\n plotOptions: {\n pie: {\n dataLabels: {\n distance: innerLabels ? -40 : 30,\n useHTML: true,\n },\n innerSize: '50%',\n },\n series: {\n allowPointSelect: !innerLabels,\n dataLabels: innerLabels\n ? {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n }\n : {\n formatter: function () {\n const name =\n this.name.length > NAME_MAX_LENGTH\n ? this.name.substring(0, NAME_MAX_LENGTH) + '...'\n : this.name;\n const displayValue =\n metricFormat === 'percentage'\n ? Math.round((this.percentage ?? 0) * 10) / 10 + '%'\n : numberFormat(this.y ?? 0, -1);\n // Add right-to-left embedding character only if the first character is a right-to-left character\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))\n ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER\n : '';\n return prefix + name + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n },\n showInLegend: innerLabels,\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels\n ? {\n symbolHeight: 10,\n enabled: true,\n }\n : {},\n };\n return super.build(mergeDeep(defaultPieOptions, options));\n }\n\n static configurePie(\n series: SeriesPieOptions[],\n options: Options,\n colors: string[],\n labelDateFormat: string,\n innerLabels: boolean,\n mouseEventEnabled = true\n ): void {\n super.configure(series, options, undefined, labelDateFormat);\n if (innerLabels && options.legend) {\n options.legend.enabled = true;\n }\n if (series && series.length > 0 && series[0]) {\n options.colors = colors;\n if (mouseEventEnabled && options.plotOptions?.pie) {\n this.resetColors(series[0].data as PointOptionsObject[], innerLabels);\n options.plotOptions.pie.point ??= {};\n options.plotOptions.pie.point.events ??= {};\n options.plotOptions.pie.events ??= {};\n this.configureEnteringASlice(options, innerLabels);\n this.configureLeavingASlice(options, innerLabels);\n this.configureLeavingTheWholePie(options, innerLabels);\n }\n }\n }\n\n private static resetColors(points: PointOptionsObject[], innerLabels: boolean) {\n points?.forEach(point => {\n delete point?.color;\n if (innerLabels) {\n delete (point.dataLabels as SeriesPieDataLabelsOptionsObject)?.style?.color;\n }\n });\n }\n\n private static configureEnteringASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOver = function (): void {\n this.series.chart.series[0].points.forEach(point => {\n if (point.index !== this.index) {\n point.update(\n {\n color: ChartColors.GREY_COLORS[5],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: ChartColors.GREY_COLORS[20],\n },\n },\n },\n false\n );\n }\n }\n });\n this.series.chart.redraw(false);\n };\n }\n }\n\n private static configureLeavingASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOut = function (): void {\n this.series.chart.series[0].points.forEach((point, i) => {\n if (point.index !== this.index) {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n }\n });\n };\n }\n }\n\n private static configureLeavingTheWholePie(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.events) {\n options.plotOptions.pie.events.mouseOut = function (): void {\n this.chart.series[0].points.forEach((point, i) => {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n });\n this.chart.redraw();\n };\n }\n }\n}\n","import { afterNextRender, Component, effect, input, Input, signal } from '@angular/core';\nimport { Chart, SeriesPieOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColors } from '../chart-colors';\nimport { ChartPieOptions } from './chart-pie-options.model';\n\n@Component({\n selector: 'ap-chart-pie',\n templateUrl: './chart-pie.component.html',\n standalone: true,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n @Input() innerLabels = false;\n @Input() mouseEventEnabled = true;\n @Input() override series: SeriesPieOptions[] = [];\n colors = input<string[]>();\n metricFormat = input<'percentage' | 'value'>('percentage');\n\n private domReady = signal(false);\n constructor() {\n super();\n effect(() => {\n if (this.domReady()) {\n this.colors();\n this.initChart();\n }\n });\n\n afterNextRender(() => {\n this.domReady.set(true);\n });\n }\n\n initChart(): void {\n if (this.series) {\n const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;\n const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat());\n\n // Add placeholder series when there's no data\n const updatedSeries = dataAvailable\n ? this.series\n : [\n {\n type: 'pie' as const,\n data: [\n {\n y: 1,\n dataLabels: {\n enabled: false,\n },\n },\n ],\n enableMouseTracking: false,\n },\n ];\n\n let colors = this.colors();\n if (!dataAvailable) {\n colors = [ChartColors.GREY_COLORS[10]];\n } else if (!colors?.length) {\n colors = ChartColors.getColors(this.series[0]?.data?.length ?? 0, this.color);\n }\n ChartPieOptions.configurePie(\n updatedSeries,\n chartOptions,\n colors,\n this.labelDateFormat,\n this.innerLabels,\n this.mouseEventEnabled\n );\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartSplineOptions extends ChartOptions {\n static buildSpline(options: Options, singleDayEnabled: boolean): Options {\n const defaultSplineOptions: Options = {\n chart: {\n type: 'spline',\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultSplineOptions, options));\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Chart, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartSplineOptions } from './chart-spline-options.model';\n\n@Component({\n selector: 'ap-chart-spline',\n templateUrl: './chart-spline.component.html',\n standalone: true,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n @Input() override series: SeriesSplineOptions[] = [];\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1);\n ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","/*\n * Public API Surface of ui-charts\n */\n\nimport * as Highcharts from 'highcharts';\nimport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n\nborderRadiusPlugin(Highcharts);\n\nexport { AbstractChartComponent } from './src/lib/abstract-chart.component';\nexport { ChartBarComponent } from './src/lib/chart-bar/chart-bar.component';\nexport { ChartColor, ChartColors } from './src/lib/chart-colors';\nexport { ChartColumnComponent } from './src/lib/chart-column/chart-column.component';\nexport { ChartHeatmapComponent } from './src/lib/chart-heatmap/chart-heatmap.component';\nexport { ChartMetric, ChartMetricType } from './src/lib/chart-metric';\nexport { ChartMetricsListComponent } from './src/lib/chart-metrics-list/chart-metrics-list.component';\nexport { ChartMixedComponent } from './src/lib/chart-mixed/chart-mixed.component';\nexport { ChartOptions, mergeDeep } from './src/lib/chart-options';\nexport { ChartPieComponent } from './src/lib/chart-pie/chart-pie.component';\nexport { ChartSplineComponent } from './src/lib/chart-spline/chart-spline.component';\n\nexport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;AACO,MAAM,kBAAkB,GAAG,UAAU,CAAM,EAAA;AAC9C,IAAA,IAAI,CAAC,CAAC,6BAA6B,EAAE;QACjC;IACJ;AACA,IAAA,CAAC,CAAC,6BAA6B,GAAG,IAAI;AAEtC,IAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,OAAY,EAAA;;AAEtE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC;AACxC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;AAC9C,QAAA,MAAM,2BAA2B,GAAG,OAAO,CAAC,mBAAmB;AAC/D,QAAA,MAAM,4BAA4B,GAAG,OAAO,CAAC,oBAAoB;AACjE,QAAA,MAAM,8BAA8B,GAAG,OAAO,CAAC,sBAAsB;AACrE,QAAA,MAAM,+BAA+B,GAAG,OAAO,CAAC,uBAAuB;;AAEvE,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGlB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd;QACJ;AAEA,QAAA,IACI,2BAA2B;YAC3B,4BAA4B;YAC5B,8BAA8B;AAC9B,YAAA,+BAA+B,EACjC;;AAEE,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAA;AAC/B,gBAAA,UAAU,CACN,2BAA2B,EAC3B,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,EACL,CAAC,EACD,SAAS,EACT,YAAY,CACf;AACL,YAAA,CAAC,CAAC;QACN;AACJ,IAAA,CAAC,CAAC;AACN;AAEA,SAAS,UAAU,CACf,2BAA2C,EAC3C,4BAA4C,EAC5C,8BAA8C,EAC9C,+BAA+C,EAC/C,KAAuI,EACvI,CAAoD,EACpD,SAAc,EACd,YAAiB,EAAA;AAEjB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;AAC/B,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM;AAChC,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAA,MAAM,mBAAmB,GAAG,2BAA2B,EAAE;AACrD,UAAG,2BAAmC,CAAC,KAAK,CAAC,KAAK;AAClD,UAAE,2BAA2B,IAAI,CAAC;AACtC,IAAA,MAAM,oBAAoB,GAAG,4BAA4B,EAAE;AACvD,UAAG,4BAAoC,CAAC,KAAK,CAAC,KAAK;AACnD,UAAE,4BAA4B,IAAI,CAAC;AACvC,IAAA,MAAM,sBAAsB,GAAG,8BAA8B,EAAE;AAC3D,UAAG,8BAAsC,CAAC,KAAK,CAAC,KAAK;AACrD,UAAE,8BAA8B,IAAI,CAAC;AACzC,IAAA,MAAM,uBAAuB,GAAG,+BAA+B,EAAE;AAC7D,UAAG,+BAAuC,CAAC,KAAK,CAAC,KAAK;AACtD,UAAE,+BAA+B,IAAI,CAAC;IAE1C,IAAI,aAAa,GAAG,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5D,IAAI,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC9D,IAAI,iBAAiB,GAAG,CAAC,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACpE,IAAI,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAElE,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAE/B,IAAA,aAAa,GAAG,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,aAAa;AAC3D,IAAA,cAAc,GAAG,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc;AAC9D,IAAA,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,iBAAiB;AACvE,IAAA,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB;AAEpE,IAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS;AAE7B,IAAA,KAAK,CAAC,SAAS,GAAG,MAAM;IACxB,KAAK,CAAC,SAAS,GAAG;AACd,QAAA,CAAC,EAAE;YACC,GAAG;AACH,YAAA,CAAC,GAAG,aAAa;AACjB,YAAA,CAAC,GAAG,SAAS;YACb,GAAG;YACH,CAAC,GAAG,CAAC,GAAG,cAAc;AACtB,YAAA,CAAC,GAAG,SAAS;YACb,GAAG;AACH,YAAA,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC;YAC1B,CAAC;AACD,YAAA,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,cAAc,GAAG,CAAC;AACtB,YAAA,CAAC,GAAG,CAAC;AACL,YAAA,CAAC,GAAG,cAAc;YAClB,GAAG;AACH,YAAA,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC,GAAG,iBAAiB;YACzB,GAAG;AACH,YAAA,CAAC,GAAG,CAAC;AACL,YAAA,CAAC,GAAG,CAAC,GAAG,iBAAiB,GAAG,CAAC;AAC7B,YAAA,CAAC,GAAG,CAAC,GAAG,iBAAiB,GAAG,CAAC;AAC7B,YAAA,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC,GAAG,iBAAiB;YACzB,CAAC,GAAG,CAAC,GAAG,YAAY;YACpB,GAAG;AACH,YAAA,CAAC,GAAG,gBAAgB;YACpB,CAAC,GAAG,CAAC,GAAG,YAAY;YACpB,GAAG;YACH,CAAC,GAAG,gBAAgB,GAAG,CAAC;AACxB,YAAA,CAAC,GAAG,CAAC;YACL,CAAC;AACD,YAAA,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC;YAC5B,CAAC;YACD,CAAC,GAAG,CAAC,GAAG,gBAAgB;YACxB,GAAG;YACH,CAAC;AACD,YAAA,CAAC,GAAG,aAAa;YACjB,GAAG;YACH,CAAC;YACD,CAAC,GAAG,aAAa,GAAG,CAAC;YACrB,CAAC,GAAG,aAAa,GAAG,CAAC;YACrB,CAAC;AACD,YAAA,CAAC,GAAG,aAAa;YACjB,CAAC;YACD,GAAG;AACN,SAAA;KACJ;AACL;;ICzIY;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACT,CAAC,EAPW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;MAST,WAAW,CAAA;IACpB,OAAgB,gBAAgB,GAAG;AAC/B,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IACD,OAAgB,oBAAoB,GAAG;AACnC,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IACD,OAAgB,aAAa,GAAG;AAC5B,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IACD,OAAgB,YAAY,GAAG;AAC3B,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IACD,OAAgB,aAAa,GAAG;AAC5B,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IACD,OAAgB,WAAW,GAAG;AAC1B,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;KACnB;IAED,OAAgB,UAAU,GAAG;AACzB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE;KACV;IAED,OAAgB,eAAe,GAAG;AAC9B,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,EAAE,EAAE,SAAS;KAChB;AAED,IAAA,OAAgB,WAAW,GAAW,SAAS;AAC/C,IAAA,OAAgB,WAAW,GAAW,SAAS;AAC/C,IAAA,OAAgB,WAAW,GAAW,SAAS;IAE/C,OAAO,cAAc,CAAC,KAA6B,EAAA;QAC/C,QAAQ,KAAK;YACT,KAAK,UAAU,CAAC,MAAM;gBAClB,OAAO,IAAI,CAAC,aAAa;YAC7B,KAAK,UAAU,CAAC,QAAQ;gBACpB,OAAO,IAAI,CAAC,gBAAgB;YAChC,KAAK,UAAU,CAAC,YAAY;gBACxB,OAAO,IAAI,CAAC,oBAAoB;YACpC,KAAK,UAAU,CAAC,MAAM;gBAClB,OAAO,IAAI,CAAC,aAAa;YAC7B,KAAK,UAAU,CAAC,KAAK;gBACjB,OAAO,IAAI,CAAC,YAAY;AAC5B,YAAA;gBACI,OAAO,IAAI,CAAC,WAAW;;IAEnC;AAEA,IAAA,OAAO,SAAS,CAAC,WAAmB,EAAE,KAA6B,EAAA;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACzC,QAAQ,WAAW;AACf,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,KAAK,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAChD,YAAA,KAAK,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5D,YAAA,KAAK,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACzE,YAAA;AACI,gBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;IAE7F;;;MC9GkB,sBAAsB,CAAA;AACpB,IAAA,QAAQ;AAEnB,IAAA,YAAY,GAAY,EAAE,CAAC;AAC3B,IAAA,KAAK,GAAe,UAAU,CAAC,YAAY;IAC3C,eAAe,GAAG,OAAO;IACzB,MAAM,GAAoB,EAAE;AAE3B,IAAA,KAAK;IACP,SAAS,GAAG,CAAC;AAErB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IACI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;aAC7C,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;aAC5C,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;AAC3D,aAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAC7D;YACE,IAAI,CAAC,SAAS,EAAE;QACpB;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;YACvG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;AACxD,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACvB;iBAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,SAAS,EAAE;YACpB;QACJ;IACJ;uGA/BkB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C;8BAEuB,QAAQ,EAAA,CAAA;sBAA3B,SAAS;uBAAC,OAAO;gBAET,YAAY,EAAA,CAAA;sBAApB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MCPQ,YAAY,CAAA;AACrB,IAAA,OAAgB,mBAAmB,GAAW,eAAe;IAC7D,OAAgB,eAAe,GAAY;AACvC;;;;;;;;;;;;AAYI;AACJ,QAAA,KAAK,EAAE;AACH,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,OAAO,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,WAAW,EAAE;AACT,oBAAA,KAAK,EAAE;wBACH,IAAI,EAAE,WAAW,CAAC,WAAW;AAC7B,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,KAAK,EAAE;AACH,4BAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,4BAAA,QAAQ,EAAE,MAAM;AACnB,yBAAA;AACD,wBAAA,MAAM,EAAE;AACJ,4BAAA,KAAK,EAAE;AACH,gCAAA,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACnC,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,KAAK,EAAE;AACH,gBAAA,UAAU,EAAE,4CAA4C;AAC3D,aAAA;AACJ,SAAA;AACD,QAAA,SAAS,EAAE;AACP,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE;AACH,oBAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACrC,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,OAAO,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,MAAM,EAAE;AACJ,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE;AACP,gBAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAClC,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,UAAU,EAAE,QAAQ;AACvB,aAAA;AACD,YAAA,cAAc,EAAE;AACZ,gBAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,gBAAA,UAAU,EAAE,MAAM;AACrB,aAAA;AACJ,SAAA;AACD,QAAA,WAAW,EAAE;AACT,YAAA,MAAM,EAAE;AACJ,gBAAA,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE;AACH,wBAAA,UAAU,EAAE,CAAC;AAChB,qBAAA;AACJ,iBAAA;AACD,gBAAA,YAAY,EAAE,IAAI;AACrB,aAAA;AACJ,SAAA;AACD,QAAA,UAAU,EAAE;AACR,YAAA,aAAa,EAAE;AACX,gBAAA,CAAC,EAAE,CAAC;AACP,aAAA;AACJ,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,IAAI,EAAE,SAAS;AAClB,SAAA;AACD,QAAA,OAAO,EAAE;YACL,eAAe,EAAE,WAAW,CAAC,WAAW;AACxC,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,oBAAoB,EAAE;gBAClB,GAAG,EAAE,YAAY,CAAC,mBAAmB;gBACrC,IAAI,EAAE,YAAY,CAAC,mBAAmB;AACzC,aAAA;AACD,YAAA,MAAM,EAAE;gBACJ,KAAK,EAAE,WAAW,CAAC,WAAW;AAC9B,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA;AACD,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,IAAI;YACb,YAAY,EACR,wCAAwC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,sBAAA,CAAwB;AAC3F,gBAAA,CAAA,qCAAA,EAAwC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,0BAAA,CAA4B;YACnG,WAAW,EACP,uCAAuC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,0BAAA,CAA4B;gBAC/F,8GAA8G;AACrH,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1C,YAAA,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACtC,YAAA,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACtC,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,IAAI;AACb,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE;AACH,oBAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAClC,oBAAA,QAAQ,EAAE,MAAM;AACnB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1C,YAAA,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACtC,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE;AACH,oBAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAClC,oBAAA,QAAQ,EAAE,MAAM;AACnB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAED,OAAO,KAAK,CAAC,OAAgB,EAAA;QACzB,OAAO,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IAC3D;IAEA,OAAO,SAAS,CAAC,MAA2B,EAAE,OAAgB,EAAE,KAA6B,EAAE,eAAwB,EAAA;;AAEnH,QAAA,OAAO,CAAC,KAAK,GAAG,SAAS,CACrB;AACI,YAAA,MAAM,EAAE;AACJ,gBAAA,SAAS,EAAE,YAAA;;;oBAGP,OAAO,UAAU,CAAC,eAAe,IAAI,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;gBAC7D,CAAC;AACJ,aAAA;;AAEJ,SAAA,EACD,OAAO,CAAC,KAAK,CAChB;;AAED,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAChB,YAAA,OAAO,CAAC,MAAM,GAAG,MAAM;AACvB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;YACzE;AACA,YAAA,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAChE;IACJ;IAEA,OAAO,6BAA6B,CAAC,KAAY,EAAA;AAC7C,QAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAkB,EAAE,GAAG,KAAI;YACpD,YAAY,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,OAAqC,EAAE,UAAU,CAAC;AAChG,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACtB;AAEA,IAAA,OAAO,iBAAiB,CAAC,MAAgB,EAAE,KAAiC,EAAE,UAAkB,EAAA;QAC5F,MAAM,aAAa,GAAa,EAAE;QAClC,MAAM,gBAAgB,GAAa,EAAE;AACrC,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE;YACZ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,WAAW,KAAI;gBACtC,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC;gBACpD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5C,MAAM,UAAU,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC;gBAExD,IAAI,UAAU,EAAE;;;;AAIZ,oBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAG;wBACjE,IAAI,CAAC,UAAU,CAAC,OAAO;AAAE,4BAAA,OAAO,IAAI;AACpC,wBAAA,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,CAC9C,UAAU,CAAC,OAAsC,CAAC,IAAI,EACvD,MAAM,EACN,WAAW,CACd;wBACD,IAAI,UAAU,KAAK,SAAS;AAAE,4BAAA,OAAO,IAAI;wBACzC,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC;AAClD,wBAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;AACnC,oBAAA,CAAC,CAAC;AACF,oBAAA,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC;AAC9B,oBAAA,gBAAgB,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,GAAG,GAAG,CAAC;gBAC1D;qBAAO;;;;AAIH,oBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,IAAG;wBAC7D,IAAI,CAAC,UAAU,CAAC,OAAO;AAAE,4BAAA,OAAO,IAAI;AACpC,wBAAA,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,CAC9C,UAAU,CAAC,OAAsC,CAAC,IAAI,EACvD,MAAM,EACN,WAAW,CACd;AACD,wBAAA,OAAO,UAAU,KAAK,SAAS,IAAI,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;AACnF,oBAAA,CAAC,CAAC;AACF,oBAAA,aAAa,CAAC,WAAW,CAAC,GAAG,SAAS,GAAG,GAAG,GAAG,CAAC;AAChD,oBAAA,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC;gBACrC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,CAAC,mBAAmB,GAAG,aAAa;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,aAAa;AAC1C,YAAA,KAAK,CAAC,sBAAsB,GAAG,gBAAgB;AAC/C,YAAA,KAAK,CAAC,uBAAuB,GAAG,gBAAgB;QACpD;IACJ;IAEQ,OAAO,SAAS,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,CAAW;AACnD,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAQ,KAAwB,CAAC,CAAC,IAAI,IAAI;AAClF,QAAA,OAAO,IAAI;IACf;AAEQ,IAAA,OAAO,mBAAmB,CAAC,IAA2B,EAAE,CAAgB,EAAE,aAAqB,EAAA;AACnG,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,SAAS;AAC3B,QAAA,IAAI,CAAC,KAAK,IAAI,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1D;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B;IAEQ,OAAO,aAAa,CAAC,KAAc,EAAA;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,CAAW;AACnD,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAQ,KAAwB,CAAC,CAAC,IAAI,IAAI;AAClF,QAAA,OAAO,IAAI;IACf;;AAGE,SAAU,QAAQ,CAAC,IAAS,EAAA;AAC9B,IAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACnE;AAEM,SAAU,SAAS,CAAC,MAAW,EAAE,MAAW,EAAA;AAC9C,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC;AAAE,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;AAC9D,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D;iBAAO;AACH,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD;AACJ,QAAA,CAAC,CAAC;IACN;AACA,IAAA,OAAO,MAAM;AACjB;AAEA,SAAS,QAAQ,CAAC,MAAW,EAAA;IACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;QAC/C,OAAO,MAAM,CAAC;IAClB;;AAEA,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACjD,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,QAAA,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;;YAE3B,SAAiB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnD;IACJ;AACA,IAAA,OAAO,SAAS;AACpB;;ACxRM,MAAO,eAAgB,SAAQ,YAAY,CAAA;AAC7C,IAAA,OAAO,SAAS,CAAC,OAAgB,EAAE,OAAgB,EAAE,QAAiB,EAAA;AAClE,QAAA,MAAM,GAAG,GAAoB;AACzB,YAAA,aAAa,EAAE,EAAE;SACpB;AACD,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,GAAG,CAAC,QAAQ,GAAG,QAAQ;YACvB,GAAG,CAAC,MAAM,GAAG;gBACT,IAAI,GAAA;AACA,oBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1D,CAAC;gBACD,IAAI,GAAA;AACA,oBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1D,CAAC;aACJ;QACL;aAAO;AACH,YAAA,GAAG,CAAC,YAAY,GAAG,GAAG;QAC1B;AAEA,QAAA,MAAM,iBAAiB,GAAY;AAC/B,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,KAAK;AACd,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,YAAY,EAAE,EAAE;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE,QAAQ;oBACf,SAAS,GAAA;AACL,wBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE;AACjD,4BAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;wBACzD;AACA,wBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAChC,CAAC;AACD,oBAAA,KAAK,EAAE;AACH,wBAAA,KAAK,EAAE,GAAG;AACb,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,eAAe,EAAE,CAAC;AACrB,aAAA;AACD,YAAA,WAAW,EAAE;gBACT,GAAG;AACH,gBAAA,MAAM,EAAE;AACJ,oBAAA,WAAW,EAAE,CAAC;AACjB;AACJ,aAAA;SACJ;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC7D;AAEA,IAAA,OAAO,YAAY,CACf,MAA0B,EAC1B,UAAoB,EACpB,OAAgB,EAChB,QAAiB,EACjB,KAAiB,EACjB,eAAwB,EAAA;QAExB,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC;AAC/D,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;AAChC,YAAA,OAAO,CAAC,KAAsB,CAAC,UAAU,GAAG,UAAU;QAC3D;QACA,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAA4B;AAC1D,YAAA,aAAa,CAAC,sBAAsB,GAAG,GAAG;AAC1C,YAAA,aAAa,CAAC,uBAAuB,GAAG,GAAG;AAC3C,YAAA,aAAa,CAAC,mBAAmB,GAAG,CAAC;AACrC,YAAA,aAAa,CAAC,oBAAoB,GAAG,CAAC;AACtC,YAAA,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAU,KAAI;AACxD,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;oBACvB,OAAO;AACH,wBAAA,GAAG,KAAK;wBACR,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;qBACxB;gBACL;AAAO,qBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B;AACA,gBAAA,OAAO,KAAK;AAChB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;gBAC7B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ;YAClD;AACA,YAAA,MAAM,WAAW,GAAI,OAAO,CAAC,KAAsB,CAAC,MAAM;YAC1D,IAAI,WAAW,EAAE;gBACb,WAAW,CAAC,SAAS,GAAG,YAAA;oBACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG;AACtC,gBAAA,CAAC;YACL;AACA,YAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACjB,gBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,YAAA;oBAC7B,OAAO,CAAA,wFAAA,EACH,IAAI,CAAC,KACT,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA,UAAA,CAAY;AACvF,gBAAA,CAAC;YACL;QACJ;IACJ;AACH;;ACrGK,MAAO,iBAAkB,SAAQ,sBAAsB,CAAA;IAChD,UAAU,GAAa,EAAE;IACzB,QAAQ,GAAY,KAAK;IACzB,OAAO,GAAY,KAAK;IACf,MAAM,GAAuB,EAAE;IAEjD,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;YAC9F,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;AACzH,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9C,gBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1D;QACJ;IACJ;uGAfS,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,iMCX9B,sBACA,EAAA,CAAA;;2FDUa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAEZ,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;8BAGP,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACiB,MAAM,EAAA,CAAA;sBAAvB;;;AEZC,MAAO,kBAAmB,SAAQ,YAAY,CAAA;AAChD,IAAA,OAAO,WAAW,CAAC,OAAgB,EAAE,OAAgB,EAAA;AACjD,QAAA,MAAM,MAAM,GAAuB;AAC/B,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,aAAa,EAAE;SAClB;QACD,IAAI,OAAO,EAAE;AACC,YAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ;YAC1B,MAAM,CAAC,MAAM,GAAG;gBACZ,IAAI,GAAA;AACA,oBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1D,CAAC;gBACD,IAAI,GAAA;AACA,oBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1D,CAAC;aACJ;QACf;aAAO;AACH,YAAA,MAAM,CAAC,YAAY,GAAG,GAAG;QAC7B;AAEC,QAAA,MAAM,oBAAoB,GAAY;AACnC,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,YAAY,EAAE,EAAE;AACnB,aAAA;AACD,YAAA,WAAW,EAAE;gBACT,MAAM;AACT,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,eAAe,EAAE,CAAC;AACrB,aAAA;SACJ;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAChE;AACH;;AC7BK,MAAO,oBAAqB,SAAQ,sBAAsB,CAAA;IAC1C,MAAM,GAA0B,EAAE;AACpD,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AACrB,IAAA,gBAAgB,GAAwB,IAAI,YAAY,EAAE;IAEpE,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACtF,YAAA,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;AACzF,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;YACjE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC9B,gBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1D;YACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1C;IACJ;uGAfS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2ZCXjC,sBACA,EAAA,CAAA;;2FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;8BAGE,MAAM,EAAA,CAAA;sBAAvB;gBAES,gBAAgB,EAAA,CAAA;sBAAzB;;;AEFL,MAAM,iBAAiB,GAAG;AACtB,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,gBAAgB,EAAE,MAAM;AACxB,IAAA,iBAAiB,EAAE,MAAM;AACzB,IAAA,mBAAmB,EAAE,GAAG;AACxB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,aAAa,EAAE,CAAC;AAChB,IAAA,mBAAmB,EAAE,CAAC;AACtB,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,WAAW,EAAE,QAAQ;CACf;AAEV,MAAM,MAAM,GAAG;AACX,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,kBAAkB,EAAE,SAAS;CACvB;AAEJ,MAAO,mBAAoB,SAAQ,YAAY,CAAA;IACjD,OAAgB,KAAK,CAAC,OAAgB,EAAA;AAClC,QAAA,MAAM,qBAAqB,GAAY;AACnC,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,iBAAiB,CAAC,YAAY;AACzC,aAAA;AACD,YAAA,SAAS,EAAE;AACP,gBAAA,aAAa,EAAE,KAAK;gBACpB,aAAa,EAAE,iBAAiB,CAAC,eAAe;gBAChD,aAAa,EAAE,MAAM,CAAC,SAAS;gBAC/B,GAAG,EAAE,iBAAiB,CAAC,SAAS;gBAChC,QAAQ,EAAE,MAAM,CAAC,KAAK;AACtB,gBAAA,MAAM,EAAE;AACJ,oBAAA,KAAK,EAAE;wBACH,UAAU,EAAE,iBAAiB,CAAC,WAAW;wBACzC,QAAQ,EAAE,iBAAiB,CAAC,SAAS;wBACrC,KAAK,EAAE,MAAM,CAAC,kBAAkB;AACnC,qBAAA;AACD,oBAAA,QAAQ,EAAE,OAAO;AACpB,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,aAAa,EAAE,QAAQ;gBACvB,WAAW,EAAE,iBAAiB,CAAC,mBAAmB;gBAClD,YAAY,EAAE,iBAAiB,CAAC,oBAAoB;AACvD,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,OAAO,EAAE;AACL,oBAAA,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;oBACxC,WAAW,EAAE,iBAAiB,CAAC,YAAY;oBAC3C,SAAS,EAAE,MAAM,CAAC,UAAU;AAC/B,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,YAAY,EAAE,EAAE;gBAChB,WAAW,EACP,wCAAwC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,sBAAA,CAAwB;oBAC3F,CAAA,wBAAA,EAA2B,iBAAiB,CAAC,gBAAgB,CAAA,SAAA,EAAY,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,yCAAA,CAA2C;oBAC/I,CAAA,uBAAA,EAA0B,iBAAiB,CAAC,iBAAiB,CAAA,SAAA,EAAY,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,0BAAA,CAA4B;oBACjI,CAAA,qGAAA,CAAuG;AAC9G,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,MAAM,EAAE;AACJ,oBAAA,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACzC,iBAAA;AACD,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,MAAM,EAAE;AACJ,oBAAA,IAAI,EAAE,CAAC;AACV,iBAAA;AACD,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA;SACJ;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IACjE;AAEQ,IAAA,OAAO,wBAAwB,CAAC,UAAkB,EAAE,SAAiB,EAAA;QACzE,OAAO,YAAA;YACH,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC9B,gBAAA,OAAO,UAAU;YACrB;YACA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC9B,gBAAA,OAAO,SAAS;YACpB;AACA,YAAA,OAAO,EAAE;AACb,QAAA,CAAC;IACL;AAEQ,IAAA,OAAO,oBAAoB,GAAA;QAC/B,OAAO,YAAA;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAChC,QAAA,CAAC;IACL;AAEA,IAAA,OAAO,gBAAgB,CACnB,WAAqB,EACrB,WAAqB,EACrB,MAA2B,EAC3B,OAAgB,EAChB,KAAiB,EACjB,UAAmB,EACnB,SAAkB,EAClB,eAAwB,EAAA;QAExB,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC;QAExD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;QAEzD,MAAM,MAAM,GAAI,MAAM,CAAC,CAAC,CAAuB,CAAC,IAAiD;AACjG,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,iBAAiB,CAAC,iBAAiB;AAEpH,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;AAExE,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;IACjC;AAEQ,IAAA,OAAO,iBAAiB,CAAC,OAAgB,EAAE,WAAqB,EAAE,WAAqB,EAAA;AAC3F,QAAA,IAAI,WAAW,EAAE,MAAM,EAAE;AACpB,YAAA,OAAO,CAAC,KAAsB,CAAC,UAAU,GAAG,WAAW;QAC5D;AACA,QAAA,IAAI,WAAW,EAAE,MAAM,EAAE;AACpB,YAAA,OAAO,CAAC,KAAsB,CAAC,UAAU,GAAG,WAAW;QAC5D;IACJ;IAEQ,OAAO,kBAAkB,CAC7B,OAAgB,EAChB,KAAiB,EACjB,QAAgB,EAChB,UAAmB,EACnB,SAAkB,EAAA;QAElB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QACvD,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,IAAI,SAAS,CAAC;QAEjD,OAAO,CAAC,SAAS,GAAG;AAChB,YAAA,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;AAC5B,YAAA,OAAO,EAAE,aAAa;YACtB,GAAG,EAAE,iBAAiB,CAAC,SAAS;YAChC,GAAG,EAAE,iBAAiB,CAAC,iBAAiB;YACxC,aAAa;YACb,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;SACnD;QAED,IAAI,aAAa,EAAE;AACf,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG;gBACvB,IAAK,OAAO,CAAC,SAA8B,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC1D,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;aAClE;QACL;IACJ;IAEQ,OAAO,eAAe,CAAC,OAAgB,EAAA;QAC3C,OAAO,CAAC,MAAM,GAAG;YACb,GAAG,OAAO,CAAC,MAAM;AACjB,YAAA,OAAO,EAAE,IAAI;SAChB;IACL;IAEQ,OAAO,kBAAkB,CAAC,QAAgB,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,mBAAmB;;;QAIxD,MAAM,IAAI,GAAG,QAAQ,IAAI,UAAU,GAAG,CAAC,CAAC;;;AAIxC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F;AACH;;ACrLK,MAAO,qBAAsB,SAAQ,sBAAsB,CAAA;IACpD,WAAW,GAAa,EAAE;IAC1B,WAAW,GAAa,EAAE;IACjB,MAAM,GAA2B,EAAE;IAErD,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA6B;AAEhC,IAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;QAC9C,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,SAAS,EAAE;AACpB,IAAA,CAAC,8DAAC;IAEF,SAAS,GAAA;QACL,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC9B,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AACjE,YAAA,mBAAmB,CAAC,gBAAgB,CAChC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAC1B,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EACzB,IAAI,CAAC,eAAe,CACvB;YACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;QACvD;IACJ;uGA3BS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,8oBCblC,sBACA,EAAA,CAAA;;2FDYa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;8BAGP,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACiB,MAAM,EAAA,CAAA;sBAAvB;;;IEhBO;AAAZ,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACT,CAAC,EAHW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;MAKd,WAAW,CAAA;AACpB,IAAA,QAAQ;IACR,IAAI,GAAG,EAAE;AACT,IAAA,IAAI;IACJ,KAAK,GAAG,CAAC;AACZ;;MCGY,yBAAyB,CAAA;IAIlC,OAAO,GAAkB,EAAE;IAClB,MAAM,GAAG,IAAI;IAEtB,eAAe,GAAG,eAAe;IACjC,UAAU,GAAG,OAAO;uGARX,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mICbtC,63CAgCA,EAAA,MAAA,EAAA,CAAA,qtMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,uRAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAE9C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,uBAAuB,EAAA,OAAA,EAGxB,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,63CAAA,EAAA,MAAA,EAAA,CAAA,qtMAAA,CAAA,EAAA;8BAMxD,OAAO,EAAA,CAAA;sBAHN,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACH,wBAAA,QAAQ,EAAE,IAAI;AACjB,qBAAA;gBAEQ,MAAM,EAAA,CAAA;sBAAd;;;AEfC,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAC/C,IAAA,OAAO,UAAU,CAAC,OAAgB,EAAE,gBAAyB,EAAA;AACzD,QAAA,MAAM,cAAc,GAAY;AAC5B,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,YAAY,EAAE,EAAE;AACnB,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,MAAM,EAAE;AACJ,oBAAA,MAAM,EAAE;AACJ,wBAAA,OAAO,EAAE,gBAAgB;wBACzB,MAAM,EAAE,gBAAgB,GAAG,CAAC,GAAG,CAAC;AAChC,wBAAA,MAAM,EAAE,QAAQ;AACnB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACd,iBAAA;AACD,gBAAA,MAAM,EAAE;AACJ,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,aAAa,EAAE,EAAE;AACjB,oBAAA,MAAM,EAAE;wBACJ,IAAI,GAAA;AACA,4BAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC1D,CAAC;wBACD,IAAI,GAAA;AACA,4BAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;wBAC1D,CAAC;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;SACJ;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D;AACH;;AC9BK,MAAO,mBAAoB,SAAQ,sBAAsB,CAAA;IACzC,MAAM,GAAwB,EAAE;IAElD,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,gBAAgB,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAyB,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxH,YAAA,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC;AACtF,YAAA,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;AACxF,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1D;QACJ;IACJ;uGAbS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,+HCXhC,sBACA,EAAA,CAAA;;2FDUa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAEd,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;8BAGE,MAAM,EAAA,CAAA;sBAAvB;;;AERL,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,wBAAwB,GAC1B,6HAA6H,CAAC;AAClI,MAAM,iCAAiC,GAAG,QAAQ,CAAC;AAE7C,MAAO,eAAgB,SAAQ,YAAY,CAAA;AAC7C,IAAA,OAAO,QAAQ,CAAC,OAAgB,EAAE,WAAoB,EAAE,YAAoC,EAAA;AACxF,QAAA,MAAM,iBAAiB,GAAY;AAC/B,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,UAAU,EAAE,KAAK;AACpB,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,GAAG,EAAE;AACD,oBAAA,UAAU,EAAE;wBACR,QAAQ,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE;AAChC,wBAAA,OAAO,EAAE,IAAI;AAChB,qBAAA;AACD,oBAAA,SAAS,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA,MAAM,EAAE;oBACJ,gBAAgB,EAAE,CAAC,WAAW;AAC9B,oBAAA,UAAU,EAAE;AACR,0BAAE;4BACI,MAAM,EAAE,YAAY,KAAK,YAAY,GAAG,yBAAyB,GAAG,WAAW;AAC/E,4BAAA,KAAK,EAAE;AACH,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,OAAO;AACd,gCAAA,WAAW,EAAE,GAAG;AACnB,6BAAA;AACJ;AACH,0BAAE;AACI,4BAAA,SAAS,EAAE,YAAA;gCACP,MAAM,IAAI,GACN,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;AACf,sCAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG;AAC5C,sCAAE,IAAI,CAAC,IAAI;AACnB,gCAAA,MAAM,YAAY,GACd,YAAY,KAAK;AACb,sCAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG;AACjD,sCAAE,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;AAEvC,gCAAA,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,sCAAE;sCACA,EAAE;AACR,gCAAA,OAAO,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,YAAY;4BAC9C,CAAC;AACD,4BAAA,KAAK,EAAE;AACH,gCAAA,QAAQ,EAAE,MAAM;AAChB,gCAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACrC,6BAAA;AACJ,yBAAA;AACP,oBAAA,YAAY,EAAE,WAAW;AACzB,oBAAA,MAAM,EAAE;AACJ,wBAAA,QAAQ,EAAE;AACN,4BAAA,OAAO,EAAE,CAAC;AACb,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,kBAAE;AACI,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,IAAI;AAChB;AACH,kBAAE,EAAE;SACX;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC7D;AAEA,IAAA,OAAO,YAAY,CACf,MAA0B,EAC1B,OAAgB,EAChB,MAAgB,EAChB,eAAuB,EACvB,WAAoB,EACpB,iBAAiB,GAAG,IAAI,EAAA;QAExB,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC;AAC5D,QAAA,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI;QACjC;AACA,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AAC1C,YAAA,OAAO,CAAC,MAAM,GAAG,MAAM;YACvB,IAAI,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE;AAC/C,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAA4B,EAAE,WAAW,CAAC;gBACrE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;gBACpC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE;gBAC3C,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE;AACrC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC;AAClD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC;AACjD,gBAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,WAAW,CAAC;YAC1D;QACJ;IACJ;AAEQ,IAAA,OAAO,WAAW,CAAC,MAA4B,EAAE,WAAoB,EAAA;AACzE,QAAA,MAAM,EAAE,OAAO,CAAC,KAAK,IAAG;YACpB,OAAO,KAAK,EAAE,KAAK;YACnB,IAAI,WAAW,EAAE;AACb,gBAAA,OAAQ,KAAK,CAAC,UAA+C,EAAE,KAAK,EAAE,KAAK;YAC/E;AACJ,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,OAAO,uBAAuB,CAAC,OAAgB,EAAE,WAAoB,EAAA;QACzE,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;YACzC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,YAAA;AAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;oBAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;wBAC5B,KAAK,CAAC,MAAM,CACR;AACI,4BAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;yBACpC,EACD,KAAK,CACR;wBACD,IAAI,WAAW,EAAE;4BACb,KAAK,CAAC,MAAM,CACR;AACI,gCAAA,UAAU,EAAE;AACR,oCAAA,KAAK,EAAE;AACH,wCAAA,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AACrC,qCAAA;AACJ,iCAAA;6BACJ,EACD,KAAK,CACR;wBACL;oBACJ;AACJ,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,YAAA,CAAC;QACL;IACJ;AAEQ,IAAA,OAAO,sBAAsB,CAAC,OAAgB,EAAE,WAAoB,EAAA;QACxE,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;YACzC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,YAAA;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;oBACpD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;wBAC5B,KAAK,CAAC,MAAM,CACR;AACI,4BAAA,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;yBACrD,EACD,KAAK,CACR;wBACD,IAAI,WAAW,EAAE;4BACb,KAAK,CAAC,MAAM,CACR;AACI,gCAAA,UAAU,EAAE;AACR,oCAAA,KAAK,EAAE;AACH,wCAAA,KAAK,EAAE,OAAO;AACjB,qCAAA;AACJ,iCAAA;6BACJ,EACD,KAAK,CACR;wBACL;oBACJ;AACJ,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC;QACL;IACJ;AAEQ,IAAA,OAAO,2BAA2B,CAAC,OAAgB,EAAE,WAAoB,EAAA;QAC7E,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE;YAClC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,YAAA;AACtC,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;oBAC7C,KAAK,CAAC,MAAM,CACR;AACI,wBAAA,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;qBACrD,EACD,KAAK,CACR;oBACD,IAAI,WAAW,EAAE;wBACb,KAAK,CAAC,MAAM,CACR;AACI,4BAAA,UAAU,EAAE;AACR,gCAAA,KAAK,EAAE;AACH,oCAAA,KAAK,EAAE,OAAO;AACjB,iCAAA;AACJ,6BAAA;yBACJ,EACD,KAAK,CACR;oBACL;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvB,YAAA,CAAC;QACL;IACJ;AACH;;AC7LK,MAAO,iBAAkB,SAAQ,sBAAsB,CAAA;IAChD,WAAW,GAAG,KAAK;IACnB,iBAAiB,GAAG,IAAI;IACf,MAAM,GAAuB,EAAE;IACjD,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;AAC1B,IAAA,YAAY,GAAG,KAAK,CAAyB,YAAY,wDAAC;AAElD,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAChC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,SAAS,EAAE;YACpB;AACJ,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;AAC5E,YAAA,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;;YAGvG,MAAM,aAAa,GAAG;kBAChB,IAAI,CAAC;AACP,kBAAE;AACI,oBAAA;AACI,wBAAA,IAAI,EAAE,KAAc;AACpB,wBAAA,IAAI,EAAE;AACF,4BAAA;AACI,gCAAA,CAAC,EAAE,CAAC;AACJ,gCAAA,UAAU,EAAE;AACR,oCAAA,OAAO,EAAE,KAAK;AACjB,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACD,wBAAA,mBAAmB,EAAE,KAAK;AAC7B,qBAAA;iBACJ;AAEP,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC1B,IAAI,CAAC,aAAa,EAAE;gBAChB,MAAM,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1C;AAAO,iBAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;gBACxB,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;YACjF;YACA,eAAe,CAAC,YAAY,CACxB,aAAa,EACb,YAAY,EACZ,MAAM,EACN,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,CACzB;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;QACrE;IACJ;uGA7DS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,uxBCX9B,sBACA,EAAA,CAAA;;2FDUa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAEZ,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;wDAGP,WAAW,EAAA,CAAA;sBAAnB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACiB,MAAM,EAAA,CAAA;sBAAvB;;;AEXC,MAAO,kBAAmB,SAAQ,YAAY,CAAA;AAChD,IAAA,OAAO,WAAW,CAAC,OAAgB,EAAE,gBAAyB,EAAA;AAC1D,QAAA,MAAM,oBAAoB,GAAY;AAClC,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,MAAM,EAAE;AACJ,oBAAA,MAAM,EAAE;AACJ,wBAAA,OAAO,EAAE,gBAAgB;wBACzB,MAAM,EAAE,gBAAgB,GAAG,CAAC,GAAG,CAAC;AAChC,wBAAA,MAAM,EAAE,QAAQ;AACnB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACd,iBAAA;AACJ,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;SACJ;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAChE;AACH;;ACfK,MAAO,oBAAqB,SAAQ,sBAAsB,CAAA;IAC1C,MAAM,GAA0B,EAAE;AAC1C,IAAA,gBAAgB,GAAwB,IAAI,YAAY,EAAE;IAEpE,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;AAC1G,YAAA,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;AACzF,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;YACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1C;IACJ;uGAXS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,mLCVjC,sBACA,EAAA,CAAA;;2FDSa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,IAAI,EAAA,QAAA,EAAA,sBAAA,EAAA;8BAGE,MAAM,EAAA,CAAA;sBAAvB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;;;AEZL;;AAEG;AAKH,kBAAkB,CAAC,UAAU,CAAC;;ACP9B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../libs/ui-charts/src/lib/highcharts-border-radius-plugin.ts","../../../libs/ui-charts/src/lib/chart-colors.ts","../../../libs/ui-charts/src/lib/abstract-chart.component.ts","../../../libs/ui-charts/src/lib/chart-locale.ts","../../../libs/ui-charts/src/lib/chart-options.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar-options.model.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.html","../../../libs/ui-charts/src/lib/chart-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.html","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap-options.model.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.html","../../../libs/ui-charts/src/lib/chart-metric.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.html","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.html","../../../libs/ui-charts/src/lib/chart-pie/chart-pie-options.model.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.html","../../../libs/ui-charts/src/lib/chart-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.html","../../../libs/ui-charts/index.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const borderRadiusPlugin = function (H: any) {\n if (H.borderRadiusPlugininitialized) {\n return;\n }\n H.borderRadiusPlugininitialized = true;\n\n H.wrap(H.seriesTypes.column.prototype, 'translate', function (proceed: any) {\n // @ts-ignore\n const options = this.options;\n const topMargin = options.topMargin || 0;\n const bottomMargin = options.bottomMargin || 0;\n const borderRadiusTopLeftSettings = options.borderRadiusTopLeft;\n const borderRadiusTopRightSettings = options.borderRadiusTopRight;\n const borderRadiusBottomLeftSettings = options.borderRadiusBottomLeft;\n const borderRadiusBottomRightSettings = options.borderRadiusBottomRight;\n // @ts-ignore\n proceed.call(this);\n\n // @ts-ignore\n if (!this.points) {\n return;\n }\n\n if (\n borderRadiusTopLeftSettings ||\n borderRadiusTopRightSettings ||\n borderRadiusBottomLeftSettings ||\n borderRadiusBottomRightSettings\n ) {\n // @ts-ignore\n this.points.forEach(function (point) {\n roundPoint(\n borderRadiusTopLeftSettings,\n borderRadiusTopRightSettings,\n borderRadiusBottomLeftSettings,\n borderRadiusBottomRightSettings,\n point,\n H,\n topMargin,\n bottomMargin\n );\n });\n }\n });\n};\n\nfunction roundPoint(\n borderRadiusTopLeftSettings: string | any[],\n borderRadiusTopRightSettings: string | any[],\n borderRadiusBottomLeftSettings: string | any[],\n borderRadiusBottomRightSettings: string | any[],\n point: { shapeArgs: { width?: any; height?: any; x?: any; y?: any; d?: any[] }; index: string | number; dlBox: any; shapeType: string },\n H: { relativeLength: (arg0: any, arg1: any) => any },\n topMargin: any,\n bottomMargin: any\n) {\n const w = point.shapeArgs.width;\n const h = point.shapeArgs.height;\n const x = point.shapeArgs.x;\n const y = point.shapeArgs.y;\n const borderRadiusTopLeft = borderRadiusTopLeftSettings?.length\n ? (borderRadiusTopLeftSettings as any)[point.index]\n : borderRadiusTopLeftSettings || 0;\n const borderRadiusTopRight = borderRadiusTopRightSettings?.length\n ? (borderRadiusTopRightSettings as any)[point.index]\n : borderRadiusTopRightSettings || 0;\n const borderRadiusBottomLeft = borderRadiusBottomLeftSettings?.length\n ? (borderRadiusBottomLeftSettings as any)[point.index]\n : borderRadiusBottomLeftSettings || 0;\n const borderRadiusBottomRight = borderRadiusBottomRightSettings?.length\n ? (borderRadiusBottomRightSettings as any)[point.index]\n : borderRadiusBottomRightSettings || 0;\n\n let radiusTopLeft = H.relativeLength(borderRadiusTopLeft, w);\n let radiusTopRight = H.relativeLength(borderRadiusTopRight, w);\n let radiusBottomRight = H.relativeLength(borderRadiusBottomRight, w);\n let radiusBottomLeft = H.relativeLength(borderRadiusBottomLeft, w);\n\n const maxR = Math.min(w, h) / 2;\n\n radiusTopLeft = radiusTopLeft > maxR ? maxR : radiusTopLeft;\n radiusTopRight = radiusTopRight > maxR ? maxR : radiusTopRight;\n radiusBottomRight = radiusBottomRight > maxR ? maxR : radiusBottomRight;\n radiusBottomLeft = radiusBottomLeft > maxR ? maxR : radiusBottomLeft;\n\n point.dlBox = point.shapeArgs;\n\n point.shapeType = 'path';\n point.shapeArgs = {\n d: [\n 'M',\n x + radiusTopLeft,\n y + topMargin,\n 'L',\n x + w - radiusTopRight,\n y + topMargin,\n 'C',\n x + w - radiusTopRight / 2,\n y,\n x + w,\n y + radiusTopRight / 2,\n x + w,\n y + radiusTopRight,\n 'L',\n x + w,\n y + h - radiusBottomRight,\n 'C',\n x + w,\n y + h - radiusBottomRight / 2,\n x + w - radiusBottomRight / 2,\n y + h,\n x + w - radiusBottomRight,\n y + h + bottomMargin,\n 'L',\n x + radiusBottomLeft,\n y + h + bottomMargin,\n 'C',\n x + radiusBottomLeft / 2,\n y + h,\n x,\n y + h - radiusBottomLeft / 2,\n x,\n y + h - radiusBottomLeft,\n 'L',\n x,\n y + radiusTopLeft,\n 'C',\n x,\n y + radiusTopLeft / 2,\n x + radiusTopLeft / 2,\n y,\n x + radiusTopLeft,\n y,\n 'Z',\n ],\n };\n}\n","export enum ChartColor {\n Grey,\n Orange,\n SoftBlue,\n ElectricBlue,\n Purple,\n Green,\n}\n\nexport class ChartColors {\n static readonly SOFT_BLUE_COLORS = {\n '10': '#EFF5FC',\n '20': '#DFEDFA',\n '40': '#C0DBF4',\n '60': '#A0C8EF',\n '85': '#78B1E8',\n '100': '#61A4E4',\n '150': '#2873BA',\n };\n static readonly ELECTRIC_BLUE_COLORS = {\n '10': '#e8f4ff',\n '20': '#d1e8ff',\n '40': '#a2d1ff',\n '60': '#74bbfe',\n '85': '#3a9efe',\n '100': '#178dfe',\n '150': '#0e72d6',\n };\n static readonly ORANGE_COLORS = {\n '10': '#FFEFE9',\n '20': '#FFE1D4',\n '40': '#FFC2A8',\n '60': '#FFA47D',\n '85': '#FF7E46',\n '100': '#FF6726',\n '150': '#C83E07',\n };\n static readonly GREEN_COLORS = {\n '10': '#ECF7ED',\n '20': '#DAF1DD',\n '40': '#B5E3BB',\n '60': '#8FD498',\n '85': '#61C26D',\n '100': '#45B854',\n '150': '#0F821D',\n };\n static readonly PURPLE_COLORS = {\n '10': '#EFEDF8',\n '20': '#E0DDF2',\n '40': '#C1BBE6',\n '60': '#A398D9',\n '85': '#7C6DC9',\n '100': '#6554C0',\n '150': '#3C2C95',\n };\n static readonly GREY_COLORS = {\n '5': '#F5F5F7',\n '10': '#EAECEF',\n '20': '#D6DAE0',\n '40': '#AEB5C1',\n '60': '#858FA1',\n '85': '#5D6A82',\n '100': '#344563',\n '150': '#212E44',\n };\n\n static readonly RED_COLORS = {\n '80': '#F17171',\n '150': '#D80505'\n };\n\n static readonly SOFT_RED_COLORS = {\n 100: '#ff5353',\n 85: '#ff6d6d',\n 60: '#ff9898',\n 10: '#fff9f9',\n };\n\n static readonly BLACK_COLOR: string = '#000000';\n static readonly LIMIT_COLOR: string = '#E81313';\n static readonly WHITE_COLOR: string = '#FFFFFF';\n\n static getChartColors(color: ChartColor | undefined): { [shade: string]: string } {\n switch (color) {\n case ChartColor.Orange:\n return this.ORANGE_COLORS;\n case ChartColor.SoftBlue:\n return this.SOFT_BLUE_COLORS;\n case ChartColor.ElectricBlue:\n return this.ELECTRIC_BLUE_COLORS;\n case ChartColor.Purple:\n return this.PURPLE_COLORS;\n case ChartColor.Green:\n return this.GREEN_COLORS;\n default:\n return this.GREY_COLORS;\n }\n }\n\n static getColors(seriesCount: number, color: ChartColor | undefined): string[] {\n const colors = this.getChartColors(color);\n switch (seriesCount) {\n case 1:\n return [colors[100]];\n case 2:\n return [colors[40], colors[100]];\n case 3:\n return [colors[20], colors[60], colors[100]];\n case 4:\n return [colors[20], colors[40], colors[60], colors[100]];\n case 5:\n return [colors[20], colors[40], colors[60], colors[100], colors[150]];\n default:\n return [colors[20], colors[40], colors[60], colors[85], colors[100], colors[150]];\n }\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Chart, Options, SeriesOptions } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive() // Required since Angular10 for DI to work (must be decorated to use Angular features)\nexport abstract class AbstractChartComponent implements AfterViewChecked, OnChanges {\n @ViewChild('chart') chartRef!: ElementRef;\n\n @Input() chartOptions: Options = {}; // https://api.highcharts.com/highcharts/\n @Input() color: ChartColor = ChartColor.ElectricBlue;\n @Input() labelDateFormat = '%m/%d';\n @Input() locale = 'en';\n @Input() series: SeriesOptions[] = [];\n\n protected chart!: Chart;\n private lastWidth = 0;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.series && !changes.series.firstChange) ||\n (changes.color && !changes.color.firstChange) ||\n (changes.chartOptions && !changes.chartOptions.firstChange) ||\n (changes.locale && !changes.locale.firstChange) ||\n (changes.metricFormat && !changes.metricFormat.firstChange)\n ) {\n this.initChart();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.chartRef && (this.chartRef.nativeElement.clientWidth !== this.lastWidth || this.lastWidth === 0)) {\n this.lastWidth = this.chartRef.nativeElement.clientWidth;\n if (this.chart) {\n this.chart.reflow();\n } else if (this.series && this.series.length) {\n this.initChart();\n }\n }\n }\n\n abstract initChart(): void;\n}\n","import { Options } from 'highcharts';\n\n/**\n * Builds Highcharts locale options (lang + tooltip date formats) from a locale string.\n * Uses the browser's Intl API to generate translated month/weekday names and number formatting rules.\n */\nexport function buildHighchartsLocaleOptions(locale: string): Options {\n const { decimalPoint, thousandsSep } = buildNumberSeparators(locale);\n\n return {\n lang: {\n decimalPoint,\n thousandsSep,\n weekdays: buildWeekdays(locale),\n shortMonths: buildShortMonths(locale),\n },\n tooltip: {\n dateTimeLabelFormats: {\n day: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',\n week: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',\n },\n },\n };\n}\n\nfunction buildNumberSeparators(locale: string): { decimalPoint: string; thousandsSep: string } {\n const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);\n const decimalPoint = parts.find(p => p.type === 'decimal')?.value ?? '.';\n const thousandsSep = parts.find(p => p.type === 'group')?.value ?? ',';\n return { decimalPoint, thousandsSep };\n}\n\nfunction buildWeekdays(locale: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n // Jan 4, 1970 is a Sunday\n return Array.from({ length: 7 }, (_, i) => {\n const name = formatter.format(new Date(1970, 0, 4 + i));\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n}\n\nfunction buildShortMonths(locale: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: 'short' });\n return Array.from({ length: 12 }, (_, i) => {\n const name = formatter.format(new Date(2000, i, 1));\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n}","import { Chart, dateFormat, numberFormat, Options, Series, SeriesOptionsType, setOptions } from 'highcharts';\nimport { ChartColor, ChartColors } from './chart-colors';\nimport { buildHighchartsLocaleOptions } from './chart-locale';\nimport { SeriesRoundedColumnOptions } from './highchart-series.model';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT: string = '%A, %b %e, %Y';\n static readonly DEFAULT_OPTIONS: Options = {\n /*lang: {\n decimalPoint: (manager && manager.locale !== 'en') ? ',' : '.',\n resetZoom: resetZoomLabel,\n resetZoomTitle: resetZoomHtmlTitle,\n shortMonths: [\n shortJanuary, shortFebruary, shortMarch, shortApril, shortMay, shortJune,\n shortJuly, shortAugust, shortSeptember, shortOctober, shortNovember, shortDecember\n ],\n thousandsSep: (manager && manager.locale !== 'en') ? ' ' : ',',\n weekdays: this.weekDays,\n zoomIn: zoomInHtmlTitle,\n zoomOut: zoomOutHtmlTitle\n },*/\n chart: {\n spacingRight: 20,\n zooming: {\n type: 'xy',\n resetButton: {\n theme: {\n fill: ChartColors.WHITE_COLOR,\n r: 4,\n style: {\n color: ChartColors.GREY_COLORS[100],\n fontSize: '12px',\n },\n states: {\n hover: {\n fill: ChartColors.GREY_COLORS[5],\n },\n },\n },\n },\n },\n panning: {\n enabled: true,\n },\n panKey: 'shift',\n style: {\n fontFamily: \"Averta, 'Open Sans', Helvetica, sans-serif\",\n },\n },\n colorAxis: {\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[60],\n },\n },\n },\n credits: {\n enabled: false,\n },\n legend: {\n borderWidth: 0,\n itemStyle: {\n color: ChartColors.GREY_COLORS[60],\n fontSize: '14px',\n fontWeight: 'normal',\n },\n itemHoverStyle: {\n color: ChartColors.GREY_COLORS[100],\n fontWeight: 'bold',\n },\n },\n plotOptions: {\n series: {\n states: {\n hover: {\n brightness: 0,\n },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: {\n y: 0,\n },\n },\n title: {\n text: undefined,\n },\n tooltip: {\n backgroundColor: ChartColors.WHITE_COLOR,\n borderRadius: 4,\n borderWidth: 0,\n dateTimeLabelFormats: {},\n shadow: {\n color: ChartColors.BLACK_COLOR,\n offsetX: 0,\n offsetY: 2,\n opacity: 0.02,\n width: 6,\n },\n split: false,\n shared: true,\n useHTML: true,\n headerFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: 12px; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</span></div>`,\n pointFormat:\n `<div style=\"font-size: 14px; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.y}</b> {point.custom.details}</div>',\n },\n xAxis: {\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n tickColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: null,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n yAxis: {\n allowDecimals: false,\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: undefined,\n },\n labels: {\n formatter: function () {\n if (typeof this.value === 'string') {\n return this.value;\n }\n return numberFormat(this.value, -1);\n },\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n };\n\n static build(options: Options, locale: string): Options {\n const localeOptions = buildHighchartsLocaleOptions(locale);\n setOptions({ lang: localeOptions.lang });\n return mergeDeep(mergeDeep(ChartOptions.DEFAULT_OPTIONS, localeOptions), options);\n }\n\n static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string) {\n // Configure axis\n options.xAxis = mergeDeep(\n {\n labels: {\n formatter: function (): string {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return dateFormat(labelDateFormat ?? '%m/%d', this.value);\n },\n },\n //minTickInterval: 24 * 60 * 60 * 1000 // One day\n },\n options.xAxis\n );\n // Configure series\n if (series?.length) {\n options.series = series;\n if (options.legend) {\n options.legend.enabled = options.legend.enabled ?? series.length >= 2;\n }\n options.colors = ChartColors.getColors(series.length, color);\n }\n }\n\n static redrawWithHighestEdgesRounded(chart: Chart): void {\n chart.series.forEach((serie, serieIndex: number, arr) => {\n ChartOptions.roundHighestSerie(arr, serie.options as SeriesRoundedColumnOptions, serieIndex);\n });\n chart.redraw(true);\n }\n\n static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void {\n const roundedTopMap: number[] = [];\n const roundedBottomMap: number[] = [];\n if (serie.data) {\n serie.data.forEach((point, columnIndex) => {\n const pointValue = ChartOptions.getPointValue(point);\n const pointX = ChartOptions.getPointX(point);\n const isNegative = pointValue !== null && pointValue < 0;\n\n if (isNegative) {\n // Negative bars go downward: the visual tip is the physical bottom.\n // Round bottom corners if no higher-index visible series has a negative value here\n // (meaning this series is the bottommost segment of the negative stack).\n const isBottommost = series.slice(serieIndex + 1).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n if (otherPoint === undefined) return true;\n const val = ChartOptions.getPointValue(otherPoint);\n return val === null || val >= 0;\n });\n roundedTopMap[columnIndex] = 0;\n roundedBottomMap[columnIndex] = isBottommost ? 100 : 0;\n } else {\n // Positive bars go upward: the visual tip is the physical top.\n // Round top corners if all lower-index visible series are 0/missing here\n // (meaning this series is the topmost segment of the positive stack).\n const isTopmost = series.slice(0, serieIndex).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n return otherPoint === undefined || ChartOptions.getPointValue(otherPoint) === 0;\n });\n roundedTopMap[columnIndex] = isTopmost ? 100 : 0;\n roundedBottomMap[columnIndex] = 0;\n }\n });\n serie.borderRadiusTopLeft = roundedTopMap;\n serie.borderRadiusTopRight = roundedTopMap;\n serie.borderRadiusBottomLeft = roundedBottomMap;\n serie.borderRadiusBottomRight = roundedBottomMap;\n }\n }\n\n private static getPointX(point: unknown): number | null {\n if (Array.isArray(point)) return point[0] as number;\n if (point && typeof point === 'object') return (point as { x?: number }).x ?? null;\n return null;\n }\n\n private static findPointAtAbscissa(data: unknown[] | undefined, x: number | null, fallbackIndex: number): unknown {\n if (!data) return undefined;\n if (x !== null) {\n return data.find(p => ChartOptions.getPointX(p) === x);\n }\n return data[fallbackIndex];\n }\n\n private static getPointValue(point: unknown): number | null {\n if (typeof point === 'number') return point;\n if (Array.isArray(point)) return point[1] as number;\n if (point && typeof point === 'object') return (point as { y?: number }).y ?? null;\n return null;\n }\n}\n\nexport function isObject(item: any) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any) {\n const output = deepCopy(target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(key => {\n if (isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] });\n else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction deepCopy(source: any) {\n if (typeof source !== 'object' || source === null) {\n return source; // Return the value if source is not an object\n }\n // Create an array or object to hold the values\n const newObject = Array.isArray(source) ? [] : {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n // Recursively (deep) copy for nested objects, including arrays\n (newObject as any)[key] = deepCopy(source[key]);\n }\n }\n return newObject;\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\nimport { ChartColor } from './../chart-colors';\nimport { SeriesRoundedBarOptions } from './../highchart-series.model';\n\nexport class ChartBarOptions extends ChartOptions {\n static buildBars(options: Options, stacked: boolean, opposite: boolean, locale: string): Options {\n const bar: PlotBarOptions = {\n maxPointWidth: 20,\n }\n if (stacked && !opposite) {\n bar.stacking = 'normal';\n bar.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n bar.borderRadius = 100;\n }\n\n const defaultBarOptions: Options = {\n chart: {\n type: 'bar',\n },\n legend: {\n symbolHeight: 10,\n },\n xAxis: {\n categories: undefined,\n gridLineWidth: 0,\n lineWidth: 0,\n reversed: false,\n tickWidth: 0,\n labels: {\n align: 'center',\n formatter(): string {\n if (this.value && this.value.toString().length > 16) {\n return this.value.toString().substring(0, 15) + '...';\n }\n return this.value.toString();\n },\n style: {\n width: 100,\n },\n },\n type: 'category',\n },\n yAxis: {\n type: 'linear',\n minTickInterval: 1,\n },\n plotOptions: {\n bar,\n series: {\n borderWidth: 0,\n }\n },\n };\n return super.build(mergeDeep(defaultBarOptions, options), locale);\n }\n\n static configureBar(\n series: SeriesBarOptions[],\n categories: string[],\n options: Options,\n opposite: boolean,\n color: ChartColor,\n labelDateFormat?: string\n ): void {\n ChartOptions.configure(series, options, color, labelDateFormat);\n if (categories && categories.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0] as SeriesRoundedBarOptions;\n negativeSerie.borderRadiusBottomLeft = 100;\n negativeSerie.borderRadiusBottomRight = 100;\n negativeSerie.borderRadiusTopLeft = 0;\n negativeSerie.borderRadiusTopRight = 0;\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return {\n ...point,\n y: -Math.abs(point.y),\n };\n } else if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\n });\n if (options.plotOptions?.series) {\n options.plotOptions.series.stacking = 'normal';\n }\n const yAxisLabels = (options.yAxis as YAxisOptions).labels;\n if (yAxisLabels) {\n yAxisLabels.formatter = function (): string {\n return Math.abs(+this.value) + '%';\n };\n }\n if (options.tooltip) {\n options.tooltip.pointFormatter = function (): string {\n return `<div style=\"font-size: 14px; color: #344563; margin: 6px 8px 0 8px;\"><span style=\"color:${\n this.color\n };\">\\u25CF</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n templateUrl: './chart-bar.component.html',\n standalone: true,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n @Input() categories: string[] = [];\n @Input() opposite: boolean = false;\n @Input() stacked: boolean = false;\n @Input() override series: SeriesBarOptions[] = [];\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite, this.locale);\n ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked && !this.opposite) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { Options, PlotColumnOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartColumnOptions extends ChartOptions {\n static buildColumn(options: Options, stacked: boolean, locale: string): Options {\n const column: PlotColumnOptions = {\n borderWidth: 0,\n maxPointWidth: 20\n }\n if (stacked) {\n column.stacking = 'normal';\n column.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n column.borderRadius = 100;\n }\n\n const defaultColumnOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n column,\n },\n xAxis: {\n type: 'datetime',\n minTickInterval: 1,\n },\n };\n return super.build(mergeDeep(defaultColumnOptions, options), locale);\n }\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n templateUrl: './chart-column.component.html',\n standalone: true,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n @Input() override series: SeriesColumnOptions[] = [];\n stacked = input<boolean>(false);\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked(), this.locale);\n ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked()) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n SeriesLineOptions,\n SeriesOptionsType,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\nimport { ChartColor, ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst HEATMAP_CONSTANTS = {\n CHART_HEIGHT: 680,\n GRID_LINE_WIDTH: 2,\n BORDER_WIDTH: 1,\n FONT_SIZE: '13px',\n HEADER_FONT_SIZE: '12px',\n TOOLTIP_FONT_SIZE: '14px',\n LEGEND_SYMBOL_WIDTH: 300,\n LEGEND_SYMBOL_HEIGHT: 10,\n TICK_INTERVAL: 3,\n DEFAULT_TICK_AMOUNT: 6,\n DEFAULT_MAX_VALUE: 3,\n MIN_VALUE: 0,\n FONT_WEIGHT: 'normal',\n} as const;\n\nconst COLORS = {\n WHITE: '#FFFFFF',\n GRID_LINE: 'white',\n NULL_COLOR: 'white',\n DEFAULT_FONT_COLOR: '#858FA1',\n} as const;\n\nexport class ChartHeatmapOptions extends ChartOptions {\n static override build(options: Options, locale: string): Options {\n const defaultHeatmapOptions: Options = {\n chart: {\n type: 'heatmap',\n height: HEATMAP_CONSTANTS.CHART_HEIGHT,\n },\n colorAxis: {\n allowDecimals: false,\n gridLineWidth: HEATMAP_CONSTANTS.GRID_LINE_WIDTH,\n gridLineColor: COLORS.GRID_LINE,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n minColor: COLORS.WHITE,\n labels: {\n style: {\n fontWeight: HEATMAP_CONSTANTS.FONT_WEIGHT,\n fontSize: HEATMAP_CONSTANTS.FONT_SIZE,\n color: COLORS.DEFAULT_FONT_COLOR,\n },\n overflow: 'allow',\n },\n },\n legend: {\n enabled: true,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom',\n symbolWidth: HEATMAP_CONSTANTS.LEGEND_SYMBOL_WIDTH,\n symbolHeight: HEATMAP_CONSTANTS.LEGEND_SYMBOL_HEIGHT,\n },\n plotOptions: {\n heatmap: {\n borderColor: ChartColors.GREY_COLORS[10],\n borderWidth: HEATMAP_CONSTANTS.BORDER_WIDTH,\n nullColor: COLORS.NULL_COLOR,\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: ${HEATMAP_CONSTANTS.HEADER_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.tooltipHeaderLabel}</span></div>` +\n `<div style=\"font-size: ${HEATMAP_CONSTANTS.TOOLTIP_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n `<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n labels: {\n formatter: this.createXAxisFormatter(),\n },\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: {\n step: 3,\n },\n reversed: true,\n visible: true,\n },\n };\n return super.build(mergeDeep(defaultHeatmapOptions, options), locale);\n }\n\n private static createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) {\n return leastLabel;\n }\n if (this.value === this.axis.max) {\n return mostLabel;\n }\n return '';\n };\n }\n\n private static createXAxisFormatter(): AxisLabelsFormatterCallbackFunction {\n return function () {\n return this.value.toString();\n };\n }\n\n static configureHeatmap(\n categoriesX: string[],\n categoriesY: string[],\n series: SeriesOptionsType[],\n options: Options,\n color: ChartColor,\n leastLabel?: string,\n mostLabel?: string,\n labelDateFormat?: string\n ): void {\n super.configure(series, options, color, labelDateFormat);\n\n this.setAxisCategories(options, categoriesX, categoriesY);\n\n const points = (series[0] as SeriesLineOptions).data as { x: number; y: number; value: number }[];\n const maxValue = points.reduce((max, point) => Math.max(max, point.value), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n\n this.configureColorAxis(options, color, maxValue, leastLabel, mostLabel);\n\n this.configureLegend(options);\n }\n\n private static setAxisCategories(options: Options, categoriesX: string[], categoriesY: string[]): void {\n if (categoriesX?.length) {\n (options.xAxis as XAxisOptions).categories = categoriesX;\n }\n if (categoriesY?.length) {\n (options.yAxis as YAxisOptions).categories = categoriesY;\n }\n }\n\n private static configureColorAxis(\n options: Options,\n color: ChartColor,\n maxValue: number,\n leastLabel?: string,\n mostLabel?: string\n ): void {\n const tickPositions = this.buildTickPositions(maxValue);\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n options.colorAxis = {\n ...(options.colorAxis || {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE,\n tickPositions,\n maxColor: ChartColors.getChartColors(color)[100],\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels || {}),\n formatter: this.createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n\n private static configureLegend(options: Options): void {\n options.legend = {\n ...options.legend,\n enabled: true,\n };\n }\n\n private static buildTickPositions(maxValue: number): number[] {\n const tickAmount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;\n\n // Calculate the step between each tick\n // We subtract 1 from tickAmount so that the last tick is exactly at maxValue\n const step = maxValue / (tickAmount - 1);\n\n // Generate an array of positions for the ticks\n // Each position is calculated as i * step and rounded to 2 decimal places\n return Array.from({ length: tickAmount }, (_, i) => parseFloat((i * step).toFixed(2)));\n }\n}\n","import { Component, effect, input, Input } from '@angular/core';\nimport { SeriesHeatmapOptions } from 'highcharts';\nimport { mapChart } from 'highcharts/highmaps';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartHeatmapOptions } from './chart-heatmap-options.model';\n\ntype LabelKeys = 'least' | 'most';\n\n@Component({\n selector: 'ap-chart-heatmap',\n templateUrl: './chart-heatmap.component.html',\n standalone: true,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n @Input() categoriesX: string[] = [];\n @Input() categoriesY: string[] = [];\n @Input() override series: SeriesHeatmapOptions[] = [];\n\n legendLabels = input<Record<LabelKeys, string>>();\n\n private readonly legendLabelsEffect = effect(() => {\n this.legendLabels();\n this.initChart();\n });\n\n initChart(): void {\n if (this.series && this.chartRef) {\n const chartOptions = ChartHeatmapOptions.build(this.chartOptions, this.locale);\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX,\n this.categoriesY,\n this.series,\n chartOptions,\n this.color,\n this.legendLabels()?.least,\n this.legendLabels()?.most,\n this.labelDateFormat\n );\n mapChart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","export enum ChartMetricType {\n default,\n total,\n}\n\nexport class ChartMetric {\n children?: ChartMetric[];\n name = '';\n type?: ChartMetricType;\n value = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { ChartMetric, ChartMetricType } from '../chart-metric';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-chart-metrics-list',\n styleUrls: ['chart-metrics-list.component.scss'],\n templateUrl: 'chart-metrics-list.component.html',\n imports: [CommonModule, MatListModule, MatDividerModule],\n})\nexport class ChartMetricsListComponent {\n @Input({\n required: true,\n })\n metrics: ChartMetric[] = [];\n @Input() locale = 'en';\n\n ChartMetricType = ChartMetricType;\n digitsInfo = '1.0-1';\n}\n","<mat-list>\n @if (metrics) {\n @for (metric of metrics; track metric; let i = $index) {\n <mat-list-item [ngClass]=\"{ 'chart-metric-total': metric.type === ChartMetricType.total }\">\n @if (!metric.children) {\n <div class=\"chart-metric-name metric-label\">\n {{ metric.name }}\n </div>\n }\n @if (metric.children) {\n <div class=\"chart-metric-name\">\n <span class=\"metric-label\">\n {{ metric.name }}\n </span>\n <span class=\"chart-metric-children\">\n @for (item of metric.children; track item) {\n <span>\n <span class=\"child-label\">{{ item.name }}</span>\n :\n <span class=\"child-value\">{{ item.value }}</span>\n </span>\n }\n </span>\n </div>\n }\n <div class=\"chart-metric-value metric-label\">\n {{ metric.value | number: digitsInfo : locale }}\n </div>\n </mat-list-item>\n }\n }\n</mat-list>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartMixedOptions extends ChartOptions {\n static buildMixed(options: Options, singleDayEnabled: boolean, locale: string): Options {\n const defaultOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n column: {\n stacking: 'normal',\n borderWidth: 0,\n maxPointWidth: 20,\n events: {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultOptions, options), locale);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n templateUrl: './chart-mixed.component.html',\n standalone: true,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n @Input() override series: SeriesOptionsType[] = [];\n\n initChart(): void {\n if (this.series) {\n const singleDayEnabled = (this.series.find(serie => serie.type === 'spline') as SeriesSplineOptions)?.data?.length === 1;\n const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled, this.locale);\n ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { numberFormat, Options, PointOptionsObject, SeriesPieDataLabelsOptionsObject, SeriesPieOptions } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\nconst RIGHT_TO_LEFT_CHARACTERS =\n /[\\p{Script=Arabic}\\p{Script=Hebrew}\\p{Script=Syriac}\\p{Script=Thaana}\\p{Script=Nko}\\p{Script=Samaritan}\\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters\nconst RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\\u202B'; // Right-to-left embedding character\n\nexport class ChartPieOptions extends ChartOptions {\n static buildPie(options: Options, innerLabels: boolean, metricFormat: 'percentage' | 'value', locale: string): Options {\n const defaultPieOptions: Options = {\n chart: {\n type: 'pie',\n plotBackgroundColor: undefined,\n plotBorderWidth: undefined,\n plotShadow: false,\n },\n plotOptions: {\n pie: {\n dataLabels: {\n distance: innerLabels ? -40 : 30,\n useHTML: true,\n },\n innerSize: '50%',\n },\n series: {\n allowPointSelect: !innerLabels,\n dataLabels: innerLabels\n ? {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n }\n : {\n formatter: function () {\n const name =\n this.name.length > NAME_MAX_LENGTH\n ? this.name.substring(0, NAME_MAX_LENGTH) + '...'\n : this.name;\n const displayValue =\n metricFormat === 'percentage'\n ? numberFormat(Math.round((this.percentage ?? 0) * 10) / 10, 1) + '%'\n : numberFormat(this.y ?? 0, -1);\n // Add right-to-left embedding character only if the first character is a right-to-left character\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))\n ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER\n : '';\n return prefix + name + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n },\n showInLegend: innerLabels,\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels\n ? {\n symbolHeight: 10,\n enabled: true,\n }\n : {},\n };\n return super.build(mergeDeep(defaultPieOptions, options), locale);\n }\n\n static configurePie(\n series: SeriesPieOptions[],\n options: Options,\n colors: string[],\n labelDateFormat: string,\n innerLabels: boolean,\n mouseEventEnabled = true\n ): void {\n super.configure(series, options, undefined, labelDateFormat);\n if (innerLabels && options.legend) {\n options.legend.enabled = true;\n }\n if (series && series.length > 0 && series[0]) {\n options.colors = colors;\n if (mouseEventEnabled && options.plotOptions?.pie) {\n this.resetColors(series[0].data as PointOptionsObject[], innerLabels);\n options.plotOptions.pie.point ??= {};\n options.plotOptions.pie.point.events ??= {};\n options.plotOptions.pie.events ??= {};\n this.configureEnteringASlice(options, innerLabels);\n this.configureLeavingASlice(options, innerLabels);\n this.configureLeavingTheWholePie(options, innerLabels);\n }\n }\n }\n\n private static resetColors(points: PointOptionsObject[], innerLabels: boolean) {\n points?.forEach(point => {\n delete point?.color;\n if (innerLabels) {\n delete (point.dataLabels as SeriesPieDataLabelsOptionsObject)?.style?.color;\n }\n });\n }\n\n private static configureEnteringASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOver = function (): void {\n this.series.chart.series[0].points.forEach(point => {\n if (point.index !== this.index) {\n point.update(\n {\n color: ChartColors.GREY_COLORS[5],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: ChartColors.GREY_COLORS[20],\n },\n },\n },\n false\n );\n }\n }\n });\n this.series.chart.redraw(false);\n };\n }\n }\n\n private static configureLeavingASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOut = function (): void {\n this.series.chart.series[0].points.forEach((point, i) => {\n if (point.index !== this.index) {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n }\n });\n };\n }\n }\n\n private static configureLeavingTheWholePie(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.events) {\n options.plotOptions.pie.events.mouseOut = function (): void {\n this.chart.series[0].points.forEach((point, i) => {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n });\n this.chart.redraw();\n };\n }\n }\n}\n","import { afterNextRender, Component, effect, input, Input, signal } from '@angular/core';\nimport { Chart, SeriesPieOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColors } from '../chart-colors';\nimport { ChartPieOptions } from './chart-pie-options.model';\n\n@Component({\n selector: 'ap-chart-pie',\n templateUrl: './chart-pie.component.html',\n standalone: true,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n @Input() innerLabels = false;\n @Input() mouseEventEnabled = true;\n @Input() override series: SeriesPieOptions[] = [];\n colors = input<string[]>();\n metricFormat = input<'percentage' | 'value'>('percentage');\n\n private domReady = signal(false);\n constructor() {\n super();\n effect(() => {\n if (this.domReady()) {\n this.colors();\n this.initChart();\n }\n });\n\n afterNextRender(() => {\n this.domReady.set(true);\n });\n }\n\n initChart(): void {\n if (this.series) {\n const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;\n const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat(), this.locale);\n\n // Add placeholder series when there's no data\n const updatedSeries = dataAvailable\n ? this.series\n : [\n {\n type: 'pie' as const,\n data: [\n {\n y: 1,\n dataLabels: {\n enabled: false,\n },\n },\n ],\n enableMouseTracking: false,\n },\n ];\n\n let colors = this.colors();\n if (!dataAvailable) {\n colors = [ChartColors.GREY_COLORS[10]];\n } else if (!colors?.length) {\n colors = ChartColors.getColors(this.series[0]?.data?.length ?? 0, this.color);\n }\n ChartPieOptions.configurePie(\n updatedSeries,\n chartOptions,\n colors,\n this.labelDateFormat,\n this.innerLabels,\n this.mouseEventEnabled\n );\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartSplineOptions extends ChartOptions {\n static buildSpline(options: Options, singleDayEnabled: boolean, locale: string): Options {\n const defaultSplineOptions: Options = {\n chart: {\n type: 'spline',\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultSplineOptions, options), locale);\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Chart, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartSplineOptions } from './chart-spline-options.model';\n\n@Component({\n selector: 'ap-chart-spline',\n templateUrl: './chart-spline.component.html',\n standalone: true,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n @Input() override series: SeriesSplineOptions[] = [];\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1, this.locale);\n ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","/*\n * Public API Surface of ui-charts\n */\n\nimport * as Highcharts from 'highcharts';\nimport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n\nborderRadiusPlugin(Highcharts);\n\nexport { AbstractChartComponent } from './src/lib/abstract-chart.component';\nexport { ChartBarComponent } from './src/lib/chart-bar/chart-bar.component';\nexport { ChartColor, ChartColors } from './src/lib/chart-colors';\nexport { ChartColumnComponent } from './src/lib/chart-column/chart-column.component';\nexport { ChartHeatmapComponent } from './src/lib/chart-heatmap/chart-heatmap.component';\nexport { ChartMetric, ChartMetricType } from './src/lib/chart-metric';\nexport { ChartMetricsListComponent } from './src/lib/chart-metrics-list/chart-metrics-list.component';\nexport { ChartMixedComponent } from './src/lib/chart-mixed/chart-mixed.component';\nexport { ChartOptions, mergeDeep } from './src/lib/chart-options';\nexport { ChartPieComponent } from './src/lib/chart-pie/chart-pie.component';\nexport { ChartSplineComponent } from './src/lib/chart-spline/chart-spline.component';\n\nexport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -90,6 +90,7 @@ declare abstract class AbstractChartComponent implements AfterViewChecked, OnCha
|
|
|
90
90
|
chartOptions: Options;
|
|
91
91
|
color: ChartColor;
|
|
92
92
|
labelDateFormat: string;
|
|
93
|
+
locale: string;
|
|
93
94
|
series: SeriesOptions[];
|
|
94
95
|
protected chart: Chart;
|
|
95
96
|
private lastWidth;
|
|
@@ -97,7 +98,7 @@ declare abstract class AbstractChartComponent implements AfterViewChecked, OnCha
|
|
|
97
98
|
ngAfterViewChecked(): void;
|
|
98
99
|
abstract initChart(): void;
|
|
99
100
|
static ɵfac: i0.ɵɵFactoryDeclaration<AbstractChartComponent, never>;
|
|
100
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractChartComponent, never, never, { "chartOptions": { "alias": "chartOptions"; "required": false; }; "color": { "alias": "color"; "required": false; }; "labelDateFormat": { "alias": "labelDateFormat"; "required": false; }; "series": { "alias": "series"; "required": false; }; }, {}, never, never, true, never>;
|
|
101
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractChartComponent, never, never, { "chartOptions": { "alias": "chartOptions"; "required": false; }; "color": { "alias": "color"; "required": false; }; "labelDateFormat": { "alias": "labelDateFormat"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "series": { "alias": "series"; "required": false; }; }, {}, never, never, true, never>;
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
declare class ChartBarComponent extends AbstractChartComponent {
|
|
@@ -169,7 +170,7 @@ interface SeriesRoundedColumnOptions extends SeriesColumnOptions {
|
|
|
169
170
|
declare class ChartOptions {
|
|
170
171
|
static readonly DEFAULT_DATE_FORMAT: string;
|
|
171
172
|
static readonly DEFAULT_OPTIONS: Options;
|
|
172
|
-
static build(options: Options): Options;
|
|
173
|
+
static build(options: Options, locale: string): Options;
|
|
173
174
|
static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string): void;
|
|
174
175
|
static redrawWithHighestEdgesRounded(chart: Chart): void;
|
|
175
176
|
static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void;
|
package/package.json
CHANGED
|
Binary file
|