svelteplot 0.10.2 → 0.10.3-pr-370.1
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/LICENSE.md +1 -1
- package/dist/Mark.svelte.d.ts +4 -4
- package/dist/constants.d.ts +1 -1
- package/dist/helpers/colors.d.ts +8 -11
- package/dist/helpers/curves.d.ts +2 -2
- package/dist/helpers/facets.d.ts +1 -1
- package/dist/helpers/getBaseStyles.d.ts +2 -4
- package/dist/helpers/index.d.ts +1 -1
- package/dist/helpers/reduce.d.ts +1 -1
- package/dist/helpers/scales.d.ts +7 -7
- package/dist/helpers/symbols.d.ts +1 -1
- package/dist/helpers/time.d.ts +3 -3
- package/dist/helpers/typeChecks.d.ts +4 -4
- package/dist/marks/Area.svelte.d.ts +5 -4
- package/dist/marks/AreaX.svelte.d.ts +4 -4
- package/dist/marks/AreaY.svelte.d.ts +4 -4
- package/dist/marks/Arrow.svelte.d.ts +5 -4
- package/dist/marks/AxisX.svelte +13 -0
- package/dist/marks/AxisX.svelte.d.ts +19 -5
- package/dist/marks/AxisY.svelte +15 -0
- package/dist/marks/AxisY.svelte.d.ts +21 -5
- package/dist/marks/BarX.svelte.d.ts +4 -4
- package/dist/marks/BarY.svelte.d.ts +5 -4
- package/dist/marks/BollingerX.svelte +3 -0
- package/dist/marks/BollingerX.svelte.d.ts +2 -77
- package/dist/marks/BollingerY.svelte +3 -0
- package/dist/marks/BollingerY.svelte.d.ts +2 -77
- package/dist/marks/BoxY.svelte +3 -0
- package/dist/marks/BoxY.svelte.d.ts +4 -64
- package/dist/marks/Brush.svelte +4 -0
- package/dist/marks/Brush.svelte.d.ts +5 -64
- package/dist/marks/Cell.svelte.d.ts +5 -4
- package/dist/marks/CellX.svelte.d.ts +30 -30
- package/dist/marks/CellY.svelte.d.ts +30 -30
- package/dist/marks/ColorLegend.svelte +1 -0
- package/dist/marks/ColorLegend.svelte.d.ts +1 -0
- package/dist/marks/CustomMark.svelte +11 -0
- package/dist/marks/CustomMark.svelte.d.ts +2 -85
- package/dist/marks/CustomMarkHTML.svelte +6 -0
- package/dist/marks/CustomMarkHTML.svelte.d.ts +6 -0
- package/dist/marks/DifferenceY.svelte +5 -1
- package/dist/marks/DifferenceY.svelte.d.ts +8 -64
- package/dist/marks/Dot.svelte.d.ts +5 -4
- package/dist/marks/DotX.svelte.d.ts +5 -5
- package/dist/marks/DotY.svelte.d.ts +5 -5
- package/dist/marks/Frame.svelte +11 -0
- package/dist/marks/Frame.svelte.d.ts +17 -5
- package/dist/marks/Geo.svelte +3 -0
- package/dist/marks/Geo.svelte.d.ts +8 -4
- package/dist/marks/Graticule.svelte +3 -0
- package/dist/marks/Graticule.svelte.d.ts +3 -0
- package/dist/marks/GridX.svelte +4 -0
- package/dist/marks/GridX.svelte.d.ts +9 -4
- package/dist/marks/GridY.svelte +4 -0
- package/dist/marks/GridY.svelte.d.ts +9 -4
- package/dist/marks/HTMLTooltip.svelte +7 -0
- package/dist/marks/HTMLTooltip.svelte.d.ts +7 -0
- package/dist/marks/Image.svelte.d.ts +5 -4
- package/dist/marks/Line.svelte.d.ts +4 -4
- package/dist/marks/LineX.svelte.d.ts +6 -6
- package/dist/marks/LineY.svelte.d.ts +6 -6
- package/dist/marks/Link.svelte +3 -1
- package/dist/marks/Link.svelte.d.ts +8 -4
- package/dist/marks/Pointer.svelte +7 -0
- package/dist/marks/Pointer.svelte.d.ts +7 -0
- package/dist/marks/Rect.svelte.d.ts +5 -4
- package/dist/marks/RuleX.svelte.d.ts +5 -4
- package/dist/marks/RuleY.svelte.d.ts +5 -4
- package/dist/marks/Spike.svelte +6 -0
- package/dist/marks/Spike.svelte.d.ts +11 -5
- package/dist/marks/Text.svelte.d.ts +9 -8
- package/dist/marks/TickX.svelte +2 -0
- package/dist/marks/TickX.svelte.d.ts +7 -4
- package/dist/marks/TickY.svelte +5 -3
- package/dist/marks/TickY.svelte.d.ts +10 -7
- package/dist/marks/Trail.svelte +11 -0
- package/dist/marks/Trail.svelte.d.ts +12 -64
- package/dist/marks/Vector.svelte +9 -0
- package/dist/marks/Vector.svelte.d.ts +14 -4
- package/dist/marks/WaffleX.svelte +6 -4
- package/dist/marks/WaffleX.svelte.d.ts +2 -86
- package/dist/marks/WaffleY.svelte +5 -4
- package/dist/marks/WaffleY.svelte.d.ts +10 -8
- package/dist/marks/helpers/Box.svelte.d.ts +1 -64
- package/dist/marks/helpers/MarkerPath.svelte.d.ts +2 -107
- package/dist/marks/helpers/Regression.svelte +6 -3
- package/dist/marks/helpers/Regression.svelte.d.ts +6 -0
- package/dist/transforms/bollinger.d.ts +8 -0
- package/dist/transforms/bollinger.js +8 -0
- package/dist/transforms/centroid.d.ts +5 -4
- package/dist/transforms/centroid.js +4 -0
- package/dist/transforms/dodge.d.ts +11 -0
- package/dist/transforms/dodge.js +6 -0
- package/dist/transforms/interval.d.ts +8 -8
- package/dist/transforms/jitter.d.ts +9 -0
- package/dist/transforms/jitter.js +9 -0
- package/dist/transforms/recordize.d.ts +16 -7
- package/dist/transforms/recordize.js +10 -6
- package/dist/transforms/rename.d.ts +5 -1
- package/dist/transforms/rename.js +4 -0
- package/dist/transforms/select.d.ts +36 -28
- package/dist/transforms/select.js +8 -0
- package/dist/transforms/shift.d.ts +8 -0
- package/dist/transforms/shift.js +6 -0
- package/dist/transforms/sort.d.ts +18 -19
- package/dist/transforms/sort.js +4 -0
- package/dist/transforms/stack.d.ts +32 -12
- package/dist/transforms/stack.js +14 -0
- package/dist/transforms/window.d.ts +13 -136
- package/dist/transforms/window.js +6 -0
- package/dist/types/channel.d.ts +12 -0
- package/dist/types/data.d.ts +13 -0
- package/dist/types/facet.d.ts +5 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/mark.d.ts +62 -0
- package/dist/types/plot.d.ts +31 -0
- package/dist/types/scale.d.ts +98 -0
- package/package.json +13 -5
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { DataRow, TransformArg } from '../types/index.js';
|
|
2
|
-
export declare const SORT_KEY:
|
|
3
|
-
export declare const IS_SORTED:
|
|
2
|
+
export declare const SORT_KEY: any;
|
|
3
|
+
export declare const IS_SORTED: any;
|
|
4
|
+
/**
|
|
5
|
+
* sorts the data according to the sort channel option; supports channel
|
|
6
|
+
* accessors, comparator functions, and {channel, order} objects
|
|
7
|
+
*/
|
|
4
8
|
export declare function sort<T>({ data, ...channels }: TransformArg<T>, options?: {
|
|
5
9
|
reverse?: boolean;
|
|
6
10
|
}): {
|
|
7
|
-
[IS_SORTED]: string | number | true | symbol | object;
|
|
8
11
|
sort: null;
|
|
9
12
|
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
10
13
|
facet?: "auto" | "include" | "exclude" | undefined;
|
|
@@ -12,8 +15,8 @@ export declare function sort<T>({ data, ...channels }: TransformArg<T>, options?
|
|
|
12
15
|
fy?: import("../types/channel.js").ChannelAccessor<T>;
|
|
13
16
|
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
14
17
|
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
15
|
-
dodgeX?:
|
|
16
|
-
dodgeY?:
|
|
18
|
+
dodgeX?: DodgeXOptions;
|
|
19
|
+
dodgeY?: DodgeYOptions;
|
|
17
20
|
fill?: import("../types/channel.js").ChannelAccessor<T>;
|
|
18
21
|
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
19
22
|
stroke?: import("../types/channel.js").ChannelAccessor<T>;
|
|
@@ -64,9 +67,7 @@ export declare function sort<T>({ data, ...channels }: TransformArg<T>, options?
|
|
|
64
67
|
class?: string | undefined;
|
|
65
68
|
style?: string | undefined;
|
|
66
69
|
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
|
|
67
|
-
data:
|
|
68
|
-
[SORT_KEY]: string | number | Date;
|
|
69
|
-
}, typeof SORT_KEY>[];
|
|
70
|
+
data: any;
|
|
70
71
|
} | {
|
|
71
72
|
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
72
73
|
facet?: "auto" | "include" | "exclude" | undefined;
|
|
@@ -74,14 +75,14 @@ export declare function sort<T>({ data, ...channels }: TransformArg<T>, options?
|
|
|
74
75
|
fy?: import("../types/channel.js").ChannelAccessor<T>;
|
|
75
76
|
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
76
77
|
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
77
|
-
dodgeX?:
|
|
78
|
-
dodgeY?:
|
|
78
|
+
dodgeX?: DodgeXOptions;
|
|
79
|
+
dodgeY?: DodgeYOptions;
|
|
79
80
|
fill?: import("../types/channel.js").ChannelAccessor<T>;
|
|
80
81
|
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
81
|
-
sort?:
|
|
82
|
+
sort?: {
|
|
82
83
|
channel: string;
|
|
83
84
|
order?: "ascending" | "descending";
|
|
84
|
-
} | import("../types/index.js").ConstantAccessor<import("../types/data.js").RawValue, T>;
|
|
85
|
+
} | ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/data.js").RawValue, T>;
|
|
85
86
|
stroke?: import("../types/channel.js").ChannelAccessor<T>;
|
|
86
87
|
strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
87
88
|
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
@@ -139,15 +140,14 @@ export declare function shuffle({ data, ...channels }: TransformArg<DataRow[]>,
|
|
|
139
140
|
seed?: number;
|
|
140
141
|
}): {
|
|
141
142
|
sort: null;
|
|
142
|
-
[IS_SORTED]: boolean;
|
|
143
143
|
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
144
144
|
facet?: "auto" | "include" | "exclude" | undefined;
|
|
145
145
|
fx?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
146
146
|
fy?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
147
147
|
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
148
148
|
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
149
|
-
dodgeX?:
|
|
150
|
-
dodgeY?:
|
|
149
|
+
dodgeX?: DodgeXOptions;
|
|
150
|
+
dodgeY?: DodgeYOptions;
|
|
151
151
|
fill?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
152
152
|
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
153
153
|
stroke?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
@@ -205,15 +205,14 @@ export declare function shuffle({ data, ...channels }: TransformArg<DataRow[]>,
|
|
|
205
205
|
*/
|
|
206
206
|
export declare function reverse({ data, ...channels }: TransformArg<DataRow[]>): {
|
|
207
207
|
sort: null;
|
|
208
|
-
[IS_SORTED]: boolean;
|
|
209
208
|
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
210
209
|
facet?: "auto" | "include" | "exclude" | undefined;
|
|
211
210
|
fx?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
212
211
|
fy?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
213
212
|
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
214
213
|
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
215
|
-
dodgeX?:
|
|
216
|
-
dodgeY?:
|
|
214
|
+
dodgeX?: DodgeXOptions;
|
|
215
|
+
dodgeY?: DodgeYOptions;
|
|
217
216
|
fill?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
218
217
|
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
219
218
|
stroke?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
@@ -264,5 +263,5 @@ export declare function reverse({ data, ...channels }: TransformArg<DataRow[]>):
|
|
|
264
263
|
class?: string | undefined;
|
|
265
264
|
style?: string | undefined;
|
|
266
265
|
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRow[]>;
|
|
267
|
-
data:
|
|
266
|
+
data: any;
|
|
268
267
|
};
|
package/dist/transforms/sort.js
CHANGED
|
@@ -4,6 +4,10 @@ import { shuffler } from 'd3-array';
|
|
|
4
4
|
import { randomLcg } from 'd3-random';
|
|
5
5
|
export const SORT_KEY = Symbol('sortKey');
|
|
6
6
|
export const IS_SORTED = Symbol('isSorted');
|
|
7
|
+
/**
|
|
8
|
+
* sorts the data according to the sort channel option; supports channel
|
|
9
|
+
* accessors, comparator functions, and {channel, order} objects
|
|
10
|
+
*/
|
|
7
11
|
export function sort({ data, ...channels }, options = {}) {
|
|
8
12
|
if (!Array.isArray(data))
|
|
9
13
|
return { data, ...channels };
|
|
@@ -1,32 +1,52 @@
|
|
|
1
1
|
import type { ChannelAccessor, TransformArg } from '../types/index.js';
|
|
2
|
+
/** the order in which series are stacked */
|
|
2
3
|
export type StackOrder = 'none' | 'appearance' | 'inside-out' | 'sum';
|
|
4
|
+
/** the offset method used to position stacked values */
|
|
3
5
|
export type StackOffset = 'none' | 'wiggle' | 'center' | 'normalize' | 'diverging';
|
|
6
|
+
/** options for the stack transform, or false to disable stacking */
|
|
4
7
|
export type StackOptions = {
|
|
8
|
+
/** the offset method, or null for the default (zero baseline) */
|
|
5
9
|
offset: null | StackOffset;
|
|
10
|
+
/** the stack order, or null for the default (input order) */
|
|
6
11
|
order: null | StackOrder;
|
|
12
|
+
/** if true, reverse the stack order */
|
|
7
13
|
reverse: boolean;
|
|
8
14
|
} | false;
|
|
15
|
+
/**
|
|
16
|
+
* stacks data along the y dimension, producing y1 and y2 channels
|
|
17
|
+
*/
|
|
9
18
|
export declare function stackY<T>({ data, ...channels }: TransformArg<T>, opts?: Partial<StackOptions>): TransformArg<T>;
|
|
19
|
+
/**
|
|
20
|
+
* stacks data along the x dimension, producing x1 and x2 channels
|
|
21
|
+
*/
|
|
10
22
|
export declare function stackX<T>({ data, ...channels }: TransformArg<T>, opts?: Partial<StackOptions>): TransformArg<T>;
|
|
23
|
+
/**
|
|
24
|
+
* creates a mosaic layout with the outer (width) dimension along x and
|
|
25
|
+
* the inner (height) dimension along y
|
|
26
|
+
*/
|
|
11
27
|
export declare function stackMosaicX<T>(args: any, opts: any): {
|
|
12
28
|
fx: ChannelAccessor<unknown>;
|
|
13
29
|
fy: ChannelAccessor<unknown>;
|
|
14
30
|
data: unknown[];
|
|
15
|
-
x:
|
|
16
|
-
x1:
|
|
17
|
-
x2:
|
|
18
|
-
y:
|
|
19
|
-
y1:
|
|
20
|
-
y2:
|
|
31
|
+
x: any;
|
|
32
|
+
x1: any;
|
|
33
|
+
x2: any;
|
|
34
|
+
y: any;
|
|
35
|
+
y1: any;
|
|
36
|
+
y2: any;
|
|
21
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* creates a mosaic layout with the outer (height) dimension along y and
|
|
40
|
+
* the inner (width) dimension along x
|
|
41
|
+
*/
|
|
22
42
|
export declare function stackMosaicY<T>(args: any, opts: any): {
|
|
23
43
|
fx: ChannelAccessor<unknown>;
|
|
24
44
|
fy: ChannelAccessor<unknown>;
|
|
25
45
|
data: unknown[];
|
|
26
|
-
x:
|
|
27
|
-
x1:
|
|
28
|
-
x2:
|
|
29
|
-
y:
|
|
30
|
-
y1:
|
|
31
|
-
y2:
|
|
46
|
+
x: any;
|
|
47
|
+
x1: any;
|
|
48
|
+
x2: any;
|
|
49
|
+
y: any;
|
|
50
|
+
y1: any;
|
|
51
|
+
y2: any;
|
|
32
52
|
};
|
package/dist/transforms/stack.js
CHANGED
|
@@ -158,9 +158,15 @@ function stackXY(byDim, data, channels, options) {
|
|
|
158
158
|
}
|
|
159
159
|
return { data, ...channels };
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* stacks data along the y dimension, producing y1 and y2 channels
|
|
163
|
+
*/
|
|
161
164
|
export function stackY({ data, ...channels }, opts = {}) {
|
|
162
165
|
return stackXY('y', data, channels, applyDefaults(opts));
|
|
163
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* stacks data along the x dimension, producing x1 and x2 channels
|
|
169
|
+
*/
|
|
164
170
|
export function stackX({ data, ...channels }, opts = {}) {
|
|
165
171
|
return stackXY('x', data, channels, applyDefaults(opts));
|
|
166
172
|
}
|
|
@@ -237,9 +243,17 @@ function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, {
|
|
|
237
243
|
y2: S.y2
|
|
238
244
|
};
|
|
239
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* creates a mosaic layout with the outer (width) dimension along x and
|
|
248
|
+
* the inner (height) dimension along y
|
|
249
|
+
*/
|
|
240
250
|
export function stackMosaicX(args, opts) {
|
|
241
251
|
return stackMosaic(args, { outer: 'x', inner: 'y' }, opts);
|
|
242
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* creates a mosaic layout with the outer (height) dimension along y and
|
|
255
|
+
* the inner (width) dimension along x
|
|
256
|
+
*/
|
|
243
257
|
export function stackMosaicY(args, opts) {
|
|
244
258
|
return stackMosaic(args, { outer: 'y', inner: 'x' }, opts);
|
|
245
259
|
}
|
|
@@ -1,146 +1,23 @@
|
|
|
1
1
|
import { type ReducerName } from '../helpers/reduce.js';
|
|
2
2
|
import type { DataRecord, TransformArg } from '../types/index.js';
|
|
3
3
|
type WindowOptions = {
|
|
4
|
+
/** the window size (number of data points) */
|
|
4
5
|
k: number;
|
|
6
|
+
/** a time interval string to use instead of a fixed window size */
|
|
5
7
|
interval: string;
|
|
8
|
+
/** where to align the window relative to the current data point */
|
|
6
9
|
anchor: 'start' | 'middle' | 'end';
|
|
10
|
+
/** the reducer function to apply within each window (e.g. "mean", "median", "sum") */
|
|
7
11
|
reduce: ReducerName;
|
|
12
|
+
/** if true, return null when the window has fewer than k values */
|
|
8
13
|
strict: boolean;
|
|
9
14
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
19
|
-
fill?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
20
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
21
|
-
sort?: ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | {
|
|
22
|
-
channel: string;
|
|
23
|
-
order?: "ascending" | "descending";
|
|
24
|
-
} | import("../types/index.js").ConstantAccessor<import("../types/data.js").RawValue, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
25
|
-
stroke?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
26
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
27
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
28
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
29
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
30
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
31
|
-
opacity?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
32
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
33
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
34
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
35
|
-
clipPath?: string | undefined;
|
|
36
|
-
mask?: string | undefined;
|
|
37
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
38
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
39
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
40
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
41
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
42
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
43
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
44
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
45
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
46
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
47
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
48
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
49
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
50
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
51
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
52
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
53
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
54
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
55
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
56
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
57
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
58
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
59
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
60
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
61
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
62
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
63
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
64
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
65
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
66
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
67
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
68
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
69
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
70
|
-
class?: string | undefined;
|
|
71
|
-
style?: string | undefined;
|
|
72
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
73
|
-
data: {
|
|
74
|
-
[x: string]: import("../types/data.js").RawValue;
|
|
75
|
-
[x: symbol]: import("../types/data.js").RawValue;
|
|
76
|
-
}[];
|
|
77
|
-
};
|
|
78
|
-
export declare function windowY(args: TransformArg<DataRecord>, options: WindowOptions): {
|
|
79
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
80
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
81
|
-
fx?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
82
|
-
fy?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
83
|
-
dx?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
84
|
-
dy?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
85
|
-
dodgeX?: import("./dodge.js").DodgeXOptions | undefined;
|
|
86
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
87
|
-
fill?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
88
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
89
|
-
sort?: ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | {
|
|
90
|
-
channel: string;
|
|
91
|
-
order?: "ascending" | "descending";
|
|
92
|
-
} | import("../types/index.js").ConstantAccessor<import("../types/data.js").RawValue, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
93
|
-
stroke?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
94
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
95
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
96
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
97
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
98
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
99
|
-
opacity?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
100
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
101
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
102
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
103
|
-
clipPath?: string | undefined;
|
|
104
|
-
mask?: string | undefined;
|
|
105
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
106
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
107
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
108
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
109
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
110
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
111
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
112
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
113
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
114
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
115
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
116
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
117
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
118
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
119
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
120
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
121
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
122
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
123
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
124
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
125
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
126
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
127
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
128
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
129
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
130
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
131
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
132
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
133
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
134
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
135
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
136
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
137
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
138
|
-
class?: string | undefined;
|
|
139
|
-
style?: string | undefined;
|
|
140
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Record<string | symbol, import("../types/data.js").RawValue>>;
|
|
141
|
-
data: {
|
|
142
|
-
[x: string]: import("../types/data.js").RawValue;
|
|
143
|
-
[x: symbol]: import("../types/data.js").RawValue;
|
|
144
|
-
}[];
|
|
145
|
-
};
|
|
15
|
+
/**
|
|
16
|
+
* applies a sliding window reducer to the x channel
|
|
17
|
+
*/
|
|
18
|
+
export declare function windowX(args: TransformArg<DataRecord>, options: WindowOptions): any;
|
|
19
|
+
/**
|
|
20
|
+
* applies a sliding window reducer to the y channel
|
|
21
|
+
*/
|
|
22
|
+
export declare function windowY(args: TransformArg<DataRecord>, options: WindowOptions): any;
|
|
146
23
|
export {};
|
|
@@ -3,9 +3,15 @@ import { isValid } from '../helpers/index.js';
|
|
|
3
3
|
import { mayberReducer } from '../helpers/reduce.js';
|
|
4
4
|
import { resolveChannel } from '../helpers/resolve.js';
|
|
5
5
|
import { groups as d3Groups } from 'd3-array';
|
|
6
|
+
/**
|
|
7
|
+
* applies a sliding window reducer to the x channel
|
|
8
|
+
*/
|
|
6
9
|
export function windowX(args, options) {
|
|
7
10
|
return windowDim('x', args, options);
|
|
8
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* applies a sliding window reducer to the y channel
|
|
14
|
+
*/
|
|
9
15
|
export function windowY(args, options) {
|
|
10
16
|
return windowDim('y', args, options);
|
|
11
17
|
}
|
package/dist/types/channel.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import type { ConstantAccessor, RawValue } from './index.js';
|
|
2
|
+
/** a record of channel names to their accessor definitions */
|
|
2
3
|
export type Channels<T> = Record<string | symbol, ChannelAccessor<T> | ConstantAccessor<T, string | number | boolean | symbol>>;
|
|
4
|
+
/**
|
|
5
|
+
* a channel accessor: either a simple channel value, or an object with
|
|
6
|
+
* a value and an optional scale override
|
|
7
|
+
*/
|
|
3
8
|
export type ChannelAccessor<T = Record<string | symbol, RawValue>> = ChannelValue<T> | {
|
|
4
9
|
/** the channel value */
|
|
5
10
|
value: ChannelValue<T>;
|
|
6
11
|
/** you can bypass the scale by passing null */
|
|
7
12
|
scale: boolean | null;
|
|
8
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* the value for a channel: a constant, a data field name, an accessor
|
|
16
|
+
* function, or null/undefined to leave the channel unset
|
|
17
|
+
*/
|
|
9
18
|
export type ChannelValue<T = Record<string | symbol, RawValue>> = RawValue | keyof T | ((d: T, index: number) => RawValue) | null | undefined;
|
|
19
|
+
/** the name of a channel that is bound to a scale */
|
|
10
20
|
export type ScaledChannelName = 'fill' | 'fillOpacity' | 'opacity' | 'r' | 'length' | 'stroke' | 'strokeOpacity' | 'symbol' | 'fx' | 'fy' | 'x' | 'x1' | 'x2' | 'y' | 'y1' | 'y2';
|
|
21
|
+
/** maps a scaled channel name to its output type (string for color/symbol, number otherwise) */
|
|
11
22
|
export type ScaledChannelType<T extends ScaledChannelName> = T extends 'fill' | 'stroke' | 'symbol' ? string : number;
|
|
23
|
+
/** all channel names, including non-scaled channels like z, sort, filter, and interval */
|
|
12
24
|
export type ChannelName = ScaledChannelName | 'z' | 'sort' | 'filter' | 'interval';
|
package/dist/types/data.d.ts
CHANGED
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
import type { ScaledChannelName, ScaledChannelType } from './channel.js';
|
|
2
|
+
/** a raw data value that can be used in channels */
|
|
2
3
|
export type RawValue = number | Date | boolean | string | symbol | object | null;
|
|
4
|
+
/** a data record passed to marks; generic over the user's row shape */
|
|
3
5
|
export type DataRecord<T = Record<string | symbol, RawValue>> = T;
|
|
6
|
+
/** a data record after channel accessors have been resolved to concrete values */
|
|
4
7
|
export type ResolvedDataRecord<T = Record<string | symbol, RawValue>> = Partial<Record<ScaledChannelName, any>> & {
|
|
8
|
+
/** the original data record before resolution */
|
|
5
9
|
datum: DataRecord<T>;
|
|
10
|
+
/** the index of this record in the original data array */
|
|
6
11
|
index: number;
|
|
7
12
|
};
|
|
13
|
+
/** a data record after scale functions have been applied to channel values */
|
|
8
14
|
export type ScaledDataRecord<T = Record<string | symbol, RawValue>> = Partial<{
|
|
9
15
|
[K in ScaledChannelName]?: ScaledChannelType<K>;
|
|
10
16
|
}> & {
|
|
17
|
+
/** horizontal pixel offset applied after scaling */
|
|
11
18
|
dx: number;
|
|
19
|
+
/** vertical pixel offset applied after scaling */
|
|
12
20
|
dy: number;
|
|
21
|
+
/** the original data record */
|
|
13
22
|
datum: DataRecord<T>;
|
|
23
|
+
/** the resolved (pre-scaling) channel values */
|
|
14
24
|
resolved: ResolvedDataRecord<T>;
|
|
25
|
+
/** whether this record has valid values for all required channels */
|
|
15
26
|
valid: Boolean;
|
|
27
|
+
/** the index of this record in the original data array */
|
|
16
28
|
index: number;
|
|
17
29
|
};
|
|
30
|
+
/** a data row as passed by the user; can be a record, a raw value, a coordinate pair, or null */
|
|
18
31
|
export type DataRow<T = Record<string | symbol, RawValue>> = DataRecord<T> | RawValue | [number, number] | null;
|
package/dist/types/facet.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { ChannelAccessor, ChannelName, DataRecord, RawValue } from './index.js';
|
|
2
|
+
/** the state of a single facet panel within a faceted plot */
|
|
2
3
|
type FacetState = {
|
|
4
|
+
/** the current horizontal facet value */
|
|
3
5
|
fx: RawValue;
|
|
6
|
+
/** the current vertical facet value */
|
|
4
7
|
fy: RawValue;
|
|
5
8
|
/**
|
|
6
9
|
* True, if the facet is the leftmost in its row
|
|
@@ -39,12 +42,14 @@ type FacetState = {
|
|
|
39
42
|
* Test if the given data record is visible in the current facet.
|
|
40
43
|
*/
|
|
41
44
|
type TestFacetFunction = (datum: DataRecord<any>, channels: Record<ChannelName, ChannelAccessor>) => boolean;
|
|
45
|
+
/** context provided to marks for facet-aware filtering and state access */
|
|
42
46
|
export type FacetContext = {
|
|
43
47
|
/**
|
|
44
48
|
* Returns a stateful function that tests whether a specific data
|
|
45
49
|
* record is visible in the current facet or not.
|
|
46
50
|
*/
|
|
47
51
|
getTestFacet: () => TestFacetFunction;
|
|
52
|
+
/** returns the current facet panel state (position, edge flags) */
|
|
48
53
|
getFacetState: () => FacetState;
|
|
49
54
|
};
|
|
50
55
|
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ import type { MarkerShape } from '../marks/helpers/Marker.svelte';
|
|
|
4
4
|
import type { Channels, ScaledChannelName } from './channel.js';
|
|
5
5
|
import type { RawValue } from './data.js';
|
|
6
6
|
import type { BaseMarkProps } from './mark.js';
|
|
7
|
+
/** a generic record type used when the specific mark options type is not known */
|
|
7
8
|
export type GenericMarkOptions = Record<string | symbol, any>;
|
|
9
|
+
/** the name of a d3 curve interpolation method */
|
|
8
10
|
export type CurveName = 'basis' | 'basis-closed' | 'basis-open' | 'bundle' | 'bump-x' | 'bump-y' | 'cardinal' | 'cardinal-closed' | 'cardinal-open' | 'catmull-rom' | 'catmull-rom-closed' | 'catmull-rom-open' | 'linear' | 'linear-closed' | 'monotone-x' | 'monotone-y' | 'natural' | 'step' | 'step-after' | 'step-before';
|
|
9
11
|
export type MarkerOptions = {
|
|
10
12
|
/**
|
|
@@ -28,36 +30,52 @@ export type MarkerOptions = {
|
|
|
28
30
|
*/
|
|
29
31
|
markerScale?: ConstantAccessor<number>;
|
|
30
32
|
};
|
|
33
|
+
/** a value that is either a constant or a function that computes a per-datum value */
|
|
31
34
|
export type ConstantAccessor<K, T = Record<string | symbol, RawValue>> = K | ((d: T, index: number) => K) | null | undefined;
|
|
35
|
+
/** the input argument to a data transform: data array plus channel mappings and mark props */
|
|
32
36
|
export type TransformArg<T> = Channels<T> & BaseMarkProps<T> & {
|
|
33
37
|
data: T[];
|
|
34
38
|
};
|
|
39
|
+
/** the input argument to a map transform: data array plus channel mappings */
|
|
35
40
|
export type MapArg<T> = Channels<T> & {
|
|
36
41
|
data: T[];
|
|
37
42
|
};
|
|
43
|
+
/** transform input for raw data rows (before recordization) */
|
|
38
44
|
export type TransformArgsRow<T extends RawValue | object> = Partial<Channels<T>> & {
|
|
39
45
|
data: T[];
|
|
40
46
|
};
|
|
47
|
+
/** transform input for data records (after recordization) */
|
|
41
48
|
export type TransformArgsRecord<T extends object> = Partial<Channels<T>> & {
|
|
42
49
|
data: T[];
|
|
43
50
|
};
|
|
51
|
+
/** the return type of a transform, ensuring data is always present */
|
|
44
52
|
export type TransformReturn<C extends TransformArg<T>, T> = C & Required<Pick<Channels<T>, 'data'>>;
|
|
53
|
+
/** writable stores used by marks to contribute to automatic margin computation */
|
|
45
54
|
export type AutoMarginStores = {
|
|
55
|
+
/** per-mark contributions to the top margin */
|
|
46
56
|
autoMarginTop: Writable<Map<string, number>>;
|
|
57
|
+
/** per-mark contributions to the left margin */
|
|
47
58
|
autoMarginLeft: Writable<Map<string, number>>;
|
|
59
|
+
/** per-mark contributions to the right margin */
|
|
48
60
|
autoMarginRight: Writable<Map<string, number>>;
|
|
61
|
+
/** per-mark contributions to the bottom margin */
|
|
49
62
|
autoMarginBottom: Writable<Map<string, number>>;
|
|
50
63
|
};
|
|
64
|
+
/** a function that maps source values (S) to target values (T) for the given indices (I) */
|
|
51
65
|
export type MapIndexFunction = (I: number[], S: RawValue[], T: RawValue[]) => void;
|
|
66
|
+
/** an object implementing the mapIndex interface for custom map transforms */
|
|
52
67
|
export type MapIndexObject = {
|
|
68
|
+
/** the function that performs the index-based mapping */
|
|
53
69
|
mapIndex: MapIndexFunction;
|
|
54
70
|
};
|
|
71
|
+
/** a named map method, a custom mapping function, or a MapIndexObject */
|
|
55
72
|
export type MapMethod = 'cumsum' | 'rank' | 'quantile' | ((I: number[], S: number[]) => number[]) | MapIndexObject;
|
|
56
73
|
/**
|
|
57
74
|
* An object specifying mapping methods for one or more scaled channels
|
|
58
75
|
* e.g. ```{ x: 'rank' }```
|
|
59
76
|
*/
|
|
60
77
|
export type MapOptions = Partial<Record<ScaledChannelName, MapMethod>>;
|
|
78
|
+
/** a record indicating which scaled channels are actively used by a mark */
|
|
61
79
|
export type UsedScales = Record<ScaledChannelName, boolean>;
|
|
62
80
|
export * from './channel';
|
|
63
81
|
export * from './colorScheme';
|