@spike-rabbit/charts-ng 49.0.0 → 49.13.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.
Files changed (51) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +17 -3
  3. package/cartesian/package.json +4 -0
  4. package/chart/package.json +4 -0
  5. package/circle/package.json +4 -0
  6. package/common/package.json +4 -0
  7. package/custom-legend/package.json +4 -0
  8. package/fesm2022/spike-rabbit-charts-ng-cartesian.mjs +383 -0
  9. package/fesm2022/spike-rabbit-charts-ng-cartesian.mjs.map +1 -0
  10. package/fesm2022/spike-rabbit-charts-ng-chart.mjs +59 -0
  11. package/fesm2022/spike-rabbit-charts-ng-chart.mjs.map +1 -0
  12. package/fesm2022/spike-rabbit-charts-ng-circle.mjs +91 -0
  13. package/fesm2022/spike-rabbit-charts-ng-circle.mjs.map +1 -0
  14. package/fesm2022/spike-rabbit-charts-ng-common.mjs +2383 -0
  15. package/fesm2022/spike-rabbit-charts-ng-common.mjs.map +1 -0
  16. package/fesm2022/spike-rabbit-charts-ng-custom-legend.mjs +62 -0
  17. package/fesm2022/spike-rabbit-charts-ng-custom-legend.mjs.map +1 -0
  18. package/fesm2022/spike-rabbit-charts-ng-gauge.mjs +371 -0
  19. package/fesm2022/spike-rabbit-charts-ng-gauge.mjs.map +1 -0
  20. package/fesm2022/spike-rabbit-charts-ng-loading-spinner.mjs +27 -0
  21. package/fesm2022/spike-rabbit-charts-ng-loading-spinner.mjs.map +1 -0
  22. package/fesm2022/spike-rabbit-charts-ng-progress-bar.mjs +170 -0
  23. package/fesm2022/spike-rabbit-charts-ng-progress-bar.mjs.map +1 -0
  24. package/fesm2022/spike-rabbit-charts-ng-progress.mjs +220 -0
  25. package/fesm2022/spike-rabbit-charts-ng-progress.mjs.map +1 -0
  26. package/fesm2022/spike-rabbit-charts-ng-sankey.mjs +52 -0
  27. package/fesm2022/spike-rabbit-charts-ng-sankey.mjs.map +1 -0
  28. package/fesm2022/spike-rabbit-charts-ng-sunburst.mjs +52 -0
  29. package/fesm2022/spike-rabbit-charts-ng-sunburst.mjs.map +1 -0
  30. package/fesm2022/spike-rabbit-charts-ng.mjs +40 -3527
  31. package/fesm2022/spike-rabbit-charts-ng.mjs.map +1 -1
  32. package/gauge/package.json +4 -0
  33. package/loading-spinner/package.json +4 -0
  34. package/package.json +58 -12
  35. package/progress/package.json +4 -0
  36. package/progress-bar/package.json +4 -0
  37. package/projects/charts-ng/README.md +17 -3
  38. package/sankey/package.json +4 -0
  39. package/sunburst/package.json +4 -0
  40. package/types/spike-rabbit-charts-ng-cartesian.d.ts +91 -0
  41. package/types/spike-rabbit-charts-ng-chart.d.ts +9 -0
  42. package/types/spike-rabbit-charts-ng-circle.d.ts +74 -0
  43. package/{index.d.ts → types/spike-rabbit-charts-ng-common.d.ts} +102 -431
  44. package/types/spike-rabbit-charts-ng-custom-legend.d.ts +68 -0
  45. package/types/spike-rabbit-charts-ng-gauge.d.ts +96 -0
  46. package/types/spike-rabbit-charts-ng-loading-spinner.d.ts +8 -0
  47. package/types/spike-rabbit-charts-ng-progress-bar.d.ts +46 -0
  48. package/types/spike-rabbit-charts-ng-progress.d.ts +57 -0
  49. package/types/spike-rabbit-charts-ng-sankey.d.ts +19 -0
  50. package/types/spike-rabbit-charts-ng-sunburst.d.ts +19 -0
  51. package/types/spike-rabbit-charts-ng.d.ts +35 -0
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) Siemens 2016 - 2025
3
+ Copyright (c) Siemens 2016 - 2026
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the “Software”), to deal in
package/README.md CHANGED
@@ -35,16 +35,30 @@ import { SiChartsNgModule } from '@spike-rabbit/charts-ng';
35
35
  export class AppModule {}
36
36
  ```
37
37
 
38
+ Starting with v49, Element Charts uses separate entry points for each component.
39
+ Import components directly from their specific entry points:
40
+
41
+ ```ts
42
+ import { SiChartCartesianComponent } from '@spike-rabbit/charts-ng/cartesian';
43
+ import { SiChartCircleComponent } from '@spike-rabbit/charts-ng/circle';
44
+ import { SiChartGaugeComponent } from '@spike-rabbit/charts-ng/gauge';
45
+ // ... and other components
46
+
47
+ @Component({
48
+ imports: [SiChartCartesianComponent, ...]
49
+ })
50
+ export class AppComponent {}
51
+ ```
52
+
38
53
  ### Running unit tests
39
54
 
40
- Run `yarn charts:test` to perform the unit tests via [Karma](https://karma-runner.github.io).
41
- You can set a seed for running the tests in a specific using an environment variable: `SEED=71384 yarn lib:test`
55
+ Run `pnpm run charts:test` to perform the unit tests via [Vitest](https://main.vitest.dev/).
42
56
 
43
57
  ## License
44
58
 
45
59
  The following applies for code and documentation of the git repository,
46
60
  unless explicitly mentioned.
47
61
 
48
- Copyright (c) Siemens 2016 - 2025
62
+ Copyright (c) Siemens 2016 - 2026
49
63
 
50
64
  MIT, see [LICENSE.md](LICENSE.md).
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/spike-rabbit-charts-ng-cartesian.mjs",
3
+ "typings": "../types/spike-rabbit-charts-ng-cartesian.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/spike-rabbit-charts-ng-chart.mjs",
3
+ "typings": "../types/spike-rabbit-charts-ng-chart.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/spike-rabbit-charts-ng-circle.mjs",
3
+ "typings": "../types/spike-rabbit-charts-ng-circle.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/spike-rabbit-charts-ng-common.mjs",
3
+ "typings": "../types/spike-rabbit-charts-ng-common.d.ts"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/spike-rabbit-charts-ng-custom-legend.mjs",
3
+ "typings": "../types/spike-rabbit-charts-ng-custom-legend.d.ts"
4
+ }
@@ -0,0 +1,383 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { echarts, SiChartBaseComponent } from '@spike-rabbit/charts-ng/common';
4
+ import { SiCustomLegendComponent } from '@spike-rabbit/charts-ng/custom-legend';
5
+ import { SiChartLoadingSpinnerComponent } from '@spike-rabbit/charts-ng/loading-spinner';
6
+ import { BarChart, LineChart, ScatterChart, CandlestickChart, HeatmapChart } from 'echarts/charts';
7
+ import { DatasetComponent, LegendComponent, GridComponent, DataZoomComponent, VisualMapComponent, ToolboxComponent, BrushComponent, MarkAreaComponent, MarkLineComponent, MarkPointComponent, AxisPointerComponent } from 'echarts/components';
8
+ import { LegacyGridContainLabel } from 'echarts/features';
9
+
10
+ /**
11
+ * Copyright (c) Siemens 2016 - 2026
12
+ * SPDX-License-Identifier: MIT
13
+ */
14
+ echarts.use([
15
+ BarChart,
16
+ LineChart,
17
+ ScatterChart,
18
+ CandlestickChart,
19
+ HeatmapChart,
20
+ DatasetComponent,
21
+ LegendComponent,
22
+ GridComponent,
23
+ DataZoomComponent,
24
+ VisualMapComponent,
25
+ ToolboxComponent,
26
+ BrushComponent,
27
+ MarkAreaComponent,
28
+ MarkLineComponent,
29
+ MarkPointComponent,
30
+ AxisPointerComponent,
31
+ LegacyGridContainLabel
32
+ ]);
33
+ class SiChartCartesianComponent extends SiChartBaseComponent {
34
+ /** The series for the chart. */
35
+ series = input(/* @ts-ignore */
36
+ ...(ngDevMode ? [undefined, { debugName: "series" }] : /* istanbul ignore next */ []));
37
+ subChartGrids = input(/* @ts-ignore */
38
+ ...(ngDevMode ? [undefined, { debugName: "subChartGrids" }] : /* istanbul ignore next */ []));
39
+ /** The y axis in cartesian(rectangular) coordinate. */
40
+ yAxis = input(/* @ts-ignore */
41
+ ...(ngDevMode ? [undefined, { debugName: "yAxis" }] : /* istanbul ignore next */ []));
42
+ /** The x axis in cartesian(rectangular) coordinate. */
43
+ xAxis = input(/* @ts-ignore */
44
+ ...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
45
+ /** The content formatter of tooltip's floating layer which supports string template and callback function (see (see {@link https://echarts.apache.org/en/option.html#tooltip.formatter }). */
46
+ tooltipFormatter = input(/* @ts-ignore */
47
+ ...(ngDevMode ? [undefined, { debugName: "tooltipFormatter" }] : /* istanbul ignore next */ []));
48
+ /**
49
+ * Used to display the chart as a stacked one.
50
+ *
51
+ * @defaultValue false
52
+ */
53
+ stacked = input(false, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "stacked" }] : /* istanbul ignore next */ []));
55
+ /** Enable or disable brush zoom mode */
56
+ zoomMode = input(/* @ts-ignore */
57
+ ...(ngDevMode ? [undefined, { debugName: "zoomMode" }] : /* istanbul ignore next */ []));
58
+ // Used to toggle different chart types
59
+ ngOnChanges(changes) {
60
+ if (changes.zoomMode) {
61
+ this.setZoomMode();
62
+ }
63
+ if (changes.stacked) {
64
+ changes.forceAll = changes.stacked;
65
+ }
66
+ if (changes.subChartGrids) {
67
+ changes.forceAll = changes.subChartGrids;
68
+ }
69
+ super.ngOnChanges(changes);
70
+ }
71
+ formatTooltip(p) {
72
+ const params = Array.isArray(p) ? p : [p];
73
+ const label = params[0]?.axisValueLabel ?? '';
74
+ let html = label;
75
+ for (const series of params) {
76
+ const isCandle = series.componentSubType === 'candlestick';
77
+ const isPie = series.componentSubType === 'pie';
78
+ const useName = series.name != series.axisValue;
79
+ const name = isPie
80
+ ? series.data.name
81
+ : useName
82
+ ? // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
83
+ series.name || series.seriesName
84
+ : series.seriesName;
85
+ const valIndex = (series.encode.value ?? series.encode.y)[0];
86
+ const value = isCandle
87
+ ? ''
88
+ : isPie
89
+ ? series.percent + '%'
90
+ : Array.isArray(series.value)
91
+ ? series.value[valIndex]
92
+ : series.value;
93
+ html += '<div style="display: flex; align-items: center;">';
94
+ html += this.getSeriesMarkerSvg(name);
95
+ html += `<span style="margin-inline: 4px 8px">${name}</span>`;
96
+ html += `<span style="margin-inline-start: auto">${value}</span>`;
97
+ html += '</div>';
98
+ }
99
+ return html;
100
+ }
101
+ /**
102
+ * Get the series marker svg by series name.
103
+ */
104
+ getSeriesMarkerSvg(seriesName) {
105
+ const seriesValue = this.actualOptions.series;
106
+ let sym;
107
+ if (seriesValue) {
108
+ sym = this.getSeriesMarker(seriesName);
109
+ const symbol = this.shapePaths[sym];
110
+ const color = this.getSeriesColorBySeriesName(seriesName);
111
+ return `<svg width="12" height="12" xmlns="http://www.w3.org/2000/svg">
112
+ <path d="${symbol}" fill="${color}" />
113
+ </svg>`;
114
+ }
115
+ return '';
116
+ }
117
+ /**
118
+ * Get the series marker by series name.
119
+ */
120
+ getSeriesMarker(seriesName) {
121
+ const seriesValue = this.actualOptions.series;
122
+ if (seriesValue) {
123
+ const seriesMarker = seriesValue.find(ser => ser.name === seriesName);
124
+ if (seriesMarker && 'symbol' in seriesMarker) {
125
+ return seriesMarker.symbol;
126
+ }
127
+ }
128
+ return 'circle';
129
+ }
130
+ afterChartInit(skipZoom) {
131
+ super.afterChartInit(skipZoom);
132
+ if (this.zoomMode()) {
133
+ this.setZoomMode();
134
+ }
135
+ }
136
+ setZoomMode() {
137
+ this.dispatchEChartAction({
138
+ type: 'takeGlobalCursor',
139
+ key: 'dataZoomSelect',
140
+ dataZoomSelectActive: this.zoomMode()
141
+ });
142
+ }
143
+ getValidXAxis() {
144
+ const validXAxis = new Set();
145
+ this.series()?.forEach(series => {
146
+ if (series.visible !== false && series.xAxisIndex !== undefined) {
147
+ validXAxis.add(series.xAxisIndex);
148
+ }
149
+ });
150
+ return validXAxis;
151
+ }
152
+ applyOptions() {
153
+ this.actualOptions = {
154
+ series: [],
155
+ xAxis: this.xAxis(),
156
+ grid: this.getGrid(),
157
+ yAxis: this.yAxis(),
158
+ toolbox: {
159
+ showTitle: false,
160
+ itemSize: 0,
161
+ feature: {
162
+ dataZoom: {
163
+ filterMode: 'none',
164
+ xAxisIndex: 'all',
165
+ yAxisIndex: false,
166
+ icon: {
167
+ zoom: 'image://',
168
+ back: 'image://'
169
+ }
170
+ }
171
+ }
172
+ },
173
+ legend: [
174
+ {
175
+ data: []
176
+ },
177
+ {
178
+ data: []
179
+ }
180
+ ],
181
+ tooltip: {
182
+ trigger: 'axis',
183
+ confine: true
184
+ }
185
+ };
186
+ const tooltipFormatter = this.tooltipFormatter();
187
+ if (tooltipFormatter) {
188
+ this.actualOptions.tooltip.formatter = tooltipFormatter;
189
+ }
190
+ else if (this.hasDifferentMarker()) {
191
+ this.actualOptions.tooltip.formatter = this.formatTooltip.bind(this);
192
+ }
193
+ const yAxis = this.yAxis();
194
+ const yAxisArray = Array.isArray(yAxis) ? yAxis : yAxis ? [yAxis] : [];
195
+ const numRight = yAxisArray.reduce((acc, cur) => acc + (cur.position === 'right' ? 1 : 0), 0);
196
+ const numLeft = yAxisArray.length - numRight;
197
+ const legendLeftOptions = this.getThemeCustomValue(['legendLeft'], {});
198
+ const legendRightOptions = this.getThemeCustomValue(['legendRight'], {});
199
+ let leftUnitText;
200
+ let rightUnitText;
201
+ const legends = this.actualOptions.legend;
202
+ if (numLeft && numRight) {
203
+ echarts.util.merge(legends[0], legendLeftOptions, true);
204
+ echarts.util.merge(legends[1], legendRightOptions, true);
205
+ }
206
+ else if (Array.isArray(this.yAxis()) && numLeft) {
207
+ echarts.util.merge(legends[0], { left: legendLeftOptions.left }, true);
208
+ }
209
+ else if (numRight) {
210
+ echarts.util.merge(legends[1], { right: legendRightOptions.right }, true);
211
+ }
212
+ const subChartGrids = this.subChartGrids();
213
+ if (subChartGrids) {
214
+ if (subChartGrids.length !== this.customLegend.length) {
215
+ const diff = subChartGrids.length - this.customLegend.length;
216
+ if (diff < 0) {
217
+ this.customLegend.length = subChartGrids.length;
218
+ }
219
+ else {
220
+ for (let i = 0; i < diff; i++) {
221
+ // Add default custom legends for all grids
222
+ const cl = {
223
+ customLegends: [
224
+ { list: [], unit: '' },
225
+ { list: [], unit: '' }
226
+ ],
227
+ legendAxis: 'both'
228
+ };
229
+ this.customLegend.push(cl);
230
+ }
231
+ }
232
+ }
233
+ const margin = 16;
234
+ // calculate custom legend positions from top according to subcharts.
235
+ for (let i = 0; i < subChartGrids.length; i++) {
236
+ if (i === 0) {
237
+ this.customLegend[i].top = 0;
238
+ }
239
+ else {
240
+ const prevGrid = subChartGrids[i - 1];
241
+ const subChartTop = prevGrid.top ?? 0;
242
+ const subChartHeight = prevGrid.height ?? 0;
243
+ this.customLegend[i].top = subChartTop + subChartHeight + margin;
244
+ }
245
+ }
246
+ }
247
+ const seriesValue = this.series();
248
+ if (seriesValue) {
249
+ const optionSeries = this.actualOptions.series;
250
+ seriesValue.forEach(series => {
251
+ const s = Object.assign({
252
+ stack: this.stacked()
253
+ }, series);
254
+ if (s.type === 'line' && s.area) {
255
+ delete s.area;
256
+ s.areaStyle = {};
257
+ }
258
+ else {
259
+ s.areaStyle ??= null;
260
+ }
261
+ delete s.visible;
262
+ if ('symbol' in series && !this.shapePaths[series.symbol]) {
263
+ s.symbol = 'circle';
264
+ }
265
+ optionSeries.push(s);
266
+ if (this.showLegend() && series.name) {
267
+ let legendIndex = 0;
268
+ const axis = yAxisArray[series.yAxisIndex ?? 0];
269
+ if (axis?.position === 'right') {
270
+ legendIndex = 1;
271
+ }
272
+ let customLegendProp;
273
+ if (this.showCustomLegend()) {
274
+ // get left and right axis units from axis array
275
+ if (axis && (axis.show === undefined || axis.show)) {
276
+ if ((!leftUnitText || leftUnitText !== axis.name) && axis.position === 'left') {
277
+ if (axis.name != null) {
278
+ // axis.name is the same property name which eChart uses to display axis title,
279
+ // hence in case of custom legends units were shown at two places i.e. at axis
280
+ // title as well as custom legend unit section. Thus changing the property name
281
+ // to customLegendUnit only in case custom legends are used.
282
+ axis.customLegendUnit = axis.name;
283
+ }
284
+ if (axis.customLegendUnit != null) {
285
+ leftUnitText = axis.customLegendUnit;
286
+ }
287
+ }
288
+ else if ((!rightUnitText || rightUnitText !== axis.name) &&
289
+ axis.position === 'right') {
290
+ if (axis.name != null) {
291
+ // axis.name is the same property name which eChart uses to display axis title,
292
+ // hence in case of custom legends units were shown at two places i.e. at axis
293
+ // title as well as custom legend unit section. Thus changing the property name
294
+ // to customLegendUnit only in case custom legends are used.
295
+ axis.customLegendUnit = axis.name;
296
+ }
297
+ if (axis.customLegendUnit != null) {
298
+ rightUnitText = axis.customLegendUnit;
299
+ }
300
+ }
301
+ delete axis.name;
302
+ }
303
+ const unitText = axis.position === 'right' ? rightUnitText : leftUnitText;
304
+ customLegendProp = {
305
+ displayName: s.displayName,
306
+ tooltip: s.customLegendToolTip,
307
+ unit: unitText
308
+ };
309
+ }
310
+ // As we have only 1 xAxis per sub chart, xAxisIndex equals grid index.
311
+ const seriesSymbol = 'symbol' in s ? s.symbol : 'circle';
312
+ this.addLegendItem(series.name, series.visible, legendIndex, series.xAxisIndex, customLegendProp, seriesSymbol);
313
+ }
314
+ });
315
+ }
316
+ this.applyTitles();
317
+ if (this.externalZoomSlider()) {
318
+ this.extZoomSliderOptions.legend = this.actualOptions.legend;
319
+ }
320
+ }
321
+ hasDifferentMarker() {
322
+ const seriesValue = this.series();
323
+ return !!seriesValue?.some(series => 'symbol' in series && series.symbol !== 'circle');
324
+ }
325
+ getGrid() {
326
+ const subChartGrids = this.subChartGrids();
327
+ if (subChartGrids) {
328
+ subChartGrids.forEach(g => (g.containLabel = false));
329
+ return subChartGrids;
330
+ }
331
+ return {};
332
+ }
333
+ refreshSeries(isLive = true, dzToSet) {
334
+ const seriesValue = this.series();
335
+ if (!seriesValue) {
336
+ return;
337
+ }
338
+ const optionSeries = this.actualOptions.series;
339
+ seriesValue.forEach((series, i) => {
340
+ optionSeries[i].data = series.data;
341
+ });
342
+ super.refreshSeries(isLive, dzToSet);
343
+ }
344
+ hasData() {
345
+ return this.series()?.some(s => s.visible !== false && s.data && s.data.length > 0) ?? false;
346
+ }
347
+ handleSelectionChanged(event) {
348
+ if (event?.selected) {
349
+ this.series()?.forEach(series => (series.visible = event.selected[series.name] !== false));
350
+ }
351
+ super.handleSelectionChanged(event);
352
+ }
353
+ /**
354
+ * Update single chart data entry.
355
+ */
356
+ addData(index, data) {
357
+ this.addDataInternal([{ index, data }]);
358
+ }
359
+ /**
360
+ * Append charts data entries to the end of the series.
361
+ */
362
+ addDataMulti(series) {
363
+ this.addDataInternal(series);
364
+ }
365
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartCartesianComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
366
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SiChartCartesianComponent, isStandalone: true, selector: "si-chart-cartesian", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, subChartGrids: { classPropertyName: "subChartGrids", publicName: "subChartGrids", isSignal: true, isRequired: false, transformFunction: null }, yAxis: { classPropertyName: "yAxis", publicName: "yAxis", isSignal: true, isRequired: false, transformFunction: null }, xAxis: { classPropertyName: "xAxis", publicName: "xAxis", isSignal: true, isRequired: false, transformFunction: null }, tooltipFormatter: { classPropertyName: "tooltipFormatter", publicName: "tooltipFormatter", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, zoomMode: { classPropertyName: "zoomMode", publicName: "zoomMode", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n", styles: [":host{block-size:100%;position:relative;display:flex!important;flex-direction:column;inline-size:100%}.chart-container-wrapper{display:flex;flex:1 0 0;inline-size:inherit;overflow:hidden}.chart-scroll{overflow-y:auto}.chart-container{position:relative;display:flex;flex:1 0 0;overflow:hidden}.echart-container{flex:1 0 0;inline-size:100%;min-block-size:var(--si-chart-min-height, 200px);overflow:hidden}.custom-legend{position:absolute;z-index:2;inline-size:100%}.chart-title{padding-block:12px 8px;padding-inline-start:24px}.external-zoom-container{display:flex;flex:1 0 0;inline-size:inherit;max-block-size:112px}.external-zoom-container.has-time-range-bar{max-block-size:calc(112px + var(--time-bar-height))}.tooltip-inner{max-inline-size:375px;min-inline-size:375px;color:#162938;font-size:18px;background-color:#162938}.time-range-bar{position:absolute;inset-inline:0;z-index:2}.progress-container{position:absolute;inset:0;pointer-events:none;z-index:100;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: SiCustomLegendComponent, selector: "si-custom-legend", inputs: ["customLegend", "title", "subTitle", "titleColor", "subTitleColor", "textColor"], outputs: ["legendIconClickEvent", "legendClickEvent", "legendHoverStartEvent", "legendHoverEndEvent"] }, { kind: "component", type: SiChartLoadingSpinnerComponent, selector: "si-chart-loading-spinner" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
367
+ }
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartCartesianComponent, decorators: [{
369
+ type: Component,
370
+ args: [{ selector: 'si-chart-cartesian', imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent], changeDetection: ChangeDetectionStrategy.Eager, template: "@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n", styles: [":host{block-size:100%;position:relative;display:flex!important;flex-direction:column;inline-size:100%}.chart-container-wrapper{display:flex;flex:1 0 0;inline-size:inherit;overflow:hidden}.chart-scroll{overflow-y:auto}.chart-container{position:relative;display:flex;flex:1 0 0;overflow:hidden}.echart-container{flex:1 0 0;inline-size:100%;min-block-size:var(--si-chart-min-height, 200px);overflow:hidden}.custom-legend{position:absolute;z-index:2;inline-size:100%}.chart-title{padding-block:12px 8px;padding-inline-start:24px}.external-zoom-container{display:flex;flex:1 0 0;inline-size:inherit;max-block-size:112px}.external-zoom-container.has-time-range-bar{max-block-size:calc(112px + var(--time-bar-height))}.tooltip-inner{max-inline-size:375px;min-inline-size:375px;color:#162938;font-size:18px;background-color:#162938}.time-range-bar{position:absolute;inset-inline:0;z-index:2}.progress-container{position:absolute;inset:0;pointer-events:none;z-index:100;display:flex;justify-content:center;align-items:center}\n"] }]
371
+ }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: false }] }], subChartGrids: [{ type: i0.Input, args: [{ isSignal: true, alias: "subChartGrids", required: false }] }], yAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "yAxis", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }], tooltipFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipFormatter", required: false }] }], stacked: [{ type: i0.Input, args: [{ isSignal: true, alias: "stacked", required: false }] }], zoomMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "zoomMode", required: false }] }] } });
372
+
373
+ /**
374
+ * Copyright (c) Siemens 2016 - 2026
375
+ * SPDX-License-Identifier: MIT
376
+ */
377
+
378
+ /**
379
+ * Generated bundle index. Do not edit.
380
+ */
381
+
382
+ export { SiChartCartesianComponent };
383
+ //# sourceMappingURL=spike-rabbit-charts-ng-cartesian.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spike-rabbit-charts-ng-cartesian.mjs","sources":["../../../../projects/charts-ng/cartesian/si-chart-cartesian.component.ts","../../../../projects/charts-ng/common/si-chart-base.component.html","../../../../projects/charts-ng/cartesian/index.ts","../../../../projects/charts-ng/cartesian/spike-rabbit-charts-ng-cartesian.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n echarts,\n GridComponentOption,\n LegendComponentOption,\n TooltipComponentOption,\n SiChartBaseComponent,\n ChartXAxis,\n ChartYAxis,\n DataZoomRange,\n SeriesUpdate\n} from '@spike-rabbit/charts-ng/common';\nimport {\n CustomLegend,\n CustomLegendProps,\n SiCustomLegendComponent\n} from '@spike-rabbit/charts-ng/custom-legend';\nimport { SiChartLoadingSpinnerComponent } from '@spike-rabbit/charts-ng/loading-spinner';\nimport { BarChart, LineChart, ScatterChart, CandlestickChart, HeatmapChart } from 'echarts/charts';\nimport {\n LegendComponent,\n GridComponent,\n DataZoomComponent,\n VisualMapComponent,\n ToolboxComponent,\n BrushComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n AxisPointerComponent,\n DatasetComponent\n} from 'echarts/components';\nimport { LegacyGridContainLabel } from 'echarts/features';\n\nimport {\n CartesianChartData,\n CartesianChartSeries,\n SubchartGrid\n} from './si-chart-cartesian.interfaces';\n\necharts.use([\n BarChart,\n LineChart,\n ScatterChart,\n CandlestickChart,\n HeatmapChart,\n DatasetComponent,\n LegendComponent,\n GridComponent,\n DataZoomComponent,\n VisualMapComponent,\n ToolboxComponent,\n BrushComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n AxisPointerComponent,\n LegacyGridContainLabel\n]);\n\n@Component({\n selector: 'si-chart-cartesian',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../common/si-chart-base.component.html',\n styleUrl: '../common/si-chart-base.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiChartCartesianComponent extends SiChartBaseComponent implements OnChanges {\n /** The series for the chart. */\n readonly series = input<CartesianChartSeries[]>();\n readonly subChartGrids = input<SubchartGrid[]>();\n /** The y axis in cartesian(rectangular) coordinate. */\n readonly yAxis = input<ChartYAxis | ChartYAxis[]>();\n /** The x axis in cartesian(rectangular) coordinate. */\n readonly xAxis = input<ChartXAxis | ChartXAxis[]>();\n /** The content formatter of tooltip's floating layer which supports string template and callback function (see (see {@link https://echarts.apache.org/en/option.html#tooltip.formatter }). */\n readonly tooltipFormatter = input<TooltipComponentOption['formatter']>();\n /**\n * Used to display the chart as a stacked one.\n *\n * @defaultValue false\n */\n readonly stacked = input(false);\n /** Enable or disable brush zoom mode */\n readonly zoomMode = input<boolean>();\n\n // Used to toggle different chart types\n override ngOnChanges(changes: SimpleChanges<unknown>): void {\n if (changes.zoomMode) {\n this.setZoomMode();\n }\n if (changes.stacked) {\n changes.forceAll = changes.stacked;\n }\n if (changes.subChartGrids) {\n changes.forceAll = changes.subChartGrids;\n }\n super.ngOnChanges(changes);\n }\n\n private formatTooltip(p: object | object[]): string {\n const params = Array.isArray(p) ? p : [p];\n const label: string = params[0]?.axisValueLabel ?? '';\n\n let html = label;\n for (const series of params) {\n const isCandle = series.componentSubType === 'candlestick';\n const isPie = series.componentSubType === 'pie';\n const useName = series.name != series.axisValue;\n const name = isPie\n ? series.data.name\n : useName\n ? // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n series.name || series.seriesName\n : series.seriesName;\n const valIndex = (series.encode.value ?? series.encode.y)[0];\n const value = isCandle\n ? ''\n : isPie\n ? series.percent + '%'\n : Array.isArray(series.value)\n ? series.value[valIndex]\n : series.value;\n\n html += '<div style=\"display: flex; align-items: center;\">';\n html += this.getSeriesMarkerSvg(name);\n html += `<span style=\"margin-inline: 4px 8px\">${name}</span>`;\n html += `<span style=\"margin-inline-start: auto\">${value}</span>`;\n html += '</div>';\n }\n return html;\n }\n\n /**\n * Get the series marker svg by series name.\n */\n getSeriesMarkerSvg(seriesName: string): string {\n const seriesValue = this.actualOptions.series as CartesianChartSeries[];\n let sym;\n if (seriesValue) {\n sym = this.getSeriesMarker(seriesName);\n const symbol = this.shapePaths[sym as string];\n const color = this.getSeriesColorBySeriesName(seriesName);\n return `<svg width=\"12\" height=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"${symbol}\" fill=\"${color}\" />\n </svg>`;\n }\n return '';\n }\n\n /**\n * Get the series marker by series name.\n */\n getSeriesMarker(seriesName: string): string {\n const seriesValue = this.actualOptions.series as CartesianChartSeries[];\n if (seriesValue) {\n const seriesMarker = seriesValue.find(ser => ser.name === seriesName);\n if (seriesMarker && 'symbol' in seriesMarker) {\n return seriesMarker.symbol as string;\n }\n }\n return 'circle';\n }\n\n protected override afterChartInit(skipZoom?: boolean): void {\n super.afterChartInit(skipZoom);\n if (this.zoomMode()) {\n this.setZoomMode();\n }\n }\n\n protected override setZoomMode(): void {\n this.dispatchEChartAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: this.zoomMode()\n });\n }\n\n protected override getValidXAxis(): Set<number> {\n const validXAxis: Set<number> = new Set<number>();\n this.series()?.forEach(series => {\n if (series.visible !== false && series.xAxisIndex !== undefined) {\n validXAxis.add(series.xAxisIndex);\n }\n });\n return validXAxis;\n }\n\n protected override applyOptions(): void {\n this.actualOptions = {\n series: [],\n xAxis: this.xAxis(),\n grid: this.getGrid(),\n yAxis: this.yAxis(),\n toolbox: {\n showTitle: false,\n itemSize: 0,\n feature: {\n dataZoom: {\n filterMode: 'none',\n xAxisIndex: 'all',\n yAxisIndex: false,\n icon: {\n zoom: 'image://',\n back: 'image://'\n }\n }\n }\n },\n legend: [\n {\n data: []\n },\n {\n data: []\n }\n ],\n tooltip: {\n trigger: 'axis',\n confine: true\n }\n };\n const tooltipFormatter = this.tooltipFormatter();\n if (tooltipFormatter) {\n this.actualOptions.tooltip.formatter = tooltipFormatter;\n } else if (this.hasDifferentMarker()) {\n this.actualOptions.tooltip.formatter = this.formatTooltip.bind(this);\n }\n\n const yAxis = this.yAxis();\n const yAxisArray = Array.isArray(yAxis) ? yAxis : yAxis ? [yAxis] : [];\n const numRight = yAxisArray.reduce((acc, cur) => acc + (cur.position === 'right' ? 1 : 0), 0);\n const numLeft = yAxisArray.length - numRight;\n const legendLeftOptions = this.getThemeCustomValue(['legendLeft'], {});\n const legendRightOptions = this.getThemeCustomValue(['legendRight'], {});\n let leftUnitText: string | undefined;\n let rightUnitText: string | undefined;\n const legends = this.actualOptions.legend as LegendComponentOption[];\n if (numLeft && numRight) {\n echarts.util.merge(legends[0], legendLeftOptions, true);\n echarts.util.merge(legends[1], legendRightOptions, true);\n } else if (Array.isArray(this.yAxis()) && numLeft) {\n echarts.util.merge(legends[0], { left: legendLeftOptions.left }, true);\n } else if (numRight) {\n echarts.util.merge(legends[1], { right: legendRightOptions.right }, true);\n }\n\n const subChartGrids = this.subChartGrids();\n if (subChartGrids) {\n if (subChartGrids.length !== this.customLegend.length) {\n const diff = subChartGrids.length - this.customLegend.length;\n if (diff < 0) {\n this.customLegend.length = subChartGrids.length;\n } else {\n for (let i = 0; i < diff; i++) {\n // Add default custom legends for all grids\n const cl: CustomLegend = {\n customLegends: [\n { list: [], unit: '' },\n { list: [], unit: '' }\n ],\n legendAxis: 'both'\n };\n this.customLegend.push(cl);\n }\n }\n }\n const margin = 16;\n // calculate custom legend positions from top according to subcharts.\n for (let i = 0; i < subChartGrids.length; i++) {\n if (i === 0) {\n this.customLegend[i].top = 0;\n } else {\n const prevGrid = subChartGrids[i - 1];\n const subChartTop = (prevGrid.top as number) ?? 0;\n const subChartHeight = (prevGrid.height as number) ?? 0;\n this.customLegend[i].top = subChartTop + subChartHeight + margin;\n }\n }\n }\n\n const seriesValue = this.series();\n if (seriesValue) {\n const optionSeries = this.actualOptions.series as CartesianChartSeries[];\n seriesValue.forEach(series => {\n const s: any = Object.assign(\n {\n stack: this.stacked()\n },\n series\n );\n if (s.type === 'line' && s.area) {\n delete s.area;\n s.areaStyle = {};\n } else {\n s.areaStyle ??= null;\n }\n delete s.visible;\n\n if ('symbol' in series && !this.shapePaths[series.symbol as string]) {\n s.symbol = 'circle';\n }\n\n optionSeries.push(s);\n\n if (this.showLegend() && series.name) {\n let legendIndex = 0;\n const axis = yAxisArray[series.yAxisIndex ?? 0];\n if (axis?.position === 'right') {\n legendIndex = 1;\n }\n\n let customLegendProp: CustomLegendProps | undefined;\n if (this.showCustomLegend()) {\n // get left and right axis units from axis array\n if (axis && (axis.show === undefined || axis.show)) {\n if ((!leftUnitText || leftUnitText !== axis.name) && axis.position === 'left') {\n if (axis.name != null) {\n // axis.name is the same property name which eChart uses to display axis title,\n // hence in case of custom legends units were shown at two places i.e. at axis\n // title as well as custom legend unit section. Thus changing the property name\n // to customLegendUnit only in case custom legends are used.\n axis.customLegendUnit = axis.name;\n }\n if (axis.customLegendUnit != null) {\n leftUnitText = axis.customLegendUnit;\n }\n } else if (\n (!rightUnitText || rightUnitText !== axis.name) &&\n axis.position === 'right'\n ) {\n if (axis.name != null) {\n // axis.name is the same property name which eChart uses to display axis title,\n // hence in case of custom legends units were shown at two places i.e. at axis\n // title as well as custom legend unit section. Thus changing the property name\n // to customLegendUnit only in case custom legends are used.\n axis.customLegendUnit = axis.name;\n }\n if (axis.customLegendUnit != null) {\n rightUnitText = axis.customLegendUnit;\n }\n }\n delete axis.name;\n }\n\n const unitText = axis.position === 'right' ? rightUnitText : leftUnitText;\n customLegendProp = {\n displayName: s.displayName,\n tooltip: s.customLegendToolTip,\n unit: unitText\n };\n }\n // As we have only 1 xAxis per sub chart, xAxisIndex equals grid index.\n const seriesSymbol = 'symbol' in s ? (s.symbol as string) : 'circle';\n this.addLegendItem(\n series.name as string,\n series.visible,\n legendIndex,\n series.xAxisIndex,\n customLegendProp,\n seriesSymbol\n );\n }\n });\n }\n\n this.applyTitles();\n if (this.externalZoomSlider()) {\n this.extZoomSliderOptions.legend = this.actualOptions.legend;\n }\n }\n\n private hasDifferentMarker(): boolean {\n const seriesValue = this.series();\n return !!seriesValue?.some(series => 'symbol' in series && series.symbol !== 'circle');\n }\n\n private getGrid(): GridComponentOption | GridComponentOption[] {\n const subChartGrids = this.subChartGrids();\n if (subChartGrids) {\n subChartGrids.forEach(g => (g.containLabel = false));\n return subChartGrids as GridComponentOption[];\n }\n return {};\n }\n\n override refreshSeries(isLive: boolean = true, dzToSet?: DataZoomRange): void {\n const seriesValue = this.series();\n if (!seriesValue) {\n return;\n }\n const optionSeries = this.actualOptions.series as CartesianChartSeries[];\n seriesValue.forEach((series, i) => {\n optionSeries[i].data = series.data;\n });\n super.refreshSeries(isLive, dzToSet);\n }\n\n protected override hasData(): boolean {\n return this.series()?.some(s => s.visible !== false && s.data && s.data.length > 0) ?? false;\n }\n\n protected override handleSelectionChanged(event: any): void {\n if (event?.selected) {\n this.series()?.forEach(series => (series.visible = event.selected[series.name!] !== false));\n }\n super.handleSelectionChanged(event);\n }\n\n /**\n * Update single chart data entry.\n */\n addData(index: number, data: CartesianChartData): void {\n this.addDataInternal([{ index, data }]);\n }\n\n /**\n * Append charts data entries to the end of the series.\n */\n addDataMulti(series: SeriesUpdate<CartesianChartData>[]): void {\n this.addDataInternal(series);\n }\n}\n","@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-cartesian.component';\nexport * from './si-chart-cartesian.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;AAGG;AAyCH,OAAO,CAAC,GAAG,CAAC;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB;AACD,CAAA,CAAC;AASI,MAAO,yBAA0B,SAAQ,oBAAoB,CAAA;;AAExD,IAAA,MAAM,GAAG,KAAK;0FAA0B;AACxC,IAAA,aAAa,GAAG,KAAK;iGAAkB;;AAEvC,IAAA,KAAK,GAAG,KAAK;yFAA6B;;AAE1C,IAAA,KAAK,GAAG,KAAK;yFAA6B;;AAE1C,IAAA,gBAAgB,GAAG,KAAK;oGAAuC;AACxE;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;;AAEtB,IAAA,QAAQ,GAAG,KAAK;4FAAW;;AAG3B,IAAA,WAAW,CAAC,OAA+B,EAAA;AAClD,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE;QACpB;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO;QACpC;AACA,QAAA,IAAI,OAAO,CAAC,aAAa,EAAE;AACzB,YAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa;QAC1C;AACA,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IAC5B;AAEQ,IAAA,aAAa,CAAC,CAAoB,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,KAAK,GAAW,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,IAAI,EAAE;QAErD,IAAI,IAAI,GAAG,KAAK;AAChB,QAAA,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,KAAK,aAAa;AAC1D,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,KAAK,KAAK;YAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS;YAC/C,MAAM,IAAI,GAAG;AACX,kBAAE,MAAM,CAAC,IAAI,CAAC;AACd,kBAAE;AACA;AACE,wBAAA,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;AACxB,sBAAE,MAAM,CAAC,UAAU;AACvB,YAAA,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG;AACZ,kBAAE;AACF,kBAAE;AACA,sBAAE,MAAM,CAAC,OAAO,GAAG;sBACjB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AAC1B,0BAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;AACvB,0BAAE,MAAM,CAAC,KAAK;YAEpB,IAAI,IAAI,mDAAmD;AAC3D,YAAA,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,IAAI,CAAA,qCAAA,EAAwC,IAAI,CAAA,OAAA,CAAS;AAC7D,YAAA,IAAI,IAAI,CAAA,wCAAA,EAA2C,KAAK,CAAA,OAAA,CAAS;YACjE,IAAI,IAAI,QAAQ;QAClB;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;AAEG;AACH,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAgC;AACvE,QAAA,IAAI,GAAG;QACP,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAa,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;YACzD,OAAO,CAAA;AACiB,4BAAA,EAAA,MAAM,WAAW,KAAK,CAAA;mBACjC;QACf;AACA,QAAA,OAAO,EAAE;IACX;AAEA;;AAEG;AACH,IAAA,eAAe,CAAC,UAAkB,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAgC;QACvE,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;AACrE,YAAA,IAAI,YAAY,IAAI,QAAQ,IAAI,YAAY,EAAE;gBAC5C,OAAO,YAAY,CAAC,MAAgB;YACtC;QACF;AACA,QAAA,OAAO,QAAQ;IACjB;AAEmB,IAAA,cAAc,CAAC,QAAkB,EAAA;AAClD,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEmB,WAAW,GAAA;QAC5B,IAAI,CAAC,oBAAoB,CAAC;AACxB,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,oBAAoB,EAAE,IAAI,CAAC,QAAQ;AACpC,SAAA,CAAC;IACJ;IAEmB,aAAa,GAAA;AAC9B,QAAA,MAAM,UAAU,GAAgB,IAAI,GAAG,EAAU;QACjD,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,IAAG;AAC9B,YAAA,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;AAC/D,gBAAA,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,UAAU;IACnB;IAEmB,YAAY,GAAA;QAC7B,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,EAAE;AACP,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,OAAO,EAAE;AACP,oBAAA,QAAQ,EAAE;AACR,wBAAA,UAAU,EAAE,MAAM;AAClB,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,IAAI,EAAE;AACJ,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,IAAI,EAAE;AACP;AACF;AACF;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE;AACP,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE;AACP;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,OAAO,EAAE;AACV;SACF;AACD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAChD,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB;QACzD;AAAO,aAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;AACtE,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7F,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ;AAC5C,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;AACtE,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;AACxE,QAAA,IAAI,YAAgC;AACpC,QAAA,IAAI,aAAiC;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAiC;AACpE,QAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC;AACvD,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC1D;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,OAAO,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;QACxE;aAAO,IAAI,QAAQ,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;QAC3E;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,IAAI,aAAa,EAAE;YACjB,IAAI,aAAa,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACrD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AAC5D,gBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;oBACZ,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;gBACjD;qBAAO;AACL,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;;AAE7B,wBAAA,MAAM,EAAE,GAAiB;AACvB,4BAAA,aAAa,EAAE;AACb,gCAAA,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACtB,gCAAA,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;AACrB,6BAAA;AACD,4BAAA,UAAU,EAAE;yBACb;AACD,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B;gBACF;YACF;YACA,MAAM,MAAM,GAAG,EAAE;;AAEjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE;oBACX,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBAC9B;qBAAO;oBACL,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,oBAAA,MAAM,WAAW,GAAI,QAAQ,CAAC,GAAc,IAAI,CAAC;AACjD,oBAAA,MAAM,cAAc,GAAI,QAAQ,CAAC,MAAiB,IAAI,CAAC;AACvD,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM;gBAClE;YACF;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;QACjC,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAgC;AACxE,YAAA,WAAW,CAAC,OAAO,CAAC,MAAM,IAAG;AAC3B,gBAAA,MAAM,CAAC,GAAQ,MAAM,CAAC,MAAM,CAC1B;AACE,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO;iBACpB,EACD,MAAM,CACP;gBACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE;oBAC/B,OAAO,CAAC,CAAC,IAAI;AACb,oBAAA,CAAC,CAAC,SAAS,GAAG,EAAE;gBAClB;qBAAO;AACL,oBAAA,CAAC,CAAC,SAAS,KAAK,IAAI;gBACtB;gBACA,OAAO,CAAC,CAAC,OAAO;AAEhB,gBAAA,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAgB,CAAC,EAAE;AACnE,oBAAA,CAAC,CAAC,MAAM,GAAG,QAAQ;gBACrB;AAEA,gBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEpB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;oBACpC,IAAI,WAAW,GAAG,CAAC;oBACnB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;AAC/C,oBAAA,IAAI,IAAI,EAAE,QAAQ,KAAK,OAAO,EAAE;wBAC9B,WAAW,GAAG,CAAC;oBACjB;AAEA,oBAAA,IAAI,gBAA+C;AACnD,oBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;;AAE3B,wBAAA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAClD,4BAAA,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC7E,gCAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;;;;;AAKrB,oCAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI;gCACnC;AACA,gCAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;AACjC,oCAAA,YAAY,GAAG,IAAI,CAAC,gBAAgB;gCACtC;4BACF;iCAAO,IACL,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,IAAI,CAAC,IAAI;AAC9C,gCAAA,IAAI,CAAC,QAAQ,KAAK,OAAO,EACzB;AACA,gCAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;;;;;AAKrB,oCAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI;gCACnC;AACA,gCAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;AACjC,oCAAA,aAAa,GAAG,IAAI,CAAC,gBAAgB;gCACvC;4BACF;4BACA,OAAO,IAAI,CAAC,IAAI;wBAClB;AAEA,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,aAAa,GAAG,YAAY;AACzE,wBAAA,gBAAgB,GAAG;4BACjB,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,OAAO,EAAE,CAAC,CAAC,mBAAmB;AAC9B,4BAAA,IAAI,EAAE;yBACP;oBACH;;AAEA,oBAAA,MAAM,YAAY,GAAG,QAAQ,IAAI,CAAC,GAAI,CAAC,CAAC,MAAiB,GAAG,QAAQ;oBACpE,IAAI,CAAC,aAAa,CAChB,MAAM,CAAC,IAAc,EACrB,MAAM,CAAC,OAAO,EACd,WAAW,EACX,MAAM,CAAC,UAAU,EACjB,gBAAgB,EAChB,YAAY,CACb;gBACH;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;QAC9D;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;QACjC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IACxF;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,IAAI,aAAa,EAAE;AACjB,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AACpD,YAAA,OAAO,aAAsC;QAC/C;AACA,QAAA,OAAO,EAAE;IACX;AAES,IAAA,aAAa,CAAC,MAAA,GAAkB,IAAI,EAAE,OAAuB,EAAA;AACpE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;QACjC,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AACA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAgC;QACxE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;YAChC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACpC,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IACtC;IAEmB,OAAO,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;IAC9F;AAEmB,IAAA,sBAAsB,CAAC,KAAU,EAAA;AAClD,QAAA,IAAI,KAAK,EAAE,QAAQ,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QAC7F;AACA,QAAA,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC;IACrC;AAEA;;AAEG;IACH,OAAO,CAAC,KAAa,EAAE,IAAwB,EAAA;QAC7C,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,MAA0C,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IAC9B;uGAnWW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvEtC,omEAgEA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,uBAAuB,+PAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA;;2FAKtD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAA,eAAA,EAGjD,uBAAuB,CAAC,KAAK,EAAA,QAAA,EAAA,omEAAA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA;;;AErEhD;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -0,0 +1,59 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { echarts, SiChartBaseComponent } from '@spike-rabbit/charts-ng/common';
4
+ import { SiCustomLegendComponent } from '@spike-rabbit/charts-ng/custom-legend';
5
+ import { SiChartLoadingSpinnerComponent } from '@spike-rabbit/charts-ng/loading-spinner';
6
+ import { BarChart, LineChart, ScatterChart, CandlestickChart, HeatmapChart, PieChart, GaugeChart, SankeyChart, SunburstChart, CustomChart } from 'echarts/charts';
7
+ import { DatasetComponent, LegendComponent, GridComponent, DataZoomComponent, VisualMapComponent, ToolboxComponent, BrushComponent, MarkAreaComponent, MarkLineComponent, MarkPointComponent, AxisPointerComponent, PolarComponent, SingleAxisComponent } from 'echarts/components';
8
+ import { LegacyGridContainLabel } from 'echarts/features';
9
+
10
+ /**
11
+ * Copyright (c) Siemens 2016 - 2026
12
+ * SPDX-License-Identifier: MIT
13
+ */
14
+ echarts.use([
15
+ BarChart,
16
+ LineChart,
17
+ ScatterChart,
18
+ CandlestickChart,
19
+ HeatmapChart,
20
+ PieChart,
21
+ GaugeChart,
22
+ SankeyChart,
23
+ SunburstChart,
24
+ DatasetComponent,
25
+ CustomChart,
26
+ LegendComponent,
27
+ GridComponent,
28
+ DataZoomComponent,
29
+ VisualMapComponent,
30
+ ToolboxComponent,
31
+ BrushComponent,
32
+ MarkAreaComponent,
33
+ MarkLineComponent,
34
+ MarkPointComponent,
35
+ AxisPointerComponent,
36
+ PolarComponent,
37
+ SingleAxisComponent,
38
+ LegacyGridContainLabel
39
+ ]);
40
+ class SiChartComponent extends SiChartBaseComponent {
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SiChartComponent, isStandalone: true, selector: "si-chart", usesInheritance: true, ngImport: i0, template: "@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n", styles: [":host{block-size:100%;position:relative;display:flex!important;flex-direction:column;inline-size:100%}.chart-container-wrapper{display:flex;flex:1 0 0;inline-size:inherit;overflow:hidden}.chart-scroll{overflow-y:auto}.chart-container{position:relative;display:flex;flex:1 0 0;overflow:hidden}.echart-container{flex:1 0 0;inline-size:100%;min-block-size:var(--si-chart-min-height, 200px);overflow:hidden}.custom-legend{position:absolute;z-index:2;inline-size:100%}.chart-title{padding-block:12px 8px;padding-inline-start:24px}.external-zoom-container{display:flex;flex:1 0 0;inline-size:inherit;max-block-size:112px}.external-zoom-container.has-time-range-bar{max-block-size:calc(112px + var(--time-bar-height))}.tooltip-inner{max-inline-size:375px;min-inline-size:375px;color:#162938;font-size:18px;background-color:#162938}.time-range-bar{position:absolute;inset-inline:0;z-index:2}.progress-container{position:absolute;inset:0;pointer-events:none;z-index:100;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: SiCustomLegendComponent, selector: "si-custom-legend", inputs: ["customLegend", "title", "subTitle", "titleColor", "subTitleColor", "textColor"], outputs: ["legendIconClickEvent", "legendClickEvent", "legendHoverStartEvent", "legendHoverEndEvent"] }, { kind: "component", type: SiChartLoadingSpinnerComponent, selector: "si-chart-loading-spinner" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'si-chart', imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent], changeDetection: ChangeDetectionStrategy.Eager, template: "@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n", styles: [":host{block-size:100%;position:relative;display:flex!important;flex-direction:column;inline-size:100%}.chart-container-wrapper{display:flex;flex:1 0 0;inline-size:inherit;overflow:hidden}.chart-scroll{overflow-y:auto}.chart-container{position:relative;display:flex;flex:1 0 0;overflow:hidden}.echart-container{flex:1 0 0;inline-size:100%;min-block-size:var(--si-chart-min-height, 200px);overflow:hidden}.custom-legend{position:absolute;z-index:2;inline-size:100%}.chart-title{padding-block:12px 8px;padding-inline-start:24px}.external-zoom-container{display:flex;flex:1 0 0;inline-size:inherit;max-block-size:112px}.external-zoom-container.has-time-range-bar{max-block-size:calc(112px + var(--time-bar-height))}.tooltip-inner{max-inline-size:375px;min-inline-size:375px;color:#162938;font-size:18px;background-color:#162938}.time-range-bar{position:absolute;inset-inline:0;z-index:2}.progress-container{position:absolute;inset:0;pointer-events:none;z-index:100;display:flex;justify-content:center;align-items:center}\n"] }]
47
+ }] });
48
+
49
+ /**
50
+ * Copyright (c) Siemens 2016 - 2026
51
+ * SPDX-License-Identifier: MIT
52
+ */
53
+
54
+ /**
55
+ * Generated bundle index. Do not edit.
56
+ */
57
+
58
+ export { SiChartComponent };
59
+ //# sourceMappingURL=spike-rabbit-charts-ng-chart.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spike-rabbit-charts-ng-chart.mjs","sources":["../../../../projects/charts-ng/chart/si-chart.component.ts","../../../../projects/charts-ng/common/si-chart-base.component.html","../../../../projects/charts-ng/chart/index.ts","../../../../projects/charts-ng/chart/spike-rabbit-charts-ng-chart.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { echarts, SiChartBaseComponent } from '@spike-rabbit/charts-ng/common';\nimport { SiCustomLegendComponent } from '@spike-rabbit/charts-ng/custom-legend';\nimport { SiChartLoadingSpinnerComponent } from '@spike-rabbit/charts-ng/loading-spinner';\nimport {\n BarChart,\n LineChart,\n ScatterChart,\n CandlestickChart,\n HeatmapChart,\n PieChart,\n GaugeChart,\n SankeyChart,\n SunburstChart,\n CustomChart\n} from 'echarts/charts';\nimport {\n LegendComponent,\n GridComponent,\n DataZoomComponent,\n VisualMapComponent,\n ToolboxComponent,\n BrushComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n AxisPointerComponent,\n DatasetComponent,\n PolarComponent,\n SingleAxisComponent\n} from 'echarts/components';\nimport { LegacyGridContainLabel } from 'echarts/features';\n\necharts.use([\n BarChart,\n LineChart,\n ScatterChart,\n CandlestickChart,\n HeatmapChart,\n PieChart,\n GaugeChart,\n SankeyChart,\n SunburstChart,\n DatasetComponent,\n CustomChart,\n LegendComponent,\n GridComponent,\n DataZoomComponent,\n VisualMapComponent,\n ToolboxComponent,\n BrushComponent,\n MarkAreaComponent,\n MarkLineComponent,\n MarkPointComponent,\n AxisPointerComponent,\n PolarComponent,\n SingleAxisComponent,\n LegacyGridContainLabel\n]);\n\n@Component({\n selector: 'si-chart',\n imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n templateUrl: '../common/si-chart-base.component.html',\n styleUrl: '../common/si-chart-base.component.scss',\n changeDetection: ChangeDetectionStrategy.Eager\n})\nexport class SiChartComponent extends SiChartBaseComponent {}\n","@if (showCustomLegend() && (title() || subTitle())) {\n <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n @if (subTitle()) {\n <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n }\n </div>\n}\n\n<div\n #chartContainerWrapper\n class=\"chart-container-wrapper\"\n [class.chart-scroll]=\"containerHeight()\"\n [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n @if (showCustomLegend()) {\n @for (cl of customLegend; track $index) {\n <si-custom-legend\n #siCustomLegend\n class=\"custom-legend\"\n [style.top.px]=\"cl.top\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [customLegend]=\"cl\"\n [style.background-color]=\"backgroundColor()\"\n [titleColor]=\"titleColor()\"\n [subTitleColor]=\"subTitleColor()\"\n [textColor]=\"textColor()\"\n (legendIconClickEvent)=\"handleLegendClick($event)\"\n (legendClickEvent)=\"handleLegendClick($event)\"\n (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n />\n }\n }\n <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n </div>\n</div>\n@if (externalZoomSlider()) {\n <div\n #externalZoomSlider\n class=\"external-zoom-container\"\n [class.has-time-range-bar]=\"showTimeRangeBar()\"\n [style.--time-bar-height.px]=\"timeBarHeight()\"\n ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n <div\n class=\"time-range-bar\"\n [style.bottom.px]=\"timeBarBottom()\"\n [style.padding-left.px]=\"timeBarLeft()\"\n [style.padding-right.px]=\"timeBarRight()\"\n >\n <ng-content select=\"[slot=timeRangeBar]\" />\n </div>\n}\n\n@if (inProgress()) {\n <div class=\"progress-container\">\n <si-chart-loading-spinner />\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;AAGG;AAkCH,OAAO,CAAC,GAAG,CAAC;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,eAAe;IACf,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,cAAc;IACd,mBAAmB;IACnB;AACD,CAAA,CAAC;AASI,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;uGAA7C,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvE7B,omEAgEA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,uBAAuB,+PAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA;;2FAKtD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAA,eAAA,EAGjD,uBAAuB,CAAC,KAAK,EAAA,QAAA,EAAA,omEAAA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA;;;AErEhD;;;AAGG;;ACHH;;AAEG;;;;"}