@agorapulse/ui-charts 20.2.2 → 21.0.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
@@ -4,6 +4,10 @@ import { setOptions, merge, Chart, numberFormat } from 'highcharts';
4
4
  import { mapChart } from 'highcharts/highmaps';
5
5
  import { round } from 'es-toolkit';
6
6
 
7
+ /**
8
+ * @deprecated Use the categorical data palette via `ChartColors.getDataColor` /
9
+ * `ChartColors.getDataColors`, or rely on Highcharts' default theme.
10
+ */
7
11
  var ChartColor;
8
12
  (function (ChartColor) {
9
13
  ChartColor[ChartColor["Grey"] = 0] = "Grey";
@@ -14,6 +18,7 @@ var ChartColor;
14
18
  ChartColor[ChartColor["Green"] = 5] = "Green";
15
19
  })(ChartColor || (ChartColor = {}));
16
20
  class ChartColors {
21
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
17
22
  static SOFT_BLUE_COLORS = {
18
23
  '10': '#EFF5FC',
19
24
  '20': '#DFEDFA',
@@ -23,6 +28,7 @@ class ChartColors {
23
28
  '100': '#61A4E4',
24
29
  '150': '#2873BA',
25
30
  };
31
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
26
32
  static ELECTRIC_BLUE_COLORS = {
27
33
  '10': '#e8f4ff',
28
34
  '20': '#d1e8ff',
@@ -32,6 +38,7 @@ class ChartColors {
32
38
  '100': '#178dfe',
33
39
  '150': '#0e72d6',
34
40
  };
41
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
35
42
  static ORANGE_COLORS = {
36
43
  '10': '#FFEFE9',
37
44
  '20': '#FFE1D4',
@@ -41,6 +48,7 @@ class ChartColors {
41
48
  '100': '#FF6726',
42
49
  '150': '#C83E07',
43
50
  };
51
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
44
52
  static GREEN_COLORS = {
45
53
  '10': '#ECF7ED',
46
54
  '20': '#DAF1DD',
@@ -50,6 +58,7 @@ class ChartColors {
50
58
  '100': '#45B854',
51
59
  '150': '#0F821D',
52
60
  };
61
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
53
62
  static PURPLE_COLORS = {
54
63
  '10': '#EFEDF8',
55
64
  '20': '#E0DDF2',
@@ -59,6 +68,13 @@ class ChartColors {
59
68
  '100': '#6554C0',
60
69
  '150': '#3C2C95',
61
70
  };
71
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
72
+ static SOFT_RED_COLORS = {
73
+ 100: '#ff5353',
74
+ 85: '#ff6d6d',
75
+ 60: '#ff9898',
76
+ 10: '#fff9f9',
77
+ };
62
78
  static GREY_COLORS = {
63
79
  '5': '#F5F5F7',
64
80
  '10': '#EAECEF',
@@ -69,11 +85,6 @@ class ChartColors {
69
85
  '100': '#344563',
70
86
  '150': '#212E44',
71
87
  };
72
- static RED_COLORS = {
73
- '80': '#F17171',
74
- '100': '#E81313',
75
- '150': '#D80505',
76
- };
77
88
  /**
78
89
  * Categorical data palette — 10 distinct hues used to tell apart networks, profiles, or metrics in the same chart.
79
90
  * Order is fixed and assigned by position (1st category → DATA_COLORS[0]).
@@ -101,31 +112,9 @@ class ChartColors {
101
112
  negative: '#E81313', // red-100
102
113
  };
103
114
  static HEATMAP_COLOR = '#4A6ACC';
104
- static SOFT_RED_COLORS = {
105
- 100: '#ff5353',
106
- 85: '#ff6d6d',
107
- 60: '#ff9898',
108
- 10: '#fff9f9',
109
- };
110
115
  static BLACK_COLOR = '#000000';
111
116
  static LIMIT_COLOR = '#E81313';
112
117
  static WHITE_COLOR = '#FFFFFF';
113
- static getChartColors(color) {
114
- switch (color) {
115
- case ChartColor.Orange:
116
- return this.ORANGE_COLORS;
117
- case ChartColor.SoftBlue:
118
- return this.SOFT_BLUE_COLORS;
119
- case ChartColor.ElectricBlue:
120
- return this.ELECTRIC_BLUE_COLORS;
121
- case ChartColor.Purple:
122
- return this.PURPLE_COLORS;
123
- case ChartColor.Green:
124
- return this.GREEN_COLORS;
125
- default:
126
- return this.GREY_COLORS;
127
- }
128
- }
129
118
  /**
130
119
  * Returns the categorical data color at the given 0-based position.
131
120
  * Wraps modulo `DATA_COLORS.length` (10) so position 10 reuses position 0.
@@ -147,12 +136,12 @@ class AbstractChartComponent {
147
136
  destroyRef = inject(DestroyRef);
148
137
  /** Highcharts renders into the host element directly. */
149
138
  hostElement = inject(ElementRef).nativeElement;
150
- chartOptions = input({}, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
151
- color = input(ChartColor.ElectricBlue, ...(ngDevMode ? [{ debugName: "color" }] : []));
152
- labelDateFormat = input('%m/%d', ...(ngDevMode ? [{ debugName: "labelDateFormat" }] : []));
153
- locale = input('en', ...(ngDevMode ? [{ debugName: "locale" }] : []));
139
+ chartOptions = input({}, ...(ngDevMode ? [{ debugName: "chartOptions" }] : /* istanbul ignore next */ []));
140
+ color = input(ChartColor.ElectricBlue, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
141
+ labelDateFormat = input('%m/%d', ...(ngDevMode ? [{ debugName: "labelDateFormat" }] : /* istanbul ignore next */ []));
142
+ locale = input('en', ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
154
143
  chart;
155
- viewReady = signal(false, ...(ngDevMode ? [{ debugName: "viewReady" }] : []));
144
+ viewReady = signal(false, ...(ngDevMode ? [{ debugName: "viewReady" }] : /* istanbul ignore next */ []));
156
145
  resizeObserver;
157
146
  constructor() {
158
147
  afterNextRender(() => {
@@ -184,10 +173,10 @@ class AbstractChartComponent {
184
173
  this.chart = undefined;
185
174
  this.initChart();
186
175
  }
187
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AbstractChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
188
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.18", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: { classPropertyName: "chartOptions", publicName: "chartOptions", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, labelDateFormat: { classPropertyName: "labelDateFormat", publicName: "labelDateFormat", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: AbstractChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
177
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: { classPropertyName: "chartOptions", publicName: "chartOptions", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, labelDateFormat: { classPropertyName: "labelDateFormat", publicName: "labelDateFormat", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
189
178
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AbstractChartComponent, decorators: [{
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: AbstractChartComponent, decorators: [{
191
180
  type: Directive
192
181
  }], ctorParameters: () => [], propDecorators: { chartOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "chartOptions", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], labelDateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelDateFormat", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }] } });
193
182
 
@@ -414,19 +403,19 @@ class ChartBarOptions extends ChartOptions {
414
403
  }
415
404
 
416
405
  class ChartBarComponent extends AbstractChartComponent {
417
- categories = input([], ...(ngDevMode ? [{ debugName: "categories" }] : []));
418
- opposite = input(false, ...(ngDevMode ? [{ debugName: "opposite" }] : []));
419
- stacked = input(false, ...(ngDevMode ? [{ debugName: "stacked" }] : []));
420
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
406
+ categories = input([], ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
407
+ opposite = input(false, ...(ngDevMode ? [{ debugName: "opposite" }] : /* istanbul ignore next */ []));
408
+ stacked = input(false, ...(ngDevMode ? [{ debugName: "stacked" }] : /* istanbul ignore next */ []));
409
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
421
410
  initChart() {
422
411
  const options = ChartBarOptions.buildBars(this.chartOptions(), this.stacked(), this.opposite(), this.locale());
423
412
  ChartBarOptions.configureBar(this.series(), this.categories(), options, this.opposite(), this.labelDateFormat());
424
413
  this.chart = new Chart(this.hostElement, options);
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 });
427
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartBarComponent, isStandalone: true, selector: "ap-chart-bar", inputs: { categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, opposite: { classPropertyName: "opposite", publicName: "opposite", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
416
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartBarComponent, isStandalone: true, selector: "ap-chart-bar", inputs: { categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: false, transformFunction: null }, opposite: { classPropertyName: "opposite", publicName: "opposite", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
428
417
  }
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartBarComponent, decorators: [{
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartBarComponent, decorators: [{
430
419
  type: Component,
431
420
  args: [{
432
421
  selector: 'ap-chart-bar',
@@ -468,8 +457,8 @@ class ChartColumnOptions extends ChartOptions {
468
457
  }
469
458
 
470
459
  class ChartColumnComponent extends AbstractChartComponent {
471
- stacked = input(false, ...(ngDevMode ? [{ debugName: "stacked" }] : []));
472
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
460
+ stacked = input(false, ...(ngDevMode ? [{ debugName: "stacked" }] : /* istanbul ignore next */ []));
461
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
473
462
  chartInitialized = output();
474
463
  initChart() {
475
464
  const options = ChartColumnOptions.buildColumn(this.chartOptions(), this.stacked(), this.locale());
@@ -477,10 +466,10 @@ class ChartColumnComponent extends AbstractChartComponent {
477
466
  this.chart = new Chart(this.hostElement, options);
478
467
  this.chartInitialized.emit(this.chart);
479
468
  }
480
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
481
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartColumnComponent, isStandalone: true, selector: "ap-chart-column", inputs: { stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { chartInitialized: "chartInitialized" }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
469
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
470
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartColumnComponent, isStandalone: true, selector: "ap-chart-column", inputs: { stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { chartInitialized: "chartInitialized" }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
482
471
  }
483
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartColumnComponent, decorators: [{
472
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartColumnComponent, decorators: [{
484
473
  type: Component,
485
474
  args: [{
486
475
  selector: 'ap-chart-column',
@@ -581,13 +570,17 @@ class ChartHeatmapOptions extends ChartOptions {
581
570
  const data = (series[0].data ?? []);
582
571
  const maxValue = data.reduce((max, point) => Math.max(max, point.value ?? 0), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;
583
572
  const labelsEnabled = !!(leastLabel && mostLabel);
573
+ // `tickPositions` (not `tickAmount`) ends the axis exactly at `maxValue`, so the
574
+ // highest cell hits `maxColor` and gets the "Highest" label.
575
+ const tickCount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;
576
+ const tickPositions = Array.from({ length: tickCount }, (_, i) => (maxValue * i) / (tickCount - 1));
584
577
  options.colorAxis = {
585
578
  ...(options.colorAxis ?? {}),
586
579
  visible: labelsEnabled,
587
580
  min: HEATMAP_CONSTANTS.MIN_VALUE,
588
581
  max: maxValue,
589
582
  maxColor: ChartColors.HEATMAP_COLOR,
590
- tickAmount: HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT,
583
+ tickPositions,
591
584
  };
592
585
  if (labelsEnabled) {
593
586
  options.colorAxis.labels = {
@@ -608,20 +601,20 @@ function createColorAxisFormatter(leastLabel, mostLabel) {
608
601
  }
609
602
 
610
603
  class ChartHeatmapComponent extends AbstractChartComponent {
611
- categoriesX = input([], ...(ngDevMode ? [{ debugName: "categoriesX" }] : []));
612
- categoriesY = input([], ...(ngDevMode ? [{ debugName: "categoriesY" }] : []));
613
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
614
- legendLabels = input(...(ngDevMode ? [undefined, { debugName: "legendLabels" }] : []));
604
+ categoriesX = input([], ...(ngDevMode ? [{ debugName: "categoriesX" }] : /* istanbul ignore next */ []));
605
+ categoriesY = input([], ...(ngDevMode ? [{ debugName: "categoriesY" }] : /* istanbul ignore next */ []));
606
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
607
+ legendLabels = input(...(ngDevMode ? [undefined, { debugName: "legendLabels" }] : /* istanbul ignore next */ []));
615
608
  initChart() {
616
609
  const labels = this.legendLabels();
617
610
  const options = ChartHeatmapOptions.build(this.chartOptions(), this.locale());
618
611
  ChartHeatmapOptions.configureHeatmap(this.categoriesX(), this.categoriesY(), this.series(), options, labels?.least, labels?.most, this.labelDateFormat());
619
612
  this.chart = mapChart(this.hostElement, options);
620
613
  }
621
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartHeatmapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
622
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartHeatmapComponent, isStandalone: true, selector: "ap-chart-heatmap", inputs: { categoriesX: { classPropertyName: "categoriesX", publicName: "categoriesX", isSignal: true, isRequired: false, transformFunction: null }, categoriesY: { classPropertyName: "categoriesY", publicName: "categoriesY", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, legendLabels: { classPropertyName: "legendLabels", publicName: "legendLabels", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
614
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartHeatmapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
615
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartHeatmapComponent, isStandalone: true, selector: "ap-chart-heatmap", inputs: { categoriesX: { classPropertyName: "categoriesX", publicName: "categoriesX", isSignal: true, isRequired: false, transformFunction: null }, categoriesY: { classPropertyName: "categoriesY", publicName: "categoriesY", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, legendLabels: { classPropertyName: "legendLabels", publicName: "legendLabels", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
623
616
  }
624
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartHeatmapComponent, decorators: [{
617
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartHeatmapComponent, decorators: [{
625
618
  type: Component,
626
619
  args: [{
627
620
  selector: 'ap-chart-heatmap',
@@ -665,7 +658,7 @@ class ChartMixedOptions extends ChartOptions {
665
658
  }
666
659
 
667
660
  class ChartMixedComponent extends AbstractChartComponent {
668
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
661
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
669
662
  initChart() {
670
663
  const series = this.series();
671
664
  const splineSeries = series.find(serie => serie.type === 'spline');
@@ -674,10 +667,10 @@ class ChartMixedComponent extends AbstractChartComponent {
674
667
  ChartMixedOptions.configure(series, options, this.labelDateFormat());
675
668
  this.chart = new Chart(this.hostElement, options);
676
669
  }
677
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartMixedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
678
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartMixedComponent, isStandalone: true, selector: "ap-chart-mixed", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
670
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartMixedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
671
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartMixedComponent, isStandalone: true, selector: "ap-chart-mixed", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
679
672
  }
680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartMixedComponent, decorators: [{
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartMixedComponent, decorators: [{
681
674
  type: Component,
682
675
  args: [{
683
676
  selector: 'ap-chart-mixed',
@@ -764,11 +757,11 @@ function buildOuterLabels(metricFormat) {
764
757
  }
765
758
 
766
759
  class ChartPieComponent extends AbstractChartComponent {
767
- innerLabels = input(false, ...(ngDevMode ? [{ debugName: "innerLabels" }] : []));
768
- mouseEventEnabled = input(true, ...(ngDevMode ? [{ debugName: "mouseEventEnabled" }] : []));
769
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
770
- colors = input(...(ngDevMode ? [undefined, { debugName: "colors" }] : []));
771
- metricFormat = input('percentage', ...(ngDevMode ? [{ debugName: "metricFormat" }] : []));
760
+ innerLabels = input(false, ...(ngDevMode ? [{ debugName: "innerLabels" }] : /* istanbul ignore next */ []));
761
+ mouseEventEnabled = input(true, ...(ngDevMode ? [{ debugName: "mouseEventEnabled" }] : /* istanbul ignore next */ []));
762
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
763
+ colors = input(...(ngDevMode ? [undefined, { debugName: "colors" }] : /* istanbul ignore next */ []));
764
+ metricFormat = input('percentage', ...(ngDevMode ? [{ debugName: "metricFormat" }] : /* istanbul ignore next */ []));
772
765
  initChart() {
773
766
  const series = this.series();
774
767
  const innerLabels = this.innerLabels();
@@ -789,10 +782,10 @@ class ChartPieComponent extends AbstractChartComponent {
789
782
  ChartPieOptions.configurePie(effectiveSeries, options, effectiveColors, this.labelDateFormat(), innerLabels, this.mouseEventEnabled());
790
783
  this.chart = new Chart(this.hostElement, options);
791
784
  }
792
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartPieComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
793
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartPieComponent, isStandalone: true, selector: "ap-chart-pie", inputs: { innerLabels: { classPropertyName: "innerLabels", publicName: "innerLabels", isSignal: true, isRequired: false, transformFunction: null }, mouseEventEnabled: { classPropertyName: "mouseEventEnabled", publicName: "mouseEventEnabled", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, metricFormat: { classPropertyName: "metricFormat", publicName: "metricFormat", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
785
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartPieComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
786
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartPieComponent, isStandalone: true, selector: "ap-chart-pie", inputs: { innerLabels: { classPropertyName: "innerLabels", publicName: "innerLabels", isSignal: true, isRequired: false, transformFunction: null }, mouseEventEnabled: { classPropertyName: "mouseEventEnabled", publicName: "mouseEventEnabled", isSignal: true, isRequired: false, transformFunction: null }, series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, metricFormat: { classPropertyName: "metricFormat", publicName: "metricFormat", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
794
787
  }
795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartPieComponent, decorators: [{
788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartPieComponent, decorators: [{
796
789
  type: Component,
797
790
  args: [{
798
791
  selector: 'ap-chart-pie',
@@ -827,7 +820,7 @@ class ChartSplineOptions extends ChartOptions {
827
820
  }
828
821
 
829
822
  class ChartSplineComponent extends AbstractChartComponent {
830
- series = input([], ...(ngDevMode ? [{ debugName: "series" }] : []));
823
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
831
824
  chartInitialized = output();
832
825
  initChart() {
833
826
  const series = this.series();
@@ -837,10 +830,10 @@ class ChartSplineComponent extends AbstractChartComponent {
837
830
  this.chart = new Chart(this.hostElement, options);
838
831
  this.chartInitialized.emit(this.chart);
839
832
  }
840
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartSplineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
841
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: ChartSplineComponent, isStandalone: true, selector: "ap-chart-spline", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { chartInitialized: "chartInitialized" }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
833
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartSplineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
834
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: ChartSplineComponent, isStandalone: true, selector: "ap-chart-spline", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { chartInitialized: "chartInitialized" }, host: { styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
842
835
  }
843
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ChartSplineComponent, decorators: [{
836
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ChartSplineComponent, decorators: [{
844
837
  type: Component,
845
838
  args: [{
846
839
  selector: 'ap-chart-spline',
@@ -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 '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 // Grouped tooltip — all series at the hovered x-axis tick render in a single tooltip.\n // Override per-chart with `chartOptions: { tooltip: { shared: false } }` to enable per-point hover-fade.\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 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 whiteSpace: 'nowrap',\n },\n overflow: 'allow',\n allowOverlap: true,\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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"}
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":["/**\n * @deprecated Use the categorical data palette via `ChartColors.getDataColor` /\n * `ChartColors.getDataColors`, or rely on Highcharts' default theme.\n */\nexport enum ChartColor {\n Grey,\n Orange,\n SoftBlue,\n ElectricBlue,\n Purple,\n Green,\n}\n\nexport class ChartColors {\n /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\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 /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\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 /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\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 /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\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 /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\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 /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */\n static readonly SOFT_RED_COLORS = {\n 100: '#ff5353',\n 85: '#ff6d6d',\n 60: '#ff9898',\n 10: '#fff9f9',\n };\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 /**\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 static readonly BLACK_COLOR: string = '#000000';\n static readonly LIMIT_COLOR: string = '#E81313';\n static readonly WHITE_COLOR: string = '#FFFFFF';\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 // Grouped tooltip — all series at the hovered x-axis tick render in a single tooltip.\n // Override per-chart with `chartOptions: { tooltip: { shared: false } }` to enable per-point hover-fade.\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 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 whiteSpace: 'nowrap',\n },\n overflow: 'allow',\n allowOverlap: true,\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 // `tickPositions` (not `tickAmount`) ends the axis exactly at `maxValue`, so the\n // highest cell hits `maxColor` and gets the \"Highest\" label.\n const tickCount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;\n const tickPositions = Array.from({ length: tickCount }, (_, i) => (maxValue * i) / (tickCount - 1));\n options.colorAxis = {\n ...(options.colorAxis ?? {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: maxValue,\n maxColor: ChartColors.HEATMAP_COLOR,\n tickPositions,\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/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.2.2",
4
+ "version": "21.0.0",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
@@ -12,24 +12,25 @@
12
12
  },
13
13
  "homepage": "https://github.com/agorapulse/design",
14
14
  "peerDependencies": {
15
- "@agorapulse/ui-theme": "^20.0.0",
16
- "@angular/common": "^20.0.0",
17
- "@angular/core": "^20.0.0",
18
- "@angular/material": "^20.0.0",
15
+ "@agorapulse/ui-theme": "^21.0.0",
16
+ "@angular/common": "^21.0.0",
17
+ "@angular/core": "^21.0.0",
18
+ "@angular/material": "^21.0.0",
19
19
  "highcharts": "12.4.0"
20
20
  },
21
21
  "module": "fesm2022/agorapulse-ui-charts.mjs",
22
- "typings": "index.d.ts",
22
+ "typings": "types/agorapulse-ui-charts.d.ts",
23
23
  "exports": {
24
24
  "./package.json": {
25
25
  "default": "./package.json"
26
26
  },
27
27
  ".": {
28
- "types": "./index.d.ts",
28
+ "types": "./types/agorapulse-ui-charts.d.ts",
29
29
  "default": "./fesm2022/agorapulse-ui-charts.mjs"
30
30
  }
31
31
  },
32
32
  "sideEffects": false,
33
+ "type": "module",
33
34
  "dependencies": {
34
35
  "tslib": "^2.3.0"
35
36
  }
@@ -2,6 +2,10 @@ import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
3
  import { Options, Chart, SeriesBarOptions, SeriesColumnOptions, SeriesHeatmapOptions, SeriesOptionsType, SeriesPieOptions, SeriesSplineOptions } from 'highcharts';
4
4
 
5
+ /**
6
+ * @deprecated Use the categorical data palette via `ChartColors.getDataColor` /
7
+ * `ChartColors.getDataColors`, or rely on Highcharts' default theme.
8
+ */
5
9
  declare enum ChartColor {
6
10
  Grey = 0,
7
11
  Orange = 1,
@@ -11,6 +15,7 @@ declare enum ChartColor {
11
15
  Green = 5
12
16
  }
13
17
  declare class ChartColors {
18
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
14
19
  static readonly SOFT_BLUE_COLORS: {
15
20
  '10': string;
16
21
  '20': string;
@@ -20,6 +25,7 @@ declare class ChartColors {
20
25
  '100': string;
21
26
  '150': string;
22
27
  };
28
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
23
29
  static readonly ELECTRIC_BLUE_COLORS: {
24
30
  '10': string;
25
31
  '20': string;
@@ -29,6 +35,7 @@ declare class ChartColors {
29
35
  '100': string;
30
36
  '150': string;
31
37
  };
38
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
32
39
  static readonly ORANGE_COLORS: {
33
40
  '10': string;
34
41
  '20': string;
@@ -38,6 +45,7 @@ declare class ChartColors {
38
45
  '100': string;
39
46
  '150': string;
40
47
  };
48
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
41
49
  static readonly GREEN_COLORS: {
42
50
  '10': string;
43
51
  '20': string;
@@ -47,6 +55,7 @@ declare class ChartColors {
47
55
  '100': string;
48
56
  '150': string;
49
57
  };
58
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
50
59
  static readonly PURPLE_COLORS: {
51
60
  '10': string;
52
61
  '20': string;
@@ -56,6 +65,13 @@ declare class ChartColors {
56
65
  '100': string;
57
66
  '150': string;
58
67
  };
68
+ /** @deprecated Brand palette is being removed. Use `getDataColor` / `getDataColors` or the Highcharts default theme. */
69
+ static readonly SOFT_RED_COLORS: {
70
+ 100: string;
71
+ 85: string;
72
+ 60: string;
73
+ 10: string;
74
+ };
59
75
  static readonly GREY_COLORS: {
60
76
  '5': string;
61
77
  '10': string;
@@ -66,11 +82,6 @@ declare class ChartColors {
66
82
  '100': string;
67
83
  '150': string;
68
84
  };
69
- static readonly RED_COLORS: {
70
- '80': string;
71
- '100': string;
72
- '150': string;
73
- };
74
85
  /**
75
86
  * Categorical data palette — 10 distinct hues used to tell apart networks, profiles, or metrics in the same chart.
76
87
  * Order is fixed and assigned by position (1st category → DATA_COLORS[0]).
@@ -87,18 +98,9 @@ declare class ChartColors {
87
98
  negative: string;
88
99
  };
89
100
  static readonly HEATMAP_COLOR: string;
90
- static readonly SOFT_RED_COLORS: {
91
- 100: string;
92
- 85: string;
93
- 60: string;
94
- 10: string;
95
- };
96
101
  static readonly BLACK_COLOR: string;
97
102
  static readonly LIMIT_COLOR: string;
98
103
  static readonly WHITE_COLOR: string;
99
- static getChartColors(color: ChartColor | undefined): {
100
- [shade: string]: string;
101
- };
102
104
  /**
103
105
  * Returns the categorical data color at the given 0-based position.
104
106
  * Wraps modulo `DATA_COLORS.length` (10) so position 10 reuses position 0.
Binary file