@agorapulse/ui-charts 20.1.18 → 20.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, DestroyRef, ElementRef, input, signal, afterNextRender, effect, Directive, ChangeDetectionStrategy, Component, output } from '@angular/core';
|
|
3
|
-
import { setOptions, Chart, numberFormat } from 'highcharts';
|
|
4
|
-
import { isPlainObject, cloneDeep, round } from 'es-toolkit';
|
|
3
|
+
import { setOptions, merge, Chart, numberFormat } from 'highcharts';
|
|
5
4
|
import { mapChart } from 'highcharts/highmaps';
|
|
5
|
+
import { round } from 'es-toolkit';
|
|
6
6
|
|
|
7
7
|
var ChartColor;
|
|
8
8
|
(function (ChartColor) {
|
|
@@ -71,8 +71,36 @@ class ChartColors {
|
|
|
71
71
|
};
|
|
72
72
|
static RED_COLORS = {
|
|
73
73
|
'80': '#F17171',
|
|
74
|
-
'
|
|
74
|
+
'100': '#E81313',
|
|
75
|
+
'150': '#D80505',
|
|
75
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Categorical data palette — 10 distinct hues used to tell apart networks, profiles, or metrics in the same chart.
|
|
79
|
+
* Order is fixed and assigned by position (1st category → DATA_COLORS[0]).
|
|
80
|
+
* For more than 10 categories the palette wraps; the legend is the source of truth.
|
|
81
|
+
*/
|
|
82
|
+
static DATA_COLORS = [
|
|
83
|
+
'#12AABA', // data-cyan-100
|
|
84
|
+
'#D98800', // data-sun-100
|
|
85
|
+
'#CC2878', // data-peony-100
|
|
86
|
+
'#42B85A', // data-lime-100
|
|
87
|
+
'#8A62CC', // data-iris-10
|
|
88
|
+
'#CC5040', // data-cherry-100
|
|
89
|
+
'#3A92E8', // data-sky-100
|
|
90
|
+
'#DC6A30', // data-tangerine-100
|
|
91
|
+
'#12A87A', // data-emerald-100
|
|
92
|
+
'#4A6ACC', // data-navy-100
|
|
93
|
+
];
|
|
94
|
+
/**
|
|
95
|
+
* Sentiment palette — fixed mapping from sentiment to brand colors.
|
|
96
|
+
* Used by sentiment widgets only; not part of the categorical data palette.
|
|
97
|
+
*/
|
|
98
|
+
static SENTIMENT_COLORS = {
|
|
99
|
+
positive: '#45B854', // green-100
|
|
100
|
+
neutral: '#858FA1', // grey-60
|
|
101
|
+
negative: '#E81313', // red-100
|
|
102
|
+
};
|
|
103
|
+
static HEATMAP_COLOR = '#4A6ACC';
|
|
76
104
|
static SOFT_RED_COLORS = {
|
|
77
105
|
100: '#ff5353',
|
|
78
106
|
85: '#ff6d6d',
|
|
@@ -98,22 +126,20 @@ class ChartColors {
|
|
|
98
126
|
return this.GREY_COLORS;
|
|
99
127
|
}
|
|
100
128
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return [colors[20], colors[40], colors[60], colors[85], colors[100], colors[150]];
|
|
116
|
-
}
|
|
129
|
+
/**
|
|
130
|
+
* Returns the categorical data color at the given 0-based position.
|
|
131
|
+
* Wraps modulo `DATA_COLORS.length` (10) so position 10 reuses position 0.
|
|
132
|
+
*/
|
|
133
|
+
static getDataColor(position) {
|
|
134
|
+
const palette = ChartColors.DATA_COLORS;
|
|
135
|
+
return palette[((position % palette.length) + palette.length) % palette.length];
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Returns the first `count` data colors from the categorical palette.
|
|
139
|
+
* Wraps after 10 positions.
|
|
140
|
+
*/
|
|
141
|
+
static getDataColors(count) {
|
|
142
|
+
return Array.from({ length: Math.max(count, 0) }, (_, index) => ChartColors.getDataColor(index));
|
|
117
143
|
}
|
|
118
144
|
}
|
|
119
145
|
|
|
@@ -226,6 +252,7 @@ class ChartOptions {
|
|
|
226
252
|
series: {
|
|
227
253
|
states: {
|
|
228
254
|
hover: { brightness: 0 },
|
|
255
|
+
inactive: { enabled: true, opacity: 0.2 },
|
|
229
256
|
},
|
|
230
257
|
connectNulls: true,
|
|
231
258
|
},
|
|
@@ -247,7 +274,9 @@ class ChartOptions {
|
|
|
247
274
|
width: 6,
|
|
248
275
|
},
|
|
249
276
|
split: false,
|
|
250
|
-
|
|
277
|
+
// Per-point tooltip — required for the hover-fade (other series dim when one is hovered).
|
|
278
|
+
// Override per-chart with `chartOptions: { tooltip: { shared: true } }` (drops the fade there).
|
|
279
|
+
shared: false,
|
|
251
280
|
useHTML: true,
|
|
252
281
|
headerFormat: `<div style="border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px">` +
|
|
253
282
|
`<div style="white-space: wrap; font-size: ${LABEL_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}">{point.key}</div></div>`,
|
|
@@ -285,35 +314,18 @@ class ChartOptions {
|
|
|
285
314
|
static build(options, locale) {
|
|
286
315
|
const localeOptions = buildHighchartsLocaleOptions(locale);
|
|
287
316
|
setOptions({ lang: localeOptions.lang });
|
|
288
|
-
return
|
|
317
|
+
return merge(ChartOptions.DEFAULT_OPTIONS, localeOptions, options);
|
|
289
318
|
}
|
|
290
|
-
static configure(series, options,
|
|
291
|
-
options.xAxis =
|
|
319
|
+
static configure(series, options, labelDateFormat) {
|
|
320
|
+
options.xAxis = merge({ labels: { format: `{value:${labelDateFormat ?? '%m/%d'}}` } }, options.xAxis);
|
|
292
321
|
if (series?.length) {
|
|
293
322
|
options.series = series;
|
|
294
323
|
if (options.legend) {
|
|
295
324
|
options.legend.enabled = options.legend.enabled ?? series.length >= 2;
|
|
296
325
|
}
|
|
297
|
-
options.colors = ChartColors.
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
/** Deep-merge clone (immutable). Arrays are replaced wholesale, not element-merged like `es-toolkit`'s `toMerged`. */
|
|
302
|
-
function mergeDeep(target, source) {
|
|
303
|
-
if (!isPlainObject(target) || !isPlainObject(source)) {
|
|
304
|
-
return target;
|
|
305
|
-
}
|
|
306
|
-
const output = cloneDeep(target);
|
|
307
|
-
for (const key of Object.keys(source)) {
|
|
308
|
-
const sourceValue = source[key];
|
|
309
|
-
if (isPlainObject(sourceValue)) {
|
|
310
|
-
output[key] = key in target ? mergeDeep(target[key], sourceValue) : cloneDeep(sourceValue);
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
output[key] = sourceValue;
|
|
326
|
+
options.colors = options.colors ?? ChartColors.getDataColors(series.length);
|
|
314
327
|
}
|
|
315
328
|
}
|
|
316
|
-
return output;
|
|
317
329
|
}
|
|
318
330
|
|
|
319
331
|
class ChartBarOptions extends ChartOptions {
|
|
@@ -367,10 +379,10 @@ class ChartBarOptions extends ChartOptions {
|
|
|
367
379
|
},
|
|
368
380
|
},
|
|
369
381
|
};
|
|
370
|
-
return super.build(
|
|
382
|
+
return super.build(merge(defaultBarOptions, options), locale);
|
|
371
383
|
}
|
|
372
|
-
static configureBar(series, categories, options, opposite,
|
|
373
|
-
ChartOptions.configure(series, options,
|
|
384
|
+
static configureBar(series, categories, options, opposite, labelDateFormat) {
|
|
385
|
+
ChartOptions.configure(series, options, labelDateFormat);
|
|
374
386
|
if (categories?.length) {
|
|
375
387
|
options.xAxis.categories = categories;
|
|
376
388
|
}
|
|
@@ -408,7 +420,7 @@ class ChartBarComponent extends AbstractChartComponent {
|
|
|
408
420
|
series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
|
|
409
421
|
initChart() {
|
|
410
422
|
const options = ChartBarOptions.buildBars(this.chartOptions(), this.stacked(), this.opposite(), this.locale());
|
|
411
|
-
ChartBarOptions.configureBar(this.series(), this.categories(), options, this.opposite(), this.
|
|
423
|
+
ChartBarOptions.configureBar(this.series(), this.categories(), options, this.opposite(), this.labelDateFormat());
|
|
412
424
|
this.chart = new Chart(this.hostElement, options);
|
|
413
425
|
}
|
|
414
426
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -451,7 +463,7 @@ class ChartColumnOptions extends ChartOptions {
|
|
|
451
463
|
minTickInterval: 1,
|
|
452
464
|
},
|
|
453
465
|
};
|
|
454
|
-
return super.build(
|
|
466
|
+
return super.build(merge(defaultColumnOptions, options), locale);
|
|
455
467
|
}
|
|
456
468
|
}
|
|
457
469
|
|
|
@@ -461,7 +473,7 @@ class ChartColumnComponent extends AbstractChartComponent {
|
|
|
461
473
|
chartInitialized = output();
|
|
462
474
|
initChart() {
|
|
463
475
|
const options = ChartColumnOptions.buildColumn(this.chartOptions(), this.stacked(), this.locale());
|
|
464
|
-
ChartColumnOptions.configure(this.series(), options, this.
|
|
476
|
+
ChartColumnOptions.configure(this.series(), options, this.labelDateFormat());
|
|
465
477
|
this.chart = new Chart(this.hostElement, options);
|
|
466
478
|
this.chartInitialized.emit(this.chart);
|
|
467
479
|
}
|
|
@@ -509,7 +521,6 @@ class ChartHeatmapOptions extends ChartOptions {
|
|
|
509
521
|
allowDecimals: false,
|
|
510
522
|
gridLineWidth: HEATMAP_CONSTANTS.GRID_LINE_WIDTH,
|
|
511
523
|
gridLineColor: COLORS.GRID_LINE,
|
|
512
|
-
min: HEATMAP_CONSTANTS.MIN_VALUE,
|
|
513
524
|
minColor: COLORS.WHITE,
|
|
514
525
|
labels: {
|
|
515
526
|
style: {
|
|
@@ -554,10 +565,11 @@ class ChartHeatmapOptions extends ChartOptions {
|
|
|
554
565
|
visible: true,
|
|
555
566
|
},
|
|
556
567
|
};
|
|
557
|
-
return super.build(
|
|
568
|
+
return super.build(merge(defaultHeatmapOptions, options), locale);
|
|
558
569
|
}
|
|
559
|
-
static configureHeatmap(categoriesX, categoriesY, series, options,
|
|
560
|
-
|
|
570
|
+
static configureHeatmap(categoriesX, categoriesY, series, options, leastLabel, mostLabel, labelDateFormat) {
|
|
571
|
+
options.colors = options.colors ?? [ChartColors.HEATMAP_COLOR];
|
|
572
|
+
super.configure(series, options, labelDateFormat);
|
|
561
573
|
if (categoriesX?.length) {
|
|
562
574
|
options.xAxis.categories = categoriesX;
|
|
563
575
|
}
|
|
@@ -567,14 +579,13 @@ class ChartHeatmapOptions extends ChartOptions {
|
|
|
567
579
|
const data = (series[0].data ?? []);
|
|
568
580
|
const maxValue = data.reduce((max, point) => Math.max(max, point.value ?? 0), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;
|
|
569
581
|
const labelsEnabled = !!(leastLabel && mostLabel);
|
|
570
|
-
// `tickAmount` spreads ticks evenly between min and max.
|
|
571
582
|
options.colorAxis = {
|
|
572
583
|
...(options.colorAxis ?? {}),
|
|
573
584
|
visible: labelsEnabled,
|
|
574
585
|
min: HEATMAP_CONSTANTS.MIN_VALUE,
|
|
575
586
|
max: maxValue,
|
|
587
|
+
maxColor: ChartColors.HEATMAP_COLOR,
|
|
576
588
|
tickAmount: HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT,
|
|
577
|
-
maxColor: ChartColors.getChartColors(color)[100],
|
|
578
589
|
};
|
|
579
590
|
if (labelsEnabled) {
|
|
580
591
|
options.colorAxis.labels = {
|
|
@@ -602,7 +613,7 @@ class ChartHeatmapComponent extends AbstractChartComponent {
|
|
|
602
613
|
initChart() {
|
|
603
614
|
const labels = this.legendLabels();
|
|
604
615
|
const options = ChartHeatmapOptions.build(this.chartOptions(), this.locale());
|
|
605
|
-
ChartHeatmapOptions.configureHeatmap(this.categoriesX(), this.categoriesY(), this.series(), options,
|
|
616
|
+
ChartHeatmapOptions.configureHeatmap(this.categoriesX(), this.categoriesY(), this.series(), options, labels?.least, labels?.most, this.labelDateFormat());
|
|
606
617
|
this.chart = mapChart(this.hostElement, options);
|
|
607
618
|
}
|
|
608
619
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartHeatmapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -647,7 +658,7 @@ class ChartMixedOptions extends ChartOptions {
|
|
|
647
658
|
type: 'datetime',
|
|
648
659
|
},
|
|
649
660
|
};
|
|
650
|
-
return super.build(
|
|
661
|
+
return super.build(merge(defaultOptions, options), locale);
|
|
651
662
|
}
|
|
652
663
|
}
|
|
653
664
|
|
|
@@ -658,7 +669,7 @@ class ChartMixedComponent extends AbstractChartComponent {
|
|
|
658
669
|
const splineSeries = series.find(serie => serie.type === 'spline');
|
|
659
670
|
const singleDayEnabled = splineSeries?.data?.length === 1;
|
|
660
671
|
const options = ChartMixedOptions.buildMixed(this.chartOptions(), singleDayEnabled, this.locale());
|
|
661
|
-
ChartMixedOptions.configure(series, options, this.
|
|
672
|
+
ChartMixedOptions.configure(series, options, this.labelDateFormat());
|
|
662
673
|
this.chart = new Chart(this.hostElement, options);
|
|
663
674
|
}
|
|
664
675
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartMixedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -706,10 +717,10 @@ class ChartPieOptions extends ChartOptions {
|
|
|
706
717
|
},
|
|
707
718
|
legend: innerLabels ? { symbolHeight: 10, enabled: true } : {},
|
|
708
719
|
};
|
|
709
|
-
return super.build(
|
|
720
|
+
return super.build(merge(defaultPieOptions, options), locale);
|
|
710
721
|
}
|
|
711
722
|
static configurePie(series, options, colors, labelDateFormat, innerLabels, mouseEventEnabled = true) {
|
|
712
|
-
super.configure(series, options,
|
|
723
|
+
super.configure(series, options, labelDateFormat);
|
|
713
724
|
if (innerLabels && options.legend) {
|
|
714
725
|
options.legend.enabled = true;
|
|
715
726
|
}
|
|
@@ -772,7 +783,7 @@ class ChartPieComponent extends AbstractChartComponent {
|
|
|
772
783
|
];
|
|
773
784
|
const effectiveColors = !dataAvailable
|
|
774
785
|
? [ChartColors.GREY_COLORS[10]]
|
|
775
|
-
: (this.colors() ?? ChartColors.
|
|
786
|
+
: (this.colors() ?? ChartColors.getDataColors(series[0]?.data?.length ?? 0));
|
|
776
787
|
ChartPieOptions.configurePie(effectiveSeries, options, effectiveColors, this.labelDateFormat(), innerLabels, this.mouseEventEnabled());
|
|
777
788
|
this.chart = new Chart(this.hostElement, options);
|
|
778
789
|
}
|
|
@@ -809,7 +820,7 @@ class ChartSplineOptions extends ChartOptions {
|
|
|
809
820
|
type: 'datetime',
|
|
810
821
|
},
|
|
811
822
|
};
|
|
812
|
-
return super.build(
|
|
823
|
+
return super.build(merge(defaultSplineOptions, options), locale);
|
|
813
824
|
}
|
|
814
825
|
}
|
|
815
826
|
|
|
@@ -820,7 +831,7 @@ class ChartSplineComponent extends AbstractChartComponent {
|
|
|
820
831
|
const series = this.series();
|
|
821
832
|
const singleDayEnabled = series[0]?.data?.length === 1;
|
|
822
833
|
const options = ChartSplineOptions.buildSpline(this.chartOptions(), singleDayEnabled, this.locale());
|
|
823
|
-
ChartSplineOptions.configure(series, options, this.
|
|
834
|
+
ChartSplineOptions.configure(series, options, this.labelDateFormat());
|
|
824
835
|
this.chart = new Chart(this.hostElement, options);
|
|
825
836
|
this.chartInitialized.emit(this.chart);
|
|
826
837
|
}
|
|
@@ -841,5 +852,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
841
852
|
* Generated bundle index. Do not edit.
|
|
842
853
|
*/
|
|
843
854
|
|
|
844
|
-
export { AbstractChartComponent, ChartBarComponent, ChartColor, ChartColors, ChartColumnComponent, ChartHeatmapComponent, ChartMixedComponent, ChartOptions, ChartPieComponent, ChartSplineComponent
|
|
855
|
+
export { AbstractChartComponent, ChartBarComponent, ChartColor, ChartColors, ChartColumnComponent, ChartHeatmapComponent, ChartMixedComponent, ChartOptions, ChartPieComponent, ChartSplineComponent };
|
|
845
856
|
//# sourceMappingURL=agorapulse-ui-charts.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../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-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../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-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../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-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["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 { afterNextRender, DestroyRef, Directive, effect, ElementRef, inject, input, Signal, signal } from '@angular/core';\nimport { Chart, Options } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive()\nexport abstract class AbstractChartComponent {\n private readonly destroyRef = inject(DestroyRef);\n\n /** Highcharts renders into the host element directly. */\n protected readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly chartOptions = input<Options>({});\n readonly color = input<ChartColor>(ChartColor.ElectricBlue);\n readonly labelDateFormat = input<string>('%m/%d');\n readonly locale = input<string>('en');\n\n protected chart?: Chart;\n private readonly viewReady = signal(false);\n private resizeObserver?: ResizeObserver;\n\n /** Subclasses expose their typed series input so the base can observe it. */\n protected abstract readonly series: Signal<readonly unknown[]>;\n\n constructor() {\n afterNextRender(() => {\n this.resizeObserver = new ResizeObserver(() => this.onResize());\n this.resizeObserver.observe(this.hostElement);\n this.viewReady.set(true);\n });\n\n // Eager init on view-ready; ResizeObserver reflows as the container grows.\n effect(() => {\n if (!this.viewReady()) return;\n this.rebuild();\n });\n\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n this.chart?.destroy();\n });\n }\n\n protected abstract initChart(): void;\n\n private onResize(): void {\n if (this.chart) {\n this.chart.reflow();\n } else if (this.hostElement.clientWidth > 0 && this.series().length) {\n this.rebuild();\n }\n }\n\n private rebuild(): void {\n this.chart?.destroy();\n this.chart = undefined;\n this.initChart();\n }\n}\n","import { Options } from 'highcharts';\n\n/** `lang.locale` drives Intl-based weekday/month/number formatting; we only override the tooltip date order. */\nexport function buildHighchartsLocaleOptions(locale: string): Options {\n const dayFormat = locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y';\n return {\n lang: { locale },\n tooltip: {\n dateTimeLabelFormats: {\n day: dayFormat,\n week: dayFormat,\n },\n },\n };\n}\n","import { cloneDeep, isPlainObject } from 'es-toolkit';\nimport { Options, SeriesOptionsType, setOptions } from 'highcharts';\nimport { ChartColor, ChartColors } from './chart-colors';\nimport { buildHighchartsLocaleOptions } from './chart-locale';\n\nconst FONT_FAMILY = \"Averta, 'Open Sans', Helvetica, sans-serif\";\nconst LABEL_FONT_SIZE = '12px';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT = '%A, %b %e, %Y';\n\n static readonly DEFAULT_OPTIONS: Options = {\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: LABEL_FONT_SIZE,\n },\n states: {\n hover: { fill: ChartColors.GREY_COLORS[5] },\n },\n },\n },\n },\n panning: { enabled: true },\n panKey: 'shift',\n style: { fontFamily: FONT_FAMILY },\n },\n colorAxis: {\n labels: { style: { color: ChartColors.GREY_COLORS[60] } },\n },\n credits: { enabled: false },\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: { brightness: 0 },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: { y: 0 },\n },\n title: { text: undefined },\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 `<div style=\"white-space: wrap; font-size: ${LABEL_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</div></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}\">●</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: { text: null },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: LABEL_FONT_SIZE,\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: { text: undefined },\n labels: {\n // Highcharts auto-formats per `lang.locale`.\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: LABEL_FONT_SIZE,\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): void {\n options.xAxis = mergeDeep({ labels: { format: `{value:${labelDateFormat ?? '%m/%d'}}` } }, options.xAxis);\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\n/** Deep-merge clone (immutable). Arrays are replaced wholesale, not element-merged like `es-toolkit`'s `toMerged`. */\nexport function mergeDeep(target: any, source: any): any {\n if (!isPlainObject(target) || !isPlainObject(source)) {\n return target;\n }\n const output = cloneDeep(target) as Record<string, unknown>;\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n if (isPlainObject(sourceValue)) {\n output[key] = key in target ? mergeDeep(target[key], sourceValue) : cloneDeep(sourceValue);\n } else {\n output[key] = sourceValue;\n }\n }\n return output;\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\nimport { ChartColor } from './../chart-colors';\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 // `opposite` = diverging left/right bars (one series flipped to negative).\n bar.stacking = 'normal';\n bar.borderRadius = { radius: '50%', scope: 'stack', where: 'end' };\n } else {\n bar.borderRadius = '50%';\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?.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0];\n // Flip the first series negative so it stacks left of zero.\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return { ...point, y: -Math.abs(point.y) };\n }\n if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\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 };\">●</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n readonly categories = input<string[]>([]);\n readonly opposite = input(false);\n readonly stacked = input(false);\n readonly series = input<SeriesBarOptions[]>([]);\n\n initChart(): void {\n const options = ChartBarOptions.buildBars(this.chartOptions(), this.stacked(), this.opposite(), this.locale());\n ChartBarOptions.configureBar(\n this.series(),\n this.categories(),\n options,\n this.opposite(),\n this.color(),\n this.labelDateFormat()\n );\n this.chart = new Chart(this.hostElement, options);\n }\n}\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 crisp: false,\n maxPointWidth: 20,\n // Round only the value-side end; `scope: 'stack'` keeps middle segments square.\n borderRadius: stacked ? { radius: '50%', scope: 'stack', where: 'end' } : '50%',\n };\n if (stacked) {\n column.stacking = 'normal';\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 { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n readonly stacked = input(false);\n readonly series = input<SeriesColumnOptions[]>([]);\n\n readonly chartInitialized = output<Chart>();\n\n initChart(): void {\n const options = ChartColumnOptions.buildColumn(this.chartOptions(), this.stacked(), this.locale());\n ChartColumnOptions.configure(this.series(), options, this.color(), this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n this.chartInitialized.emit(this.chart);\n }\n}\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n PointOptionsObject,\n SeriesHeatmapOptions,\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 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}\">●</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: { step: 3 },\n reversed: true,\n visible: true,\n },\n };\n return super.build(mergeDeep(defaultHeatmapOptions, options), locale);\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 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 const data = ((series[0] as SeriesHeatmapOptions).data ?? []) as PointOptionsObject[];\n const maxValue = data.reduce((max, point) => Math.max(max, point.value ?? 0), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n // `tickAmount` spreads ticks evenly between min and max.\n options.colorAxis = {\n ...(options.colorAxis ?? {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: maxValue,\n tickAmount: HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT,\n maxColor: ChartColors.getChartColors(color)[100],\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels ?? {}),\n formatter: createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n}\n\nfunction createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) return leastLabel;\n if (this.value === this.axis.max) return mostLabel;\n return '';\n };\n}\n","import { ChangeDetectionStrategy, Component, 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 LegendLabels = { least: string; most: string };\n\n@Component({\n selector: 'ap-chart-heatmap',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n readonly categoriesX = input<string[]>([]);\n readonly categoriesY = input<string[]>([]);\n readonly series = input<SeriesHeatmapOptions[]>([]);\n readonly legendLabels = input<LegendLabels>();\n\n protected initChart(): void {\n const labels = this.legendLabels();\n const options = ChartHeatmapOptions.build(this.chartOptions(), this.locale());\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX(),\n this.categoriesY(),\n this.series(),\n options,\n this.color(),\n labels?.least,\n labels?.most,\n this.labelDateFormat()\n );\n this.chart = mapChart(this.hostElement, options);\n }\n}\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 borderRadius: { radius: '50%', scope: 'stack', where: 'end' },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultOptions, options), locale);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n readonly series = input<SeriesOptionsType[]>([]);\n\n protected initChart(): void {\n const series = this.series();\n const splineSeries = series.find(serie => serie.type === 'spline') as SeriesSplineOptions | undefined;\n const singleDayEnabled = splineSeries?.data?.length === 1;\n const options = ChartMixedOptions.buildMixed(this.chartOptions(), singleDayEnabled, this.locale());\n ChartMixedOptions.configure(series, options, this.color(), this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n }\n}\n","import { round } from 'es-toolkit';\nimport { numberFormat, Options, SeriesPieOptions } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\n// RTL scripts (Hebrew, Arabic, …).\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;\nconst 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 ? buildInnerLabels(metricFormat) : buildOuterLabels(metricFormat),\n showInLegend: innerLabels,\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels ? { symbolHeight: 10, enabled: true } : {},\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?.[0]) {\n return;\n }\n options.colors = colors;\n // Otherwise we rely on Highcharts' default `states.inactive.opacity` to fade non-hovered slices.\n if (!mouseEventEnabled) {\n options.plotOptions ??= {};\n options.plotOptions.pie ??= {};\n options.plotOptions.pie.enableMouseTracking = false;\n }\n }\n}\n\nfunction buildInnerLabels(metricFormat: 'percentage' | 'value') {\n return {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n };\n}\n\nfunction buildOuterLabels(metricFormat: 'percentage' | 'value') {\n return {\n formatter(this: { name: string; percentage?: number; y?: number | null }): string {\n const truncatedName = this.name.length > NAME_MAX_LENGTH ? this.name.substring(0, NAME_MAX_LENGTH) + '...' : this.name;\n const displayValue =\n metricFormat === 'percentage' ? numberFormat(round(this.percentage ?? 0, 1), -1) + '%' : numberFormat(this.y ?? 0, -1);\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0)) ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER : '';\n return prefix + truncatedName + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n };\n}\n","import { ChangeDetectionStrategy, Component, input } 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 template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n readonly innerLabels = input(false);\n readonly mouseEventEnabled = input(true);\n readonly series = input<SeriesPieOptions[]>([]);\n readonly colors = input<string[]>();\n readonly metricFormat = input<'percentage' | 'value'>('percentage');\n\n protected initChart(): void {\n const series = this.series();\n const innerLabels = this.innerLabels();\n const dataAvailable = !!series[0]?.data?.length;\n const options = ChartPieOptions.buildPie(this.chartOptions(), innerLabels, this.metricFormat(), this.locale());\n\n const effectiveSeries: SeriesPieOptions[] = dataAvailable\n ? series\n : [\n {\n type: 'pie',\n data: [{ y: 1, dataLabels: { enabled: false } }],\n enableMouseTracking: false,\n },\n ];\n\n const effectiveColors = !dataAvailable\n ? [ChartColors.GREY_COLORS[10]]\n : (this.colors() ?? ChartColors.getColors(series[0]?.data?.length ?? 0, this.color()));\n\n ChartPieOptions.configurePie(\n effectiveSeries,\n options,\n effectiveColors,\n this.labelDateFormat(),\n innerLabels,\n this.mouseEventEnabled()\n );\n this.chart = new Chart(this.hostElement, options);\n }\n}\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 { ChangeDetectionStrategy, Component, 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 template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n readonly series = input<SeriesSplineOptions[]>([]);\n\n readonly chartInitialized = output<Chart>();\n\n protected initChart(): void {\n const series = this.series();\n const singleDayEnabled = series[0]?.data?.length === 1;\n const options = ChartSplineOptions.buildSpline(this.chartOptions(), singleDayEnabled, this.locale());\n ChartSplineOptions.configure(series, options, this.color(), this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n this.chartInitialized.emit(this.chart);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../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-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../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-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../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-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["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 '100': '#E81313',\n '150': '#D80505',\n };\n\n /**\n * Categorical data palette — 10 distinct hues used to tell apart networks, profiles, or metrics in the same chart.\n * Order is fixed and assigned by position (1st category → DATA_COLORS[0]).\n * For more than 10 categories the palette wraps; the legend is the source of truth.\n */\n static readonly DATA_COLORS = [\n '#12AABA', // data-cyan-100\n '#D98800', // data-sun-100\n '#CC2878', // data-peony-100\n '#42B85A', // data-lime-100\n '#8A62CC', // data-iris-10\n '#CC5040', // data-cherry-100\n '#3A92E8', // data-sky-100\n '#DC6A30', // data-tangerine-100\n '#12A87A', // data-emerald-100\n '#4A6ACC', // data-navy-100\n ];\n\n /**\n * Sentiment palette — fixed mapping from sentiment to brand colors.\n * Used by sentiment widgets only; not part of the categorical data palette.\n */\n static readonly SENTIMENT_COLORS = {\n positive: '#45B854', // green-100\n neutral: '#858FA1', // grey-60\n negative: '#E81313', // red-100\n };\n\n static readonly HEATMAP_COLOR: string = '#4A6ACC';\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 /**\n * Returns the categorical data color at the given 0-based position.\n * Wraps modulo `DATA_COLORS.length` (10) so position 10 reuses position 0.\n */\n static getDataColor(position: number): string {\n const palette = ChartColors.DATA_COLORS;\n return palette[((position % palette.length) + palette.length) % palette.length];\n }\n\n /**\n * Returns the first `count` data colors from the categorical palette.\n * Wraps after 10 positions.\n */\n static getDataColors(count: number): string[] {\n return Array.from({ length: Math.max(count, 0) }, (_, index) => ChartColors.getDataColor(index));\n }\n}\n","import { afterNextRender, DestroyRef, Directive, effect, ElementRef, inject, input, Signal, signal } from '@angular/core';\nimport { Chart, Options } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive()\nexport abstract class AbstractChartComponent {\n private readonly destroyRef = inject(DestroyRef);\n\n /** Highcharts renders into the host element directly. */\n protected readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly chartOptions = input<Options>({});\n readonly color = input<ChartColor>(ChartColor.ElectricBlue);\n readonly labelDateFormat = input<string>('%m/%d');\n readonly locale = input<string>('en');\n\n protected chart?: Chart;\n private readonly viewReady = signal(false);\n private resizeObserver?: ResizeObserver;\n\n /** Subclasses expose their typed series input so the base can observe it. */\n protected abstract readonly series: Signal<readonly unknown[]>;\n\n constructor() {\n afterNextRender(() => {\n this.resizeObserver = new ResizeObserver(() => this.onResize());\n this.resizeObserver.observe(this.hostElement);\n this.viewReady.set(true);\n });\n\n // Eager init on view-ready; ResizeObserver reflows as the container grows.\n effect(() => {\n if (!this.viewReady()) return;\n this.rebuild();\n });\n\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n this.chart?.destroy();\n });\n }\n\n protected abstract initChart(): void;\n\n private onResize(): void {\n if (this.chart) {\n this.chart.reflow();\n } else if (this.hostElement.clientWidth > 0 && this.series().length) {\n this.rebuild();\n }\n }\n\n private rebuild(): void {\n this.chart?.destroy();\n this.chart = undefined;\n this.initChart();\n }\n}\n","import { Options } from 'highcharts';\n\n/** `lang.locale` drives Intl-based weekday/month/number formatting; we only override the tooltip date order. */\nexport function buildHighchartsLocaleOptions(locale: string): Options {\n const dayFormat = locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y';\n return {\n lang: { locale },\n tooltip: {\n dateTimeLabelFormats: {\n day: dayFormat,\n week: dayFormat,\n },\n },\n };\n}\n","import { merge, Options, SeriesOptionsType, setOptions } from 'highcharts';\nimport { ChartColors } from './chart-colors';\nimport { buildHighchartsLocaleOptions } from './chart-locale';\n\nconst FONT_FAMILY = \"Averta, 'Open Sans', Helvetica, sans-serif\";\nconst LABEL_FONT_SIZE = '12px';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT = '%A, %b %e, %Y';\n\n static readonly DEFAULT_OPTIONS: Options = {\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: LABEL_FONT_SIZE,\n },\n states: {\n hover: { fill: ChartColors.GREY_COLORS[5] },\n },\n },\n },\n },\n panning: { enabled: true },\n panKey: 'shift',\n style: { fontFamily: FONT_FAMILY },\n },\n colorAxis: {\n labels: { style: { color: ChartColors.GREY_COLORS[60] } },\n },\n credits: { enabled: false },\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: { brightness: 0 },\n inactive: { enabled: true, opacity: 0.2 },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: { y: 0 },\n },\n title: { text: undefined },\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 // Per-point tooltip — required for the hover-fade (other series dim when one is hovered).\n // Override per-chart with `chartOptions: { tooltip: { shared: true } }` (drops the fade there).\n shared: false,\n useHTML: true,\n headerFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<div style=\"white-space: wrap; font-size: ${LABEL_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</div></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}\">●</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: { text: null },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: LABEL_FONT_SIZE,\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: { text: undefined },\n labels: {\n // Highcharts auto-formats per `lang.locale`.\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: LABEL_FONT_SIZE,\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 merge(ChartOptions.DEFAULT_OPTIONS, localeOptions, options);\n }\n\n static configure(series: SeriesOptionsType[], options: Options, labelDateFormat?: string): void {\n options.xAxis = merge({ labels: { format: `{value:${labelDateFormat ?? '%m/%d'}}` } }, options.xAxis);\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 = options.colors ?? ChartColors.getDataColors(series.length);\n }\n }\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions, merge } from 'highcharts';\nimport { ChartOptions } from '../chart-options';\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 // `opposite` = diverging left/right bars (one series flipped to negative).\n bar.stacking = 'normal';\n bar.borderRadius = { radius: '50%', scope: 'stack', where: 'end' };\n } else {\n bar.borderRadius = '50%';\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(merge(defaultBarOptions, options), locale);\n }\n\n static configureBar(\n series: SeriesBarOptions[],\n categories: string[],\n options: Options,\n opposite: boolean,\n labelDateFormat?: string\n ): void {\n ChartOptions.configure(series, options, labelDateFormat);\n if (categories?.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0];\n // Flip the first series negative so it stacks left of zero.\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return { ...point, y: -Math.abs(point.y) };\n }\n if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\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 };\">●</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n readonly categories = input<string[]>([]);\n readonly opposite = input(false);\n readonly stacked = input(false);\n readonly series = input<SeriesBarOptions[]>([]);\n\n initChart(): void {\n const options = ChartBarOptions.buildBars(this.chartOptions(), this.stacked(), this.opposite(), this.locale());\n ChartBarOptions.configureBar(this.series(), this.categories(), options, this.opposite(), this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n }\n}\n","import { Options, PlotColumnOptions, merge } from 'highcharts';\nimport { ChartOptions } 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 crisp: false,\n maxPointWidth: 20,\n // Round only the value-side end; `scope: 'stack'` keeps middle segments square.\n borderRadius: stacked ? { radius: '50%', scope: 'stack', where: 'end' } : '50%',\n };\n if (stacked) {\n column.stacking = 'normal';\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(merge(defaultColumnOptions, options), locale);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n readonly stacked = input(false);\n readonly series = input<SeriesColumnOptions[]>([]);\n\n readonly chartInitialized = output<Chart>();\n\n initChart(): void {\n const options = ChartColumnOptions.buildColumn(this.chartOptions(), this.stacked(), this.locale());\n ChartColumnOptions.configure(this.series(), options, this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n this.chartInitialized.emit(this.chart);\n }\n}\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n PointOptionsObject,\n SeriesHeatmapOptions,\n SeriesOptionsType,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\nimport { merge } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions } 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 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 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}\">●</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: { step: 3 },\n reversed: true,\n visible: true,\n },\n };\n return super.build(merge(defaultHeatmapOptions, options), locale);\n }\n\n static configureHeatmap(\n categoriesX: string[],\n categoriesY: string[],\n series: SeriesOptionsType[],\n options: Options,\n leastLabel?: string,\n mostLabel?: string,\n labelDateFormat?: string\n ): void {\n options.colors = options.colors ?? [ChartColors.HEATMAP_COLOR];\n super.configure(series, options, labelDateFormat);\n\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 const data = ((series[0] as SeriesHeatmapOptions).data ?? []) as PointOptionsObject[];\n const maxValue = data.reduce((max, point) => Math.max(max, point.value ?? 0), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n options.colorAxis = {\n ...(options.colorAxis ?? {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: maxValue,\n maxColor: ChartColors.HEATMAP_COLOR,\n tickAmount: HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT,\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels ?? {}),\n formatter: createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n}\n\nfunction createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) return leastLabel;\n if (this.value === this.axis.max) return mostLabel;\n return '';\n };\n}\n","import { ChangeDetectionStrategy, Component, 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 LegendLabels = { least: string; most: string };\n\n@Component({\n selector: 'ap-chart-heatmap',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n readonly categoriesX = input<string[]>([]);\n readonly categoriesY = input<string[]>([]);\n readonly series = input<SeriesHeatmapOptions[]>([]);\n readonly legendLabels = input<LegendLabels>();\n\n protected initChart(): void {\n const labels = this.legendLabels();\n const options = ChartHeatmapOptions.build(this.chartOptions(), this.locale());\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX(),\n this.categoriesY(),\n this.series(),\n options,\n labels?.least,\n labels?.most,\n this.labelDateFormat()\n );\n this.chart = mapChart(this.hostElement, options);\n }\n}\n","import { Options, merge } from 'highcharts';\nimport { ChartOptions } 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 borderRadius: { radius: '50%', scope: 'stack', where: 'end' },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(merge(defaultOptions, options), locale);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n readonly series = input<SeriesOptionsType[]>([]);\n\n protected initChart(): void {\n const series = this.series();\n const splineSeries = series.find(serie => serie.type === 'spline') as SeriesSplineOptions | undefined;\n const singleDayEnabled = splineSeries?.data?.length === 1;\n const options = ChartMixedOptions.buildMixed(this.chartOptions(), singleDayEnabled, this.locale());\n ChartMixedOptions.configure(series, options, this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n }\n}\n","import { round } from 'es-toolkit';\nimport { numberFormat, Options, SeriesPieOptions, merge } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\n// RTL scripts (Hebrew, Arabic, …).\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;\nconst 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 ? buildInnerLabels(metricFormat) : buildOuterLabels(metricFormat),\n showInLegend: innerLabels,\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels ? { symbolHeight: 10, enabled: true } : {},\n };\n return super.build(merge(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, labelDateFormat);\n if (innerLabels && options.legend) {\n options.legend.enabled = true;\n }\n if (!series?.[0]) {\n return;\n }\n options.colors = colors;\n // Otherwise we rely on Highcharts' default `states.inactive.opacity` to fade non-hovered slices.\n if (!mouseEventEnabled) {\n options.plotOptions ??= {};\n options.plotOptions.pie ??= {};\n options.plotOptions.pie.enableMouseTracking = false;\n }\n }\n}\n\nfunction buildInnerLabels(metricFormat: 'percentage' | 'value') {\n return {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n };\n}\n\nfunction buildOuterLabels(metricFormat: 'percentage' | 'value') {\n return {\n formatter(this: { name: string; percentage?: number; y?: number | null }): string {\n const truncatedName = this.name.length > NAME_MAX_LENGTH ? this.name.substring(0, NAME_MAX_LENGTH) + '...' : this.name;\n const displayValue =\n metricFormat === 'percentage' ? numberFormat(round(this.percentage ?? 0, 1), -1) + '%' : numberFormat(this.y ?? 0, -1);\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0)) ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER : '';\n return prefix + truncatedName + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n };\n}\n","import { ChangeDetectionStrategy, Component, input } 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 template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n readonly innerLabels = input(false);\n readonly mouseEventEnabled = input(true);\n readonly series = input<SeriesPieOptions[]>([]);\n readonly colors = input<string[]>();\n readonly metricFormat = input<'percentage' | 'value'>('percentage');\n\n protected initChart(): void {\n const series = this.series();\n const innerLabels = this.innerLabels();\n const dataAvailable = !!series[0]?.data?.length;\n const options = ChartPieOptions.buildPie(this.chartOptions(), innerLabels, this.metricFormat(), this.locale());\n\n const effectiveSeries: SeriesPieOptions[] = dataAvailable\n ? series\n : [\n {\n type: 'pie',\n data: [{ y: 1, dataLabels: { enabled: false } }],\n enableMouseTracking: false,\n },\n ];\n\n const effectiveColors = !dataAvailable\n ? [ChartColors.GREY_COLORS[10]]\n : (this.colors() ?? ChartColors.getDataColors(series[0]?.data?.length ?? 0));\n\n ChartPieOptions.configurePie(\n effectiveSeries,\n options,\n effectiveColors,\n this.labelDateFormat(),\n innerLabels,\n this.mouseEventEnabled()\n );\n this.chart = new Chart(this.hostElement, options);\n }\n}\n","import { Options, merge } from 'highcharts';\nimport { ChartOptions } 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(merge(defaultSplineOptions, options), locale);\n }\n}\n","import { ChangeDetectionStrategy, Component, 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 template: '',\n host: { style: 'display: block' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n readonly series = input<SeriesSplineOptions[]>([]);\n\n readonly chartInitialized = output<Chart>();\n\n protected initChart(): void {\n const series = this.series();\n const singleDayEnabled = series[0]?.data?.length === 1;\n const options = ChartSplineOptions.buildSpline(this.chartOptions(), singleDayEnabled, this.locale());\n ChartSplineOptions.configure(series, options, this.labelDateFormat());\n this.chart = new Chart(this.hostElement, options);\n this.chartInitialized.emit(this.chart);\n }\n}\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
|
@@ -68,8 +68,25 @@ declare class ChartColors {
|
|
|
68
68
|
};
|
|
69
69
|
static readonly RED_COLORS: {
|
|
70
70
|
'80': string;
|
|
71
|
+
'100': string;
|
|
71
72
|
'150': string;
|
|
72
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* Categorical data palette — 10 distinct hues used to tell apart networks, profiles, or metrics in the same chart.
|
|
76
|
+
* Order is fixed and assigned by position (1st category → DATA_COLORS[0]).
|
|
77
|
+
* For more than 10 categories the palette wraps; the legend is the source of truth.
|
|
78
|
+
*/
|
|
79
|
+
static readonly DATA_COLORS: string[];
|
|
80
|
+
/**
|
|
81
|
+
* Sentiment palette — fixed mapping from sentiment to brand colors.
|
|
82
|
+
* Used by sentiment widgets only; not part of the categorical data palette.
|
|
83
|
+
*/
|
|
84
|
+
static readonly SENTIMENT_COLORS: {
|
|
85
|
+
positive: string;
|
|
86
|
+
neutral: string;
|
|
87
|
+
negative: string;
|
|
88
|
+
};
|
|
89
|
+
static readonly HEATMAP_COLOR: string;
|
|
73
90
|
static readonly SOFT_RED_COLORS: {
|
|
74
91
|
100: string;
|
|
75
92
|
85: string;
|
|
@@ -82,7 +99,16 @@ declare class ChartColors {
|
|
|
82
99
|
static getChartColors(color: ChartColor | undefined): {
|
|
83
100
|
[shade: string]: string;
|
|
84
101
|
};
|
|
85
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Returns the categorical data color at the given 0-based position.
|
|
104
|
+
* Wraps modulo `DATA_COLORS.length` (10) so position 10 reuses position 0.
|
|
105
|
+
*/
|
|
106
|
+
static getDataColor(position: number): string;
|
|
107
|
+
/**
|
|
108
|
+
* Returns the first `count` data colors from the categorical palette.
|
|
109
|
+
* Wraps after 10 positions.
|
|
110
|
+
*/
|
|
111
|
+
static getDataColors(count: number): string[];
|
|
86
112
|
}
|
|
87
113
|
|
|
88
114
|
declare abstract class AbstractChartComponent {
|
|
@@ -150,10 +176,8 @@ declare class ChartOptions {
|
|
|
150
176
|
static readonly DEFAULT_DATE_FORMAT = "%A, %b %e, %Y";
|
|
151
177
|
static readonly DEFAULT_OPTIONS: Options;
|
|
152
178
|
static build(options: Options, locale: string): Options;
|
|
153
|
-
static configure(series: SeriesOptionsType[], options: Options,
|
|
179
|
+
static configure(series: SeriesOptionsType[], options: Options, labelDateFormat?: string): void;
|
|
154
180
|
}
|
|
155
|
-
/** Deep-merge clone (immutable). Arrays are replaced wholesale, not element-merged like `es-toolkit`'s `toMerged`. */
|
|
156
|
-
declare function mergeDeep(target: any, source: any): any;
|
|
157
181
|
|
|
158
182
|
declare class ChartPieComponent extends AbstractChartComponent {
|
|
159
183
|
readonly innerLabels: _angular_core.InputSignal<boolean>;
|
|
@@ -174,4 +198,4 @@ declare class ChartSplineComponent extends AbstractChartComponent {
|
|
|
174
198
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartSplineComponent, "ap-chart-spline", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; }, { "chartInitialized": "chartInitialized"; }, never, never, true, never>;
|
|
175
199
|
}
|
|
176
200
|
|
|
177
|
-
export { AbstractChartComponent, ChartBarComponent, ChartColor, ChartColors, ChartColumnComponent, ChartHeatmapComponent, ChartMixedComponent, ChartOptions, ChartPieComponent, ChartSplineComponent
|
|
201
|
+
export { AbstractChartComponent, ChartBarComponent, ChartColor, ChartColors, ChartColumnComponent, ChartHeatmapComponent, ChartMixedComponent, ChartOptions, ChartPieComponent, ChartSplineComponent };
|
package/package.json
CHANGED
|
Binary file
|