layerchart 0.41.6 → 0.43.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 +27 -20
- package/dist/components/Arc.svelte.d.ts +2 -2
- package/dist/components/Area.svelte +11 -7
- package/dist/components/Area.svelte.d.ts +3 -3
- package/dist/components/AreaStack.svelte +3 -2
- package/dist/components/Axis.svelte +38 -41
- package/dist/components/Axis.svelte.d.ts +5 -4
- package/dist/components/Bar.svelte +6 -5
- package/dist/components/Bar.svelte.d.ts +3 -2
- package/dist/components/Bars.svelte +5 -4
- package/dist/components/Bars.svelte.d.ts +3 -2
- package/dist/components/Bounds.svelte +7 -5
- package/dist/components/Bounds.svelte.d.ts +8 -8
- package/dist/components/Brush.svelte +8 -6
- package/dist/components/Brush.svelte.d.ts +2 -2
- package/dist/components/Calendar.svelte +4 -3
- package/dist/components/Chart.svelte +72 -86
- package/dist/components/Chart.svelte.d.ts +216 -24
- package/dist/components/ChartClipPath.svelte +6 -6
- package/dist/components/ChartContext.svelte +19 -0
- package/dist/components/ChartContext.svelte.d.ts +89 -0
- package/dist/components/Circle.svelte +1 -0
- package/dist/components/ClipPath.svelte +1 -0
- package/dist/components/ForceSimulation.svelte +182 -25
- package/dist/components/ForceSimulation.svelte.d.ts +11 -1
- package/dist/components/Frame.svelte +8 -7
- package/dist/components/Frame.svelte.d.ts +1 -1
- package/dist/components/GeoCircle.svelte.d.ts +1 -2
- package/dist/components/GeoContext.svelte +2 -1
- package/dist/components/GeoContext.svelte.d.ts +5 -5
- package/dist/components/GeoEdgeFade.svelte +2 -5
- package/dist/components/GeoPath.svelte +9 -5
- package/dist/components/GeoPath.svelte.d.ts +7 -4
- package/dist/components/GeoPoint.svelte +0 -1
- package/dist/components/GeoSpline.svelte +2 -11
- package/dist/components/GeoTile.svelte +3 -1
- package/dist/components/Group.svelte +4 -2
- package/dist/components/Highlight.svelte +16 -10
- package/dist/components/Highlight.svelte.d.ts +16 -15
- package/dist/components/HitCanvas.svelte +5 -2
- package/dist/components/HitCanvas.svelte.d.ts +1 -1
- package/dist/components/Hull.svelte +6 -3
- package/dist/components/Labels.svelte +5 -4
- package/dist/components/Labels.svelte.d.ts +0 -1
- package/dist/components/Legend.svelte +4 -4
- package/dist/components/Legend.svelte.d.ts +2 -2
- package/dist/components/Line.svelte +1 -0
- package/dist/components/Link.svelte +3 -1
- package/dist/components/Pack.svelte +4 -3
- package/dist/components/Partition.svelte +3 -3
- package/dist/components/Partition.svelte.d.ts +2 -1
- package/dist/components/Pie.svelte +7 -6
- package/dist/components/Pie.svelte.d.ts +2 -4
- package/dist/components/Point.svelte +2 -2
- package/dist/components/Points.svelte +4 -3
- package/dist/components/RadialGradient.svelte +2 -2
- package/dist/components/RadialGradient.svelte.d.ts +0 -1
- package/dist/components/Rect.svelte +1 -0
- package/dist/components/Rule.svelte +3 -3
- package/dist/components/Sankey.svelte +9 -3
- package/dist/components/Sankey.svelte.d.ts +2 -2
- package/dist/components/Spline.svelte +9 -6
- package/dist/components/Spline.svelte.d.ts +2 -2
- package/dist/components/Text.svelte +1 -2
- package/dist/components/Threshold.svelte +2 -2
- package/dist/components/Threshold.svelte.d.ts +2 -2
- package/dist/components/TileImage.svelte +4 -1
- package/dist/components/Tooltip.svelte +3 -3
- package/dist/components/TooltipContext.svelte +46 -15
- package/dist/components/TooltipContext.svelte.d.ts +1 -1
- package/dist/components/TooltipItem.svelte.d.ts +1 -1
- package/dist/components/TransformContext.svelte +17 -6
- package/dist/components/TransformControls.svelte +1 -0
- package/dist/components/Tree.svelte +4 -3
- package/dist/components/Tree.svelte.d.ts +3 -3
- package/dist/components/Treemap.svelte +11 -12
- package/dist/components/Treemap.svelte.d.ts +6 -6
- package/dist/components/Voronoi.svelte +8 -3
- package/dist/components/layout/Canvas.svelte +5 -3
- package/dist/components/layout/Html.svelte +3 -3
- package/dist/components/layout/Svg.svelte +6 -3
- package/dist/docs/Code.svelte +2 -3
- package/dist/docs/GeoDebug.svelte +4 -4
- package/dist/docs/Link.svelte +2 -4
- package/dist/docs/Link.svelte.d.ts +14 -5
- package/dist/docs/Preview.svelte +1 -1
- package/dist/docs/TilesetField.svelte +1 -1
- package/dist/docs/TilesetField.svelte.d.ts +1 -1
- package/dist/docs/ViewSourceButton.svelte +4 -4
- package/dist/docs/ViewSourceButton.svelte.d.ts +5 -3
- package/dist/stores/motionStore.d.ts +2 -2
- package/dist/stores/motionStore.js +4 -2
- package/dist/utils/array.d.ts +5 -0
- package/dist/utils/array.js +7 -0
- package/dist/utils/common.d.ts +2 -0
- package/dist/utils/common.js +18 -0
- package/dist/utils/genData.d.ts +23 -23
- package/dist/utils/genData.js +3 -2
- package/dist/utils/geo.d.ts +3 -3
- package/dist/utils/geo.js +2 -0
- package/dist/utils/graph.d.ts +1 -1
- package/dist/utils/graph.js +3 -3
- package/dist/utils/hierarchy.d.ts +1 -1
- package/dist/utils/hierarchy.js +1 -0
- package/dist/utils/rect.d.ts +5 -3
- package/dist/utils/rect.js +7 -11
- package/dist/utils/scales.d.ts +21 -12
- package/dist/utils/scales.js +3 -1
- package/dist/utils/stack.d.ts +5 -2
- package/dist/utils/stack.js +20 -7
- package/dist/utils/threshold.js +1 -0
- package/dist/utils/treemap.d.ts +5 -2
- package/dist/utils/treemap.js +1 -1
- package/package.json +6 -3
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
// https://github.com/mnsht/gradient-path
|
|
13
13
|
// https://svelte.dev/repl/09711e43a1264ba18945d7db7cab9335?version=3.38.2
|
|
14
14
|
// https://codepen.io/simeydotme/pen/rrOEmO/
|
|
15
|
-
import {
|
|
15
|
+
import { tick } from 'svelte';
|
|
16
16
|
import { arc as d3arc } from 'd3-shape';
|
|
17
17
|
import { scaleLinear } from 'd3-scale';
|
|
18
18
|
import { min, max } from 'd3-array';
|
|
19
|
+
import { chartContext } from './ChartContext.svelte';
|
|
19
20
|
import { motionStore } from '../stores/motionStore.js';
|
|
20
21
|
import { degreesToRadians } from '../utils/math.js';
|
|
21
22
|
export let spring = undefined;
|
|
@@ -60,7 +61,7 @@ export let cornerRadius = 0;
|
|
|
60
61
|
export let padAngle = 0;
|
|
61
62
|
// export let padRadius = 0;
|
|
62
63
|
export let track = false;
|
|
63
|
-
const { yRange } =
|
|
64
|
+
const { yRange } = chartContext();
|
|
64
65
|
$: scale = scaleLinear().domain(domain).range(range);
|
|
65
66
|
function getOuterRadius(outerRadius, chartRadius) {
|
|
66
67
|
if (outerRadius == null) {
|
|
@@ -83,7 +84,7 @@ function getOuterRadius(outerRadius, chartRadius) {
|
|
|
83
84
|
return outerRadius;
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
|
-
$: _outerRadius = getOuterRadius(outerRadius, max($yRange) / 2);
|
|
87
|
+
$: _outerRadius = getOuterRadius(outerRadius, (max($yRange) ?? 0) / 2);
|
|
87
88
|
function getInnerRadius(innerRadius, outerRadius) {
|
|
88
89
|
if (innerRadius == null) {
|
|
89
90
|
return Math.min(...$yRange);
|
|
@@ -122,38 +123,44 @@ $: trackArc = d3arc()
|
|
|
122
123
|
.cornerRadius(cornerRadius)
|
|
123
124
|
.padAngle(padAngle);
|
|
124
125
|
// .padRadius(padRadius);
|
|
126
|
+
// @ts-expect-error
|
|
125
127
|
$: trackArcCentroid = trackArc.centroid();
|
|
126
128
|
// $: console.log(trackArcCentroid)
|
|
127
|
-
let trackArcEl;
|
|
128
|
-
$: boundingBox =
|
|
129
|
-
// $:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
};
|
|
129
|
+
let trackArcEl = undefined;
|
|
130
|
+
$: boundingBox = trackArcEl ? trackArcEl.getBBox() : {};
|
|
131
|
+
// $: labelArcCenterOffset = {
|
|
132
|
+
// x: outerRadius - boundingBox.width / 2,
|
|
133
|
+
// // x: 0,
|
|
134
|
+
// y: (outerRadius - boundingBox.height / 2) * -1,
|
|
135
|
+
// };
|
|
135
136
|
// $: console.log(labelArcCenterOffset)
|
|
136
|
-
$: labelArcBottomOffset = {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
137
|
+
// $: labelArcBottomOffset = {
|
|
138
|
+
// // x: outerRadius - boundingBox.width / 2,
|
|
139
|
+
// x: outerRadius - boundingBox.width / 2,
|
|
140
|
+
// // x: 0,
|
|
141
|
+
// // y: (outerRadius - boundingBox.height) * -1
|
|
142
|
+
// y: (outerRadius - boundingBox.height) * -1,
|
|
143
|
+
// };
|
|
143
144
|
// $: console.log(labelArcBottomOffset)
|
|
144
145
|
/**
|
|
145
146
|
* Offset arc from center
|
|
146
147
|
*/
|
|
147
148
|
export let offset = 0;
|
|
148
|
-
$: angle = (startAngle + endAngle) / 2;
|
|
149
|
+
$: angle = ((startAngle ?? 0) + (endAngle ?? 0)) / 2;
|
|
149
150
|
$: xOffset = Math.sin(angle) * offset;
|
|
150
151
|
$: yOffset = -Math.cos(angle) * offset;
|
|
151
152
|
</script>
|
|
152
153
|
|
|
153
154
|
{#if track}
|
|
154
|
-
<path
|
|
155
|
+
<path
|
|
156
|
+
d={trackArc()}
|
|
157
|
+
class="track"
|
|
158
|
+
bind:this={trackArcEl}
|
|
159
|
+
{...typeof track === 'object' ? track : null}
|
|
160
|
+
/>
|
|
155
161
|
{/if}
|
|
156
162
|
|
|
163
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
157
164
|
<path
|
|
158
165
|
d={arc()}
|
|
159
166
|
transform="translate({xOffset}, {yOffset})"
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
<script>import {
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
2
|
import { area as d3Area, areaRadial } from 'd3-shape';
|
|
3
3
|
import { max } from 'd3-array';
|
|
4
4
|
import { interpolatePath } from 'd3-interpolate-path';
|
|
5
5
|
import { cls } from 'svelte-ux';
|
|
6
6
|
import { motionStore } from '../stores/motionStore.js';
|
|
7
|
+
import { chartContext } from './ChartContext.svelte';
|
|
7
8
|
import Spline from './Spline.svelte';
|
|
8
|
-
const { data: contextData, xScale, yScale, xGet, yGet, yRange } =
|
|
9
|
+
const { data: contextData, xScale, yScale, xGet, yGet, yRange } = chartContext();
|
|
9
10
|
/** Override data instead of using context */
|
|
10
11
|
export let data = undefined;
|
|
11
12
|
/** Pass `<path d={...} />` explicitly instead of calculating from data / context */
|
|
@@ -13,11 +14,11 @@ export let pathData = undefined;
|
|
|
13
14
|
/** Use radial instead of cartesian area generator, mapping `x` to `angle` and `y0`/`y1 to `innerRadius`/`outerRadius. Radial lines are positioned relative to the origin, use transform (ex. `<Group center>`) to change the origin */
|
|
14
15
|
export let radial = false;
|
|
15
16
|
/** Override x accessor */
|
|
16
|
-
export let x = undefined;
|
|
17
|
+
export let x = undefined;
|
|
17
18
|
/** Override y0 accessor. Defaults to max($yRange) */
|
|
18
|
-
export let y0 = undefined;
|
|
19
|
+
export let y0 = undefined;
|
|
19
20
|
/** Override y1 accessor. Defaults to y accessor */
|
|
20
|
-
export let y1 = undefined;
|
|
21
|
+
export let y1 = undefined;
|
|
21
22
|
/** Interpolate path data using d3-interpolate-path */
|
|
22
23
|
export let tweened = undefined;
|
|
23
24
|
export let clipPath = undefined;
|
|
@@ -25,7 +26,9 @@ export let curve = undefined;
|
|
|
25
26
|
export let defined = undefined;
|
|
26
27
|
/** Enable showing line */
|
|
27
28
|
export let line = false;
|
|
28
|
-
$: tweenedOptions = tweened
|
|
29
|
+
$: tweenedOptions = tweened
|
|
30
|
+
? { interpolate: interpolatePath, ...(typeof tweened === 'object' ? tweened : null) }
|
|
31
|
+
: false;
|
|
29
32
|
$: tweened_d = motionStore('', { tweened: tweenedOptions });
|
|
30
33
|
$: {
|
|
31
34
|
const path = radial
|
|
@@ -42,7 +45,7 @@ $: {
|
|
|
42
45
|
if (defined)
|
|
43
46
|
path.defined(defined);
|
|
44
47
|
const d = pathData ?? path(data ?? $contextData);
|
|
45
|
-
tweened_d.set(d);
|
|
48
|
+
tweened_d.set(d ?? '');
|
|
46
49
|
}
|
|
47
50
|
</script>
|
|
48
51
|
|
|
@@ -50,6 +53,7 @@ $: {
|
|
|
50
53
|
<Spline {data} y={y1} {curve} {defined} {tweened} {...typeof line === 'object' ? line : null} />
|
|
51
54
|
{/if}
|
|
52
55
|
|
|
56
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
53
57
|
<path
|
|
54
58
|
d={$tweened_d}
|
|
55
59
|
clip-path={clipPath}
|
|
@@ -9,9 +9,9 @@ declare const __propDef: {
|
|
|
9
9
|
data?: any;
|
|
10
10
|
pathData?: string | undefined | null;
|
|
11
11
|
radial?: boolean;
|
|
12
|
-
x?: any;
|
|
13
|
-
y0?: any;
|
|
14
|
-
y1?: any;
|
|
12
|
+
x?: ((d: any) => any) | undefined;
|
|
13
|
+
y0?: ((d: any) => any) | undefined;
|
|
14
|
+
y1?: ((d: any) => any) | undefined;
|
|
15
15
|
tweened?: boolean | Parameters<typeof tweenedStore>[1];
|
|
16
16
|
clipPath?: string | undefined;
|
|
17
17
|
curve?: CurveFactory | undefined;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<script>import {
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
|
+
import { chartContext } from './ChartContext.svelte';
|
|
2
3
|
import Area from './Area.svelte';
|
|
3
4
|
import Spline from './Spline.svelte';
|
|
4
|
-
const { data, rGet } =
|
|
5
|
+
const { data, rGet } = chartContext();
|
|
5
6
|
export let curve = undefined;
|
|
6
7
|
export let defined = undefined;
|
|
7
8
|
export let opacity = 0.3;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
<script>import {
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
2
|
import { fade } from 'svelte/transition';
|
|
3
3
|
import { cubicIn } from 'svelte/easing';
|
|
4
4
|
import { extent } from 'd3-array';
|
|
5
5
|
import { pointRadial } from 'd3-shape';
|
|
6
6
|
import { format as formatValue, cls } from 'svelte-ux';
|
|
7
|
+
import { chartContext } from './ChartContext.svelte';
|
|
7
8
|
import Circle from './Circle.svelte';
|
|
8
9
|
import Line from './Line.svelte';
|
|
9
10
|
import Text from './Text.svelte';
|
|
10
11
|
import { isScaleBand } from '../utils/scales.js';
|
|
11
|
-
const { xScale, yScale, xRange, yRange, width, height, padding } =
|
|
12
|
+
const { xScale, yScale, xRange, yRange, width, height, padding } = chartContext();
|
|
12
13
|
/** Location of axis */
|
|
13
14
|
export let placement;
|
|
14
15
|
/** Axis label */
|
|
@@ -31,7 +32,11 @@ export let format = undefined;
|
|
|
31
32
|
export let tickLabelProps = undefined;
|
|
32
33
|
export let spring = undefined;
|
|
33
34
|
export let tweened = undefined;
|
|
34
|
-
export let transitionIn = tweened
|
|
35
|
+
export let transitionIn = tweened
|
|
36
|
+
? fade
|
|
37
|
+
: () => {
|
|
38
|
+
return {};
|
|
39
|
+
};
|
|
35
40
|
export let transitionInParams = { easing: cubicIn };
|
|
36
41
|
$: orientation =
|
|
37
42
|
placement === 'angle'
|
|
@@ -133,6 +138,35 @@ function getDefaultTickLabelProps(tick) {
|
|
|
133
138
|
};
|
|
134
139
|
}
|
|
135
140
|
}
|
|
141
|
+
$: resolvedLabelProps = {
|
|
142
|
+
value: label,
|
|
143
|
+
x: placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
|
|
144
|
+
? -$padding.left
|
|
145
|
+
: placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
|
|
146
|
+
? $width + $padding.right
|
|
147
|
+
: $width / 2,
|
|
148
|
+
y: placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
|
|
149
|
+
? -$padding.top
|
|
150
|
+
: orientation === 'vertical' && labelPlacement === 'middle'
|
|
151
|
+
? $height / 2
|
|
152
|
+
: placement === 'bottom' || labelPlacement === 'end'
|
|
153
|
+
? $height + $padding.bottom
|
|
154
|
+
: 0,
|
|
155
|
+
textAnchor: labelPlacement === 'middle'
|
|
156
|
+
? 'middle'
|
|
157
|
+
: placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
|
|
158
|
+
? 'end'
|
|
159
|
+
: 'start',
|
|
160
|
+
verticalAnchor: placement === 'top' ||
|
|
161
|
+
(orientation === 'vertical' && labelPlacement === 'start') ||
|
|
162
|
+
(placement === 'left' && labelPlacement === 'middle')
|
|
163
|
+
? 'start'
|
|
164
|
+
: 'end',
|
|
165
|
+
rotate: orientation === 'vertical' && labelPlacement === 'middle' ? -90 : 0,
|
|
166
|
+
capHeight: '.5rem', // text-[10px]
|
|
167
|
+
...labelProps,
|
|
168
|
+
class: cls('label text-[10px] stroke-surface-100 [stroke-width:2px] font-light', labelProps?.class),
|
|
169
|
+
};
|
|
136
170
|
</script>
|
|
137
171
|
|
|
138
172
|
<g class="Axis placement-{placement}">
|
|
@@ -178,44 +212,7 @@ function getDefaultTickLabelProps(tick) {
|
|
|
178
212
|
{/if}
|
|
179
213
|
|
|
180
214
|
{#if label}
|
|
181
|
-
{
|
|
182
|
-
value: label,
|
|
183
|
-
x:
|
|
184
|
-
placement === 'left' || (orientation === 'horizontal' && labelPlacement === 'start')
|
|
185
|
-
? -$padding.left
|
|
186
|
-
: placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
|
|
187
|
-
? $width + $padding.right
|
|
188
|
-
: $width / 2,
|
|
189
|
-
y:
|
|
190
|
-
placement === 'top' || (orientation === 'vertical' && labelPlacement === 'start')
|
|
191
|
-
? -$padding.top
|
|
192
|
-
: orientation === 'vertical' && labelPlacement === 'middle'
|
|
193
|
-
? $height / 2
|
|
194
|
-
: placement === 'bottom' || labelPlacement === 'end'
|
|
195
|
-
? $height + $padding.bottom
|
|
196
|
-
: 0,
|
|
197
|
-
textAnchor:
|
|
198
|
-
labelPlacement === 'middle'
|
|
199
|
-
? 'middle'
|
|
200
|
-
: placement === 'right' || (orientation === 'horizontal' && labelPlacement === 'end')
|
|
201
|
-
? 'end'
|
|
202
|
-
: 'start',
|
|
203
|
-
verticalAnchor:
|
|
204
|
-
placement === 'top' ||
|
|
205
|
-
(orientation === 'vertical' && labelPlacement === 'start') ||
|
|
206
|
-
(placement === 'left' && labelPlacement === 'middle')
|
|
207
|
-
? 'start'
|
|
208
|
-
: 'end',
|
|
209
|
-
rotate: orientation === 'vertical' && labelPlacement === 'middle' ? -90 : 0,
|
|
210
|
-
capHeight: '.5rem', // text-[10px]
|
|
211
|
-
...labelProps,
|
|
212
|
-
class: cls(
|
|
213
|
-
'label text-[10px] stroke-surface-100 [stroke-width:2px] font-light',
|
|
214
|
-
labelProps?.class
|
|
215
|
-
),
|
|
216
|
-
}}
|
|
217
|
-
|
|
218
|
-
<Text value={label} {...resolvedLabelProps} />
|
|
215
|
+
<Text {...resolvedLabelProps} />
|
|
219
216
|
{/if}
|
|
220
217
|
|
|
221
218
|
{#each tickVals as tick, index (tick)}
|
|
@@ -5,21 +5,22 @@ import type { SVGAttributes } from 'svelte/elements';
|
|
|
5
5
|
import type { spring as springStore, tweened as tweenedStore } from 'svelte/motion';
|
|
6
6
|
import { type FormatType, type TransitionParams } from 'svelte-ux';
|
|
7
7
|
import Text from './Text.svelte';
|
|
8
|
+
import { type AnyScale } from '../utils/scales.js';
|
|
8
9
|
declare const __propDef: {
|
|
9
10
|
props: {
|
|
10
11
|
/** Location of axis */ placement: "top" | "bottom" | "left" | "right" | "angle" | "radius";
|
|
11
12
|
/** Axis label */ label?: string;
|
|
12
13
|
/** Location of axis label */ labelPlacement?: "start" | "middle" | "end";
|
|
13
14
|
/** Props applied label Text */ labelProps?: Partial<ComponentProps<Text>> | undefined;
|
|
14
|
-
/** Draw a rule line. Use Rule component for greater rendering order control */ rule?: boolean | SVGAttributes<
|
|
15
|
-
/** Draw a grid lines */ grid?: boolean | SVGAttributes<
|
|
16
|
-
/** Control the number of ticks*/ ticks?: number | any[] |
|
|
15
|
+
/** Draw a rule line. Use Rule component for greater rendering order control */ rule?: boolean | Pick<SVGAttributes<SVGElement>, "class" | "style">;
|
|
16
|
+
/** Draw a grid lines */ grid?: boolean | Pick<SVGAttributes<SVGElement>, "class" | "style">;
|
|
17
|
+
/** Control the number of ticks*/ ticks?: number | any[] | ((scale: AnyScale) => any) | null | undefined;
|
|
17
18
|
/** Length of the tick line */ tickLength?: number;
|
|
18
19
|
/** Format tick labels */ format?: FormatType | undefined;
|
|
19
20
|
/** Props to apply to each tick label */ tickLabelProps?: Partial<ComponentProps<Text>> | undefined;
|
|
20
21
|
spring?: boolean | Parameters<typeof springStore>[1];
|
|
21
22
|
tweened?: boolean | Parameters<typeof tweenedStore>[1];
|
|
22
|
-
transitionIn?: typeof fade | (() =>
|
|
23
|
+
transitionIn?: typeof fade | (() => {});
|
|
23
24
|
transitionInParams?: TransitionParams;
|
|
24
25
|
scale?: any;
|
|
25
26
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import {
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
|
+
import { chartContext } from './ChartContext.svelte';
|
|
3
3
|
import Rect from './Rect.svelte';
|
|
4
4
|
import Spline from './Spline.svelte';
|
|
5
|
-
|
|
5
|
+
import { createDimensionGetter } from '../utils/rect.js';
|
|
6
|
+
const { x: xContext, y: yContext } = chartContext();
|
|
6
7
|
export let bar;
|
|
7
8
|
/**
|
|
8
9
|
* Override `x` from context. Useful for multiple Bar instances
|
|
@@ -26,7 +27,7 @@ export let spring = undefined;
|
|
|
26
27
|
export let tweened = undefined;
|
|
27
28
|
$: if (stroke === null || stroke === undefined)
|
|
28
29
|
stroke = 'black';
|
|
29
|
-
$: getDimensions = createDimensionGetter(
|
|
30
|
+
$: getDimensions = createDimensionGetter(chartContext(), {
|
|
30
31
|
x,
|
|
31
32
|
y,
|
|
32
33
|
groupBy,
|
|
@@ -36,7 +37,7 @@ $: getDimensions = createDimensionGetter(getContext('LayerCake'), {
|
|
|
36
37
|
outer: groupPaddingOuter,
|
|
37
38
|
},
|
|
38
39
|
});
|
|
39
|
-
$: dimensions = $getDimensions(bar);
|
|
40
|
+
$: dimensions = $getDimensions(bar) ?? { x: 0, y: 0, width: 0, height: 0 };
|
|
40
41
|
$: topLeft = ['all', 'top', 'left', 'top-left'].includes(rounded);
|
|
41
42
|
$: topRight = ['all', 'top', 'right', 'top-right'].includes(rounded);
|
|
42
43
|
$: bottomLeft = ['all', 'bottom', 'left', 'bottom-left'].includes(rounded);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import { type ComponentProps } from 'svelte';
|
|
3
3
|
import Rect from './Rect.svelte';
|
|
4
|
+
import type { Accessor } from '../index.js/utils/common.js';
|
|
4
5
|
declare const __propDef: {
|
|
5
6
|
props: {
|
|
6
7
|
[x: string]: any;
|
|
7
8
|
bar: Object;
|
|
8
|
-
x?:
|
|
9
|
-
y?:
|
|
9
|
+
x?: Accessor;
|
|
10
|
+
y?: Accessor;
|
|
10
11
|
fill?: string | undefined;
|
|
11
12
|
stroke?: string;
|
|
12
13
|
strokeWidth?: number;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
<script>import {
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
|
+
import { chartContext } from './ChartContext.svelte';
|
|
2
3
|
import Bar from './Bar.svelte';
|
|
3
4
|
import Rect from './Rect.svelte';
|
|
4
|
-
const { data, rGet, config } =
|
|
5
|
+
const { data, rGet, config } = chartContext();
|
|
5
6
|
/**
|
|
6
7
|
* Override `x` from context. Useful for multiple Bar instances
|
|
7
8
|
*/
|
|
8
|
-
export let x = undefined;
|
|
9
|
+
export let x = undefined;
|
|
9
10
|
/**
|
|
10
11
|
* Override `y` from context. Useful for multiple Bar instances
|
|
11
12
|
*/
|
|
12
|
-
export let y = undefined;
|
|
13
|
+
export let y = undefined;
|
|
13
14
|
export let stroke = 'black';
|
|
14
15
|
export let strokeWidth = 0;
|
|
15
16
|
export let radius = 0;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import { type ComponentProps } from 'svelte';
|
|
3
3
|
import Rect from './Rect.svelte';
|
|
4
|
+
import type { Accessor } from '../utils/common.js';
|
|
4
5
|
declare const __propDef: {
|
|
5
6
|
props: {
|
|
6
7
|
[x: string]: any;
|
|
7
|
-
x?:
|
|
8
|
-
y?:
|
|
8
|
+
x?: Accessor;
|
|
9
|
+
y?: Accessor;
|
|
9
10
|
stroke?: string;
|
|
10
11
|
strokeWidth?: number;
|
|
11
12
|
radius?: number;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import {
|
|
1
|
+
<script>import { scaleLinear } from 'd3-scale';
|
|
2
|
+
import { chartContext } from './ChartContext.svelte';
|
|
3
3
|
import { motionScale } from '../utils/scales.js';
|
|
4
|
-
const { width, height } =
|
|
5
|
-
export let domain;
|
|
6
|
-
export let range;
|
|
4
|
+
const { width, height } = chartContext();
|
|
5
|
+
export let domain = undefined;
|
|
6
|
+
export let range = undefined;
|
|
7
7
|
export let spring = undefined;
|
|
8
8
|
export let tweened = undefined;
|
|
9
9
|
function getExtents(extents, axis, fallback) {
|
|
10
10
|
const resolvedExtents = typeof extents === 'function' ? extents({ width: $width, height: $height }) : extents;
|
|
11
11
|
return [
|
|
12
|
+
// @ts-expect-error
|
|
12
13
|
resolvedExtents?.[axis + '0'] ?? 0, // x0 or y0
|
|
14
|
+
// @ts-expect-error
|
|
13
15
|
resolvedExtents?.[axis + '1'] ?? fallback, // x1 or y1, fallback as $width or $height
|
|
14
16
|
];
|
|
15
17
|
}
|
|
@@ -2,34 +2,34 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
import { motionScale } from '../utils/scales.js';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
|
-
domain
|
|
5
|
+
domain?: Partial<{
|
|
6
6
|
x0: number;
|
|
7
7
|
y0: number;
|
|
8
8
|
x1: number;
|
|
9
9
|
y1: number;
|
|
10
|
-
} | ((dimensions: {
|
|
10
|
+
}> | ((dimensions: {
|
|
11
11
|
width: number;
|
|
12
12
|
height: number;
|
|
13
|
-
}) => {
|
|
13
|
+
}) => Partial<{
|
|
14
14
|
x0: number;
|
|
15
15
|
y0: number;
|
|
16
16
|
x1: number;
|
|
17
17
|
y1: number;
|
|
18
|
-
});
|
|
19
|
-
range
|
|
18
|
+
}>) | null | undefined;
|
|
19
|
+
range?: Partial<{
|
|
20
20
|
x0: number;
|
|
21
21
|
y0: number;
|
|
22
22
|
x1: number;
|
|
23
23
|
y1: number;
|
|
24
|
-
} | ((dimensions: {
|
|
24
|
+
}> | ((dimensions: {
|
|
25
25
|
width: number;
|
|
26
26
|
height: number;
|
|
27
|
-
}) => {
|
|
27
|
+
}) => Partial<{
|
|
28
28
|
x0: number;
|
|
29
29
|
y0: number;
|
|
30
30
|
x1: number;
|
|
31
31
|
y1: number;
|
|
32
|
-
});
|
|
32
|
+
}>) | null | undefined;
|
|
33
33
|
spring?: boolean | Parameters<typeof motionScale>[1]["spring"];
|
|
34
34
|
tweened?: boolean | Parameters<typeof motionScale>[1]["tweened"];
|
|
35
35
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
<script>import { createEventDispatcher
|
|
1
|
+
<script>import { createEventDispatcher } from 'svelte';
|
|
2
2
|
import { extent } from 'd3-array';
|
|
3
3
|
import { clamp, cls } from 'svelte-ux';
|
|
4
|
+
import { chartContext } from './ChartContext.svelte';
|
|
4
5
|
import Frame from './Frame.svelte';
|
|
5
6
|
import { localPoint } from '../utils/event.js';
|
|
6
7
|
import Group from './Group.svelte';
|
|
7
|
-
const { xScale, yScale, width, height, padding } =
|
|
8
|
+
const { xScale, yScale, width, height, padding } = chartContext();
|
|
8
9
|
const dispatch = createEventDispatcher();
|
|
9
10
|
/** Axis to apply brushing */
|
|
10
11
|
export let axis = 'x';
|
|
@@ -31,15 +32,15 @@ function handler(fn) {
|
|
|
31
32
|
xDomain: [xDomain[0] ?? xDomainMin, xDomain[1] ?? xDomainMax],
|
|
32
33
|
yDomain: [yDomain[0] ?? yDomainMin, yDomain[1] ?? yDomainMax],
|
|
33
34
|
value: {
|
|
34
|
-
x: $xScale.invert(localPoint(frameEl, e)?.x - $padding.left),
|
|
35
|
-
y: $yScale.invert(localPoint(frameEl, e)?.y - $padding.top),
|
|
35
|
+
x: $xScale.invert?.(localPoint(frameEl, e)?.x ?? 0 - $padding.left),
|
|
36
|
+
y: $yScale.invert?.(localPoint(frameEl, e)?.y ?? 0 - $padding.top),
|
|
36
37
|
},
|
|
37
38
|
};
|
|
38
39
|
dispatch('brushStart', { xDomain, yDomain });
|
|
39
40
|
const onPointerMove = (e) => {
|
|
40
41
|
fn(start, {
|
|
41
|
-
x: $xScale.invert(localPoint(frameEl, e)?.x - $padding.left),
|
|
42
|
-
y: $yScale.invert(localPoint(frameEl, e)?.y - $padding.top),
|
|
42
|
+
x: $xScale.invert?.(localPoint(frameEl, e)?.x ?? 0 - $padding.left),
|
|
43
|
+
y: $yScale.invert?.(localPoint(frameEl, e)?.y ?? 0 - $padding.top),
|
|
43
44
|
});
|
|
44
45
|
// if (xDomain[0] === xDomain[1] || yDomain[0] === yDomain[1]) {
|
|
45
46
|
// // Ignore?
|
|
@@ -139,6 +140,7 @@ $: isActive =
|
|
|
139
140
|
/>
|
|
140
141
|
|
|
141
142
|
{#if isActive}
|
|
143
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
142
144
|
<Group x={rangeLeft} y={rangeTop} class="range">
|
|
143
145
|
<slot name="range" {rangeWidth} {rangeHeight}>
|
|
144
146
|
<rect
|
|
@@ -6,8 +6,8 @@ declare const __propDef: {
|
|
|
6
6
|
axis?: "x" | "y" | "both";
|
|
7
7
|
handleSize?: number;
|
|
8
8
|
resetOnEnd?: boolean;
|
|
9
|
-
xDomain?: [number | null, number | null];
|
|
10
|
-
yDomain?: [number | null, number | null];
|
|
9
|
+
xDomain?: [number | Date | null, number | Date | null];
|
|
10
|
+
yDomain?: [number | Date | null, number | Date | null];
|
|
11
11
|
range?: SVGAttributes<SVGRectElement> | undefined;
|
|
12
12
|
handle?: SVGAttributes<SVGRectElement> | undefined;
|
|
13
13
|
classes?: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { timeDays, timeMonths, timeWeek, timeYear
|
|
1
|
+
<script>import {} from 'svelte';
|
|
2
|
+
import { timeDays, timeMonths, timeWeek, timeYear } from 'd3-time';
|
|
3
3
|
import { index } from 'd3-array';
|
|
4
4
|
import { format } from 'date-fns';
|
|
5
|
+
import { chartContext } from './ChartContext.svelte';
|
|
5
6
|
import Rect from './Rect.svelte';
|
|
6
7
|
import MonthPath from './MonthPath.svelte';
|
|
7
8
|
import Text from './Text.svelte';
|
|
@@ -17,7 +18,7 @@ export let monthPath = false;
|
|
|
17
18
|
* Tooltip context to setup mouse events to show tooltip for related data
|
|
18
19
|
*/
|
|
19
20
|
export let tooltip = undefined;
|
|
20
|
-
const { width, height, x, rGet, data, config } =
|
|
21
|
+
const { width, height, x, rGet, data, config } = chartContext();
|
|
21
22
|
$: yearDays = timeDays(start, end);
|
|
22
23
|
$: yearMonths = timeMonths(start, end);
|
|
23
24
|
$: yearWeeks = timeWeek.count(start, end);
|