@skdx/angular-charts 0.34.0 → 0.35.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 (124) hide show
  1. package/README.md +9 -1
  2. package/fesm2022/skdx-angular-charts-area.mjs +25 -3
  3. package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
  4. package/fesm2022/skdx-angular-charts-bar.mjs +25 -3
  5. package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
  6. package/fesm2022/skdx-angular-charts-boxplot.mjs +62 -6
  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 +40 -5
  15. package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
  16. package/fesm2022/skdx-angular-charts-chord.mjs +49 -10
  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 +39 -5
  25. package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
  26. package/fesm2022/skdx-angular-charts-gantt.mjs +47 -6
  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 +63 -5
  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 +9286 -2473
  37. package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
  38. package/fesm2022/skdx-angular-charts-line.mjs +25 -3
  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 +51 -5
  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 +47 -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 +61 -10
  59. package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
  60. package/fesm2022/skdx-angular-charts-radial.mjs +25 -3
  61. package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -1
  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 +67 -6
  65. package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
  66. package/fesm2022/skdx-angular-charts-scatter.mjs +42 -5
  67. package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
  68. package/fesm2022/skdx-angular-charts-sparkline.mjs +39 -5
  69. package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
  70. package/fesm2022/skdx-angular-charts-sunburst.mjs +74 -6
  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 +63 -6
  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 +62 -6
  83. package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
  84. package/fesm2022/skdx-angular-charts.mjs +22 -1
  85. package/fesm2022/skdx-angular-charts.mjs.map +1 -1
  86. package/package.json +87 -3
  87. package/types/skdx-angular-charts-boxplot.d.ts +18 -3
  88. package/types/skdx-angular-charts-bubble.d.ts +27 -0
  89. package/types/skdx-angular-charts-bullet.d.ts +24 -0
  90. package/types/skdx-angular-charts-bump.d.ts +25 -0
  91. package/types/skdx-angular-charts-candlestick.d.ts +7 -2
  92. package/types/skdx-angular-charts-chord.d.ts +11 -4
  93. package/types/skdx-angular-charts-circle-packing.d.ts +23 -0
  94. package/types/skdx-angular-charts-combo.d.ts +12 -0
  95. package/types/skdx-angular-charts-dumbbell.d.ts +26 -0
  96. package/types/skdx-angular-charts-funnel.d.ts +7 -1
  97. package/types/skdx-angular-charts-gantt.d.ts +9 -2
  98. package/types/skdx-angular-charts-gauge.d.ts +36 -0
  99. package/types/skdx-angular-charts-heatmap.d.ts +20 -2
  100. package/types/skdx-angular-charts-histogram.d.ts +34 -0
  101. package/types/skdx-angular-charts-icicle.d.ts +29 -0
  102. package/types/skdx-angular-charts-internal.d.ts +1952 -89
  103. package/types/skdx-angular-charts-linear-gauge.d.ts +29 -0
  104. package/types/skdx-angular-charts-map.d.ts +14 -2
  105. package/types/skdx-angular-charts-marimekko.d.ts +21 -0
  106. package/types/skdx-angular-charts-network.d.ts +25 -0
  107. package/types/skdx-angular-charts-organization.d.ts +25 -0
  108. package/types/skdx-angular-charts-parallel.d.ts +25 -0
  109. package/types/skdx-angular-charts-pareto.d.ts +27 -0
  110. package/types/skdx-angular-charts-pie.d.ts +11 -1
  111. package/types/skdx-angular-charts-polar-area.d.ts +28 -0
  112. package/types/skdx-angular-charts-radar.d.ts +20 -5
  113. package/types/skdx-angular-charts-range.d.ts +29 -0
  114. package/types/skdx-angular-charts-sankey.d.ts +20 -2
  115. package/types/skdx-angular-charts-scatter.d.ts +9 -2
  116. package/types/skdx-angular-charts-sparkline.d.ts +8 -2
  117. package/types/skdx-angular-charts-sunburst.d.ts +23 -2
  118. package/types/skdx-angular-charts-swarm.d.ts +19 -0
  119. package/types/skdx-angular-charts-timeline.d.ts +18 -0
  120. package/types/skdx-angular-charts-tree.d.ts +28 -0
  121. package/types/skdx-angular-charts-treemap.d.ts +18 -2
  122. package/types/skdx-angular-charts-waffle.d.ts +25 -0
  123. package/types/skdx-angular-charts-waterfall.d.ts +17 -3
  124. package/types/skdx-angular-charts.d.ts +22 -1
@@ -0,0 +1,111 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutOrganizationChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
+
5
+ /*
6
+ * Copyright (c) 2026 SkandaDX
7
+ * This file is part of the SkandaDX organization.
8
+ * Licensed under the MIT License. See LICENSE in the repository root.
9
+ */
10
+ /** A tree of boxes with elbow links and optional subtitles: reporting lines, ownership, hierarchies. */
11
+ class SkdxOrganizationChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.data = input.required(/* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
+ /** Root at the top, or at the left. */
17
+ this.orientation = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "orientation" }] : /* istanbul ignore next */ []));
19
+ /** Id (or name) of the node shown as the root. */
20
+ this.rootId = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "rootId" }] : /* istanbul ignore next */ []));
22
+ /** Nodes whose children are hidden. */
23
+ this.collapsed = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "collapsed" }] : /* istanbul ignore next */ []));
25
+ /** Deepest level drawn. */
26
+ this.maxDepth = input(/* @ts-ignore */
27
+ ...(ngDevMode ? [undefined, { debugName: "maxDepth" }] : /* istanbul ignore next */ []));
28
+ /** Write node names. */
29
+ this.labels = input(true, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
31
+ /** Box height in pixels. */
32
+ this.nodeSize = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "nodeSize" }] : /* istanbul ignore next */ []));
34
+ this.layout = computed(() => layoutOrganizationChart({
35
+ ...this.sized(),
36
+ data: this.data(),
37
+ orientation: this.orientation(),
38
+ rootId: this.rootId(),
39
+ collapsed: this.collapsed(),
40
+ maxDepth: this.maxDepth(),
41
+ labels: this.labels(),
42
+ nodeSize: this.nodeSize(),
43
+ }), /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
45
+ }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxOrganizationChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxOrganizationChartComponent, isStandalone: true, selector: "skdx-organization-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, rootId: { classPropertyName: "rootId", publicName: "rootId", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, nodeSize: { classPropertyName: "nodeSize", publicName: "nodeSize", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
48
+ <skdx-chart-root
49
+ [layout]="layout()"
50
+ [options]="options()"
51
+ kind="organization"
52
+ [label]="label() ?? 'Organization chart'"
53
+ [zoomable]="zoomable()"
54
+ [selectionMode]="selectionMode()"
55
+ [editable]="editable()"
56
+ [syncId]="syncId()"
57
+ [crosshair]="syncedCrosshair()"
58
+ [responsive]="!!responsive()"
59
+ (itemClick)="itemClick.emit($event)"
60
+ (dataIssue)="dataIssue.emit($event)"
61
+ (taskChange)="taskChange.emit($event)"
62
+ (hiddenSeriesChange)="toggle($event)"
63
+ (zoomChange)="zoom.set($event)"
64
+ (viewChange)="view.set($event)"
65
+ (selectedChange)="selected.set($event)"
66
+ (highlightedChange)="highlighted.set($event)"
67
+ (syncChange)="sync($event)"
68
+ (measured)="measuredWidth.set($event)"
69
+ ></skdx-chart-root>
70
+ `, 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 }); }
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxOrganizationChartComponent, decorators: [{
73
+ type: Component,
74
+ args: [{
75
+ selector: 'skdx-organization-chart',
76
+ standalone: true,
77
+ changeDetection: ChangeDetectionStrategy.OnPush,
78
+ imports: [SkdxChartRootComponent],
79
+ template: `
80
+ <skdx-chart-root
81
+ [layout]="layout()"
82
+ [options]="options()"
83
+ kind="organization"
84
+ [label]="label() ?? 'Organization chart'"
85
+ [zoomable]="zoomable()"
86
+ [selectionMode]="selectionMode()"
87
+ [editable]="editable()"
88
+ [syncId]="syncId()"
89
+ [crosshair]="syncedCrosshair()"
90
+ [responsive]="!!responsive()"
91
+ (itemClick)="itemClick.emit($event)"
92
+ (dataIssue)="dataIssue.emit($event)"
93
+ (taskChange)="taskChange.emit($event)"
94
+ (hiddenSeriesChange)="toggle($event)"
95
+ (zoomChange)="zoom.set($event)"
96
+ (viewChange)="view.set($event)"
97
+ (selectedChange)="selected.set($event)"
98
+ (highlightedChange)="highlighted.set($event)"
99
+ (syncChange)="sync($event)"
100
+ (measured)="measuredWidth.set($event)"
101
+ ></skdx-chart-root>
102
+ `,
103
+ }]
104
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], rootId: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootId", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], maxDepth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDepth", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], nodeSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeSize", required: false }] }] } });
105
+
106
+ /**
107
+ * Generated bundle index. Do not edit.
108
+ */
109
+
110
+ export { SkdxOrganizationChartComponent };
111
+ //# sourceMappingURL=skdx-angular-charts-organization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-organization.mjs","sources":["../../src/organization/index.ts","../../src/organization/skdx-angular-charts-organization.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 layoutOrganizationChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type ChartItemId,\n type TreeNode,\n} from '@skdx/angular-charts/internal';\n\n/** A tree of boxes with elbow links and optional subtitles: reporting lines, ownership, hierarchies. */\n@Component({\n selector: 'skdx-organization-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=\"organization\"\n [label]=\"label() ?? 'Organization 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 SkdxOrganizationChartComponent extends SkdxSizedBase {\n readonly data = input.required<TreeNode[]>();\n /** Root at the top, or at the left. */\n readonly orientation = input<'vertical' | 'horizontal'>();\n /** Id (or name) of the node shown as the root. */\n readonly rootId = input<ChartItemId>();\n /** Nodes whose children are hidden. */\n readonly collapsed = input<ChartItemId[]>();\n /** Deepest level drawn. */\n readonly maxDepth = input<number>();\n /** Write node names. */\n readonly labels = input(true);\n /** Box height in pixels. */\n readonly nodeSize = input<number>();\n\n protected readonly layout = computed(() =>\n layoutOrganizationChart({\n ...this.sized(),\n data: this.data(),\n orientation: this.orientation(),\n rootId: this.rootId(),\n collapsed: this.collapsed(),\n maxDepth: this.maxDepth(),\n labels: this.labels(),\n nodeSize: this.nodeSize(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutParallelCoordinates, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
+
5
+ /*
6
+ * Copyright (c) 2026 SkandaDX
7
+ * This file is part of the SkandaDX organization.
8
+ * Licensed under the MIT License. See LICENSE in the repository root.
9
+ */
10
+ /** One vertical axis per dimension, each on its own scale, and a line per row through its values. */
11
+ class SkdxParallelCoordinatesChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.dimensions = input.required(/* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "dimensions" }] : /* istanbul ignore next */ []));
16
+ this.data = input.required(/* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
18
+ /** Line opacity; defaults to 0.6, lower above 200 rows. */
19
+ this.opacity = input(/* @ts-ignore */
20
+ ...(ngDevMode ? [undefined, { debugName: "opacity" }] : /* istanbul ignore next */ []));
21
+ this.curve = input(/* @ts-ignore */
22
+ ...(ngDevMode ? [undefined, { debugName: "curve" }] : /* istanbul ignore next */ []));
23
+ /** Draw lines across missing values. */
24
+ this.connectNulls = input(false, /* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "connectNulls" }] : /* istanbul ignore next */ []));
26
+ /** Rows outside these ranges fade. */
27
+ this.filters = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "filters" }] : /* istanbul ignore next */ []));
29
+ this.layout = computed(() => layoutParallelCoordinates({
30
+ ...this.sized(),
31
+ dimensions: this.dimensions(),
32
+ data: this.data(),
33
+ opacity: this.opacity(),
34
+ curve: this.curve(),
35
+ connectNulls: this.connectNulls(),
36
+ filters: this.filters(),
37
+ }), /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxParallelCoordinatesChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxParallelCoordinatesChartComponent, isStandalone: true, selector: "skdx-parallel-coordinates-chart", inputs: { dimensions: { classPropertyName: "dimensions", publicName: "dimensions", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, curve: { classPropertyName: "curve", publicName: "curve", isSignal: true, isRequired: false, transformFunction: null }, connectNulls: { classPropertyName: "connectNulls", publicName: "connectNulls", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
42
+ <skdx-chart-root
43
+ [layout]="layout()"
44
+ [options]="options()"
45
+ kind="parallel"
46
+ [label]="label() ?? 'Parallel coordinates chart'"
47
+ [zoomable]="zoomable()"
48
+ [selectionMode]="selectionMode()"
49
+ [editable]="editable()"
50
+ [syncId]="syncId()"
51
+ [crosshair]="syncedCrosshair()"
52
+ [responsive]="!!responsive()"
53
+ (itemClick)="itemClick.emit($event)"
54
+ (dataIssue)="dataIssue.emit($event)"
55
+ (taskChange)="taskChange.emit($event)"
56
+ (hiddenSeriesChange)="toggle($event)"
57
+ (zoomChange)="zoom.set($event)"
58
+ (viewChange)="view.set($event)"
59
+ (selectedChange)="selected.set($event)"
60
+ (highlightedChange)="highlighted.set($event)"
61
+ (syncChange)="sync($event)"
62
+ (measured)="measuredWidth.set($event)"
63
+ ></skdx-chart-root>
64
+ `, 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 }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxParallelCoordinatesChartComponent, decorators: [{
67
+ type: Component,
68
+ args: [{
69
+ selector: 'skdx-parallel-coordinates-chart',
70
+ standalone: true,
71
+ changeDetection: ChangeDetectionStrategy.OnPush,
72
+ imports: [SkdxChartRootComponent],
73
+ template: `
74
+ <skdx-chart-root
75
+ [layout]="layout()"
76
+ [options]="options()"
77
+ kind="parallel"
78
+ [label]="label() ?? 'Parallel coordinates chart'"
79
+ [zoomable]="zoomable()"
80
+ [selectionMode]="selectionMode()"
81
+ [editable]="editable()"
82
+ [syncId]="syncId()"
83
+ [crosshair]="syncedCrosshair()"
84
+ [responsive]="!!responsive()"
85
+ (itemClick)="itemClick.emit($event)"
86
+ (dataIssue)="dataIssue.emit($event)"
87
+ (taskChange)="taskChange.emit($event)"
88
+ (hiddenSeriesChange)="toggle($event)"
89
+ (zoomChange)="zoom.set($event)"
90
+ (viewChange)="view.set($event)"
91
+ (selectedChange)="selected.set($event)"
92
+ (highlightedChange)="highlighted.set($event)"
93
+ (syncChange)="sync($event)"
94
+ (measured)="measuredWidth.set($event)"
95
+ ></skdx-chart-root>
96
+ `,
97
+ }]
98
+ }], propDecorators: { dimensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "dimensions", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], opacity: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacity", required: false }] }], curve: [{ type: i0.Input, args: [{ isSignal: true, alias: "curve", required: false }] }], connectNulls: [{ type: i0.Input, args: [{ isSignal: true, alias: "connectNulls", required: false }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }] } });
99
+
100
+ /**
101
+ * Generated bundle index. Do not edit.
102
+ */
103
+
104
+ export { SkdxParallelCoordinatesChartComponent };
105
+ //# sourceMappingURL=skdx-angular-charts-parallel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-parallel.mjs","sources":["../../src/parallel/index.ts","../../src/parallel/skdx-angular-charts-parallel.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 layoutParallelCoordinates,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Curve,\n type ParallelDimension,\n type ParallelRow,\n} from '@skdx/angular-charts/internal';\n\n/** One vertical axis per dimension, each on its own scale, and a line per row through its values. */\n@Component({\n selector: 'skdx-parallel-coordinates-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=\"parallel\"\n [label]=\"label() ?? 'Parallel coordinates 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 SkdxParallelCoordinatesChartComponent extends SkdxSizedBase {\n readonly dimensions = input.required<ParallelDimension[]>();\n readonly data = input.required<ParallelRow[]>();\n /** Line opacity; defaults to 0.6, lower above 200 rows. */\n readonly opacity = input<number>();\n readonly curve = input<Curve>();\n /** Draw lines across missing values. */\n readonly connectNulls = input(false);\n /** Rows outside these ranges fade. */\n readonly filters = input<{ key: string; min?: number | undefined; max?: number | undefined }[]>();\n\n protected readonly layout = computed(() =>\n layoutParallelCoordinates({\n ...this.sized(),\n dimensions: this.dimensions(),\n data: this.data(),\n opacity: this.opacity(),\n curve: this.curve(),\n connectNulls: this.connectNulls(),\n filters: this.filters(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutParetoChart, SkdxChartRootComponent } from '@skdx/angular-charts/internal';
4
+
5
+ /*
6
+ * Copyright (c) 2026 SkandaDX
7
+ * This file is part of the SkandaDX organization.
8
+ * Licensed under the MIT License. See LICENSE in the repository root.
9
+ */
10
+ /** Categories sorted by value with the cumulative share as a line on the right axis. */
11
+ class SkdxParetoChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.data = input.required(/* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
+ /** A cumulative-share reference line, e.g. 0.8. */
17
+ this.threshold = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "threshold" }] : /* istanbul ignore next */ []));
19
+ /** Name of the cumulative line. */
20
+ this.cumulativeLabel = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "cumulativeLabel" }] : /* istanbul ignore next */ []));
22
+ /** Name of the bars. */
23
+ this.name = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
25
+ this.labels = input(false, /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
27
+ this.radius = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "radius" }] : /* istanbul ignore next */ []));
29
+ this.barGap = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "barGap" }] : /* istanbul ignore next */ []));
31
+ this.barWidth = input(/* @ts-ignore */
32
+ ...(ngDevMode ? [undefined, { debugName: "barWidth" }] : /* istanbul ignore next */ []));
33
+ this.xAxis = input(/* @ts-ignore */
34
+ ...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
35
+ this.yAxis = input(/* @ts-ignore */
36
+ ...(ngDevMode ? [undefined, { debugName: "yAxis" }] : /* istanbul ignore next */ []));
37
+ this.brush = input(false, /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "brush" }] : /* istanbul ignore next */ []));
39
+ this.crosshair = input(false, /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "crosshair" }] : /* istanbul ignore next */ []));
41
+ this.layout = computed(() => layoutParetoChart({
42
+ ...this.sized(),
43
+ data: this.data(),
44
+ threshold: this.threshold(),
45
+ cumulativeLabel: this.cumulativeLabel(),
46
+ name: this.name(),
47
+ labels: this.labels(),
48
+ radius: this.radius(),
49
+ barGap: this.barGap(),
50
+ barWidth: this.barWidth(),
51
+ xAxis: this.xAxis(),
52
+ yAxis: this.yAxis(),
53
+ brush: this.brush(),
54
+ crosshair: this.crosshair(),
55
+ }), /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxParetoChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxParetoChartComponent, isStandalone: true, selector: "skdx-pareto-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, cumulativeLabel: { classPropertyName: "cumulativeLabel", publicName: "cumulativeLabel", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, barGap: { classPropertyName: "barGap", publicName: "barGap", isSignal: true, isRequired: false, transformFunction: null }, barWidth: { classPropertyName: "barWidth", publicName: "barWidth", 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 }, brush: { classPropertyName: "brush", publicName: "brush", isSignal: true, isRequired: false, transformFunction: null }, crosshair: { classPropertyName: "crosshair", publicName: "crosshair", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
60
+ <skdx-chart-root
61
+ [layout]="layout()"
62
+ [options]="options()"
63
+ kind="pareto"
64
+ [label]="label() ?? 'Pareto 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)"
81
+ ></skdx-chart-root>
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 }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxParetoChartComponent, decorators: [{
85
+ type: Component,
86
+ args: [{
87
+ selector: 'skdx-pareto-chart',
88
+ standalone: true,
89
+ changeDetection: ChangeDetectionStrategy.OnPush,
90
+ imports: [SkdxChartRootComponent],
91
+ template: `
92
+ <skdx-chart-root
93
+ [layout]="layout()"
94
+ [options]="options()"
95
+ kind="pareto"
96
+ [label]="label() ?? 'Pareto 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)"
113
+ ></skdx-chart-root>
114
+ `,
115
+ }]
116
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }], cumulativeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cumulativeLabel", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], barGap: [{ type: i0.Input, args: [{ isSignal: true, alias: "barGap", required: false }] }], barWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "barWidth", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }], yAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "yAxis", required: false }] }], brush: [{ type: i0.Input, args: [{ isSignal: true, alias: "brush", required: false }] }], crosshair: [{ type: i0.Input, args: [{ isSignal: true, alias: "crosshair", required: false }] }] } });
117
+
118
+ /**
119
+ * Generated bundle index. Do not edit.
120
+ */
121
+
122
+ export { SkdxParetoChartComponent };
123
+ //# sourceMappingURL=skdx-angular-charts-pareto.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-pareto.mjs","sources":["../../src/pareto/index.ts","../../src/pareto/skdx-angular-charts-pareto.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 layoutParetoChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type AxisOptions,\n type Datum,\n type XAxisOptions,\n} from '@skdx/angular-charts/internal';\n\n/** Categories sorted by value with the cumulative share as a line on the right axis. */\n@Component({\n selector: 'skdx-pareto-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=\"pareto\"\n [label]=\"label() ?? 'Pareto 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 SkdxParetoChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** A cumulative-share reference line, e.g. 0.8. */\n readonly threshold = input<number>();\n /** Name of the cumulative line. */\n readonly cumulativeLabel = input<string>();\n /** Name of the bars. */\n readonly name = input<string>();\n readonly labels = input(false);\n readonly radius = input<number>();\n readonly barGap = input<number>();\n readonly barWidth = input<number>();\n readonly xAxis = input<XAxisOptions>();\n readonly yAxis = input<AxisOptions>();\n readonly brush = input(false);\n readonly crosshair = input(false);\n\n protected readonly layout = computed(() =>\n layoutParetoChart({\n ...this.sized(),\n data: this.data(),\n threshold: this.threshold(),\n cumulativeLabel: this.cumulativeLabel(),\n name: this.name(),\n labels: this.labels(),\n radius: this.radius(),\n barGap: this.barGap(),\n barWidth: this.barWidth(),\n xAxis: this.xAxis(),\n yAxis: this.yAxis(),\n brush: this.brush(),\n crosshair: this.crosshair(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -13,12 +13,27 @@ class SkdxPieChartComponent extends SkdxSizedBase {
13
13
  super(...arguments);
14
14
  this.data = input.required(/* @ts-ignore */
15
15
  ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
16
+ /** A donut is a pie with innerRadius 0.6 unless set. */
17
+ this.variant = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
16
19
  /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */
17
20
  this.innerRadius = input(/* @ts-ignore */
18
21
  ...(ngDevMode ? [undefined, { debugName: "innerRadius" }] : /* istanbul ignore next */ []));
22
+ /** Outer radius as a fraction of the space available. */
23
+ this.outerRadius = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "outerRadius" }] : /* istanbul ignore next */ []));
19
25
  /** Write each slice's name and share on the slice. */
20
26
  this.labels = input(false, /* @ts-ignore */
21
27
  ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
28
+ /** Inside the slice, or outside with a connector. */
29
+ this.labelPosition = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "labelPosition" }] : /* istanbul ignore next */ []));
31
+ /** Gap between slices, in degrees. */
32
+ this.padAngle = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "padAngle" }] : /* istanbul ignore next */ []));
34
+ /** Order slices by value. */
35
+ this.sort = input(/* @ts-ignore */
36
+ ...(ngDevMode ? [undefined, { debugName: "sort" }] : /* istanbul ignore next */ []));
22
37
  /** Degrees clockwise from 12 o'clock where the first slice starts. */
23
38
  this.startAngle = input(/* @ts-ignore */
24
39
  ...(ngDevMode ? [undefined, { debugName: "startAngle" }] : /* istanbul ignore next */ []));
@@ -31,8 +46,13 @@ class SkdxPieChartComponent extends SkdxSizedBase {
31
46
  this.layout = computed(() => layoutPieChart({
32
47
  ...this.sized(),
33
48
  data: this.data(),
49
+ variant: this.variant(),
34
50
  innerRadius: this.innerRadius(),
51
+ outerRadius: this.outerRadius(),
35
52
  labels: this.labels(),
53
+ labelPosition: this.labelPosition(),
54
+ padAngle: this.padAngle(),
55
+ sort: this.sort(),
36
56
  startAngle: this.startAngle(),
37
57
  endAngle: this.endAngle(),
38
58
  centerLabel: this.centerLabel(),
@@ -40,19 +60,30 @@ class SkdxPieChartComponent extends SkdxSizedBase {
40
60
  ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
41
61
  }
42
62
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxPieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxPieChartComponent, isStandalone: true, selector: "skdx-pie-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, startAngle: { classPropertyName: "startAngle", publicName: "startAngle", isSignal: true, isRequired: false, transformFunction: null }, endAngle: { classPropertyName: "endAngle", publicName: "endAngle", isSignal: true, isRequired: false, transformFunction: null }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxPieChartComponent, isStandalone: true, selector: "skdx-pie-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, outerRadius: { classPropertyName: "outerRadius", publicName: "outerRadius", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, padAngle: { classPropertyName: "padAngle", publicName: "padAngle", 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 }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
44
64
  <skdx-chart-root
45
65
  [layout]="layout()"
66
+ [options]="options()"
46
67
  kind="pie"
47
68
  [label]="label() ?? 'Pie chart'"
48
69
  [zoomable]="zoomable()"
49
- [responsive]="responsive()"
70
+ [selectionMode]="selectionMode()"
71
+ [editable]="editable()"
72
+ [syncId]="syncId()"
73
+ [crosshair]="syncedCrosshair()"
74
+ [responsive]="!!responsive()"
50
75
  (itemClick)="itemClick.emit($event)"
76
+ (dataIssue)="dataIssue.emit($event)"
77
+ (taskChange)="taskChange.emit($event)"
51
78
  (hiddenSeriesChange)="toggle($event)"
52
79
  (zoomChange)="zoom.set($event)"
80
+ (viewChange)="view.set($event)"
81
+ (selectedChange)="selected.set($event)"
82
+ (highlightedChange)="highlighted.set($event)"
83
+ (syncChange)="sync($event)"
53
84
  (measured)="measuredWidth.set($event)"
54
85
  ></skdx-chart-root>
55
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ `, 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 }); }
56
87
  }
57
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxPieChartComponent, decorators: [{
58
89
  type: Component,
@@ -64,18 +95,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
64
95
  template: `
65
96
  <skdx-chart-root
66
97
  [layout]="layout()"
98
+ [options]="options()"
67
99
  kind="pie"
68
100
  [label]="label() ?? 'Pie chart'"
69
101
  [zoomable]="zoomable()"
70
- [responsive]="responsive()"
102
+ [selectionMode]="selectionMode()"
103
+ [editable]="editable()"
104
+ [syncId]="syncId()"
105
+ [crosshair]="syncedCrosshair()"
106
+ [responsive]="!!responsive()"
71
107
  (itemClick)="itemClick.emit($event)"
108
+ (dataIssue)="dataIssue.emit($event)"
109
+ (taskChange)="taskChange.emit($event)"
72
110
  (hiddenSeriesChange)="toggle($event)"
73
111
  (zoomChange)="zoom.set($event)"
112
+ (viewChange)="view.set($event)"
113
+ (selectedChange)="selected.set($event)"
114
+ (highlightedChange)="highlighted.set($event)"
115
+ (syncChange)="sync($event)"
74
116
  (measured)="measuredWidth.set($event)"
75
117
  ></skdx-chart-root>
76
118
  `,
77
119
  }]
78
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], startAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAngle", required: false }] }], endAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "endAngle", required: false }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }] } });
120
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], outerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "outerRadius", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], padAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "padAngle", 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 }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }] } });
79
121
 
80
122
  /**
81
123
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-pie.mjs","sources":["../../src/pie/index.ts","../../src/pie/skdx-angular-charts-pie.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutPieChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Datum,\n} from '@skdx/angular-charts/internal';\n\n/** A pie, a donut when `innerRadius` is set, or a half circle with `startAngle`/`endAngle`; one slice per datum. */\n@Component({\n selector: 'skdx-pie-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"pie\"\n [label]=\"label() ?? 'Pie chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxPieChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */\n readonly innerRadius = input<number>();\n /** Write each slice's name and share on the slice. */\n readonly labels = input(false);\n /** Degrees clockwise from 12 o'clock where the first slice starts. */\n readonly startAngle = input<number>();\n /** Degrees where the last slice ends; -90/90 makes a half circle. */\n readonly endAngle = input<number>();\n /** Text in the middle of a donut. */\n readonly centerLabel = input<string>();\n\n protected readonly layout = computed(() =>\n layoutPieChart({\n ...this.sized(),\n data: this.data(),\n innerRadius: this.innerRadius(),\n labels: this.labels(),\n startAngle: this.startAngle(),\n endAngle: this.endAngle(),\n centerLabel: this.centerLabel(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skdx-angular-charts-pie.mjs","sources":["../../src/pie/index.ts","../../src/pie/skdx-angular-charts-pie.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutPieChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Datum,\n} from '@skdx/angular-charts/internal';\n\n/** A pie, a donut when `innerRadius` is set, or a half circle with `startAngle`/`endAngle`; one slice per datum. */\n@Component({\n selector: 'skdx-pie-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"pie\"\n [label]=\"label() ?? 'Pie 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 SkdxPieChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n /** A donut is a pie with innerRadius 0.6 unless set. */\n readonly variant = input<'pie' | 'donut'>();\n /** Hole radius as a fraction of the outer radius: 0 is a pie, 0.6 a donut. */\n readonly innerRadius = input<number>();\n /** Outer radius as a fraction of the space available. */\n readonly outerRadius = input<number>();\n /** Write each slice's name and share on the slice. */\n readonly labels = input(false);\n /** Inside the slice, or outside with a connector. */\n readonly labelPosition = input<'inside' | 'outside'>();\n /** Gap between slices, in degrees. */\n readonly padAngle = input<number>();\n /** Order slices by value. */\n readonly sort = input<'asc' | 'desc'>();\n /** Degrees clockwise from 12 o'clock where the first slice starts. */\n readonly startAngle = input<number>();\n /** Degrees where the last slice ends; -90/90 makes a half circle. */\n readonly endAngle = input<number>();\n /** Text in the middle of a donut. */\n readonly centerLabel = input<string>();\n\n protected readonly layout = computed(() =>\n layoutPieChart({\n ...this.sized(),\n data: this.data(),\n variant: this.variant(),\n innerRadius: this.innerRadius(),\n outerRadius: this.outerRadius(),\n labels: this.labels(),\n labelPosition: this.labelPosition(),\n padAngle: this.padAngle(),\n sort: this.sort(),\n startAngle: this.startAngle(),\n endAngle: this.endAngle(),\n centerLabel: this.centerLabel(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}