@skdx/angular-charts 0.32.0 → 0.34.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 (65) hide show
  1. package/README.md +96 -41
  2. package/fesm2022/skdx-angular-charts-area.mjs +27 -33
  3. package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
  4. package/fesm2022/skdx-angular-charts-bar.mjs +30 -51
  5. package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
  6. package/fesm2022/skdx-angular-charts-boxplot.mjs +26 -14
  7. package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
  8. package/fesm2022/skdx-angular-charts-candlestick.mjs +49 -16
  9. package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
  10. package/fesm2022/skdx-angular-charts-chord.mjs +26 -14
  11. package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
  12. package/fesm2022/skdx-angular-charts-funnel.mjs +37 -48
  13. package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
  14. package/fesm2022/skdx-angular-charts-gantt.mjs +31 -19
  15. package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
  16. package/fesm2022/skdx-angular-charts-heatmap.mjs +54 -81
  17. package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
  18. package/fesm2022/skdx-angular-charts-internal.mjs +2746 -707
  19. package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
  20. package/fesm2022/skdx-angular-charts-line.mjs +26 -16
  21. package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
  22. package/fesm2022/skdx-angular-charts-map.mjs +35 -14
  23. package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
  24. package/fesm2022/skdx-angular-charts-pie.mjs +47 -25
  25. package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
  26. package/fesm2022/skdx-angular-charts-radar.mjs +45 -81
  27. package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
  28. package/fesm2022/skdx-angular-charts-radial.mjs +108 -0
  29. package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -0
  30. package/fesm2022/skdx-angular-charts-sankey.mjs +26 -14
  31. package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
  32. package/fesm2022/skdx-angular-charts-scatter.mjs +49 -19
  33. package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
  34. package/fesm2022/skdx-angular-charts-sparkline.mjs +50 -60
  35. package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
  36. package/fesm2022/skdx-angular-charts-sunburst.mjs +26 -14
  37. package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
  38. package/fesm2022/skdx-angular-charts-treemap.mjs +26 -14
  39. package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
  40. package/fesm2022/skdx-angular-charts-waterfall.mjs +26 -14
  41. package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
  42. package/fesm2022/skdx-angular-charts.mjs +2 -0
  43. package/fesm2022/skdx-angular-charts.mjs.map +1 -1
  44. package/package.json +7 -12
  45. package/types/skdx-angular-charts-area.d.ts +2 -2
  46. package/types/skdx-angular-charts-bar.d.ts +5 -13
  47. package/types/skdx-angular-charts-boxplot.d.ts +2 -2
  48. package/types/skdx-angular-charts-candlestick.d.ts +10 -4
  49. package/types/skdx-angular-charts-chord.d.ts +2 -2
  50. package/types/skdx-angular-charts-funnel.d.ts +5 -3
  51. package/types/skdx-angular-charts-gantt.d.ts +6 -6
  52. package/types/skdx-angular-charts-heatmap.d.ts +16 -15
  53. package/types/skdx-angular-charts-internal.d.ts +595 -232
  54. package/types/skdx-angular-charts-line.d.ts +2 -2
  55. package/types/skdx-angular-charts-map.d.ts +4 -3
  56. package/types/skdx-angular-charts-pie.d.ts +11 -3
  57. package/types/skdx-angular-charts-radar.d.ts +8 -10
  58. package/types/skdx-angular-charts-radial.d.ts +34 -0
  59. package/types/skdx-angular-charts-sankey.d.ts +2 -2
  60. package/types/skdx-angular-charts-scatter.d.ts +11 -4
  61. package/types/skdx-angular-charts-sparkline.d.ts +13 -5
  62. package/types/skdx-angular-charts-sunburst.d.ts +2 -2
  63. package/types/skdx-angular-charts-treemap.d.ts +4 -4
  64. package/types/skdx-angular-charts-waterfall.d.ts +2 -2
  65. package/types/skdx-angular-charts.d.ts +2 -1
@@ -1,13 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { SkdxChartBase, layoutLineChart, SkdxChartFrameComponent, SkdxChartLinesComponent } from '@skdx/angular-charts/internal';
3
+ import { SkdxChartBase, layoutLineChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
4
 
5
5
  /*
6
6
  * Copyright (c) 2026 SkandaDX
7
7
  * This file is part of the SkandaDX organization.
8
8
  * Licensed under the MIT License. See LICENSE in the repository root.
9
9
  */
10
- /** One polyline per series with a dot per value. */
10
+ /** One polyline per series with a dot per value; series may also be bars, areas or ranges. */
11
11
  class SkdxLineChartComponent extends SkdxChartBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -16,10 +16,18 @@ class SkdxLineChartComponent extends SkdxChartBase {
16
16
  }
17
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxLineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
18
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: SkdxLineChartComponent, isStandalone: true, selector: "skdx-line-chart", usesInheritance: true, ngImport: i0, template: `
19
- <skdx-chart-frame [layout]="layout()" kind="line" [label]="label() ?? 'Line chart'">
20
- <svg:g skdxChartLines [lines]="layout().lines" [points]="layout().points"></svg:g>
21
- </skdx-chart-frame>
22
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartFrameComponent, selector: "skdx-chart-frame", inputs: ["layout", "kind", "label"] }, { kind: "component", type: SkdxChartLinesComponent, selector: "g[skdxChartLines]", inputs: ["lines", "points"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ <skdx-chart-root
20
+ [layout]="layout()"
21
+ kind="line"
22
+ [label]="label() ?? 'Line chart'"
23
+ [zoomable]="zoomable()"
24
+ [responsive]="responsive()"
25
+ (itemClick)="itemClick.emit($event)"
26
+ (hiddenSeriesChange)="toggle($event)"
27
+ (zoomChange)="zoom.set($event)"
28
+ (measured)="measuredWidth.set($event)"
29
+ ></skdx-chart-root>
30
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
31
  }
24
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxLineChartComponent, decorators: [{
25
33
  type: Component,
@@ -27,21 +35,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
27
35
  selector: 'skdx-line-chart',
28
36
  standalone: true,
29
37
  changeDetection: ChangeDetectionStrategy.OnPush,
30
- imports: [SkdxChartFrameComponent, SkdxChartLinesComponent],
38
+ imports: [SkdxChartRootComponent],
31
39
  template: `
32
- <skdx-chart-frame [layout]="layout()" kind="line" [label]="label() ?? 'Line chart'">
33
- <svg:g skdxChartLines [lines]="layout().lines" [points]="layout().points"></svg:g>
34
- </skdx-chart-frame>
40
+ <skdx-chart-root
41
+ [layout]="layout()"
42
+ kind="line"
43
+ [label]="label() ?? 'Line chart'"
44
+ [zoomable]="zoomable()"
45
+ [responsive]="responsive()"
46
+ (itemClick)="itemClick.emit($event)"
47
+ (hiddenSeriesChange)="toggle($event)"
48
+ (zoomChange)="zoom.set($event)"
49
+ (measured)="measuredWidth.set($event)"
50
+ ></skdx-chart-root>
35
51
  `,
36
52
  }]
37
53
  }] });
38
54
 
39
- /*
40
- * Copyright (c) 2026 SkandaDX
41
- * This file is part of the SkandaDX organization.
42
- * Licensed under the MIT License. See LICENSE in the repository root.
43
- */
44
-
45
55
  /**
46
56
  * Generated bundle index. Do not edit.
47
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-line.mjs","sources":["../../src/line/line-chart.component.ts","../../src/line/index.ts","../../src/line/skdx-angular-charts-line.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutLineChart,\n SkdxChartBase,\n SkdxChartFrameComponent,\n SkdxChartLinesComponent,\n} from '@skdx/angular-charts/internal';\n\n/** One polyline per series with a dot per value. */\n@Component({\n selector: 'skdx-line-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartFrameComponent, SkdxChartLinesComponent],\n template: `\n <skdx-chart-frame [layout]=\"layout()\" kind=\"line\" [label]=\"label() ?? 'Line chart'\">\n <svg:g skdxChartLines [lines]=\"layout().lines\" [points]=\"layout().points\"></svg:g>\n </skdx-chart-frame>\n `,\n})\nexport class SkdxLineChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutLineChart(this.input()));\n}\n","/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nexport { SkdxLineChartComponent } from './line-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAYM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAXzD,IAAA,WAAA,GAAA;;AAYqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AAC1E,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANvB;;;;GAIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,uBAAuB,kGAAE,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAO/C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACF,iBAAA;;;AC1BD;;;;AAIG;;ACJH;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-line.mjs","sources":["../../src/line/index.ts","../../src/line/skdx-angular-charts-line.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutLineChart,\n SkdxChartBase,\n SkdxChartRootComponent,\n} from '@skdx/angular-charts/internal';\n\n/** One polyline per series with a dot per value; series may also be bars, areas or ranges. */\n@Component({\n selector: 'skdx-line-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"line\"\n [label]=\"label() ?? 'Line chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxLineChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutLineChart(this.input()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AAoBM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAnBzD,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AAC1E,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdvB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;ACjCD;;AAEG;;"}
@@ -7,7 +7,7 @@ import { SkdxSizedBase, layoutMap, SkdxChartRootComponent } from '@skdx/angular-
7
7
  * This file is part of the SkandaDX organization.
8
8
  * Licensed under the MIT License. See LICENSE in the repository root.
9
9
  */
10
- /** Choropleth of GeoJSON-shaped regions, opacity by value. */
10
+ /** A choropleth of GeoJSON regions, opacity by value. */
11
11
  class SkdxMapChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -16,13 +16,30 @@ class SkdxMapChartComponent extends SkdxSizedBase {
16
16
  /** The region color; each region's opacity follows its value. */
17
17
  this.color = input(/* @ts-ignore */
18
18
  ...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
19
- this.l = computed(() => layoutMap({ ...this.sized(), features: this.features(), color: this.color() }), /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
19
+ this.projection = input(/* @ts-ignore */
20
+ ...(ngDevMode ? [undefined, { debugName: "projection" }] : /* istanbul ignore next */ []));
21
+ this.layout = computed(() => layoutMap({
22
+ ...this.sized(),
23
+ features: this.features(),
24
+ color: this.color(),
25
+ projection: this.projection(),
26
+ }), /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
21
28
  }
22
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMapChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxMapChartComponent, isStandalone: true, selector: "skdx-map-chart", inputs: { features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
24
- <skdx-chart-root [layout]="l()" kind="map" [label]="label() ?? 'Map'"> </skdx-chart-root>
25
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxMapChartComponent, isStandalone: true, selector: "skdx-map-chart", inputs: { features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, projection: { classPropertyName: "projection", publicName: "projection", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
31
+ <skdx-chart-root
32
+ [layout]="layout()"
33
+ kind="map"
34
+ [label]="label() ?? 'Map'"
35
+ [zoomable]="zoomable()"
36
+ [responsive]="responsive()"
37
+ (itemClick)="itemClick.emit($event)"
38
+ (hiddenSeriesChange)="toggle($event)"
39
+ (zoomChange)="zoom.set($event)"
40
+ (measured)="measuredWidth.set($event)"
41
+ ></skdx-chart-root>
42
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
43
  }
27
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMapChartComponent, decorators: [{
28
45
  type: Component,
@@ -32,16 +49,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
32
49
  changeDetection: ChangeDetectionStrategy.OnPush,
33
50
  imports: [SkdxChartRootComponent],
34
51
  template: `
35
- <skdx-chart-root [layout]="l()" kind="map" [label]="label() ?? 'Map'"> </skdx-chart-root>
52
+ <skdx-chart-root
53
+ [layout]="layout()"
54
+ kind="map"
55
+ [label]="label() ?? 'Map'"
56
+ [zoomable]="zoomable()"
57
+ [responsive]="responsive()"
58
+ (itemClick)="itemClick.emit($event)"
59
+ (hiddenSeriesChange)="toggle($event)"
60
+ (zoomChange)="zoom.set($event)"
61
+ (measured)="measuredWidth.set($event)"
62
+ ></skdx-chart-root>
36
63
  `,
37
64
  }]
38
- }], propDecorators: { features: [{ type: i0.Input, args: [{ isSignal: true, alias: "features", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
39
-
40
- /*
41
- * Copyright (c) 2026 SkandaDX
42
- * This file is part of the SkandaDX organization.
43
- * Licensed under the MIT License. See LICENSE in the repository root.
44
- */
65
+ }], propDecorators: { features: [{ type: i0.Input, args: [{ isSignal: true, alias: "features", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], projection: [{ type: i0.Input, args: [{ isSignal: true, alias: "projection", required: false }] }] } });
45
66
 
46
67
  /**
47
68
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-map.mjs","sources":["../../src/map/map-chart.component.ts","../../src/map/index.ts","../../src/map/skdx-angular-charts-map.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutMap,\n type MapFeature,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Choropleth of GeoJSON-shaped regions, opacity by value. */\n@Component({\n selector: 'skdx-map-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"map\" [label]=\"label() ?? 'Map'\"> </skdx-chart-root>\n `,\n})\nexport class SkdxMapChartComponent extends SkdxSizedBase {\n readonly features = input.required<MapFeature[]>();\n /** The region color; each region's opacity follows its value. */\n readonly color = input<string>();\n\n protected readonly l = computed(() =>\n layoutMap({ ...this.sized(), features: this.features(), color: this.color() }),\n );\n}\n","/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nexport { SkdxMapChartComponent } from './map-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAUM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AATxD,IAAA,WAAA,GAAA;;QAUW,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;qFAAgB;;AAEzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AAEb,QAAA,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAC9B,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;8EAC/E;AACF,IAAA;8GARY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,IAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJtB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAHS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKrB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;ACxBD;;;;AAIG;;ACJH;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-map.mjs","sources":["../../src/map/index.ts","../../src/map/skdx-angular-charts-map.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutMap,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type MapFeature,\n} from '@skdx/angular-charts/internal';\n\n/** A choropleth of GeoJSON regions, opacity by value. */\n@Component({\n selector: 'skdx-map-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"map\"\n [label]=\"label() ?? 'Map'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxMapChartComponent extends SkdxSizedBase {\n readonly features = input.required<MapFeature[]>();\n /** The region color; each region's opacity follows its value. */\n readonly color = input<string>();\n readonly projection = input<'equirectangular' | 'mercator'>();\n\n protected readonly layout = computed(() =>\n layoutMap({\n ...this.sized(),\n features: this.features(),\n color: this.color(),\n projection: this.projection(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAoBM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAnBxD,IAAA,WAAA,GAAA;;QAoBW,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;qFAAgB;;AAEzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAAkC;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,SAAS,CAAC;YACR,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC9B,CAAC;mFACH;AACF,IAAA;8GAdY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,IAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdtB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;AClCD;;AAEG;;"}
@@ -7,7 +7,7 @@ import { SkdxSizedBase, layoutPieChart, SkdxChartRootComponent } from '@skdx/ang
7
7
  * This file is part of the SkandaDX organization.
8
8
  * Licensed under the MIT License. See LICENSE in the repository root.
9
9
  */
10
- /** A pie, or a donut when `innerRadius` is set; one slice per datum. */
10
+ /** A pie, a donut when `innerRadius` is set, or a half circle with `startAngle`/`endAngle`; one slice per datum. */
11
11
  class SkdxPieChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -16,19 +16,43 @@ class SkdxPieChartComponent extends SkdxSizedBase {
16
16
  /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */
17
17
  this.innerRadius = input(/* @ts-ignore */
18
18
  ...(ngDevMode ? [undefined, { debugName: "innerRadius" }] : /* istanbul ignore next */ []));
19
- this.layout = computed(() => layoutPieChart({ ...this.sized(), data: this.data(), innerRadius: this.innerRadius() }), /* @ts-ignore */
19
+ /** Write each slice's name and share on the slice. */
20
+ this.labels = input(false, /* @ts-ignore */
21
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
22
+ /** Degrees clockwise from 12 o'clock where the first slice starts. */
23
+ this.startAngle = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "startAngle" }] : /* istanbul ignore next */ []));
25
+ /** Degrees where the last slice ends; -90/90 makes a half circle. */
26
+ this.endAngle = input(/* @ts-ignore */
27
+ ...(ngDevMode ? [undefined, { debugName: "endAngle" }] : /* istanbul ignore next */ []));
28
+ /** Text in the middle of a donut. */
29
+ this.centerLabel = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "centerLabel" }] : /* istanbul ignore next */ []));
31
+ this.layout = computed(() => layoutPieChart({
32
+ ...this.sized(),
33
+ data: this.data(),
34
+ innerRadius: this.innerRadius(),
35
+ labels: this.labels(),
36
+ startAngle: this.startAngle(),
37
+ endAngle: this.endAngle(),
38
+ centerLabel: this.centerLabel(),
39
+ }), /* @ts-ignore */
20
40
  ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
21
41
  }
22
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxPieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SkdxPieChartComponent, isStandalone: true, selector: "skdx-pie-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
24
- <skdx-chart-root [layout]="layout()" kind="pie" [label]="label() ?? 'Pie chart'">
25
- @for (s of layout().slices; track s.name) {
26
- <svg:path data-skdx-part="slice" [attr.d]="s.d" [attr.fill]="s.color">
27
- <svg:title>{{ s.title }}</svg:title>
28
- </svg:path>
29
- }
30
- </skdx-chart-root>
31
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxPieChartComponent, isStandalone: true, selector: "skdx-pie-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, startAngle: { classPropertyName: "startAngle", publicName: "startAngle", isSignal: true, isRequired: false, transformFunction: null }, endAngle: { classPropertyName: "endAngle", publicName: "endAngle", isSignal: true, isRequired: false, transformFunction: null }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
44
+ <skdx-chart-root
45
+ [layout]="layout()"
46
+ kind="pie"
47
+ [label]="label() ?? 'Pie chart'"
48
+ [zoomable]="zoomable()"
49
+ [responsive]="responsive()"
50
+ (itemClick)="itemClick.emit($event)"
51
+ (hiddenSeriesChange)="toggle($event)"
52
+ (zoomChange)="zoom.set($event)"
53
+ (measured)="measuredWidth.set($event)"
54
+ ></skdx-chart-root>
55
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
56
  }
33
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxPieChartComponent, decorators: [{
34
58
  type: Component,
@@ -38,22 +62,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
38
62
  changeDetection: ChangeDetectionStrategy.OnPush,
39
63
  imports: [SkdxChartRootComponent],
40
64
  template: `
41
- <skdx-chart-root [layout]="layout()" kind="pie" [label]="label() ?? 'Pie chart'">
42
- @for (s of layout().slices; track s.name) {
43
- <svg:path data-skdx-part="slice" [attr.d]="s.d" [attr.fill]="s.color">
44
- <svg:title>{{ s.title }}</svg:title>
45
- </svg:path>
46
- }
47
- </skdx-chart-root>
65
+ <skdx-chart-root
66
+ [layout]="layout()"
67
+ kind="pie"
68
+ [label]="label() ?? 'Pie chart'"
69
+ [zoomable]="zoomable()"
70
+ [responsive]="responsive()"
71
+ (itemClick)="itemClick.emit($event)"
72
+ (hiddenSeriesChange)="toggle($event)"
73
+ (zoomChange)="zoom.set($event)"
74
+ (measured)="measuredWidth.set($event)"
75
+ ></skdx-chart-root>
48
76
  `,
49
77
  }]
50
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }] } });
51
-
52
- /*
53
- * Copyright (c) 2026 SkandaDX
54
- * This file is part of the SkandaDX organization.
55
- * Licensed under the MIT License. See LICENSE in the repository root.
56
- */
78
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], startAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAngle", required: false }] }], endAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "endAngle", required: false }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }] } });
57
79
 
58
80
  /**
59
81
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-pie.mjs","sources":["../../src/pie/pie-chart.component.ts","../../src/pie/index.ts","../../src/pie/skdx-angular-charts-pie.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutPieChart,\n type Datum,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** A pie, or a donut when `innerRadius` is set; one slice per datum. */\n@Component({\n selector: 'skdx-pie-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"layout()\" kind=\"pie\" [label]=\"label() ?? 'Pie chart'\">\n @for (s of layout().slices; track s.name) {\n <svg:path data-skdx-part=\"slice\" [attr.d]=\"s.d\" [attr.fill]=\"s.color\">\n <svg:title>{{ s.title }}</svg:title>\n </svg:path>\n }\n </skdx-chart-root>\n `,\n})\nexport class SkdxPieChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */\n readonly innerRadius = input<number>();\n\n protected readonly layout = computed(() =>\n layoutPieChart({ ...this.sized(), data: this.data(), innerRadius: this.innerRadius() }),\n );\n}\n","/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nexport { SkdxPieChartComponent } from './pie-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAgBM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAfxD,IAAA,WAAA,GAAA;;QAgBW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;;AAEhC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAAU;AAEnB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;mFACxF;AACF,IAAA;8GARY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVtB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAWrB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACF,iBAAA;;;AC9BD;;;;AAIG;;ACJH;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-pie.mjs","sources":["../../src/pie/index.ts","../../src/pie/skdx-angular-charts-pie.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutPieChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Datum,\n} from '@skdx/angular-charts/internal';\n\n/** A pie, a donut when `innerRadius` is set, or a half circle with `startAngle`/`endAngle`; one slice per datum. */\n@Component({\n selector: 'skdx-pie-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"pie\"\n [label]=\"label() ?? 'Pie chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxPieChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */\n readonly innerRadius = input<number>();\n /** Write each slice's name and share on the slice. */\n readonly labels = input(false);\n /** Degrees clockwise from 12 o'clock where the first slice starts. */\n readonly startAngle = input<number>();\n /** Degrees where the last slice ends; -90/90 makes a half circle. */\n readonly endAngle = input<number>();\n /** Text in the middle of a donut. */\n readonly centerLabel = input<string>();\n\n protected readonly layout = computed(() =>\n layoutPieChart({\n ...this.sized(),\n data: this.data(),\n innerRadius: this.innerRadius(),\n labels: this.labels(),\n startAngle: this.startAngle(),\n endAngle: this.endAngle(),\n centerLabel: this.centerLabel(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { SkdxSizedBase, CHART_COLORS, layoutRadarChart, SkdxChartRootComponent, SkdxChartPointsComponent } from '@skdx/angular-charts/internal';
3
+ import { SkdxSizedBase, layoutRadarChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
4
 
5
5
  /*
6
6
  * Copyright (c) 2026 SkandaDX
@@ -13,49 +13,41 @@ class SkdxRadarChartComponent extends SkdxSizedBase {
13
13
  super(...arguments);
14
14
  this.series = input.required(/* @ts-ignore */
15
15
  ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
16
- /** One axis per category. */
17
16
  this.categories = input.required(/* @ts-ignore */
18
17
  ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
19
- this.colors = CHART_COLORS;
20
- this.l = computed(() => layoutRadarChart({ ...this.sized(), series: this.series(), categories: this.categories() }), /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
18
+ /** Scale every series to its own maximum, so rings read as percentages. */
19
+ this.normalize = input(false, /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "normalize" }] : /* istanbul ignore next */ []));
21
+ /** Outer ring value. */
22
+ this.max = input(/* @ts-ignore */
23
+ ...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
24
+ /** Fill the polygons. */
25
+ this.fill = input(true, /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "fill" }] : /* istanbul ignore next */ []));
27
+ this.layout = computed(() => layoutRadarChart({
28
+ ...this.sized(),
29
+ series: this.series(),
30
+ categories: this.categories(),
31
+ normalize: this.normalize(),
32
+ max: this.max(),
33
+ fill: this.fill(),
34
+ }), /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
22
36
  }
23
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxRadarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SkdxRadarChartComponent, isStandalone: true, selector: "skdx-radar-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
25
- <skdx-chart-root [layout]="l()" kind="radar" [label]="label() ?? 'Radar chart'">
26
- <svg:g data-skdx-part="grid" [attr.stroke]="colors.grid" fill="none">
27
- @for (r of l().rings; track r.label.label) {
28
- <svg:path [attr.d]="r.d"></svg:path>
29
- }
30
- @for (s of l().spokes; track $index) {
31
- <svg:line [attr.x1]="s.x1" [attr.y1]="s.y1" [attr.x2]="s.x2" [attr.y2]="s.y2"></svg:line>
32
- }
33
- </svg:g>
34
- <svg:g data-skdx-part="y-labels" [attr.fill]="colors.label" dominant-baseline="middle">
35
- @for (r of l().rings; track r.label.label) {
36
- <svg:text [attr.x]="r.label.x" [attr.y]="r.label.y">{{ r.label.label }}</svg:text>
37
- }
38
- </svg:g>
39
- <svg:g data-skdx-part="x-labels" [attr.fill]="colors.label" dominant-baseline="middle">
40
- @for (a of l().axisLabels; track a.label) {
41
- <svg:text [attr.x]="a.x" [attr.y]="a.y" [attr.text-anchor]="a.anchor">
42
- {{ a.label }}
43
- </svg:text>
44
- }
45
- </svg:g>
46
- @for (p of l().polygons; track p.series) {
47
- <svg:path
48
- data-skdx-part="area"
49
- [attr.d]="p.d"
50
- [attr.fill]="p.color"
51
- fill-opacity="0.25"
52
- [attr.stroke]="p.color"
53
- stroke-width="2"
54
- ></svg:path>
55
- }
56
- <svg:g skdxChartPoints [points]="l().points"></svg:g>
57
- </skdx-chart-root>
58
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }, { kind: "component", type: SkdxChartPointsComponent, selector: "g[skdxChartPoints]", inputs: ["points"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxRadarChartComponent, isStandalone: true, selector: "skdx-radar-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null }, categories: { classPropertyName: "categories", publicName: "categories", isSignal: true, isRequired: true, transformFunction: null }, normalize: { classPropertyName: "normalize", publicName: "normalize", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
39
+ <skdx-chart-root
40
+ [layout]="layout()"
41
+ kind="radar"
42
+ [label]="label() ?? 'Radar chart'"
43
+ [zoomable]="zoomable()"
44
+ [responsive]="responsive()"
45
+ (itemClick)="itemClick.emit($event)"
46
+ (hiddenSeriesChange)="toggle($event)"
47
+ (zoomChange)="zoom.set($event)"
48
+ (measured)="measuredWidth.set($event)"
49
+ ></skdx-chart-root>
50
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
51
  }
60
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxRadarChartComponent, decorators: [{
61
53
  type: Component,
@@ -63,50 +55,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
63
55
  selector: 'skdx-radar-chart',
64
56
  standalone: true,
65
57
  changeDetection: ChangeDetectionStrategy.OnPush,
66
- imports: [SkdxChartRootComponent, SkdxChartPointsComponent],
58
+ imports: [SkdxChartRootComponent],
67
59
  template: `
68
- <skdx-chart-root [layout]="l()" kind="radar" [label]="label() ?? 'Radar chart'">
69
- <svg:g data-skdx-part="grid" [attr.stroke]="colors.grid" fill="none">
70
- @for (r of l().rings; track r.label.label) {
71
- <svg:path [attr.d]="r.d"></svg:path>
72
- }
73
- @for (s of l().spokes; track $index) {
74
- <svg:line [attr.x1]="s.x1" [attr.y1]="s.y1" [attr.x2]="s.x2" [attr.y2]="s.y2"></svg:line>
75
- }
76
- </svg:g>
77
- <svg:g data-skdx-part="y-labels" [attr.fill]="colors.label" dominant-baseline="middle">
78
- @for (r of l().rings; track r.label.label) {
79
- <svg:text [attr.x]="r.label.x" [attr.y]="r.label.y">{{ r.label.label }}</svg:text>
80
- }
81
- </svg:g>
82
- <svg:g data-skdx-part="x-labels" [attr.fill]="colors.label" dominant-baseline="middle">
83
- @for (a of l().axisLabels; track a.label) {
84
- <svg:text [attr.x]="a.x" [attr.y]="a.y" [attr.text-anchor]="a.anchor">
85
- {{ a.label }}
86
- </svg:text>
87
- }
88
- </svg:g>
89
- @for (p of l().polygons; track p.series) {
90
- <svg:path
91
- data-skdx-part="area"
92
- [attr.d]="p.d"
93
- [attr.fill]="p.color"
94
- fill-opacity="0.25"
95
- [attr.stroke]="p.color"
96
- stroke-width="2"
97
- ></svg:path>
98
- }
99
- <svg:g skdxChartPoints [points]="l().points"></svg:g>
100
- </skdx-chart-root>
60
+ <skdx-chart-root
61
+ [layout]="layout()"
62
+ kind="radar"
63
+ [label]="label() ?? 'Radar chart'"
64
+ [zoomable]="zoomable()"
65
+ [responsive]="responsive()"
66
+ (itemClick)="itemClick.emit($event)"
67
+ (hiddenSeriesChange)="toggle($event)"
68
+ (zoomChange)="zoom.set($event)"
69
+ (measured)="measuredWidth.set($event)"
70
+ ></skdx-chart-root>
101
71
  `,
102
72
  }]
103
- }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }], categories: [{ type: i0.Input, args: [{ isSignal: true, alias: "categories", required: true }] }] } });
104
-
105
- /*
106
- * Copyright (c) 2026 SkandaDX
107
- * This file is part of the SkandaDX organization.
108
- * Licensed under the MIT License. See LICENSE in the repository root.
109
- */
73
+ }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }], categories: [{ type: i0.Input, args: [{ isSignal: true, alias: "categories", required: true }] }], normalize: [{ type: i0.Input, args: [{ isSignal: true, alias: "normalize", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }] } });
110
74
 
111
75
  /**
112
76
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-radar.mjs","sources":["../../src/radar/radar-chart.component.ts","../../src/radar/index.ts","../../src/radar/skdx-angular-charts-radar.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n CHART_COLORS,\n layoutRadarChart,\n type Series,\n SkdxChartPointsComponent,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** One polygon per series over a spoke per category. */\n@Component({\n selector: 'skdx-radar-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent, SkdxChartPointsComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"radar\" [label]=\"label() ?? 'Radar chart'\">\n <svg:g data-skdx-part=\"grid\" [attr.stroke]=\"colors.grid\" fill=\"none\">\n @for (r of l().rings; track r.label.label) {\n <svg:path [attr.d]=\"r.d\"></svg:path>\n }\n @for (s of l().spokes; track $index) {\n <svg:line [attr.x1]=\"s.x1\" [attr.y1]=\"s.y1\" [attr.x2]=\"s.x2\" [attr.y2]=\"s.y2\"></svg:line>\n }\n </svg:g>\n <svg:g data-skdx-part=\"y-labels\" [attr.fill]=\"colors.label\" dominant-baseline=\"middle\">\n @for (r of l().rings; track r.label.label) {\n <svg:text [attr.x]=\"r.label.x\" [attr.y]=\"r.label.y\">{{ r.label.label }}</svg:text>\n }\n </svg:g>\n <svg:g data-skdx-part=\"x-labels\" [attr.fill]=\"colors.label\" dominant-baseline=\"middle\">\n @for (a of l().axisLabels; track a.label) {\n <svg:text [attr.x]=\"a.x\" [attr.y]=\"a.y\" [attr.text-anchor]=\"a.anchor\">\n {{ a.label }}\n </svg:text>\n }\n </svg:g>\n @for (p of l().polygons; track p.series) {\n <svg:path\n data-skdx-part=\"area\"\n [attr.d]=\"p.d\"\n [attr.fill]=\"p.color\"\n fill-opacity=\"0.25\"\n [attr.stroke]=\"p.color\"\n stroke-width=\"2\"\n ></svg:path>\n }\n <svg:g skdxChartPoints [points]=\"l().points\"></svg:g>\n </skdx-chart-root>\n `,\n})\nexport class SkdxRadarChartComponent extends SkdxSizedBase {\n readonly series = input.required<Series[]>();\n /** One axis per category. */\n readonly categories = input.required<string[]>();\n\n protected readonly colors = CHART_COLORS;\n protected readonly l = computed(() =>\n layoutRadarChart({ ...this.sized(), series: this.series(), categories: this.categories() }),\n );\n}\n","/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nexport { SkdxRadarChartComponent } from './radar-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAaH;AA0CM,MAAO,uBAAwB,SAAQ,aAAa,CAAA;AAzC1D,IAAA,WAAA,GAAA;;QA0CW,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ;mFAAY;;QAEnC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ;uFAAY;QAE7B,IAAA,CAAA,MAAM,GAAG,YAAY;AACrB,QAAA,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAC9B,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;8EAC5F;AACF,IAAA;8GATY,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAnCS,sBAAsB,iGAAE,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAqC/C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzCnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;AAC3D,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA;AACF,iBAAA;;;AC1DD;;;;AAIG;;ACJH;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-radar.mjs","sources":["../../src/radar/index.ts","../../src/radar/skdx-angular-charts-radar.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutRadarChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Series,\n} from '@skdx/angular-charts/internal';\n\n/** One polygon per series over a spoke per category. */\n@Component({\n selector: 'skdx-radar-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"radar\"\n [label]=\"label() ?? 'Radar chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxRadarChartComponent extends SkdxSizedBase {\n readonly series = input.required<Series[]>();\n readonly categories = input.required<string[]>();\n /** Scale every series to its own maximum, so rings read as percentages. */\n readonly normalize = input(false);\n /** Outer ring value. */\n readonly max = input<number>();\n /** Fill the polygons. */\n readonly fill = input(true);\n\n protected readonly layout = computed(() =>\n layoutRadarChart({\n ...this.sized(),\n series: this.series(),\n categories: this.categories(),\n normalize: this.normalize(),\n max: this.max(),\n fill: this.fill(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutRadialBar, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
+
5
+ /*
6
+ * Copyright (c) 2026 SkandaDX
7
+ * This file is part of the SkandaDX organization.
8
+ * Licensed under the MIT License. See LICENSE in the repository root.
9
+ */
10
+ /** Concentric arcs, one per datum, each a share of `max`: KPI completion, utilization, quota, health. */
11
+ class SkdxRadialBarChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.data = input.required(/* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
+ /** The value a full arc represents. */
17
+ this.max = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
19
+ /** Degrees clockwise from 12 o'clock. */
20
+ this.startAngle = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "startAngle" }] : /* istanbul ignore next */ []));
22
+ this.endAngle = input(/* @ts-ignore */
23
+ ...(ngDevMode ? [undefined, { debugName: "endAngle" }] : /* istanbul ignore next */ []));
24
+ /** Hole radius as a fraction of the outer radius. */
25
+ this.innerRadius = input(/* @ts-ignore */
26
+ ...(ngDevMode ? [undefined, { debugName: "innerRadius" }] : /* istanbul ignore next */ []));
27
+ /** Gap between arcs as a fraction of one arc's thickness. */
28
+ this.gap = input(/* @ts-ignore */
29
+ ...(ngDevMode ? [undefined, { debugName: "gap" }] : /* istanbul ignore next */ []));
30
+ /** Draw the full-range track behind each arc. */
31
+ this.track = input(true, /* @ts-ignore */
32
+ ...(ngDevMode ? [{ debugName: "track" }] : /* istanbul ignore next */ []));
33
+ /** Round the arc ends. */
34
+ this.rounded = input(true, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "rounded" }] : /* istanbul ignore next */ []));
36
+ /** Write each name and value at the arc start. */
37
+ this.labels = input(false, /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
39
+ /** Threshold sectors outside the arcs, in value units. */
40
+ this.bands = input(/* @ts-ignore */
41
+ ...(ngDevMode ? [undefined, { debugName: "bands" }] : /* istanbul ignore next */ []));
42
+ /** A tick across every arc at this value. */
43
+ this.target = input(/* @ts-ignore */
44
+ ...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
45
+ /** Text in the middle, e.g. the headline value. */
46
+ this.centerLabel = input(/* @ts-ignore */
47
+ ...(ngDevMode ? [undefined, { debugName: "centerLabel" }] : /* istanbul ignore next */ []));
48
+ this.layout = computed(() => layoutRadialBar({
49
+ ...this.sized(),
50
+ data: this.data(),
51
+ max: this.max(),
52
+ startAngle: this.startAngle(),
53
+ endAngle: this.endAngle(),
54
+ innerRadius: this.innerRadius(),
55
+ gap: this.gap(),
56
+ track: this.track(),
57
+ rounded: this.rounded(),
58
+ labels: this.labels(),
59
+ bands: this.bands(),
60
+ target: this.target(),
61
+ centerLabel: this.centerLabel(),
62
+ }), /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxRadialBarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxRadialBarChartComponent, isStandalone: true, selector: "skdx-radial-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, startAngle: { classPropertyName: "startAngle", publicName: "startAngle", isSignal: true, isRequired: false, transformFunction: null }, endAngle: { classPropertyName: "endAngle", publicName: "endAngle", isSignal: true, isRequired: false, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, track: { classPropertyName: "track", publicName: "track", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, bands: { classPropertyName: "bands", publicName: "bands", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
67
+ <skdx-chart-root
68
+ [layout]="layout()"
69
+ kind="radial"
70
+ [label]="label() ?? 'Radial bar chart'"
71
+ [zoomable]="zoomable()"
72
+ [responsive]="responsive()"
73
+ (itemClick)="itemClick.emit($event)"
74
+ (hiddenSeriesChange)="toggle($event)"
75
+ (zoomChange)="zoom.set($event)"
76
+ (measured)="measuredWidth.set($event)"
77
+ ></skdx-chart-root>
78
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxRadialBarChartComponent, decorators: [{
81
+ type: Component,
82
+ args: [{
83
+ selector: 'skdx-radial-bar-chart',
84
+ standalone: true,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ imports: [SkdxChartRootComponent],
87
+ template: `
88
+ <skdx-chart-root
89
+ [layout]="layout()"
90
+ kind="radial"
91
+ [label]="label() ?? 'Radial bar chart'"
92
+ [zoomable]="zoomable()"
93
+ [responsive]="responsive()"
94
+ (itemClick)="itemClick.emit($event)"
95
+ (hiddenSeriesChange)="toggle($event)"
96
+ (zoomChange)="zoom.set($event)"
97
+ (measured)="measuredWidth.set($event)"
98
+ ></skdx-chart-root>
99
+ `,
100
+ }]
101
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], startAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAngle", required: false }] }], endAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "endAngle", required: false }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], track: [{ type: i0.Input, args: [{ isSignal: true, alias: "track", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], bands: [{ type: i0.Input, args: [{ isSignal: true, alias: "bands", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }] } });
102
+
103
+ /**
104
+ * Generated bundle index. Do not edit.
105
+ */
106
+
107
+ export { SkdxRadialBarChartComponent };
108
+ //# sourceMappingURL=skdx-angular-charts-radial.mjs.map