svelteplot 0.2.9 → 0.2.10

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 (48) hide show
  1. package/README.md +1 -1
  2. package/dist/Mark.svelte +5 -4
  3. package/dist/Plot.svelte +1 -1
  4. package/dist/core/Plot.svelte +2 -2
  5. package/dist/helpers/scales.js +9 -1
  6. package/dist/marks/Area.svelte +18 -26
  7. package/dist/marks/AxisX.svelte +5 -1
  8. package/dist/marks/AxisX.svelte.d.ts +2 -0
  9. package/dist/marks/AxisY.svelte +4 -0
  10. package/dist/marks/AxisY.svelte.d.ts +2 -0
  11. package/dist/marks/BarX.svelte +3 -1
  12. package/dist/marks/BarX.svelte.d.ts +2 -2
  13. package/dist/marks/BarY.svelte +1 -0
  14. package/dist/marks/BarY.svelte.d.ts +2 -2
  15. package/dist/marks/BrushX.svelte +1 -1
  16. package/dist/marks/BrushY.svelte +1 -1
  17. package/dist/marks/Cell.svelte +1 -0
  18. package/dist/marks/Cell.svelte.d.ts +2 -2
  19. package/dist/marks/ColorLegend.svelte +1 -0
  20. package/dist/marks/Dot.svelte +20 -19
  21. package/dist/marks/Dot.svelte.d.ts +2 -2
  22. package/dist/marks/Frame.svelte +2 -1
  23. package/dist/marks/Frame.svelte.d.ts +2 -2
  24. package/dist/marks/Geo.svelte +27 -33
  25. package/dist/marks/Geo.svelte.d.ts +4 -2
  26. package/dist/marks/Rect.svelte +1 -0
  27. package/dist/marks/Rect.svelte.d.ts +2 -2
  28. package/dist/marks/Sphere.svelte +2 -2
  29. package/dist/marks/Sphere.svelte.d.ts +3 -58
  30. package/dist/marks/helpers/Anchor.svelte +37 -0
  31. package/dist/marks/helpers/Anchor.svelte.d.ts +15 -0
  32. package/dist/marks/helpers/BaseAxisX.svelte +59 -53
  33. package/dist/marks/helpers/BaseAxisX.svelte.d.ts +1 -0
  34. package/dist/marks/helpers/BaseAxisY.svelte +24 -18
  35. package/dist/marks/helpers/BaseAxisY.svelte.d.ts +1 -0
  36. package/dist/marks/helpers/RectPath.svelte +33 -30
  37. package/dist/marks/helpers/Regression.svelte +1 -1
  38. package/dist/transforms/bollinger.d.ts +58 -0
  39. package/dist/transforms/centroid.d.ts +58 -0
  40. package/dist/transforms/interval.d.ts +116 -0
  41. package/dist/transforms/map.d.ts +174 -0
  42. package/dist/transforms/normalize.d.ts +117 -1
  43. package/dist/transforms/select.d.ts +406 -0
  44. package/dist/transforms/sort.d.ts +228 -1
  45. package/dist/transforms/sort.js +23 -13
  46. package/dist/transforms/window.d.ts +116 -0
  47. package/dist/types.d.ts +29 -8
  48. package/package.json +121 -120
@@ -1,22 +1,194 @@
1
1
  import type { DataRecord, DataRow, TransformArg } from '../types.js';
2
2
  export declare const SORT_KEY: unique symbol;
3
+ export declare const IS_SORTED: unique symbol;
3
4
  export declare function sort({ data, ...channels }: TransformArg<DataRecord>, options?: {
4
5
  reverse?: boolean;
5
6
  }): {
7
+ [IS_SORTED]: string | number | true | symbol | Date | ((d: DataRow) => import("../types.js").RawValue) | {
8
+ channel: string;
9
+ order?: "ascending" | "descending";
10
+ } | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number);
6
11
  sort: null;
12
+ filter?: import("../types.js").ConstantAccessor<boolean>;
13
+ facet?: "auto" | "include" | "exclude" | undefined;
14
+ fx?: import("../types.js").ChannelAccessor;
15
+ fy?: import("../types.js").ChannelAccessor;
16
+ dx?: import("../types.js").ConstantAccessor<number>;
17
+ dy?: import("../types.js").ConstantAccessor<number>;
18
+ fill?: import("../types.js").ConstantAccessor<string>;
19
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
20
+ stroke?: import("../types.js").ConstantAccessor<string>;
21
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
22
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
23
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
24
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
25
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
26
+ opacity?: import("../types.js").ConstantAccessor<number>;
27
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
28
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
29
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
30
+ clipPath?: string | undefined;
31
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
32
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
33
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
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.js").ConstantAccessor<import("csstype").Property.Cursor>;
7
66
  data: {
8
67
  ___orig___?: import("../types.js").RawValue | [import("../types.js").RawValue, import("../types.js").RawValue];
9
68
  }[];
10
69
  } | {
70
+ filter?: import("../types.js").ConstantAccessor<boolean>;
71
+ facet?: "auto" | "include" | "exclude" | undefined;
72
+ fx?: import("../types.js").ChannelAccessor;
73
+ fy?: import("../types.js").ChannelAccessor;
74
+ dx?: import("../types.js").ConstantAccessor<number>;
75
+ dy?: import("../types.js").ConstantAccessor<number>;
76
+ fill?: import("../types.js").ConstantAccessor<string>;
77
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
78
+ sort?: string | import("../types.js").ConstantAccessor<import("../types.js").RawValue> | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number) | {
79
+ channel: string;
80
+ order?: "ascending" | "descending";
81
+ };
82
+ stroke?: import("../types.js").ConstantAccessor<string>;
83
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
84
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
85
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
86
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
87
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
88
+ opacity?: import("../types.js").ConstantAccessor<number>;
89
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
90
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
91
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
92
+ clipPath?: string | undefined;
93
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
94
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
95
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
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.js").ConstantAccessor<import("csstype").Property.Cursor>;
11
128
  data: DataRecord[];
12
129
  };
13
130
  /**
14
- * reverses the data row order
131
+ * shuffles the data row order
15
132
  */
16
133
  export declare function shuffle({ data, ...channels }: TransformArg<DataRow[]>, options?: {
17
134
  seed?: number;
18
135
  }): {
19
136
  sort: null;
137
+ [IS_SORTED]: boolean;
138
+ filter?: import("../types.js").ConstantAccessor<boolean>;
139
+ facet?: "auto" | "include" | "exclude" | undefined;
140
+ fx?: import("../types.js").ChannelAccessor;
141
+ fy?: import("../types.js").ChannelAccessor;
142
+ dx?: import("../types.js").ConstantAccessor<number>;
143
+ dy?: import("../types.js").ConstantAccessor<number>;
144
+ fill?: import("../types.js").ConstantAccessor<string>;
145
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
146
+ stroke?: import("../types.js").ConstantAccessor<string>;
147
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
148
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
149
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
150
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
151
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
152
+ opacity?: import("../types.js").ConstantAccessor<number>;
153
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
154
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
155
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
156
+ clipPath?: string | undefined;
157
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
158
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
159
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
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.js").ConstantAccessor<import("csstype").Property.Cursor>;
20
192
  data: DataRow[][];
21
193
  };
22
194
  /**
@@ -24,5 +196,60 @@ export declare function shuffle({ data, ...channels }: TransformArg<DataRow[]>,
24
196
  */
25
197
  export declare function reverse({ data, ...channels }: TransformArg<DataRow[]>): {
26
198
  sort: null;
199
+ [IS_SORTED]: boolean;
200
+ filter?: import("../types.js").ConstantAccessor<boolean>;
201
+ facet?: "auto" | "include" | "exclude" | undefined;
202
+ fx?: import("../types.js").ChannelAccessor;
203
+ fy?: import("../types.js").ChannelAccessor;
204
+ dx?: import("../types.js").ConstantAccessor<number>;
205
+ dy?: import("../types.js").ConstantAccessor<number>;
206
+ fill?: import("../types.js").ConstantAccessor<string>;
207
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
208
+ stroke?: import("../types.js").ConstantAccessor<string>;
209
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
210
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
211
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
212
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
213
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
214
+ opacity?: import("../types.js").ConstantAccessor<number>;
215
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
216
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
217
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
218
+ clipPath?: string | undefined;
219
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
220
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
221
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
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.js").ConstantAccessor<import("csstype").Property.Cursor>;
27
254
  data: DataRow[][];
28
255
  };
@@ -3,6 +3,7 @@ import { resolveChannel } from '../helpers/resolve.js';
3
3
  import { shuffler } from 'd3-array';
4
4
  import { randomLcg } from 'd3-random';
5
5
  export const SORT_KEY = Symbol('sortKey');
6
+ export const IS_SORTED = Symbol('isSorted');
6
7
  export function sort({ data, ...channels }, options = {}) {
7
8
  if (!Array.isArray(data))
8
9
  return { data, ...channels };
@@ -14,19 +15,26 @@ export function sort({ data, ...channels }, options = {}) {
14
15
  sort.channel = sort.channel.substring(1);
15
16
  sort.order = 'descending';
16
17
  }
18
+ // if sort is a function that does not take exactly one argument, we treat it
19
+ // as comparator function, as you would pass to array.sort
20
+ const isComparator = typeof channels.sort === 'function' && channels.sort.length !== 1;
17
21
  // sort data
18
22
  return {
19
- data: data
20
- .map((d) => ({
21
- ...d,
22
- [SORT_KEY]: resolveChannel('sort', d, { ...channels, sort })
23
- }))
24
- .toSorted((a, b) => (a[SORT_KEY] > b[SORT_KEY] ? 1 : a[SORT_KEY] < b[SORT_KEY] ? -1 : 0) *
25
- (options.reverse || (isDataRecord(sort) && sort?.order === 'descending')
26
- ? -1
27
- : 1))
28
- .map(({ [SORT_KEY]: a, ...rest }) => rest),
23
+ data: isComparator
24
+ ? data.toSorted(channels.sort)
25
+ : data
26
+ .map((d) => ({
27
+ ...d,
28
+ [SORT_KEY]: resolveChannel('sort', d, { ...channels, sort })
29
+ }))
30
+ .toSorted((a, b) => (a[SORT_KEY] > b[SORT_KEY] ? 1 : a[SORT_KEY] < b[SORT_KEY] ? -1 : 0) *
31
+ (options.reverse ||
32
+ (isDataRecord(sort) && sort?.order === 'descending')
33
+ ? -1
34
+ : 1))
35
+ .map(({ [SORT_KEY]: a, ...rest }) => rest),
29
36
  ...channels,
37
+ [IS_SORTED]: sort,
30
38
  // set the sort channel to null to disable the implicit alphabetical
31
39
  // ordering of ordinal domains, and also to avoid double sorting in case
32
40
  // this transform is used "outside" a mark
@@ -39,7 +47,7 @@ export function sort({ data, ...channels }, options = {}) {
39
47
  };
40
48
  }
41
49
  /**
42
- * reverses the data row order
50
+ * shuffles the data row order
43
51
  */
44
52
  export function shuffle({ data, ...channels }, options = {}) {
45
53
  const random = randomLcg(options.seed);
@@ -49,7 +57,8 @@ export function shuffle({ data, ...channels }, options = {}) {
49
57
  ...channels,
50
58
  // set the sort channel to null to disable the implicit
51
59
  // alphabetical ordering of ordinal domains
52
- sort: null
60
+ sort: null,
61
+ [IS_SORTED]: true
53
62
  };
54
63
  }
55
64
  /**
@@ -61,6 +70,7 @@ export function reverse({ data, ...channels }) {
61
70
  ...channels,
62
71
  // set the sort channel to null to disable the implicit
63
72
  // alphabetical ordering of ordinal domains
64
- sort: null
73
+ sort: null,
74
+ [IS_SORTED]: true
65
75
  };
66
76
  }
@@ -8,6 +8,64 @@ type WindowOptions = {
8
8
  strict: boolean;
9
9
  };
10
10
  export declare function windowX(args: TransformArg<DataRecord>, options: WindowOptions): {
11
+ filter?: import("../types.js").ConstantAccessor<boolean>;
12
+ facet?: "auto" | "include" | "exclude" | undefined;
13
+ fx?: import("../types.js").ChannelAccessor;
14
+ fy?: import("../types.js").ChannelAccessor;
15
+ dx?: import("../types.js").ConstantAccessor<number>;
16
+ dy?: import("../types.js").ConstantAccessor<number>;
17
+ fill?: import("../types.js").ConstantAccessor<string>;
18
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
19
+ sort?: string | import("../types.js").ConstantAccessor<import("../types.js").RawValue> | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number) | {
20
+ channel: string;
21
+ order?: "ascending" | "descending";
22
+ };
23
+ stroke?: import("../types.js").ConstantAccessor<string>;
24
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
25
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
26
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
27
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
28
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
29
+ opacity?: import("../types.js").ConstantAccessor<number>;
30
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
31
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
32
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
33
+ clipPath?: string | undefined;
34
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
35
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
36
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
37
+ onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
38
+ ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
39
+ onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
40
+ onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
41
+ onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
42
+ onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
43
+ onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
44
+ onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
45
+ onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
46
+ onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
47
+ onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
48
+ onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
49
+ onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
50
+ onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
51
+ onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
52
+ onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
53
+ onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
54
+ ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
55
+ ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
56
+ ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
57
+ ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
58
+ ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
59
+ ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
+ ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
61
+ ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
62
+ ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
63
+ ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
64
+ ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
65
+ oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
66
+ onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
67
+ class?: string | null | undefined;
68
+ cursor?: import("../types.js").ConstantAccessor<import("csstype").Property.Cursor>;
11
69
  data: {
12
70
  [x: string]: import("../types.js").RawValue;
13
71
  [x: symbol]: import("../types.js").RawValue;
@@ -15,6 +73,64 @@ export declare function windowX(args: TransformArg<DataRecord>, options: WindowO
15
73
  }[];
16
74
  };
17
75
  export declare function windowY(args: TransformArg<DataRecord>, options: WindowOptions): {
76
+ filter?: import("../types.js").ConstantAccessor<boolean>;
77
+ facet?: "auto" | "include" | "exclude" | undefined;
78
+ fx?: import("../types.js").ChannelAccessor;
79
+ fy?: import("../types.js").ChannelAccessor;
80
+ dx?: import("../types.js").ConstantAccessor<number>;
81
+ dy?: import("../types.js").ConstantAccessor<number>;
82
+ fill?: import("../types.js").ConstantAccessor<string>;
83
+ fillOpacity?: import("../types.js").ConstantAccessor<number>;
84
+ sort?: string | import("../types.js").ConstantAccessor<import("../types.js").RawValue> | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number) | {
85
+ channel: string;
86
+ order?: "ascending" | "descending";
87
+ };
88
+ stroke?: import("../types.js").ConstantAccessor<string>;
89
+ strokeWidth?: import("../types.js").ConstantAccessor<number>;
90
+ strokeOpacity?: import("../types.js").ConstantAccessor<number>;
91
+ strokeLinejoin?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin>;
92
+ strokeLinecap?: import("../types.js").ConstantAccessor<import("csstype").Property.StrokeLinecap>;
93
+ strokeMiterlimit?: import("../types.js").ConstantAccessor<number>;
94
+ opacity?: import("../types.js").ConstantAccessor<number>;
95
+ strokeDasharray?: import("../types.js").ConstantAccessor<string>;
96
+ strokeDashoffset?: import("../types.js").ConstantAccessor<number>;
97
+ mixBlendMode?: import("../types.js").ConstantAccessor<import("csstype").Property.MixBlendMode>;
98
+ clipPath?: string | undefined;
99
+ imageFilter?: import("../types.js").ConstantAccessor<string>;
100
+ shapeRendering?: import("../types.js").ConstantAccessor<import("csstype").Property.ShapeRendering>;
101
+ paintOrder?: import("../types.js").ConstantAccessor<string>;
102
+ onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
103
+ ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
104
+ onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
105
+ onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
106
+ onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
107
+ onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
108
+ onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
109
+ onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
110
+ onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
111
+ onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
112
+ onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
113
+ onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
114
+ onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
115
+ onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
116
+ onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
117
+ onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
118
+ onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
119
+ ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
120
+ ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
121
+ ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
122
+ ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
123
+ ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
124
+ ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
125
+ ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
126
+ ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
127
+ ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
128
+ ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
129
+ ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
130
+ oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
131
+ onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
132
+ class?: string | null | undefined;
133
+ cursor?: import("../types.js").ConstantAccessor<import("csstype").Property.Cursor>;
18
134
  data: {
19
135
  [x: string]: import("../types.js").RawValue;
20
136
  [x: symbol]: import("../types.js").RawValue;
package/dist/types.d.ts CHANGED
@@ -345,7 +345,7 @@ export type PlotDefaults = {
345
345
  unknown: string;
346
346
  css: (d: string) => string | undefined;
347
347
  };
348
- export type GenericMarkOptions = Record<string, any>;
348
+ export type GenericMarkOptions = Record<string | symbol, any>;
349
349
  export type DataRecord = Record<string | symbol, RawValue> & {
350
350
  ___orig___?: RawValue | [RawValue, RawValue];
351
351
  };
@@ -490,15 +490,30 @@ export type FacetContext = {
490
490
  };
491
491
  export type LinkableMarkProps = {
492
492
  /**
493
- * simple browser tooltip to be displayed on mouseover
493
+ * if set, the mark element will be wrapped in a <a> link element
494
494
  */
495
- title: ConstantAccessor<string>;
495
+ href: ConstantAccessor<string>;
496
496
  /**
497
- * if set, the mark element will be wrapped in a <a> link
498
- * element
497
+ * the relationship of the target object to the link object (e.g. "noopener")
498
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#rel
499
499
  */
500
- href: ConstantAccessor<string>;
501
- target: ConstantAccessor<'_self' | '_blank' | string>;
500
+ rel: ConstantAccessor<string>;
501
+ /**
502
+ * the link target mime type, e.g. "text/csv"
503
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#type
504
+ */
505
+ type: ConstantAccessor<string>;
506
+ /**
507
+ * the target of the link, e.g. "_blank" or "_self"
508
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#target
509
+ */
510
+ target: ConstantAccessor<'_self' | '_blank' | '_parent' | '_top' | string>;
511
+ /**
512
+ * if set to true, the link will be downloaded instead of navigating to it
513
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download
514
+ */
515
+ download: ConstantAccessor<boolean>;
516
+ [key: `data-sveltekit-${string}`]: string | boolean;
502
517
  };
503
518
  export type BaseMarkProps = Partial<{
504
519
  /**
@@ -512,6 +527,12 @@ export type BaseMarkProps = Partial<{
512
527
  dy: ConstantAccessor<number>;
513
528
  fill: ConstantAccessor<string>;
514
529
  fillOpacity: ConstantAccessor<number>;
530
+ sort: string | ConstantAccessor<RawValue> | ((a: RawValue, b: RawValue) => number) | {
531
+ /** sort data using an already defined channel */
532
+ channel: string;
533
+ /** sort order */
534
+ order?: 'ascending' | 'descending';
535
+ };
515
536
  stroke: ConstantAccessor<string>;
516
537
  strokeWidth: ConstantAccessor<number>;
517
538
  strokeOpacity: ConstantAccessor<number>;
@@ -577,7 +598,7 @@ export type BaseRectMarkProps = {
577
598
  borderRadius?: BorderRadius;
578
599
  };
579
600
  export type Channels = Record<string, ChannelAccessor | ConstantAccessor<string | number | boolean | symbol>>;
580
- export type TransformArg<K> = Channels & {
601
+ export type TransformArg<K> = Channels & BaseMarkProps & {
581
602
  data: K[];
582
603
  };
583
604
  export type MapArg<K> = Channels & {