svelteplot 0.4.4 → 0.4.5-pr-207.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.d.ts +2 -1
- package/dist/core/Plot.svelte +1 -0
- package/dist/helpers/colors.d.ts +1 -1
- package/dist/helpers/index.d.ts +2 -2
- package/dist/helpers/resolve.js +1 -1
- package/dist/helpers/scales.d.ts +1 -1
- package/dist/helpers/typeChecks.d.ts +4 -4
- package/dist/marks/Area.svelte.d.ts +2 -1
- package/dist/marks/AreaX.svelte.d.ts +4 -2
- package/dist/marks/AreaY.svelte +2 -1
- package/dist/marks/AreaY.svelte.d.ts +4 -2
- package/dist/marks/Arrow.svelte.d.ts +2 -1
- package/dist/marks/AxisX.svelte +5 -1
- package/dist/marks/AxisX.svelte.d.ts +11 -7
- package/dist/marks/AxisY.svelte +3 -2
- package/dist/marks/AxisY.svelte.d.ts +9 -7
- package/dist/marks/BarX.svelte.d.ts +3 -2
- package/dist/marks/BarY.svelte.d.ts +2 -1
- package/dist/marks/BollingerX.svelte.d.ts +2 -73
- package/dist/marks/BollingerY.svelte.d.ts +2 -73
- package/dist/marks/Cell.svelte.d.ts +2 -1
- package/dist/marks/ColorLegend.svelte +1 -1
- package/dist/marks/CustomMark.svelte.d.ts +2 -80
- package/dist/marks/DifferenceY.svelte.d.ts +7 -66
- package/dist/marks/Dot.svelte.d.ts +2 -1
- package/dist/marks/DotX.svelte.d.ts +2 -1
- package/dist/marks/DotY.svelte.d.ts +2 -1
- package/dist/marks/Geo.svelte.d.ts +2 -1
- package/dist/marks/GridX.svelte.d.ts +2 -1
- package/dist/marks/GridY.svelte.d.ts +2 -1
- package/dist/marks/Line.svelte.d.ts +4 -3
- package/dist/marks/LineX.svelte.d.ts +4 -2
- package/dist/marks/LineY.svelte.d.ts +4 -2
- package/dist/marks/Link.svelte.d.ts +2 -1
- package/dist/marks/Rect.svelte.d.ts +2 -1
- package/dist/marks/RuleX.svelte.d.ts +2 -1
- package/dist/marks/RuleY.svelte.d.ts +2 -1
- package/dist/marks/Spike.svelte.d.ts +2 -1
- package/dist/marks/Text.svelte.d.ts +2 -1
- package/dist/marks/TickX.svelte.d.ts +2 -1
- package/dist/marks/TickY.svelte.d.ts +2 -1
- package/dist/marks/Vector.svelte.d.ts +2 -1
- package/dist/marks/helpers/RectPath.svelte.d.ts +3 -62
- package/dist/marks/helpers/Regression.svelte +1 -1
- package/dist/transforms/bollinger.d.ts +1 -66
- package/dist/transforms/group.d.ts +4 -12
- package/dist/transforms/interval.d.ts +2 -122
- package/dist/transforms/recordize.d.ts +1 -4
- package/dist/transforms/recordize.js +8 -2
- package/dist/transforms/select.d.ts +7 -427
- package/dist/transforms/sort.d.ts +3 -242
- package/dist/transforms/sort.js +13 -1
- package/dist/transforms/stack.d.ts +5 -25
- package/dist/transforms/stack.js +96 -41
- package/dist/transforms/window.d.ts +2 -128
- package/dist/types/mark.d.ts +5 -1
- package/package.json +129 -128
|
@@ -3,253 +3,14 @@ export declare const SORT_KEY: unique symbol;
|
|
|
3
3
|
export declare const IS_SORTED: unique symbol;
|
|
4
4
|
export declare function sort<T>({ data, ...channels }: TransformArg<T>, options?: {
|
|
5
5
|
reverse?: boolean;
|
|
6
|
-
}):
|
|
7
|
-
[IS_SORTED]: string | number | true | symbol | Date | {
|
|
8
|
-
channel: string;
|
|
9
|
-
order?: "ascending" | "descending";
|
|
10
|
-
} | ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | ((d: T, index: number) => import("../types/index.js").RawValue);
|
|
11
|
-
sort: null;
|
|
12
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
13
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
14
|
-
fx?: import("../types/index.js").ChannelAccessor<T>;
|
|
15
|
-
fy?: import("../types/index.js").ChannelAccessor<T>;
|
|
16
|
-
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
17
|
-
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
18
|
-
fill?: import("../types/index.js").ChannelAccessor<T>;
|
|
19
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
20
|
-
stroke?: import("../types/index.js").ChannelAccessor<T>;
|
|
21
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
22
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
23
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
|
|
24
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
|
|
25
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
26
|
-
opacity?: import("../types/index.js").ChannelAccessor<T>;
|
|
27
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
28
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
29
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
|
|
30
|
-
clipPath?: string | undefined;
|
|
31
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
32
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, T>;
|
|
33
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
34
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
35
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
36
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
37
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
38
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
39
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
40
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
41
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
42
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
43
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
44
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
45
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
46
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
47
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
48
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
49
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
50
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
51
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
52
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
53
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
54
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
55
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
56
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
57
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
58
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
59
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
60
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
61
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
62
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
63
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
64
|
-
class?: string | null | undefined;
|
|
65
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
|
|
66
|
-
data: T[] | Omit<T & {
|
|
67
|
-
[SORT_KEY]: number | Date | string;
|
|
68
|
-
}, typeof SORT_KEY>[];
|
|
69
|
-
} | {
|
|
70
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
71
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
72
|
-
fx?: import("../types/index.js").ChannelAccessor<T>;
|
|
73
|
-
fy?: import("../types/index.js").ChannelAccessor<T>;
|
|
74
|
-
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
75
|
-
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
76
|
-
fill?: import("../types/index.js").ChannelAccessor<T>;
|
|
77
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
78
|
-
sort?: {
|
|
79
|
-
channel: string;
|
|
80
|
-
order?: "ascending" | "descending";
|
|
81
|
-
} | ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/index.js").RawValue, T>;
|
|
82
|
-
stroke?: import("../types/index.js").ChannelAccessor<T>;
|
|
83
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
84
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
85
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
|
|
86
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
|
|
87
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
88
|
-
opacity?: import("../types/index.js").ChannelAccessor<T>;
|
|
89
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
90
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
91
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
|
|
92
|
-
clipPath?: string | undefined;
|
|
93
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
94
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, T>;
|
|
95
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
96
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
97
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
98
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
99
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
100
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
101
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
102
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
103
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
104
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
105
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
106
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
107
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
108
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
109
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
110
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
111
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
112
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
113
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
114
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
115
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
116
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
117
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
118
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
119
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
120
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
121
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
122
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
123
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
124
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
125
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
126
|
-
class?: string | null | undefined;
|
|
127
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
|
|
128
|
-
data: T[];
|
|
129
|
-
};
|
|
6
|
+
}): any;
|
|
130
7
|
/**
|
|
131
8
|
* shuffles the data row order
|
|
132
9
|
*/
|
|
133
10
|
export declare function shuffle({ data, ...channels }: TransformArg<DataRow[]>, options?: {
|
|
134
11
|
seed?: number;
|
|
135
|
-
}):
|
|
136
|
-
sort: null;
|
|
137
|
-
[IS_SORTED]: boolean;
|
|
138
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
139
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
140
|
-
fx?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
141
|
-
fy?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
142
|
-
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
143
|
-
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
144
|
-
fill?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
145
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
146
|
-
stroke?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
147
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
148
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
149
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRow[]>;
|
|
150
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRow[]>;
|
|
151
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
152
|
-
opacity?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
153
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
154
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
155
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRow[]>;
|
|
156
|
-
clipPath?: string | undefined;
|
|
157
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
158
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRow[]>;
|
|
159
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
160
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
161
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
162
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
163
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
164
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
165
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
166
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
167
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
168
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
169
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
170
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
171
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
172
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
173
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
174
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
175
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
176
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
177
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
178
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
179
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
180
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
181
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
182
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
183
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
184
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
185
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
186
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
187
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
188
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
189
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
190
|
-
class?: string | null | undefined;
|
|
191
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRow[]>;
|
|
192
|
-
data: DataRow[][];
|
|
193
|
-
};
|
|
12
|
+
}): any;
|
|
194
13
|
/**
|
|
195
14
|
* reverses the data row order
|
|
196
15
|
*/
|
|
197
|
-
export declare function reverse({ data, ...channels }: TransformArg<DataRow[]>):
|
|
198
|
-
sort: null;
|
|
199
|
-
[IS_SORTED]: boolean;
|
|
200
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
201
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
202
|
-
fx?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
203
|
-
fy?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
204
|
-
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
205
|
-
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
206
|
-
fill?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
207
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
208
|
-
stroke?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
209
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
210
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
211
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRow[]>;
|
|
212
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRow[]>;
|
|
213
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
214
|
-
opacity?: import("../types/index.js").ChannelAccessor<DataRow[]>;
|
|
215
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
216
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
217
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRow[]>;
|
|
218
|
-
clipPath?: string | undefined;
|
|
219
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
220
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRow[]>;
|
|
221
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
222
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
223
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
224
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
225
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
226
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
227
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
228
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
229
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
230
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
231
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
232
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
233
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
234
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
235
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
236
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
237
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
238
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
239
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
240
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
241
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
242
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
243
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
244
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
245
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
246
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
247
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
248
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
249
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
250
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
251
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
252
|
-
class?: string | null | undefined;
|
|
253
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRow[]>;
|
|
254
|
-
data: DataRow[][];
|
|
255
|
-
};
|
|
16
|
+
export declare function reverse({ data, ...channels }: TransformArg<DataRow[]>): any;
|
package/dist/transforms/sort.js
CHANGED
|
@@ -27,7 +27,19 @@ export function sort({ data, ...channels }, options = {}) {
|
|
|
27
27
|
...d,
|
|
28
28
|
[SORT_KEY]: resolveChannel('sort', d, { ...channels, sort })
|
|
29
29
|
}))
|
|
30
|
-
.
|
|
30
|
+
.map((d) => ({
|
|
31
|
+
...d,
|
|
32
|
+
[SORT_KEY]: typeof d[SORT_KEY] === 'number' && !Number.isFinite(d[SORT_KEY])
|
|
33
|
+
? Number.POSITIVE_INFINITY
|
|
34
|
+
: d[SORT_KEY]
|
|
35
|
+
}))
|
|
36
|
+
.toSorted((a, b) => (typeof a[SORT_KEY] === 'string' && typeof b[SORT_KEY] === 'string'
|
|
37
|
+
? a[SORT_KEY].localeCompare(b[SORT_KEY])
|
|
38
|
+
: a[SORT_KEY] > b[SORT_KEY]
|
|
39
|
+
? 1
|
|
40
|
+
: a[SORT_KEY] < b[SORT_KEY]
|
|
41
|
+
? -1
|
|
42
|
+
: 0) *
|
|
31
43
|
(options.reverse ||
|
|
32
44
|
(isDataRecord(sort) && sort?.order === 'descending')
|
|
33
45
|
? -1
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TransformArg } from '../types/index.js';
|
|
2
2
|
export type StackOrder = 'none' | 'appearance' | 'inside-out' | 'sum';
|
|
3
3
|
export type StackOffset = 'none' | 'wiggle' | 'center' | 'normalize' | 'diverging';
|
|
4
4
|
export type StackOptions = {
|
|
@@ -6,27 +6,7 @@ export type StackOptions = {
|
|
|
6
6
|
order: null | StackOrder;
|
|
7
7
|
reverse: boolean;
|
|
8
8
|
};
|
|
9
|
-
export declare function stackY<T>({ data, ...channels }: T
|
|
10
|
-
export declare function stackX({ data, ...channels }: TransformArg
|
|
11
|
-
export declare function stackMosaicX<T>(args: any, opts: any):
|
|
12
|
-
|
|
13
|
-
fy: ChannelAccessor<unknown>;
|
|
14
|
-
data: unknown[];
|
|
15
|
-
x: symbol;
|
|
16
|
-
x1: symbol;
|
|
17
|
-
x2: symbol;
|
|
18
|
-
y: symbol;
|
|
19
|
-
y1: symbol;
|
|
20
|
-
y2: symbol;
|
|
21
|
-
};
|
|
22
|
-
export declare function stackMosaicY<T>(args: any, opts: any): {
|
|
23
|
-
fx: ChannelAccessor<unknown>;
|
|
24
|
-
fy: ChannelAccessor<unknown>;
|
|
25
|
-
data: unknown[];
|
|
26
|
-
x: symbol;
|
|
27
|
-
x1: symbol;
|
|
28
|
-
x2: symbol;
|
|
29
|
-
y: symbol;
|
|
30
|
-
y1: symbol;
|
|
31
|
-
y2: symbol;
|
|
32
|
-
};
|
|
9
|
+
export declare function stackY<T>({ data, ...channels }: TransformArg<T>, opts?: Partial<StackOptions>): TransformArg<T>;
|
|
10
|
+
export declare function stackX<T>({ data, ...channels }: TransformArg<T>, opts?: Partial<StackOptions>): TransformArg<T>;
|
|
11
|
+
export declare function stackMosaicX<T>(args: any, opts: any): any;
|
|
12
|
+
export declare function stackMosaicY<T>(args: any, opts: any): any;
|
package/dist/transforms/stack.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import isDataRecord from '../helpers/isDataRecord.js';
|
|
2
2
|
import { resolveChannel, resolveProp } from '../helpers/resolve.js';
|
|
3
3
|
import { stack, stackOffsetExpand, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderInsideOut, stackOrderNone, stackOffsetDiverging } from 'd3-shape';
|
|
4
|
-
import {
|
|
4
|
+
import { sum, groups as d3Groups, min, range } from 'd3-array';
|
|
5
5
|
import { groupFacetsAndZ } from '../helpers/group';
|
|
6
6
|
import { filter } from './filter.js';
|
|
7
7
|
import { sort } from './sort.js';
|
|
8
|
+
import { INDEX } from '../constants.js';
|
|
9
|
+
import { indexData, RAW_VALUE } from './recordize.js';
|
|
10
|
+
const S = {
|
|
11
|
+
x: Symbol('x'),
|
|
12
|
+
x1: Symbol('x1'),
|
|
13
|
+
x2: Symbol('x2'),
|
|
14
|
+
y: Symbol('y'),
|
|
15
|
+
y1: Symbol('y1'),
|
|
16
|
+
y2: Symbol('y2')
|
|
17
|
+
};
|
|
8
18
|
const GROUP = Symbol('group');
|
|
9
|
-
const FACET = Symbol('
|
|
19
|
+
const FACET = Symbol('facet');
|
|
10
20
|
const DEFAULT_STACK_OPTIONS = {
|
|
11
21
|
order: null,
|
|
12
22
|
offset: null,
|
|
@@ -41,16 +51,16 @@ function stackXY(byDim, data, channels, options) {
|
|
|
41
51
|
channels[`${byLow}`] === undefined &&
|
|
42
52
|
channels[`${byHigh}`] === undefined) {
|
|
43
53
|
// resolve all channels for easier computation below
|
|
44
|
-
const resolvedData = data.map((d) => ({
|
|
45
|
-
...(isDataRecord(d) ? d : {
|
|
46
|
-
[
|
|
54
|
+
const resolvedData = indexData(data).map((d, i) => ({
|
|
55
|
+
...(isDataRecord(d) ? d : { [RAW_VALUE]: d }),
|
|
56
|
+
[S[secondDim]]: resolveChannel(secondDim, d, channels),
|
|
47
57
|
[GROUP]: groupBy === true ? 'G' : resolveChannel(groupBy, d, channels),
|
|
48
58
|
[FACET]: groupFacetsBy.length > 0
|
|
49
59
|
? groupFacetsBy
|
|
50
60
|
.map((channel) => String(resolveChannel(channel, d, channels)))
|
|
51
61
|
.join('---')
|
|
52
62
|
: 'F',
|
|
53
|
-
[
|
|
63
|
+
[S[byDim]]: resolveChannel(byDim, d, channels)
|
|
54
64
|
}));
|
|
55
65
|
// the final data ends up here
|
|
56
66
|
const out = [];
|
|
@@ -58,9 +68,53 @@ function stackXY(byDim, data, channels, options) {
|
|
|
58
68
|
// in separate panels
|
|
59
69
|
const groups = d3Groups(resolvedData, (d) => d[FACET]);
|
|
60
70
|
for (const [, facetData] of groups) {
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
|
|
71
|
+
// create a temporary dataset for stacking
|
|
72
|
+
// If we have a grouping channel (fill/stroke/z), build objects keyed by group value
|
|
73
|
+
// so that series identities remain consistent across the secondary dimension.
|
|
74
|
+
// This is required for offsets like 'wiggle' and 'inside-out'.
|
|
75
|
+
let keys;
|
|
76
|
+
const groupedBySecondDim = d3Groups(facetData, (d) => d[S[secondDim]]);
|
|
77
|
+
let stackData;
|
|
78
|
+
const hasUniqueGroups = groupBy !== true &&
|
|
79
|
+
groupedBySecondDim.every(([, items]) => {
|
|
80
|
+
const groupSet = new Set(items.map((d) => d[GROUP]));
|
|
81
|
+
return groupSet.size === items.length;
|
|
82
|
+
});
|
|
83
|
+
if (groupBy === true || !hasUniqueGroups) {
|
|
84
|
+
// Unit stacking: map each secondary-dimension bucket to an array of values.
|
|
85
|
+
// Series are positional (0..N-1) within each bucket.
|
|
86
|
+
let maxKeys = 0;
|
|
87
|
+
stackData = groupedBySecondDim.map(([k, items]) => {
|
|
88
|
+
const values = items
|
|
89
|
+
// keep original order within bucket; no stable series identity across buckets
|
|
90
|
+
.map((d) => ({ i: d[INDEX], v: d[S[byDim]] }));
|
|
91
|
+
if (values.length > maxKeys)
|
|
92
|
+
maxKeys = values.length;
|
|
93
|
+
return values;
|
|
94
|
+
});
|
|
95
|
+
keys = range(maxKeys);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Grouped stacking: keep consistent series identities using the group key
|
|
99
|
+
const keySet = new Set(facetData.map((d) => d[GROUP]));
|
|
100
|
+
stackData = groupedBySecondDim.map(([k, items]) => {
|
|
101
|
+
const obj = {};
|
|
102
|
+
items.forEach((d) => {
|
|
103
|
+
const key = d[GROUP];
|
|
104
|
+
// If duplicates exist for the same (secondDim, group) pair, sum values
|
|
105
|
+
// and keep the latest index for back-reference.
|
|
106
|
+
if (obj[key] == null)
|
|
107
|
+
obj[key] = { i: d[INDEX], v: d[S[byDim]] };
|
|
108
|
+
else
|
|
109
|
+
obj[key] = {
|
|
110
|
+
i: d[INDEX],
|
|
111
|
+
v: obj[key].v + d[S[byDim]]
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
return obj;
|
|
115
|
+
});
|
|
116
|
+
keys = Array.from(keySet);
|
|
117
|
+
}
|
|
64
118
|
const stackOrder = (series) => {
|
|
65
119
|
const f = STACK_ORDER[options.order || 'none'];
|
|
66
120
|
return options.reverse ? f(series).reverse() : f(series);
|
|
@@ -68,35 +122,31 @@ function stackXY(byDim, data, channels, options) {
|
|
|
68
122
|
// now stack the values for each index
|
|
69
123
|
const series = stack()
|
|
70
124
|
.order(stackOrder)
|
|
71
|
-
|
|
72
|
-
.
|
|
73
|
-
|
|
125
|
+
// Wiggle requires consistent series identities; fall back to 'center' for unit stacking
|
|
126
|
+
.offset(groupBy === true && options.offset === 'wiggle'
|
|
127
|
+
? STACK_OFFSET['center']
|
|
128
|
+
: STACK_OFFSET[options.offset])
|
|
129
|
+
.keys(keys)
|
|
130
|
+
.value((d, key, i, data) => {
|
|
131
|
+
return d[key]?.v == null ? undefined : d[key]?.v;
|
|
132
|
+
})(stackData);
|
|
74
133
|
// and combine it all back into a flat array
|
|
75
134
|
const newData = series
|
|
76
|
-
.map((
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
.map((d) => {
|
|
81
|
-
const datum = d.data[1].get(groupKey);
|
|
82
|
-
// cleanup our internal keys
|
|
83
|
-
delete datum[GROUP];
|
|
84
|
-
delete datum[FACET];
|
|
85
|
-
return { ...datum, [`__${byLow}`]: d[0], [`__${byHigh}`]: d[1] };
|
|
86
|
-
});
|
|
87
|
-
})
|
|
88
|
-
.flat(1);
|
|
135
|
+
.flatMap((s) => s.map((d) => [d[0], d[1], d.data[s.key]?.i]))
|
|
136
|
+
.filter((d) => d[2] !== undefined)
|
|
137
|
+
.map((d) => ({ [S[byLow]]: d[0], [S[byHigh]]: d[1], ...resolvedData[d[2]] }));
|
|
138
|
+
out.push(...newData);
|
|
89
139
|
// which we then add to the output data
|
|
90
|
-
out.push(newData);
|
|
140
|
+
// out.push(...newData);
|
|
91
141
|
}
|
|
92
142
|
return {
|
|
93
|
-
data: out
|
|
143
|
+
data: out,
|
|
94
144
|
...channels,
|
|
95
145
|
[byDim]: undefined,
|
|
96
146
|
...(typeof channels[byDim] === 'string' && !channels[`__${byDim}_origField`]
|
|
97
147
|
? { [`__${byDim}_origField`]: channels[byDim] }
|
|
98
148
|
: {}),
|
|
99
|
-
...{ [byLow]:
|
|
149
|
+
...{ [byLow]: S[byLow], [byHigh]: S[byHigh] }
|
|
100
150
|
};
|
|
101
151
|
}
|
|
102
152
|
return { data, ...channels };
|
|
@@ -113,12 +163,6 @@ function applyDefaults(opts) {
|
|
|
113
163
|
}
|
|
114
164
|
return { ...DEFAULT_STACK_OPTIONS, ...opts };
|
|
115
165
|
}
|
|
116
|
-
const X = Symbol('x');
|
|
117
|
-
const X1 = Symbol('x1');
|
|
118
|
-
const X2 = Symbol('x2');
|
|
119
|
-
const Y = Symbol('y');
|
|
120
|
-
const Y1 = Symbol('y1');
|
|
121
|
-
const Y2 = Symbol('y2');
|
|
122
166
|
function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, { x: xOpt, y: yOpt } = {}) {
|
|
123
167
|
const out = [];
|
|
124
168
|
const { data: filtered, ...restArgs } = sort(filter({ data, x, y, value, fx, fy, ...rest }));
|
|
@@ -137,10 +181,10 @@ function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, {
|
|
|
137
181
|
let outerPos = 0;
|
|
138
182
|
const outerChannel = outer === 'x' ? x : y;
|
|
139
183
|
const innerChannel = inner === 'x' ? x : y;
|
|
140
|
-
const outerSym1 = outer === 'x' ?
|
|
141
|
-
const outerSym2 = outer === 'x' ?
|
|
142
|
-
const innerSym1 = inner === 'x' ?
|
|
143
|
-
const innerSym2 = inner === 'x' ?
|
|
184
|
+
const outerSym1 = outer === 'x' ? S.x1 : S.y1;
|
|
185
|
+
const outerSym2 = outer === 'x' ? S.x2 : S.y2;
|
|
186
|
+
const innerSym1 = inner === 'x' ? S.x1 : S.y1;
|
|
187
|
+
const innerSym2 = inner === 'x' ? S.x2 : S.y2;
|
|
144
188
|
const outerOpt = outer === 'x' ? xOpt : yOpt;
|
|
145
189
|
const innerOpt = inner === 'x' ? xOpt : yOpt;
|
|
146
190
|
const grouped = d3Groups(data, (d) => resolveProp(d[outerChannel], d));
|
|
@@ -165,13 +209,24 @@ function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, {
|
|
|
165
209
|
result[outerSym2] = normO2;
|
|
166
210
|
result[innerSym1] = normI1;
|
|
167
211
|
result[innerSym2] = normI2;
|
|
168
|
-
result[
|
|
169
|
-
result[
|
|
212
|
+
result[S.x] = (result[S.x1] + result[S.x2]) / 2;
|
|
213
|
+
result[S.y] = (result[S.y1] + result[S.y2]) / 2;
|
|
170
214
|
out.push(result);
|
|
171
215
|
});
|
|
172
216
|
});
|
|
173
217
|
});
|
|
174
|
-
return {
|
|
218
|
+
return {
|
|
219
|
+
...rest,
|
|
220
|
+
fx,
|
|
221
|
+
fy,
|
|
222
|
+
data: out,
|
|
223
|
+
x: S.x,
|
|
224
|
+
x1: S.x1,
|
|
225
|
+
x2: S.x2,
|
|
226
|
+
y: S.y,
|
|
227
|
+
y1: S.y1,
|
|
228
|
+
y2: S.y2
|
|
229
|
+
};
|
|
175
230
|
}
|
|
176
231
|
export function stackMosaicX(args, opts) {
|
|
177
232
|
return stackMosaic(args, { outer: 'x', inner: 'y' }, opts);
|