@skdx/angular-charts 0.1.0 → 0.32.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/fesm2022/skdx-angular-charts-area.mjs +32 -14
  2. package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
  3. package/fesm2022/skdx-angular-charts-bar.mjs +38 -14
  4. package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
  5. package/fesm2022/skdx-angular-charts-boxplot.mjs +10 -10
  6. package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
  7. package/fesm2022/skdx-angular-charts-candlestick.mjs +10 -10
  8. package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
  9. package/fesm2022/skdx-angular-charts-chord.mjs +10 -10
  10. package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
  11. package/fesm2022/skdx-angular-charts-funnel.mjs +43 -11
  12. package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
  13. package/fesm2022/skdx-angular-charts-gantt.mjs +10 -10
  14. package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
  15. package/fesm2022/skdx-angular-charts-heatmap.mjs +69 -4
  16. package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
  17. package/fesm2022/skdx-angular-charts-internal.mjs +411 -235
  18. package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
  19. package/fesm2022/skdx-angular-charts-line.mjs +15 -13
  20. package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
  21. package/fesm2022/skdx-angular-charts-map.mjs +8 -2
  22. package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
  23. package/fesm2022/skdx-angular-charts-pie.mjs +21 -11
  24. package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
  25. package/fesm2022/skdx-angular-charts-radar.mjs +77 -14
  26. package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
  27. package/fesm2022/skdx-angular-charts-sankey.mjs +10 -10
  28. package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
  29. package/fesm2022/skdx-angular-charts-scatter.mjs +15 -13
  30. package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
  31. package/fesm2022/skdx-angular-charts-sparkline.mjs +55 -11
  32. package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
  33. package/fesm2022/skdx-angular-charts-sunburst.mjs +10 -10
  34. package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
  35. package/fesm2022/skdx-angular-charts-treemap.mjs +10 -2
  36. package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
  37. package/fesm2022/skdx-angular-charts-waterfall.mjs +10 -10
  38. package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
  39. package/fesm2022/skdx-angular-charts.mjs.map +1 -1
  40. package/package.json +11 -2
  41. package/types/skdx-angular-charts-area.d.ts +1 -1
  42. package/types/skdx-angular-charts-bar.d.ts +1 -1
  43. package/types/skdx-angular-charts-funnel.d.ts +1 -1
  44. package/types/skdx-angular-charts-heatmap.d.ts +8 -1
  45. package/types/skdx-angular-charts-internal.d.ts +200 -26
  46. package/types/skdx-angular-charts-line.d.ts +1 -1
  47. package/types/skdx-angular-charts-pie.d.ts +1 -1
  48. package/types/skdx-angular-charts-radar.d.ts +8 -1
  49. package/types/skdx-angular-charts-scatter.d.ts +1 -1
  50. package/types/skdx-angular-charts-sparkline.d.ts +1 -1
  51. package/types/skdx-angular-charts.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-sunburst.mjs","sources":["../../src/sunburst/index.ts","../../src/sunburst/skdx-angular-charts-sunburst.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 layoutSunburst,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type TreeNode,\n} from '@skdx/angular-charts/internal';\n\n/** Nested rings, one per tree depth, children within their parent span. */\n@Component({\n selector: 'skdx-sunburst-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"l()\"\n kind=\"sunburst\"\n [label]=\"label() ?? 'Sunburst chart'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSunburstChartComponent extends SkdxSizedBase {\n readonly data = input.required<TreeNode[]>();\n\n protected readonly l = computed(() => layoutSunburst({ ...this.sized(), data: this.data() }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAcM,MAAO,0BAA2B,SAAQ,aAAa,CAAA;AAb7D,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAc;QAEzB,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;8EAAC;AAC9F,IAAA;8GAJY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAR3B;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,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;;2FASrB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;AACF,iBAAA;;;AC5BD;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-sunburst.mjs","sources":["../../src/sunburst/sunburst-chart.component.ts","../../src/sunburst/index.ts","../../src/sunburst/skdx-angular-charts-sunburst.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 layoutSunburst,\n type TreeNode,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Nested rings, one per tree depth, children within their parent span. */\n@Component({\n selector: 'skdx-sunburst-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"sunburst\" [label]=\"label() ?? 'Sunburst chart'\">\n </skdx-chart-root>\n `,\n})\nexport class SkdxSunburstChartComponent extends SkdxSizedBase {\n readonly data = input.required<TreeNode[]>();\n\n protected readonly l = computed(() => layoutSunburst({ ...this.sized(), data: this.data() }));\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 { SkdxSunburstChartComponent } from './sunburst-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAWM,MAAO,0BAA2B,SAAQ,aAAa,CAAA;AAV7D,IAAA,WAAA,GAAA;;QAWW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAc;QAEzB,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;8EAAC;AAC9F,IAAA;8GAJY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAL3B;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJS,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;;2FAMrB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAVtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;AAGT,EAAA,CAAA;AACF,iBAAA;;;ACzBD;;;;AAIG;;ACJH;;AAEG;;"}
@@ -18,7 +18,8 @@ class SkdxTreemapComponent extends SkdxSizedBase {
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxTreemapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
20
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxTreemapComponent, isStandalone: true, selector: "skdx-treemap", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
21
- <skdx-chart-root [layout]="l()" kind="treemap" [label]="label() ?? 'Treemap'"></skdx-chart-root>
21
+ <skdx-chart-root [layout]="l()" kind="treemap" [label]="label() ?? 'Treemap'">
22
+ </skdx-chart-root>
22
23
  `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
24
  }
24
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxTreemapComponent, decorators: [{
@@ -29,11 +30,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
29
30
  changeDetection: ChangeDetectionStrategy.OnPush,
30
31
  imports: [SkdxChartRootComponent],
31
32
  template: `
32
- <skdx-chart-root [layout]="l()" kind="treemap" [label]="label() ?? 'Treemap'"></skdx-chart-root>
33
+ <skdx-chart-root [layout]="l()" kind="treemap" [label]="label() ?? 'Treemap'">
34
+ </skdx-chart-root>
33
35
  `,
34
36
  }]
35
37
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
36
38
 
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
+
37
45
  /**
38
46
  * Generated bundle index. Do not edit.
39
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-treemap.mjs","sources":["../../src/treemap/index.ts","../../src/treemap/skdx-angular-charts-treemap.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 type Datum,\n layoutTreemap,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Squarified tiles, one per datum, sized by value. */\n@Component({\n selector: 'skdx-treemap',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"treemap\" [label]=\"label() ?? 'Treemap'\"></skdx-chart-root>\n `,\n})\nexport class SkdxTreemapComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n\n protected readonly l = computed(() => layoutTreemap({ ...this.sized(), data: this.data() }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAUM,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AATvD,IAAA,WAAA,GAAA;;QAUW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;QAEtB,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;8EAAC;AAC7F,IAAA;8GAJY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJrB;;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,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,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;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-treemap.mjs","sources":["../../src/treemap/treemap.component.ts","../../src/treemap/index.ts","../../src/treemap/skdx-angular-charts-treemap.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 layoutTreemap,\n type Datum,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Squarified tiles, one per datum, sized by value. */\n@Component({\n selector: 'skdx-treemap',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"treemap\" [label]=\"label() ?? 'Treemap'\">\n </skdx-chart-root>\n `,\n})\nexport class SkdxTreemapComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n\n protected readonly l = computed(() => layoutTreemap({ ...this.sized(), data: this.data() }));\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 { SkdxTreemapComponent } from './treemap.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAWM,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAVvD,IAAA,WAAA,GAAA;;QAWW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;QAEtB,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;8EAAC;AAC7F,IAAA;8GAJY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALrB;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJS,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;;2FAMrB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;AAGT,EAAA,CAAA;AACF,iBAAA;;;ACzBD;;;;AAIG;;ACJH;;AAEG;;"}
@@ -21,11 +21,8 @@ class SkdxWaterfallChartComponent extends SkdxSizedBase {
21
21
  }
22
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxWaterfallChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
23
23
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxWaterfallChartComponent, isStandalone: true, selector: "skdx-waterfall-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
24
- <skdx-chart-root
25
- [layout]="l()"
26
- kind="waterfall"
27
- [label]="label() ?? 'Waterfall chart'"
28
- ></skdx-chart-root>
24
+ <skdx-chart-root [layout]="l()" kind="waterfall" [label]="label() ?? 'Waterfall chart'">
25
+ </skdx-chart-root>
29
26
  `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
27
  }
31
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxWaterfallChartComponent, decorators: [{
@@ -36,15 +33,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
36
33
  changeDetection: ChangeDetectionStrategy.OnPush,
37
34
  imports: [SkdxChartRootComponent],
38
35
  template: `
39
- <skdx-chart-root
40
- [layout]="l()"
41
- kind="waterfall"
42
- [label]="label() ?? 'Waterfall chart'"
43
- ></skdx-chart-root>
36
+ <skdx-chart-root [layout]="l()" kind="waterfall" [label]="label() ?? 'Waterfall chart'">
37
+ </skdx-chart-root>
44
38
  `,
45
39
  }]
46
40
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], total: [{ type: i0.Input, args: [{ isSignal: true, alias: "total", required: false }] }] } });
47
41
 
42
+ /*
43
+ * Copyright (c) 2026 SkandaDX
44
+ * This file is part of the SkandaDX organization.
45
+ * Licensed under the MIT License. See LICENSE in the repository root.
46
+ */
47
+
48
48
  /**
49
49
  * Generated bundle index. Do not edit.
50
50
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-waterfall.mjs","sources":["../../src/waterfall/index.ts","../../src/waterfall/skdx-angular-charts-waterfall.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 type Datum,\n layoutWaterfall,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Signed deltas stacked on a running total. */\n@Component({\n selector: 'skdx-waterfall-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"l()\"\n kind=\"waterfall\"\n [label]=\"label() ?? 'Waterfall chart'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxWaterfallChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** Label of a final bar showing the running total. */\n readonly total = input<string>();\n\n protected readonly l = computed(() =>\n layoutWaterfall({ ...this.sized(), data: this.data(), total: this.total() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAcM,MAAO,2BAA4B,SAAQ,aAAa,CAAA;AAb9D,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AAEb,QAAA,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAC9B,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;8EAC7E;AACF,IAAA;8GARY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,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,EAR5B;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,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;;2FASrB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAbvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;AACF,iBAAA;;;AC5BD;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-waterfall.mjs","sources":["../../src/waterfall/waterfall-chart.component.ts","../../src/waterfall/index.ts","../../src/waterfall/skdx-angular-charts-waterfall.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 layoutWaterfall,\n type Datum,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Signed deltas stacked on a running total. */\n@Component({\n selector: 'skdx-waterfall-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"waterfall\" [label]=\"label() ?? 'Waterfall chart'\">\n </skdx-chart-root>\n `,\n})\nexport class SkdxWaterfallChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** Label of a final bar showing the running total. */\n readonly total = input<string>();\n\n protected readonly l = computed(() =>\n layoutWaterfall({ ...this.sized(), data: this.data(), total: this.total() }),\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 { SkdxWaterfallChartComponent } from './waterfall-chart.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAWM,MAAO,2BAA4B,SAAQ,aAAa,CAAA;AAV9D,IAAA,WAAA,GAAA;;QAWW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AAEb,QAAA,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAC9B,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;8EAC7E;AACF,IAAA;8GARY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,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,EAL5B;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJS,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;;2FAMrB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;AAGT,EAAA,CAAA;AACF,iBAAA;;;ACzBD;;;;AAIG;;ACJH;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts.mjs","sources":["../../src/public-api.ts","../../src/skdx-angular-charts.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\nexport { SkdxBarChartComponent } from '@skdx/angular-charts/bar';\nexport { SkdxLineChartComponent } from '@skdx/angular-charts/line';\nexport { SkdxAreaChartComponent } from '@skdx/angular-charts/area';\nexport { SkdxPieChartComponent } from '@skdx/angular-charts/pie';\nexport { SkdxScatterChartComponent } from '@skdx/angular-charts/scatter';\nexport { SkdxSparklineComponent } from '@skdx/angular-charts/sparkline';\nexport { SkdxRadarChartComponent } from '@skdx/angular-charts/radar';\nexport { SkdxHeatmapComponent } from '@skdx/angular-charts/heatmap';\nexport { SkdxFunnelChartComponent } from '@skdx/angular-charts/funnel';\nexport { SkdxSankeyChartComponent } from '@skdx/angular-charts/sankey';\nexport { SkdxTreemapComponent } from '@skdx/angular-charts/treemap';\nexport { SkdxCandlestickChartComponent } from '@skdx/angular-charts/candlestick';\nexport { SkdxWaterfallChartComponent } from '@skdx/angular-charts/waterfall';\nexport { SkdxGanttChartComponent } from '@skdx/angular-charts/gantt';\nexport { SkdxBoxplotComponent } from '@skdx/angular-charts/boxplot';\nexport { SkdxSunburstChartComponent } from '@skdx/angular-charts/sunburst';\nexport { SkdxChordChartComponent } from '@skdx/angular-charts/chord';\nexport { SkdxMapChartComponent } from '@skdx/angular-charts/map';\nexport type {\n Candle,\n Datum,\n GanttTask,\n GeoMultiPolygon,\n GeoPolygon,\n MapFeature,\n SankeyLink,\n ScatterSeries,\n Series,\n TreeNode,\n} from '@skdx/angular-charts/internal';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;AAIG;;ACJH;;AAEG"}
1
+ {"version":3,"file":"skdx-angular-charts.mjs","sources":["../../src/public-api.ts","../../src/skdx-angular-charts.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\nexport { SkdxBarChartComponent } from '@skdx/angular-charts/bar';\nexport { SkdxLineChartComponent } from '@skdx/angular-charts/line';\nexport { SkdxAreaChartComponent } from '@skdx/angular-charts/area';\nexport { SkdxPieChartComponent } from '@skdx/angular-charts/pie';\nexport { SkdxScatterChartComponent } from '@skdx/angular-charts/scatter';\nexport { SkdxSparklineComponent } from '@skdx/angular-charts/sparkline';\nexport { SkdxRadarChartComponent } from '@skdx/angular-charts/radar';\nexport { SkdxHeatmapComponent } from '@skdx/angular-charts/heatmap';\nexport { SkdxFunnelChartComponent } from '@skdx/angular-charts/funnel';\nexport { SkdxSankeyChartComponent } from '@skdx/angular-charts/sankey';\nexport { SkdxTreemapComponent } from '@skdx/angular-charts/treemap';\nexport { SkdxCandlestickChartComponent } from '@skdx/angular-charts/candlestick';\nexport { SkdxWaterfallChartComponent } from '@skdx/angular-charts/waterfall';\nexport { SkdxGanttChartComponent } from '@skdx/angular-charts/gantt';\nexport { SkdxBoxplotComponent } from '@skdx/angular-charts/boxplot';\nexport { SkdxSunburstChartComponent } from '@skdx/angular-charts/sunburst';\nexport { SkdxChordChartComponent } from '@skdx/angular-charts/chord';\nexport { SkdxMapChartComponent } from '@skdx/angular-charts/map';\nexport type {\n Candle,\n Datum,\n GanttTask,\n GeoMultiPolygon,\n GeoPolygon,\n MapFeature,\n SankeyLink,\n ScatterSeries,\n Series,\n Shape,\n TreeNode,\n} from '@skdx/angular-charts/internal';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;AAIG;;ACJH;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skdx/angular-charts",
3
- "version": "0.1.0",
3
+ "version": "0.32.0",
4
4
  "description": "Eighteen SVG charts as standalone Angular components, from bar and line to sankey, sunburst and choropleth map — colored by @skdx/tokens",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -20,11 +20,20 @@
20
20
  "peerDependencies": {
21
21
  "@angular/common": "^22.0.0",
22
22
  "@angular/core": "^22.0.0",
23
- "@skdx/tokens": "^0.33.0"
23
+ "@skdx/tokens": "^0.32.0"
24
24
  },
25
25
  "dependencies": {
26
26
  "tslib": "^2.3.0"
27
27
  },
28
+ "nx": {
29
+ "targets": {
30
+ "sync": {
31
+ "outputs": [
32
+ "{projectRoot}/src/internal/core"
33
+ ]
34
+ }
35
+ }
36
+ },
28
37
  "module": "fesm2022/skdx-angular-charts.mjs",
29
38
  "typings": "types/skdx-angular-charts.d.ts",
30
39
  "exports": {
@@ -4,7 +4,7 @@ import { SkdxChartBase } from '@skdx/angular-charts/internal';
4
4
 
5
5
  /** A line chart with each series filled down to the zero baseline. */
6
6
  declare class SkdxAreaChartComponent extends SkdxChartBase {
7
- protected readonly layout: i0.Signal<_skdx_angular_charts_internal.Canvas>;
7
+ protected readonly layout: i0.Signal<_skdx_angular_charts_internal.AreaChartLayout>;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SkdxAreaChartComponent, never>;
9
9
  static ɵcmp: i0.ɵɵComponentDeclaration<SkdxAreaChartComponent, "skdx-area-chart", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -12,7 +12,7 @@ import * as _angular_core from '@angular/core';
12
12
  declare class SkdxBarChartComponent extends SkdxChartBase {
13
13
  /** Stack series on top of each other instead of grouping them side by side. */
14
14
  readonly stacked: _angular_core.InputSignal<boolean>;
15
- protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
15
+ protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.BarChartLayout>;
16
16
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxBarChartComponent, never>;
17
17
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxBarChartComponent, "skdx-bar-chart", never, { "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18
18
  }
@@ -5,7 +5,7 @@ import * as _angular_core from '@angular/core';
5
5
  /** Centered stages, each narrowing toward the next, labelled in place. */
6
6
  declare class SkdxFunnelChartComponent extends SkdxSizedBase {
7
7
  readonly data: _angular_core.InputSignal<Datum[]>;
8
- protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
8
+ protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.FunnelChartLayout>;
9
9
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxFunnelChartComponent, never>;
10
10
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxFunnelChartComponent, "skdx-funnel-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
11
11
  }
@@ -10,7 +10,14 @@ declare class SkdxHeatmapComponent extends SkdxSizedBase {
10
10
  readonly data: _angular_core.InputSignal<number[][]>;
11
11
  /** The cell color; each cell's opacity follows its value. */
12
12
  readonly color: _angular_core.InputSignal<string | undefined>;
13
- protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
13
+ protected readonly colors: {
14
+ readonly axis: "var(--skdx-color-border-strong)";
15
+ readonly grid: "var(--skdx-color-border-subtle)";
16
+ readonly label: "var(--skdx-color-text-muted)";
17
+ readonly fontFamily: "var(--skdx-font-family)";
18
+ readonly fontSize: "var(--skdx-font-size-xs)";
19
+ };
20
+ protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.HeatmapLayout>;
14
21
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxHeatmapComponent, never>;
15
22
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxHeatmapComponent, "skdx-heatmap", never, { "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
23
  }
@@ -1,3 +1,4 @@
1
+ import * as _skdx_angular_charts_internal from '@skdx/angular-charts/internal';
1
2
  import * as _angular_core from '@angular/core';
2
3
 
3
4
  /** One plotted series: a name for the legend/title and a value per category. */
@@ -93,6 +94,11 @@ interface Box {
93
94
  width: number;
94
95
  height: number;
95
96
  }
97
+ interface Label {
98
+ x: number;
99
+ y: number;
100
+ label: string;
101
+ }
96
102
  /** What every axis chart shares: the outer size, the plot box and the axis ticks. */
97
103
  interface Frame extends Canvas {
98
104
  plot: Box;
@@ -101,6 +107,100 @@ interface Frame extends Canvas {
101
107
  /** Pixel y of value 0 (clamped into the plot): where bars and areas start and the x axis is drawn. */
102
108
  baseline: number;
103
109
  }
110
+ interface Mark {
111
+ series: string;
112
+ color: string;
113
+ /** Native tooltip text, e.g. `Sales, Q1: 1,234`. */
114
+ title: string;
115
+ }
116
+ interface BarMark extends Mark, Box {
117
+ category: string;
118
+ value: number;
119
+ }
120
+ interface PointMark extends Mark {
121
+ x: number;
122
+ y: number;
123
+ }
124
+ interface PathMark {
125
+ series: string;
126
+ color: string;
127
+ /** SVG path data. */
128
+ d: string;
129
+ }
130
+ interface SliceMark extends Mark {
131
+ name: string;
132
+ value: number;
133
+ /** 0..1 share of the total. */
134
+ percent: number;
135
+ d: string;
136
+ }
137
+ interface CellMark extends Mark, Box {
138
+ row: string;
139
+ column: string;
140
+ value: number;
141
+ /** 0.15..1, the value's place between the smallest and largest cell. */
142
+ opacity: number;
143
+ }
144
+ interface StageMark extends Mark, Label {
145
+ name: string;
146
+ value: number;
147
+ /** 0..1 share of the first stage. */
148
+ percent: number;
149
+ d: string;
150
+ }
151
+ interface BarChartLayout extends Frame {
152
+ bars: BarMark[];
153
+ }
154
+ interface LineChartLayout extends Frame {
155
+ lines: PathMark[];
156
+ points: PointMark[];
157
+ }
158
+ interface AreaChartLayout extends LineChartLayout {
159
+ areas: PathMark[];
160
+ }
161
+ interface ScatterChartLayout extends Frame {
162
+ points: PointMark[];
163
+ }
164
+ interface PieChartLayout extends Canvas {
165
+ slices: SliceMark[];
166
+ }
167
+ interface SparklineLayout extends Canvas {
168
+ color: string;
169
+ line: string;
170
+ area: string;
171
+ /** The most recent point, drawn as a dot. */
172
+ last: {
173
+ x: number;
174
+ y: number;
175
+ } | undefined;
176
+ }
177
+ interface RadarChartLayout extends Canvas {
178
+ /** Concentric grid polygons, one per tick, innermost first. */
179
+ rings: {
180
+ d: string;
181
+ label: Label;
182
+ }[];
183
+ spokes: {
184
+ x1: number;
185
+ y1: number;
186
+ x2: number;
187
+ y2: number;
188
+ }[];
189
+ axisLabels: (Label & {
190
+ anchor: 'start' | 'middle' | 'end';
191
+ })[];
192
+ polygons: PathMark[];
193
+ points: PointMark[];
194
+ }
195
+ interface HeatmapLayout extends Canvas {
196
+ plot: Box;
197
+ cells: CellMark[];
198
+ rowLabels: Label[];
199
+ columnLabels: Label[];
200
+ }
201
+ interface FunnelChartLayout extends Canvas {
202
+ stages: StageMark[];
203
+ }
104
204
  interface SankeyLink {
105
205
  source: string;
106
206
  target: string;
@@ -196,10 +296,7 @@ type Shape = (ShapeBase & {
196
296
  fill?: string | undefined;
197
297
  stroke?: string | undefined;
198
298
  strokeWidth?: number | undefined;
199
- strokeLinecap?: 'round' | undefined;
200
- strokeLinejoin?: 'round' | undefined;
201
299
  opacity?: number | undefined;
202
- fillOpacity?: number | undefined;
203
300
  }) | (ShapeBase & {
204
301
  kind: 'rect';
205
302
  x: number;
@@ -232,42 +329,78 @@ type Shape = (ShapeBase & {
232
329
  baseline?: 'middle' | 'hanging' | undefined;
233
330
  fill?: string | undefined;
234
331
  });
235
- /** What every layout returns: the outer size, the whole chart as shapes and the tooltip switch. */
332
+ /** What every layout returns: the outer size, decorations (legend, labels) and the tooltip switch. */
236
333
  interface Canvas {
237
334
  width: number;
238
335
  height: number;
239
- /** Everything drawn, back to front: grid, marks, legend and labels. */
336
+ /** Decorations drawn after the marks, back to front: the legend, slice labels, or the whole chart. */
240
337
  shapes: Shape[];
241
338
  tooltip: boolean;
242
339
  }
340
+ /** A chart described entirely as an ordered list of shapes. */
341
+ type ShapeLayout = Canvas;
243
342
  interface LegendItem {
244
343
  name: string;
245
344
  color: string;
246
345
  }
247
346
 
248
- declare function layoutBarChart(input: BarChartInput): Canvas;
347
+ declare function layoutBarChart(input: BarChartInput): BarChartLayout;
348
+
349
+ declare function layoutLineChart(input: LineChartInput): LineChartLayout;
350
+ declare function layoutAreaChart(input: AreaChartInput): AreaChartLayout;
249
351
 
250
- declare function layoutLineChart(input: LineChartInput): Canvas;
251
- declare function layoutAreaChart(input: AreaChartInput): Canvas;
352
+ declare function layoutScatterChart(input: ScatterChartInput): ScatterChartLayout;
252
353
 
253
- declare function layoutScatterChart(input: ScatterChartInput): Canvas;
354
+ declare function layoutPieChart(input: PieChartInput): PieChartLayout;
254
355
 
255
- declare function layoutPieChart(input: PieChartInput): Canvas;
356
+ declare function layoutSparkline(input: SparklineInput): SparklineLayout;
256
357
 
257
- declare function layoutSparkline(input: SparklineInput): Canvas;
358
+ declare function layoutRadarChart(input: RadarChartInput): RadarChartLayout;
258
359
 
259
- declare function layoutRadarChart(input: RadarChartInput): Canvas;
360
+ declare function layoutHeatmap(input: HeatmapInput): HeatmapLayout;
260
361
 
261
- declare function layoutHeatmap(input: HeatmapInput): Canvas;
362
+ declare function layoutFunnelChart(input: FunnelChartInput): FunnelChartLayout;
262
363
 
263
- declare function layoutFunnelChart(input: FunnelChartInput): Canvas;
364
+ /** Maps `[d0, d1]` onto `[r0, r1]` linearly; a zero-width domain maps to `r0`. */
365
+ declare function linearScale([d0, d1]: readonly [number, number], [r0, r1]: readonly [number, number]): (value: number) => number;
366
+ /** Round tick values covering `[min, max]` with a 1/2/5 step, about `count` of them. */
367
+ declare function niceTicks(min: number, max: number, count?: number): number[];
368
+ declare const formatValue: (v: number) => string;
369
+ /** SVG path through the points: straight segments, or a monotone cubic (Fritsch–Carlson) that never overshoots. */
370
+ declare function pathThrough(points: {
371
+ x: number;
372
+ y: number;
373
+ }[], curve?: 'linear' | 'monotone'): string;
374
+ /** Ticks at powers of ten covering `[min, max]` (both > 0), with 2× and 5× steps when a decade or less. */
375
+ declare function logTicks(min: number, max: number): number[];
264
376
 
377
+ /** A tooltip box next to the pointer, kept inside the canvas. */
378
+ declare function tooltipShapes(x: number, y: number, text: string, width: number, height: number): Shape[];
379
+ /** Attributes for the `<svg>` root every framework renders. */
380
+ declare function svgAttrs(frame: {
381
+ width: number;
382
+ height: number;
383
+ }, kind: string, label: string): {
384
+ readonly viewBox: `0 0 ${number} ${number}`;
385
+ readonly width: number;
386
+ readonly height: number;
387
+ readonly role: "img";
388
+ readonly 'aria-label': string;
389
+ readonly 'data-skdx-chart': string;
390
+ readonly 'font-family': "var(--skdx-font-family)";
391
+ readonly 'font-size': "var(--skdx-font-size-xs)";
392
+ };
265
393
  /**
266
394
  * Tooltip shapes for the mark under the pointer, or none. Reads the mark's
267
395
  * `<title>` and converts the pointer position into viewBox units.
268
396
  */
269
397
  declare function hoverTooltip(target: EventTarget | null, svg: Element, clientX: number, clientY: number, width: number, height: number): Shape[];
270
398
 
399
+ /**
400
+ * Series colors, cycling through the `@skdx/tokens` scales so charts follow the
401
+ * active theme. Load `@skdx/tokens/css` (or any theme) for these to resolve.
402
+ */
403
+ declare const SERIES_COLORS: readonly string[];
271
404
  declare const CHART_COLORS: {
272
405
  readonly axis: "var(--skdx-color-border-strong)";
273
406
  readonly grid: "var(--skdx-color-border-subtle)";
@@ -275,25 +408,35 @@ declare const CHART_COLORS: {
275
408
  readonly fontFamily: "var(--skdx-font-family)";
276
409
  readonly fontSize: "var(--skdx-font-size-xs)";
277
410
  };
411
+ declare const seriesColor: (index: number, override?: string | undefined) => string;
278
412
 
279
- declare function layoutSankey(input: SankeyInput): Canvas;
413
+ declare function layoutSankey(input: SankeyInput): ShapeLayout;
280
414
 
281
- declare function layoutTreemap(input: TreemapInput): Canvas;
415
+ declare function layoutTreemap(input: TreemapInput): ShapeLayout;
282
416
 
283
- declare function layoutCandlestick(input: CandlestickInput): Canvas;
417
+ declare function layoutCandlestick(input: CandlestickInput): ShapeLayout;
284
418
 
285
- declare function layoutWaterfall(input: WaterfallInput): Canvas;
419
+ declare function layoutWaterfall(input: WaterfallInput): ShapeLayout;
286
420
 
287
- declare function layoutGantt(input: GanttInput): Canvas;
421
+ declare function layoutGantt(input: GanttInput): ShapeLayout;
288
422
 
289
- declare function layoutBoxplot(input: BoxplotInput): Canvas;
423
+ /** Five-number summary with Tukey fences: whiskers reach the last sample within 1.5 IQR. */
424
+ declare function boxStats(data: number[]): {
425
+ q1: number;
426
+ median: number;
427
+ q3: number;
428
+ low: number;
429
+ high: number;
430
+ outliers: number[];
431
+ };
432
+ declare function layoutBoxplot(input: BoxplotInput): ShapeLayout;
290
433
 
291
- declare function layoutSunburst(input: SunburstInput): Canvas;
434
+ declare function layoutSunburst(input: SunburstInput): ShapeLayout;
292
435
 
293
- declare function layoutChord(input: ChordInput): Canvas;
436
+ declare function layoutChord(input: ChordInput): ShapeLayout;
294
437
 
295
438
  /** Projection fitted to the features' bounds (equirectangular by default, or Mercator); opacity follows the value. */
296
- declare function layoutMap(input: MapInput): Canvas;
439
+ declare function layoutMap(input: MapInput): ShapeLayout;
297
440
 
298
441
  /** The accessible `<svg>` root every chart renders into: projected marks, then decorations, then the hover tooltip. */
299
442
  declare class SkdxChartRootComponent {
@@ -310,9 +453,32 @@ declare class SkdxChartRootComponent {
310
453
  protected readonly tip: _angular_core.WritableSignal<Shape[]>;
311
454
  protected onPointerMove(e: PointerEvent): void;
312
455
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxChartRootComponent, never>;
313
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartRootComponent, "skdx-chart-root", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "kind": { "alias": "kind"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
456
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartRootComponent, "skdx-chart-root", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "kind": { "alias": "kind"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
314
457
  }
315
458
  /** The `<svg>` root, grid, axis and tick labels every axis chart shares; marks are projected. */
459
+ declare class SkdxChartFrameComponent {
460
+ readonly layout: _angular_core.InputSignal<Frame>;
461
+ readonly kind: _angular_core.InputSignal<string>;
462
+ readonly label: _angular_core.InputSignal<string>;
463
+ protected readonly colors: {
464
+ readonly axis: "var(--skdx-color-border-strong)";
465
+ readonly grid: "var(--skdx-color-border-subtle)";
466
+ readonly label: "var(--skdx-color-text-muted)";
467
+ readonly fontFamily: "var(--skdx-font-family)";
468
+ readonly fontSize: "var(--skdx-font-size-xs)";
469
+ };
470
+ protected readonly plot: _angular_core.Signal<_skdx_angular_charts_internal.Box>;
471
+ protected readonly right: _angular_core.Signal<number>;
472
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxChartFrameComponent, never>;
473
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartFrameComponent, "skdx-chart-frame", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "kind": { "alias": "kind"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
474
+ }
475
+ /** A dot per value with its native tooltip. */
476
+ declare class SkdxChartPointsComponent {
477
+ readonly points: _angular_core.InputSignal<PointMark[]>;
478
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxChartPointsComponent, never>;
479
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartPointsComponent, "g[skdxChartPoints]", never, { "points": { "alias": "points"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
480
+ }
481
+ /** Size and label inputs every chart takes. */
316
482
  declare abstract class SkdxSizedBase {
317
483
  readonly width: _angular_core.InputSignal<number | undefined>;
318
484
  readonly height: _angular_core.InputSignal<number | undefined>;
@@ -347,6 +513,14 @@ declare abstract class SkdxChartBase extends SkdxSizedBase {
347
513
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SkdxChartBase, never, never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
348
514
  }
349
515
 
516
+ /** Line strokes plus a dot per value, shared by the line and area charts. */
517
+ declare class SkdxChartLinesComponent {
518
+ readonly lines: _angular_core.InputSignal<PathMark[]>;
519
+ readonly points: _angular_core.InputSignal<PointMark[]>;
520
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxChartLinesComponent, never>;
521
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartLinesComponent, "g[skdxChartLines]", never, { "lines": { "alias": "lines"; "required": true; "isSignal": true; }; "points": { "alias": "points"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
522
+ }
523
+
350
524
  /** Draws a core shape list back to front. */
351
525
  declare class SkdxChartShapesComponent {
352
526
  readonly shapes: _angular_core.InputSignal<Shape[]>;
@@ -354,5 +528,5 @@ declare class SkdxChartShapesComponent {
354
528
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxChartShapesComponent, "g[skdxChartShapes]", never, { "shapes": { "alias": "shapes"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
355
529
  }
356
530
 
357
- export { CHART_COLORS, SkdxChartBase, SkdxChartRootComponent, SkdxChartShapesComponent, SkdxSizedBase, hoverTooltip, layoutAreaChart, layoutBarChart, layoutBoxplot, layoutCandlestick, layoutChord, layoutFunnelChart, layoutGantt, layoutHeatmap, layoutLineChart, layoutMap, layoutPieChart, layoutRadarChart, layoutSankey, layoutScatterChart, layoutSparkline, layoutSunburst, layoutTreemap, layoutWaterfall };
358
- export type { AreaChartInput, BarChartInput, Box, BoxplotInput, Candle, CandlestickInput, Canvas, ChartInput, ChordInput, Curve, Datum, Frame, FunnelChartInput, GanttInput, GanttTask, GeoMultiPolygon, GeoPolygon, HeatmapInput, LegendItem, LineChartInput, MapFeature, MapInput, PieChartInput, RadarChartInput, SankeyInput, SankeyLink, ScatterChartInput, ScatterSeries, Series, Shape, Sized, SparklineInput, SunburstInput, Tick, TreeNode, TreemapInput, WaterfallInput };
531
+ export { CHART_COLORS, SERIES_COLORS, SkdxChartBase, SkdxChartFrameComponent, SkdxChartLinesComponent, SkdxChartPointsComponent, SkdxChartRootComponent, SkdxChartShapesComponent, SkdxSizedBase, boxStats, formatValue, hoverTooltip, layoutAreaChart, layoutBarChart, layoutBoxplot, layoutCandlestick, layoutChord, layoutFunnelChart, layoutGantt, layoutHeatmap, layoutLineChart, layoutMap, layoutPieChart, layoutRadarChart, layoutSankey, layoutScatterChart, layoutSparkline, layoutSunburst, layoutTreemap, layoutWaterfall, linearScale, logTicks, niceTicks, pathThrough, seriesColor, svgAttrs, tooltipShapes };
532
+ export type { AreaChartInput, AreaChartLayout, BarChartInput, BarChartLayout, BarMark, Box, BoxplotInput, Candle, CandlestickInput, Canvas, CellMark, ChartInput, ChordInput, Curve, Datum, Frame, FunnelChartInput, FunnelChartLayout, GanttInput, GanttTask, GeoMultiPolygon, GeoPolygon, HeatmapInput, HeatmapLayout, Label, LegendItem, LineChartInput, LineChartLayout, MapFeature, MapInput, Mark, PathMark, PieChartInput, PieChartLayout, PointMark, RadarChartInput, RadarChartLayout, SankeyInput, SankeyLink, ScatterChartInput, ScatterChartLayout, ScatterSeries, Series, Shape, ShapeLayout, Sized, SliceMark, SparklineInput, SparklineLayout, StageMark, SunburstInput, Tick, TreeNode, TreemapInput, WaterfallInput };
@@ -4,7 +4,7 @@ import { SkdxChartBase } from '@skdx/angular-charts/internal';
4
4
 
5
5
  /** One polyline per series with a dot per value. */
6
6
  declare class SkdxLineChartComponent extends SkdxChartBase {
7
- protected readonly layout: i0.Signal<_skdx_angular_charts_internal.Canvas>;
7
+ protected readonly layout: i0.Signal<_skdx_angular_charts_internal.LineChartLayout>;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<SkdxLineChartComponent, never>;
9
9
  static ɵcmp: i0.ɵɵComponentDeclaration<SkdxLineChartComponent, "skdx-line-chart", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -7,7 +7,7 @@ declare class SkdxPieChartComponent extends SkdxSizedBase {
7
7
  readonly data: _angular_core.InputSignal<Datum[]>;
8
8
  /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */
9
9
  readonly innerRadius: _angular_core.InputSignal<number | undefined>;
10
- protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
10
+ protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.PieChartLayout>;
11
11
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxPieChartComponent, never>;
12
12
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxPieChartComponent, "skdx-pie-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "innerRadius": { "alias": "innerRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
13
  }
@@ -7,7 +7,14 @@ declare class SkdxRadarChartComponent extends SkdxSizedBase {
7
7
  readonly series: _angular_core.InputSignal<Series[]>;
8
8
  /** One axis per category. */
9
9
  readonly categories: _angular_core.InputSignal<string[]>;
10
- protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
10
+ protected readonly colors: {
11
+ readonly axis: "var(--skdx-color-border-strong)";
12
+ readonly grid: "var(--skdx-color-border-subtle)";
13
+ readonly label: "var(--skdx-color-text-muted)";
14
+ readonly fontFamily: "var(--skdx-font-family)";
15
+ readonly fontSize: "var(--skdx-font-size-xs)";
16
+ };
17
+ protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.RadarChartLayout>;
11
18
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxRadarChartComponent, never>;
12
19
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxRadarChartComponent, "skdx-radar-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; "categories": { "alias": "categories"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
13
20
  }
@@ -5,7 +5,7 @@ import * as _angular_core from '@angular/core';
5
5
  /** One dot per `[x, y]` pair on two linear axes. */
6
6
  declare class SkdxScatterChartComponent extends SkdxSizedBase {
7
7
  readonly series: _angular_core.InputSignal<ScatterSeries[]>;
8
- protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
8
+ protected readonly layout: _angular_core.Signal<_skdx_angular_charts_internal.ScatterChartLayout>;
9
9
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxScatterChartComponent, never>;
10
10
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxScatterChartComponent, "skdx-scatter-chart", never, { "series": { "alias": "series"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
11
11
  }
@@ -6,7 +6,7 @@ import * as _angular_core from '@angular/core';
6
6
  declare class SkdxSparklineComponent extends SkdxSizedBase {
7
7
  readonly data: _angular_core.InputSignal<number[]>;
8
8
  readonly color: _angular_core.InputSignal<string | undefined>;
9
- protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.Canvas>;
9
+ protected readonly l: _angular_core.Signal<_skdx_angular_charts_internal.SparklineLayout>;
10
10
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkdxSparklineComponent, never>;
11
11
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkdxSparklineComponent, "skdx-sparkline", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
12
  }
@@ -16,4 +16,4 @@ export { SkdxBoxplotComponent } from '@skdx/angular-charts/boxplot';
16
16
  export { SkdxSunburstChartComponent } from '@skdx/angular-charts/sunburst';
17
17
  export { SkdxChordChartComponent } from '@skdx/angular-charts/chord';
18
18
  export { SkdxMapChartComponent } from '@skdx/angular-charts/map';
19
- export { Candle, Datum, GanttTask, GeoMultiPolygon, GeoPolygon, MapFeature, SankeyLink, ScatterSeries, Series, TreeNode } from '@skdx/angular-charts/internal';
19
+ export { Candle, Datum, GanttTask, GeoMultiPolygon, GeoPolygon, MapFeature, SankeyLink, ScatterSeries, Series, Shape, TreeNode } from '@skdx/angular-charts/internal';