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.
Files changed (99) hide show
  1. package/dist/components/Arc.svelte +170 -144
  2. package/dist/components/Area.svelte +96 -67
  3. package/dist/components/Area.svelte.d.ts +1 -0
  4. package/dist/components/Axis.svelte +205 -155
  5. package/dist/components/Bar.svelte +72 -45
  6. package/dist/components/Bars.svelte +45 -34
  7. package/dist/components/Blur.svelte +5 -3
  8. package/dist/components/Bounds.svelte +37 -21
  9. package/dist/components/Brush.svelte +181 -110
  10. package/dist/components/Calendar.svelte +51 -38
  11. package/dist/components/Chart.svelte +295 -74
  12. package/dist/components/Chart.svelte.d.ts +17 -17
  13. package/dist/components/ChartClipPath.svelte +8 -5
  14. package/dist/components/ChartContext.svelte +243 -93
  15. package/dist/components/ChartContext.svelte.d.ts +15 -23
  16. package/dist/components/Circle.svelte +25 -16
  17. package/dist/components/CircleClipPath.svelte +16 -10
  18. package/dist/components/ClipPath.svelte +11 -7
  19. package/dist/components/ColorRamp.svelte +12 -10
  20. package/dist/components/ForceSimulation.svelte +185 -116
  21. package/dist/components/Frame.svelte +10 -6
  22. package/dist/components/GeoCircle.svelte +15 -9
  23. package/dist/components/GeoContext.svelte +109 -62
  24. package/dist/components/GeoEdgeFade.svelte +20 -14
  25. package/dist/components/GeoPath.svelte +107 -69
  26. package/dist/components/GeoPoint.svelte +32 -18
  27. package/dist/components/GeoSpline.svelte +30 -22
  28. package/dist/components/GeoTile.svelte +40 -30
  29. package/dist/components/GeoVisible.svelte +10 -7
  30. package/dist/components/Graticule.svelte +14 -8
  31. package/dist/components/Grid.svelte +75 -48
  32. package/dist/components/Group.svelte +43 -31
  33. package/dist/components/Highlight.svelte +284 -243
  34. package/dist/components/HitCanvas.svelte +75 -42
  35. package/dist/components/Hull.svelte +40 -20
  36. package/dist/components/Labels.svelte +81 -70
  37. package/dist/components/Legend.svelte +105 -74
  38. package/dist/components/Legend.svelte.d.ts +1 -1
  39. package/dist/components/Line.svelte +29 -19
  40. package/dist/components/LinearGradient.svelte +21 -15
  41. package/dist/components/Link.svelte +44 -22
  42. package/dist/components/MonthPath.svelte +23 -16
  43. package/dist/components/MotionPath.svelte +34 -25
  44. package/dist/components/Pack.svelte +21 -14
  45. package/dist/components/Partition.svelte +35 -20
  46. package/dist/components/Pattern.svelte +8 -6
  47. package/dist/components/Pie.svelte +76 -57
  48. package/dist/components/Point.svelte +11 -7
  49. package/dist/components/Points.svelte +178 -143
  50. package/dist/components/RadialGradient.svelte +25 -18
  51. package/dist/components/Rect.svelte +33 -19
  52. package/dist/components/RectClipPath.svelte +16 -11
  53. package/dist/components/Rule.svelte +50 -42
  54. package/dist/components/Sankey.svelte +55 -30
  55. package/dist/components/Spline.svelte +118 -96
  56. package/dist/components/Text.svelte +137 -104
  57. package/dist/components/Threshold.svelte +18 -7
  58. package/dist/components/TileImage.svelte +56 -50
  59. package/dist/components/TransformContext.svelte +235 -135
  60. package/dist/components/TransformControls.svelte +57 -29
  61. package/dist/components/TransformControls.svelte.d.ts +1 -1
  62. package/dist/components/Tree.svelte +33 -23
  63. package/dist/components/Treemap.svelte +69 -41
  64. package/dist/components/Voronoi.svelte +55 -28
  65. package/dist/components/charts/AreaChart.svelte +128 -77
  66. package/dist/components/charts/AreaChart.svelte.d.ts +1 -1
  67. package/dist/components/charts/BarChart.svelte +169 -104
  68. package/dist/components/charts/BarChart.svelte.d.ts +1 -1
  69. package/dist/components/charts/LineChart.svelte +87 -43
  70. package/dist/components/charts/LineChart.svelte.d.ts +1 -1
  71. package/dist/components/charts/PieChart.svelte +102 -52
  72. package/dist/components/charts/PieChart.svelte.d.ts +1 -1
  73. package/dist/components/charts/ScatterChart.svelte +73 -38
  74. package/dist/components/charts/ScatterChart.svelte.d.ts +1 -1
  75. package/dist/components/layout/Canvas.svelte +63 -43
  76. package/dist/components/layout/Html.svelte +28 -18
  77. package/dist/components/layout/Svg.svelte +47 -32
  78. package/dist/components/tooltip/Tooltip.svelte +137 -91
  79. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  80. package/dist/components/tooltip/TooltipContext.svelte +315 -249
  81. package/dist/components/tooltip/TooltipHeader.svelte +9 -3
  82. package/dist/components/tooltip/TooltipItem.svelte +17 -9
  83. package/dist/components/tooltip/TooltipList.svelte +2 -1
  84. package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
  85. package/dist/docs/Blockquote.svelte +4 -3
  86. package/dist/docs/Code.svelte +15 -8
  87. package/dist/docs/CurveMenuField.svelte +17 -12
  88. package/dist/docs/GeoDebug.svelte +13 -9
  89. package/dist/docs/Header1.svelte +2 -1
  90. package/dist/docs/Json.svelte +6 -4
  91. package/dist/docs/Layout.svelte +6 -6
  92. package/dist/docs/PathDataMenuField.svelte +52 -44
  93. package/dist/docs/Preview.svelte +39 -33
  94. package/dist/docs/TilesetField.svelte +80 -62
  95. package/dist/docs/TransformDebug.svelte +8 -5
  96. package/dist/docs/ViewSourceButton.svelte +13 -9
  97. package/dist/stores/motionStore.d.ts +1 -1
  98. package/dist/utils/scales.d.ts +3 -3
  99. 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?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
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>import { tree as d3Tree } from 'd3-hierarchy';
2
- import { chartContext } from './ChartContext.svelte';
3
- const { data, width, height } = chartContext();
4
- /**
5
- * Sets this tree layout’s node size to the specified two-element array of numbers `[width, height]`.
6
- * If unset, layout size is used instead. When a node size is specified, the root node is always
7
- * positioned at `⟨0, 0⟩`.
8
- *
9
- * see: https://github.com/d3/d3-hierarchy#tree_nodeSize
10
- */
11
- export let nodeSize = undefined;
12
- /**
13
- * see: https://github.com/d3/d3-hierarchy#tree_separation
14
- */
15
- export let separation = undefined;
16
- export let orientation = 'horizontal';
17
- let tree;
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
- tree.nodeSize(nodeSize);
30
+ tree.nodeSize(nodeSize);
22
31
  }
23
32
  if (separation) {
24
- tree.separation(separation);
33
+ tree.separation(separation);
25
34
  }
26
- }
27
- // @ts-expect-error
28
- $: treeData = tree($data);
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>import { treemap as d3treemap, treemapBinary, treemapDice, treemapResquarify, treemapSlice, treemapSliceDice, treemapSquarify, } from 'd3-hierarchy';
2
- import { chartContext } from './ChartContext.svelte';
3
- import { aspectTile } from '../utils/treemap.js';
4
- const { data, width, height } = chartContext();
5
- export let tile = treemapSquarify;
6
- export let padding = 0;
7
- export let paddingInner = 0;
8
- export let paddingOuter = 0;
9
- export let paddingTop = 0;
10
- export let paddingBottom = 0;
11
- export let paddingLeft = undefined;
12
- export let paddingRight = undefined;
13
- export let selected = null;
14
- $: tileFunc =
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
- ? treemapSquarify
17
- : tile === 'resquarify'
18
- ? treemapResquarify
19
- : tile === 'binary'
20
- ? treemapBinary
21
- : tile === 'dice'
22
- ? treemapDice
23
- : tile === 'slice'
24
- ? treemapSlice
25
- : tile === 'sliceDice'
26
- ? treemapSliceDice
27
- : tile;
28
- let treemap;
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
- .size([$width, $height])
32
- .tile(aspectTile(tileFunc, $width, $height));
56
+ .size([$width, $height])
57
+ .tile(aspectTile(tileFunc, $width, $height));
58
+
33
59
  if (padding) {
34
- treemap.padding(padding);
60
+ treemap.padding(padding);
35
61
  }
36
62
  if (paddingInner) {
37
- treemap.paddingInner(paddingInner);
63
+ treemap.paddingInner(paddingInner);
38
64
  }
39
65
  if (paddingOuter) {
40
- treemap.paddingOuter(paddingOuter);
66
+ treemap.paddingOuter(paddingOuter);
41
67
  }
42
68
  if (paddingTop) {
43
- treemap.paddingTop(paddingTop);
69
+ treemap.paddingTop(paddingTop);
44
70
  }
45
71
  if (paddingBottom) {
46
- treemap.paddingBottom(paddingBottom);
72
+ treemap.paddingBottom(paddingBottom);
47
73
  }
48
74
  if (paddingLeft) {
49
- treemap.paddingLeft(paddingLeft);
75
+ treemap.paddingLeft(paddingLeft);
50
76
  }
51
77
  if (paddingRight) {
52
- treemap.paddingRight(paddingRight);
78
+ treemap.paddingRight(paddingRight);
53
79
  }
54
- }
55
- $: treemapData = treemap($data);
56
- // TODO: Remove selected
57
- $: selected = treemapData; // set initial selection
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>import { createEventDispatcher } from 'svelte';
2
- import { min } from 'd3-array';
3
- import { Delaunay } from 'd3-delaunay';
4
- // @ts-expect-error
5
- import { geoVoronoi } from 'd3-geo-voronoi';
6
- import { pointRadial } from 'd3-shape';
7
- import { cls } from '@layerstack/tailwind';
8
- import { chartContext } from './ChartContext.svelte';
9
- import GeoPath from './GeoPath.svelte';
10
- import { geoContext } from './GeoContext.svelte';
11
- const { flatData, xGet, yGet, x: xContext, y: yContext, width, height, radial } = chartContext();
12
- const geo = geoContext();
13
- /** Override data instead of using context */
14
- export let data = undefined;
15
- export let classes = {};
16
- const dispatch = createEventDispatcher();
17
- $: points = (data ?? $flatData).map((d) => {
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
- let point;
49
+
50
+ let point: [number, number];
24
51
  if ($radial) {
25
- const radialPoint = pointRadial(x, y);
26
- // Assume radial is also centered
27
- point = [radialPoint[0] + $width / 2, radialPoint[1] + $height / 2];
28
- }
29
- else {
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
- // Width and/or height can sometimes be negative (when loading data remotely and updately)
37
- $: boundWidth = Math.max($width, 0);
38
- $: boundHeight = Math.max($height, 0);
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">import {} from 'svelte';
2
- import { scaleLinear, scaleOrdinal, scaleTime } from 'd3-scale';
3
- import { stack, stackOffsetDiverging, stackOffsetExpand, stackOffsetNone } from 'd3-shape';
4
- import { sum } from 'd3-array';
5
- import { format } from '@layerstack/utils';
6
- import Area from '../Area.svelte';
7
- import Axis from '../Axis.svelte';
8
- import Chart from '../Chart.svelte';
9
- import Grid from '../Grid.svelte';
10
- import Highlight from '../Highlight.svelte';
11
- import Labels from '../Labels.svelte';
12
- import Legend from '../Legend.svelte';
13
- import Line from '../Line.svelte';
14
- import Points from '../Points.svelte';
15
- import Rule from '../Rule.svelte';
16
- import Svg from '../layout/Svg.svelte';
17
- import * as Tooltip from '../tooltip/index.js';
18
- import { accessor, chartDataArray } from '../../utils/common.js';
19
- export let data = [];
20
- export let x = undefined;
21
- export let y = undefined;
22
- /** 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 */
23
- export let radial = false;
24
- export let series = [{ key: 'default', value: y, color: 'hsl(var(--color-primary))' }];
25
- $: isDefaultSeries = series.length === 1 && series[0].key === 'default';
26
- /** Determine how to layout series. Overlap (default) or stack */
27
- export let seriesLayout = 'overlap';
28
- $: stackSeries = seriesLayout.startsWith('stack');
29
- export let axis = true;
30
- export let grid = true;
31
- export let rule = true;
32
- export let labels = false;
33
- export let legend = false;
34
- export let points = false;
35
- export let props = {};
36
- $: allSeriesData = series
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
- $: chartData = (allSeriesData.length ? allSeriesData : chartDataArray(data));
40
- $: if (stackSeries) {
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 = seriesLayout === 'stackExpand'
87
+ const offset =
88
+ seriesLayout === 'stackExpand'
43
89
  ? stackOffsetExpand
44
90
  : seriesLayout === 'stackDiverging'
45
- ? stackOffsetDiverging
46
- : stackOffsetNone;
91
+ ? stackOffsetDiverging
92
+ : stackOffsetNone;
47
93
  const stackData = stack()
48
- .keys(seriesKeys)
49
- .value((d, key) => {
50
- const s = series.find((d) => d.key === key);
51
- return accessor(s.value ?? s.key)(d);
52
- })
53
- .offset(offset)(chartDataArray(data));
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
- return {
56
- ...d,
57
- stackData: stackData.map((sd) => sd[i]),
58
- };
102
+ return {
103
+ ...d,
104
+ stackData: stackData.map((sd) => sd[i]),
105
+ };
59
106
  });
60
- }
61
- // Default xScale based on first data's `x` value
62
- $: xScale = accessor(x)(chartData[0]) instanceof Date ? scaleTime() : scaleLinear();
63
- function getAreaProps(s, i) {
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
- ...props.line,
66
- ...(typeof props.area?.line === 'object' ? props.area.line : null),
67
- ...(typeof s.props?.line === 'object' ? s.props.line : null),
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
- const areaProps = {
70
- data: s.data,
71
- y0: stackSeries ? (d) => d.stackData[i][0] : Array.isArray(s.value) ? s.value[0] : undefined,
72
- y1: stackSeries
73
- ? (d) => d.stackData[i][1]
74
- : Array.isArray(s.value)
75
- ? s.value[1]
76
- : (s.value ?? s.key),
77
- fill: s.color,
78
- 'fill-opacity': 0.3,
79
- ...props.area,
80
- ...s.props,
81
- line: {
82
- class: !('stroke-width' in lineProps) ? 'stroke-2' : '',
83
- stroke: s.color,
84
- ...lineProps,
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?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
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?: {