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.
Files changed (57) hide show
  1. package/dist/Mark.svelte.d.ts +2 -1
  2. package/dist/core/Plot.svelte +1 -0
  3. package/dist/helpers/colors.d.ts +1 -1
  4. package/dist/helpers/index.d.ts +2 -2
  5. package/dist/helpers/resolve.js +1 -1
  6. package/dist/helpers/scales.d.ts +1 -1
  7. package/dist/helpers/typeChecks.d.ts +4 -4
  8. package/dist/marks/Area.svelte.d.ts +2 -1
  9. package/dist/marks/AreaX.svelte.d.ts +4 -2
  10. package/dist/marks/AreaY.svelte +2 -1
  11. package/dist/marks/AreaY.svelte.d.ts +4 -2
  12. package/dist/marks/Arrow.svelte.d.ts +2 -1
  13. package/dist/marks/AxisX.svelte +5 -1
  14. package/dist/marks/AxisX.svelte.d.ts +11 -7
  15. package/dist/marks/AxisY.svelte +3 -2
  16. package/dist/marks/AxisY.svelte.d.ts +9 -7
  17. package/dist/marks/BarX.svelte.d.ts +3 -2
  18. package/dist/marks/BarY.svelte.d.ts +2 -1
  19. package/dist/marks/BollingerX.svelte.d.ts +2 -73
  20. package/dist/marks/BollingerY.svelte.d.ts +2 -73
  21. package/dist/marks/Cell.svelte.d.ts +2 -1
  22. package/dist/marks/ColorLegend.svelte +1 -1
  23. package/dist/marks/CustomMark.svelte.d.ts +2 -80
  24. package/dist/marks/DifferenceY.svelte.d.ts +7 -66
  25. package/dist/marks/Dot.svelte.d.ts +2 -1
  26. package/dist/marks/DotX.svelte.d.ts +2 -1
  27. package/dist/marks/DotY.svelte.d.ts +2 -1
  28. package/dist/marks/Geo.svelte.d.ts +2 -1
  29. package/dist/marks/GridX.svelte.d.ts +2 -1
  30. package/dist/marks/GridY.svelte.d.ts +2 -1
  31. package/dist/marks/Line.svelte.d.ts +4 -3
  32. package/dist/marks/LineX.svelte.d.ts +4 -2
  33. package/dist/marks/LineY.svelte.d.ts +4 -2
  34. package/dist/marks/Link.svelte.d.ts +2 -1
  35. package/dist/marks/Rect.svelte.d.ts +2 -1
  36. package/dist/marks/RuleX.svelte.d.ts +2 -1
  37. package/dist/marks/RuleY.svelte.d.ts +2 -1
  38. package/dist/marks/Spike.svelte.d.ts +2 -1
  39. package/dist/marks/Text.svelte.d.ts +2 -1
  40. package/dist/marks/TickX.svelte.d.ts +2 -1
  41. package/dist/marks/TickY.svelte.d.ts +2 -1
  42. package/dist/marks/Vector.svelte.d.ts +2 -1
  43. package/dist/marks/helpers/RectPath.svelte.d.ts +3 -62
  44. package/dist/marks/helpers/Regression.svelte +1 -1
  45. package/dist/transforms/bollinger.d.ts +1 -66
  46. package/dist/transforms/group.d.ts +4 -12
  47. package/dist/transforms/interval.d.ts +2 -122
  48. package/dist/transforms/recordize.d.ts +1 -4
  49. package/dist/transforms/recordize.js +8 -2
  50. package/dist/transforms/select.d.ts +7 -427
  51. package/dist/transforms/sort.d.ts +3 -242
  52. package/dist/transforms/sort.js +13 -1
  53. package/dist/transforms/stack.d.ts +5 -25
  54. package/dist/transforms/stack.js +96 -41
  55. package/dist/transforms/window.d.ts +2 -128
  56. package/dist/types/mark.d.ts +5 -1
  57. 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;
@@ -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
- .toSorted((a, b) => (a[SORT_KEY] > b[SORT_KEY] ? 1 : a[SORT_KEY] < b[SORT_KEY] ? -1 : 0) *
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 { ChannelAccessor, TransformArg } from '../types/index.js';
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, opts?: Partial<StackOptions>): T;
10
- export declare function stackX({ data, ...channels }: TransformArg, opts?: Partial<StackOptions>): TransformArg;
11
- export declare function stackMosaicX<T>(args: any, opts: any): {
12
- fx: ChannelAccessor<unknown>;
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;
@@ -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 { index, union, sum, groups as d3Groups, extent, min } from 'd3-array';
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('group');
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 : { __orig: d }),
46
- [`__${secondDim}`]: resolveChannel(secondDim, d, channels),
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
- [`__${byDim}`]: resolveChannel(byDim, d, channels)
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
- // now we index the data on the second dimension, e.g. over x
62
- // when stacking over y
63
- const indexed = index(facetData, (d) => d[`__${secondDim}`], (d) => d[GROUP]);
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
- .offset(STACK_OFFSET[options.offset])
72
- .keys(union(facetData.map((d) => d[GROUP])))
73
- .value(([, group], key) => (group.get(key) ? group.get(key)[`__${byDim}`] : 0))(indexed);
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((values) => {
77
- const groupKey = values.key;
78
- return values
79
- .filter((d) => d.data[1].get(groupKey))
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.flat(1),
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]: `__${byLow}`, [byHigh]: `__${byHigh}` }
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' ? X1 : Y1;
141
- const outerSym2 = outer === 'x' ? X2 : Y2;
142
- const innerSym1 = inner === 'x' ? X1 : Y1;
143
- const innerSym2 = inner === 'x' ? X2 : Y2;
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[X] = (result[X1] + result[X2]) / 2;
169
- result[Y] = (result[Y1] + result[Y2]) / 2;
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 { ...rest, fx, fy, data: out, x: X, x1: X1, x2: X2, y: Y, y1: Y1, y2: Y2 };
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);