svelteplot 0.10.3 → 0.11.0-pr-514.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/Mark.svelte +42 -25
- package/dist/Mark.svelte.d.ts +111 -32
- package/dist/Plot.svelte +21 -15
- package/dist/core/Facet.svelte +1 -1
- package/dist/core/FacetAxes.svelte +13 -8
- package/dist/core/FacetGrid.svelte +4 -4
- package/dist/core/Plot.svelte +70 -36
- package/dist/helpers/arrowPath.js +10 -5
- package/dist/helpers/autoScales.d.ts +3 -3
- package/dist/helpers/autoScales.js +28 -18
- package/dist/helpers/autoTicks.js +2 -0
- package/dist/helpers/callWithProps.d.ts +1 -2
- package/dist/helpers/colors.d.ts +4 -4
- package/dist/helpers/facets.d.ts +42 -1
- package/dist/helpers/facets.js +83 -1
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/math.js +1 -1
- package/dist/helpers/mergeDeep.d.ts +1 -3
- package/dist/helpers/mergeDeep.js +15 -16
- package/dist/helpers/noise.js +1 -1
- package/dist/helpers/projection.d.ts +4 -3
- package/dist/helpers/projection.js +17 -5
- package/dist/helpers/reduce.d.ts +4 -4
- package/dist/helpers/reduce.js +6 -4
- package/dist/helpers/regressionLoess.js +2 -1
- package/dist/helpers/resolve.d.ts +6 -3
- package/dist/helpers/resolve.js +25 -16
- package/dist/helpers/roundedRect.js +1 -1
- package/dist/helpers/scales.d.ts +11 -10
- package/dist/helpers/scales.js +43 -13
- package/dist/helpers/time.d.ts +10 -3
- package/dist/helpers/time.js +2 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/plotDefaults.d.ts +3 -1
- package/dist/hooks/plotDefaults.js +33 -1
- package/dist/hooks/usePlot.svelte.d.ts +10 -25
- package/dist/hooks/usePlot.svelte.js +8 -7
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -3
- package/dist/marks/Area.svelte +24 -13
- package/dist/marks/Area.svelte.d.ts +118 -34
- package/dist/marks/AreaX.svelte +42 -8
- package/dist/marks/AreaX.svelte.d.ts +154 -71
- package/dist/marks/AreaY.svelte +42 -8
- package/dist/marks/AreaY.svelte.d.ts +154 -71
- package/dist/marks/Arrow.svelte +42 -23
- package/dist/marks/Arrow.svelte.d.ts +114 -35
- package/dist/marks/AxisX.svelte +43 -28
- package/dist/marks/AxisX.svelte.d.ts +125 -40
- package/dist/marks/AxisY.svelte +43 -26
- package/dist/marks/AxisY.svelte.d.ts +127 -40
- package/dist/marks/BarX.svelte +12 -10
- package/dist/marks/BarX.svelte.d.ts +104 -32
- package/dist/marks/BarY.svelte +11 -10
- package/dist/marks/BarY.svelte.d.ts +106 -34
- package/dist/marks/BollingerX.svelte +4 -7
- package/dist/marks/BollingerX.svelte.d.ts +105 -30
- package/dist/marks/BollingerY.svelte +3 -0
- package/dist/marks/BollingerY.svelte.d.ts +105 -30
- package/dist/marks/BoxX.svelte +3 -3
- package/dist/marks/BoxY.svelte +12 -9
- package/dist/marks/BoxY.svelte.d.ts +128 -53
- package/dist/marks/Brush.svelte +26 -21
- package/dist/marks/Brush.svelte.d.ts +119 -60
- package/dist/marks/Cell.svelte +13 -9
- package/dist/marks/Cell.svelte.d.ts +105 -30
- package/dist/marks/CellX.svelte +2 -1
- package/dist/marks/CellX.svelte.d.ts +105 -32
- package/dist/marks/CellY.svelte +2 -1
- package/dist/marks/CellY.svelte.d.ts +105 -32
- package/dist/marks/ColorLegend.svelte +24 -13
- package/dist/marks/ColorLegend.svelte.d.ts +1 -0
- package/dist/marks/CustomMark.svelte +16 -10
- package/dist/marks/CustomMark.svelte.d.ts +112 -31
- package/dist/marks/CustomMarkHTML.svelte +8 -2
- package/dist/marks/CustomMarkHTML.svelte.d.ts +8 -2
- package/dist/marks/DifferenceY.svelte +31 -20
- package/dist/marks/DifferenceY.svelte.d.ts +134 -55
- package/dist/marks/Dot.svelte +21 -11
- package/dist/marks/Dot.svelte.d.ts +117 -38
- package/dist/marks/DotX.svelte +2 -0
- package/dist/marks/DotX.svelte.d.ts +136 -62
- package/dist/marks/DotY.svelte +1 -0
- package/dist/marks/DotY.svelte.d.ts +135 -62
- package/dist/marks/Frame.svelte +47 -9
- package/dist/marks/Frame.svelte.d.ts +124 -41
- package/dist/marks/Geo.svelte +21 -12
- package/dist/marks/Geo.svelte.d.ts +105 -30
- package/dist/marks/Graticule.svelte +3 -0
- package/dist/marks/Graticule.svelte.d.ts +3 -0
- package/dist/marks/GridX.svelte +31 -16
- package/dist/marks/GridX.svelte.d.ts +108 -32
- package/dist/marks/GridY.svelte +30 -15
- package/dist/marks/GridY.svelte.d.ts +108 -32
- package/dist/marks/HTMLTooltip.svelte +37 -27
- package/dist/marks/HTMLTooltip.svelte.d.ts +7 -0
- package/dist/marks/Image.svelte +50 -25
- package/dist/marks/Image.svelte.d.ts +117 -35
- package/dist/marks/Line.svelte +67 -44
- package/dist/marks/Line.svelte.d.ts +119 -30
- package/dist/marks/LineX.svelte +2 -1
- package/dist/marks/LineX.svelte.d.ts +142 -69
- package/dist/marks/LineY.svelte +2 -1
- package/dist/marks/LineY.svelte.d.ts +142 -69
- package/dist/marks/Link.svelte +70 -46
- package/dist/marks/Link.svelte.d.ts +126 -41
- package/dist/marks/Pointer.svelte +46 -35
- package/dist/marks/Pointer.svelte.d.ts +7 -0
- package/dist/marks/Rect.svelte +13 -5
- package/dist/marks/Rect.svelte.d.ts +116 -35
- package/dist/marks/RectX.svelte +6 -3
- package/dist/marks/RectX.svelte.d.ts +158 -12
- package/dist/marks/RectY.svelte +6 -3
- package/dist/marks/RectY.svelte.d.ts +158 -12
- package/dist/marks/RegressionX.svelte +13 -6
- package/dist/marks/RegressionX.svelte.d.ts +8 -3
- package/dist/marks/RegressionY.svelte +13 -6
- package/dist/marks/RegressionY.svelte.d.ts +8 -3
- package/dist/marks/RuleX.svelte +18 -11
- package/dist/marks/RuleX.svelte.d.ts +112 -32
- package/dist/marks/RuleY.svelte +19 -12
- package/dist/marks/RuleY.svelte.d.ts +114 -34
- package/dist/marks/Spike.svelte +11 -5
- package/dist/marks/Spike.svelte.d.ts +146 -68
- package/dist/marks/Text.svelte +24 -7
- package/dist/marks/Text.svelte.d.ts +253 -75
- package/dist/marks/TickX.svelte +56 -48
- package/dist/marks/TickX.svelte.d.ts +114 -40
- package/dist/marks/TickY.svelte +59 -51
- package/dist/marks/TickY.svelte.d.ts +117 -43
- package/dist/marks/Trail.svelte +25 -13
- package/dist/marks/Trail.svelte.d.ts +116 -33
- package/dist/marks/Vector.svelte +20 -11
- package/dist/marks/Vector.svelte.d.ts +116 -35
- package/dist/marks/WaffleX.svelte +18 -16
- package/dist/marks/WaffleX.svelte.d.ts +131 -57
- package/dist/marks/WaffleY.svelte +16 -15
- package/dist/marks/WaffleY.svelte.d.ts +129 -56
- package/dist/marks/helpers/Anchor.svelte +17 -2
- package/dist/marks/helpers/Anchor.svelte.d.ts +16 -1
- package/dist/marks/helpers/AreaCanvas.svelte +8 -8
- package/dist/marks/helpers/BaseAxisX.svelte +38 -41
- package/dist/marks/helpers/BaseAxisX.svelte.d.ts +11 -17
- package/dist/marks/helpers/BaseAxisY.svelte +35 -35
- package/dist/marks/helpers/BaseAxisY.svelte.d.ts +12 -15
- package/dist/marks/helpers/Box.svelte +35 -28
- package/dist/marks/helpers/Box.svelte.d.ts +122 -50
- package/dist/marks/helpers/DotCanvas.svelte +11 -9
- package/dist/marks/helpers/GeoCanvas.svelte +7 -6
- package/dist/marks/helpers/LineCanvas.svelte +7 -7
- package/dist/marks/helpers/LinearGradientX.svelte +2 -2
- package/dist/marks/helpers/LinearGradientX.svelte.d.ts +1 -1
- package/dist/marks/helpers/LinearGradientY.svelte +2 -2
- package/dist/marks/helpers/LinearGradientY.svelte.d.ts +1 -1
- package/dist/marks/helpers/Marker.svelte +2 -2
- package/dist/marks/helpers/MarkerPath.svelte +15 -12
- package/dist/marks/helpers/MarkerPath.svelte.d.ts +105 -32
- package/dist/marks/helpers/MultilineText.svelte +24 -17
- package/dist/marks/helpers/MultilineText.svelte.d.ts +1 -1
- package/dist/marks/helpers/RectCanvas.svelte +31 -26
- package/dist/marks/helpers/RectPath.svelte +2 -2
- package/dist/marks/helpers/Regression.svelte +176 -86
- package/dist/marks/helpers/Regression.svelte.d.ts +20 -8
- package/dist/marks/helpers/RuleCanvas.svelte +9 -6
- package/dist/marks/helpers/TextCanvas.svelte +13 -9
- package/dist/marks/helpers/TextCanvas.svelte.d.ts +6 -6
- package/dist/marks/helpers/TickCanvas.svelte +6 -5
- package/dist/marks/helpers/TrailCanvas.svelte +16 -18
- package/dist/marks/helpers/TrailCanvas.svelte.d.ts +3 -5
- package/dist/marks/helpers/canvas.js +16 -9
- package/dist/marks/helpers/events.d.ts +2 -2
- package/dist/marks/helpers/events.js +14 -7
- package/dist/marks/helpers/trail.js +1 -1
- package/dist/marks/helpers/waffle.d.ts +3 -3
- package/dist/marks/helpers/waffle.js +7 -5
- package/dist/regression/polynomial.d.ts +1 -1
- package/dist/regression/polynomial.js +7 -7
- package/dist/regression/utils/determination.d.ts +1 -1
- package/dist/regression/utils/determination.js +1 -1
- package/dist/regression/utils/geometry.d.ts +1 -1
- package/dist/regression/utils/interpose.d.ts +1 -1
- package/dist/regression/utils/interpose.js +1 -1
- package/dist/regression/utils/points.d.ts +1 -1
- package/dist/transforms/bin.d.ts +3 -3
- package/dist/transforms/bin.js +29 -20
- package/dist/transforms/bollinger.d.ts +8 -0
- package/dist/transforms/bollinger.js +15 -4
- package/dist/transforms/centroid.d.ts +4 -0
- package/dist/transforms/centroid.js +4 -0
- package/dist/transforms/density.d.ts +4 -4
- package/dist/transforms/density.js +23 -16
- package/dist/transforms/dodge.d.ts +12 -1
- package/dist/transforms/dodge.js +15 -6
- package/dist/transforms/group.d.ts +141 -4
- package/dist/transforms/group.js +4 -1
- package/dist/transforms/interval.d.ts +204 -60
- package/dist/transforms/jitter.d.ts +421 -4
- package/dist/transforms/jitter.js +10 -1
- package/dist/transforms/map.d.ts +412 -4
- package/dist/transforms/map.js +5 -5
- package/dist/transforms/normalize.d.ts +276 -5
- package/dist/transforms/normalize.js +6 -4
- package/dist/transforms/recordize.d.ts +17 -5
- package/dist/transforms/recordize.js +13 -9
- package/dist/transforms/rename.d.ts +11 -4
- package/dist/transforms/rename.js +7 -2
- package/dist/transforms/select.d.ts +722 -210
- package/dist/transforms/select.js +13 -1
- package/dist/transforms/shift.d.ts +8 -0
- package/dist/transforms/shift.js +20 -6
- package/dist/transforms/sort.d.ts +13 -258
- package/dist/transforms/sort.js +13 -10
- package/dist/transforms/stack.d.ts +58 -9
- package/dist/transforms/stack.js +27 -11
- package/dist/transforms/window.d.ts +221 -66
- package/dist/transforms/window.js +8 -2
- package/dist/types/axes.d.ts +43 -0
- package/dist/types/axes.js +1 -0
- package/dist/types/channel.d.ts +30 -2
- package/dist/types/data.d.ts +14 -1
- package/dist/types/facet.d.ts +5 -0
- package/dist/types/index.d.ts +33 -8
- package/dist/types/index.js +11 -7
- package/dist/types/mark.d.ts +125 -36
- package/dist/types/plot.d.ts +118 -16
- package/dist/types/scale.d.ts +125 -8
- package/package.json +37 -32
- package/dist/helpers/autoTicks.d.ts +0 -12
package/dist/marks/Arrow.svelte
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
<!-- @component
|
|
2
2
|
Creates arrows with customizable heads, angles, and bending
|
|
3
3
|
-->
|
|
4
|
-
<script lang="ts" generics="Datum
|
|
4
|
+
<script lang="ts" generics="Datum = DataRecord | GeoJSON.GeoJsonObject">
|
|
5
5
|
interface ArrowMarkProps extends Omit<BaseMarkProps<Datum>, 'fill' | 'fillOpacity'> {
|
|
6
|
+
/** the input data array; each element becomes one arrow */
|
|
6
7
|
data: Datum[];
|
|
8
|
+
/** controls the order of data before rendering */
|
|
7
9
|
sort?:
|
|
8
10
|
| ConstantAccessor<RawValue>
|
|
9
11
|
| { channel: 'stroke' | 'fill' | 'x1' | 'y1' | 'x2' | 'y2' };
|
|
12
|
+
/** the starting horizontal position channel */
|
|
10
13
|
x1: ChannelAccessor<Datum>;
|
|
14
|
+
/** the starting vertical position channel */
|
|
11
15
|
y1: ChannelAccessor<Datum>;
|
|
16
|
+
/** the ending horizontal position channel */
|
|
12
17
|
x2: ChannelAccessor<Datum>;
|
|
18
|
+
/** the ending vertical position channel */
|
|
13
19
|
y2: ChannelAccessor<Datum>;
|
|
14
20
|
/**
|
|
15
21
|
* the bend angle, in degrees; defaults to 0°; true for 22.5°
|
|
@@ -35,6 +41,7 @@
|
|
|
35
41
|
* shorthand for the two insets
|
|
36
42
|
*/
|
|
37
43
|
inset?: ConstantAccessor<number, Datum>;
|
|
44
|
+
/** controls the sweep direction of the arrow arc; 1 or -1 */
|
|
38
45
|
sweep?: SweepOption;
|
|
39
46
|
}
|
|
40
47
|
import type {
|
|
@@ -42,13 +49,17 @@
|
|
|
42
49
|
BaseMarkProps,
|
|
43
50
|
ConstantAccessor,
|
|
44
51
|
ChannelAccessor,
|
|
45
|
-
RawValue
|
|
46
|
-
PlotDefaults
|
|
52
|
+
RawValue
|
|
47
53
|
} from '../types/index.js';
|
|
48
54
|
import { resolveProp, resolveStyles } from '../helpers/resolve.js';
|
|
49
55
|
import { coalesce, maybeNumber } from '../helpers/index.js';
|
|
50
56
|
import Mark from '../Mark.svelte';
|
|
51
|
-
import {
|
|
57
|
+
import {
|
|
58
|
+
arrowPath,
|
|
59
|
+
maybeSweep,
|
|
60
|
+
type SweepFunc,
|
|
61
|
+
type SweepOption
|
|
62
|
+
} from '../helpers/arrowPath.js';
|
|
52
63
|
import { replaceChannels } from '../transforms/rename.js';
|
|
53
64
|
import { addEventHandlers } from './helpers/events.js';
|
|
54
65
|
import GroupMultiple from './helpers/GroupMultiple.svelte';
|
|
@@ -80,10 +91,10 @@
|
|
|
80
91
|
const args: ArrowMarkProps = $derived(
|
|
81
92
|
sort(
|
|
82
93
|
replaceChannels(
|
|
83
|
-
{ data: indexData(data), ...options },
|
|
94
|
+
{ data: indexData(data as object[]), ...options },
|
|
84
95
|
{ y: ['y1', 'y2'], x: ['x1', 'x2'] }
|
|
85
96
|
)
|
|
86
|
-
)
|
|
97
|
+
) as unknown as ArrowMarkProps
|
|
87
98
|
);
|
|
88
99
|
</script>
|
|
89
100
|
|
|
@@ -91,29 +102,37 @@
|
|
|
91
102
|
type="arrow"
|
|
92
103
|
required={['x1', 'x2', 'y1', 'y2']}
|
|
93
104
|
channels={['x1', 'y1', 'x2', 'y2', 'opacity', 'stroke', 'strokeOpacity']}
|
|
94
|
-
{...args}>
|
|
105
|
+
{...args as any}>
|
|
95
106
|
{#snippet children({ usedScales, scaledData })}
|
|
96
|
-
{@const sweep = maybeSweep(args.sweep)}
|
|
107
|
+
{@const sweep = maybeSweep(args.sweep) as SweepFunc}
|
|
97
108
|
<GroupMultiple class="arrow" length={scaledData.length}>
|
|
98
109
|
{#each scaledData as d, i (i)}
|
|
99
110
|
{#if d.valid}
|
|
100
|
-
{@const
|
|
101
|
-
{@const
|
|
102
|
-
{@const
|
|
103
|
-
{@const
|
|
104
|
-
{@const
|
|
105
|
-
{@const
|
|
106
|
-
{@const
|
|
111
|
+
{@const datum = d.datum as unknown as Datum}
|
|
112
|
+
{@const inset = resolveProp(args.inset, datum, 0)}
|
|
113
|
+
{@const insetStart = resolveProp(args.insetStart, datum)}
|
|
114
|
+
{@const insetEnd = resolveProp(args.insetEnd, datum)}
|
|
115
|
+
{@const headAngle = (resolveProp(args.headAngle, datum, 60) ?? 60) as number}
|
|
116
|
+
{@const headLength = (resolveProp(args.headLength, datum, 8) ?? 8) as number}
|
|
117
|
+
{@const bendVal =
|
|
118
|
+
args.bend === true
|
|
119
|
+
? 22.5
|
|
120
|
+
: (resolveProp(
|
|
121
|
+
args.bend as ConstantAccessor<number, Datum>,
|
|
122
|
+
datum,
|
|
123
|
+
0
|
|
124
|
+
) ?? 0)}
|
|
125
|
+
{@const strokeWidth = (resolveProp(args.strokeWidth, datum, 1) ?? 1) as number}
|
|
107
126
|
{@const arrPath = arrowPath(
|
|
108
|
-
d.x1,
|
|
109
|
-
d.y1,
|
|
110
|
-
d.x2,
|
|
111
|
-
d.y2,
|
|
112
|
-
maybeNumber(coalesce(insetStart, inset)),
|
|
113
|
-
maybeNumber(coalesce(insetEnd, inset)),
|
|
127
|
+
d.x1 ?? 0,
|
|
128
|
+
d.y1 ?? 0,
|
|
129
|
+
d.x2 ?? 0,
|
|
130
|
+
d.y2 ?? 0,
|
|
131
|
+
maybeNumber(coalesce(insetStart, inset)) ?? 0,
|
|
132
|
+
maybeNumber(coalesce(insetEnd, inset)) ?? 0,
|
|
114
133
|
headAngle,
|
|
115
134
|
headLength,
|
|
116
|
-
|
|
135
|
+
bendVal,
|
|
117
136
|
strokeWidth,
|
|
118
137
|
sweep
|
|
119
138
|
)}
|
|
@@ -133,7 +152,7 @@
|
|
|
133
152
|
class={[className]}
|
|
134
153
|
{@attach addEventHandlers({
|
|
135
154
|
plot,
|
|
136
|
-
options,
|
|
155
|
+
options: options as any,
|
|
137
156
|
datum: d?.datum
|
|
138
157
|
})}>
|
|
139
158
|
{#if options.onmouseenter || options.onclick}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DataRecord, ConstantAccessor, ChannelAccessor, RawValue } from '../types/index.js';
|
|
2
2
|
import { type SweepOption } from '../helpers/arrowPath.js';
|
|
3
|
-
declare function $$render<Datum
|
|
3
|
+
declare function $$render<Datum = DataRecord | GeoJSON.GeoJsonObject>(): {
|
|
4
4
|
props: Omit<Partial<{
|
|
5
5
|
filter: ConstantAccessor<boolean, Datum>;
|
|
6
6
|
facet: "auto" | "include" | "exclude";
|
|
@@ -12,6 +12,16 @@ declare function $$render<Datum extends DataRecord>(): {
|
|
|
12
12
|
dodgeY: import("../transforms/dodge.js").DodgeYOptions;
|
|
13
13
|
fill: ChannelAccessor<Datum>;
|
|
14
14
|
fillOpacity: ConstantAccessor<number, Datum>;
|
|
15
|
+
fontFamily: ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
|
|
16
|
+
fontSize: ConstantAccessor<import("csstype").Property.FontSize<number>, Datum>;
|
|
17
|
+
fontStyle: ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
|
|
18
|
+
fontVariant: ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
|
|
19
|
+
fontWeight: ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
|
|
20
|
+
letterSpacing: ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
|
|
21
|
+
wordSpacing: ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
|
|
22
|
+
textAnchor: ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
|
|
23
|
+
textTransform: ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
|
|
24
|
+
textDecoration: ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
|
|
15
25
|
sort: ((a: RawValue, b: RawValue) => number) | {
|
|
16
26
|
channel: string;
|
|
17
27
|
order?: "ascending" | "descending";
|
|
@@ -25,53 +35,121 @@ declare function $$render<Datum extends DataRecord>(): {
|
|
|
25
35
|
opacity: ChannelAccessor<Datum>;
|
|
26
36
|
strokeDasharray: ConstantAccessor<string, Datum>;
|
|
27
37
|
strokeDashoffset: ConstantAccessor<number, Datum>;
|
|
38
|
+
blend: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
28
39
|
mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
29
40
|
clipPath: string;
|
|
30
41
|
mask: string;
|
|
31
42
|
imageFilter: ConstantAccessor<string, Datum>;
|
|
32
43
|
shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
|
|
33
44
|
paintOrder: ConstantAccessor<string, Datum>;
|
|
34
|
-
onclick:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
onclick: (event: Event & {
|
|
46
|
+
currentTarget: SVGPathElement;
|
|
47
|
+
}, datum: Datum, index: number) => void;
|
|
48
|
+
ondblclick: (event: Event & {
|
|
49
|
+
currentTarget: SVGPathElement;
|
|
50
|
+
}, datum: Datum, index: number) => void;
|
|
51
|
+
onmouseup: (event: Event & {
|
|
52
|
+
currentTarget: SVGPathElement;
|
|
53
|
+
}, datum: Datum, index: number) => void;
|
|
54
|
+
onmousedown: (event: Event & {
|
|
55
|
+
currentTarget: SVGPathElement;
|
|
56
|
+
}, datum: Datum, index: number) => void;
|
|
57
|
+
onmouseenter: (event: Event & {
|
|
58
|
+
currentTarget: SVGPathElement;
|
|
59
|
+
}, datum: Datum, index: number) => void;
|
|
60
|
+
onmousemove: (event: Event & {
|
|
61
|
+
currentTarget: SVGPathElement;
|
|
62
|
+
}, datum: Datum, index: number) => void;
|
|
63
|
+
onmouseleave: (event: Event & {
|
|
64
|
+
currentTarget: SVGPathElement;
|
|
65
|
+
}, datum: Datum, index: number) => void;
|
|
66
|
+
onmouseout: (event: Event & {
|
|
67
|
+
currentTarget: SVGPathElement;
|
|
68
|
+
}, datum: Datum, index: number) => void;
|
|
69
|
+
onmouseover: (event: Event & {
|
|
70
|
+
currentTarget: SVGPathElement;
|
|
71
|
+
}, datum: Datum, index: number) => void;
|
|
72
|
+
onpointercancel: (event: Event & {
|
|
73
|
+
currentTarget: SVGPathElement;
|
|
74
|
+
}, datum: Datum, index: number) => void;
|
|
75
|
+
onpointerdown: (event: Event & {
|
|
76
|
+
currentTarget: SVGPathElement;
|
|
77
|
+
}, datum: Datum, index: number) => void;
|
|
78
|
+
onpointerup: (event: Event & {
|
|
79
|
+
currentTarget: SVGPathElement;
|
|
80
|
+
}, datum: Datum, index: number) => void;
|
|
81
|
+
onpointerenter: (event: Event & {
|
|
82
|
+
currentTarget: SVGPathElement;
|
|
83
|
+
}, datum: Datum, index: number) => void;
|
|
84
|
+
onpointerleave: (event: Event & {
|
|
85
|
+
currentTarget: SVGPathElement;
|
|
86
|
+
}, datum: Datum, index: number) => void;
|
|
87
|
+
onpointermove: (event: Event & {
|
|
88
|
+
currentTarget: SVGPathElement;
|
|
89
|
+
}, datum: Datum, index: number) => void;
|
|
90
|
+
onpointerover: (event: Event & {
|
|
91
|
+
currentTarget: SVGPathElement;
|
|
92
|
+
}, datum: Datum, index: number) => void;
|
|
93
|
+
onpointerout: (event: Event & {
|
|
94
|
+
currentTarget: SVGPathElement;
|
|
95
|
+
}, datum: Datum, index: number) => void;
|
|
96
|
+
ondrag: (event: Event & {
|
|
97
|
+
currentTarget: SVGPathElement;
|
|
98
|
+
}, datum: Datum, index: number) => void;
|
|
99
|
+
ondrop: (event: Event & {
|
|
100
|
+
currentTarget: SVGPathElement;
|
|
101
|
+
}, datum: Datum, index: number) => void;
|
|
102
|
+
ondragstart: (event: Event & {
|
|
103
|
+
currentTarget: SVGPathElement;
|
|
104
|
+
}, datum: Datum, index: number) => void;
|
|
105
|
+
ondragenter: (event: Event & {
|
|
106
|
+
currentTarget: SVGPathElement;
|
|
107
|
+
}, datum: Datum, index: number) => void;
|
|
108
|
+
ondragleave: (event: Event & {
|
|
109
|
+
currentTarget: SVGPathElement;
|
|
110
|
+
}, datum: Datum, index: number) => void;
|
|
111
|
+
ondragover: (event: Event & {
|
|
112
|
+
currentTarget: SVGPathElement;
|
|
113
|
+
}, datum: Datum, index: number) => void;
|
|
114
|
+
ondragend: (event: Event & {
|
|
115
|
+
currentTarget: SVGPathElement;
|
|
116
|
+
}, datum: Datum, index: number) => void;
|
|
117
|
+
ontouchstart: (event: Event & {
|
|
118
|
+
currentTarget: SVGPathElement;
|
|
119
|
+
}, datum: Datum, index: number) => void;
|
|
120
|
+
ontouchmove: (event: Event & {
|
|
121
|
+
currentTarget: SVGPathElement;
|
|
122
|
+
}, datum: Datum, index: number) => void;
|
|
123
|
+
ontouchend: (event: Event & {
|
|
124
|
+
currentTarget: SVGPathElement;
|
|
125
|
+
}, datum: Datum, index: number) => void;
|
|
126
|
+
ontouchcancel: (event: Event & {
|
|
127
|
+
currentTarget: SVGPathElement;
|
|
128
|
+
}, datum: Datum, index: number) => void;
|
|
129
|
+
oncontextmenu: (event: Event & {
|
|
130
|
+
currentTarget: SVGPathElement;
|
|
131
|
+
}, datum: Datum, index: number) => void;
|
|
132
|
+
onwheel: (event: Event & {
|
|
133
|
+
currentTarget: SVGPathElement;
|
|
134
|
+
}, datum: Datum, index: number) => void;
|
|
64
135
|
class: string;
|
|
65
136
|
style: string;
|
|
66
137
|
cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
|
|
138
|
+
title: ConstantAccessor<string, Datum>;
|
|
67
139
|
}>, "fill" | "fillOpacity"> & {
|
|
140
|
+
/** the input data array; each element becomes one arrow */
|
|
68
141
|
data: Datum[];
|
|
142
|
+
/** controls the order of data before rendering */
|
|
69
143
|
sort?: ConstantAccessor<RawValue> | {
|
|
70
144
|
channel: "stroke" | "fill" | "x1" | "y1" | "x2" | "y2";
|
|
71
145
|
};
|
|
146
|
+
/** the starting horizontal position channel */
|
|
72
147
|
x1: ChannelAccessor<Datum>;
|
|
148
|
+
/** the starting vertical position channel */
|
|
73
149
|
y1: ChannelAccessor<Datum>;
|
|
150
|
+
/** the ending horizontal position channel */
|
|
74
151
|
x2: ChannelAccessor<Datum>;
|
|
152
|
+
/** the ending vertical position channel */
|
|
75
153
|
y2: ChannelAccessor<Datum>;
|
|
76
154
|
/**
|
|
77
155
|
* the bend angle, in degrees; defaults to 0°; true for 22.5°
|
|
@@ -97,6 +175,7 @@ declare function $$render<Datum extends DataRecord>(): {
|
|
|
97
175
|
* shorthand for the two insets
|
|
98
176
|
*/
|
|
99
177
|
inset?: ConstantAccessor<number, Datum>;
|
|
178
|
+
/** controls the sweep direction of the arrow arc; 1 or -1 */
|
|
100
179
|
sweep?: SweepOption;
|
|
101
180
|
};
|
|
102
181
|
exports: {};
|
|
@@ -104,7 +183,7 @@ declare function $$render<Datum extends DataRecord>(): {
|
|
|
104
183
|
slots: {};
|
|
105
184
|
events: {};
|
|
106
185
|
};
|
|
107
|
-
declare class __sveltets_Render<Datum
|
|
186
|
+
declare class __sveltets_Render<Datum = DataRecord | GeoJSON.GeoJsonObject> {
|
|
108
187
|
props(): ReturnType<typeof $$render<Datum>>['props'];
|
|
109
188
|
events(): ReturnType<typeof $$render<Datum>>['events'];
|
|
110
189
|
slots(): ReturnType<typeof $$render<Datum>>['slots'];
|
|
@@ -112,13 +191,13 @@ declare class __sveltets_Render<Datum extends DataRecord> {
|
|
|
112
191
|
exports(): {};
|
|
113
192
|
}
|
|
114
193
|
interface $$IsomorphicComponent {
|
|
115
|
-
new <Datum
|
|
194
|
+
new <Datum = DataRecord | GeoJSON.GeoJsonObject>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Datum>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Datum>['props']>, ReturnType<__sveltets_Render<Datum>['events']>, ReturnType<__sveltets_Render<Datum>['slots']>> & {
|
|
116
195
|
$$bindings?: ReturnType<__sveltets_Render<Datum>['bindings']>;
|
|
117
196
|
} & ReturnType<__sveltets_Render<Datum>['exports']>;
|
|
118
|
-
<Datum
|
|
197
|
+
<Datum = DataRecord | GeoJSON.GeoJsonObject>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
|
|
119
198
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
120
199
|
}
|
|
121
200
|
/** Creates arrows with customizable heads, angles, and bending */
|
|
122
201
|
declare const Arrow: $$IsomorphicComponent;
|
|
123
|
-
type Arrow<Datum
|
|
202
|
+
type Arrow<Datum = DataRecord | GeoJSON.GeoJsonObject> = InstanceType<typeof Arrow<Datum>>;
|
|
124
203
|
export default Arrow;
|
package/dist/marks/AxisX.svelte
CHANGED
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
RawValue,
|
|
11
11
|
ConstantAccessor,
|
|
12
12
|
FacetContext,
|
|
13
|
-
ChannelName
|
|
13
|
+
ChannelName,
|
|
14
|
+
TickFormatFunction,
|
|
15
|
+
DataRecord,
|
|
16
|
+
ScaledChannelName
|
|
14
17
|
} from '../types/index.js';
|
|
15
18
|
import type * as CSS from 'csstype';
|
|
16
19
|
import autoTimeFormat from '../helpers/autoTimeFormat.js';
|
|
@@ -22,24 +25,37 @@
|
|
|
22
25
|
|
|
23
26
|
interface AxisXMarkProps extends Omit<
|
|
24
27
|
BaseMarkProps<Datum>,
|
|
25
|
-
'fillOpacity' | 'paintOrder' | 'title' | 'href' | 'target'
|
|
28
|
+
'fillOpacity' | 'paintOrder' | 'title' | 'href' | 'target' | 'textAnchor'
|
|
26
29
|
> {
|
|
30
|
+
/** custom tick values to display on the axis */
|
|
27
31
|
data?: Datum[];
|
|
32
|
+
/** whether this axis was automatically added by the Plot component */
|
|
28
33
|
automatic?: boolean;
|
|
34
|
+
/** the axis title label; set to false or null to hide */
|
|
29
35
|
title?: string | false | null;
|
|
36
|
+
/** which edge of the plot the axis appears on */
|
|
30
37
|
anchor?: 'top' | 'bottom';
|
|
38
|
+
/** the interval between ticks, e.g. "day", "month", or a number */
|
|
31
39
|
interval?: string | number;
|
|
40
|
+
/** controls which facet edge displays this axis */
|
|
32
41
|
facetAnchor?: 'auto' | 'top-empty' | 'bottom-empty' | 'top' | 'bottom';
|
|
42
|
+
/** horizontal alignment of the axis title */
|
|
33
43
|
labelAnchor?: 'auto' | 'left' | 'center' | 'right';
|
|
44
|
+
/** the length of tick marks in pixels */
|
|
34
45
|
tickSize?: number;
|
|
46
|
+
/** font size for tick labels */
|
|
35
47
|
tickFontSize?: ConstantAccessor<number, Datum>;
|
|
48
|
+
/** font size for the axis title */
|
|
36
49
|
titleFontSize?: number;
|
|
50
|
+
/** spacing between tick marks and tick labels in pixels */
|
|
37
51
|
tickPadding?: number;
|
|
52
|
+
/** formatter for tick labels; can be "auto", an Intl format options object, or a custom function */
|
|
38
53
|
tickFormat?:
|
|
39
54
|
| 'auto'
|
|
40
55
|
| Intl.DateTimeFormatOptions
|
|
41
56
|
| Intl.NumberFormatOptions
|
|
42
|
-
|
|
|
57
|
+
| TickFormatFunction;
|
|
58
|
+
/** CSS class applied to each tick label */
|
|
43
59
|
tickClass?: ConstantAccessor<string, Datum>;
|
|
44
60
|
/** ticks is a shorthand for defining data, tickCount or interval */
|
|
45
61
|
ticks?: number | string | Datum[];
|
|
@@ -59,7 +75,7 @@
|
|
|
59
75
|
|
|
60
76
|
let markProps: AxisXMarkProps = $props();
|
|
61
77
|
|
|
62
|
-
const DEFAULTS
|
|
78
|
+
const DEFAULTS = {
|
|
63
79
|
tickSize: 6,
|
|
64
80
|
tickPadding: 3,
|
|
65
81
|
tickFontSize: 11,
|
|
@@ -74,7 +90,7 @@
|
|
|
74
90
|
const { ticks: magicTicks } = $derived({ ...DEFAULTS, ...markProps });
|
|
75
91
|
|
|
76
92
|
const {
|
|
77
|
-
data,
|
|
93
|
+
data = [] as Datum[],
|
|
78
94
|
automatic = false,
|
|
79
95
|
title,
|
|
80
96
|
anchor,
|
|
@@ -92,12 +108,12 @@
|
|
|
92
108
|
text = true,
|
|
93
109
|
...options
|
|
94
110
|
}: AxisXMarkProps = $derived({
|
|
95
|
-
data: Array.isArray(magicTicks) ? magicTicks : [],
|
|
111
|
+
data: (Array.isArray(magicTicks) ? magicTicks : []) as Datum[],
|
|
96
112
|
tickCount: typeof magicTicks === 'number' ? magicTicks : undefined,
|
|
97
113
|
interval: typeof magicTicks === 'string' ? magicTicks : undefined,
|
|
98
114
|
...DEFAULTS,
|
|
99
115
|
...markProps
|
|
100
|
-
});
|
|
116
|
+
} as AxisXMarkProps);
|
|
101
117
|
|
|
102
118
|
const plot = usePlot();
|
|
103
119
|
|
|
@@ -125,15 +141,14 @@
|
|
|
125
141
|
);
|
|
126
142
|
|
|
127
143
|
const useCompactNotation = $derived.by(() => {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const crossesZero = range[0] <= 0 && range[1] >= 0;
|
|
144
|
+
const numericDomain = plot.scales.x.domain.filter(
|
|
145
|
+
(d): d is number => typeof d === 'number' && Number.isFinite(d)
|
|
146
|
+
);
|
|
147
|
+
if (numericDomain.length < 2) return false;
|
|
148
|
+
const [min, max] = extent(numericDomain) as [number, number];
|
|
149
|
+
const crossesZero = min <= 0 && max >= 0;
|
|
135
150
|
if (crossesZero) return true;
|
|
136
|
-
const magnitudes =
|
|
151
|
+
const magnitudes = [min, max].map((d) =>
|
|
137
152
|
d === 0 ? -Infinity : Math.floor(Math.log10(Math.abs(d)))
|
|
138
153
|
);
|
|
139
154
|
return magnitudes[0] !== magnitudes[1];
|
|
@@ -145,7 +160,7 @@
|
|
|
145
160
|
typeof tickFmt === 'function'
|
|
146
161
|
? tickFmt
|
|
147
162
|
: plot.scales.x.type === 'band' || plot.scales.x.type === 'point'
|
|
148
|
-
? (d) => d
|
|
163
|
+
? (d: RawValue) => String(d)
|
|
149
164
|
: plot.scales.x.type === 'time'
|
|
150
165
|
? // time scale
|
|
151
166
|
typeof tickFmt === 'object'
|
|
@@ -159,9 +174,9 @@
|
|
|
159
174
|
Intl.NumberFormat(plot.options.locale, {
|
|
160
175
|
// use compact notation if range covers multiple magnitudes
|
|
161
176
|
...(useCompactNotation ? { notation: 'compact' } : {}),
|
|
162
|
-
...
|
|
177
|
+
...getPlotDefaults().numberFormat,
|
|
163
178
|
style: plot.options.x.percent ? 'percent' : 'decimal'
|
|
164
|
-
}).format(d)
|
|
179
|
+
}).format(d as number)
|
|
165
180
|
);
|
|
166
181
|
|
|
167
182
|
const optionsLabel = $derived(plot.options?.x?.label);
|
|
@@ -195,7 +210,7 @@
|
|
|
195
210
|
const useFacetAnchor = $derived(
|
|
196
211
|
facetAnchor !== 'auto' ? facetAnchor : anchor === 'bottom' ? 'bottom-empty' : 'top-empty'
|
|
197
212
|
);
|
|
198
|
-
const
|
|
213
|
+
const showFacetAnchoredAxis = $derived(
|
|
199
214
|
useFacetAnchor === 'top'
|
|
200
215
|
? top
|
|
201
216
|
: useFacetAnchor === 'bottom'
|
|
@@ -204,19 +219,20 @@
|
|
|
204
219
|
? topEmpty
|
|
205
220
|
: bottomEmpty
|
|
206
221
|
);
|
|
222
|
+
const showAxis = $derived(showFacetAnchoredAxis);
|
|
207
223
|
</script>
|
|
208
224
|
|
|
209
225
|
<Mark
|
|
210
226
|
type="axisX"
|
|
211
227
|
data={data.length ? data.map((tick) => ({ __x: tick })) : []}
|
|
212
228
|
channels={['x']}
|
|
213
|
-
{...options}
|
|
229
|
+
{...options as any}
|
|
214
230
|
x="__x"
|
|
215
231
|
{automatic}>
|
|
216
232
|
{#if left && top && useTitle}
|
|
217
233
|
<text
|
|
218
234
|
style={resolveScaledStyles(
|
|
219
|
-
|
|
235
|
+
{} as DataRecord,
|
|
220
236
|
{
|
|
221
237
|
opacity: 0.8,
|
|
222
238
|
...options,
|
|
@@ -229,7 +245,7 @@
|
|
|
229
245
|
? 'middle'
|
|
230
246
|
: 'start'
|
|
231
247
|
},
|
|
232
|
-
{},
|
|
248
|
+
{} as Record<ScaledChannelName, boolean>,
|
|
233
249
|
plot,
|
|
234
250
|
'fill'
|
|
235
251
|
)}
|
|
@@ -245,12 +261,11 @@
|
|
|
245
261
|
<BaseAxisX
|
|
246
262
|
{anchor}
|
|
247
263
|
class={className}
|
|
248
|
-
{
|
|
249
|
-
options={{ ...options, ...plot.options.x }}
|
|
264
|
+
options={{ ...(options as any), ...plot.options.x }}
|
|
250
265
|
{plot}
|
|
251
266
|
{text}
|
|
252
|
-
{tickClass}
|
|
253
|
-
{tickFontSize}
|
|
267
|
+
tickClass={tickClass as ConstantAccessor<string>}
|
|
268
|
+
tickFontSize={tickFontSize as ConstantAccessor<number>}
|
|
254
269
|
{tickPadding}
|
|
255
270
|
{ticks}
|
|
256
271
|
{tickSize}
|
|
@@ -258,8 +273,8 @@
|
|
|
258
273
|
marginTop={plot.options.marginTop}
|
|
259
274
|
scaleFn={plot.scales.x.fn}
|
|
260
275
|
scaleType={plot.scales.x.type}
|
|
261
|
-
tickFormat={useTickFormat}
|
|
262
|
-
title={useTitle} />
|
|
276
|
+
tickFormat={useTickFormat as TickFormatFunction}
|
|
277
|
+
title={useTitle as string | null} />
|
|
263
278
|
{/if}
|
|
264
279
|
</Mark>
|
|
265
280
|
|