@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
- '150': '#D80505'
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
- static getColors(seriesCount, color) {
102
- const colors = this.getChartColors(color);
103
- switch (seriesCount) {
104
- case 1:
105
- return [colors[100]];
106
- case 2:
107
- return [colors[40], colors[100]];
108
- case 3:
109
- return [colors[20], colors[60], colors[100]];
110
- case 4:
111
- return [colors[20], colors[40], colors[60], colors[100]];
112
- case 5:
113
- return [colors[20], colors[40], colors[60], colors[100], colors[150]];
114
- default:
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
- shared: true,
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 mergeDeep(mergeDeep(ChartOptions.DEFAULT_OPTIONS, localeOptions), options);
317
+ return merge(ChartOptions.DEFAULT_OPTIONS, localeOptions, options);
289
318
  }
290
- static configure(series, options, color, labelDateFormat) {
291
- options.xAxis = mergeDeep({ labels: { format: `{value:${labelDateFormat ?? '%m/%d'}}` } }, 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.getColors(series.length, color);
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(mergeDeep(defaultBarOptions, options), locale);
382
+ return super.build(merge(defaultBarOptions, options), locale);
371
383
  }
372
- static configureBar(series, categories, options, opposite, color, labelDateFormat) {
373
- ChartOptions.configure(series, options, color, labelDateFormat);
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.color(), this.labelDateFormat());
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(mergeDeep(defaultColumnOptions, options), locale);
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.color(), this.labelDateFormat());
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(mergeDeep(defaultHeatmapOptions, options), locale);
568
+ return super.build(merge(defaultHeatmapOptions, options), locale);
558
569
  }
559
- static configureHeatmap(categoriesX, categoriesY, series, options, color, leastLabel, mostLabel, labelDateFormat) {
560
- super.configure(series, options, color, labelDateFormat);
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, this.color(), labels?.least, labels?.most, this.labelDateFormat());
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(mergeDeep(defaultOptions, options), locale);
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.color(), this.labelDateFormat());
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(mergeDeep(defaultPieOptions, options), locale);
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, undefined, labelDateFormat);
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.getColors(series[0]?.data?.length ?? 0, this.color()));
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(mergeDeep(defaultSplineOptions, options), locale);
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.color(), this.labelDateFormat());
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, mergeDeep };
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
- static getColors(seriesCount: number, color: ChartColor | undefined): string[];
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, color: ChartColor | undefined, labelDateFormat?: string): void;
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, mergeDeep };
201
+ export { AbstractChartComponent, ChartBarComponent, ChartColor, ChartColors, ChartColumnComponent, ChartHeatmapComponent, ChartMixedComponent, ChartOptions, ChartPieComponent, ChartSplineComponent };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agorapulse/ui-charts",
3
3
  "description": "Agorapulse UI Charts Components Library",
4
- "version": "20.1.18",
4
+ "version": "20.2.0",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
Binary file