layerchart 0.53.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 +241 -234
- package/dist/components/Axis.svelte.d.ts +2 -1
- package/dist/components/Bar.svelte +72 -45
- package/dist/components/Bars.svelte +46 -34
- package/dist/components/Bars.svelte.d.ts +1 -0
- 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 +296 -73
- package/dist/components/Chart.svelte.d.ts +42 -25
- 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 +178 -0
- package/dist/components/Grid.svelte.d.ts +35 -0
- 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 +84 -63
- package/dist/components/Labels.svelte.d.ts +2 -0
- package/dist/components/Legend.svelte +106 -75
- 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 +66 -42
- package/dist/components/Rule.svelte.d.ts +2 -0
- 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 +238 -136
- 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 +162 -87
- package/dist/components/charts/AreaChart.svelte.d.ts +41 -3
- package/dist/components/charts/BarChart.svelte +207 -108
- package/dist/components/charts/BarChart.svelte.d.ts +41 -3
- package/dist/components/charts/LineChart.svelte +119 -47
- package/dist/components/charts/LineChart.svelte.d.ts +41 -3
- package/dist/components/charts/PieChart.svelte +117 -53
- package/dist/components/charts/PieChart.svelte.d.ts +17 -2
- package/dist/components/charts/ScatterChart.svelte +92 -42
- package/dist/components/charts/ScatterChart.svelte.d.ts +39 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- 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 +143 -82
- package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/components/tooltip/TooltipContext.svelte +315 -248
- package/dist/components/tooltip/TooltipContext.svelte.d.ts +7 -0
- 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 +48 -29
- 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 +4 -4
- package/package.json +29 -30
|
@@ -1,36 +1,64 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Button, Icon, MenuButton, Tooltip } from 'svelte-ux';
|
|
3
|
+
import { cls } from '@layerstack/tailwind';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
mdiArrowULeftTop,
|
|
7
|
+
mdiMagnifyPlusOutline,
|
|
8
|
+
mdiMagnifyMinusOutline,
|
|
9
|
+
mdiImageFilterCenterFocus,
|
|
10
|
+
mdiChevronDown,
|
|
11
|
+
mdiResize,
|
|
12
|
+
mdiArrowExpandAll,
|
|
13
|
+
mdiCancel,
|
|
14
|
+
} from '@mdi/js';
|
|
15
|
+
|
|
16
|
+
import { transformContext } from './TransformContext.svelte';
|
|
17
|
+
|
|
18
|
+
type Placement =
|
|
19
|
+
| 'top-left'
|
|
20
|
+
| 'top'
|
|
21
|
+
| 'top-right'
|
|
22
|
+
| 'left'
|
|
23
|
+
| 'center'
|
|
24
|
+
| 'right'
|
|
25
|
+
| 'bottom-left'
|
|
26
|
+
| 'bottom'
|
|
27
|
+
| 'bottom-right';
|
|
28
|
+
|
|
29
|
+
export let placement: Placement = 'top-right';
|
|
30
|
+
export let orientation: 'horizontal' | 'vertical' = 'vertical';
|
|
31
|
+
|
|
32
|
+
type Actions = 'zoomIn' | 'zoomOut' | 'center' | 'reset' | 'scrollMode';
|
|
33
|
+
export let show: Actions[] = ['zoomIn', 'zoomOut', 'center', 'reset', 'scrollMode'];
|
|
34
|
+
|
|
35
|
+
$: menuPlacementByOrientationAndPlacement = {
|
|
9
36
|
horizontal: {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
37
|
+
'top-left': 'bottom-end',
|
|
38
|
+
top: 'bottom-end',
|
|
39
|
+
'top-right': 'bottom-end',
|
|
40
|
+
left: 'bottom-end',
|
|
41
|
+
center: 'bottom-end',
|
|
42
|
+
right: 'bottom-end',
|
|
43
|
+
'bottom-left': 'top-end',
|
|
44
|
+
bottom: 'top-end',
|
|
45
|
+
'bottom-right': 'top-end',
|
|
19
46
|
},
|
|
20
47
|
vertical: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
'top-left': 'right-start',
|
|
49
|
+
top: 'right-start',
|
|
50
|
+
'top-right': 'left-start',
|
|
51
|
+
left: 'right-start',
|
|
52
|
+
center: 'right-start',
|
|
53
|
+
right: 'left-start',
|
|
54
|
+
'bottom-left': 'right-end',
|
|
55
|
+
bottom: 'right-end',
|
|
56
|
+
'bottom-right': 'left-end',
|
|
30
57
|
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const
|
|
58
|
+
} as const;
|
|
59
|
+
|
|
60
|
+
const transform = transformContext();
|
|
61
|
+
const scrollMode = transform.scrollMode;
|
|
34
62
|
</script>
|
|
35
63
|
|
|
36
64
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
@@ -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)}>
|