@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,7 +7,7 @@ import { SkdxChartBase, layoutLineChart, 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
- /** One polyline per series with a dot per value. */
10
+ /** One polyline per series with a dot per value; series may also be bars, areas or ranges. */
11
11
  class SkdxLineChartComponent extends SkdxChartBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -18,10 +18,27 @@ class SkdxLineChartComponent extends SkdxChartBase {
18
18
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: SkdxLineChartComponent, isStandalone: true, selector: "skdx-line-chart", usesInheritance: true, ngImport: i0, template: `
19
19
  <skdx-chart-root
20
20
  [layout]="layout()"
21
+ [options]="options()"
21
22
  kind="line"
22
23
  [label]="label() ?? 'Line chart'"
24
+ [zoomable]="zoomable()"
25
+ [selectionMode]="selectionMode()"
26
+ [editable]="editable()"
27
+ [syncId]="syncId()"
28
+ [crosshair]="syncedCrosshair()"
29
+ [responsive]="!!responsive()"
30
+ (itemClick)="itemClick.emit($event)"
31
+ (dataIssue)="dataIssue.emit($event)"
32
+ (taskChange)="taskChange.emit($event)"
33
+ (hiddenSeriesChange)="toggle($event)"
34
+ (zoomChange)="zoom.set($event)"
35
+ (viewChange)="view.set($event)"
36
+ (selectedChange)="selected.set($event)"
37
+ (highlightedChange)="highlighted.set($event)"
38
+ (syncChange)="sync($event)"
39
+ (measured)="measuredWidth.set($event)"
23
40
  ></skdx-chart-root>
24
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
+ `, 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 }); }
25
42
  }
26
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxLineChartComponent, decorators: [{
27
44
  type: Component,
@@ -33,8 +50,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
33
50
  template: `
34
51
  <skdx-chart-root
35
52
  [layout]="layout()"
53
+ [options]="options()"
36
54
  kind="line"
37
55
  [label]="label() ?? 'Line chart'"
56
+ [zoomable]="zoomable()"
57
+ [selectionMode]="selectionMode()"
58
+ [editable]="editable()"
59
+ [syncId]="syncId()"
60
+ [crosshair]="syncedCrosshair()"
61
+ [responsive]="!!responsive()"
62
+ (itemClick)="itemClick.emit($event)"
63
+ (dataIssue)="dataIssue.emit($event)"
64
+ (taskChange)="taskChange.emit($event)"
65
+ (hiddenSeriesChange)="toggle($event)"
66
+ (zoomChange)="zoom.set($event)"
67
+ (viewChange)="view.set($event)"
68
+ (selectedChange)="selected.set($event)"
69
+ (highlightedChange)="highlighted.set($event)"
70
+ (syncChange)="sync($event)"
71
+ (measured)="measuredWidth.set($event)"
38
72
  ></skdx-chart-root>
39
73
  `,
40
74
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-line.mjs","sources":["../../src/line/index.ts","../../src/line/skdx-angular-charts-line.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutLineChart,\n SkdxChartBase,\n SkdxChartRootComponent,\n} from '@skdx/angular-charts/internal';\n\n/** One polyline per series with a dot per value. */\n@Component({\n selector: 'skdx-line-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"line\"\n [label]=\"label() ?? 'Line chart'\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxLineChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutLineChart(this.input()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AAcM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAbzD,IAAA,WAAA,GAAA;;AAcqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AAC1E,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,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,iBAAiB;AAC3B,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-line.mjs","sources":["../../src/line/index.ts","../../src/line/skdx-angular-charts-line.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport {\n layoutLineChart,\n SkdxChartBase,\n SkdxChartRootComponent,\n} from '@skdx/angular-charts/internal';\n\n/** One polyline per series with a dot per value; series may also be bars, areas or ranges. */\n@Component({\n selector: 'skdx-line-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"line\"\n [label]=\"label() ?? 'Line 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 SkdxLineChartComponent extends SkdxChartBase {\n protected readonly layout = computed(() => layoutLineChart(this.input()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAUH;AA+BM,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AA9BzD,IAAA,WAAA,GAAA;;AA+BqB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;mFAAC;AAC1E,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBvB;;;;;;;;;;;;;;;;;;;;;;;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,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA9BlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA;AACF,iBAAA;;;AC5CD;;AAEG;;"}
@@ -0,0 +1,119 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutLinearGauge, 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 single reading on a straight scale with bands and a target: the bullet engine with gauge semantics. */
11
+ class SkdxLinearGaugeComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ /** The reading. */
15
+ this.value = input.required(/* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
17
+ /** Scale start. Defaults to 0. */
18
+ this.min = input(/* @ts-ignore */
19
+ ...(ngDevMode ? [undefined, { debugName: "min" }] : /* istanbul ignore next */ []));
20
+ /** Scale end. Defaults to 100 or the largest of value, target and bands. */
21
+ this.max = input(/* @ts-ignore */
22
+ ...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
23
+ /** A marker at this value. */
24
+ this.target = input(/* @ts-ignore */
25
+ ...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
26
+ /** Threshold sectors in value units. */
27
+ this.bands = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "bands" }] : /* istanbul ignore next */ []));
29
+ this.orientation = input(/* @ts-ignore */
30
+ ...(ngDevMode ? [undefined, { debugName: "orientation" }] : /* istanbul ignore next */ []));
31
+ /** The metric name, written before the scale and in tooltips. */
32
+ this.caption = input(/* @ts-ignore */
33
+ ...(ngDevMode ? [undefined, { debugName: "caption" }] : /* istanbul ignore next */ []));
34
+ /** Write the value after the bar. */
35
+ this.labels = input(true, /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
37
+ /** Approximate tick count of the scale. */
38
+ this.ticks = input(/* @ts-ignore */
39
+ ...(ngDevMode ? [undefined, { debugName: "ticks" }] : /* istanbul ignore next */ []));
40
+ this.layout = computed(() => layoutLinearGauge({
41
+ ...this.sized(),
42
+ value: this.value(),
43
+ min: this.min(),
44
+ max: this.max(),
45
+ target: this.target(),
46
+ bands: this.bands(),
47
+ orientation: this.orientation(),
48
+ caption: this.caption(),
49
+ labels: this.labels(),
50
+ ticks: this.ticks(),
51
+ }), /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxLinearGaugeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxLinearGaugeComponent, isStandalone: true, selector: "skdx-linear-gauge", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, bands: { classPropertyName: "bands", publicName: "bands", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, ticks: { classPropertyName: "ticks", publicName: "ticks", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
56
+ <skdx-chart-root
57
+ [layout]="layout()"
58
+ [options]="options()"
59
+ kind="linear-gauge"
60
+ [label]="label() ?? 'Linear gauge'"
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)"
77
+ ></skdx-chart-root>
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 }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxLinearGaugeComponent, decorators: [{
81
+ type: Component,
82
+ args: [{
83
+ selector: 'skdx-linear-gauge',
84
+ standalone: true,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ imports: [SkdxChartRootComponent],
87
+ template: `
88
+ <skdx-chart-root
89
+ [layout]="layout()"
90
+ [options]="options()"
91
+ kind="linear-gauge"
92
+ [label]="label() ?? 'Linear gauge'"
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)"
109
+ ></skdx-chart-root>
110
+ `,
111
+ }]
112
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], bands: [{ type: i0.Input, args: [{ isSignal: true, alias: "bands", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], ticks: [{ type: i0.Input, args: [{ isSignal: true, alias: "ticks", required: false }] }] } });
113
+
114
+ /**
115
+ * Generated bundle index. Do not edit.
116
+ */
117
+
118
+ export { SkdxLinearGaugeComponent };
119
+ //# sourceMappingURL=skdx-angular-charts-linear-gauge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-linear-gauge.mjs","sources":["../../src/linear-gauge/index.ts","../../src/linear-gauge/skdx-angular-charts-linear-gauge.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 layoutLinearGauge,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Band,\n} from '@skdx/angular-charts/internal';\n\n/** A single reading on a straight scale with bands and a target: the bullet engine with gauge semantics. */\n@Component({\n selector: 'skdx-linear-gauge',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"linear-gauge\"\n [label]=\"label() ?? 'Linear gauge'\"\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 SkdxLinearGaugeComponent extends SkdxSizedBase {\n /** The reading. */\n readonly value = input.required<number>();\n /** Scale start. Defaults to 0. */\n readonly min = input<number>();\n /** Scale end. Defaults to 100 or the largest of value, target and bands. */\n readonly max = input<number>();\n /** A marker at this value. */\n readonly target = input<number>();\n /** Threshold sectors in value units. */\n readonly bands = input<Band[]>();\n readonly orientation = input<'horizontal' | 'vertical'>();\n /** The metric name, written before the scale and in tooltips. */\n readonly caption = input<string>();\n /** Write the value after the bar. */\n readonly labels = input(true);\n /** Approximate tick count of the scale. */\n readonly ticks = input<number>();\n\n protected readonly layout = computed(() =>\n layoutLinearGauge({\n ...this.sized(),\n value: this.value(),\n min: this.min(),\n max: this.max(),\n target: this.target(),\n bands: this.bands(),\n orientation: this.orientation(),\n caption: this.caption(),\n labels: this.labels(),\n ticks: this.ticks(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AA+BM,MAAO,wBAAyB,SAAQ,aAAa,CAAA;AA9B3D,IAAA,WAAA,GAAA;;;QAgCW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAU;;AAEhC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK;2FAAU;;AAErB,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK;2FAAU;;AAErB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAU;;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA6B;;AAEhD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK;+FAAU;;QAEzB,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI;mFAAC;;AAEpB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AAEb,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,iBAAiB,CAAC;YAChB,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACpB,CAAC;mFACH;AACF,IAAA;8GAjCY,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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;;;AC7CD;;AAEG;;"}
@@ -7,7 +7,7 @@ import { SkdxSizedBase, layoutMap, SkdxChartRootComponent } from '@skdx/angular-
7
7
  * This file is part of the SkandaDX organization.
8
8
  * Licensed under the MIT License. See LICENSE in the repository root.
9
9
  */
10
- /** Choropleth of GeoJSON-shaped regions, opacity by value. */
10
+ /** A choropleth of GeoJSON regions, opacity by value. */
11
11
  class SkdxMapChartComponent extends SkdxSizedBase {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -16,13 +16,65 @@ class SkdxMapChartComponent extends SkdxSizedBase {
16
16
  /** The region color; each region's opacity follows its value. */
17
17
  this.color = input(/* @ts-ignore */
18
18
  ...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
19
- this.l = computed(() => layoutMap({ ...this.sized(), features: this.features(), color: this.color() }), /* @ts-ignore */
20
- ...(ngDevMode ? [{ debugName: "l" }] : /* istanbul ignore next */ []));
19
+ /** A full color scale for the regions. */
20
+ this.colorScale = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "colorScale" }] : /* istanbul ignore next */ []));
22
+ /** Draw the color scale under the map. */
23
+ this.colorLegend = input(false, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "colorLegend" }] : /* istanbul ignore next */ []));
25
+ this.projection = input(/* @ts-ignore */
26
+ ...(ngDevMode ? [undefined, { debugName: "projection" }] : /* istanbul ignore next */ []));
27
+ /** A marker layer; markers with a value are sized by it. */
28
+ this.points = input(/* @ts-ignore */
29
+ ...(ngDevMode ? [undefined, { debugName: "points" }] : /* istanbul ignore next */ []));
30
+ /** A line layer: routes and connections. */
31
+ this.lines = input(/* @ts-ignore */
32
+ ...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
33
+ /** Marker radius range in pixels. */
34
+ this.sizeRange = input(/* @ts-ignore */
35
+ ...(ngDevMode ? [undefined, { debugName: "sizeRange" }] : /* istanbul ignore next */ []));
36
+ /** Write each region's name at its centre. */
37
+ this.labels = input(false, /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
39
+ this.layout = computed(() => layoutMap({
40
+ ...this.sized(),
41
+ features: this.features(),
42
+ color: this.color(),
43
+ colorScale: this.colorScale(),
44
+ colorLegend: this.colorLegend(),
45
+ projection: this.projection(),
46
+ points: this.points(),
47
+ lines: this.lines(),
48
+ sizeRange: this.sizeRange(),
49
+ labels: this.labels(),
50
+ }), /* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
21
52
  }
22
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMapChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxMapChartComponent, isStandalone: true, selector: "skdx-map-chart", inputs: { features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
24
- <skdx-chart-root [layout]="l()" kind="map" [label]="label() ?? 'Map'"></skdx-chart-root>
25
- `, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxMapChartComponent, isStandalone: true, selector: "skdx-map-chart", inputs: { features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, colorScale: { classPropertyName: "colorScale", publicName: "colorScale", isSignal: true, isRequired: false, transformFunction: null }, colorLegend: { classPropertyName: "colorLegend", publicName: "colorLegend", isSignal: true, isRequired: false, transformFunction: null }, projection: { classPropertyName: "projection", publicName: "projection", isSignal: true, isRequired: false, transformFunction: null }, points: { classPropertyName: "points", publicName: "points", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, sizeRange: { classPropertyName: "sizeRange", publicName: "sizeRange", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
55
+ <skdx-chart-root
56
+ [layout]="layout()"
57
+ [options]="options()"
58
+ kind="map"
59
+ [label]="label() ?? 'Map'"
60
+ [zoomable]="zoomable()"
61
+ [selectionMode]="selectionMode()"
62
+ [editable]="editable()"
63
+ [syncId]="syncId()"
64
+ [crosshair]="syncedCrosshair()"
65
+ [responsive]="!!responsive()"
66
+ (itemClick)="itemClick.emit($event)"
67
+ (dataIssue)="dataIssue.emit($event)"
68
+ (taskChange)="taskChange.emit($event)"
69
+ (hiddenSeriesChange)="toggle($event)"
70
+ (zoomChange)="zoom.set($event)"
71
+ (viewChange)="view.set($event)"
72
+ (selectedChange)="selected.set($event)"
73
+ (highlightedChange)="highlighted.set($event)"
74
+ (syncChange)="sync($event)"
75
+ (measured)="measuredWidth.set($event)"
76
+ ></skdx-chart-root>
77
+ `, 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 }); }
26
78
  }
27
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMapChartComponent, decorators: [{
28
80
  type: Component,
@@ -32,10 +84,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
32
84
  changeDetection: ChangeDetectionStrategy.OnPush,
33
85
  imports: [SkdxChartRootComponent],
34
86
  template: `
35
- <skdx-chart-root [layout]="l()" kind="map" [label]="label() ?? 'Map'"></skdx-chart-root>
87
+ <skdx-chart-root
88
+ [layout]="layout()"
89
+ [options]="options()"
90
+ kind="map"
91
+ [label]="label() ?? 'Map'"
92
+ [zoomable]="zoomable()"
93
+ [selectionMode]="selectionMode()"
94
+ [editable]="editable()"
95
+ [syncId]="syncId()"
96
+ [crosshair]="syncedCrosshair()"
97
+ [responsive]="!!responsive()"
98
+ (itemClick)="itemClick.emit($event)"
99
+ (dataIssue)="dataIssue.emit($event)"
100
+ (taskChange)="taskChange.emit($event)"
101
+ (hiddenSeriesChange)="toggle($event)"
102
+ (zoomChange)="zoom.set($event)"
103
+ (viewChange)="view.set($event)"
104
+ (selectedChange)="selected.set($event)"
105
+ (highlightedChange)="highlighted.set($event)"
106
+ (syncChange)="sync($event)"
107
+ (measured)="measuredWidth.set($event)"
108
+ ></skdx-chart-root>
36
109
  `,
37
110
  }]
38
- }], propDecorators: { features: [{ type: i0.Input, args: [{ isSignal: true, alias: "features", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
111
+ }], propDecorators: { features: [{ type: i0.Input, args: [{ isSignal: true, alias: "features", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], colorScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorScale", required: false }] }], colorLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorLegend", required: false }] }], projection: [{ type: i0.Input, args: [{ isSignal: true, alias: "projection", required: false }] }], points: [{ type: i0.Input, args: [{ isSignal: true, alias: "points", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], sizeRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizeRange", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }] } });
39
112
 
40
113
  /**
41
114
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"skdx-angular-charts-map.mjs","sources":["../../src/map/index.ts","../../src/map/skdx-angular-charts-map.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutMap,\n type MapFeature,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** Choropleth of GeoJSON-shaped regions, opacity by value. */\n@Component({\n selector: 'skdx-map-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root [layout]=\"l()\" kind=\"map\" [label]=\"label() ?? 'Map'\"></skdx-chart-root>\n `,\n})\nexport class SkdxMapChartComponent extends SkdxSizedBase {\n readonly features = input.required<MapFeature[]>();\n /** The region color; each region's opacity follows its value. */\n readonly color = input<string>();\n\n protected readonly l = computed(() =>\n layoutMap({ ...this.sized(), features: this.features(), color: this.color() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAUM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AATxD,IAAA,WAAA,GAAA;;QAUW,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ;qFAAgB;;AAEzC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK;6FAAU;AAEb,QAAA,IAAA,CAAA,CAAC,GAAG,QAAQ,CAAC,MAC9B,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;8EAC/E;AACF,IAAA;8GARY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJtB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAHS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKrB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;ACxBD;;AAEG;;"}
1
+ {"version":3,"file":"skdx-angular-charts-map.mjs","sources":["../../src/map/index.ts","../../src/map/skdx-angular-charts-map.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutMap,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type ColorScale,\n type MapFeature,\n type MapLine,\n type MapPoint,\n} from '@skdx/angular-charts/internal';\n\n/** A choropleth of GeoJSON regions, opacity by value. */\n@Component({\n selector: 'skdx-map-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"map\"\n [label]=\"label() ?? 'Map'\"\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 SkdxMapChartComponent extends SkdxSizedBase {\n readonly features = input.required<MapFeature[]>();\n /** The region color; each region's opacity follows its value. */\n readonly color = input<string>();\n /** A full color scale for the regions. */\n readonly colorScale = input<ColorScale>();\n /** Draw the color scale under the map. */\n readonly colorLegend = input(false);\n readonly projection = input<'equirectangular' | 'mercator'>();\n /** A marker layer; markers with a value are sized by it. */\n readonly points = input<MapPoint[]>();\n /** A line layer: routes and connections. */\n readonly lines = input<MapLine[]>();\n /** Marker radius range in pixels. */\n readonly sizeRange = input<[number, number]>();\n /** Write each region's name at its centre. */\n readonly labels = input(false);\n\n protected readonly layout = computed(() =>\n layoutMap({\n ...this.sized(),\n features: this.features(),\n color: this.color(),\n colorScale: this.colorScale(),\n colorLegend: this.colorLegend(),\n projection: this.projection(),\n points: this.points(),\n lines: this.lines(),\n sizeRange: this.sizeRange(),\n labels: this.labels(),\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,103 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutMarimekkoChart, 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
+ /** Columns as wide as their total with segments stacked to 100% inside: size and mix in one chart. */
11
+ class SkdxMarimekkoChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ /** Segment names in stacking order, one color each. */
15
+ this.segments = input.required(/* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "segments" }] : /* istanbul ignore next */ []));
17
+ this.data = input.required(/* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
19
+ /** Write segment shares inside cells wide enough. */
20
+ this.labels = input(false, /* @ts-ignore */
21
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
22
+ /** Gap between columns as a share of the plot width. */
23
+ this.gap = input(/* @ts-ignore */
24
+ ...(ngDevMode ? [undefined, { debugName: "gap" }] : /* istanbul ignore next */ []));
25
+ /** How column totals are written. */
26
+ this.xAxis = input(/* @ts-ignore */
27
+ ...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
28
+ this.layout = computed(() => layoutMarimekkoChart({
29
+ ...this.sized(),
30
+ segments: this.segments(),
31
+ data: this.data(),
32
+ labels: this.labels(),
33
+ gap: this.gap(),
34
+ xAxis: this.xAxis(),
35
+ }), /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMarimekkoChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxMarimekkoChartComponent, isStandalone: true, selector: "skdx-marimekko-chart", inputs: { segments: { classPropertyName: "segments", publicName: "segments", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, xAxis: { classPropertyName: "xAxis", publicName: "xAxis", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
40
+ <skdx-chart-root
41
+ [layout]="layout()"
42
+ [options]="options()"
43
+ kind="marimekko"
44
+ [label]="label() ?? 'Marimekko chart'"
45
+ [zoomable]="zoomable()"
46
+ [selectionMode]="selectionMode()"
47
+ [editable]="editable()"
48
+ [syncId]="syncId()"
49
+ [crosshair]="syncedCrosshair()"
50
+ [responsive]="!!responsive()"
51
+ (itemClick)="itemClick.emit($event)"
52
+ (dataIssue)="dataIssue.emit($event)"
53
+ (taskChange)="taskChange.emit($event)"
54
+ (hiddenSeriesChange)="toggle($event)"
55
+ (zoomChange)="zoom.set($event)"
56
+ (viewChange)="view.set($event)"
57
+ (selectedChange)="selected.set($event)"
58
+ (highlightedChange)="highlighted.set($event)"
59
+ (syncChange)="sync($event)"
60
+ (measured)="measuredWidth.set($event)"
61
+ ></skdx-chart-root>
62
+ `, 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 }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxMarimekkoChartComponent, decorators: [{
65
+ type: Component,
66
+ args: [{
67
+ selector: 'skdx-marimekko-chart',
68
+ standalone: true,
69
+ changeDetection: ChangeDetectionStrategy.OnPush,
70
+ imports: [SkdxChartRootComponent],
71
+ template: `
72
+ <skdx-chart-root
73
+ [layout]="layout()"
74
+ [options]="options()"
75
+ kind="marimekko"
76
+ [label]="label() ?? 'Marimekko chart'"
77
+ [zoomable]="zoomable()"
78
+ [selectionMode]="selectionMode()"
79
+ [editable]="editable()"
80
+ [syncId]="syncId()"
81
+ [crosshair]="syncedCrosshair()"
82
+ [responsive]="!!responsive()"
83
+ (itemClick)="itemClick.emit($event)"
84
+ (dataIssue)="dataIssue.emit($event)"
85
+ (taskChange)="taskChange.emit($event)"
86
+ (hiddenSeriesChange)="toggle($event)"
87
+ (zoomChange)="zoom.set($event)"
88
+ (viewChange)="view.set($event)"
89
+ (selectedChange)="selected.set($event)"
90
+ (highlightedChange)="highlighted.set($event)"
91
+ (syncChange)="sync($event)"
92
+ (measured)="measuredWidth.set($event)"
93
+ ></skdx-chart-root>
94
+ `,
95
+ }]
96
+ }], propDecorators: { segments: [{ type: i0.Input, args: [{ isSignal: true, alias: "segments", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }] } });
97
+
98
+ /**
99
+ * Generated bundle index. Do not edit.
100
+ */
101
+
102
+ export { SkdxMarimekkoChartComponent };
103
+ //# sourceMappingURL=skdx-angular-charts-marimekko.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-marimekko.mjs","sources":["../../src/marimekko/index.ts","../../src/marimekko/skdx-angular-charts-marimekko.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 layoutMarimekkoChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type AxisOptions,\n type Datum,\n type MarimekkoCategory,\n} from '@skdx/angular-charts/internal';\n\n/** Columns as wide as their total with segments stacked to 100% inside: size and mix in one chart. */\n@Component({\n selector: 'skdx-marimekko-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=\"marimekko\"\n [label]=\"label() ?? 'Marimekko 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 SkdxMarimekkoChartComponent extends SkdxSizedBase {\n /** Segment names in stacking order, one color each. */\n readonly segments = input.required<(string | Pick<Datum, 'id' | 'name' | 'color'>)[]>();\n readonly data = input.required<MarimekkoCategory[]>();\n /** Write segment shares inside cells wide enough. */\n readonly labels = input(false);\n /** Gap between columns as a share of the plot width. */\n readonly gap = input<number>();\n /** How column totals are written. */\n readonly xAxis = input<Pick<AxisOptions, 'format' | 'label'>>();\n\n protected readonly layout = computed(() =>\n layoutMarimekkoChart({\n ...this.sized(),\n segments: this.segments(),\n data: this.data(),\n labels: this.labels(),\n gap: this.gap(),\n xAxis: this.xAxis(),\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,113 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { SkdxSizedBase, layoutNetworkChart, 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
+ /** Nodes and edges of a graph: force-directed, circular or at given coordinates. */
11
+ class SkdxNetworkChartComponent extends SkdxSizedBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.nodes = input.required(/* @ts-ignore */
15
+ ...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
16
+ this.edges = input.required(/* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "edges" }] : /* istanbul ignore next */ []));
18
+ this.arrange = input(/* @ts-ignore */
19
+ ...(ngDevMode ? [undefined, { debugName: "arrange" }] : /* istanbul ignore next */ []));
20
+ /** Write node labels (off above 60 nodes unless set). */
21
+ this.labels = input(true, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
23
+ /** Smallest and largest node radius in pixels. */
24
+ this.nodeRange = input(/* @ts-ignore */
25
+ ...(ngDevMode ? [undefined, { debugName: "nodeRange" }] : /* istanbul ignore next */ []));
26
+ /** Force-layout iterations. */
27
+ this.iterations = input(/* @ts-ignore */
28
+ ...(ngDevMode ? [undefined, { debugName: "iterations" }] : /* istanbul ignore next */ []));
29
+ /** Draw an arrowhead at the target end of every edge. */
30
+ this.directed = input(false, /* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "directed" }] : /* istanbul ignore next */ []));
32
+ /** Write edge labels at the middle of each edge. */
33
+ this.edgeLabels = input(false, /* @ts-ignore */
34
+ ...(ngDevMode ? [{ debugName: "edgeLabels" }] : /* istanbul ignore next */ []));
35
+ this.layout = computed(() => layoutNetworkChart({
36
+ ...this.sized(),
37
+ nodes: this.nodes(),
38
+ edges: this.edges(),
39
+ arrange: this.arrange(),
40
+ labels: this.labels(),
41
+ nodeRange: this.nodeRange(),
42
+ iterations: this.iterations(),
43
+ directed: this.directed(),
44
+ edgeLabels: this.edgeLabels(),
45
+ }), /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxNetworkChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxNetworkChartComponent, isStandalone: true, selector: "skdx-network-chart", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: true, isRequired: true, transformFunction: null }, arrange: { classPropertyName: "arrange", publicName: "arrange", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, nodeRange: { classPropertyName: "nodeRange", publicName: "nodeRange", isSignal: true, isRequired: false, transformFunction: null }, iterations: { classPropertyName: "iterations", publicName: "iterations", isSignal: true, isRequired: false, transformFunction: null }, directed: { classPropertyName: "directed", publicName: "directed", isSignal: true, isRequired: false, transformFunction: null }, edgeLabels: { classPropertyName: "edgeLabels", publicName: "edgeLabels", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
50
+ <skdx-chart-root
51
+ [layout]="layout()"
52
+ [options]="options()"
53
+ kind="network"
54
+ [label]="label() ?? 'Network chart'"
55
+ [zoomable]="zoomable()"
56
+ [selectionMode]="selectionMode()"
57
+ [editable]="editable()"
58
+ [syncId]="syncId()"
59
+ [crosshair]="syncedCrosshair()"
60
+ [responsive]="!!responsive()"
61
+ (itemClick)="itemClick.emit($event)"
62
+ (dataIssue)="dataIssue.emit($event)"
63
+ (taskChange)="taskChange.emit($event)"
64
+ (hiddenSeriesChange)="toggle($event)"
65
+ (zoomChange)="zoom.set($event)"
66
+ (viewChange)="view.set($event)"
67
+ (selectedChange)="selected.set($event)"
68
+ (highlightedChange)="highlighted.set($event)"
69
+ (syncChange)="sync($event)"
70
+ (measured)="measuredWidth.set($event)"
71
+ ></skdx-chart-root>
72
+ `, 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 }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxNetworkChartComponent, decorators: [{
75
+ type: Component,
76
+ args: [{
77
+ selector: 'skdx-network-chart',
78
+ standalone: true,
79
+ changeDetection: ChangeDetectionStrategy.OnPush,
80
+ imports: [SkdxChartRootComponent],
81
+ template: `
82
+ <skdx-chart-root
83
+ [layout]="layout()"
84
+ [options]="options()"
85
+ kind="network"
86
+ [label]="label() ?? 'Network chart'"
87
+ [zoomable]="zoomable()"
88
+ [selectionMode]="selectionMode()"
89
+ [editable]="editable()"
90
+ [syncId]="syncId()"
91
+ [crosshair]="syncedCrosshair()"
92
+ [responsive]="!!responsive()"
93
+ (itemClick)="itemClick.emit($event)"
94
+ (dataIssue)="dataIssue.emit($event)"
95
+ (taskChange)="taskChange.emit($event)"
96
+ (hiddenSeriesChange)="toggle($event)"
97
+ (zoomChange)="zoom.set($event)"
98
+ (viewChange)="view.set($event)"
99
+ (selectedChange)="selected.set($event)"
100
+ (highlightedChange)="highlighted.set($event)"
101
+ (syncChange)="sync($event)"
102
+ (measured)="measuredWidth.set($event)"
103
+ ></skdx-chart-root>
104
+ `,
105
+ }]
106
+ }], propDecorators: { nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: true }] }], edges: [{ type: i0.Input, args: [{ isSignal: true, alias: "edges", required: true }] }], arrange: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrange", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], nodeRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeRange", required: false }] }], iterations: [{ type: i0.Input, args: [{ isSignal: true, alias: "iterations", required: false }] }], directed: [{ type: i0.Input, args: [{ isSignal: true, alias: "directed", required: false }] }], edgeLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "edgeLabels", required: false }] }] } });
107
+
108
+ /**
109
+ * Generated bundle index. Do not edit.
110
+ */
111
+
112
+ export { SkdxNetworkChartComponent };
113
+ //# sourceMappingURL=skdx-angular-charts-network.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skdx-angular-charts-network.mjs","sources":["../../src/network/index.ts","../../src/network/skdx-angular-charts-network.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 layoutNetworkChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type NetworkEdge,\n type NetworkNode,\n} from '@skdx/angular-charts/internal';\n\n/** Nodes and edges of a graph: force-directed, circular or at given coordinates. */\n@Component({\n selector: 'skdx-network-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=\"network\"\n [label]=\"label() ?? 'Network 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 SkdxNetworkChartComponent extends SkdxSizedBase {\n readonly nodes = input.required<NetworkNode[]>();\n readonly edges = input.required<NetworkEdge[]>();\n readonly arrange = input<'force' | 'circular' | 'manual'>();\n /** Write node labels (off above 60 nodes unless set). */\n readonly labels = input(true);\n /** Smallest and largest node radius in pixels. */\n readonly nodeRange = input<[number, number]>();\n /** Force-layout iterations. */\n readonly iterations = input<number>();\n /** Draw an arrowhead at the target end of every edge. */\n readonly directed = input(false);\n /** Write edge labels at the middle of each edge. */\n readonly edgeLabels = input(false);\n\n protected readonly layout = computed(() =>\n layoutNetworkChart({\n ...this.sized(),\n nodes: this.nodes(),\n edges: this.edges(),\n arrange: this.arrange(),\n labels: this.labels(),\n nodeRange: this.nodeRange(),\n iterations: this.iterations(),\n directed: this.directed(),\n edgeLabels: this.edgeLabels(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}