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
|
@@ -7,10 +7,20 @@ declare function $$render<Datum = RawValue>(): {
|
|
|
7
7
|
fy: ChannelAccessor<Datum>;
|
|
8
8
|
dx: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
9
9
|
dy: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
10
|
-
dodgeX: import("../transforms/dodge").DodgeXOptions;
|
|
11
|
-
dodgeY: import("../transforms/dodge").DodgeYOptions;
|
|
10
|
+
dodgeX: import("../transforms/dodge.js").DodgeXOptions;
|
|
11
|
+
dodgeY: import("../transforms/dodge.js").DodgeYOptions;
|
|
12
12
|
fill: ChannelAccessor<Datum>;
|
|
13
13
|
fillOpacity: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
14
|
+
fontFamily: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
|
|
15
|
+
fontSize: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontSize<number>, Datum>;
|
|
16
|
+
fontStyle: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
|
|
17
|
+
fontVariant: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
|
|
18
|
+
fontWeight: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
|
|
19
|
+
letterSpacing: import("../types/index.js").ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
|
|
20
|
+
wordSpacing: import("../types/index.js").ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
|
|
21
|
+
textAnchor: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
|
|
22
|
+
textTransform: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
|
|
23
|
+
textDecoration: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
|
|
14
24
|
sort: ((a: RawValue, b: RawValue) => number) | {
|
|
15
25
|
channel: string;
|
|
16
26
|
order?: "ascending" | "descending";
|
|
@@ -24,49 +34,115 @@ declare function $$render<Datum = RawValue>(): {
|
|
|
24
34
|
opacity: ChannelAccessor<Datum>;
|
|
25
35
|
strokeDasharray: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
26
36
|
strokeDashoffset: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
37
|
+
blend: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
27
38
|
mixBlendMode: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
28
39
|
clipPath: string;
|
|
29
40
|
mask: string;
|
|
30
41
|
imageFilter: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
31
42
|
shapeRendering: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
|
|
32
43
|
paintOrder: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
33
|
-
onclick:
|
|
34
|
-
|
|
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
|
-
|
|
44
|
+
onclick: (event: Event & {
|
|
45
|
+
currentTarget: SVGPathElement;
|
|
46
|
+
}, datum: Datum, index: number) => void;
|
|
47
|
+
ondblclick: (event: Event & {
|
|
48
|
+
currentTarget: SVGPathElement;
|
|
49
|
+
}, datum: Datum, index: number) => void;
|
|
50
|
+
onmouseup: (event: Event & {
|
|
51
|
+
currentTarget: SVGPathElement;
|
|
52
|
+
}, datum: Datum, index: number) => void;
|
|
53
|
+
onmousedown: (event: Event & {
|
|
54
|
+
currentTarget: SVGPathElement;
|
|
55
|
+
}, datum: Datum, index: number) => void;
|
|
56
|
+
onmouseenter: (event: Event & {
|
|
57
|
+
currentTarget: SVGPathElement;
|
|
58
|
+
}, datum: Datum, index: number) => void;
|
|
59
|
+
onmousemove: (event: Event & {
|
|
60
|
+
currentTarget: SVGPathElement;
|
|
61
|
+
}, datum: Datum, index: number) => void;
|
|
62
|
+
onmouseleave: (event: Event & {
|
|
63
|
+
currentTarget: SVGPathElement;
|
|
64
|
+
}, datum: Datum, index: number) => void;
|
|
65
|
+
onmouseout: (event: Event & {
|
|
66
|
+
currentTarget: SVGPathElement;
|
|
67
|
+
}, datum: Datum, index: number) => void;
|
|
68
|
+
onmouseover: (event: Event & {
|
|
69
|
+
currentTarget: SVGPathElement;
|
|
70
|
+
}, datum: Datum, index: number) => void;
|
|
71
|
+
onpointercancel: (event: Event & {
|
|
72
|
+
currentTarget: SVGPathElement;
|
|
73
|
+
}, datum: Datum, index: number) => void;
|
|
74
|
+
onpointerdown: (event: Event & {
|
|
75
|
+
currentTarget: SVGPathElement;
|
|
76
|
+
}, datum: Datum, index: number) => void;
|
|
77
|
+
onpointerup: (event: Event & {
|
|
78
|
+
currentTarget: SVGPathElement;
|
|
79
|
+
}, datum: Datum, index: number) => void;
|
|
80
|
+
onpointerenter: (event: Event & {
|
|
81
|
+
currentTarget: SVGPathElement;
|
|
82
|
+
}, datum: Datum, index: number) => void;
|
|
83
|
+
onpointerleave: (event: Event & {
|
|
84
|
+
currentTarget: SVGPathElement;
|
|
85
|
+
}, datum: Datum, index: number) => void;
|
|
86
|
+
onpointermove: (event: Event & {
|
|
87
|
+
currentTarget: SVGPathElement;
|
|
88
|
+
}, datum: Datum, index: number) => void;
|
|
89
|
+
onpointerover: (event: Event & {
|
|
90
|
+
currentTarget: SVGPathElement;
|
|
91
|
+
}, datum: Datum, index: number) => void;
|
|
92
|
+
onpointerout: (event: Event & {
|
|
93
|
+
currentTarget: SVGPathElement;
|
|
94
|
+
}, datum: Datum, index: number) => void;
|
|
95
|
+
ondrag: (event: Event & {
|
|
96
|
+
currentTarget: SVGPathElement;
|
|
97
|
+
}, datum: Datum, index: number) => void;
|
|
98
|
+
ondrop: (event: Event & {
|
|
99
|
+
currentTarget: SVGPathElement;
|
|
100
|
+
}, datum: Datum, index: number) => void;
|
|
101
|
+
ondragstart: (event: Event & {
|
|
102
|
+
currentTarget: SVGPathElement;
|
|
103
|
+
}, datum: Datum, index: number) => void;
|
|
104
|
+
ondragenter: (event: Event & {
|
|
105
|
+
currentTarget: SVGPathElement;
|
|
106
|
+
}, datum: Datum, index: number) => void;
|
|
107
|
+
ondragleave: (event: Event & {
|
|
108
|
+
currentTarget: SVGPathElement;
|
|
109
|
+
}, datum: Datum, index: number) => void;
|
|
110
|
+
ondragover: (event: Event & {
|
|
111
|
+
currentTarget: SVGPathElement;
|
|
112
|
+
}, datum: Datum, index: number) => void;
|
|
113
|
+
ondragend: (event: Event & {
|
|
114
|
+
currentTarget: SVGPathElement;
|
|
115
|
+
}, datum: Datum, index: number) => void;
|
|
116
|
+
ontouchstart: (event: Event & {
|
|
117
|
+
currentTarget: SVGPathElement;
|
|
118
|
+
}, datum: Datum, index: number) => void;
|
|
119
|
+
ontouchmove: (event: Event & {
|
|
120
|
+
currentTarget: SVGPathElement;
|
|
121
|
+
}, datum: Datum, index: number) => void;
|
|
122
|
+
ontouchend: (event: Event & {
|
|
123
|
+
currentTarget: SVGPathElement;
|
|
124
|
+
}, datum: Datum, index: number) => void;
|
|
125
|
+
ontouchcancel: (event: Event & {
|
|
126
|
+
currentTarget: SVGPathElement;
|
|
127
|
+
}, datum: Datum, index: number) => void;
|
|
128
|
+
oncontextmenu: (event: Event & {
|
|
129
|
+
currentTarget: SVGPathElement;
|
|
130
|
+
}, datum: Datum, index: number) => void;
|
|
131
|
+
onwheel: (event: Event & {
|
|
132
|
+
currentTarget: SVGPathElement;
|
|
133
|
+
}, datum: Datum, index: number) => void;
|
|
63
134
|
class: string;
|
|
64
135
|
style: string;
|
|
65
136
|
cursor: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Datum>;
|
|
137
|
+
title: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
66
138
|
}>, "fill" | "fillOpacity"> & {
|
|
139
|
+
/** custom values at which to draw vertical gridlines */
|
|
67
140
|
data?: Datum[];
|
|
141
|
+
/** whether these gridlines were automatically added by the Plot component */
|
|
68
142
|
automatic?: boolean;
|
|
143
|
+
/** the starting vertical position of the gridline */
|
|
69
144
|
y1?: ChannelAccessor<Datum>;
|
|
145
|
+
/** the ending vertical position of the gridline */
|
|
70
146
|
y2?: ChannelAccessor<Datum>;
|
|
71
147
|
};
|
|
72
148
|
exports: {};
|
package/dist/marks/GridY.svelte
CHANGED
|
@@ -3,13 +3,23 @@
|
|
|
3
3
|
-->
|
|
4
4
|
<script lang="ts" generics="Datum = RawValue">
|
|
5
5
|
interface GridYMarkProps extends Omit<BaseMarkProps<Datum>, 'fill' | 'fillOpacity'> {
|
|
6
|
+
/** custom values at which to draw horizontal gridlines */
|
|
6
7
|
data?: Datum[];
|
|
8
|
+
/** whether these gridlines were automatically added by the Plot component */
|
|
7
9
|
automatic?: boolean;
|
|
10
|
+
/** the starting horizontal position of the gridline */
|
|
8
11
|
x1?: ChannelAccessor<Datum>;
|
|
12
|
+
/** the ending horizontal position of the gridline */
|
|
9
13
|
x2?: ChannelAccessor<Datum>;
|
|
10
14
|
}
|
|
11
15
|
import Mark from '../Mark.svelte';
|
|
12
|
-
import type {
|
|
16
|
+
import type {
|
|
17
|
+
BaseMarkProps,
|
|
18
|
+
RawValue,
|
|
19
|
+
DataRecord,
|
|
20
|
+
ChannelAccessor,
|
|
21
|
+
ScaledDataRecord
|
|
22
|
+
} from '../types/index.js';
|
|
13
23
|
import { resolveChannel, resolveProp, resolveStyles } from '../helpers/resolve.js';
|
|
14
24
|
import { autoTicks } from '../helpers/autoTicks.js';
|
|
15
25
|
import { testFilter } from '../helpers/index.js';
|
|
@@ -19,9 +29,12 @@
|
|
|
19
29
|
|
|
20
30
|
let markProps: GridYMarkProps = $props();
|
|
21
31
|
|
|
32
|
+
const _plotDefaults = getPlotDefaults();
|
|
33
|
+
const _grid = _plotDefaults.grid;
|
|
34
|
+
const _gridY = _plotDefaults.gridY;
|
|
22
35
|
const DEFAULTS = {
|
|
23
|
-
...
|
|
24
|
-
...
|
|
36
|
+
...(_grid != null && _grid !== true ? _grid : {}),
|
|
37
|
+
...(_gridY != null && _gridY !== true ? _gridY : {})
|
|
25
38
|
};
|
|
26
39
|
|
|
27
40
|
const {
|
|
@@ -42,7 +55,7 @@
|
|
|
42
55
|
const ticks: RawValue[] = $derived(
|
|
43
56
|
data.length > 0
|
|
44
57
|
? // use custom tick values if user passed any as prop
|
|
45
|
-
data
|
|
58
|
+
(data as RawValue[])
|
|
46
59
|
: // use custom scale tick values if user passed any as plot scale option
|
|
47
60
|
autoTicks(
|
|
48
61
|
plot.scales.y.type,
|
|
@@ -57,31 +70,33 @@
|
|
|
57
70
|
|
|
58
71
|
<Mark
|
|
59
72
|
type="gridY"
|
|
60
|
-
data={data.length ? data.map((tick) => ({ [RAW_VALUE]: tick })) : []}
|
|
73
|
+
data={data.length ? data.map((tick) => ({ [RAW_VALUE]: tick as RawValue })) : []}
|
|
61
74
|
channels={['x1', 'x2', 'y', 'stroke', 'strokeOpacity']}
|
|
62
|
-
{...{ ...options, y: RAW_VALUE }}
|
|
75
|
+
{...{ ...options, y: RAW_VALUE } as any}
|
|
63
76
|
{automatic}>
|
|
64
77
|
{#snippet children({ usedScales })}
|
|
65
78
|
<g class="grid-y">
|
|
66
79
|
{#each ticks as tick, t (t)}
|
|
67
|
-
{#if testFilter(tick, options)}
|
|
80
|
+
{#if testFilter(tick as any, options as any)}
|
|
68
81
|
{@const y =
|
|
69
82
|
plot.scales.y.fn(tick) +
|
|
70
83
|
(plot.scales.y.type === 'band' ? plot.scales.y.fn.bandwidth() * 0.5 : 0)}
|
|
71
|
-
{@const x1_ = resolveChannel('x1', tick, options)}
|
|
72
|
-
{@const x2_ = resolveChannel('x2', tick, options)}
|
|
84
|
+
{@const x1_ = resolveChannel('x1', tick as any, options as any)}
|
|
85
|
+
{@const x2_ = resolveChannel('x2', tick as any, options as any)}
|
|
73
86
|
{@const x1 =
|
|
74
|
-
options.x1 != null
|
|
87
|
+
options.x1 != null && x1_ != null
|
|
88
|
+
? plot.scales.x.fn(x1_)
|
|
89
|
+
: plot.options.marginLeft}
|
|
75
90
|
{@const x2 =
|
|
76
|
-
options.x2 != null
|
|
91
|
+
options.x2 != null && x2_ != null
|
|
77
92
|
? plot.scales.x.fn(x2_)
|
|
78
93
|
: plot.options.marginLeft + plot.facetWidth}
|
|
79
|
-
{@const dx =
|
|
80
|
-
{@const dy =
|
|
94
|
+
{@const dx = resolveProp(options.dx, tick as any, 0) ?? 0}
|
|
95
|
+
{@const dy = resolveProp(options.dy, tick as any, 0) ?? 0}
|
|
81
96
|
{@const [style, styleClass] = resolveStyles(
|
|
82
97
|
plot,
|
|
83
|
-
{ datum: { [RAW_VALUE]: tick } },
|
|
84
|
-
options,
|
|
98
|
+
{ datum: { [RAW_VALUE]: tick } } as unknown as ScaledDataRecord,
|
|
99
|
+
options as any,
|
|
85
100
|
'stroke',
|
|
86
101
|
usedScales,
|
|
87
102
|
true
|
|
@@ -7,10 +7,20 @@ declare function $$render<Datum = RawValue>(): {
|
|
|
7
7
|
fy: ChannelAccessor<Datum>;
|
|
8
8
|
dx: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
9
9
|
dy: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
10
|
-
dodgeX: import("../transforms/dodge").DodgeXOptions;
|
|
11
|
-
dodgeY: import("../transforms/dodge").DodgeYOptions;
|
|
10
|
+
dodgeX: import("../transforms/dodge.js").DodgeXOptions;
|
|
11
|
+
dodgeY: import("../transforms/dodge.js").DodgeYOptions;
|
|
12
12
|
fill: ChannelAccessor<Datum>;
|
|
13
13
|
fillOpacity: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
14
|
+
fontFamily: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
|
|
15
|
+
fontSize: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontSize<number>, Datum>;
|
|
16
|
+
fontStyle: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
|
|
17
|
+
fontVariant: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
|
|
18
|
+
fontWeight: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
|
|
19
|
+
letterSpacing: import("../types/index.js").ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
|
|
20
|
+
wordSpacing: import("../types/index.js").ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
|
|
21
|
+
textAnchor: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
|
|
22
|
+
textTransform: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
|
|
23
|
+
textDecoration: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
|
|
14
24
|
sort: ((a: RawValue, b: RawValue) => number) | {
|
|
15
25
|
channel: string;
|
|
16
26
|
order?: "ascending" | "descending";
|
|
@@ -24,49 +34,115 @@ declare function $$render<Datum = RawValue>(): {
|
|
|
24
34
|
opacity: ChannelAccessor<Datum>;
|
|
25
35
|
strokeDasharray: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
26
36
|
strokeDashoffset: import("../types/index.js").ConstantAccessor<number, Datum>;
|
|
37
|
+
blend: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
27
38
|
mixBlendMode: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
|
|
28
39
|
clipPath: string;
|
|
29
40
|
mask: string;
|
|
30
41
|
imageFilter: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
31
42
|
shapeRendering: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
|
|
32
43
|
paintOrder: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
33
|
-
onclick:
|
|
34
|
-
|
|
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
|
-
|
|
44
|
+
onclick: (event: Event & {
|
|
45
|
+
currentTarget: SVGPathElement;
|
|
46
|
+
}, datum: Datum, index: number) => void;
|
|
47
|
+
ondblclick: (event: Event & {
|
|
48
|
+
currentTarget: SVGPathElement;
|
|
49
|
+
}, datum: Datum, index: number) => void;
|
|
50
|
+
onmouseup: (event: Event & {
|
|
51
|
+
currentTarget: SVGPathElement;
|
|
52
|
+
}, datum: Datum, index: number) => void;
|
|
53
|
+
onmousedown: (event: Event & {
|
|
54
|
+
currentTarget: SVGPathElement;
|
|
55
|
+
}, datum: Datum, index: number) => void;
|
|
56
|
+
onmouseenter: (event: Event & {
|
|
57
|
+
currentTarget: SVGPathElement;
|
|
58
|
+
}, datum: Datum, index: number) => void;
|
|
59
|
+
onmousemove: (event: Event & {
|
|
60
|
+
currentTarget: SVGPathElement;
|
|
61
|
+
}, datum: Datum, index: number) => void;
|
|
62
|
+
onmouseleave: (event: Event & {
|
|
63
|
+
currentTarget: SVGPathElement;
|
|
64
|
+
}, datum: Datum, index: number) => void;
|
|
65
|
+
onmouseout: (event: Event & {
|
|
66
|
+
currentTarget: SVGPathElement;
|
|
67
|
+
}, datum: Datum, index: number) => void;
|
|
68
|
+
onmouseover: (event: Event & {
|
|
69
|
+
currentTarget: SVGPathElement;
|
|
70
|
+
}, datum: Datum, index: number) => void;
|
|
71
|
+
onpointercancel: (event: Event & {
|
|
72
|
+
currentTarget: SVGPathElement;
|
|
73
|
+
}, datum: Datum, index: number) => void;
|
|
74
|
+
onpointerdown: (event: Event & {
|
|
75
|
+
currentTarget: SVGPathElement;
|
|
76
|
+
}, datum: Datum, index: number) => void;
|
|
77
|
+
onpointerup: (event: Event & {
|
|
78
|
+
currentTarget: SVGPathElement;
|
|
79
|
+
}, datum: Datum, index: number) => void;
|
|
80
|
+
onpointerenter: (event: Event & {
|
|
81
|
+
currentTarget: SVGPathElement;
|
|
82
|
+
}, datum: Datum, index: number) => void;
|
|
83
|
+
onpointerleave: (event: Event & {
|
|
84
|
+
currentTarget: SVGPathElement;
|
|
85
|
+
}, datum: Datum, index: number) => void;
|
|
86
|
+
onpointermove: (event: Event & {
|
|
87
|
+
currentTarget: SVGPathElement;
|
|
88
|
+
}, datum: Datum, index: number) => void;
|
|
89
|
+
onpointerover: (event: Event & {
|
|
90
|
+
currentTarget: SVGPathElement;
|
|
91
|
+
}, datum: Datum, index: number) => void;
|
|
92
|
+
onpointerout: (event: Event & {
|
|
93
|
+
currentTarget: SVGPathElement;
|
|
94
|
+
}, datum: Datum, index: number) => void;
|
|
95
|
+
ondrag: (event: Event & {
|
|
96
|
+
currentTarget: SVGPathElement;
|
|
97
|
+
}, datum: Datum, index: number) => void;
|
|
98
|
+
ondrop: (event: Event & {
|
|
99
|
+
currentTarget: SVGPathElement;
|
|
100
|
+
}, datum: Datum, index: number) => void;
|
|
101
|
+
ondragstart: (event: Event & {
|
|
102
|
+
currentTarget: SVGPathElement;
|
|
103
|
+
}, datum: Datum, index: number) => void;
|
|
104
|
+
ondragenter: (event: Event & {
|
|
105
|
+
currentTarget: SVGPathElement;
|
|
106
|
+
}, datum: Datum, index: number) => void;
|
|
107
|
+
ondragleave: (event: Event & {
|
|
108
|
+
currentTarget: SVGPathElement;
|
|
109
|
+
}, datum: Datum, index: number) => void;
|
|
110
|
+
ondragover: (event: Event & {
|
|
111
|
+
currentTarget: SVGPathElement;
|
|
112
|
+
}, datum: Datum, index: number) => void;
|
|
113
|
+
ondragend: (event: Event & {
|
|
114
|
+
currentTarget: SVGPathElement;
|
|
115
|
+
}, datum: Datum, index: number) => void;
|
|
116
|
+
ontouchstart: (event: Event & {
|
|
117
|
+
currentTarget: SVGPathElement;
|
|
118
|
+
}, datum: Datum, index: number) => void;
|
|
119
|
+
ontouchmove: (event: Event & {
|
|
120
|
+
currentTarget: SVGPathElement;
|
|
121
|
+
}, datum: Datum, index: number) => void;
|
|
122
|
+
ontouchend: (event: Event & {
|
|
123
|
+
currentTarget: SVGPathElement;
|
|
124
|
+
}, datum: Datum, index: number) => void;
|
|
125
|
+
ontouchcancel: (event: Event & {
|
|
126
|
+
currentTarget: SVGPathElement;
|
|
127
|
+
}, datum: Datum, index: number) => void;
|
|
128
|
+
oncontextmenu: (event: Event & {
|
|
129
|
+
currentTarget: SVGPathElement;
|
|
130
|
+
}, datum: Datum, index: number) => void;
|
|
131
|
+
onwheel: (event: Event & {
|
|
132
|
+
currentTarget: SVGPathElement;
|
|
133
|
+
}, datum: Datum, index: number) => void;
|
|
63
134
|
class: string;
|
|
64
135
|
style: string;
|
|
65
136
|
cursor: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Datum>;
|
|
137
|
+
title: import("../types/index.js").ConstantAccessor<string, Datum>;
|
|
66
138
|
}>, "fill" | "fillOpacity"> & {
|
|
139
|
+
/** custom values at which to draw horizontal gridlines */
|
|
67
140
|
data?: Datum[];
|
|
141
|
+
/** whether these gridlines were automatically added by the Plot component */
|
|
68
142
|
automatic?: boolean;
|
|
143
|
+
/** the starting horizontal position of the gridline */
|
|
69
144
|
x1?: ChannelAccessor<Datum>;
|
|
145
|
+
/** the ending horizontal position of the gridline */
|
|
70
146
|
x2?: ChannelAccessor<Datum>;
|
|
71
147
|
};
|
|
72
148
|
exports: {};
|
|
@@ -4,12 +4,19 @@
|
|
|
4
4
|
-->
|
|
5
5
|
<script lang="ts" generics="Datum = DataRow">
|
|
6
6
|
interface HTMLTooltipMarkProps {
|
|
7
|
+
/** the input data array */
|
|
7
8
|
data: Datum[];
|
|
9
|
+
/** the horizontal position channel; bound to the x scale */
|
|
8
10
|
x?: ChannelAccessor<Datum>;
|
|
11
|
+
/** the vertical position channel; bound to the y scale */
|
|
9
12
|
y?: ChannelAccessor<Datum>;
|
|
13
|
+
/** the radius channel, used for positioning with dot-based data */
|
|
10
14
|
r?: ChannelAccessor<Datum>;
|
|
15
|
+
/** the horizontal facet channel */
|
|
11
16
|
fx?: ChannelAccessor<Datum>;
|
|
17
|
+
/** the vertical facet channel */
|
|
12
18
|
fy?: ChannelAccessor<Datum>;
|
|
19
|
+
/** snippet for rendering the tooltip content; receives the nearest datum */
|
|
13
20
|
children: Snippet<[{ datum: Datum }]>;
|
|
14
21
|
}
|
|
15
22
|
import { type Snippet } from 'svelte';
|
|
@@ -20,12 +27,14 @@
|
|
|
20
27
|
import { quadtree } from 'd3-quadtree';
|
|
21
28
|
import { projectX, projectY } from '../helpers/scales.js';
|
|
22
29
|
import { groupFacetsAndZ } from '../helpers/group.js';
|
|
30
|
+
import { detectFacet, facetKey } from '../helpers/facets.js';
|
|
31
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
23
32
|
|
|
24
33
|
const plot = usePlot();
|
|
25
34
|
|
|
26
35
|
let { data, x, y, r, fx, fy, children }: HTMLTooltipMarkProps = $props();
|
|
27
36
|
|
|
28
|
-
let datum = $state(false);
|
|
37
|
+
let datum = $state<Datum | false>(false);
|
|
29
38
|
let tooltipX = $state();
|
|
30
39
|
let tooltipY = $state();
|
|
31
40
|
|
|
@@ -33,21 +42,19 @@
|
|
|
33
42
|
let facetOffsetY = $state(0);
|
|
34
43
|
|
|
35
44
|
function onPointerMove(evt: MouseEvent) {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const facetIndex = +(facetEl?.dataset?.facet ?? 0);
|
|
42
|
-
const facetRect = (facetEl?.firstChild ?? plot.body).getBoundingClientRect();
|
|
45
|
+
const { fxValue, fyValue, offsetX, offsetY } = detectFacet(evt, plot);
|
|
46
|
+
const bodyRect = plot.body.getBoundingClientRect();
|
|
47
|
+
|
|
48
|
+
facetOffsetX = offsetX;
|
|
49
|
+
facetOffsetY = offsetY;
|
|
43
50
|
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
const relativeX = evt.clientX - bodyRect.left - offsetX;
|
|
52
|
+
const relativeY = evt.clientY - bodyRect.top - offsetY;
|
|
46
53
|
|
|
47
|
-
const
|
|
48
|
-
const
|
|
54
|
+
const key = facetKey(fxValue, fyValue);
|
|
55
|
+
const facetTrees = treeMap.get(key) ?? [];
|
|
56
|
+
const pt = facetTrees.length > 0 ? facetTrees[0].find(relativeX, relativeY, 25) : null;
|
|
49
57
|
|
|
50
|
-
const pt = trees[facetIndex].find(relativeX, relativeY, 25);
|
|
51
58
|
if (pt) {
|
|
52
59
|
tooltipX = resolveChannel('x', pt, { x, y, r });
|
|
53
60
|
tooltipY = resolveChannel('y', pt, { x, y, r });
|
|
@@ -66,32 +73,35 @@
|
|
|
66
73
|
plot.body?.addEventListener('pointermove', onPointerMove);
|
|
67
74
|
|
|
68
75
|
return () => {
|
|
69
|
-
plot.body?.removeEventListener('
|
|
76
|
+
plot.body?.removeEventListener('pointerleave', onPointerLeave);
|
|
70
77
|
plot.body?.removeEventListener('pointermove', onPointerMove);
|
|
71
78
|
};
|
|
72
79
|
});
|
|
73
80
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
groupFacetsAndZ(data, { fx, fy }, (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
quadtree()
|
|
81
|
+
const treeMap = $derived.by(() => {
|
|
82
|
+
const map = new SvelteMap<string, ReturnType<typeof quadtree<Datum>>[]>();
|
|
83
|
+
groupFacetsAndZ(data, { fx, fy }, (items) => {
|
|
84
|
+
if (!items.length) return;
|
|
85
|
+
const fxVal = fx ? resolveChannel('fx', items[0], { fx }) : true;
|
|
86
|
+
const fyVal = fy ? resolveChannel('fy', items[0], { fy }) : true;
|
|
87
|
+
const key = facetKey(fxVal, fyVal);
|
|
88
|
+
const tree = quadtree<Datum>()
|
|
83
89
|
.x((d) => projectX('x', plot.scales, resolveChannel('x', d, { x, y, r })))
|
|
84
90
|
.y((d) => projectY('y', plot.scales, resolveChannel('y', d, { x, y, r })))
|
|
85
|
-
.addAll(items)
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
.addAll(items);
|
|
92
|
+
const existing = map.get(key) ?? [];
|
|
93
|
+
existing.push(tree);
|
|
94
|
+
map.set(key, existing);
|
|
95
|
+
});
|
|
96
|
+
return map;
|
|
97
|
+
});
|
|
88
98
|
</script>
|
|
89
99
|
|
|
90
100
|
<div
|
|
91
101
|
class={['svelteplot-tooltip', { hide: !datum }]}
|
|
92
102
|
style:left="{tooltipX ? facetOffsetX + projectX('x', plot.scales, tooltipX) : 0}px"
|
|
93
103
|
style:top="{tooltipY ? facetOffsetY + projectY('y', plot.scales, tooltipY) : 0}px">
|
|
94
|
-
{@render children({ datum })}
|
|
104
|
+
{@render children({ datum: datum as Datum })}
|
|
95
105
|
</div>
|
|
96
106
|
|
|
97
107
|
<style>
|
|
@@ -2,12 +2,19 @@ import { type Snippet } from 'svelte';
|
|
|
2
2
|
import type { ChannelAccessor, DataRow } from '../types/index.js';
|
|
3
3
|
declare function $$render<Datum = DataRow>(): {
|
|
4
4
|
props: {
|
|
5
|
+
/** the input data array */
|
|
5
6
|
data: Datum[];
|
|
7
|
+
/** the horizontal position channel; bound to the x scale */
|
|
6
8
|
x?: ChannelAccessor<Datum>;
|
|
9
|
+
/** the vertical position channel; bound to the y scale */
|
|
7
10
|
y?: ChannelAccessor<Datum>;
|
|
11
|
+
/** the radius channel, used for positioning with dot-based data */
|
|
8
12
|
r?: ChannelAccessor<Datum>;
|
|
13
|
+
/** the horizontal facet channel */
|
|
9
14
|
fx?: ChannelAccessor<Datum>;
|
|
15
|
+
/** the vertical facet channel */
|
|
10
16
|
fy?: ChannelAccessor<Datum>;
|
|
17
|
+
/** snippet for rendering the tooltip content; receives the nearest datum */
|
|
11
18
|
children: Snippet<[{
|
|
12
19
|
datum: Datum;
|
|
13
20
|
}]>;
|