@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.
- package/README.md +104 -41
- package/fesm2022/skdx-angular-charts-area.mjs +36 -2
- package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-bar.mjs +40 -15
- package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-boxplot.mjs +76 -8
- package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-bubble.mjs +119 -0
- package/fesm2022/skdx-angular-charts-bubble.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-bullet.mjs +110 -0
- package/fesm2022/skdx-angular-charts-bullet.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-bump.mjs +113 -0
- package/fesm2022/skdx-angular-charts-bump.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-candlestick.mjs +76 -8
- package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-chord.mjs +63 -12
- package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-circle-packing.mjs +107 -0
- package/fesm2022/skdx-angular-charts-circle-packing.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-combo.mjs +82 -0
- package/fesm2022/skdx-angular-charts-combo.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-dumbbell.mjs +116 -0
- package/fesm2022/skdx-angular-charts-dumbbell.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-funnel.mjs +63 -8
- package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-gantt.mjs +64 -11
- package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-gauge.mjs +134 -0
- package/fesm2022/skdx-angular-charts-gauge.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-heatmap.mjs +111 -15
- package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-histogram.mjs +134 -0
- package/fesm2022/skdx-angular-charts-histogram.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-icicle.mjs +119 -0
- package/fesm2022/skdx-angular-charts-icicle.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-internal.mjs +10134 -1106
- package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-line.mjs +36 -2
- package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-linear-gauge.mjs +119 -0
- package/fesm2022/skdx-angular-charts-linear-gauge.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-map.mjs +81 -8
- package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-marimekko.mjs +103 -0
- package/fesm2022/skdx-angular-charts-marimekko.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-network.mjs +113 -0
- package/fesm2022/skdx-angular-charts-network.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-organization.mjs +111 -0
- package/fesm2022/skdx-angular-charts-organization.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-parallel.mjs +105 -0
- package/fesm2022/skdx-angular-charts-parallel.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-pareto.mjs +123 -0
- package/fesm2022/skdx-angular-charts-pareto.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-pie.mjs +79 -5
- package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-polar-area.mjs +118 -0
- package/fesm2022/skdx-angular-charts-polar-area.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-radar.mjs +87 -9
- package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-radial.mjs +130 -0
- package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-range.mjs +133 -0
- package/fesm2022/skdx-angular-charts-range.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-sankey.mjs +81 -8
- package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-scatter.mjs +74 -5
- package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sparkline.mjs +76 -8
- package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sunburst.mjs +88 -8
- package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-swarm.mjs +101 -0
- package/fesm2022/skdx-angular-charts-swarm.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-timeline.mjs +98 -0
- package/fesm2022/skdx-angular-charts-timeline.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-tree.mjs +118 -0
- package/fesm2022/skdx-angular-charts-tree.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-treemap.mjs +85 -8
- package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-waffle.mjs +113 -0
- package/fesm2022/skdx-angular-charts-waffle.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-waterfall.mjs +76 -8
- package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts.mjs +23 -0
- package/fesm2022/skdx-angular-charts.mjs.map +1 -1
- package/package.json +91 -3
- package/types/skdx-angular-charts-area.d.ts +1 -1
- package/types/skdx-angular-charts-bar.d.ts +5 -13
- package/types/skdx-angular-charts-boxplot.d.ts +20 -5
- package/types/skdx-angular-charts-bubble.d.ts +27 -0
- package/types/skdx-angular-charts-bullet.d.ts +24 -0
- package/types/skdx-angular-charts-bump.d.ts +25 -0
- package/types/skdx-angular-charts-candlestick.d.ts +15 -4
- package/types/skdx-angular-charts-chord.d.ts +13 -6
- package/types/skdx-angular-charts-circle-packing.d.ts +23 -0
- package/types/skdx-angular-charts-combo.d.ts +12 -0
- package/types/skdx-angular-charts-dumbbell.d.ts +26 -0
- package/types/skdx-angular-charts-funnel.d.ts +11 -3
- package/types/skdx-angular-charts-gantt.d.ts +13 -6
- package/types/skdx-angular-charts-gauge.d.ts +36 -0
- package/types/skdx-angular-charts-heatmap.d.ts +34 -8
- package/types/skdx-angular-charts-histogram.d.ts +34 -0
- package/types/skdx-angular-charts-icicle.d.ts +29 -0
- package/types/skdx-angular-charts-internal.d.ts +2477 -77
- package/types/skdx-angular-charts-line.d.ts +1 -1
- package/types/skdx-angular-charts-linear-gauge.d.ts +29 -0
- package/types/skdx-angular-charts-map.d.ts +17 -4
- package/types/skdx-angular-charts-marimekko.d.ts +21 -0
- package/types/skdx-angular-charts-network.d.ts +25 -0
- package/types/skdx-angular-charts-organization.d.ts +25 -0
- package/types/skdx-angular-charts-parallel.d.ts +25 -0
- package/types/skdx-angular-charts-pareto.d.ts +27 -0
- package/types/skdx-angular-charts-pie.d.ts +20 -2
- package/types/skdx-angular-charts-polar-area.d.ts +28 -0
- package/types/skdx-angular-charts-radar.d.ts +24 -4
- package/types/skdx-angular-charts-radial.d.ts +34 -0
- package/types/skdx-angular-charts-range.d.ts +29 -0
- package/types/skdx-angular-charts-sankey.d.ts +22 -4
- package/types/skdx-angular-charts-scatter.d.ts +17 -3
- package/types/skdx-angular-charts-sparkline.d.ts +19 -5
- package/types/skdx-angular-charts-sunburst.d.ts +25 -4
- package/types/skdx-angular-charts-swarm.d.ts +19 -0
- package/types/skdx-angular-charts-timeline.d.ts +18 -0
- package/types/skdx-angular-charts-tree.d.ts +28 -0
- package/types/skdx-angular-charts-treemap.d.ts +21 -5
- package/types/skdx-angular-charts-waffle.d.ts +25 -0
- package/types/skdx-angular-charts-waterfall.d.ts +19 -5
- package/types/skdx-angular-charts.d.ts +23 -1
|
@@ -7,23 +7,79 @@ import { SkdxSizedBase, layoutSankey, SkdxChartRootComponent } from '@skdx/angul
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/** Flows between nodes
|
|
10
|
+
/** Flows between nodes, node heights and ribbon widths by value. */
|
|
11
11
|
class SkdxSankeyChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.links = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "links" }] : /* istanbul ignore next */ []));
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/** Explicit nodes with labels and colors. */
|
|
17
|
+
this.nodes = input(/* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [undefined, { debugName: "nodes" }] : /* istanbul ignore next */ []));
|
|
19
|
+
/** justify pushes sinks to the last column. */
|
|
20
|
+
this.align = input(/* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [undefined, { debugName: "align" }] : /* istanbul ignore next */ []));
|
|
22
|
+
/** Node thickness in pixels. */
|
|
23
|
+
this.nodeWidth = input(/* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [undefined, { debugName: "nodeWidth" }] : /* istanbul ignore next */ []));
|
|
25
|
+
/** Vertical gap between nodes in a column. */
|
|
26
|
+
this.nodePadding = input(/* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [undefined, { debugName: "nodePadding" }] : /* istanbul ignore next */ []));
|
|
28
|
+
/** Order nodes inside a column by value. */
|
|
29
|
+
this.nodeSort = input(/* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [undefined, { debugName: "nodeSort" }] : /* istanbul ignore next */ []));
|
|
31
|
+
/** Order the ribbons leaving a node by value. */
|
|
32
|
+
this.linkSort = input(/* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [undefined, { debugName: "linkSort" }] : /* istanbul ignore next */ []));
|
|
34
|
+
/** Write node names. */
|
|
35
|
+
this.nodeLabels = input(true, /* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "nodeLabels" }] : /* istanbul ignore next */ []));
|
|
37
|
+
/** Write each link's value on it. */
|
|
38
|
+
this.linkLabels = input(false, /* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [{ debugName: "linkLabels" }] : /* istanbul ignore next */ []));
|
|
40
|
+
/** What to do with links that close a cycle. */
|
|
41
|
+
this.cyclePolicy = input(/* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [undefined, { debugName: "cyclePolicy" }] : /* istanbul ignore next */ []));
|
|
43
|
+
this.layout = computed(() => layoutSankey({
|
|
44
|
+
...this.sized(),
|
|
45
|
+
links: this.links(),
|
|
46
|
+
nodes: this.nodes(),
|
|
47
|
+
align: this.align(),
|
|
48
|
+
nodeWidth: this.nodeWidth(),
|
|
49
|
+
nodePadding: this.nodePadding(),
|
|
50
|
+
nodeSort: this.nodeSort(),
|
|
51
|
+
linkSort: this.linkSort(),
|
|
52
|
+
nodeLabels: this.nodeLabels(),
|
|
53
|
+
linkLabels: this.linkLabels(),
|
|
54
|
+
cyclePolicy: this.cyclePolicy(),
|
|
55
|
+
}), /* @ts-ignore */
|
|
56
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
57
|
}
|
|
19
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSankeyChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSankeyChartComponent, isStandalone: true, selector: "skdx-sankey-chart", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSankeyChartComponent, isStandalone: true, selector: "skdx-sankey-chart", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: true, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, nodeWidth: { classPropertyName: "nodeWidth", publicName: "nodeWidth", isSignal: true, isRequired: false, transformFunction: null }, nodePadding: { classPropertyName: "nodePadding", publicName: "nodePadding", isSignal: true, isRequired: false, transformFunction: null }, nodeSort: { classPropertyName: "nodeSort", publicName: "nodeSort", isSignal: true, isRequired: false, transformFunction: null }, linkSort: { classPropertyName: "linkSort", publicName: "linkSort", isSignal: true, isRequired: false, transformFunction: null }, nodeLabels: { classPropertyName: "nodeLabels", publicName: "nodeLabels", isSignal: true, isRequired: false, transformFunction: null }, linkLabels: { classPropertyName: "linkLabels", publicName: "linkLabels", isSignal: true, isRequired: false, transformFunction: null }, cyclePolicy: { classPropertyName: "cyclePolicy", publicName: "cyclePolicy", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
60
|
<skdx-chart-root
|
|
22
|
-
[layout]="
|
|
61
|
+
[layout]="layout()"
|
|
62
|
+
[options]="options()"
|
|
23
63
|
kind="sankey"
|
|
24
64
|
[label]="label() ?? 'Sankey chart'"
|
|
65
|
+
[zoomable]="zoomable()"
|
|
66
|
+
[selectionMode]="selectionMode()"
|
|
67
|
+
[editable]="editable()"
|
|
68
|
+
[syncId]="syncId()"
|
|
69
|
+
[crosshair]="syncedCrosshair()"
|
|
70
|
+
[responsive]="!!responsive()"
|
|
71
|
+
(itemClick)="itemClick.emit($event)"
|
|
72
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
73
|
+
(taskChange)="taskChange.emit($event)"
|
|
74
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
75
|
+
(zoomChange)="zoom.set($event)"
|
|
76
|
+
(viewChange)="view.set($event)"
|
|
77
|
+
(selectedChange)="selected.set($event)"
|
|
78
|
+
(highlightedChange)="highlighted.set($event)"
|
|
79
|
+
(syncChange)="sync($event)"
|
|
80
|
+
(measured)="measuredWidth.set($event)"
|
|
25
81
|
></skdx-chart-root>
|
|
26
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
82
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
83
|
}
|
|
28
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSankeyChartComponent, decorators: [{
|
|
29
85
|
type: Component,
|
|
@@ -34,13 +90,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
34
90
|
imports: [SkdxChartRootComponent],
|
|
35
91
|
template: `
|
|
36
92
|
<skdx-chart-root
|
|
37
|
-
[layout]="
|
|
93
|
+
[layout]="layout()"
|
|
94
|
+
[options]="options()"
|
|
38
95
|
kind="sankey"
|
|
39
96
|
[label]="label() ?? 'Sankey chart'"
|
|
97
|
+
[zoomable]="zoomable()"
|
|
98
|
+
[selectionMode]="selectionMode()"
|
|
99
|
+
[editable]="editable()"
|
|
100
|
+
[syncId]="syncId()"
|
|
101
|
+
[crosshair]="syncedCrosshair()"
|
|
102
|
+
[responsive]="!!responsive()"
|
|
103
|
+
(itemClick)="itemClick.emit($event)"
|
|
104
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
105
|
+
(taskChange)="taskChange.emit($event)"
|
|
106
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
107
|
+
(zoomChange)="zoom.set($event)"
|
|
108
|
+
(viewChange)="view.set($event)"
|
|
109
|
+
(selectedChange)="selected.set($event)"
|
|
110
|
+
(highlightedChange)="highlighted.set($event)"
|
|
111
|
+
(syncChange)="sync($event)"
|
|
112
|
+
(measured)="measuredWidth.set($event)"
|
|
40
113
|
></skdx-chart-root>
|
|
41
114
|
`,
|
|
42
115
|
}]
|
|
43
|
-
}], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: true }] }] } });
|
|
116
|
+
}], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: true }] }], nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], nodeWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeWidth", required: false }] }], nodePadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodePadding", required: false }] }], nodeSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeSort", required: false }] }], linkSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkSort", required: false }] }], nodeLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeLabels", required: false }] }], linkLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkLabels", required: false }] }], cyclePolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "cyclePolicy", required: false }] }] } });
|
|
44
117
|
|
|
45
118
|
/**
|
|
46
119
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-sankey.mjs","sources":["../../src/sankey/index.ts","../../src/sankey/skdx-angular-charts-sankey.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSankey,\n type SankeyLink,\n
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-sankey.mjs","sources":["../../src/sankey/index.ts","../../src/sankey/skdx-angular-charts-sankey.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSankey,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type SankeyLink,\n type SankeyNode,\n} from '@skdx/angular-charts/internal';\n\n/** Flows between nodes, node heights and ribbon widths by value. */\n@Component({\n selector: 'skdx-sankey-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"sankey\"\n [label]=\"label() ?? 'Sankey chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSankeyChartComponent extends SkdxSizedBase {\n readonly links = input.required<SankeyLink[]>();\n /** Explicit nodes with labels and colors. */\n readonly nodes = input<SankeyNode[]>();\n /** justify pushes sinks to the last column. */\n readonly align = input<'left' | 'justify'>();\n /** Node thickness in pixels. */\n readonly nodeWidth = input<number>();\n /** Vertical gap between nodes in a column. */\n readonly nodePadding = input<number>();\n /** Order nodes inside a column by value. */\n readonly nodeSort = input<'asc' | 'desc'>();\n /** Order the ribbons leaving a node by value. */\n readonly linkSort = input<'asc' | 'desc'>();\n /** Write node names. */\n readonly nodeLabels = input(true);\n /** Write each link's value on it. */\n readonly linkLabels = input(false);\n /** What to do with links that close a cycle. */\n readonly cyclePolicy = input<'drop' | 'warn' | 'error'>();\n\n protected readonly layout = computed(() =>\n layoutSankey({\n ...this.sized(),\n links: this.links(),\n nodes: this.nodes(),\n align: this.align(),\n nodeWidth: this.nodeWidth(),\n nodePadding: this.nodePadding(),\n nodeSort: this.nodeSort(),\n linkSort: this.linkSort(),\n nodeLabels: this.nodeLabels(),\n linkLabels: this.linkLabels(),\n cyclePolicy: this.cyclePolicy(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,23 +7,75 @@ import { SkdxSizedBase, layoutScatterChart, SkdxChartRootComponent } from '@skdx
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/** One dot per `[x, y]` pair on two linear axes. */
|
|
10
|
+
/** One dot per `[x, y]` pair, or a bubble per `[x, y, size]` triple, on two linear axes. */
|
|
11
11
|
class SkdxScatterChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.series = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
|
|
16
|
-
|
|
16
|
+
/** Bubble radius range in pixels. */
|
|
17
|
+
this.sizeRange = input(/* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [undefined, { debugName: "sizeRange" }] : /* istanbul ignore next */ []));
|
|
19
|
+
/** Least-squares line per series. */
|
|
20
|
+
this.trendline = input(false, /* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [{ debugName: "trendline" }] : /* istanbul ignore next */ []));
|
|
22
|
+
/** Write each point's label next to it. */
|
|
23
|
+
this.labels = input(false, /* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
25
|
+
this.xAxis = input(/* @ts-ignore */
|
|
26
|
+
...(ngDevMode ? [undefined, { debugName: "xAxis" }] : /* istanbul ignore next */ []));
|
|
27
|
+
this.yAxis = input(/* @ts-ignore */
|
|
28
|
+
...(ngDevMode ? [undefined, { debugName: "yAxis" }] : /* istanbul ignore next */ []));
|
|
29
|
+
this.references = input(/* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [undefined, { debugName: "references" }] : /* istanbul ignore next */ []));
|
|
31
|
+
this.annotations = input(/* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [undefined, { debugName: "annotations" }] : /* istanbul ignore next */ []));
|
|
33
|
+
/** Colors points by their `value`. */
|
|
34
|
+
this.colorScale = input(/* @ts-ignore */
|
|
35
|
+
...(ngDevMode ? [undefined, { debugName: "colorScale" }] : /* istanbul ignore next */ []));
|
|
36
|
+
/** Draw the color scale under the plot. */
|
|
37
|
+
this.colorLegend = input(false, /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "colorLegend" }] : /* istanbul ignore next */ []));
|
|
39
|
+
this.layout = computed(() => layoutScatterChart({
|
|
40
|
+
...this.sized(),
|
|
41
|
+
series: this.series(),
|
|
42
|
+
sizeRange: this.sizeRange(),
|
|
43
|
+
trendline: this.trendline(),
|
|
44
|
+
labels: this.labels(),
|
|
45
|
+
xAxis: this.xAxis(),
|
|
46
|
+
yAxis: this.yAxis(),
|
|
47
|
+
references: this.references(),
|
|
48
|
+
annotations: this.annotations(),
|
|
49
|
+
colorScale: this.colorScale(),
|
|
50
|
+
colorLegend: this.colorLegend(),
|
|
51
|
+
}), /* @ts-ignore */
|
|
17
52
|
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
53
|
}
|
|
19
54
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxScatterChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxScatterChartComponent, isStandalone: true, selector: "skdx-scatter-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxScatterChartComponent, isStandalone: true, selector: "skdx-scatter-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: true, transformFunction: null }, sizeRange: { classPropertyName: "sizeRange", publicName: "sizeRange", isSignal: true, isRequired: false, transformFunction: null }, trendline: { classPropertyName: "trendline", publicName: "trendline", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, xAxis: { classPropertyName: "xAxis", publicName: "xAxis", isSignal: true, isRequired: false, transformFunction: null }, yAxis: { classPropertyName: "yAxis", publicName: "yAxis", isSignal: true, isRequired: false, transformFunction: null }, references: { classPropertyName: "references", publicName: "references", isSignal: true, isRequired: false, transformFunction: null }, annotations: { classPropertyName: "annotations", publicName: "annotations", isSignal: true, isRequired: false, transformFunction: null }, colorScale: { classPropertyName: "colorScale", publicName: "colorScale", isSignal: true, isRequired: false, transformFunction: null }, colorLegend: { classPropertyName: "colorLegend", publicName: "colorLegend", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
56
|
<skdx-chart-root
|
|
22
57
|
[layout]="layout()"
|
|
58
|
+
[options]="options()"
|
|
23
59
|
kind="scatter"
|
|
24
60
|
[label]="label() ?? 'Scatter chart'"
|
|
61
|
+
[zoomable]="zoomable()"
|
|
62
|
+
[selectionMode]="selectionMode()"
|
|
63
|
+
[editable]="editable()"
|
|
64
|
+
[syncId]="syncId()"
|
|
65
|
+
[crosshair]="syncedCrosshair()"
|
|
66
|
+
[responsive]="!!responsive()"
|
|
67
|
+
(itemClick)="itemClick.emit($event)"
|
|
68
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
69
|
+
(taskChange)="taskChange.emit($event)"
|
|
70
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
71
|
+
(zoomChange)="zoom.set($event)"
|
|
72
|
+
(viewChange)="view.set($event)"
|
|
73
|
+
(selectedChange)="selected.set($event)"
|
|
74
|
+
(highlightedChange)="highlighted.set($event)"
|
|
75
|
+
(syncChange)="sync($event)"
|
|
76
|
+
(measured)="measuredWidth.set($event)"
|
|
25
77
|
></skdx-chart-root>
|
|
26
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
78
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
79
|
}
|
|
28
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxScatterChartComponent, decorators: [{
|
|
29
81
|
type: Component,
|
|
@@ -35,12 +87,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
35
87
|
template: `
|
|
36
88
|
<skdx-chart-root
|
|
37
89
|
[layout]="layout()"
|
|
90
|
+
[options]="options()"
|
|
38
91
|
kind="scatter"
|
|
39
92
|
[label]="label() ?? 'Scatter chart'"
|
|
93
|
+
[zoomable]="zoomable()"
|
|
94
|
+
[selectionMode]="selectionMode()"
|
|
95
|
+
[editable]="editable()"
|
|
96
|
+
[syncId]="syncId()"
|
|
97
|
+
[crosshair]="syncedCrosshair()"
|
|
98
|
+
[responsive]="!!responsive()"
|
|
99
|
+
(itemClick)="itemClick.emit($event)"
|
|
100
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
101
|
+
(taskChange)="taskChange.emit($event)"
|
|
102
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
103
|
+
(zoomChange)="zoom.set($event)"
|
|
104
|
+
(viewChange)="view.set($event)"
|
|
105
|
+
(selectedChange)="selected.set($event)"
|
|
106
|
+
(highlightedChange)="highlighted.set($event)"
|
|
107
|
+
(syncChange)="sync($event)"
|
|
108
|
+
(measured)="measuredWidth.set($event)"
|
|
40
109
|
></skdx-chart-root>
|
|
41
110
|
`,
|
|
42
111
|
}]
|
|
43
|
-
}], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }] } });
|
|
112
|
+
}], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: true }] }], sizeRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "sizeRange", required: false }] }], trendline: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendline", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], xAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "xAxis", required: false }] }], yAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "yAxis", required: false }] }], references: [{ type: i0.Input, args: [{ isSignal: true, alias: "references", required: false }] }], annotations: [{ type: i0.Input, args: [{ isSignal: true, alias: "annotations", required: false }] }], colorScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorScale", required: false }] }], colorLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorLegend", required: false }] }] } });
|
|
44
113
|
|
|
45
114
|
/**
|
|
46
115
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-scatter.mjs","sources":["../../src/scatter/index.ts","../../src/scatter/skdx-angular-charts-scatter.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutScatterChart,\n type
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-scatter.mjs","sources":["../../src/scatter/index.ts","../../src/scatter/skdx-angular-charts-scatter.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutScatterChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Annotation,\n type AxisOptions,\n type ColorScale,\n type Reference,\n type ScatterSeries,\n} from '@skdx/angular-charts/internal';\n\n/** One dot per `[x, y]` pair, or a bubble per `[x, y, size]` triple, on two linear axes. */\n@Component({\n selector: 'skdx-scatter-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"scatter\"\n [label]=\"label() ?? 'Scatter chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxScatterChartComponent extends SkdxSizedBase {\n readonly series = input.required<ScatterSeries[]>();\n /** Bubble radius range in pixels. */\n readonly sizeRange = input<[number, number]>();\n /** Least-squares line per series. */\n readonly trendline = input(false);\n /** Write each point's label next to it. */\n readonly labels = input(false);\n readonly xAxis = input<AxisOptions>();\n readonly yAxis = input<AxisOptions>();\n readonly references = input<Reference[]>();\n readonly annotations = input<Annotation[]>();\n /** Colors points by their `value`. */\n readonly colorScale = input<ColorScale>();\n /** Draw the color scale under the plot. */\n readonly colorLegend = input(false);\n\n protected readonly layout = computed(() =>\n layoutScatterChart({\n ...this.sized(),\n series: this.series(),\n sizeRange: this.sizeRange(),\n trendline: this.trendline(),\n labels: this.labels(),\n xAxis: this.xAxis(),\n yAxis: this.yAxis(),\n references: this.references(),\n annotations: this.annotations(),\n colorScale: this.colorScale(),\n colorLegend: this.colorLegend(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { SkdxSizedBase, layoutSparkline, SkdxChartRootComponent } from '@skdx/an
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/** A small axis-less trend line with
|
|
10
|
+
/** A small axis-less trend: an area, a bare line or bars, with optional extremes and last value. */
|
|
11
11
|
class SkdxSparklineComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
@@ -15,17 +15,68 @@ class SkdxSparklineComponent extends SkdxSizedBase {
|
|
|
15
15
|
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
16
16
|
this.color = input(/* @ts-ignore */
|
|
17
17
|
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
18
|
-
this.
|
|
19
|
-
...(ngDevMode ? [{ debugName: "
|
|
18
|
+
this.curve = input(/* @ts-ignore */
|
|
19
|
+
...(ngDevMode ? [undefined, { debugName: "curve" }] : /* istanbul ignore next */ []));
|
|
20
|
+
this.variant = input(/* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
22
|
+
/** Color by direction: success when rising, danger when falling. */
|
|
23
|
+
this.trend = input(false, /* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [{ debugName: "trend" }] : /* istanbul ignore next */ []));
|
|
25
|
+
/** Mark the minimum and maximum. */
|
|
26
|
+
this.extremes = input(false, /* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [{ debugName: "extremes" }] : /* istanbul ignore next */ []));
|
|
28
|
+
/** Write the last value after the line. */
|
|
29
|
+
this.lastValue = input(false, /* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [{ debugName: "lastValue" }] : /* istanbul ignore next */ []));
|
|
31
|
+
/** A dashed reference line at this value. */
|
|
32
|
+
this.target = input(/* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [undefined, { debugName: "target" }] : /* istanbul ignore next */ []));
|
|
34
|
+
/** A shaded band between two values. */
|
|
35
|
+
this.band = input(/* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [undefined, { debugName: "band" }] : /* istanbul ignore next */ []));
|
|
37
|
+
/** Dots on the first and/or last point. */
|
|
38
|
+
this.markers = input(/* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [undefined, { debugName: "markers" }] : /* istanbul ignore next */ []));
|
|
40
|
+
this.layout = computed(() => layoutSparkline({
|
|
41
|
+
...this.sized(),
|
|
42
|
+
data: this.data(),
|
|
43
|
+
color: this.color(),
|
|
44
|
+
curve: this.curve(),
|
|
45
|
+
variant: this.variant(),
|
|
46
|
+
trend: this.trend(),
|
|
47
|
+
extremes: this.extremes(),
|
|
48
|
+
lastValue: this.lastValue(),
|
|
49
|
+
target: this.target(),
|
|
50
|
+
band: this.band(),
|
|
51
|
+
markers: this.markers(),
|
|
52
|
+
}), /* @ts-ignore */
|
|
53
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
20
54
|
}
|
|
21
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSparklineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSparklineComponent, isStandalone: true, selector: "skdx-sparkline", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSparklineComponent, isStandalone: true, selector: "skdx-sparkline", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, curve: { classPropertyName: "curve", publicName: "curve", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, extremes: { classPropertyName: "extremes", publicName: "extremes", isSignal: true, isRequired: false, transformFunction: null }, lastValue: { classPropertyName: "lastValue", publicName: "lastValue", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, band: { classPropertyName: "band", publicName: "band", isSignal: true, isRequired: false, transformFunction: null }, markers: { classPropertyName: "markers", publicName: "markers", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
23
57
|
<skdx-chart-root
|
|
24
|
-
[layout]="
|
|
58
|
+
[layout]="layout()"
|
|
59
|
+
[options]="options()"
|
|
25
60
|
kind="sparkline"
|
|
26
61
|
[label]="label() ?? 'Sparkline'"
|
|
62
|
+
[zoomable]="zoomable()"
|
|
63
|
+
[selectionMode]="selectionMode()"
|
|
64
|
+
[editable]="editable()"
|
|
65
|
+
[syncId]="syncId()"
|
|
66
|
+
[crosshair]="syncedCrosshair()"
|
|
67
|
+
[responsive]="!!responsive()"
|
|
68
|
+
(itemClick)="itemClick.emit($event)"
|
|
69
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
70
|
+
(taskChange)="taskChange.emit($event)"
|
|
71
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
72
|
+
(zoomChange)="zoom.set($event)"
|
|
73
|
+
(viewChange)="view.set($event)"
|
|
74
|
+
(selectedChange)="selected.set($event)"
|
|
75
|
+
(highlightedChange)="highlighted.set($event)"
|
|
76
|
+
(syncChange)="sync($event)"
|
|
77
|
+
(measured)="measuredWidth.set($event)"
|
|
27
78
|
></skdx-chart-root>
|
|
28
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
79
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29
80
|
}
|
|
30
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSparklineComponent, decorators: [{
|
|
31
82
|
type: Component,
|
|
@@ -36,13 +87,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
36
87
|
imports: [SkdxChartRootComponent],
|
|
37
88
|
template: `
|
|
38
89
|
<skdx-chart-root
|
|
39
|
-
[layout]="
|
|
90
|
+
[layout]="layout()"
|
|
91
|
+
[options]="options()"
|
|
40
92
|
kind="sparkline"
|
|
41
93
|
[label]="label() ?? 'Sparkline'"
|
|
94
|
+
[zoomable]="zoomable()"
|
|
95
|
+
[selectionMode]="selectionMode()"
|
|
96
|
+
[editable]="editable()"
|
|
97
|
+
[syncId]="syncId()"
|
|
98
|
+
[crosshair]="syncedCrosshair()"
|
|
99
|
+
[responsive]="!!responsive()"
|
|
100
|
+
(itemClick)="itemClick.emit($event)"
|
|
101
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
102
|
+
(taskChange)="taskChange.emit($event)"
|
|
103
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
104
|
+
(zoomChange)="zoom.set($event)"
|
|
105
|
+
(viewChange)="view.set($event)"
|
|
106
|
+
(selectedChange)="selected.set($event)"
|
|
107
|
+
(highlightedChange)="highlighted.set($event)"
|
|
108
|
+
(syncChange)="sync($event)"
|
|
109
|
+
(measured)="measuredWidth.set($event)"
|
|
42
110
|
></skdx-chart-root>
|
|
43
111
|
`,
|
|
44
112
|
}]
|
|
45
|
-
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
113
|
+
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], curve: [{ type: i0.Input, args: [{ isSignal: true, alias: "curve", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], trend: [{ type: i0.Input, args: [{ isSignal: true, alias: "trend", required: false }] }], extremes: [{ type: i0.Input, args: [{ isSignal: true, alias: "extremes", required: false }] }], lastValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "lastValue", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], band: [{ type: i0.Input, args: [{ isSignal: true, alias: "band", required: false }] }], markers: [{ type: i0.Input, args: [{ isSignal: true, alias: "markers", required: false }] }] } });
|
|
46
114
|
|
|
47
115
|
/**
|
|
48
116
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-sparkline.mjs","sources":["../../src/sparkline/index.ts","../../src/sparkline/skdx-angular-charts-sparkline.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSparkline,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** A small axis-less trend line with
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-sparkline.mjs","sources":["../../src/sparkline/index.ts","../../src/sparkline/skdx-angular-charts-sparkline.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSparkline,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Curve,\n type Value,\n} from '@skdx/angular-charts/internal';\n\n/** A small axis-less trend: an area, a bare line or bars, with optional extremes and last value. */\n@Component({\n selector: 'skdx-sparkline',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"sparkline\"\n [label]=\"label() ?? 'Sparkline'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSparklineComponent extends SkdxSizedBase {\n readonly data = input.required<Value[]>();\n readonly color = input<string>();\n readonly curve = input<Curve>();\n readonly variant = input<'area' | 'line' | 'bar' | 'winloss'>();\n /** Color by direction: success when rising, danger when falling. */\n readonly trend = input(false);\n /** Mark the minimum and maximum. */\n readonly extremes = input(false);\n /** Write the last value after the line. */\n readonly lastValue = input(false);\n /** A dashed reference line at this value. */\n readonly target = input<number>();\n /** A shaded band between two values. */\n readonly band = input<[number, number]>();\n /** Dots on the first and/or last point. */\n readonly markers = input<('first' | 'last')[]>();\n\n protected readonly layout = computed(() =>\n layoutSparkline({\n ...this.sized(),\n data: this.data(),\n color: this.color(),\n curve: this.curve(),\n variant: this.variant(),\n trend: this.trend(),\n extremes: this.extremes(),\n lastValue: this.lastValue(),\n target: this.target(),\n band: this.band(),\n markers: this.markers(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,23 +7,86 @@ import { SkdxSizedBase, layoutSunburst, SkdxChartRootComponent } from '@skdx/ang
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/** Nested rings, one per tree depth, children
|
|
10
|
+
/** Nested rings, one per tree depth, children inside their parent's span. */
|
|
11
11
|
class SkdxSunburstChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.data = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/** Hole radius as a fraction of the outer radius. */
|
|
17
|
+
this.innerRadius = input(/* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [undefined, { debugName: "innerRadius" }] : /* istanbul ignore next */ []));
|
|
19
|
+
/** Text in the middle, e.g. the total. */
|
|
20
|
+
this.centerLabel = input(/* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [undefined, { debugName: "centerLabel" }] : /* istanbul ignore next */ []));
|
|
22
|
+
/** Write names on the arcs wide enough to hold them. */
|
|
23
|
+
this.labels = input(false, /* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
25
|
+
/** Id (or name) of the node whose subtree fills the rings. */
|
|
26
|
+
this.rootId = input(/* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [undefined, { debugName: "rootId" }] : /* istanbul ignore next */ []));
|
|
28
|
+
/** Write the path to `rootId` in the middle. */
|
|
29
|
+
this.breadcrumbs = input(false, /* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [{ debugName: "breadcrumbs" }] : /* istanbul ignore next */ []));
|
|
31
|
+
/** Deepest ring drawn. */
|
|
32
|
+
this.maxDepth = input(/* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [undefined, { debugName: "maxDepth" }] : /* istanbul ignore next */ []));
|
|
34
|
+
/** Arc order inside a parent. */
|
|
35
|
+
this.sort = input(/* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [undefined, { debugName: "sort" }] : /* istanbul ignore next */ []));
|
|
37
|
+
/** Degrees clockwise from 12 o'clock. */
|
|
38
|
+
this.startAngle = input(/* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [undefined, { debugName: "startAngle" }] : /* istanbul ignore next */ []));
|
|
40
|
+
this.endAngle = input(/* @ts-ignore */
|
|
41
|
+
...(ngDevMode ? [undefined, { debugName: "endAngle" }] : /* istanbul ignore next */ []));
|
|
42
|
+
/** Gap between sibling arcs, in degrees. */
|
|
43
|
+
this.padAngle = input(/* @ts-ignore */
|
|
44
|
+
...(ngDevMode ? [undefined, { debugName: "padAngle" }] : /* istanbul ignore next */ []));
|
|
45
|
+
/** Colors arcs by their value. */
|
|
46
|
+
this.colorScale = input(/* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [undefined, { debugName: "colorScale" }] : /* istanbul ignore next */ []));
|
|
48
|
+
this.layout = computed(() => layoutSunburst({
|
|
49
|
+
...this.sized(),
|
|
50
|
+
data: this.data(),
|
|
51
|
+
innerRadius: this.innerRadius(),
|
|
52
|
+
centerLabel: this.centerLabel(),
|
|
53
|
+
labels: this.labels(),
|
|
54
|
+
rootId: this.rootId(),
|
|
55
|
+
breadcrumbs: this.breadcrumbs(),
|
|
56
|
+
maxDepth: this.maxDepth(),
|
|
57
|
+
sort: this.sort(),
|
|
58
|
+
startAngle: this.startAngle(),
|
|
59
|
+
endAngle: this.endAngle(),
|
|
60
|
+
padAngle: this.padAngle(),
|
|
61
|
+
colorScale: this.colorScale(),
|
|
62
|
+
}), /* @ts-ignore */
|
|
63
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
64
|
}
|
|
19
65
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSunburstChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSunburstChartComponent, isStandalone: true, selector: "skdx-sunburst-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
66
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxSunburstChartComponent, isStandalone: true, selector: "skdx-sunburst-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, innerRadius: { classPropertyName: "innerRadius", publicName: "innerRadius", isSignal: true, isRequired: false, transformFunction: null }, centerLabel: { classPropertyName: "centerLabel", publicName: "centerLabel", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, rootId: { classPropertyName: "rootId", publicName: "rootId", isSignal: true, isRequired: false, transformFunction: null }, breadcrumbs: { classPropertyName: "breadcrumbs", publicName: "breadcrumbs", isSignal: true, isRequired: false, transformFunction: null }, maxDepth: { classPropertyName: "maxDepth", publicName: "maxDepth", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, startAngle: { classPropertyName: "startAngle", publicName: "startAngle", isSignal: true, isRequired: false, transformFunction: null }, endAngle: { classPropertyName: "endAngle", publicName: "endAngle", isSignal: true, isRequired: false, transformFunction: null }, padAngle: { classPropertyName: "padAngle", publicName: "padAngle", isSignal: true, isRequired: false, transformFunction: null }, colorScale: { classPropertyName: "colorScale", publicName: "colorScale", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
67
|
<skdx-chart-root
|
|
22
|
-
[layout]="
|
|
68
|
+
[layout]="layout()"
|
|
69
|
+
[options]="options()"
|
|
23
70
|
kind="sunburst"
|
|
24
71
|
[label]="label() ?? 'Sunburst chart'"
|
|
72
|
+
[zoomable]="zoomable()"
|
|
73
|
+
[selectionMode]="selectionMode()"
|
|
74
|
+
[editable]="editable()"
|
|
75
|
+
[syncId]="syncId()"
|
|
76
|
+
[crosshair]="syncedCrosshair()"
|
|
77
|
+
[responsive]="!!responsive()"
|
|
78
|
+
(itemClick)="itemClick.emit($event)"
|
|
79
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
80
|
+
(taskChange)="taskChange.emit($event)"
|
|
81
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
82
|
+
(zoomChange)="zoom.set($event)"
|
|
83
|
+
(viewChange)="view.set($event)"
|
|
84
|
+
(selectedChange)="selected.set($event)"
|
|
85
|
+
(highlightedChange)="highlighted.set($event)"
|
|
86
|
+
(syncChange)="sync($event)"
|
|
87
|
+
(measured)="measuredWidth.set($event)"
|
|
25
88
|
></skdx-chart-root>
|
|
26
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
89
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "options", "kind", "label", "zoomable", "selectionMode", "editable", "syncId", "crosshair", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "viewChange", "selectedChange", "highlightedChange", "dataIssue", "taskChange", "syncChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
90
|
}
|
|
28
91
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxSunburstChartComponent, decorators: [{
|
|
29
92
|
type: Component,
|
|
@@ -34,13 +97,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
34
97
|
imports: [SkdxChartRootComponent],
|
|
35
98
|
template: `
|
|
36
99
|
<skdx-chart-root
|
|
37
|
-
[layout]="
|
|
100
|
+
[layout]="layout()"
|
|
101
|
+
[options]="options()"
|
|
38
102
|
kind="sunburst"
|
|
39
103
|
[label]="label() ?? 'Sunburst chart'"
|
|
104
|
+
[zoomable]="zoomable()"
|
|
105
|
+
[selectionMode]="selectionMode()"
|
|
106
|
+
[editable]="editable()"
|
|
107
|
+
[syncId]="syncId()"
|
|
108
|
+
[crosshair]="syncedCrosshair()"
|
|
109
|
+
[responsive]="!!responsive()"
|
|
110
|
+
(itemClick)="itemClick.emit($event)"
|
|
111
|
+
(dataIssue)="dataIssue.emit($event)"
|
|
112
|
+
(taskChange)="taskChange.emit($event)"
|
|
113
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
114
|
+
(zoomChange)="zoom.set($event)"
|
|
115
|
+
(viewChange)="view.set($event)"
|
|
116
|
+
(selectedChange)="selected.set($event)"
|
|
117
|
+
(highlightedChange)="highlighted.set($event)"
|
|
118
|
+
(syncChange)="sync($event)"
|
|
119
|
+
(measured)="measuredWidth.set($event)"
|
|
40
120
|
></skdx-chart-root>
|
|
41
121
|
`,
|
|
42
122
|
}]
|
|
43
|
-
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
|
|
123
|
+
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], innerRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "innerRadius", required: false }] }], centerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "centerLabel", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], rootId: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootId", required: false }] }], breadcrumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "breadcrumbs", required: false }] }], maxDepth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDepth", required: false }] }], sort: [{ type: i0.Input, args: [{ isSignal: true, alias: "sort", required: false }] }], startAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAngle", required: false }] }], endAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "endAngle", required: false }] }], padAngle: [{ type: i0.Input, args: [{ isSignal: true, alias: "padAngle", required: false }] }], colorScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorScale", required: false }] }] } });
|
|
44
124
|
|
|
45
125
|
/**
|
|
46
126
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-sunburst.mjs","sources":["../../src/sunburst/index.ts","../../src/sunburst/skdx-angular-charts-sunburst.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSunburst,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type TreeNode,\n} from '@skdx/angular-charts/internal';\n\n/** Nested rings, one per tree depth, children
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-sunburst.mjs","sources":["../../src/sunburst/index.ts","../../src/sunburst/skdx-angular-charts-sunburst.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutSunburst,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type ChartItemId,\n type ColorScale,\n type TreeNode,\n} from '@skdx/angular-charts/internal';\n\n/** Nested rings, one per tree depth, children inside their parent's span. */\n@Component({\n selector: 'skdx-sunburst-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n [options]=\"options()\"\n kind=\"sunburst\"\n [label]=\"label() ?? 'Sunburst chart'\"\n [zoomable]=\"zoomable()\"\n [selectionMode]=\"selectionMode()\"\n [editable]=\"editable()\"\n [syncId]=\"syncId()\"\n [crosshair]=\"syncedCrosshair()\"\n [responsive]=\"!!responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (dataIssue)=\"dataIssue.emit($event)\"\n (taskChange)=\"taskChange.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (viewChange)=\"view.set($event)\"\n (selectedChange)=\"selected.set($event)\"\n (highlightedChange)=\"highlighted.set($event)\"\n (syncChange)=\"sync($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxSunburstChartComponent extends SkdxSizedBase {\n readonly data = input.required<TreeNode[]>();\n /** Hole radius as a fraction of the outer radius. */\n readonly innerRadius = input<number>();\n /** Text in the middle, e.g. the total. */\n readonly centerLabel = input<string>();\n /** Write names on the arcs wide enough to hold them. */\n readonly labels = input(false);\n /** Id (or name) of the node whose subtree fills the rings. */\n readonly rootId = input<ChartItemId>();\n /** Write the path to `rootId` in the middle. */\n readonly breadcrumbs = input(false);\n /** Deepest ring drawn. */\n readonly maxDepth = input<number>();\n /** Arc order inside a parent. */\n readonly sort = input<'asc' | 'desc' | 'none'>();\n /** Degrees clockwise from 12 o'clock. */\n readonly startAngle = input<number>();\n readonly endAngle = input<number>();\n /** Gap between sibling arcs, in degrees. */\n readonly padAngle = input<number>();\n /** Colors arcs by their value. */\n readonly colorScale = input<ColorScale>();\n\n protected readonly layout = computed(() =>\n layoutSunburst({\n ...this.sized(),\n data: this.data(),\n innerRadius: this.innerRadius(),\n centerLabel: this.centerLabel(),\n labels: this.labels(),\n rootId: this.rootId(),\n breadcrumbs: this.breadcrumbs(),\n maxDepth: this.maxDepth(),\n sort: this.sort(),\n startAngle: this.startAngle(),\n endAngle: this.endAngle(),\n padAngle: this.padAngle(),\n colorScale: this.colorScale(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|