@skdx/angular-charts 0.33.0 → 0.34.1

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 (128) hide show
  1. package/README.md +104 -41
  2. package/fesm2022/skdx-angular-charts-area.mjs +36 -2
  3. package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
  4. package/fesm2022/skdx-angular-charts-bar.mjs +40 -15
  5. package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
  6. package/fesm2022/skdx-angular-charts-boxplot.mjs +76 -8
  7. package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
  8. package/fesm2022/skdx-angular-charts-bubble.mjs +119 -0
  9. package/fesm2022/skdx-angular-charts-bubble.mjs.map +1 -0
  10. package/fesm2022/skdx-angular-charts-bullet.mjs +110 -0
  11. package/fesm2022/skdx-angular-charts-bullet.mjs.map +1 -0
  12. package/fesm2022/skdx-angular-charts-bump.mjs +113 -0
  13. package/fesm2022/skdx-angular-charts-bump.mjs.map +1 -0
  14. package/fesm2022/skdx-angular-charts-candlestick.mjs +76 -8
  15. package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
  16. package/fesm2022/skdx-angular-charts-chord.mjs +63 -12
  17. package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
  18. package/fesm2022/skdx-angular-charts-circle-packing.mjs +107 -0
  19. package/fesm2022/skdx-angular-charts-circle-packing.mjs.map +1 -0
  20. package/fesm2022/skdx-angular-charts-combo.mjs +82 -0
  21. package/fesm2022/skdx-angular-charts-combo.mjs.map +1 -0
  22. package/fesm2022/skdx-angular-charts-dumbbell.mjs +116 -0
  23. package/fesm2022/skdx-angular-charts-dumbbell.mjs.map +1 -0
  24. package/fesm2022/skdx-angular-charts-funnel.mjs +63 -8
  25. package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
  26. package/fesm2022/skdx-angular-charts-gantt.mjs +64 -11
  27. package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
  28. package/fesm2022/skdx-angular-charts-gauge.mjs +134 -0
  29. package/fesm2022/skdx-angular-charts-gauge.mjs.map +1 -0
  30. package/fesm2022/skdx-angular-charts-heatmap.mjs +111 -15
  31. package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
  32. package/fesm2022/skdx-angular-charts-histogram.mjs +134 -0
  33. package/fesm2022/skdx-angular-charts-histogram.mjs.map +1 -0
  34. package/fesm2022/skdx-angular-charts-icicle.mjs +119 -0
  35. package/fesm2022/skdx-angular-charts-icicle.mjs.map +1 -0
  36. package/fesm2022/skdx-angular-charts-internal.mjs +10134 -1106
  37. package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
  38. package/fesm2022/skdx-angular-charts-line.mjs +36 -2
  39. package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
  40. package/fesm2022/skdx-angular-charts-linear-gauge.mjs +119 -0
  41. package/fesm2022/skdx-angular-charts-linear-gauge.mjs.map +1 -0
  42. package/fesm2022/skdx-angular-charts-map.mjs +81 -8
  43. package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
  44. package/fesm2022/skdx-angular-charts-marimekko.mjs +103 -0
  45. package/fesm2022/skdx-angular-charts-marimekko.mjs.map +1 -0
  46. package/fesm2022/skdx-angular-charts-network.mjs +113 -0
  47. package/fesm2022/skdx-angular-charts-network.mjs.map +1 -0
  48. package/fesm2022/skdx-angular-charts-organization.mjs +111 -0
  49. package/fesm2022/skdx-angular-charts-organization.mjs.map +1 -0
  50. package/fesm2022/skdx-angular-charts-parallel.mjs +105 -0
  51. package/fesm2022/skdx-angular-charts-parallel.mjs.map +1 -0
  52. package/fesm2022/skdx-angular-charts-pareto.mjs +123 -0
  53. package/fesm2022/skdx-angular-charts-pareto.mjs.map +1 -0
  54. package/fesm2022/skdx-angular-charts-pie.mjs +79 -5
  55. package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
  56. package/fesm2022/skdx-angular-charts-polar-area.mjs +118 -0
  57. package/fesm2022/skdx-angular-charts-polar-area.mjs.map +1 -0
  58. package/fesm2022/skdx-angular-charts-radar.mjs +87 -9
  59. package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
  60. package/fesm2022/skdx-angular-charts-radial.mjs +130 -0
  61. package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -0
  62. package/fesm2022/skdx-angular-charts-range.mjs +133 -0
  63. package/fesm2022/skdx-angular-charts-range.mjs.map +1 -0
  64. package/fesm2022/skdx-angular-charts-sankey.mjs +81 -8
  65. package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
  66. package/fesm2022/skdx-angular-charts-scatter.mjs +74 -5
  67. package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
  68. package/fesm2022/skdx-angular-charts-sparkline.mjs +76 -8
  69. package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
  70. package/fesm2022/skdx-angular-charts-sunburst.mjs +88 -8
  71. package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
  72. package/fesm2022/skdx-angular-charts-swarm.mjs +101 -0
  73. package/fesm2022/skdx-angular-charts-swarm.mjs.map +1 -0
  74. package/fesm2022/skdx-angular-charts-timeline.mjs +98 -0
  75. package/fesm2022/skdx-angular-charts-timeline.mjs.map +1 -0
  76. package/fesm2022/skdx-angular-charts-tree.mjs +118 -0
  77. package/fesm2022/skdx-angular-charts-tree.mjs.map +1 -0
  78. package/fesm2022/skdx-angular-charts-treemap.mjs +85 -8
  79. package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
  80. package/fesm2022/skdx-angular-charts-waffle.mjs +113 -0
  81. package/fesm2022/skdx-angular-charts-waffle.mjs.map +1 -0
  82. package/fesm2022/skdx-angular-charts-waterfall.mjs +76 -8
  83. package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
  84. package/fesm2022/skdx-angular-charts.mjs +23 -0
  85. package/fesm2022/skdx-angular-charts.mjs.map +1 -1
  86. package/package.json +91 -3
  87. package/types/skdx-angular-charts-area.d.ts +1 -1
  88. package/types/skdx-angular-charts-bar.d.ts +5 -13
  89. package/types/skdx-angular-charts-boxplot.d.ts +20 -5
  90. package/types/skdx-angular-charts-bubble.d.ts +27 -0
  91. package/types/skdx-angular-charts-bullet.d.ts +24 -0
  92. package/types/skdx-angular-charts-bump.d.ts +25 -0
  93. package/types/skdx-angular-charts-candlestick.d.ts +15 -4
  94. package/types/skdx-angular-charts-chord.d.ts +13 -6
  95. package/types/skdx-angular-charts-circle-packing.d.ts +23 -0
  96. package/types/skdx-angular-charts-combo.d.ts +12 -0
  97. package/types/skdx-angular-charts-dumbbell.d.ts +26 -0
  98. package/types/skdx-angular-charts-funnel.d.ts +11 -3
  99. package/types/skdx-angular-charts-gantt.d.ts +13 -6
  100. package/types/skdx-angular-charts-gauge.d.ts +36 -0
  101. package/types/skdx-angular-charts-heatmap.d.ts +34 -8
  102. package/types/skdx-angular-charts-histogram.d.ts +34 -0
  103. package/types/skdx-angular-charts-icicle.d.ts +29 -0
  104. package/types/skdx-angular-charts-internal.d.ts +2477 -77
  105. package/types/skdx-angular-charts-line.d.ts +1 -1
  106. package/types/skdx-angular-charts-linear-gauge.d.ts +29 -0
  107. package/types/skdx-angular-charts-map.d.ts +17 -4
  108. package/types/skdx-angular-charts-marimekko.d.ts +21 -0
  109. package/types/skdx-angular-charts-network.d.ts +25 -0
  110. package/types/skdx-angular-charts-organization.d.ts +25 -0
  111. package/types/skdx-angular-charts-parallel.d.ts +25 -0
  112. package/types/skdx-angular-charts-pareto.d.ts +27 -0
  113. package/types/skdx-angular-charts-pie.d.ts +20 -2
  114. package/types/skdx-angular-charts-polar-area.d.ts +28 -0
  115. package/types/skdx-angular-charts-radar.d.ts +24 -4
  116. package/types/skdx-angular-charts-radial.d.ts +34 -0
  117. package/types/skdx-angular-charts-range.d.ts +29 -0
  118. package/types/skdx-angular-charts-sankey.d.ts +22 -4
  119. package/types/skdx-angular-charts-scatter.d.ts +17 -3
  120. package/types/skdx-angular-charts-sparkline.d.ts +19 -5
  121. package/types/skdx-angular-charts-sunburst.d.ts +25 -4
  122. package/types/skdx-angular-charts-swarm.d.ts +19 -0
  123. package/types/skdx-angular-charts-timeline.d.ts +18 -0
  124. package/types/skdx-angular-charts-tree.d.ts +28 -0
  125. package/types/skdx-angular-charts-treemap.d.ts +21 -5
  126. package/types/skdx-angular-charts-waffle.d.ts +25 -0
  127. package/types/skdx-angular-charts-waterfall.d.ts +19 -5
  128. package/types/skdx-angular-charts.d.ts +23 -1
@@ -7,23 +7,79 @@ import { SkdxSizedBase, layoutSankey, SkdxChartRootComponent } from '@skdx/angul
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
- /** Flows between nodes as ribbons, nodes placed by depth. */
10
+ /** Flows between nodes, node heights and ribbon widths by value. */
11
11
  class SkdxSankeyChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.links = input.required(/* @ts-ignore */
15
15
  ...(ngDevMode ? [{ debugName: "links" }] : /* istanbul ignore next */ []));
16
- this.l = computed(() => layoutSankey({ ...this.sized(), links: this.links() }), /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
16
+ /** Explicit nodes with labels and colors. */
17
+ this.nodes = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "nodes" }] : /* istanbul ignore next */ []));
19
+ /** justify pushes sinks to the last column. */
20
+ this.align = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "align" }] : /* istanbul ignore next */ []));
22
+ /** Node thickness in pixels. */
23
+ this.nodeWidth = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "nodeWidth" }] : /* istanbul ignore next */ []));
25
+ /** Vertical gap between nodes in a column. */
26
+ this.nodePadding = input(/* @ts-ignore */
27
+ ...(ngDevMode ? [undefined, { debugName: "nodePadding" }] : /* istanbul ignore next */ []));
28
+ /** Order nodes inside a column by value. */
29
+ this.nodeSort = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "nodeSort" }] : /* istanbul ignore next */ []));
31
+ /** Order the ribbons leaving a node by value. */
32
+ this.linkSort = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "linkSort" }] : /* istanbul ignore next */ []));
34
+ /** Write node names. */
35
+ this.nodeLabels = input(true, /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "nodeLabels" }] : /* istanbul ignore next */ []));
37
+ /** Write each link's value on it. */
38
+ this.linkLabels = input(false, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "linkLabels" }] : /* istanbul ignore next */ []));
40
+ /** What to do with links that close a cycle. */
41
+ this.cyclePolicy = input(/* @ts-ignore */
42
+ ...(ngDevMode ? [undefined, { debugName: "cyclePolicy" }] : /* istanbul ignore next */ []));
43
+ this.layout = computed(() => layoutSankey({
44
+ ...this.sized(),
45
+ links: this.links(),
46
+ nodes: this.nodes(),
47
+ align: this.align(),
48
+ nodeWidth: this.nodeWidth(),
49
+ nodePadding: this.nodePadding(),
50
+ nodeSort: this.nodeSort(),
51
+ linkSort: this.linkSort(),
52
+ nodeLabels: this.nodeLabels(),
53
+ linkLabels: this.linkLabels(),
54
+ cyclePolicy: this.cyclePolicy(),
55
+ }), /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
18
57
  }
19
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSankeyChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSankeyChartComponent, isStandalone: true, selector: "skdx-sankey-chart", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSankeyChartComponent, isStandalone: true, selector: "skdx-sankey-chart", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: true, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, nodeWidth: { classPropertyName: "nodeWidth", publicName: "nodeWidth", isSignal: true, isRequired: false, transformFunction: null }, nodePadding: { classPropertyName: "nodePadding", publicName: "nodePadding", isSignal: true, isRequired: false, transformFunction: null }, nodeSort: { classPropertyName: "nodeSort", publicName: "nodeSort", isSignal: true, isRequired: false, transformFunction: null }, linkSort: { classPropertyName: "linkSort", publicName: "linkSort", isSignal: true, isRequired: false, transformFunction: null }, nodeLabels: { classPropertyName: "nodeLabels", publicName: "nodeLabels", isSignal: true, isRequired: false, transformFunction: null }, linkLabels: { classPropertyName: "linkLabels", publicName: "linkLabels", isSignal: true, isRequired: false, transformFunction: null }, cyclePolicy: { classPropertyName: "cyclePolicy", publicName: "cyclePolicy", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
21
60
  <skdx-chart-root
22
- [layout]="l()"
61
+ [layout]="layout()"
62
+ [options]="options()"
23
63
  kind="sankey"
24
64
  [label]="label() ?? 'Sankey chart'"
65
+ [zoomable]="zoomable()"
66
+ [selectionMode]="selectionMode()"
67
+ [editable]="editable()"
68
+ [syncId]="syncId()"
69
+ [crosshair]="syncedCrosshair()"
70
+ [responsive]="!!responsive()"
71
+ (itemClick)="itemClick.emit($event)"
72
+ (dataIssue)="dataIssue.emit($event)"
73
+ (taskChange)="taskChange.emit($event)"
74
+ (hiddenSeriesChange)="toggle($event)"
75
+ (zoomChange)="zoom.set($event)"
76
+ (viewChange)="view.set($event)"
77
+ (selectedChange)="selected.set($event)"
78
+ (highlightedChange)="highlighted.set($event)"
79
+ (syncChange)="sync($event)"
80
+ (measured)="measuredWidth.set($event)"
25
81
  ></skdx-chart-root>
26
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
83
  }
28
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSankeyChartComponent, decorators: [{
29
85
  type: Component,
@@ -34,13 +90,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
34
90
  imports: [SkdxChartRootComponent],
35
91
  template: `
36
92
  <skdx-chart-root
37
- [layout]="l()"
93
+ [layout]="layout()"
94
+ [options]="options()"
38
95
  kind="sankey"
39
96
  [label]="label() ?? 'Sankey chart'"
97
+ [zoomable]="zoomable()"
98
+ [selectionMode]="selectionMode()"
99
+ [editable]="editable()"
100
+ [syncId]="syncId()"
101
+ [crosshair]="syncedCrosshair()"
102
+ [responsive]="!!responsive()"
103
+ (itemClick)="itemClick.emit($event)"
104
+ (dataIssue)="dataIssue.emit($event)"
105
+ (taskChange)="taskChange.emit($event)"
106
+ (hiddenSeriesChange)="toggle($event)"
107
+ (zoomChange)="zoom.set($event)"
108
+ (viewChange)="view.set($event)"
109
+ (selectedChange)="selected.set($event)"
110
+ (highlightedChange)="highlighted.set($event)"
111
+ (syncChange)="sync($event)"
112
+ (measured)="measuredWidth.set($event)"
40
113
  ></skdx-chart-root>
41
114
  `,
42
115
  }]
43
- }], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: true }] }] } });
116
+ }], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: true }] }], nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], nodeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeWidth", required: false }] }], nodePadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodePadding", required: false }] }], nodeSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeSort", required: false }] }], linkSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkSort", required: false }] }], nodeLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeLabels", required: false }] }], linkLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkLabels", required: false }] }], cyclePolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "cyclePolicy", required: false }] }] } });
44
117
 
45
118
  /**
46
119
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-sankey.mjs","sources":["../../src/sankey/index.ts","../../src/sankey/skdx-angular-charts-sankey.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 layoutSankey,\n type SankeyLink,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Flows between nodes as ribbons, nodes placed by depth. */\n@Component({\n selector: 'skdx-sankey-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"l()\"\n kind=\"sankey\"\n [label]=\"label() ?? 'Sankey chart'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSankeyChartComponent extends SkdxSizedBase {\n readonly links = input.required<SankeyLink[]>();\n\n protected readonly l = computed(() => layoutSankey({ ...this.sized(), links: this.links() }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAcM,MAAO,wBAAyB,SAAQ,aAAa,CAAA;AAb3D,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAgB;QAE5B,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAAM,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;8EAAC;AAC9F,IAAA;8GAJY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARzB;;;;;;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,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,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-sankey.mjs","sources":["../../src/sankey/index.ts","../../src/sankey/skdx-angular-charts-sankey.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 layoutSankey,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type SankeyLink,\n type SankeyNode,\n} from '@skdx/angular-charts/internal';\n\n/** Flows between nodes, node heights and ribbon widths by value. */\n@Component({\n selector: 'skdx-sankey-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"sankey\"\n [label]=\"label() ?? 'Sankey chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSankeyChartComponent extends SkdxSizedBase {\n readonly links = input.required<SankeyLink[]>();\n /** Explicit nodes with labels and colors. */\n readonly nodes = input<SankeyNode[]>();\n /** justify pushes sinks to the last column. */\n readonly align = input<'left' | 'justify'>();\n /** Node thickness in pixels. */\n readonly nodeWidth = input<number>();\n /** Vertical gap between nodes in a column. */\n readonly nodePadding = input<number>();\n /** Order nodes inside a column by value. */\n readonly nodeSort = input<'asc' | 'desc'>();\n /** Order the ribbons leaving a node by value. */\n readonly linkSort = input<'asc' | 'desc'>();\n /** Write node names. */\n readonly nodeLabels = input(true);\n /** Write each link's value on it. */\n readonly linkLabels = input(false);\n /** What to do with links that close a cycle. */\n readonly cyclePolicy = input<'drop' | 'warn' | 'error'>();\n\n protected readonly layout = computed(() =>\n layoutSankey({\n ...this.sized(),\n links: this.links(),\n nodes: this.nodes(),\n align: this.align(),\n nodeWidth: this.nodeWidth(),\n nodePadding: this.nodePadding(),\n nodeSort: this.nodeSort(),\n linkSort: this.linkSort(),\n nodeLabels: this.nodeLabels(),\n linkLabels: this.linkLabels(),\n cyclePolicy: this.cyclePolicy(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAYH;AA+BM,MAAO,wBAAyB,SAAQ,aAAa,CAAA;AA9B3D,IAAA,WAAA,GAAA;;QA+BW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAgB;;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAgB;;AAE7B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAsB;;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK;iGAAU;;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAAU;;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAkB;;AAElC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAkB;;QAElC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI;uFAAC;;QAExB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK;uFAAC;;AAEzB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA6B;AAEtC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,YAAY,CAAC;YACX,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAChC,CAAC;mFACH;AACF,IAAA;8GApCY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,EAzBzB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxBS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA0BrB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA9BpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA;AACF,iBAAA;;;AC9CD;;AAEG;;"}
@@ -7,23 +7,75 @@ import { SkdxSizedBase, layoutScatterChart, SkdxChartRootComponent } from '@skdx
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 dot per `[x, y]` pair on two linear axes. */
10
+ /** One dot per `[x, y]` pair, or a bubble per `[x, y, size]` triple, on two linear axes. */
11
11
  class SkdxScatterChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.series = input.required(/* @ts-ignore */
15
15
  ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
16
- this.layout = computed(() => layoutScatterChart({ ...this.sized(), series: this.series() }), /* @ts-ignore */
16
+ /** Bubble radius range in pixels. */
17
+ this.sizeRange = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "sizeRange" }] : /* istanbul ignore next */ []));
19
+ /** Least-squares line per series. */
20
+ this.trendline = input(false, /* @ts-ignore */
21
+ ...(ngDevMode ? [{ debugName: "trendline" }] : /* istanbul ignore next */ []));
22
+ /** Write each point's label next to it. */
23
+ this.labels = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
25
+ this.xAxis = input(/* @ts-ignore */
26
+ ...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
27
+ this.yAxis = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "yAxis" }] : /* istanbul ignore next */ []));
29
+ this.references = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "references" }] : /* istanbul ignore next */ []));
31
+ this.annotations = input(/* @ts-ignore */
32
+ ...(ngDevMode ? [undefined, { debugName: "annotations" }] : /* istanbul ignore next */ []));
33
+ /** Colors points by their `value`. */
34
+ this.colorScale = input(/* @ts-ignore */
35
+ ...(ngDevMode ? [undefined, { debugName: "colorScale" }] : /* istanbul ignore next */ []));
36
+ /** Draw the color scale under the plot. */
37
+ this.colorLegend = input(false, /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "colorLegend" }] : /* istanbul ignore next */ []));
39
+ this.layout = computed(() => layoutScatterChart({
40
+ ...this.sized(),
41
+ series: this.series(),
42
+ sizeRange: this.sizeRange(),
43
+ trendline: this.trendline(),
44
+ labels: this.labels(),
45
+ xAxis: this.xAxis(),
46
+ yAxis: this.yAxis(),
47
+ references: this.references(),
48
+ annotations: this.annotations(),
49
+ colorScale: this.colorScale(),
50
+ colorLegend: this.colorLegend(),
51
+ }), /* @ts-ignore */
17
52
  ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
18
53
  }
19
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxScatterChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxScatterChartComponent, isStandalone: true, selector: "skdx-scatter-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxScatterChartComponent, isStandalone: true, selector: "skdx-scatter-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null }, sizeRange: { classPropertyName: "sizeRange", publicName: "sizeRange", isSignal: true, isRequired: false, transformFunction: null }, trendline: { classPropertyName: "trendline", publicName: "trendline", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, xAxis: { classPropertyName: "xAxis", publicName: "xAxis", isSignal: true, isRequired: false, transformFunction: null }, yAxis: { classPropertyName: "yAxis", publicName: "yAxis", isSignal: true, isRequired: false, transformFunction: null }, references: { classPropertyName: "references", publicName: "references", isSignal: true, isRequired: false, transformFunction: null }, annotations: { classPropertyName: "annotations", publicName: "annotations", isSignal: true, isRequired: false, transformFunction: null }, colorScale: { classPropertyName: "colorScale", publicName: "colorScale", isSignal: true, isRequired: false, transformFunction: null }, colorLegend: { classPropertyName: "colorLegend", publicName: "colorLegend", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
21
56
  <skdx-chart-root
22
57
  [layout]="layout()"
58
+ [options]="options()"
23
59
  kind="scatter"
24
60
  [label]="label() ?? 'Scatter chart'"
61
+ [zoomable]="zoomable()"
62
+ [selectionMode]="selectionMode()"
63
+ [editable]="editable()"
64
+ [syncId]="syncId()"
65
+ [crosshair]="syncedCrosshair()"
66
+ [responsive]="!!responsive()"
67
+ (itemClick)="itemClick.emit($event)"
68
+ (dataIssue)="dataIssue.emit($event)"
69
+ (taskChange)="taskChange.emit($event)"
70
+ (hiddenSeriesChange)="toggle($event)"
71
+ (zoomChange)="zoom.set($event)"
72
+ (viewChange)="view.set($event)"
73
+ (selectedChange)="selected.set($event)"
74
+ (highlightedChange)="highlighted.set($event)"
75
+ (syncChange)="sync($event)"
76
+ (measured)="measuredWidth.set($event)"
25
77
  ></skdx-chart-root>
26
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
79
  }
28
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxScatterChartComponent, decorators: [{
29
81
  type: Component,
@@ -35,12 +87,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
35
87
  template: `
36
88
  <skdx-chart-root
37
89
  [layout]="layout()"
90
+ [options]="options()"
38
91
  kind="scatter"
39
92
  [label]="label() ?? 'Scatter chart'"
93
+ [zoomable]="zoomable()"
94
+ [selectionMode]="selectionMode()"
95
+ [editable]="editable()"
96
+ [syncId]="syncId()"
97
+ [crosshair]="syncedCrosshair()"
98
+ [responsive]="!!responsive()"
99
+ (itemClick)="itemClick.emit($event)"
100
+ (dataIssue)="dataIssue.emit($event)"
101
+ (taskChange)="taskChange.emit($event)"
102
+ (hiddenSeriesChange)="toggle($event)"
103
+ (zoomChange)="zoom.set($event)"
104
+ (viewChange)="view.set($event)"
105
+ (selectedChange)="selected.set($event)"
106
+ (highlightedChange)="highlighted.set($event)"
107
+ (syncChange)="sync($event)"
108
+ (measured)="measuredWidth.set($event)"
40
109
  ></skdx-chart-root>
41
110
  `,
42
111
  }]
43
- }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }] } });
112
+ }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }], sizeRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizeRange", required: false }] }], trendline: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendline", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }], yAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "yAxis", required: false }] }], references: [{ type: i0.Input, args: [{ isSignal: true, alias: "references", required: false }] }], annotations: [{ type: i0.Input, args: [{ isSignal: true, alias: "annotations", required: false }] }], colorScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorScale", required: false }] }], colorLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorLegend", required: false }] }] } });
44
113
 
45
114
  /**
46
115
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-scatter.mjs","sources":["../../src/scatter/index.ts","../../src/scatter/skdx-angular-charts-scatter.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 layoutScatterChart,\n type ScatterSeries,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** One dot per `[x, y]` pair on two linear axes. */\n@Component({\n selector: 'skdx-scatter-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"scatter\"\n [label]=\"label() ?? 'Scatter chart'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxScatterChartComponent extends SkdxSizedBase {\n readonly series = input.required<ScatterSeries[]>();\n\n protected readonly layout = computed(() =>\n layoutScatterChart({ ...this.sized(), series: this.series() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAcM,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAb5D,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ;mFAAmB;QAEhC,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,kBAAkB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;mFAC/D;AACF,IAAA;8GANY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAR1B;;;;;;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,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,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-scatter.mjs","sources":["../../src/scatter/index.ts","../../src/scatter/skdx-angular-charts-scatter.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 layoutScatterChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Annotation,\n type AxisOptions,\n type ColorScale,\n type Reference,\n type ScatterSeries,\n} from '@skdx/angular-charts/internal';\n\n/** One dot per `[x, y]` pair, or a bubble per `[x, y, size]` triple, on two linear axes. */\n@Component({\n selector: 'skdx-scatter-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"scatter\"\n [label]=\"label() ?? 'Scatter chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxScatterChartComponent extends SkdxSizedBase {\n readonly series = input.required<ScatterSeries[]>();\n /** Bubble radius range in pixels. */\n readonly sizeRange = input<[number, number]>();\n /** Least-squares line per series. */\n readonly trendline = input(false);\n /** Write each point's label next to it. */\n readonly labels = input(false);\n readonly xAxis = input<AxisOptions>();\n readonly yAxis = input<AxisOptions>();\n readonly references = input<Reference[]>();\n readonly annotations = input<Annotation[]>();\n /** Colors points by their `value`. */\n readonly colorScale = input<ColorScale>();\n /** Draw the color scale under the plot. */\n readonly colorLegend = input(false);\n\n protected readonly layout = computed(() =>\n layoutScatterChart({\n ...this.sized(),\n series: this.series(),\n sizeRange: this.sizeRange(),\n trendline: this.trendline(),\n labels: this.labels(),\n xAxis: this.xAxis(),\n yAxis: this.yAxis(),\n references: this.references(),\n annotations: this.annotations(),\n colorScale: this.colorScale(),\n colorLegend: this.colorLegend(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { SkdxSizedBase, layoutSparkline, SkdxChartRootComponent } from '@skdx/an
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 small axis-less trend line with the last point marked. */
10
+ /** A small axis-less trend: an area, a bare line or bars, with optional extremes and last value. */
11
11
  class SkdxSparklineComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -15,17 +15,68 @@ class SkdxSparklineComponent extends SkdxSizedBase {
15
15
  ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
16
  this.color = input(/* @ts-ignore */
17
17
  ...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
18
- this.l = computed(() => layoutSparkline({ ...this.sized(), data: this.data(), color: this.color() }), /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
18
+ this.curve = input(/* @ts-ignore */
19
+ ...(ngDevMode ? [undefined, { debugName: "curve" }] : /* istanbul ignore next */ []));
20
+ this.variant = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
22
+ /** Color by direction: success when rising, danger when falling. */
23
+ this.trend = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "trend" }] : /* istanbul ignore next */ []));
25
+ /** Mark the minimum and maximum. */
26
+ this.extremes = input(false, /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "extremes" }] : /* istanbul ignore next */ []));
28
+ /** Write the last value after the line. */
29
+ this.lastValue = input(false, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "lastValue" }] : /* istanbul ignore next */ []));
31
+ /** A dashed reference line at this value. */
32
+ this.target = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
34
+ /** A shaded band between two values. */
35
+ this.band = input(/* @ts-ignore */
36
+ ...(ngDevMode ? [undefined, { debugName: "band" }] : /* istanbul ignore next */ []));
37
+ /** Dots on the first and/or last point. */
38
+ this.markers = input(/* @ts-ignore */
39
+ ...(ngDevMode ? [undefined, { debugName: "markers" }] : /* istanbul ignore next */ []));
40
+ this.layout = computed(() => layoutSparkline({
41
+ ...this.sized(),
42
+ data: this.data(),
43
+ color: this.color(),
44
+ curve: this.curve(),
45
+ variant: this.variant(),
46
+ trend: this.trend(),
47
+ extremes: this.extremes(),
48
+ lastValue: this.lastValue(),
49
+ target: this.target(),
50
+ band: this.band(),
51
+ markers: this.markers(),
52
+ }), /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
20
54
  }
21
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSparklineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSparklineComponent, isStandalone: true, selector: "skdx-sparkline", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSparklineComponent, isStandalone: true, selector: "skdx-sparkline", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, curve: { classPropertyName: "curve", publicName: "curve", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, extremes: { classPropertyName: "extremes", publicName: "extremes", isSignal: true, isRequired: false, transformFunction: null }, lastValue: { classPropertyName: "lastValue", publicName: "lastValue", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, band: { classPropertyName: "band", publicName: "band", isSignal: true, isRequired: false, transformFunction: null }, markers: { classPropertyName: "markers", publicName: "markers", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
23
57
  <skdx-chart-root
24
- [layout]="l()"
58
+ [layout]="layout()"
59
+ [options]="options()"
25
60
  kind="sparkline"
26
61
  [label]="label() ?? 'Sparkline'"
62
+ [zoomable]="zoomable()"
63
+ [selectionMode]="selectionMode()"
64
+ [editable]="editable()"
65
+ [syncId]="syncId()"
66
+ [crosshair]="syncedCrosshair()"
67
+ [responsive]="!!responsive()"
68
+ (itemClick)="itemClick.emit($event)"
69
+ (dataIssue)="dataIssue.emit($event)"
70
+ (taskChange)="taskChange.emit($event)"
71
+ (hiddenSeriesChange)="toggle($event)"
72
+ (zoomChange)="zoom.set($event)"
73
+ (viewChange)="view.set($event)"
74
+ (selectedChange)="selected.set($event)"
75
+ (highlightedChange)="highlighted.set($event)"
76
+ (syncChange)="sync($event)"
77
+ (measured)="measuredWidth.set($event)"
27
78
  ></skdx-chart-root>
28
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
80
  }
30
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSparklineComponent, decorators: [{
31
82
  type: Component,
@@ -36,13 +87,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
36
87
  imports: [SkdxChartRootComponent],
37
88
  template: `
38
89
  <skdx-chart-root
39
- [layout]="l()"
90
+ [layout]="layout()"
91
+ [options]="options()"
40
92
  kind="sparkline"
41
93
  [label]="label() ?? 'Sparkline'"
94
+ [zoomable]="zoomable()"
95
+ [selectionMode]="selectionMode()"
96
+ [editable]="editable()"
97
+ [syncId]="syncId()"
98
+ [crosshair]="syncedCrosshair()"
99
+ [responsive]="!!responsive()"
100
+ (itemClick)="itemClick.emit($event)"
101
+ (dataIssue)="dataIssue.emit($event)"
102
+ (taskChange)="taskChange.emit($event)"
103
+ (hiddenSeriesChange)="toggle($event)"
104
+ (zoomChange)="zoom.set($event)"
105
+ (viewChange)="view.set($event)"
106
+ (selectedChange)="selected.set($event)"
107
+ (highlightedChange)="highlighted.set($event)"
108
+ (syncChange)="sync($event)"
109
+ (measured)="measuredWidth.set($event)"
42
110
  ></skdx-chart-root>
43
111
  `,
44
112
  }]
45
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
113
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], curve: [{ type: i0.Input, args: [{ isSignal: true, alias: "curve", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], trend: [{ type: i0.Input, args: [{ isSignal: true, alias: "trend", required: false }] }], extremes: [{ type: i0.Input, args: [{ isSignal: true, alias: "extremes", required: false }] }], lastValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "lastValue", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], band: [{ type: i0.Input, args: [{ isSignal: true, alias: "band", required: false }] }], markers: [{ type: i0.Input, args: [{ isSignal: true, alias: "markers", required: false }] }] } });
46
114
 
47
115
  /**
48
116
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-sparkline.mjs","sources":["../../src/sparkline/index.ts","../../src/sparkline/skdx-angular-charts-sparkline.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 layoutSparkline,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** A small axis-less trend line with the last point marked. */\n@Component({\n selector: 'skdx-sparkline',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"l()\"\n kind=\"sparkline\"\n [label]=\"label() ?? 'Sparkline'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSparklineComponent extends SkdxSizedBase {\n readonly data = input.required<number[]>();\n readonly color = input<string>();\n\n protected readonly l = computed(() =>\n layoutSparkline({ ...this.sized(), data: this.data(), color: this.color() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AAcM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAbzD,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAY;AACjC,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;8GAPY,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,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,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,EARvB;;;;;;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,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,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;;;;;;AAMT,EAAA,CAAA;AACF,iBAAA;;;AC3BD;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-sparkline.mjs","sources":["../../src/sparkline/index.ts","../../src/sparkline/skdx-angular-charts-sparkline.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 layoutSparkline,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Curve,\n type Value,\n} from '@skdx/angular-charts/internal';\n\n/** A small axis-less trend: an area, a bare line or bars, with optional extremes and last value. */\n@Component({\n selector: 'skdx-sparkline',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"sparkline\"\n [label]=\"label() ?? 'Sparkline'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSparklineComponent extends SkdxSizedBase {\n readonly data = input.required<Value[]>();\n readonly color = input<string>();\n readonly curve = input<Curve>();\n readonly variant = input<'area' | 'line' | 'bar' | 'winloss'>();\n /** Color by direction: success when rising, danger when falling. */\n readonly trend = input(false);\n /** Mark the minimum and maximum. */\n readonly extremes = input(false);\n /** Write the last value after the line. */\n readonly lastValue = input(false);\n /** A dashed reference line at this value. */\n readonly target = input<number>();\n /** A shaded band between two values. */\n readonly band = input<[number, number]>();\n /** Dots on the first and/or last point. */\n readonly markers = input<('first' | 'last')[]>();\n\n protected readonly layout = computed(() =>\n layoutSparkline({\n ...this.sized(),\n data: this.data(),\n color: this.color(),\n curve: this.curve(),\n variant: this.variant(),\n trend: this.trend(),\n extremes: this.extremes(),\n lastValue: this.lastValue(),\n target: this.target(),\n band: this.band(),\n markers: this.markers(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -7,23 +7,86 @@ import { SkdxSizedBase, layoutSunburst, 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
- /** Nested rings, one per tree depth, children within their parent span. */
10
+ /** Nested rings, one per tree depth, children inside their parent's span. */
11
11
  class SkdxSunburstChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.data = input.required(/* @ts-ignore */
15
15
  ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
- this.l = computed(() => layoutSunburst({ ...this.sized(), data: this.data() }), /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
16
+ /** Hole radius as a fraction of the outer radius. */
17
+ this.innerRadius = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "innerRadius" }] : /* istanbul ignore next */ []));
19
+ /** Text in the middle, e.g. the total. */
20
+ this.centerLabel = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "centerLabel" }] : /* istanbul ignore next */ []));
22
+ /** Write names on the arcs wide enough to hold them. */
23
+ this.labels = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
25
+ /** Id (or name) of the node whose subtree fills the rings. */
26
+ this.rootId = input(/* @ts-ignore */
27
+ ...(ngDevMode ? [undefined, { debugName: "rootId" }] : /* istanbul ignore next */ []));
28
+ /** Write the path to `rootId` in the middle. */
29
+ this.breadcrumbs = input(false, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "breadcrumbs" }] : /* istanbul ignore next */ []));
31
+ /** Deepest ring drawn. */
32
+ this.maxDepth = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "maxDepth" }] : /* istanbul ignore next */ []));
34
+ /** Arc order inside a parent. */
35
+ this.sort = input(/* @ts-ignore */
36
+ ...(ngDevMode ? [undefined, { debugName: "sort" }] : /* istanbul ignore next */ []));
37
+ /** Degrees clockwise from 12 o'clock. */
38
+ this.startAngle = input(/* @ts-ignore */
39
+ ...(ngDevMode ? [undefined, { debugName: "startAngle" }] : /* istanbul ignore next */ []));
40
+ this.endAngle = input(/* @ts-ignore */
41
+ ...(ngDevMode ? [undefined, { debugName: "endAngle" }] : /* istanbul ignore next */ []));
42
+ /** Gap between sibling arcs, in degrees. */
43
+ this.padAngle = input(/* @ts-ignore */
44
+ ...(ngDevMode ? [undefined, { debugName: "padAngle" }] : /* istanbul ignore next */ []));
45
+ /** Colors arcs by their value. */
46
+ this.colorScale = input(/* @ts-ignore */
47
+ ...(ngDevMode ? [undefined, { debugName: "colorScale" }] : /* istanbul ignore next */ []));
48
+ this.layout = computed(() => layoutSunburst({
49
+ ...this.sized(),
50
+ data: this.data(),
51
+ innerRadius: this.innerRadius(),
52
+ centerLabel: this.centerLabel(),
53
+ labels: this.labels(),
54
+ rootId: this.rootId(),
55
+ breadcrumbs: this.breadcrumbs(),
56
+ maxDepth: this.maxDepth(),
57
+ sort: this.sort(),
58
+ startAngle: this.startAngle(),
59
+ endAngle: this.endAngle(),
60
+ padAngle: this.padAngle(),
61
+ colorScale: this.colorScale(),
62
+ }), /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
18
64
  }
19
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSunburstChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSunburstChartComponent, isStandalone: true, selector: "skdx-sunburst-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSunburstChartComponent, isStandalone: true, selector: "skdx-sunburst-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, rootId: { classPropertyName: "rootId", publicName: "rootId", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", 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 }, padAngle: { classPropertyName: "padAngle", publicName: "padAngle", isSignal: true, isRequired: false, transformFunction: null }, colorScale: { classPropertyName: "colorScale", publicName: "colorScale", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
21
67
  <skdx-chart-root
22
- [layout]="l()"
68
+ [layout]="layout()"
69
+ [options]="options()"
23
70
  kind="sunburst"
24
71
  [label]="label() ?? 'Sunburst chart'"
72
+ [zoomable]="zoomable()"
73
+ [selectionMode]="selectionMode()"
74
+ [editable]="editable()"
75
+ [syncId]="syncId()"
76
+ [crosshair]="syncedCrosshair()"
77
+ [responsive]="!!responsive()"
78
+ (itemClick)="itemClick.emit($event)"
79
+ (dataIssue)="dataIssue.emit($event)"
80
+ (taskChange)="taskChange.emit($event)"
81
+ (hiddenSeriesChange)="toggle($event)"
82
+ (zoomChange)="zoom.set($event)"
83
+ (viewChange)="view.set($event)"
84
+ (selectedChange)="selected.set($event)"
85
+ (highlightedChange)="highlighted.set($event)"
86
+ (syncChange)="sync($event)"
87
+ (measured)="measuredWidth.set($event)"
25
88
  ></skdx-chart-root>
26
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
89
+ `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
90
  }
28
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSunburstChartComponent, decorators: [{
29
92
  type: Component,
@@ -34,13 +97,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
34
97
  imports: [SkdxChartRootComponent],
35
98
  template: `
36
99
  <skdx-chart-root
37
- [layout]="l()"
100
+ [layout]="layout()"
101
+ [options]="options()"
38
102
  kind="sunburst"
39
103
  [label]="label() ?? 'Sunburst chart'"
104
+ [zoomable]="zoomable()"
105
+ [selectionMode]="selectionMode()"
106
+ [editable]="editable()"
107
+ [syncId]="syncId()"
108
+ [crosshair]="syncedCrosshair()"
109
+ [responsive]="!!responsive()"
110
+ (itemClick)="itemClick.emit($event)"
111
+ (dataIssue)="dataIssue.emit($event)"
112
+ (taskChange)="taskChange.emit($event)"
113
+ (hiddenSeriesChange)="toggle($event)"
114
+ (zoomChange)="zoom.set($event)"
115
+ (viewChange)="view.set($event)"
116
+ (selectedChange)="selected.set($event)"
117
+ (highlightedChange)="highlighted.set($event)"
118
+ (syncChange)="sync($event)"
119
+ (measured)="measuredWidth.set($event)"
40
120
  ></skdx-chart-root>
41
121
  `,
42
122
  }]
43
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
123
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], rootId: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootId", required: false }] }], breadcrumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumbs", required: false }] }], maxDepth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDepth", required: false }] }], sort: [{ type: i0.Input, args: [{ isSignal: true, alias: "sort", required: false }] }], startAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAngle", required: false }] }], endAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "endAngle", required: false }] }], padAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "padAngle", required: false }] }], colorScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorScale", required: false }] }] } });
44
124
 
45
125
  /**
46
126
  * Generated bundle index. Do not edit.
@@ -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/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 ChartItemId,\n type ColorScale,\n type TreeNode,\n} from '@skdx/angular-charts/internal';\n\n/** Nested rings, one per tree depth, children inside their parent's 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]=\"layout()\"\n [options]=\"options()\"\n kind=\"sunburst\"\n [label]=\"label() ?? 'Sunburst chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSunburstChartComponent extends SkdxSizedBase {\n readonly data = input.required<TreeNode[]>();\n /** Hole radius as a fraction of the outer radius. */\n readonly innerRadius = input<number>();\n /** Text in the middle, e.g. the total. */\n readonly centerLabel = input<string>();\n /** Write names on the arcs wide enough to hold them. */\n readonly labels = input(false);\n /** Id (or name) of the node whose subtree fills the rings. */\n readonly rootId = input<ChartItemId>();\n /** Write the path to `rootId` in the middle. */\n readonly breadcrumbs = input(false);\n /** Deepest ring drawn. */\n readonly maxDepth = input<number>();\n /** Arc order inside a parent. */\n readonly sort = input<'asc' | 'desc' | 'none'>();\n /** Degrees clockwise from 12 o'clock. */\n readonly startAngle = input<number>();\n readonly endAngle = input<number>();\n /** Gap between sibling arcs, in degrees. */\n readonly padAngle = input<number>();\n /** Colors arcs by their value. */\n readonly colorScale = input<ColorScale>();\n\n protected readonly layout = computed(() =>\n layoutSunburst({\n ...this.sized(),\n data: this.data(),\n innerRadius: this.innerRadius(),\n centerLabel: this.centerLabel(),\n labels: this.labels(),\n rootId: this.rootId(),\n breadcrumbs: this.breadcrumbs(),\n maxDepth: this.maxDepth(),\n sort: this.sort(),\n startAngle: this.startAngle(),\n endAngle: this.endAngle(),\n padAngle: this.padAngle(),\n colorScale: this.colorScale(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}