layerchart 0.54.0 → 0.54.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/dist/components/Arc.svelte +170 -144
- package/dist/components/Area.svelte +96 -67
- package/dist/components/Area.svelte.d.ts +1 -0
- package/dist/components/Axis.svelte +205 -155
- package/dist/components/Bar.svelte +72 -45
- package/dist/components/Bars.svelte +45 -34
- package/dist/components/Blur.svelte +5 -3
- package/dist/components/Bounds.svelte +37 -21
- package/dist/components/Brush.svelte +181 -110
- package/dist/components/Calendar.svelte +51 -38
- package/dist/components/Chart.svelte +295 -74
- package/dist/components/Chart.svelte.d.ts +17 -17
- package/dist/components/ChartClipPath.svelte +8 -5
- package/dist/components/ChartContext.svelte +243 -93
- package/dist/components/ChartContext.svelte.d.ts +15 -23
- package/dist/components/Circle.svelte +25 -16
- package/dist/components/CircleClipPath.svelte +16 -10
- package/dist/components/ClipPath.svelte +11 -7
- package/dist/components/ColorRamp.svelte +12 -10
- package/dist/components/ForceSimulation.svelte +185 -116
- package/dist/components/Frame.svelte +10 -6
- package/dist/components/GeoCircle.svelte +15 -9
- package/dist/components/GeoContext.svelte +109 -62
- package/dist/components/GeoEdgeFade.svelte +20 -14
- package/dist/components/GeoPath.svelte +107 -69
- package/dist/components/GeoPoint.svelte +32 -18
- package/dist/components/GeoSpline.svelte +30 -22
- package/dist/components/GeoTile.svelte +40 -30
- package/dist/components/GeoVisible.svelte +10 -7
- package/dist/components/Graticule.svelte +14 -8
- package/dist/components/Grid.svelte +75 -48
- package/dist/components/Group.svelte +43 -31
- package/dist/components/Highlight.svelte +284 -243
- package/dist/components/HitCanvas.svelte +75 -42
- package/dist/components/Hull.svelte +40 -20
- package/dist/components/Labels.svelte +81 -70
- package/dist/components/Legend.svelte +105 -74
- package/dist/components/Legend.svelte.d.ts +1 -1
- package/dist/components/Line.svelte +29 -19
- package/dist/components/LinearGradient.svelte +21 -15
- package/dist/components/Link.svelte +44 -22
- package/dist/components/MonthPath.svelte +23 -16
- package/dist/components/MotionPath.svelte +34 -25
- package/dist/components/Pack.svelte +21 -14
- package/dist/components/Partition.svelte +35 -20
- package/dist/components/Pattern.svelte +8 -6
- package/dist/components/Pie.svelte +76 -57
- package/dist/components/Point.svelte +11 -7
- package/dist/components/Points.svelte +178 -143
- package/dist/components/RadialGradient.svelte +25 -18
- package/dist/components/Rect.svelte +33 -19
- package/dist/components/RectClipPath.svelte +16 -11
- package/dist/components/Rule.svelte +50 -42
- package/dist/components/Sankey.svelte +55 -30
- package/dist/components/Spline.svelte +118 -96
- package/dist/components/Text.svelte +137 -104
- package/dist/components/Threshold.svelte +18 -7
- package/dist/components/TileImage.svelte +56 -50
- package/dist/components/TransformContext.svelte +235 -135
- package/dist/components/TransformControls.svelte +57 -29
- package/dist/components/TransformControls.svelte.d.ts +1 -1
- package/dist/components/Tree.svelte +33 -23
- package/dist/components/Treemap.svelte +69 -41
- package/dist/components/Voronoi.svelte +55 -28
- package/dist/components/charts/AreaChart.svelte +128 -77
- package/dist/components/charts/AreaChart.svelte.d.ts +1 -1
- package/dist/components/charts/BarChart.svelte +169 -104
- package/dist/components/charts/BarChart.svelte.d.ts +1 -1
- package/dist/components/charts/LineChart.svelte +87 -43
- package/dist/components/charts/LineChart.svelte.d.ts +1 -1
- package/dist/components/charts/PieChart.svelte +102 -52
- package/dist/components/charts/PieChart.svelte.d.ts +1 -1
- package/dist/components/charts/ScatterChart.svelte +73 -38
- package/dist/components/charts/ScatterChart.svelte.d.ts +1 -1
- package/dist/components/layout/Canvas.svelte +63 -43
- package/dist/components/layout/Html.svelte +28 -18
- package/dist/components/layout/Svg.svelte +47 -32
- package/dist/components/tooltip/Tooltip.svelte +137 -91
- package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/components/tooltip/TooltipContext.svelte +315 -249
- package/dist/components/tooltip/TooltipHeader.svelte +9 -3
- package/dist/components/tooltip/TooltipItem.svelte +17 -9
- package/dist/components/tooltip/TooltipList.svelte +2 -1
- package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
- package/dist/docs/Blockquote.svelte +4 -3
- package/dist/docs/Code.svelte +15 -8
- package/dist/docs/CurveMenuField.svelte +17 -12
- package/dist/docs/GeoDebug.svelte +13 -9
- package/dist/docs/Header1.svelte +2 -1
- package/dist/docs/Json.svelte +6 -4
- package/dist/docs/Layout.svelte +6 -6
- package/dist/docs/PathDataMenuField.svelte +52 -44
- package/dist/docs/Preview.svelte +39 -33
- package/dist/docs/TilesetField.svelte +80 -62
- package/dist/docs/TransformDebug.svelte +8 -5
- package/dist/docs/ViewSourceButton.svelte +13 -9
- package/dist/stores/motionStore.d.ts +1 -1
- package/dist/utils/scales.d.ts +3 -3
- package/package.json +29 -30
|
@@ -2,7 +2,7 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
|
-
placement?: ("
|
|
5
|
+
placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
6
6
|
orientation?: ("horizontal" | "vertical") | undefined;
|
|
7
7
|
show?: ("reset" | "scrollMode" | "zoomIn" | "zoomOut" | "center")[] | undefined;
|
|
8
8
|
};
|
|
@@ -1,31 +1,41 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { type HierarchyPointNode, tree as d3Tree, type TreeLayout } from 'd3-hierarchy';
|
|
3
|
+
import { chartContext } from './ChartContext.svelte';
|
|
4
|
+
|
|
5
|
+
const { data, width, height } = chartContext();
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
|
|
9
|
+
* If unset, layout size is used instead. When a node size is specified, the root node is always
|
|
10
|
+
* positioned at `⟨0, 0⟩`.
|
|
11
|
+
*
|
|
12
|
+
* see: https://github.com/d3/d3-hierarchy#tree_nodeSize
|
|
13
|
+
*/
|
|
14
|
+
export let nodeSize: [number, number] | undefined = undefined;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* see: https://github.com/d3/d3-hierarchy#tree_separation
|
|
18
|
+
*/
|
|
19
|
+
export let separation:
|
|
20
|
+
| ((a: HierarchyPointNode<any>, b: HierarchyPointNode<any>) => number)
|
|
21
|
+
| undefined = undefined;
|
|
22
|
+
|
|
23
|
+
export let orientation: 'vertical' | 'horizontal' = 'horizontal';
|
|
24
|
+
|
|
25
|
+
let tree: TreeLayout<any>;
|
|
26
|
+
$: {
|
|
19
27
|
tree = d3Tree().size(orientation === 'horizontal' ? [$height, $width] : [$width, $height]);
|
|
28
|
+
|
|
20
29
|
if (nodeSize) {
|
|
21
|
-
|
|
30
|
+
tree.nodeSize(nodeSize);
|
|
22
31
|
}
|
|
23
32
|
if (separation) {
|
|
24
|
-
|
|
33
|
+
tree.separation(separation);
|
|
25
34
|
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// @ts-expect-error
|
|
38
|
+
$: treeData = tree($data);
|
|
29
39
|
</script>
|
|
30
40
|
|
|
31
41
|
<slot nodes={treeData.descendants()} links={treeData.links()} />
|
|
@@ -1,60 +1,88 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
treemap as d3treemap,
|
|
4
|
+
treemapBinary,
|
|
5
|
+
treemapDice,
|
|
6
|
+
treemapResquarify,
|
|
7
|
+
treemapSlice,
|
|
8
|
+
treemapSliceDice,
|
|
9
|
+
treemapSquarify,
|
|
10
|
+
type HierarchyNode,
|
|
11
|
+
type HierarchyRectangularNode,
|
|
12
|
+
type TreemapLayout,
|
|
13
|
+
} from 'd3-hierarchy';
|
|
14
|
+
|
|
15
|
+
import { chartContext } from './ChartContext.svelte';
|
|
16
|
+
import { aspectTile } from '../utils/treemap.js';
|
|
17
|
+
|
|
18
|
+
const { data, width, height } = chartContext();
|
|
19
|
+
|
|
20
|
+
export let tile:
|
|
21
|
+
| typeof treemapSquarify
|
|
22
|
+
| 'binary'
|
|
23
|
+
| 'squarify'
|
|
24
|
+
| 'resquarify'
|
|
25
|
+
| 'dice'
|
|
26
|
+
| 'slice'
|
|
27
|
+
| 'sliceDice' = treemapSquarify;
|
|
28
|
+
export let padding = 0;
|
|
29
|
+
export let paddingInner = 0;
|
|
30
|
+
export let paddingOuter = 0;
|
|
31
|
+
export let paddingTop = 0;
|
|
32
|
+
export let paddingBottom = 0;
|
|
33
|
+
export let paddingLeft: number | undefined = undefined;
|
|
34
|
+
export let paddingRight: number | undefined = undefined;
|
|
35
|
+
|
|
36
|
+
export let selected: HierarchyRectangularNode<any> | null | undefined = null;
|
|
37
|
+
|
|
38
|
+
$: tileFunc =
|
|
15
39
|
tile === 'squarify'
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
? treemapSquarify
|
|
41
|
+
: tile === 'resquarify'
|
|
42
|
+
? treemapResquarify
|
|
43
|
+
: tile === 'binary'
|
|
44
|
+
? treemapBinary
|
|
45
|
+
: tile === 'dice'
|
|
46
|
+
? treemapDice
|
|
47
|
+
: tile === 'slice'
|
|
48
|
+
? treemapSlice
|
|
49
|
+
: tile === 'sliceDice'
|
|
50
|
+
? treemapSliceDice
|
|
51
|
+
: tile;
|
|
52
|
+
|
|
53
|
+
let treemap: TreemapLayout<any>;
|
|
54
|
+
$: {
|
|
30
55
|
treemap = d3treemap()
|
|
31
|
-
|
|
32
|
-
|
|
56
|
+
.size([$width, $height])
|
|
57
|
+
.tile(aspectTile(tileFunc, $width, $height));
|
|
58
|
+
|
|
33
59
|
if (padding) {
|
|
34
|
-
|
|
60
|
+
treemap.padding(padding);
|
|
35
61
|
}
|
|
36
62
|
if (paddingInner) {
|
|
37
|
-
|
|
63
|
+
treemap.paddingInner(paddingInner);
|
|
38
64
|
}
|
|
39
65
|
if (paddingOuter) {
|
|
40
|
-
|
|
66
|
+
treemap.paddingOuter(paddingOuter);
|
|
41
67
|
}
|
|
42
68
|
if (paddingTop) {
|
|
43
|
-
|
|
69
|
+
treemap.paddingTop(paddingTop);
|
|
44
70
|
}
|
|
45
71
|
if (paddingBottom) {
|
|
46
|
-
|
|
72
|
+
treemap.paddingBottom(paddingBottom);
|
|
47
73
|
}
|
|
48
74
|
if (paddingLeft) {
|
|
49
|
-
|
|
75
|
+
treemap.paddingLeft(paddingLeft);
|
|
50
76
|
}
|
|
51
77
|
if (paddingRight) {
|
|
52
|
-
|
|
78
|
+
treemap.paddingRight(paddingRight);
|
|
53
79
|
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
$: treemapData = treemap($data as HierarchyNode<any>);
|
|
83
|
+
|
|
84
|
+
// TODO: Remove selected
|
|
85
|
+
$: selected = treemapData; // set initial selection
|
|
58
86
|
</script>
|
|
59
87
|
|
|
60
88
|
<slot nodes={treemapData.descendants()} />
|
|
@@ -1,41 +1,68 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { createEventDispatcher } from 'svelte';
|
|
3
|
+
import { min } from 'd3-array';
|
|
4
|
+
import { Delaunay } from 'd3-delaunay';
|
|
5
|
+
import type { GeoPermissibleObjects } from 'd3-geo';
|
|
6
|
+
// @ts-expect-error
|
|
7
|
+
import { geoVoronoi } from 'd3-geo-voronoi';
|
|
8
|
+
import { pointRadial } from 'd3-shape';
|
|
9
|
+
import { cls } from '@layerstack/tailwind';
|
|
10
|
+
|
|
11
|
+
import { chartContext } from './ChartContext.svelte';
|
|
12
|
+
import GeoPath from './GeoPath.svelte';
|
|
13
|
+
import { geoContext, type GeoContext } from './GeoContext.svelte';
|
|
14
|
+
|
|
15
|
+
const { flatData, xGet, yGet, x: xContext, y: yContext, width, height, radial } = chartContext();
|
|
16
|
+
const geo = geoContext() as GeoContext | undefined;
|
|
17
|
+
|
|
18
|
+
/** Override data instead of using context */
|
|
19
|
+
export let data: any = undefined;
|
|
20
|
+
|
|
21
|
+
export let classes: {
|
|
22
|
+
root?: string;
|
|
23
|
+
path?: string;
|
|
24
|
+
} = {};
|
|
25
|
+
|
|
26
|
+
const dispatch = createEventDispatcher<{
|
|
27
|
+
click: { data: any; point?: [number, number]; feature?: GeoPermissibleObjects };
|
|
28
|
+
pointerenter: {
|
|
29
|
+
event: PointerEvent;
|
|
30
|
+
data: any;
|
|
31
|
+
point?: [number, number];
|
|
32
|
+
feature?: GeoPermissibleObjects;
|
|
33
|
+
};
|
|
34
|
+
pointermove: {
|
|
35
|
+
event: PointerEvent;
|
|
36
|
+
data: any;
|
|
37
|
+
point?: [number, number];
|
|
38
|
+
feature?: GeoPermissibleObjects;
|
|
39
|
+
};
|
|
40
|
+
}>();
|
|
41
|
+
|
|
42
|
+
$: points = (data ?? $flatData).map((d: any) => {
|
|
18
43
|
// geo voronoi needs raw latitude/longtude, not mapped to range (chart dimensions)
|
|
19
44
|
const xValue = $geo ? $xContext(d) : $xGet(d);
|
|
20
45
|
const yValue = $geo ? $yContext(d) : $yGet(d);
|
|
46
|
+
|
|
21
47
|
const x = Array.isArray(xValue) ? min(xValue) : xValue;
|
|
22
48
|
const y = Array.isArray(yValue) ? min(yValue) : yValue;
|
|
23
|
-
|
|
49
|
+
|
|
50
|
+
let point: [number, number];
|
|
24
51
|
if ($radial) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
point = [x, y];
|
|
52
|
+
const radialPoint = pointRadial(x, y);
|
|
53
|
+
// Assume radial is also centered
|
|
54
|
+
point = [radialPoint[0] + $width / 2, radialPoint[1] + $height / 2];
|
|
55
|
+
} else {
|
|
56
|
+
point = [x, y];
|
|
31
57
|
}
|
|
32
58
|
// @ts-expect-error
|
|
33
59
|
point.data = d;
|
|
34
60
|
return point;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
$:
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// Width and/or height can sometimes be negative (when loading data remotely and updately)
|
|
64
|
+
$: boundWidth = Math.max($width, 0);
|
|
65
|
+
$: boundHeight = Math.max($height, 0);
|
|
39
66
|
</script>
|
|
40
67
|
|
|
41
68
|
<g {...$$restProps} class={cls(classes.root, $$props.class)}>
|
|
@@ -1,91 +1,142 @@
|
|
|
1
|
-
<script generics="TData">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export let
|
|
36
|
-
|
|
1
|
+
<script lang="ts" generics="TData">
|
|
2
|
+
import { type ComponentProps } from 'svelte';
|
|
3
|
+
import { scaleLinear, scaleOrdinal, scaleTime } from 'd3-scale';
|
|
4
|
+
import { stack, stackOffsetDiverging, stackOffsetExpand, stackOffsetNone } from 'd3-shape';
|
|
5
|
+
import { sum } from 'd3-array';
|
|
6
|
+
import { format } from '@layerstack/utils';
|
|
7
|
+
|
|
8
|
+
import Area from '../Area.svelte';
|
|
9
|
+
import Axis from '../Axis.svelte';
|
|
10
|
+
import Chart from '../Chart.svelte';
|
|
11
|
+
import Grid from '../Grid.svelte';
|
|
12
|
+
import Highlight from '../Highlight.svelte';
|
|
13
|
+
import Labels from '../Labels.svelte';
|
|
14
|
+
import Legend from '../Legend.svelte';
|
|
15
|
+
import Line from '../Line.svelte';
|
|
16
|
+
import Points from '../Points.svelte';
|
|
17
|
+
import Rule from '../Rule.svelte';
|
|
18
|
+
import Svg from '../layout/Svg.svelte';
|
|
19
|
+
import * as Tooltip from '../tooltip/index.js';
|
|
20
|
+
|
|
21
|
+
import { accessor, chartDataArray, type Accessor } from '../../utils/common.js';
|
|
22
|
+
|
|
23
|
+
interface $$Props extends ComponentProps<Chart<TData>> {
|
|
24
|
+
axis?: typeof axis;
|
|
25
|
+
grid?: typeof grid;
|
|
26
|
+
labels?: typeof labels;
|
|
27
|
+
legend?: typeof legend;
|
|
28
|
+
points?: typeof points;
|
|
29
|
+
props?: typeof props;
|
|
30
|
+
rule?: typeof rule;
|
|
31
|
+
series?: typeof series;
|
|
32
|
+
seriesLayout?: typeof seriesLayout;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export let data: $$Props['data'] = [];
|
|
36
|
+
export let x: Accessor<TData> = undefined;
|
|
37
|
+
export let y: Accessor<TData> = undefined;
|
|
38
|
+
|
|
39
|
+
/** Use radial instead of cartesian coordinates, mapping `x` to `angle` and `y`` to radial. Radial lines are positioned relative to the origin, use transform (ex. `<Group center>`) to change the origin */
|
|
40
|
+
export let radial = false;
|
|
41
|
+
|
|
42
|
+
export let series: {
|
|
43
|
+
key: string;
|
|
44
|
+
label?: string;
|
|
45
|
+
value?: Accessor<TData>;
|
|
46
|
+
/** Provider series data, else uses chart data (with value/key accessor) */
|
|
47
|
+
data?: TData[];
|
|
48
|
+
color?: string;
|
|
49
|
+
props?: Partial<ComponentProps<Area>>;
|
|
50
|
+
}[] = [{ key: 'default', value: y, color: 'hsl(var(--color-primary))' }];
|
|
51
|
+
$: isDefaultSeries = series.length === 1 && series[0].key === 'default';
|
|
52
|
+
|
|
53
|
+
/** Determine how to layout series. Overlap (default) or stack */
|
|
54
|
+
export let seriesLayout: 'overlap' | 'stack' | 'stackExpand' | 'stackDiverging' = 'overlap';
|
|
55
|
+
$: stackSeries = seriesLayout.startsWith('stack');
|
|
56
|
+
|
|
57
|
+
export let axis: ComponentProps<Axis> | 'x' | 'y' | boolean = true;
|
|
58
|
+
export let grid: ComponentProps<Grid> | boolean = true;
|
|
59
|
+
export let rule: ComponentProps<Rule> | boolean = true;
|
|
60
|
+
export let labels: ComponentProps<Labels> | boolean = false;
|
|
61
|
+
export let legend: ComponentProps<Legend> | boolean = false;
|
|
62
|
+
export let points: ComponentProps<Points> | boolean = false;
|
|
63
|
+
|
|
64
|
+
export let props: {
|
|
65
|
+
xAxis?: Partial<ComponentProps<Axis>>;
|
|
66
|
+
yAxis?: Partial<ComponentProps<Axis>>;
|
|
67
|
+
grid?: Partial<ComponentProps<Grid>>;
|
|
68
|
+
rule?: Partial<ComponentProps<Rule>>;
|
|
69
|
+
area?: Partial<ComponentProps<Area>>;
|
|
70
|
+
line?: Partial<ComponentProps<Line>>;
|
|
71
|
+
legend?: Partial<ComponentProps<Legend>>;
|
|
72
|
+
points?: Partial<ComponentProps<Points>>;
|
|
73
|
+
highlight?: Partial<ComponentProps<Highlight>>;
|
|
74
|
+
labels?: Partial<ComponentProps<Labels>>;
|
|
75
|
+
} = {};
|
|
76
|
+
|
|
77
|
+
$: allSeriesData = series
|
|
37
78
|
.flatMap((s) => s.data?.map((d) => ({ seriesKey: s.key, ...d })))
|
|
38
|
-
.filter((d) => d)
|
|
39
|
-
|
|
40
|
-
$:
|
|
79
|
+
.filter((d) => d) as Array<TData & { stackData?: any }>;
|
|
80
|
+
|
|
81
|
+
$: chartData = (allSeriesData.length ? allSeriesData : chartDataArray(data)) as Array<
|
|
82
|
+
TData & { stackData?: any }
|
|
83
|
+
>;
|
|
84
|
+
|
|
85
|
+
$: if (stackSeries) {
|
|
41
86
|
const seriesKeys = series.map((s) => s.key);
|
|
42
|
-
const offset =
|
|
87
|
+
const offset =
|
|
88
|
+
seriesLayout === 'stackExpand'
|
|
43
89
|
? stackOffsetExpand
|
|
44
90
|
: seriesLayout === 'stackDiverging'
|
|
45
|
-
|
|
46
|
-
|
|
91
|
+
? stackOffsetDiverging
|
|
92
|
+
: stackOffsetNone;
|
|
47
93
|
const stackData = stack()
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const s = series.find((d) => d.key === key)
|
|
51
|
-
return accessor(s.value ?? s.key)(d);
|
|
52
|
-
|
|
53
|
-
|
|
94
|
+
.keys(seriesKeys)
|
|
95
|
+
.value((d, key) => {
|
|
96
|
+
const s = series.find((d) => d.key === key)!;
|
|
97
|
+
return accessor(s.value ?? s.key)(d as any);
|
|
98
|
+
})
|
|
99
|
+
.offset(offset)(chartDataArray(data)) as any[];
|
|
100
|
+
|
|
54
101
|
chartData = chartData.map((d, i) => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
102
|
+
return {
|
|
103
|
+
...d,
|
|
104
|
+
stackData: stackData.map((sd) => sd[i]),
|
|
105
|
+
};
|
|
59
106
|
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Default xScale based on first data's `x` value
|
|
110
|
+
$: xScale = accessor(x)(chartData[0]) instanceof Date ? scaleTime() : scaleLinear();
|
|
111
|
+
|
|
112
|
+
function getAreaProps(s: (typeof series)[number], i: number) {
|
|
64
113
|
const lineProps = {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
114
|
+
...props.line,
|
|
115
|
+
...(typeof props.area?.line === 'object' ? props.area.line : null),
|
|
116
|
+
...(typeof s.props?.line === 'object' ? s.props.line : null),
|
|
68
117
|
};
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
118
|
+
|
|
119
|
+
const areaProps: ComponentProps<Area> = {
|
|
120
|
+
data: s.data,
|
|
121
|
+
y0: stackSeries ? (d) => d.stackData[i][0] : Array.isArray(s.value) ? s.value[0] : undefined,
|
|
122
|
+
y1: stackSeries
|
|
123
|
+
? (d) => d.stackData[i][1]
|
|
124
|
+
: Array.isArray(s.value)
|
|
125
|
+
? s.value[1]
|
|
126
|
+
: (s.value ?? s.key),
|
|
127
|
+
fill: s.color,
|
|
128
|
+
'fill-opacity': 0.3,
|
|
129
|
+
...props.area,
|
|
130
|
+
...s.props,
|
|
131
|
+
line: {
|
|
132
|
+
class: !('stroke-width' in lineProps) ? 'stroke-2' : '',
|
|
133
|
+
stroke: s.color,
|
|
134
|
+
...lineProps,
|
|
135
|
+
},
|
|
86
136
|
};
|
|
137
|
+
|
|
87
138
|
return areaProps;
|
|
88
|
-
}
|
|
139
|
+
}
|
|
89
140
|
</script>
|
|
90
141
|
|
|
91
142
|
<Chart
|
|
@@ -254,7 +254,7 @@ declare class __sveltets_Render<TData> {
|
|
|
254
254
|
tickValues?: any[] | undefined;
|
|
255
255
|
tickFontSize?: number | undefined;
|
|
256
256
|
tickLength?: number | undefined;
|
|
257
|
-
placement?: ("
|
|
257
|
+
placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
258
258
|
orientation?: ("horizontal" | "vertical") | undefined;
|
|
259
259
|
variant?: ("ramp" | "swatches") | undefined;
|
|
260
260
|
classes?: {
|