layerchart 0.44.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Arc.svelte +18 -1
- package/dist/components/Arc.svelte.d.ts +3 -0
- package/dist/components/Area.svelte +49 -18
- package/dist/components/Area.svelte.d.ts +0 -1
- package/dist/components/Axis.svelte +2 -1
- package/dist/components/Axis.svelte.d.ts +2 -1
- package/dist/components/Bar.svelte +18 -8
- package/dist/components/Bar.svelte.d.ts +6 -3
- package/dist/components/Bars.svelte +18 -11
- package/dist/components/Bars.svelte.d.ts +3 -3
- package/dist/components/Blur.svelte +1 -1
- package/dist/components/Brush.svelte +2 -1
- package/dist/components/Calendar.svelte +2 -2
- package/dist/components/Calendar.svelte.d.ts +1 -1
- package/dist/components/Chart.svelte +85 -25
- package/dist/components/Chart.svelte.d.ts +77 -37
- package/dist/components/ChartContext.svelte +124 -6
- package/dist/components/ChartContext.svelte.d.ts +50 -2
- package/dist/components/Circle.svelte +1 -1
- package/dist/components/CircleClipPath.svelte +1 -1
- package/dist/components/ClipPath.svelte +1 -1
- package/dist/components/GeoPath.svelte +1 -1
- package/dist/components/GeoPath.svelte.d.ts +1 -1
- package/dist/components/Highlight.svelte +45 -19
- package/dist/components/Highlight.svelte.d.ts +2 -3
- package/dist/components/HitCanvas.svelte +1 -1
- package/dist/components/Hull.svelte +1 -1
- package/dist/components/Labels.svelte +39 -73
- package/dist/components/Labels.svelte.d.ts +2 -5
- package/dist/components/Legend.svelte +5 -5
- package/dist/components/Legend.svelte.d.ts +2 -2
- package/dist/components/Line.svelte +1 -1
- package/dist/components/LinearGradient.svelte +1 -1
- package/dist/components/MotionPath.svelte +1 -1
- package/dist/components/Pie.svelte +18 -41
- package/dist/components/Pie.svelte.d.ts +2 -3
- package/dist/components/Points.svelte +110 -56
- package/dist/components/Points.svelte.d.ts +20 -2
- package/dist/components/RadialGradient.svelte +1 -1
- package/dist/components/Rect.svelte +2 -1
- package/dist/components/Rect.svelte.d.ts +1 -0
- package/dist/components/RectClipPath.svelte +1 -1
- package/dist/components/Rule.svelte +1 -1
- package/dist/components/Spline.svelte +26 -18
- package/dist/components/Spline.svelte.d.ts +1 -1
- package/dist/components/Text.svelte +1 -1
- package/dist/components/Threshold.svelte +19 -81
- package/dist/components/Threshold.svelte.d.ts +13 -20
- package/dist/components/TransformContext.svelte.d.ts +2 -2
- package/dist/components/TransformControls.svelte +2 -1
- package/dist/components/TransformControls.svelte.d.ts +2 -2
- package/dist/components/Voronoi.svelte +15 -5
- package/dist/components/Voronoi.svelte.d.ts +6 -1
- package/dist/components/charts/AreaChart.svelte +182 -0
- package/dist/components/charts/AreaChart.svelte.d.ts +261 -0
- package/dist/components/charts/BarChart.svelte +207 -0
- package/dist/components/charts/BarChart.svelte.d.ts +241 -0
- package/dist/components/charts/LineChart.svelte +138 -0
- package/dist/components/charts/LineChart.svelte.d.ts +260 -0
- package/dist/components/charts/PieChart.svelte +146 -0
- package/dist/components/charts/PieChart.svelte.d.ts +220 -0
- package/dist/components/charts/ScatterChart.svelte +133 -0
- package/dist/components/charts/ScatterChart.svelte.d.ts +236 -0
- package/dist/components/charts/index.d.ts +5 -0
- package/dist/components/charts/index.js +5 -0
- package/dist/components/index.d.ts +2 -6
- package/dist/components/index.js +3 -6
- package/dist/components/layout/Canvas.svelte +1 -1
- package/dist/components/layout/Html.svelte +1 -1
- package/dist/components/layout/Svg.svelte +14 -4
- package/dist/components/layout/Svg.svelte.d.ts +1 -0
- package/dist/components/{Tooltip.svelte → tooltip/Tooltip.svelte} +5 -28
- package/dist/components/{Tooltip.svelte.d.ts → tooltip/Tooltip.svelte.d.ts} +1 -5
- package/dist/components/{TooltipContext.svelte → tooltip/TooltipContext.svelte} +20 -12
- package/dist/components/tooltip/TooltipHeader.svelte +21 -0
- package/dist/components/tooltip/TooltipHeader.svelte.d.ts +23 -0
- package/dist/components/tooltip/TooltipItem.svelte +37 -0
- package/dist/components/{TooltipItem.svelte.d.ts → tooltip/TooltipItem.svelte.d.ts} +4 -1
- package/dist/components/tooltip/TooltipList.svelte +12 -0
- package/dist/components/tooltip/TooltipList.svelte.d.ts +18 -0
- package/dist/components/tooltip/TooltipSeparator.svelte +4 -0
- package/dist/components/tooltip/index.d.ts +6 -0
- package/dist/components/tooltip/index.js +6 -0
- package/dist/docs/Blockquote.svelte +2 -1
- package/dist/docs/Code.svelte +2 -1
- package/dist/docs/CurveMenuField.svelte +2 -1
- package/dist/docs/GeoDebug.svelte +3 -1
- package/dist/docs/Json.svelte +1 -1
- package/dist/docs/Preview.svelte +2 -1
- package/dist/docs/TransformDebug.svelte +2 -1
- package/dist/utils/common.d.ts +1 -1
- package/dist/utils/common.js +2 -2
- package/dist/utils/common.test.d.ts +8 -0
- package/dist/utils/common.test.js +38 -0
- package/dist/utils/event.js +1 -1
- package/dist/utils/genData.d.ts +2 -2
- package/dist/utils/genData.js +20 -20
- package/dist/utils/math.d.ts +2 -2
- package/dist/utils/math.js +8 -2
- package/dist/utils/rect.d.ts +4 -10
- package/dist/utils/rect.js +15 -19
- package/dist/utils/scales.d.ts +8 -2
- package/dist/utils/scales.js +15 -1
- package/dist/utils/stack.d.ts +2 -2
- package/dist/utils/stack.js +37 -20
- package/dist/utils/stack.test.d.ts +6 -0
- package/dist/utils/stack.test.js +136 -0
- package/dist/utils/string.js +41 -0
- package/dist/utils/ticks.js +1 -2
- package/package.json +9 -3
- package/dist/components/AreaStack.svelte +0 -47
- package/dist/components/AreaStack.svelte.d.ts +0 -28
- package/dist/components/TooltipItem.svelte +0 -26
- package/dist/components/TooltipSeparator.svelte +0 -4
- /package/dist/components/{TooltipContext.svelte.d.ts → tooltip/TooltipContext.svelte.d.ts} +0 -0
- /package/dist/components/{TooltipSeparator.svelte.d.ts → tooltip/TooltipSeparator.svelte.d.ts} +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import Points from '../Points.svelte';
|
|
3
|
+
import { type ComponentProps } from 'svelte';
|
|
4
|
+
import Axis from '../Axis.svelte';
|
|
5
|
+
import Highlight from '../Highlight.svelte';
|
|
6
|
+
import Labels from '../Labels.svelte';
|
|
7
|
+
import Spline from '../Spline.svelte';
|
|
8
|
+
import { type Accessor } from '../../utils/common.js';
|
|
9
|
+
declare class __sveltets_Render<TData> {
|
|
10
|
+
props(): {
|
|
11
|
+
ssr?: boolean;
|
|
12
|
+
pointerEvents?: boolean;
|
|
13
|
+
position?: string;
|
|
14
|
+
percentRange?: boolean;
|
|
15
|
+
width?: number;
|
|
16
|
+
height?: number;
|
|
17
|
+
containerWidth?: number;
|
|
18
|
+
containerHeight?: number;
|
|
19
|
+
element?: HTMLDivElement;
|
|
20
|
+
data?: import("d3-sankey").SankeyGraph<any, any> | import("d3-hierarchy").HierarchyNode<TData> | TData[] | undefined;
|
|
21
|
+
flatData?: any[];
|
|
22
|
+
x?: Accessor<TData>;
|
|
23
|
+
y?: Accessor<TData>;
|
|
24
|
+
z?: Accessor<TData>;
|
|
25
|
+
r?: Accessor<TData>;
|
|
26
|
+
x1?: Accessor<TData>;
|
|
27
|
+
y1?: Accessor<TData>;
|
|
28
|
+
c?: Accessor<TData>;
|
|
29
|
+
xDomain?: import("../../utils/scales").DomainType;
|
|
30
|
+
yDomain?: import("../../utils/scales").DomainType;
|
|
31
|
+
zDomain?: import("../../utils/scales").DomainType;
|
|
32
|
+
rDomain?: import("../../utils/scales").DomainType;
|
|
33
|
+
x1Domain?: import("../../utils/scales").DomainType;
|
|
34
|
+
y1Domain?: import("../../utils/scales").DomainType;
|
|
35
|
+
cDomain?: import("../../utils/scales").DomainType;
|
|
36
|
+
xNice?: boolean | number;
|
|
37
|
+
yNice?: boolean | number;
|
|
38
|
+
zNice?: boolean | number;
|
|
39
|
+
rNice?: boolean | number;
|
|
40
|
+
xPadding?: [number, number];
|
|
41
|
+
yPadding?: [number, number];
|
|
42
|
+
zPadding?: [number, number];
|
|
43
|
+
rPadding?: [number, number];
|
|
44
|
+
xScale?: import("../../utils/scales").AnyScale;
|
|
45
|
+
yScale?: import("../../utils/scales").AnyScale;
|
|
46
|
+
zScale?: import("../../utils/scales").AnyScale;
|
|
47
|
+
rScale?: import("../../utils/scales").AnyScale;
|
|
48
|
+
x1Scale?: import("../../utils/scales").AnyScale;
|
|
49
|
+
y1Scale?: import("../../utils/scales").AnyScale;
|
|
50
|
+
cScale?: import("../../utils/scales").AnyScale;
|
|
51
|
+
xRange?: string[] | number[] | ((args: {
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
}) => number[] | string[]) | undefined;
|
|
55
|
+
yRange?: string[] | number[] | ((args: {
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
}) => number[] | string[]) | undefined;
|
|
59
|
+
zRange?: string[] | number[] | ((args: {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
}) => number[] | string[]) | undefined;
|
|
63
|
+
rRange?: string[] | number[] | ((args: {
|
|
64
|
+
width: number;
|
|
65
|
+
height: number;
|
|
66
|
+
}) => number[] | string[]) | undefined;
|
|
67
|
+
x1Range?: string[] | number[] | ((args: {
|
|
68
|
+
xScale: import("../../utils/scales").AnyScale;
|
|
69
|
+
width: number;
|
|
70
|
+
height: number;
|
|
71
|
+
}) => number[] | string[]) | undefined;
|
|
72
|
+
y1Range?: string[] | number[] | ((args: {
|
|
73
|
+
yScale: import("../../utils/scales").AnyScale;
|
|
74
|
+
width: number;
|
|
75
|
+
height: number;
|
|
76
|
+
}) => number[] | string[]) | undefined;
|
|
77
|
+
cRange?: string[];
|
|
78
|
+
xReverse?: boolean;
|
|
79
|
+
yReverse?: boolean;
|
|
80
|
+
zReverse?: boolean;
|
|
81
|
+
rReverse?: boolean;
|
|
82
|
+
xDomainSort?: boolean;
|
|
83
|
+
yDomainSort?: boolean;
|
|
84
|
+
zDomainSort?: boolean;
|
|
85
|
+
rDomainSort?: boolean;
|
|
86
|
+
padding?: {
|
|
87
|
+
top?: Number;
|
|
88
|
+
right?: Number;
|
|
89
|
+
bottom?: Number;
|
|
90
|
+
left?: Number;
|
|
91
|
+
} | undefined;
|
|
92
|
+
extents?: {
|
|
93
|
+
x?: [min: Number, max: Number];
|
|
94
|
+
y?: [min: Number, max: Number];
|
|
95
|
+
r?: [min: Number, max: Number];
|
|
96
|
+
z?: [min: Number, max: Number];
|
|
97
|
+
} | undefined;
|
|
98
|
+
custom?: Record<string, any>;
|
|
99
|
+
debug?: boolean;
|
|
100
|
+
verbose?: boolean;
|
|
101
|
+
xBaseline?: number | null;
|
|
102
|
+
yBaseline?: number | null;
|
|
103
|
+
radial?: boolean;
|
|
104
|
+
geo?: Partial<{
|
|
105
|
+
projection?: (() => import("d3-geo").GeoProjection) | undefined;
|
|
106
|
+
fitGeojson?: import("d3-geo").GeoPermissibleObjects | undefined;
|
|
107
|
+
fixedAspectRatio?: number | undefined;
|
|
108
|
+
clipAngle?: number | undefined;
|
|
109
|
+
clipExtent?: [[number, number], [number, number]] | undefined;
|
|
110
|
+
rotate?: {
|
|
111
|
+
yaw: number;
|
|
112
|
+
pitch: number;
|
|
113
|
+
roll: number;
|
|
114
|
+
} | undefined;
|
|
115
|
+
scale?: number | undefined;
|
|
116
|
+
translate?: [number, number] | undefined;
|
|
117
|
+
center?: [number, number] | undefined;
|
|
118
|
+
applyTransform?: ("scale" | "translate" | "rotate")[];
|
|
119
|
+
reflectX?: boolean | undefined;
|
|
120
|
+
reflectY?: boolean | undefined;
|
|
121
|
+
geo?: import("svelte/store").Writable<import("d3-geo").GeoProjection>;
|
|
122
|
+
}> | undefined;
|
|
123
|
+
tooltip?: boolean | Partial<{
|
|
124
|
+
mode?: "bisect-x" | "bisect-y" | "band" | "bisect-band" | "bounds" | "voronoi" | "quadtree" | "manual";
|
|
125
|
+
findTooltipData?: "closest" | "left" | "right";
|
|
126
|
+
raiseTarget?: boolean;
|
|
127
|
+
radius?: number;
|
|
128
|
+
debug?: boolean;
|
|
129
|
+
onClick?: ({ data }: {
|
|
130
|
+
data: any;
|
|
131
|
+
}) => any;
|
|
132
|
+
}> | undefined;
|
|
133
|
+
transform?: Partial<{
|
|
134
|
+
mode?: "canvas" | "manual" | "none";
|
|
135
|
+
translateOnScale?: boolean;
|
|
136
|
+
spring?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["spring"];
|
|
137
|
+
tweened?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["tweened"];
|
|
138
|
+
processTranslate?: (x: number, y: number, deltaX: number, deltaY: number, scale: number) => {
|
|
139
|
+
x: number;
|
|
140
|
+
y: number;
|
|
141
|
+
};
|
|
142
|
+
disablePointer?: boolean;
|
|
143
|
+
initialScrollMode?: "none" | "scale" | "translate";
|
|
144
|
+
clickDistance?: number;
|
|
145
|
+
initialTranslate?: {
|
|
146
|
+
x: number;
|
|
147
|
+
y: number;
|
|
148
|
+
} | undefined;
|
|
149
|
+
translate?: import("svelte/motion").Spring<{
|
|
150
|
+
x: number;
|
|
151
|
+
y: number;
|
|
152
|
+
}> | import("svelte/motion").Tweened<{
|
|
153
|
+
x: number;
|
|
154
|
+
y: number;
|
|
155
|
+
}> | import("svelte/store").Writable<{
|
|
156
|
+
x: number;
|
|
157
|
+
y: number;
|
|
158
|
+
}>;
|
|
159
|
+
initialScale?: number | undefined;
|
|
160
|
+
scale?: import("svelte/store").Writable<number> | import("svelte/motion").Spring<number> | import("svelte/motion").Tweened<number>;
|
|
161
|
+
setScrollMode?: (mode: "none" | "scale" | "translate") => void;
|
|
162
|
+
reset?: () => void;
|
|
163
|
+
zoomIn?: () => void;
|
|
164
|
+
zoomOut?: () => void;
|
|
165
|
+
translateCenter?: () => void;
|
|
166
|
+
zoomTo?: (center: {
|
|
167
|
+
x: number;
|
|
168
|
+
y: number;
|
|
169
|
+
}, rect?: {
|
|
170
|
+
width: number;
|
|
171
|
+
height: number;
|
|
172
|
+
}) => void;
|
|
173
|
+
setTranslate?: (point: {
|
|
174
|
+
x: number;
|
|
175
|
+
y: number;
|
|
176
|
+
}, options?: import("../../stores/motionStore").MotionOptions) => void;
|
|
177
|
+
setScale?: (value: number, options?: import("../../stores/motionStore").MotionOptions) => void;
|
|
178
|
+
}> | undefined;
|
|
179
|
+
transformContext?: import("..").TransformContext;
|
|
180
|
+
} & {
|
|
181
|
+
series?: {
|
|
182
|
+
key: string | number;
|
|
183
|
+
label?: string;
|
|
184
|
+
value?: Accessor<TData>;
|
|
185
|
+
/** Provider series data, else uses chart data (with value/key accessor) */
|
|
186
|
+
data?: TData[] | undefined;
|
|
187
|
+
color?: string;
|
|
188
|
+
props?: Partial<ComponentProps<Spline>>;
|
|
189
|
+
}[] | undefined;
|
|
190
|
+
labels?: boolean | {
|
|
191
|
+
[x: string]: any;
|
|
192
|
+
placement?: ("inside" | "outside" | "center") | undefined;
|
|
193
|
+
offset?: number | undefined;
|
|
194
|
+
format?: import("@layerstack/utils").FormatType | undefined;
|
|
195
|
+
};
|
|
196
|
+
axis?: boolean | {
|
|
197
|
+
placement: "top" | "bottom" | "left" | "right" | "angle" | "radius";
|
|
198
|
+
label?: string;
|
|
199
|
+
labelPlacement?: "start" | "middle" | "end";
|
|
200
|
+
labelProps?: Partial<ComponentProps<import("..").Text>> | undefined;
|
|
201
|
+
rule?: boolean | Pick<import("svelte/elements").SVGAttributes<SVGElement>, "class" | "style">;
|
|
202
|
+
grid?: boolean | Pick<import("svelte/elements").SVGAttributes<SVGElement>, "class" | "style">;
|
|
203
|
+
ticks?: number | any[] | ((scale: import("../../utils/scales").AnyScale) => any) | null | undefined;
|
|
204
|
+
tickLength?: number;
|
|
205
|
+
format?: import("@layerstack/utils").FormatType | undefined;
|
|
206
|
+
tickLabelProps?: Partial<ComponentProps<import("..").Text>> | undefined;
|
|
207
|
+
spring?: boolean | Parameters<typeof import("svelte/motion").spring>[1];
|
|
208
|
+
tweened?: boolean | Parameters<typeof import("svelte/motion").tweened>[1];
|
|
209
|
+
transitionIn?: typeof import("svelte/transition").fade | (() => {});
|
|
210
|
+
transitionInParams?: import("svelte-ux").TransitionParams;
|
|
211
|
+
scale?: any;
|
|
212
|
+
};
|
|
213
|
+
points?: boolean | {
|
|
214
|
+
[x: string]: any;
|
|
215
|
+
data?: any;
|
|
216
|
+
r?: number | undefined;
|
|
217
|
+
offsetX?: number | ((value: number, context: any) => number) | undefined;
|
|
218
|
+
offsetY?: number | ((value: number, context: any) => number) | undefined;
|
|
219
|
+
links?: (boolean | Partial<ComponentProps<import("..").Link>>) | undefined;
|
|
220
|
+
fill?: string | undefined;
|
|
221
|
+
stroke?: string | undefined;
|
|
222
|
+
strokeWidth?: number | string | undefined;
|
|
223
|
+
render?: ((ctx: CanvasRenderingContext2D, points: {
|
|
224
|
+
x: number;
|
|
225
|
+
y: number;
|
|
226
|
+
r: number;
|
|
227
|
+
xValue: any;
|
|
228
|
+
yValue: any;
|
|
229
|
+
data: any;
|
|
230
|
+
}[]) => any) | undefined;
|
|
231
|
+
class?: string | undefined;
|
|
232
|
+
};
|
|
233
|
+
props?: {
|
|
234
|
+
xAxis?: Partial<ComponentProps<Axis>>;
|
|
235
|
+
yAxis?: Partial<ComponentProps<Axis>>;
|
|
236
|
+
spline?: Partial<ComponentProps<Spline>>;
|
|
237
|
+
highlight?: Partial<ComponentProps<Highlight>>;
|
|
238
|
+
labels?: Partial<ComponentProps<Labels>>;
|
|
239
|
+
points?: Partial<ComponentProps<Points>>;
|
|
240
|
+
} | undefined;
|
|
241
|
+
};
|
|
242
|
+
events(): {} & {
|
|
243
|
+
[evt: string]: CustomEvent<any>;
|
|
244
|
+
};
|
|
245
|
+
slots(): {
|
|
246
|
+
default: any;
|
|
247
|
+
axis: any;
|
|
248
|
+
'below-marks': any;
|
|
249
|
+
marks: any;
|
|
250
|
+
'above-marks': any;
|
|
251
|
+
highlight: any;
|
|
252
|
+
tooltip: any;
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
export type LineChartProps<TData> = ReturnType<__sveltets_Render<TData>['props']>;
|
|
256
|
+
export type LineChartEvents<TData> = ReturnType<__sveltets_Render<TData>['events']>;
|
|
257
|
+
export type LineChartSlots<TData> = ReturnType<__sveltets_Render<TData>['slots']>;
|
|
258
|
+
export default class LineChart<TData> extends SvelteComponentTyped<LineChartProps<TData>, LineChartEvents<TData>, LineChartSlots<TData>> {
|
|
259
|
+
}
|
|
260
|
+
export {};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
<script generics="TData">import {} from 'svelte';
|
|
2
|
+
import { sum } from 'd3-array';
|
|
3
|
+
import { format } from '@layerstack/utils';
|
|
4
|
+
import Arc from '../Arc.svelte';
|
|
5
|
+
import Chart from '../Chart.svelte';
|
|
6
|
+
import Group from '../Group.svelte';
|
|
7
|
+
import Pie from '../Pie.svelte';
|
|
8
|
+
import Svg from '../layout/Svg.svelte';
|
|
9
|
+
import * as Tooltip from '../tooltip/index.js';
|
|
10
|
+
import { accessor, chartDataArray } from '../../utils/common.js';
|
|
11
|
+
export let data = [];
|
|
12
|
+
/** Label accessor */
|
|
13
|
+
export let label = 'label';
|
|
14
|
+
$: labelAccessor = accessor(label);
|
|
15
|
+
/** Value accessor */
|
|
16
|
+
export let value = 'value';
|
|
17
|
+
$: valueAccessor = accessor(value);
|
|
18
|
+
/** Maximum possible value, useful when `data` is single item */
|
|
19
|
+
export let maxValue = undefined;
|
|
20
|
+
export let series = [{ key: 'default', value: value /*, color: 'hsl(var(--color-primary))'*/ }];
|
|
21
|
+
/**
|
|
22
|
+
* Range [min,max] in degrees. See also startAngle/endAngle
|
|
23
|
+
*/
|
|
24
|
+
export let range = [0, 360];
|
|
25
|
+
/**
|
|
26
|
+
* Define innerRadius.
|
|
27
|
+
* value >= 1: discrete value
|
|
28
|
+
* value > 0: percent of `outerRadius`
|
|
29
|
+
* value < 0: offset of `outerRadius`
|
|
30
|
+
* default: yRange min
|
|
31
|
+
*/
|
|
32
|
+
export let innerRadius = undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
|
|
35
|
+
*/
|
|
36
|
+
export let outerRadius = undefined;
|
|
37
|
+
export let cornerRadius = 0;
|
|
38
|
+
export let padAngle = 0;
|
|
39
|
+
export let props = {};
|
|
40
|
+
$: allSeriesData = series
|
|
41
|
+
.flatMap((s) => s.data?.map((d) => ({ seriesKey: s.key, ...d })))
|
|
42
|
+
.filter((d) => d);
|
|
43
|
+
$: chartData = (allSeriesData.length ? allSeriesData : chartDataArray(data));
|
|
44
|
+
$: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<Chart
|
|
48
|
+
data={chartData}
|
|
49
|
+
x={value}
|
|
50
|
+
y={label}
|
|
51
|
+
c={label}
|
|
52
|
+
cRange={seriesColors.length
|
|
53
|
+
? seriesColors
|
|
54
|
+
: [
|
|
55
|
+
'hsl(var(--color-primary))',
|
|
56
|
+
'hsl(var(--color-secondary))',
|
|
57
|
+
'hsl(var(--color-info))',
|
|
58
|
+
'hsl(var(--color-success))',
|
|
59
|
+
'hsl(var(--color-warning))',
|
|
60
|
+
'hsl(var(--color-danger))',
|
|
61
|
+
]}
|
|
62
|
+
{...$$restProps}
|
|
63
|
+
let:x
|
|
64
|
+
let:xScale
|
|
65
|
+
let:y
|
|
66
|
+
let:c
|
|
67
|
+
let:cScale
|
|
68
|
+
let:yScale
|
|
69
|
+
let:width
|
|
70
|
+
let:height
|
|
71
|
+
let:padding
|
|
72
|
+
let:tooltip
|
|
73
|
+
>
|
|
74
|
+
{@const slotProps = { label, value, x, xScale, y, yScale, width, height, padding, tooltip }}
|
|
75
|
+
<slot {...slotProps}>
|
|
76
|
+
<Svg center>
|
|
77
|
+
<slot name="below-marks" {...slotProps} />
|
|
78
|
+
|
|
79
|
+
<slot name="marks" {...slotProps}>
|
|
80
|
+
<Group {...props.group}>
|
|
81
|
+
{#each series as s, i}
|
|
82
|
+
{@const singleArc = s.data?.length === 1 || chartData.length === 1}
|
|
83
|
+
{#if singleArc}
|
|
84
|
+
{@const d = s.data?.[0] || chartData[0]}
|
|
85
|
+
<Arc
|
|
86
|
+
value={valueAccessor(d)}
|
|
87
|
+
domain={[0, s.maxValue ?? maxValue ?? sum(chartData, valueAccessor)]}
|
|
88
|
+
{range}
|
|
89
|
+
{innerRadius}
|
|
90
|
+
outerRadius={(outerRadius ?? 0) < 0 ? i * (outerRadius ?? 0) : outerRadius}
|
|
91
|
+
{cornerRadius}
|
|
92
|
+
{padAngle}
|
|
93
|
+
fill={s.color ?? cScale(c(d))}
|
|
94
|
+
track={{ fill: s.color ?? cScale(c(d)), 'fill-opacity': 0.1 }}
|
|
95
|
+
{tooltip}
|
|
96
|
+
data={d}
|
|
97
|
+
{...props.arc}
|
|
98
|
+
/>
|
|
99
|
+
{:else}
|
|
100
|
+
<Pie
|
|
101
|
+
data={s.data}
|
|
102
|
+
{range}
|
|
103
|
+
{innerRadius}
|
|
104
|
+
{outerRadius}
|
|
105
|
+
{cornerRadius}
|
|
106
|
+
{padAngle}
|
|
107
|
+
{...props.pie}
|
|
108
|
+
let:arcs
|
|
109
|
+
>
|
|
110
|
+
{#each arcs as arc}
|
|
111
|
+
<Arc
|
|
112
|
+
startAngle={arc.startAngle}
|
|
113
|
+
endAngle={arc.endAngle}
|
|
114
|
+
outerRadius={i * (outerRadius ?? 0)}
|
|
115
|
+
{innerRadius}
|
|
116
|
+
{cornerRadius}
|
|
117
|
+
{padAngle}
|
|
118
|
+
fill={cScale(c(arc.data))}
|
|
119
|
+
data={arc.data}
|
|
120
|
+
{tooltip}
|
|
121
|
+
{...props.arc}
|
|
122
|
+
/>
|
|
123
|
+
{/each}
|
|
124
|
+
</Pie>
|
|
125
|
+
{/if}
|
|
126
|
+
{/each}
|
|
127
|
+
</Group>
|
|
128
|
+
</slot>
|
|
129
|
+
|
|
130
|
+
<slot name="above-marks" {...slotProps} />
|
|
131
|
+
</Svg>
|
|
132
|
+
|
|
133
|
+
<slot name="tooltip" {...slotProps}>
|
|
134
|
+
<Tooltip.Root let:data>
|
|
135
|
+
<Tooltip.List>
|
|
136
|
+
<Tooltip.Item
|
|
137
|
+
label={labelAccessor(data)}
|
|
138
|
+
value={valueAccessor(data)}
|
|
139
|
+
color={cScale(c(data))}
|
|
140
|
+
{format}
|
|
141
|
+
/>
|
|
142
|
+
</Tooltip.List>
|
|
143
|
+
</Tooltip.Root>
|
|
144
|
+
</slot>
|
|
145
|
+
</slot>
|
|
146
|
+
</Chart>
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
import { type ComponentProps } from 'svelte';
|
|
3
|
+
import Arc from '../Arc.svelte';
|
|
4
|
+
import Group from '../Group.svelte';
|
|
5
|
+
import Pie from '../Pie.svelte';
|
|
6
|
+
import { type Accessor } from '../../utils/common.js';
|
|
7
|
+
declare class __sveltets_Render<TData> {
|
|
8
|
+
props(): {
|
|
9
|
+
ssr?: boolean;
|
|
10
|
+
pointerEvents?: boolean;
|
|
11
|
+
position?: string;
|
|
12
|
+
percentRange?: boolean;
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
containerWidth?: number;
|
|
16
|
+
containerHeight?: number;
|
|
17
|
+
element?: HTMLDivElement;
|
|
18
|
+
data?: import("d3-sankey").SankeyGraph<any, any> | import("d3-hierarchy").HierarchyNode<TData> | TData[] | undefined;
|
|
19
|
+
flatData?: any[];
|
|
20
|
+
x?: Accessor<TData>;
|
|
21
|
+
y?: Accessor<TData>;
|
|
22
|
+
z?: Accessor<TData>;
|
|
23
|
+
r?: Accessor<TData>;
|
|
24
|
+
x1?: Accessor<TData>;
|
|
25
|
+
y1?: Accessor<TData>;
|
|
26
|
+
c?: Accessor<TData>;
|
|
27
|
+
xDomain?: import("../../utils/scales").DomainType;
|
|
28
|
+
yDomain?: import("../../utils/scales").DomainType;
|
|
29
|
+
zDomain?: import("../../utils/scales").DomainType;
|
|
30
|
+
rDomain?: import("../../utils/scales").DomainType;
|
|
31
|
+
x1Domain?: import("../../utils/scales").DomainType;
|
|
32
|
+
y1Domain?: import("../../utils/scales").DomainType;
|
|
33
|
+
cDomain?: import("../../utils/scales").DomainType;
|
|
34
|
+
xNice?: boolean | number;
|
|
35
|
+
yNice?: boolean | number;
|
|
36
|
+
zNice?: boolean | number;
|
|
37
|
+
rNice?: boolean | number;
|
|
38
|
+
xPadding?: [number, number];
|
|
39
|
+
yPadding?: [number, number];
|
|
40
|
+
zPadding?: [number, number];
|
|
41
|
+
rPadding?: [number, number];
|
|
42
|
+
xScale?: import("../../utils/scales").AnyScale;
|
|
43
|
+
yScale?: import("../../utils/scales").AnyScale;
|
|
44
|
+
zScale?: import("../../utils/scales").AnyScale;
|
|
45
|
+
rScale?: import("../../utils/scales").AnyScale;
|
|
46
|
+
x1Scale?: import("../../utils/scales").AnyScale;
|
|
47
|
+
y1Scale?: import("../../utils/scales").AnyScale;
|
|
48
|
+
cScale?: import("../../utils/scales").AnyScale;
|
|
49
|
+
xRange?: string[] | number[] | ((args: {
|
|
50
|
+
width: number;
|
|
51
|
+
height: number;
|
|
52
|
+
}) => number[] | string[]) | undefined;
|
|
53
|
+
yRange?: string[] | number[] | ((args: {
|
|
54
|
+
width: number;
|
|
55
|
+
height: number;
|
|
56
|
+
}) => number[] | string[]) | undefined;
|
|
57
|
+
zRange?: string[] | number[] | ((args: {
|
|
58
|
+
width: number;
|
|
59
|
+
height: number;
|
|
60
|
+
}) => number[] | string[]) | undefined;
|
|
61
|
+
rRange?: string[] | number[] | ((args: {
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
}) => number[] | string[]) | undefined;
|
|
65
|
+
x1Range?: string[] | number[] | ((args: {
|
|
66
|
+
xScale: import("../../utils/scales").AnyScale;
|
|
67
|
+
width: number;
|
|
68
|
+
height: number;
|
|
69
|
+
}) => number[] | string[]) | undefined;
|
|
70
|
+
y1Range?: string[] | number[] | ((args: {
|
|
71
|
+
yScale: import("../../utils/scales").AnyScale;
|
|
72
|
+
width: number;
|
|
73
|
+
height: number;
|
|
74
|
+
}) => number[] | string[]) | undefined;
|
|
75
|
+
cRange?: string[];
|
|
76
|
+
xReverse?: boolean;
|
|
77
|
+
yReverse?: boolean;
|
|
78
|
+
zReverse?: boolean;
|
|
79
|
+
rReverse?: boolean;
|
|
80
|
+
xDomainSort?: boolean;
|
|
81
|
+
yDomainSort?: boolean;
|
|
82
|
+
zDomainSort?: boolean;
|
|
83
|
+
rDomainSort?: boolean;
|
|
84
|
+
padding?: {
|
|
85
|
+
top?: Number;
|
|
86
|
+
right?: Number;
|
|
87
|
+
bottom?: Number;
|
|
88
|
+
left?: Number;
|
|
89
|
+
} | undefined;
|
|
90
|
+
extents?: {
|
|
91
|
+
x?: [min: Number, max: Number];
|
|
92
|
+
y?: [min: Number, max: Number];
|
|
93
|
+
r?: [min: Number, max: Number];
|
|
94
|
+
z?: [min: Number, max: Number];
|
|
95
|
+
} | undefined;
|
|
96
|
+
custom?: Record<string, any>;
|
|
97
|
+
debug?: boolean;
|
|
98
|
+
verbose?: boolean;
|
|
99
|
+
xBaseline?: number | null;
|
|
100
|
+
yBaseline?: number | null;
|
|
101
|
+
radial?: boolean;
|
|
102
|
+
geo?: Partial<{
|
|
103
|
+
projection?: (() => import("d3-geo").GeoProjection) | undefined;
|
|
104
|
+
fitGeojson?: import("d3-geo").GeoPermissibleObjects | undefined;
|
|
105
|
+
fixedAspectRatio?: number | undefined;
|
|
106
|
+
clipAngle?: number | undefined;
|
|
107
|
+
clipExtent?: [[number, number], [number, number]] | undefined;
|
|
108
|
+
rotate?: {
|
|
109
|
+
yaw: number;
|
|
110
|
+
pitch: number;
|
|
111
|
+
roll: number;
|
|
112
|
+
} | undefined;
|
|
113
|
+
scale?: number | undefined;
|
|
114
|
+
translate?: [number, number] | undefined;
|
|
115
|
+
center?: [number, number] | undefined;
|
|
116
|
+
applyTransform?: ("scale" | "translate" | "rotate")[];
|
|
117
|
+
reflectX?: boolean | undefined;
|
|
118
|
+
reflectY?: boolean | undefined;
|
|
119
|
+
geo?: import("svelte/store").Writable<import("d3-geo").GeoProjection>;
|
|
120
|
+
}> | undefined;
|
|
121
|
+
tooltip?: boolean | Partial<{
|
|
122
|
+
mode?: "bisect-x" | "bisect-y" | "band" | "bisect-band" | "bounds" | "voronoi" | "quadtree" | "manual";
|
|
123
|
+
findTooltipData?: "closest" | "left" | "right";
|
|
124
|
+
raiseTarget?: boolean;
|
|
125
|
+
radius?: number;
|
|
126
|
+
debug?: boolean;
|
|
127
|
+
onClick?: ({ data }: {
|
|
128
|
+
data: any;
|
|
129
|
+
}) => any;
|
|
130
|
+
}> | undefined;
|
|
131
|
+
transform?: Partial<{
|
|
132
|
+
mode?: "canvas" | "manual" | "none";
|
|
133
|
+
translateOnScale?: boolean;
|
|
134
|
+
spring?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["spring"];
|
|
135
|
+
tweened?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["tweened"];
|
|
136
|
+
processTranslate?: (x: number, y: number, deltaX: number, deltaY: number, scale: number) => {
|
|
137
|
+
x: number;
|
|
138
|
+
y: number;
|
|
139
|
+
};
|
|
140
|
+
disablePointer?: boolean;
|
|
141
|
+
initialScrollMode?: "none" | "scale" | "translate";
|
|
142
|
+
clickDistance?: number;
|
|
143
|
+
initialTranslate?: {
|
|
144
|
+
x: number;
|
|
145
|
+
y: number;
|
|
146
|
+
} | undefined;
|
|
147
|
+
translate?: import("svelte/motion").Spring<{
|
|
148
|
+
x: number;
|
|
149
|
+
y: number;
|
|
150
|
+
}> | import("svelte/motion").Tweened<{
|
|
151
|
+
x: number;
|
|
152
|
+
y: number;
|
|
153
|
+
}> | import("svelte/store").Writable<{
|
|
154
|
+
x: number;
|
|
155
|
+
y: number;
|
|
156
|
+
}>;
|
|
157
|
+
initialScale?: number | undefined;
|
|
158
|
+
scale?: import("svelte/store").Writable<number> | import("svelte/motion").Spring<number> | import("svelte/motion").Tweened<number>;
|
|
159
|
+
setScrollMode?: (mode: "none" | "scale" | "translate") => void;
|
|
160
|
+
reset?: () => void;
|
|
161
|
+
zoomIn?: () => void;
|
|
162
|
+
zoomOut?: () => void;
|
|
163
|
+
translateCenter?: () => void;
|
|
164
|
+
zoomTo?: (center: {
|
|
165
|
+
x: number;
|
|
166
|
+
y: number;
|
|
167
|
+
}, rect?: {
|
|
168
|
+
width: number;
|
|
169
|
+
height: number;
|
|
170
|
+
}) => void;
|
|
171
|
+
setTranslate?: (point: {
|
|
172
|
+
x: number;
|
|
173
|
+
y: number;
|
|
174
|
+
}, options?: import("../../stores/motionStore").MotionOptions) => void;
|
|
175
|
+
setScale?: (value: number, options?: import("../../stores/motionStore").MotionOptions) => void;
|
|
176
|
+
}> | undefined;
|
|
177
|
+
transformContext?: import("..").TransformContext;
|
|
178
|
+
} & {
|
|
179
|
+
label?: Accessor<TData>;
|
|
180
|
+
value?: Accessor<TData>;
|
|
181
|
+
maxValue?: number | undefined;
|
|
182
|
+
range?: number[];
|
|
183
|
+
innerRadius?: number | undefined;
|
|
184
|
+
outerRadius?: number | undefined;
|
|
185
|
+
cornerRadius?: number;
|
|
186
|
+
padAngle?: number;
|
|
187
|
+
props?: {
|
|
188
|
+
pie?: Partial<ComponentProps<Pie>>;
|
|
189
|
+
group?: Partial<ComponentProps<Group>>;
|
|
190
|
+
arc?: Partial<ComponentProps<Arc>>;
|
|
191
|
+
} | undefined;
|
|
192
|
+
series?: {
|
|
193
|
+
key: string | number;
|
|
194
|
+
label?: string;
|
|
195
|
+
value?: Accessor<TData>;
|
|
196
|
+
/** Provider series data, else uses chart data (with value/key accessor) */
|
|
197
|
+
data?: TData[] | undefined;
|
|
198
|
+
/** Maximum possible value, useful when `data` is single item */
|
|
199
|
+
maxValue?: number;
|
|
200
|
+
color?: string;
|
|
201
|
+
props?: Partial<ComponentProps<Arc>>;
|
|
202
|
+
}[] | undefined;
|
|
203
|
+
};
|
|
204
|
+
events(): {} & {
|
|
205
|
+
[evt: string]: CustomEvent<any>;
|
|
206
|
+
};
|
|
207
|
+
slots(): {
|
|
208
|
+
default: any;
|
|
209
|
+
'below-marks': any;
|
|
210
|
+
marks: any;
|
|
211
|
+
'above-marks': any;
|
|
212
|
+
tooltip: any;
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
export type PieChartProps<TData> = ReturnType<__sveltets_Render<TData>['props']>;
|
|
216
|
+
export type PieChartEvents<TData> = ReturnType<__sveltets_Render<TData>['events']>;
|
|
217
|
+
export type PieChartSlots<TData> = ReturnType<__sveltets_Render<TData>['slots']>;
|
|
218
|
+
export default class PieChart<TData> extends SvelteComponentTyped<PieChartProps<TData>, PieChartEvents<TData>, PieChartSlots<TData>> {
|
|
219
|
+
}
|
|
220
|
+
export {};
|