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,52 +1,102 @@
|
|
|
1
|
-
<script generics="TData">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export let
|
|
45
|
-
$:
|
|
1
|
+
<script lang="ts" generics="TData">
|
|
2
|
+
import { type ComponentProps } from 'svelte';
|
|
3
|
+
import { sum } from 'd3-array';
|
|
4
|
+
import { format } from '@layerstack/utils';
|
|
5
|
+
|
|
6
|
+
import Arc from '../Arc.svelte';
|
|
7
|
+
import Chart from '../Chart.svelte';
|
|
8
|
+
import Group from '../Group.svelte';
|
|
9
|
+
import Legend from '../Legend.svelte';
|
|
10
|
+
import Pie from '../Pie.svelte';
|
|
11
|
+
import Svg from '../layout/Svg.svelte';
|
|
12
|
+
import * as Tooltip from '../tooltip/index.js';
|
|
13
|
+
|
|
14
|
+
import { accessor, chartDataArray, type Accessor } from '../../utils/common.js';
|
|
15
|
+
|
|
16
|
+
type ChartProps = ComponentProps<Chart<TData>>;
|
|
17
|
+
|
|
18
|
+
interface $$Props extends ChartProps {
|
|
19
|
+
cornerRadius?: typeof cornerRadius;
|
|
20
|
+
innerRadius?: typeof innerRadius;
|
|
21
|
+
key?: typeof key;
|
|
22
|
+
label?: typeof label;
|
|
23
|
+
legend?: typeof legend;
|
|
24
|
+
maxValue?: typeof maxValue;
|
|
25
|
+
outerRadius?: typeof outerRadius;
|
|
26
|
+
padAngle?: typeof padAngle;
|
|
27
|
+
props?: typeof props;
|
|
28
|
+
range?: typeof range;
|
|
29
|
+
series?: typeof series;
|
|
30
|
+
value?: typeof label;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export let data: ChartProps['data'] = [];
|
|
34
|
+
|
|
35
|
+
/** Key accessor */
|
|
36
|
+
export let key: Accessor<TData> = 'key';
|
|
37
|
+
$: keyAccessor = accessor(key);
|
|
38
|
+
|
|
39
|
+
/** Label accessor */
|
|
40
|
+
export let label: Accessor<TData> = 'label';
|
|
41
|
+
$: labelAccessor = accessor(label);
|
|
42
|
+
|
|
43
|
+
/** Value accessor */
|
|
44
|
+
export let value: Accessor<TData> = 'value';
|
|
45
|
+
$: valueAccessor = accessor(value);
|
|
46
|
+
|
|
47
|
+
/** Maximum possible value, useful when `data` is single item */
|
|
48
|
+
export let maxValue: number | undefined = undefined;
|
|
49
|
+
|
|
50
|
+
export let series: {
|
|
51
|
+
key: string | number;
|
|
52
|
+
label?: string;
|
|
53
|
+
value?: Accessor<TData>;
|
|
54
|
+
/** Provider series data, else uses chart data (with value/key accessor) */
|
|
55
|
+
data?: TData[];
|
|
56
|
+
/** Maximum possible value, useful when `data` is single item */
|
|
57
|
+
maxValue?: number;
|
|
58
|
+
color?: string;
|
|
59
|
+
props?: Partial<ComponentProps<Arc>>;
|
|
60
|
+
}[] = [{ key: 'default', value: value /*, color: 'hsl(var(--color-primary))'*/ }];
|
|
61
|
+
|
|
62
|
+
export let legend: ComponentProps<Legend> | boolean = false;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Range [min,max] in degrees. See also startAngle/endAngle
|
|
66
|
+
*/
|
|
67
|
+
export let range = [0, 360];
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Define innerRadius.
|
|
71
|
+
* value >= 1: discrete value
|
|
72
|
+
* value > 0: percent of `outerRadius`
|
|
73
|
+
* value < 0: offset of `outerRadius`
|
|
74
|
+
* default: yRange min
|
|
75
|
+
*/
|
|
76
|
+
export let innerRadius: number | undefined = undefined;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Define outerRadius. Defaults to yRange max/2 (ie. chart height / 2)
|
|
80
|
+
*/
|
|
81
|
+
export let outerRadius: number | undefined = undefined;
|
|
82
|
+
|
|
83
|
+
export let cornerRadius = 0;
|
|
84
|
+
export let padAngle = 0;
|
|
85
|
+
|
|
86
|
+
export let props: {
|
|
87
|
+
pie?: Partial<ComponentProps<Pie>>;
|
|
88
|
+
group?: Partial<ComponentProps<Group>>;
|
|
89
|
+
arc?: Partial<ComponentProps<Arc>>;
|
|
90
|
+
legend?: Partial<ComponentProps<Legend>>;
|
|
91
|
+
} = {};
|
|
92
|
+
|
|
93
|
+
$: allSeriesData = series
|
|
46
94
|
.flatMap((s) => s.data?.map((d) => ({ seriesKey: s.key, ...d })))
|
|
47
|
-
.filter((d) => d)
|
|
48
|
-
|
|
49
|
-
$:
|
|
95
|
+
.filter((d) => d) as Array<TData>;
|
|
96
|
+
|
|
97
|
+
$: chartData = (allSeriesData.length ? allSeriesData : chartDataArray(data)) as Array<TData>;
|
|
98
|
+
|
|
99
|
+
$: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
50
100
|
</script>
|
|
51
101
|
|
|
52
102
|
<Chart
|
|
@@ -94,7 +144,7 @@ $: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
|
94
144
|
}}
|
|
95
145
|
<slot {...slotProps}>
|
|
96
146
|
<Svg center>
|
|
97
|
-
<slot name="
|
|
147
|
+
<slot name="belowMarks" {...slotProps} />
|
|
98
148
|
|
|
99
149
|
<slot name="marks" {...slotProps}>
|
|
100
150
|
<Group {...props.group}>
|
|
@@ -110,8 +160,8 @@ $: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
|
110
160
|
outerRadius={(outerRadius ?? 0) < 0 ? i * (outerRadius ?? 0) : outerRadius}
|
|
111
161
|
{cornerRadius}
|
|
112
162
|
{padAngle}
|
|
113
|
-
fill={s.color ?? cScale(c(d))}
|
|
114
|
-
track={{ fill: s.color ?? cScale(c(d)), 'fill-opacity': 0.1 }}
|
|
163
|
+
fill={s.color ?? cScale?.(c(d))}
|
|
164
|
+
track={{ fill: s.color ?? cScale?.(c(d)), 'fill-opacity': 0.1 }}
|
|
115
165
|
{tooltip}
|
|
116
166
|
data={d}
|
|
117
167
|
{...props.arc}
|
|
@@ -136,7 +186,7 @@ $: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
|
136
186
|
{innerRadius}
|
|
137
187
|
{cornerRadius}
|
|
138
188
|
{padAngle}
|
|
139
|
-
fill={cScale(c(arc.data))}
|
|
189
|
+
fill={cScale?.(c(arc.data))}
|
|
140
190
|
data={arc.data}
|
|
141
191
|
{tooltip}
|
|
142
192
|
{...props.arc}
|
|
@@ -149,7 +199,7 @@ $: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
|
149
199
|
</Group>
|
|
150
200
|
</slot>
|
|
151
201
|
|
|
152
|
-
<slot name="
|
|
202
|
+
<slot name="aboveMarks" {...slotProps} />
|
|
153
203
|
</Svg>
|
|
154
204
|
|
|
155
205
|
<slot name="legend" {...slotProps}>
|
|
@@ -173,7 +223,7 @@ $: seriesColors = series.map((s) => s.color).filter((d) => d != null);
|
|
|
173
223
|
<Tooltip.Item
|
|
174
224
|
label={labelAccessor(data) || keyAccessor(data)}
|
|
175
225
|
value={valueAccessor(data)}
|
|
176
|
-
color={cScale(c(data))}
|
|
226
|
+
color={cScale?.(c(data))}
|
|
177
227
|
{format}
|
|
178
228
|
/>
|
|
179
229
|
</Tooltip.List>
|
|
@@ -207,7 +207,7 @@ declare class __sveltets_Render<TData> {
|
|
|
207
207
|
tickValues?: any[] | undefined;
|
|
208
208
|
tickFontSize?: number | undefined;
|
|
209
209
|
tickLength?: number | undefined;
|
|
210
|
-
placement?: ("
|
|
210
|
+
placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
211
211
|
orientation?: ("horizontal" | "vertical") | undefined;
|
|
212
212
|
variant?: ("ramp" | "swatches") | undefined;
|
|
213
213
|
classes?: {
|
|
@@ -247,9 +247,9 @@ declare class __sveltets_Render<TData> {
|
|
|
247
247
|
};
|
|
248
248
|
slots(): {
|
|
249
249
|
default: any;
|
|
250
|
-
|
|
250
|
+
belowMarks: any;
|
|
251
251
|
marks: any;
|
|
252
|
-
|
|
252
|
+
aboveMarks: any;
|
|
253
253
|
legend: any;
|
|
254
254
|
tooltip: any;
|
|
255
255
|
};
|
|
@@ -1,44 +1,79 @@
|
|
|
1
|
-
<script generics="TData">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
let
|
|
1
|
+
<script lang="ts" generics="TData">
|
|
2
|
+
import { type ComponentProps } from 'svelte';
|
|
3
|
+
import { scaleLinear, scaleOrdinal, scaleTime } from 'd3-scale';
|
|
4
|
+
import { format } from '@layerstack/utils';
|
|
5
|
+
|
|
6
|
+
import Axis from '../Axis.svelte';
|
|
7
|
+
import Chart from '../Chart.svelte';
|
|
8
|
+
import Grid from '../Grid.svelte';
|
|
9
|
+
import Highlight from '../Highlight.svelte';
|
|
10
|
+
import Labels from '../Labels.svelte';
|
|
11
|
+
import Legend from '../Legend.svelte';
|
|
12
|
+
import Points from '../Points.svelte';
|
|
13
|
+
import Rule from '../Rule.svelte';
|
|
14
|
+
import Svg from '../layout/Svg.svelte';
|
|
15
|
+
import * as Tooltip from '../tooltip/index.js';
|
|
16
|
+
|
|
17
|
+
import { accessor, chartDataArray, type Accessor } from '../../utils/common.js';
|
|
18
|
+
|
|
19
|
+
interface $$Props extends ComponentProps<Chart<TData>> {
|
|
20
|
+
axis?: typeof axis;
|
|
21
|
+
grid?: typeof grid;
|
|
22
|
+
labels?: typeof labels;
|
|
23
|
+
legend?: typeof legend;
|
|
24
|
+
props?: typeof props;
|
|
25
|
+
series?: typeof series;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export let data: $$Props['data'] = [];
|
|
29
|
+
export let x: Accessor<TData> = undefined;
|
|
30
|
+
export let y: Accessor<TData> = undefined;
|
|
31
|
+
|
|
32
|
+
export let series: {
|
|
33
|
+
key: string;
|
|
34
|
+
label?: string;
|
|
35
|
+
data: TData[];
|
|
36
|
+
color?: string;
|
|
37
|
+
props?: Partial<ComponentProps<Points>>;
|
|
38
|
+
}[] = [{ key: 'default', data: chartDataArray(data), color: 'hsl(var(--color-primary))' }];
|
|
39
|
+
$: isDefaultSeries = series.length === 1 && series[0].key === 'default';
|
|
40
|
+
|
|
41
|
+
export let axis: ComponentProps<Axis> | 'x' | 'y' | boolean = true;
|
|
42
|
+
export let grid: ComponentProps<Grid> | boolean = true;
|
|
43
|
+
export let labels: ComponentProps<Labels> | boolean = false;
|
|
44
|
+
export let legend: ComponentProps<Legend> | boolean = false;
|
|
45
|
+
export let rule: ComponentProps<Rule> | boolean = true;
|
|
46
|
+
|
|
47
|
+
export let props: {
|
|
48
|
+
xAxis?: Partial<ComponentProps<Axis>>;
|
|
49
|
+
yAxis?: Partial<ComponentProps<Axis>>;
|
|
50
|
+
grid?: Partial<ComponentProps<Grid>>;
|
|
51
|
+
points?: Partial<ComponentProps<Points>>;
|
|
52
|
+
highlight?: Partial<ComponentProps<Highlight>>;
|
|
53
|
+
labels?: Partial<ComponentProps<Labels>>;
|
|
54
|
+
legend?: Partial<ComponentProps<Legend>>;
|
|
55
|
+
rule?: Partial<ComponentProps<Rule>>;
|
|
56
|
+
} = {};
|
|
57
|
+
|
|
58
|
+
// Default xScale based on first data's `x` value
|
|
59
|
+
$: xScale = accessor(x)(chartDataArray(data)[0]) instanceof Date ? scaleTime() : scaleLinear();
|
|
60
|
+
|
|
61
|
+
let chartData = series
|
|
29
62
|
.flatMap((s) => s.data?.map((d) => ({ seriesKey: s.key, ...d })))
|
|
30
|
-
.filter((d) => d)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
63
|
+
.filter((d) => d) as Array<TData>;
|
|
64
|
+
|
|
65
|
+
function getPointsProps(s: (typeof series)[number], i: number) {
|
|
66
|
+
const pointsProps: ComponentProps<Points> = {
|
|
67
|
+
data: s.data,
|
|
68
|
+
stroke: s.color,
|
|
69
|
+
fill: s.color,
|
|
70
|
+
'fill-opacity': 0.3,
|
|
71
|
+
...props.points,
|
|
72
|
+
...s.props,
|
|
39
73
|
};
|
|
74
|
+
|
|
40
75
|
return pointsProps;
|
|
41
|
-
}
|
|
76
|
+
}
|
|
42
77
|
</script>
|
|
43
78
|
|
|
44
79
|
<Chart
|
|
@@ -81,6 +116,16 @@ function getPointsProps(s, i) {
|
|
|
81
116
|
{/if}
|
|
82
117
|
</slot>
|
|
83
118
|
|
|
119
|
+
<slot name="belowMarks" {...slotProps} />
|
|
120
|
+
|
|
121
|
+
<slot name="marks" {...slotProps}>
|
|
122
|
+
{#each series as s, i}
|
|
123
|
+
<Points {...getPointsProps(s, i)} />
|
|
124
|
+
{/each}
|
|
125
|
+
</slot>
|
|
126
|
+
|
|
127
|
+
<slot name="aboveMarks" {...slotProps} />
|
|
128
|
+
|
|
84
129
|
<slot name="axis" {...slotProps}>
|
|
85
130
|
{#if axis}
|
|
86
131
|
{#if axis !== 'x'}
|
|
@@ -107,16 +152,6 @@ function getPointsProps(s, i) {
|
|
|
107
152
|
{/if}
|
|
108
153
|
</slot>
|
|
109
154
|
|
|
110
|
-
<slot name="below-marks" {...slotProps} />
|
|
111
|
-
|
|
112
|
-
<slot name="marks" {...slotProps}>
|
|
113
|
-
{#each series as s, i}
|
|
114
|
-
<Points {...getPointsProps(s, i)} />
|
|
115
|
-
{/each}
|
|
116
|
-
</slot>
|
|
117
|
-
|
|
118
|
-
<slot name="above-marks" {...slotProps} />
|
|
119
|
-
|
|
120
155
|
<slot name="highlight" {...slotProps}>
|
|
121
156
|
<Highlight points={{ fill: activeSeries?.color }} lines axis="both" {...props.highlight} />
|
|
122
157
|
</slot>
|
|
@@ -252,7 +252,7 @@ declare class __sveltets_Render<TData> {
|
|
|
252
252
|
tickValues?: any[] | undefined;
|
|
253
253
|
tickFontSize?: number | undefined;
|
|
254
254
|
tickLength?: number | undefined;
|
|
255
|
-
placement?: ("
|
|
255
|
+
placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
256
256
|
orientation?: ("horizontal" | "vertical") | undefined;
|
|
257
257
|
variant?: ("ramp" | "swatches") | undefined;
|
|
258
258
|
classes?: {
|
|
@@ -288,10 +288,10 @@ declare class __sveltets_Render<TData> {
|
|
|
288
288
|
slots(): {
|
|
289
289
|
default: any;
|
|
290
290
|
grid: any;
|
|
291
|
-
|
|
292
|
-
'below-marks': any;
|
|
291
|
+
belowMarks: any;
|
|
293
292
|
marks: any;
|
|
294
|
-
|
|
293
|
+
aboveMarks: any;
|
|
294
|
+
axis: any;
|
|
295
295
|
highlight: any;
|
|
296
296
|
legend: any;
|
|
297
297
|
tooltip: any;
|
|
@@ -1,53 +1,73 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
export let
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onMount, setContext } from 'svelte';
|
|
3
|
+
import { writable } from 'svelte/store';
|
|
4
|
+
import { scaleCanvas } from 'layercake';
|
|
5
|
+
import { cls } from '@layerstack/tailwind';
|
|
6
|
+
|
|
7
|
+
import { chartContext } from '../ChartContext.svelte';
|
|
8
|
+
import { transformContext } from '../TransformContext.svelte';
|
|
9
|
+
|
|
10
|
+
const { width, height, containerWidth, containerHeight, padding } = chartContext();
|
|
11
|
+
|
|
12
|
+
/** The `<canvas>` tag. Useful for bindings. */
|
|
13
|
+
export let element: HTMLCanvasElement | undefined = undefined;
|
|
14
|
+
|
|
15
|
+
/** The `<canvas>`'s 2d context. Useful for bindings. */
|
|
16
|
+
// @ts-expect-error: set during onMount()
|
|
17
|
+
export let context: CanvasRenderingContext2D = undefined;
|
|
18
|
+
|
|
19
|
+
/** Force the use of a software (instead of hardware accelerated) 2D canvas and can save memory when calling getImageData() frequently.
|
|
20
|
+
* see: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext#willreadfrequently */
|
|
21
|
+
export let willReadFrequently = false;
|
|
22
|
+
|
|
23
|
+
/** The layer's z-index. */
|
|
24
|
+
export let zIndex = undefined;
|
|
25
|
+
|
|
26
|
+
/** Set this to `false` to set `pointer-events: none;` on the entire layer. */
|
|
27
|
+
export let pointerEvents: boolean | undefined = undefined;
|
|
28
|
+
|
|
29
|
+
/** Text to display if the browser won't render a canvas tag. You can also set arbitrary HTML via the "fallback" slot but this is fine if you just need text. If you use the "fallback" slot, this prop is ignored. */
|
|
30
|
+
export let fallback = '';
|
|
31
|
+
|
|
32
|
+
/** A string passed to the `aria-label` on the `<canvas>` tag. */
|
|
33
|
+
export let label: string | undefined = undefined;
|
|
34
|
+
|
|
35
|
+
/** A string passed to the `aria-labelledby` on the `<canvas>` tag. */
|
|
36
|
+
export let labelledBy: string | undefined = undefined;
|
|
37
|
+
|
|
38
|
+
/** A string passed to `aria-describedby` property on the `<canvas>` tag. */
|
|
39
|
+
export let describedBy: string | undefined = undefined;
|
|
40
|
+
|
|
41
|
+
const ctx = writable({});
|
|
42
|
+
|
|
43
|
+
onMount(() => {
|
|
44
|
+
context = element?.getContext('2d', { willReadFrequently }) as CanvasRenderingContext2D;
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const { mode, scale, translate } = transformContext();
|
|
48
|
+
|
|
49
|
+
$: if (context) {
|
|
34
50
|
scaleCanvas(context, $containerWidth, $containerHeight);
|
|
35
51
|
context.clearRect(0, 0, $containerWidth, $containerHeight);
|
|
52
|
+
|
|
36
53
|
context.translate($padding.left ?? 0, $padding.top ?? 0);
|
|
54
|
+
|
|
37
55
|
if (mode === 'canvas') {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
const center = { x: $width / 2, y: $height / 2 };
|
|
57
|
+
const newTranslate = {
|
|
58
|
+
x: $translate.x * $scale + center.x - center.x * $scale,
|
|
59
|
+
y: $translate.y * $scale + center.y - center.y * $scale,
|
|
60
|
+
};
|
|
61
|
+
context.translate(newTranslate.x, newTranslate.y);
|
|
62
|
+
context.scale($scale, $scale);
|
|
45
63
|
}
|
|
64
|
+
|
|
46
65
|
// Force children to re-draw
|
|
47
66
|
$ctx = context;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
$: ctx.set(context);
|
|
70
|
+
setContext('canvas', { ctx });
|
|
51
71
|
</script>
|
|
52
72
|
|
|
53
73
|
<canvas
|
|
@@ -1,21 +1,31 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/** The layer's
|
|
6
|
-
export let
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
export let
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cls } from '@layerstack/tailwind';
|
|
3
|
+
import { chartContext } from '../ChartContext.svelte';
|
|
4
|
+
|
|
5
|
+
/** The layer's outermost `<div>` tag. Useful for bindings. */
|
|
6
|
+
export let element: HTMLDivElement | undefined = undefined;
|
|
7
|
+
|
|
8
|
+
/** The layer's z-index. */
|
|
9
|
+
export let zIndex = undefined;
|
|
10
|
+
|
|
11
|
+
/** Set this to `false` to set `pointer-events: none;` on the entire layer. */
|
|
12
|
+
export let pointerEvents: boolean | undefined = undefined;
|
|
13
|
+
|
|
14
|
+
/** A string passed to the `aria-role` on the `<div>` tag. This is `undefined` by default but will be set by default to `'figure'` if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in. */
|
|
15
|
+
export let role: string | undefined = undefined;
|
|
16
|
+
|
|
17
|
+
/** A string passed to the `aria-label` property on the `<div>` tag. */
|
|
18
|
+
export let label: string | undefined = undefined;
|
|
19
|
+
|
|
20
|
+
/** A string passed to the `aria-labelledby property` on the `<div>` tag. */
|
|
21
|
+
export let labelledBy: string | undefined = undefined;
|
|
22
|
+
|
|
23
|
+
/** A string passed to the `aria-describedby` property on the `<div>` tag. */
|
|
24
|
+
export let describedBy: string | undefined = undefined;
|
|
25
|
+
|
|
26
|
+
const { padding } = chartContext();
|
|
27
|
+
|
|
28
|
+
$: roleVal = role || (label || labelledBy || describedBy ? 'figure' : undefined);
|
|
19
29
|
</script>
|
|
20
30
|
|
|
21
31
|
<div
|