layerchart 0.54.0 → 0.55.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 +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 +269 -112
- package/dist/components/Brush.svelte.d.ts +7 -0
- 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 +65 -19
- package/dist/components/Line.svelte.d.ts +13 -1
- package/dist/components/LinearGradient.svelte +21 -15
- package/dist/components/Link.svelte +94 -22
- package/dist/components/Link.svelte.d.ts +17 -1
- package/dist/components/Marker.svelte +81 -0
- package/dist/components/Marker.svelte.d.ts +28 -0
- 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 +167 -96
- package/dist/components/Spline.svelte.d.ts +15 -0
- 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 +138 -87
- package/dist/components/charts/AreaChart.svelte.d.ts +4 -4
- package/dist/components/charts/BarChart.svelte +179 -114
- package/dist/components/charts/BarChart.svelte.d.ts +4 -4
- package/dist/components/charts/LineChart.svelte +97 -53
- package/dist/components/charts/LineChart.svelte.d.ts +4 -4
- package/dist/components/charts/PieChart.svelte +104 -54
- package/dist/components/charts/PieChart.svelte.d.ts +3 -3
- package/dist/components/charts/ScatterChart.svelte +83 -48
- package/dist/components/charts/ScatterChart.svelte.d.ts +4 -4
- 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
|
@@ -1,41 +1,56 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
export let
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
export let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cls } from '@layerstack/tailwind';
|
|
3
|
+
|
|
4
|
+
import { chartContext } from '../ChartContext.svelte';
|
|
5
|
+
import { transformContext } from '../TransformContext.svelte';
|
|
6
|
+
|
|
7
|
+
/** The layer's `<svg>` tag. Useful for bindings. */
|
|
8
|
+
export let element: SVGElement | undefined = undefined;
|
|
9
|
+
|
|
10
|
+
/** The layer's `<g>` tag. Useful for bindings. */
|
|
11
|
+
export let innerElement: SVGGElement | undefined = undefined;
|
|
12
|
+
|
|
13
|
+
/** The layer's z-index. */
|
|
14
|
+
export let zIndex = undefined;
|
|
15
|
+
|
|
16
|
+
/** Set this to `false` to set `pointer-events: none;` on the entire layer. */
|
|
17
|
+
export let pointerEvents: boolean | undefined = undefined;
|
|
18
|
+
|
|
19
|
+
/** A string passed to the `viewBox` property on the `<svg>` tag. */
|
|
20
|
+
export let viewBox: string | undefined = undefined;
|
|
21
|
+
|
|
22
|
+
/** A string passed to the `aria-label` property on the `<svg>` tag. */
|
|
23
|
+
export let label: string | undefined = undefined;
|
|
24
|
+
|
|
25
|
+
/** A string passed to the `aria-labelledby property` on the `<svg>` tag. */
|
|
26
|
+
export let labelledBy: string | undefined = undefined;
|
|
27
|
+
|
|
28
|
+
/** A string passed to the `aria-describedby` property on the `<svg>` tag. */
|
|
29
|
+
export let describedBy: string | undefined = undefined;
|
|
30
|
+
|
|
31
|
+
/** Shorthand to set the contents of `<title></title>` for accessibility. You can also set arbitrary HTML via the "title" slot but this is a convenient shorthand. If you use the "title" slot, this prop is ignored. */
|
|
32
|
+
export let title: string | undefined = undefined;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Translate children to center, useful for radial layouts
|
|
36
|
+
*/
|
|
37
|
+
export let center: boolean | 'x' | 'y' = false;
|
|
38
|
+
|
|
39
|
+
const { containerWidth, containerHeight, width, height, padding } = chartContext();
|
|
40
|
+
|
|
41
|
+
const { mode, scale, translate } = transformContext();
|
|
42
|
+
|
|
43
|
+
$: transform = center
|
|
29
44
|
? `translate(${center === 'x' || center === true ? $width / 2 : 0}, ${center === 'y' || center === true ? $height / 2 : 0})`
|
|
30
45
|
: '';
|
|
31
|
-
$: if (mode === 'canvas') {
|
|
46
|
+
$: if (mode === 'canvas') {
|
|
32
47
|
const center = { x: $width / 2, y: $height / 2 };
|
|
33
48
|
const newTranslate = {
|
|
34
|
-
|
|
35
|
-
|
|
49
|
+
x: $translate.x * $scale + center.x - center.x * $scale,
|
|
50
|
+
y: $translate.y * $scale + center.y - center.y * $scale,
|
|
36
51
|
};
|
|
37
52
|
transform = `translate(${newTranslate.x},${newTranslate.y}) scale(${$scale})`;
|
|
38
|
-
}
|
|
53
|
+
}
|
|
39
54
|
</script>
|
|
40
55
|
|
|
41
56
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
@@ -1,115 +1,161 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export let
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
export let
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { fade } from 'svelte/transition';
|
|
3
|
+
import { cls } from '@layerstack/tailwind';
|
|
4
|
+
|
|
5
|
+
import { chartContext } from './../ChartContext.svelte';
|
|
6
|
+
import { tooltipContext } from './TooltipContext.svelte';
|
|
7
|
+
import { motionStore } from '../../stores/motionStore.js';
|
|
8
|
+
import { isScaleBand } from '../../utils/scales.js';
|
|
9
|
+
|
|
10
|
+
/** `x` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
|
|
11
|
+
export let x: 'pointer' | 'data' | number | undefined = 'pointer';
|
|
12
|
+
/** `y` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
|
|
13
|
+
export let y: 'pointer' | 'data' | number | undefined = 'pointer';
|
|
14
|
+
|
|
15
|
+
/** Offset added to `x` position */
|
|
16
|
+
export let xOffset = x === 'pointer' ? 10 : 0;
|
|
17
|
+
|
|
18
|
+
/** Offset added to `y` position */
|
|
19
|
+
export let yOffset = y === 'pointer' ? 10 : 0;
|
|
20
|
+
|
|
21
|
+
/** Align based on edge of tooltip */
|
|
22
|
+
type Placement =
|
|
23
|
+
| 'top-left'
|
|
24
|
+
| 'top'
|
|
25
|
+
| 'top-right'
|
|
26
|
+
| 'left'
|
|
27
|
+
| 'center'
|
|
28
|
+
| 'right'
|
|
29
|
+
| 'bottom-left'
|
|
30
|
+
| 'bottom'
|
|
31
|
+
| 'bottom-right';
|
|
32
|
+
export let anchor: Placement = 'top-left';
|
|
33
|
+
|
|
34
|
+
export let contained: 'container' | false = 'container'; // TODO: Support 'window' using getBoundingClientRect()
|
|
35
|
+
export let variant: 'default' | 'invert' | 'none' = 'default';
|
|
36
|
+
|
|
37
|
+
/** Set to `false` to disable spring transitions */
|
|
38
|
+
export let motion = true;
|
|
39
|
+
|
|
40
|
+
export let classes: {
|
|
41
|
+
root?: string;
|
|
42
|
+
container?: string;
|
|
43
|
+
header?: string;
|
|
44
|
+
content?: string;
|
|
45
|
+
} = {};
|
|
46
|
+
|
|
47
|
+
const { padding, xScale, xGet, yScale, yGet, containerWidth, containerHeight } = chartContext();
|
|
48
|
+
const tooltip = tooltipContext();
|
|
49
|
+
|
|
50
|
+
let tooltipWidth = 0;
|
|
51
|
+
let tooltipHeight = 0;
|
|
52
|
+
|
|
53
|
+
const xPos = motionStore($tooltip.x, { spring: motion });
|
|
54
|
+
const yPos = motionStore($tooltip.y, { spring: motion });
|
|
55
|
+
|
|
56
|
+
type Align = 'start' | 'center' | 'end';
|
|
57
|
+
|
|
58
|
+
function alignValue(value: number, align: Align, addlOffset: number, tooltipSize: number) {
|
|
28
59
|
const alignOffset = align === 'center' ? tooltipSize / 2 : align === 'end' ? tooltipSize : 0;
|
|
29
60
|
return value + (align === 'end' ? -addlOffset : addlOffset) - alignOffset;
|
|
30
|
-
}
|
|
31
|
-
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
$: if ($tooltip?.data) {
|
|
32
64
|
const xBandOffset = isScaleBand($xScale)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
65
|
+
? $xScale.step() / 2 - ($xScale.padding() * $xScale.step()) / 2
|
|
66
|
+
: 0;
|
|
67
|
+
|
|
68
|
+
const xValue: number =
|
|
69
|
+
typeof x === 'number'
|
|
36
70
|
? x
|
|
37
71
|
: x === 'data'
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
72
|
+
? $xGet($tooltip.data) + $padding.left + xBandOffset
|
|
73
|
+
: $tooltip.x;
|
|
74
|
+
|
|
75
|
+
let xAlign: Align = 'start';
|
|
41
76
|
switch (anchor) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
77
|
+
case 'top-left':
|
|
78
|
+
case 'left':
|
|
79
|
+
case 'bottom-left':
|
|
80
|
+
xAlign = 'start';
|
|
81
|
+
break;
|
|
82
|
+
|
|
83
|
+
case 'top':
|
|
84
|
+
case 'center':
|
|
85
|
+
case 'bottom':
|
|
86
|
+
xAlign = 'center';
|
|
87
|
+
break;
|
|
88
|
+
|
|
89
|
+
case 'top-right':
|
|
90
|
+
case 'right':
|
|
91
|
+
case 'bottom-right':
|
|
92
|
+
xAlign = 'end';
|
|
93
|
+
break;
|
|
57
94
|
}
|
|
95
|
+
|
|
58
96
|
const yBandOffset = isScaleBand($yScale)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const yValue =
|
|
97
|
+
? $yScale.step() / 2 - ($yScale.padding() * $yScale.step()) / 2
|
|
98
|
+
: 0;
|
|
99
|
+
const yValue: number =
|
|
100
|
+
typeof y === 'number'
|
|
62
101
|
? y
|
|
63
102
|
: y === 'data'
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
103
|
+
? $yGet($tooltip.data) + $padding.top + yBandOffset
|
|
104
|
+
: $tooltip.y;
|
|
105
|
+
|
|
106
|
+
let yAlign: Align = 'start';
|
|
67
107
|
switch (anchor) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
108
|
+
case 'top-left':
|
|
109
|
+
case 'top':
|
|
110
|
+
case 'top-right':
|
|
111
|
+
yAlign = 'start';
|
|
112
|
+
break;
|
|
113
|
+
|
|
114
|
+
case 'left':
|
|
115
|
+
case 'center':
|
|
116
|
+
case 'right':
|
|
117
|
+
yAlign = 'center';
|
|
118
|
+
break;
|
|
119
|
+
|
|
120
|
+
case 'bottom-left':
|
|
121
|
+
case 'bottom':
|
|
122
|
+
case 'bottom-right':
|
|
123
|
+
yAlign = 'end';
|
|
124
|
+
break;
|
|
83
125
|
}
|
|
126
|
+
|
|
84
127
|
const rect = {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
128
|
+
top: alignValue(yValue, yAlign, yOffset, tooltipHeight),
|
|
129
|
+
left: alignValue(xValue, xAlign, xOffset, tooltipWidth),
|
|
130
|
+
// set below
|
|
131
|
+
bottom: 0,
|
|
132
|
+
right: 0,
|
|
90
133
|
};
|
|
91
134
|
rect.bottom = rect.top + tooltipHeight;
|
|
92
135
|
rect.right = rect.left + tooltipWidth;
|
|
136
|
+
|
|
93
137
|
// Check if outside of container and swap align side accordingly
|
|
94
138
|
if (contained === 'container') {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
139
|
+
if ((xAlign === 'start' || xAlign === 'center') && rect.right > $containerWidth) {
|
|
140
|
+
rect.left = alignValue(xValue, 'end', xOffset, tooltipWidth);
|
|
141
|
+
}
|
|
142
|
+
if ((xAlign === 'end' || xAlign === 'center') && rect.left < $padding.left) {
|
|
143
|
+
rect.left = alignValue(xValue, 'start', xOffset, tooltipWidth);
|
|
144
|
+
}
|
|
145
|
+
rect.right = rect.left + tooltipWidth;
|
|
146
|
+
|
|
147
|
+
if ((yAlign === 'start' || yAlign === 'center') && rect.bottom > $containerHeight) {
|
|
148
|
+
rect.top = alignValue(yValue, 'end', yOffset, tooltipHeight);
|
|
149
|
+
}
|
|
150
|
+
if ((yAlign === 'end' || yAlign === 'center') && rect.top < $padding.top) {
|
|
151
|
+
rect.top = alignValue(yValue, 'start', yOffset, tooltipHeight);
|
|
152
|
+
}
|
|
153
|
+
rect.bottom = rect.top + tooltipHeight;
|
|
109
154
|
}
|
|
155
|
+
|
|
110
156
|
$yPos = rect.top;
|
|
111
157
|
$xPos = rect.left;
|
|
112
|
-
}
|
|
158
|
+
}
|
|
113
159
|
</script>
|
|
114
160
|
|
|
115
161
|
{#if $tooltip.data}
|
|
@@ -6,7 +6,7 @@ declare const __propDef: {
|
|
|
6
6
|
y?: "pointer" | "data" | number | undefined;
|
|
7
7
|
xOffset?: number | undefined;
|
|
8
8
|
yOffset?: number | undefined;
|
|
9
|
-
anchor?: ("
|
|
9
|
+
anchor?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
10
10
|
contained?: ("container" | false) | undefined;
|
|
11
11
|
variant?: ("default" | "invert" | "none") | undefined;
|
|
12
12
|
motion?: boolean | undefined;
|