@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
@@ -0,0 +1,371 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, inject, LOCALE_ID, computed, SimpleChange, 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 { GaugeChart } from 'echarts/charts';
7
+
8
+ /**
9
+ * Copyright (c) Siemens 2016 - 2026
10
+ * SPDX-License-Identifier: MIT
11
+ */
12
+ echarts.use([GaugeChart]);
13
+ class SiChartGaugeComponent extends SiChartBaseComponent {
14
+ /** @defaultValue 0 */
15
+ minValue = input(0, /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "minValue" }] : /* istanbul ignore next */ []));
17
+ /** @defaultValue 100 */
18
+ maxValue = input(100, /* @ts-ignore */
19
+ ...(ngDevMode ? [{ debugName: "maxValue" }] : /* istanbul ignore next */ []));
20
+ /** @defaultValue 0 */
21
+ value = input(0, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
23
+ splitSteps = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "splitSteps" }] : /* istanbul ignore next */ []));
25
+ /** @defaultValue true */
26
+ responsiveSplitSteps = input(true, /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "responsiveSplitSteps" }] : /* istanbul ignore next */ []));
28
+ /** @defaultValue '%' */
29
+ unit = input('%', /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "unit" }] : /* istanbul ignore next */ []));
31
+ /** @defaultValue false */
32
+ unitsOnSplit = input(false, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "unitsOnSplit" }] : /* istanbul ignore next */ []));
34
+ /**
35
+ * Custom formatter for axis labels.
36
+ * Takes precedence when specified, i.e. number of decimals, unit etc needs
37
+ * to be set by the user using this formatter.
38
+ */
39
+ labelFormatter = input(/* @ts-ignore */
40
+ ...(ngDevMode ? [undefined, { debugName: "labelFormatter" }] : /* istanbul ignore next */ []));
41
+ /**
42
+ * Custom formatter for value.
43
+ * Takes precedence when specified, i.e. number of decimals needs
44
+ * to be set by the user using this formatter.
45
+ */
46
+ valueFormatter = input(/* @ts-ignore */
47
+ ...(ngDevMode ? [undefined, { debugName: "valueFormatter" }] : /* istanbul ignore next */ []));
48
+ /**
49
+ * Min number of decimals.
50
+ * Possible values are from 0 to 100.
51
+ * @defaultValue 0
52
+ */
53
+ minNumberOfDecimals = input(0, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "minNumberOfDecimals" }] : /* istanbul ignore next */ []));
55
+ /**
56
+ * Max number of decimals.
57
+ * Possible values are from 0 to 100.
58
+ * @defaultValue 0
59
+ */
60
+ maxNumberOfDecimals = input(0, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "maxNumberOfDecimals" }] : /* istanbul ignore next */ []));
62
+ /**
63
+ * Number of decimals on the axis.
64
+ * Possible values are from 0 to 100.
65
+ * @defaultValue 0
66
+ */
67
+ axisNumberOfDecimals = input(0, /* @ts-ignore */
68
+ ...(ngDevMode ? [{ debugName: "axisNumberOfDecimals" }] : /* istanbul ignore next */ []));
69
+ /** @defaultValue false */
70
+ hideAxisLabels = input(false, { ...(ngDevMode ? { debugName: "hideAxisLabels" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
71
+ /**
72
+ * Segments on the arc from 0 (implicit) to 1 (explicit)
73
+ * E.g. 0.2 means from 0 to 0.2 of the possible range (maxValue - minValue)
74
+ *
75
+ * @defaultValue [0.2, 0.8, 1]
76
+ */
77
+ segments = input([0.2, 0.8, 1], /* @ts-ignore */
78
+ ...(ngDevMode ? [{ debugName: "segments" }] : /* istanbul ignore next */ []));
79
+ /**
80
+ * Colors for the defined segments.
81
+ * If there are less colors then segments, the colors will be repeated. Defaults to the standard color palette
82
+ */
83
+ colors = input(/* @ts-ignore */
84
+ ...(ngDevMode ? [undefined, { debugName: "colors" }] : /* istanbul ignore next */ []));
85
+ locale = inject(LOCALE_ID).toString();
86
+ numberFormat = computed(() => {
87
+ const minDecimals = this.minNumberOfDecimals();
88
+ return new Intl.NumberFormat(this.locale, {
89
+ minimumFractionDigits: minDecimals,
90
+ maximumFractionDigits: Math.max(minDecimals, this.maxNumberOfDecimals())
91
+ });
92
+ }, /* @ts-ignore */
93
+ ...(ngDevMode ? [{ debugName: "numberFormat" }] : /* istanbul ignore next */ []));
94
+ axisNumberFormat = computed(() => {
95
+ const decimals = this.axisNumberOfDecimals();
96
+ return new Intl.NumberFormat(this.locale, {
97
+ minimumFractionDigits: decimals,
98
+ maximumFractionDigits: decimals
99
+ });
100
+ }, /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "axisNumberFormat" }] : /* istanbul ignore next */ []));
102
+ afterChartInit() {
103
+ super.afterChartInit();
104
+ this.applyOptions();
105
+ this.updateColors();
106
+ this.refreshSeries();
107
+ }
108
+ updateColors() {
109
+ // gauge doesn't respect color palette, it needs a bit convincing
110
+ const effectiveOpts = this.getOptionNoClone();
111
+ const colors = this.colors() ?? effectiveOpts.color;
112
+ const hasIndicator = !!this.segments().length;
113
+ let newColors;
114
+ if (hasIndicator) {
115
+ newColors = this.segments().map((threshold, index) => {
116
+ const color = colors[index % colors.length];
117
+ return [threshold, color];
118
+ });
119
+ }
120
+ else {
121
+ const colorsValue = this.colors();
122
+ const dataColor = colorsValue?.length
123
+ ? colorsValue[0]
124
+ : this.getThemeCustomValue(['gauge', 'defaultColor'], colors[0]);
125
+ newColors = [[1, dataColor]];
126
+ }
127
+ if (hasIndicator) {
128
+ this.setAxisLineColor(newColors, this.actualOptions.series[0].axisLine);
129
+ }
130
+ this.actualOptions.series[0].axisLine.show = hasIndicator;
131
+ this.setAxisLineColor(newColors, this.actualOptions.series[2].axisLine);
132
+ this.refreshSeries();
133
+ }
134
+ setAxisLineColor(colors, axisLine) {
135
+ axisLine.lineStyle = axisLine.lineStyle ?? {};
136
+ axisLine.lineStyle.color = colors;
137
+ }
138
+ getResponsiveConfig() {
139
+ const marginY = 12;
140
+ const maxHeight = this.curHeight - marginY;
141
+ const dim = Math.min(this.curWidth / 2, maxHeight);
142
+ const top = dim < maxHeight ? this.curHeight / 2 + dim / 2 : maxHeight;
143
+ if (dim < 150) {
144
+ const splits = dim < 100 ? 1 : 4;
145
+ const axisLabelDist = dim < 100 ? -6 : 0;
146
+ return {
147
+ outerRadius: dim - 4,
148
+ center: ['50%', top],
149
+ progressWidth: 8,
150
+ indicatorWidth: 1,
151
+ gap: 2,
152
+ splits,
153
+ axisLabelDist,
154
+ axisFontSize: 12,
155
+ valueFontSize: 18,
156
+ unitFontSize: 12
157
+ };
158
+ }
159
+ if (dim < 200) {
160
+ return {
161
+ outerRadius: dim - 7,
162
+ center: ['50%', top],
163
+ progressWidth: 14,
164
+ indicatorWidth: 3,
165
+ gap: 3,
166
+ splits: 6,
167
+ axisLabelDist: 12,
168
+ axisFontSize: 16,
169
+ valueFontSize: 30,
170
+ unitFontSize: 14
171
+ };
172
+ }
173
+ return {
174
+ outerRadius: dim - 12,
175
+ center: ['50%', top],
176
+ progressWidth: 24,
177
+ indicatorWidth: 4,
178
+ gap: 5,
179
+ splits: 0,
180
+ axisLabelDist: 20,
181
+ axisFontSize: 20,
182
+ valueFontSize: 40,
183
+ unitFontSize: 14
184
+ };
185
+ }
186
+ axisLabelFormatter = (value) => {
187
+ const formatted = this.axisNumberFormat().format(Number(value));
188
+ return this.unitsOnSplit() ? `${formatted} ${this.unit()}` : formatted;
189
+ };
190
+ applyOptions() {
191
+ const resp = this.getResponsiveConfig();
192
+ const hasIndicator = !!this.segments().length;
193
+ const splitNumber = this.responsiveSplitSteps() && resp.splits ? resp.splits : this.splitSteps();
194
+ const grey = this.getThemeCustomValue(['gauge', 'grey'], '#F0F2F5');
195
+ const axisColor = this.getThemeCustomValue(['gauge', 'unit'], '#656A6F');
196
+ const indicator = {
197
+ type: 'gauge',
198
+ radius: resp.outerRadius - resp.progressWidth - resp.gap,
199
+ startAngle: 180,
200
+ endAngle: 0,
201
+ min: this.minValue(),
202
+ max: this.maxValue(),
203
+ center: resp.center,
204
+ axisLine: {
205
+ show: hasIndicator,
206
+ lineStyle: { width: resp.indicatorWidth }
207
+ },
208
+ axisTick: {
209
+ length: 0,
210
+ splitNumber: 1,
211
+ lineStyle: {
212
+ width: 2,
213
+ color: axisColor
214
+ }
215
+ },
216
+ splitLine: {
217
+ length: 0,
218
+ lineStyle: {
219
+ width: 1,
220
+ color: axisColor
221
+ }
222
+ },
223
+ axisLabel: { show: false }
224
+ };
225
+ const labelDistance = resp.axisLabelDist + (hasIndicator ? resp.indicatorWidth + resp.gap : 0);
226
+ const shade = {
227
+ type: 'gauge',
228
+ radius: resp.outerRadius,
229
+ startAngle: 180,
230
+ endAngle: 0,
231
+ min: this.minValue(),
232
+ max: this.maxValue(),
233
+ splitNumber,
234
+ axisTick: { show: false },
235
+ splitLine: { show: false },
236
+ title: { show: false },
237
+ center: resp.center,
238
+ axisLine: {
239
+ lineStyle: {
240
+ width: resp.progressWidth,
241
+ opacity: 0.6,
242
+ color: [[1, grey]]
243
+ }
244
+ },
245
+ axisLabel: {
246
+ show: !this.hideAxisLabels(),
247
+ distance: labelDistance,
248
+ color: axisColor,
249
+ fontSize: resp.axisFontSize,
250
+ formatter: this.labelFormatter() ?? this.axisLabelFormatter
251
+ }
252
+ };
253
+ const data = {
254
+ type: 'gauge',
255
+ silent: false,
256
+ radius: resp.outerRadius,
257
+ startAngle: 180,
258
+ endAngle: 0,
259
+ min: this.minValue(),
260
+ max: this.maxValue(),
261
+ splitNumber,
262
+ progress: {
263
+ show: true,
264
+ itemStyle: { color: 'auto' },
265
+ width: resp.progressWidth
266
+ },
267
+ emphasis: {
268
+ // This code is added to avoid flickering when the progress is hovered and
269
+ // when mouse effects are enabled with `silent: false` flag. The issue occurs
270
+ // because of the progress.itemStyle.color is set to `auto` which tries to
271
+ // calculate the color dynamically and it conflicts with the mouse hover action
272
+ // which tries to apply the hover style
273
+ itemStyle: { color: 'auto' }
274
+ },
275
+ pointer: {
276
+ show: true,
277
+ length: '0%',
278
+ itemStyle: {
279
+ color: 'auto',
280
+ opacity: 0.001
281
+ }
282
+ },
283
+ center: resp.center,
284
+ axisLine: {
285
+ show: false,
286
+ lineStyle: { opacity: 0.6 }
287
+ },
288
+ axisTick: { show: false },
289
+ splitLine: { show: false },
290
+ axisLabel: { show: false },
291
+ title: { show: false },
292
+ detail: {
293
+ offsetCenter: [0, -0.5 * resp.valueFontSize],
294
+ valueAnimation: true,
295
+ formatter: this.valueFormatterInternal(),
296
+ rich: {
297
+ value: {
298
+ fontSize: resp.valueFontSize,
299
+ lineHeight: resp.valueFontSize,
300
+ fontWeight: 600
301
+ },
302
+ unit: {
303
+ fontSize: resp.unitFontSize,
304
+ lineHeight: resp.unitFontSize,
305
+ padding: [0, 0, (resp.unitFontSize - resp.valueFontSize) / 2, 0]
306
+ }
307
+ }
308
+ },
309
+ data: [{ value: this.value() }]
310
+ };
311
+ const series = [indicator, shade, data];
312
+ this.showLegend.set(false);
313
+ this.actualOptions.series = series;
314
+ this.applyTitles();
315
+ }
316
+ valueFormatterInternal() {
317
+ const unit = this.unit();
318
+ const valueFormatter = this.valueFormatter();
319
+ const labelFormatter = this.labelFormatter();
320
+ const formattedUnit = unit ? (unit.length > 5 ? `\n{unit|${unit}}` : ` {unit|${unit}}`) : '';
321
+ return (value) => {
322
+ if (valueFormatter) {
323
+ return `{value|${valueFormatter(value)}}${formattedUnit}`;
324
+ }
325
+ // DEPRECATED: Use the new input `valueFormatter` to format the value.
326
+ // labelFormatter should be removed from here in future versions.
327
+ if (labelFormatter) {
328
+ return labelFormatter(value);
329
+ }
330
+ return `{value|${this.numberFormat().format(value)}}${formattedUnit}`;
331
+ };
332
+ }
333
+ ngOnChanges(changes) {
334
+ if (this.chart && (changes.palette || changes.colors || changes.segments)) {
335
+ this.updateColors();
336
+ }
337
+ changes.forceAll = new SimpleChange(false, true, false);
338
+ super.ngOnChanges(changes);
339
+ }
340
+ applyDataZoom() { }
341
+ afterChartResize() {
342
+ this.applyOptions();
343
+ this.refreshSeries();
344
+ }
345
+ /**
346
+ * Update gauge chart value.
347
+ */
348
+ setValue(value) {
349
+ const optionSeries = this.actualOptions.series;
350
+ optionSeries[2].data[0].value = value;
351
+ this.refreshSeries();
352
+ }
353
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartGaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
354
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SiChartGaugeComponent, isStandalone: true, selector: "si-chart-gauge", inputs: { minValue: { classPropertyName: "minValue", publicName: "minValue", isSignal: true, isRequired: false, transformFunction: null }, maxValue: { classPropertyName: "maxValue", publicName: "maxValue", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, splitSteps: { classPropertyName: "splitSteps", publicName: "splitSteps", isSignal: true, isRequired: false, transformFunction: null }, responsiveSplitSteps: { classPropertyName: "responsiveSplitSteps", publicName: "responsiveSplitSteps", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, unitsOnSplit: { classPropertyName: "unitsOnSplit", publicName: "unitsOnSplit", isSignal: true, isRequired: false, transformFunction: null }, labelFormatter: { classPropertyName: "labelFormatter", publicName: "labelFormatter", isSignal: true, isRequired: false, transformFunction: null }, valueFormatter: { classPropertyName: "valueFormatter", publicName: "valueFormatter", isSignal: true, isRequired: false, transformFunction: null }, minNumberOfDecimals: { classPropertyName: "minNumberOfDecimals", publicName: "minNumberOfDecimals", isSignal: true, isRequired: false, transformFunction: null }, maxNumberOfDecimals: { classPropertyName: "maxNumberOfDecimals", publicName: "maxNumberOfDecimals", isSignal: true, isRequired: false, transformFunction: null }, axisNumberOfDecimals: { classPropertyName: "axisNumberOfDecimals", publicName: "axisNumberOfDecimals", isSignal: true, isRequired: false, transformFunction: null }, hideAxisLabels: { classPropertyName: "hideAxisLabels", publicName: "hideAxisLabels", isSignal: true, isRequired: false, transformFunction: null }, segments: { classPropertyName: "segments", publicName: "segments", isSignal: true, isRequired: false, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", 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 });
355
+ }
356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartGaugeComponent, decorators: [{
357
+ type: Component,
358
+ args: [{ selector: 'si-chart-gauge', 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"] }]
359
+ }], propDecorators: { minValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "minValue", required: false }] }], maxValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxValue", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], splitSteps: [{ type: i0.Input, args: [{ isSignal: true, alias: "splitSteps", required: false }] }], responsiveSplitSteps: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsiveSplitSteps", required: false }] }], unit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unit", required: false }] }], unitsOnSplit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unitsOnSplit", required: false }] }], labelFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelFormatter", required: false }] }], valueFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueFormatter", required: false }] }], minNumberOfDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "minNumberOfDecimals", required: false }] }], maxNumberOfDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxNumberOfDecimals", required: false }] }], axisNumberOfDecimals: [{ type: i0.Input, args: [{ isSignal: true, alias: "axisNumberOfDecimals", required: false }] }], hideAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideAxisLabels", required: false }] }], segments: [{ type: i0.Input, args: [{ isSignal: true, alias: "segments", required: false }] }], colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }] } });
360
+
361
+ /**
362
+ * Copyright (c) Siemens 2016 - 2026
363
+ * SPDX-License-Identifier: MIT
364
+ */
365
+
366
+ /**
367
+ * Generated bundle index. Do not edit.
368
+ */
369
+
370
+ export { SiChartGaugeComponent };
371
+ //# sourceMappingURL=spike-rabbit-charts-ng-gauge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spike-rabbit-charts-ng-gauge.mjs","sources":["../../../../projects/charts-ng/gauge/si-chart-gauge.component.ts","../../../../projects/charts-ng/common/si-chart-base.component.html","../../../../projects/charts-ng/gauge/index.ts","../../../../projects/charts-ng/gauge/spike-rabbit-charts-ng-gauge.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n LOCALE_ID,\n OnChanges,\n SimpleChange,\n SimpleChanges\n} from '@angular/core';\nimport { SiChartBaseComponent, GaugeSeriesOption, echarts } 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 { GaugeChart } from 'echarts/charts';\n\nimport { GaugeChartSeries } from './si-chart-gauge.interface';\n\necharts.use([GaugeChart]);\n\n@Component({\n selector: 'si-chart-gauge',\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 SiChartGaugeComponent extends SiChartBaseComponent implements OnChanges {\n /** @defaultValue 0 */\n readonly minValue = input(0);\n /** @defaultValue 100 */\n readonly maxValue = input(100);\n /** @defaultValue 0 */\n readonly value = input(0);\n readonly splitSteps = input<number>();\n /** @defaultValue true */\n readonly responsiveSplitSteps = input(true);\n /** @defaultValue '%' */\n readonly unit = input('%');\n /** @defaultValue false */\n readonly unitsOnSplit = input(false);\n /**\n * Custom formatter for axis labels.\n * Takes precedence when specified, i.e. number of decimals, unit etc needs\n * to be set by the user using this formatter.\n */\n readonly labelFormatter = input<(val: number) => string>();\n /**\n * Custom formatter for value.\n * Takes precedence when specified, i.e. number of decimals needs\n * to be set by the user using this formatter.\n */\n readonly valueFormatter = input<(val: number) => string>();\n /**\n * Min number of decimals.\n * Possible values are from 0 to 100.\n * @defaultValue 0\n */\n readonly minNumberOfDecimals = input(0);\n /**\n * Max number of decimals.\n * Possible values are from 0 to 100.\n * @defaultValue 0\n */\n readonly maxNumberOfDecimals = input(0);\n /**\n * Number of decimals on the axis.\n * Possible values are from 0 to 100.\n * @defaultValue 0\n */\n readonly axisNumberOfDecimals = input(0);\n /** @defaultValue false */\n readonly hideAxisLabels = input(false, { transform: booleanAttribute });\n /**\n * Segments on the arc from 0 (implicit) to 1 (explicit)\n * E.g. 0.2 means from 0 to 0.2 of the possible range (maxValue - minValue)\n *\n * @defaultValue [0.2, 0.8, 1]\n */\n readonly segments = input<number[]>([0.2, 0.8, 1]);\n /**\n * Colors for the defined segments.\n * If there are less colors then segments, the colors will be repeated. Defaults to the standard color palette\n */\n readonly colors = input<string[]>();\n\n private readonly locale = inject(LOCALE_ID).toString();\n private readonly numberFormat = computed(() => {\n const minDecimals = this.minNumberOfDecimals();\n return new Intl.NumberFormat(this.locale, {\n minimumFractionDigits: minDecimals,\n maximumFractionDigits: Math.max(minDecimals, this.maxNumberOfDecimals())\n });\n });\n\n private readonly axisNumberFormat = computed(() => {\n const decimals = this.axisNumberOfDecimals();\n return new Intl.NumberFormat(this.locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n });\n\n protected override afterChartInit(): void {\n super.afterChartInit();\n this.applyOptions();\n this.updateColors();\n this.refreshSeries();\n }\n\n private updateColors(): void {\n // gauge doesn't respect color palette, it needs a bit convincing\n const effectiveOpts: any = this.getOptionNoClone();\n const colors: string[] = this.colors() ?? effectiveOpts.color;\n const hasIndicator = !!this.segments().length;\n\n let newColors: [number, string][];\n if (hasIndicator) {\n newColors = this.segments().map((threshold, index) => {\n const color = colors[index % colors.length];\n return [threshold, color];\n });\n } else {\n const colorsValue = this.colors();\n const dataColor = colorsValue?.length\n ? colorsValue[0]\n : this.getThemeCustomValue(['gauge', 'defaultColor'], colors[0]);\n newColors = [[1, dataColor]];\n }\n\n if (hasIndicator) {\n this.setAxisLineColor(newColors, (this.actualOptions.series![0] as any).axisLine);\n }\n (this.actualOptions.series![0] as any).axisLine.show = hasIndicator;\n\n this.setAxisLineColor(newColors, (this.actualOptions.series![2] as any).axisLine);\n this.refreshSeries();\n }\n\n private setAxisLineColor(colors: [number, string][], axisLine: any): void {\n axisLine.lineStyle = axisLine.lineStyle ?? {};\n axisLine.lineStyle.color = colors;\n }\n\n private getResponsiveConfig(): {\n outerRadius: number;\n center: (string | number)[];\n progressWidth: number;\n indicatorWidth: number;\n gap: number;\n splits: number;\n axisLabelDist: number;\n axisFontSize: number;\n valueFontSize: number;\n unitFontSize: number;\n } {\n const marginY = 12;\n const maxHeight = this.curHeight - marginY;\n const dim = Math.min(this.curWidth / 2, maxHeight);\n const top = dim < maxHeight ? this.curHeight / 2 + dim / 2 : maxHeight;\n\n if (dim < 150) {\n const splits = dim < 100 ? 1 : 4;\n const axisLabelDist = dim < 100 ? -6 : 0;\n return {\n outerRadius: dim - 4,\n center: ['50%', top],\n progressWidth: 8,\n indicatorWidth: 1,\n gap: 2,\n splits,\n axisLabelDist,\n axisFontSize: 12,\n valueFontSize: 18,\n unitFontSize: 12\n };\n }\n\n if (dim < 200) {\n return {\n outerRadius: dim - 7,\n center: ['50%', top],\n progressWidth: 14,\n indicatorWidth: 3,\n gap: 3,\n splits: 6,\n axisLabelDist: 12,\n axisFontSize: 16,\n valueFontSize: 30,\n unitFontSize: 14\n };\n }\n\n return {\n outerRadius: dim - 12,\n center: ['50%', top],\n progressWidth: 24,\n indicatorWidth: 4,\n gap: 5,\n splits: 0,\n axisLabelDist: 20,\n axisFontSize: 20,\n valueFontSize: 40,\n unitFontSize: 14\n };\n }\n\n private readonly axisLabelFormatter = (value: any): string => {\n const formatted = this.axisNumberFormat().format(Number(value));\n return this.unitsOnSplit() ? `${formatted} ${this.unit()}` : formatted;\n };\n\n protected override applyOptions(): void {\n const resp = this.getResponsiveConfig();\n const hasIndicator = !!this.segments().length;\n\n const splitNumber =\n this.responsiveSplitSteps() && resp.splits ? resp.splits : this.splitSteps();\n const grey = this.getThemeCustomValue(['gauge', 'grey'], '#F0F2F5');\n const axisColor = this.getThemeCustomValue(['gauge', 'unit'], '#656A6F');\n\n const indicator: GaugeSeriesOption = {\n type: 'gauge',\n radius: resp.outerRadius - resp.progressWidth - resp.gap,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n center: resp.center,\n axisLine: {\n show: hasIndicator,\n lineStyle: { width: resp.indicatorWidth }\n },\n axisTick: {\n length: 0,\n splitNumber: 1,\n lineStyle: {\n width: 2,\n color: axisColor\n }\n },\n splitLine: {\n length: 0,\n lineStyle: {\n width: 1,\n color: axisColor\n }\n },\n axisLabel: { show: false }\n };\n\n const labelDistance = resp.axisLabelDist + (hasIndicator ? resp.indicatorWidth + resp.gap : 0);\n\n const shade: GaugeSeriesOption = {\n type: 'gauge',\n radius: resp.outerRadius,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n splitNumber,\n axisTick: { show: false },\n splitLine: { show: false },\n title: { show: false },\n center: resp.center,\n axisLine: {\n lineStyle: {\n width: resp.progressWidth,\n opacity: 0.6,\n color: [[1, grey]]\n }\n },\n axisLabel: {\n show: !this.hideAxisLabels(),\n distance: labelDistance,\n color: axisColor,\n fontSize: resp.axisFontSize,\n formatter: this.labelFormatter() ?? this.axisLabelFormatter\n }\n };\n\n const data: GaugeSeriesOption = {\n type: 'gauge',\n silent: false,\n radius: resp.outerRadius,\n startAngle: 180,\n endAngle: 0,\n min: this.minValue(),\n max: this.maxValue(),\n splitNumber,\n progress: {\n show: true,\n itemStyle: { color: 'auto' },\n width: resp.progressWidth\n },\n emphasis: {\n // This code is added to avoid flickering when the progress is hovered and\n // when mouse effects are enabled with `silent: false` flag. The issue occurs\n // because of the progress.itemStyle.color is set to `auto` which tries to\n // calculate the color dynamically and it conflicts with the mouse hover action\n // which tries to apply the hover style\n itemStyle: { color: 'auto' }\n },\n pointer: {\n show: true,\n length: '0%',\n itemStyle: {\n color: 'auto',\n opacity: 0.001\n }\n },\n center: resp.center,\n axisLine: {\n show: false,\n lineStyle: { opacity: 0.6 }\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: {\n offsetCenter: [0, -0.5 * resp.valueFontSize],\n valueAnimation: true,\n formatter: this.valueFormatterInternal(),\n rich: {\n value: {\n fontSize: resp.valueFontSize,\n lineHeight: resp.valueFontSize,\n fontWeight: 600\n },\n unit: {\n fontSize: resp.unitFontSize,\n lineHeight: resp.unitFontSize,\n padding: [0, 0, (resp.unitFontSize - resp.valueFontSize) / 2, 0]\n }\n }\n },\n data: [{ value: this.value() }]\n };\n\n const series: GaugeSeriesOption[] = [indicator, shade, data];\n\n this.showLegend.set(false);\n this.actualOptions.series = series;\n\n this.applyTitles();\n }\n\n private valueFormatterInternal(): (val: number) => string {\n const unit = this.unit();\n const valueFormatter = this.valueFormatter();\n const labelFormatter = this.labelFormatter();\n\n const formattedUnit = unit ? (unit.length > 5 ? `\\n{unit|${unit}}` : ` {unit|${unit}}`) : '';\n\n return (value: number): string => {\n if (valueFormatter) {\n return `{value|${valueFormatter(value)}}${formattedUnit}`;\n }\n // DEPRECATED: Use the new input `valueFormatter` to format the value.\n // labelFormatter should be removed from here in future versions.\n if (labelFormatter) {\n return labelFormatter(value);\n }\n return `{value|${this.numberFormat().format(value)}}${formattedUnit}`;\n };\n }\n\n override ngOnChanges(changes: SimpleChanges<unknown>): void {\n if (this.chart && (changes.palette || changes.colors || changes.segments)) {\n this.updateColors();\n }\n changes.forceAll = new SimpleChange(false, true, false);\n super.ngOnChanges(changes);\n }\n\n protected override applyDataZoom(): void {}\n\n protected override afterChartResize(): void {\n this.applyOptions();\n this.refreshSeries();\n }\n\n /**\n * Update gauge chart value.\n */\n setValue(value: number): void {\n const optionSeries = this.actualOptions.series as GaugeChartSeries[];\n optionSeries[2].data[0].value = value;\n this.refreshSeries();\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-gauge.component';\nexport * from './si-chart-gauge.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAoBH,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AASnB,MAAO,qBAAsB,SAAQ,oBAAoB,CAAA;;IAEpD,QAAQ,GAAG,KAAK,CAAC,CAAC;iFAAC;;IAEnB,QAAQ,GAAG,KAAK,CAAC,GAAG;iFAAC;;IAErB,KAAK,GAAG,KAAK,CAAC,CAAC;8EAAC;AAChB,IAAA,UAAU,GAAG,KAAK;8FAAU;;IAE5B,oBAAoB,GAAG,KAAK,CAAC,IAAI;6FAAC;;IAElC,IAAI,GAAG,KAAK,CAAC,GAAG;6EAAC;;IAEjB,YAAY,GAAG,KAAK,CAAC,KAAK;qFAAC;AACpC;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK;kGAA2B;AAC1D;;;;AAIG;AACM,IAAA,cAAc,GAAG,KAAK;kGAA2B;AAC1D;;;;AAIG;IACM,mBAAmB,GAAG,KAAK,CAAC,CAAC;4FAAC;AACvC;;;;AAIG;IACM,mBAAmB,GAAG,KAAK,CAAC,CAAC;4FAAC;AACvC;;;;AAIG;IACM,oBAAoB,GAAG,KAAK,CAAC,CAAC;6FAAC;;IAE/B,cAAc,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvE;;;;;AAKG;IACM,QAAQ,GAAG,KAAK,CAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;iFAAC;AAClD;;;AAGG;AACM,IAAA,MAAM,GAAG,KAAK;0FAAY;IAElB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AACrC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC9C,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACxC,YAAA,qBAAqB,EAAE,WAAW;YAClC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACxE,SAAA,CAAC;IACJ,CAAC;qFAAC;AAEe,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC5C,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACxC,YAAA,qBAAqB,EAAE,QAAQ;AAC/B,YAAA,qBAAqB,EAAE;AACxB,SAAA,CAAC;IACJ,CAAC;yFAAC;IAEiB,cAAc,GAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,aAAa,EAAE;IACtB;IAEQ,YAAY,GAAA;;AAElB,QAAA,MAAM,aAAa,GAAQ,IAAI,CAAC,gBAAgB,EAAE;QAClD,MAAM,MAAM,GAAa,IAAI,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK;QAC7D,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;AAE7C,QAAA,IAAI,SAA6B;QACjC,IAAI,YAAY,EAAE;AAChB,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;gBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,gBAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;AAC3B,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,MAAM,SAAS,GAAG,WAAW,EAAE;AAC7B,kBAAE,WAAW,CAAC,CAAC;AACf,kBAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAClE,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9B;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAG,IAAI,CAAC,aAAa,CAAC,MAAO,CAAC,CAAC,CAAS,CAAC,QAAQ,CAAC;QACnF;AACC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAO,CAAC,CAAC,CAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY;AAEnE,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAG,IAAI,CAAC,aAAa,CAAC,MAAO,CAAC,CAAC,CAAS,CAAC,QAAQ,CAAC;QACjF,IAAI,CAAC,aAAa,EAAE;IACtB;IAEQ,gBAAgB,CAAC,MAA0B,EAAE,QAAa,EAAA;QAChE,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE;AAC7C,QAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM;IACnC;IAEQ,mBAAmB,GAAA;QAYzB,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,SAAS;AAEtE,QAAA,IAAI,GAAG,GAAG,GAAG,EAAE;AACb,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YACxC,OAAO;gBACL,WAAW,EAAE,GAAG,GAAG,CAAC;AACpB,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;AACpB,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,GAAG,EAAE,CAAC;gBACN,MAAM;gBACN,aAAa;AACb,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,YAAY,EAAE;aACf;QACH;AAEA,QAAA,IAAI,GAAG,GAAG,GAAG,EAAE;YACb,OAAO;gBACL,WAAW,EAAE,GAAG,GAAG,CAAC;AACpB,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;AACpB,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,GAAG,EAAE,CAAC;AACN,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,aAAa,EAAE,EAAE;AACjB,gBAAA,YAAY,EAAE;aACf;QACH;QAEA,OAAO;YACL,WAAW,EAAE,GAAG,GAAG,EAAE;AACrB,YAAA,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;AACpB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,YAAY,EAAE;SACf;IACH;AAEiB,IAAA,kBAAkB,GAAG,CAAC,KAAU,KAAY;AAC3D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAA,EAAG,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,GAAG,SAAS;AACxE,IAAA,CAAC;IAEkB,YAAY,GAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACvC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;QAE7C,MAAM,WAAW,GACf,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC;AACnE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC;AAExE,QAAA,MAAM,SAAS,GAAsB;AACnC,YAAA,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG;AACxD,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpB,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc;AACxC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE;AACR;AACF,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE;AACR;AACF,aAAA;AACD,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK;SACzB;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAE9F,QAAA,MAAM,KAAK,GAAsB;AAC/B,YAAA,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpB,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACpB,WAAW;AACX,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE;oBACT,KAAK,EAAE,IAAI,CAAC,aAAa;AACzB,oBAAA,OAAO,EAAE,GAAG;AACZ,oBAAA,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AAClB;AACF,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AAC5B,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI,CAAC,YAAY;gBAC3B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC;AAC1C;SACF;AAED,QAAA,MAAM,IAAI,GAAsB;AAC9B,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpB,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;YACpB,WAAW;AACX,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC5B,KAAK,EAAE,IAAI,CAAC;AACb,aAAA;AACD,YAAA,QAAQ,EAAE;;;;;;AAMR,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM;AAC3B,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,OAAO,EAAE;AACV;AACF,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG;AAC1B,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACtB,YAAA,MAAM,EAAE;gBACN,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5C,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE;AACxC,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI,CAAC,aAAa;wBAC5B,UAAU,EAAE,IAAI,CAAC,aAAa;AAC9B,wBAAA,UAAU,EAAE;AACb,qBAAA;AACD,oBAAA,IAAI,EAAE;wBACJ,QAAQ,EAAE,IAAI,CAAC,YAAY;wBAC3B,UAAU,EAAE,IAAI,CAAC,YAAY;AAC7B,wBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;AAChE;AACF;AACF,aAAA;YACD,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;SAC/B;QAED,MAAM,MAAM,GAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;AAE5D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM;QAElC,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAE5C,QAAA,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,CAAG,GAAG,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,CAAG,IAAI,EAAE;QAE5F,OAAO,CAAC,KAAa,KAAY;YAC/B,IAAI,cAAc,EAAE;gBAClB,OAAO,CAAA,OAAA,EAAU,cAAc,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,aAAa,EAAE;YAC3D;;;YAGA,IAAI,cAAc,EAAE;AAClB,gBAAA,OAAO,cAAc,CAAC,KAAK,CAAC;YAC9B;AACA,YAAA,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,aAAa,EAAE;AACvE,QAAA,CAAC;IACH;AAES,IAAA,WAAW,CAAC,OAA+B,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzE,IAAI,CAAC,YAAY,EAAE;QACrB;AACA,QAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACvD,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IAC5B;AAEmB,IAAA,aAAa,KAAU;IAEvB,gBAAgB,GAAA;QACjC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAA4B;AACpE,QAAA,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK;QACrC,IAAI,CAAC,aAAa,EAAE;IACtB;uGA3WW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,EChClC,omEAgEA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrCY,uBAAuB,+PAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA;;2FAKtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,EAAA,eAAA,EAGjD,uBAAuB,CAAC,KAAK,EAAA,QAAA,EAAA,omEAAA,EAAA,MAAA,EAAA,CAAA,4/BAAA,CAAA,EAAA;;;AE9BhD;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -0,0 +1,27 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+
4
+ /**
5
+ * Copyright (c) Siemens 2016 - 2026
6
+ * SPDX-License-Identifier: MIT
7
+ */
8
+ class SiChartLoadingSpinnerComponent {
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: SiChartLoadingSpinnerComponent, isStandalone: true, selector: "si-chart-loading-spinner", ngImport: i0, template: "<div class=\"loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n", styles: ["@keyframes spinner-fade{0%{opacity:1}to{opacity:.05}}.loading{display:block;text-align:center}svg{inline-size:var(--loading-spinner-size, 64px);block-size:var(--loading-spinner-size, 64px)}path{fill:var(--element-ui-2, #656a6f);animation:spinner-fade 1s infinite linear}path:nth-child(1){animation-delay:0s;opacity:1}path:nth-child(2){animation-delay:.1s;opacity:.9}path:nth-child(3){animation-delay:.2s;opacity:.8}path:nth-child(4){animation-delay:.3s;opacity:.7}path:nth-child(5){animation-delay:.4s;opacity:.6}path:nth-child(6){animation-delay:.5s;opacity:.5}path:nth-child(7){animation-delay:.6s;opacity:.4}path:nth-child(8){animation-delay:.7s;opacity:.3}path:nth-child(9){animation-delay:.8s;opacity:.2}path:nth-child(10){animation-delay:.9s;opacity:.1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SiChartLoadingSpinnerComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'si-chart-loading-spinner', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n", styles: ["@keyframes spinner-fade{0%{opacity:1}to{opacity:.05}}.loading{display:block;text-align:center}svg{inline-size:var(--loading-spinner-size, 64px);block-size:var(--loading-spinner-size, 64px)}path{fill:var(--element-ui-2, #656a6f);animation:spinner-fade 1s infinite linear}path:nth-child(1){animation-delay:0s;opacity:1}path:nth-child(2){animation-delay:.1s;opacity:.9}path:nth-child(3){animation-delay:.2s;opacity:.8}path:nth-child(4){animation-delay:.3s;opacity:.7}path:nth-child(5){animation-delay:.4s;opacity:.6}path:nth-child(6){animation-delay:.5s;opacity:.5}path:nth-child(7){animation-delay:.6s;opacity:.4}path:nth-child(8){animation-delay:.7s;opacity:.3}path:nth-child(9){animation-delay:.8s;opacity:.2}path:nth-child(10){animation-delay:.9s;opacity:.1}\n"] }]
15
+ }] });
16
+
17
+ /**
18
+ * Copyright (c) Siemens 2016 - 2026
19
+ * SPDX-License-Identifier: MIT
20
+ */
21
+
22
+ /**
23
+ * Generated bundle index. Do not edit.
24
+ */
25
+
26
+ export { SiChartLoadingSpinnerComponent };
27
+ //# sourceMappingURL=spike-rabbit-charts-ng-loading-spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spike-rabbit-charts-ng-loading-spinner.mjs","sources":["../../../../projects/charts-ng/loading-spinner/si-chart-loading-spinner.component.ts","../../../../projects/charts-ng/loading-spinner/si-chart-loading-spinner.component.html","../../../../projects/charts-ng/loading-spinner/index.ts","../../../../projects/charts-ng/loading-spinner/spike-rabbit-charts-ng-loading-spinner.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'si-chart-loading-spinner',\n templateUrl: './si-chart-loading-spinner.component.html',\n styleUrl: './si-chart-loading-spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiChartLoadingSpinnerComponent {}\n","<div class=\"loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <g>\n <path d=\"M256,156a16,16,0,0,1-16-16V80a16,16,0,0,1,32,0v60A16,16,0,0,1,256,156Z\" />\n <path\n d=\"M314.78,175.1a16,16,0,0,1-3.54-22.35l35.27-48.54A16,16,0,1,1,372.39,123l-35.26,48.54A16,16,0,0,1,314.78,175.1Z\"\n />\n <path\n d=\"M351.11,225.1a16,16,0,0,1,10.27-20.16l57.06-18.54a16,16,0,1,1,9.89,30.43l-57.06,18.54A16,16,0,0,1,351.11,225.1Z\"\n />\n <path\n d=\"M351.11,286.9a16,16,0,0,1,20.16-10.27l57.06,18.54a16,16,0,1,1-9.89,30.43l-57.06-18.54A16,16,0,0,1,351.11,286.9Z\"\n />\n <path\n d=\"M314.78,336.9a16,16,0,0,1,22.35,3.54L372.39,389a16,16,0,1,1-25.88,18.81l-35.27-48.54A16,16,0,0,1,314.78,336.9Z\"\n />\n <path d=\"M256,356a16,16,0,0,1,16,16v60a16,16,0,0,1-32,0V372A16,16,0,0,1,256,356Z\" />\n <path\n d=\"M197.22,336.9a16,16,0,0,1,3.54,22.35l-35.27,48.54A16,16,0,1,1,139.61,389l35.26-48.54A16,16,0,0,1,197.22,336.9Z\"\n />\n <path\n d=\"M160.89,286.9a16,16,0,0,1-10.27,20.16L93.56,325.6a16,16,0,0,1-9.89-30.43l57.06-18.54A16,16,0,0,1,160.89,286.9Z\"\n />\n <path\n d=\"M160.89,225.1a16,16,0,0,1-20.16,10.27L83.67,216.83a16,16,0,1,1,9.89-30.43l57.06,18.54A16,16,0,0,1,160.89,225.1Z\"\n />\n <path\n d=\"M197.22,175.1a16,16,0,0,1-22.35-3.54L139.61,123a16,16,0,1,1,25.88-18.81l35.27,48.54A16,16,0,0,1,197.22,175.1Z\"\n />\n </g>\n </svg>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-chart-loading-spinner.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;;;AAGG;MASU,8BAA8B,CAAA;uGAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oFCZ3C,2+CAgCA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDpBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACE,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2+CAAA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA;;;AEVjD;;;AAGG;;ACHH;;AAEG;;;;"}