svelteplot 0.10.3 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Mark.svelte +42 -25
- package/dist/Mark.svelte.d.ts +111 -32
- package/dist/Plot.svelte +21 -15
- package/dist/core/Facet.svelte +1 -1
- package/dist/core/FacetAxes.svelte +13 -8
- package/dist/core/FacetGrid.svelte +4 -4
- package/dist/core/Plot.svelte +41 -35
- package/dist/helpers/autoScales.d.ts +3 -3
- package/dist/helpers/autoScales.js +28 -18
- package/dist/helpers/autoTicks.js +2 -0
- package/dist/helpers/callWithProps.d.ts +1 -2
- package/dist/helpers/facets.js +0 -1
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/mergeDeep.d.ts +1 -3
- package/dist/helpers/mergeDeep.js +15 -16
- package/dist/helpers/projection.d.ts +4 -3
- package/dist/helpers/projection.js +17 -5
- package/dist/helpers/reduce.d.ts +4 -4
- package/dist/helpers/reduce.js +6 -4
- package/dist/helpers/regressionLoess.js +2 -1
- package/dist/helpers/resolve.d.ts +6 -3
- package/dist/helpers/resolve.js +25 -16
- package/dist/helpers/scales.d.ts +10 -10
- package/dist/helpers/scales.js +43 -13
- package/dist/helpers/time.d.ts +10 -3
- package/dist/helpers/time.js +2 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/plotDefaults.d.ts +3 -1
- package/dist/hooks/plotDefaults.js +33 -1
- package/dist/hooks/usePlot.svelte.d.ts +10 -25
- package/dist/hooks/usePlot.svelte.js +8 -7
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -3
- package/dist/marks/Area.svelte +24 -13
- package/dist/marks/Area.svelte.d.ts +118 -34
- package/dist/marks/AreaX.svelte +42 -8
- package/dist/marks/AreaX.svelte.d.ts +154 -71
- package/dist/marks/AreaY.svelte +42 -8
- package/dist/marks/AreaY.svelte.d.ts +154 -71
- package/dist/marks/Arrow.svelte +42 -23
- package/dist/marks/Arrow.svelte.d.ts +114 -35
- package/dist/marks/AxisX.svelte +43 -28
- package/dist/marks/AxisX.svelte.d.ts +125 -40
- package/dist/marks/AxisY.svelte +43 -26
- package/dist/marks/AxisY.svelte.d.ts +127 -40
- package/dist/marks/BarX.svelte +12 -10
- package/dist/marks/BarX.svelte.d.ts +104 -32
- package/dist/marks/BarY.svelte +11 -10
- package/dist/marks/BarY.svelte.d.ts +106 -34
- package/dist/marks/BollingerX.svelte +4 -7
- package/dist/marks/BollingerX.svelte.d.ts +105 -30
- package/dist/marks/BollingerY.svelte +3 -0
- package/dist/marks/BollingerY.svelte.d.ts +105 -30
- package/dist/marks/BoxX.svelte +3 -3
- package/dist/marks/BoxY.svelte +12 -9
- package/dist/marks/BoxY.svelte.d.ts +128 -53
- package/dist/marks/Brush.svelte +26 -21
- package/dist/marks/Brush.svelte.d.ts +119 -60
- package/dist/marks/Cell.svelte +13 -9
- package/dist/marks/Cell.svelte.d.ts +105 -30
- package/dist/marks/CellX.svelte +2 -1
- package/dist/marks/CellX.svelte.d.ts +105 -32
- package/dist/marks/CellY.svelte +2 -1
- package/dist/marks/CellY.svelte.d.ts +105 -32
- package/dist/marks/ColorLegend.svelte +24 -13
- package/dist/marks/ColorLegend.svelte.d.ts +1 -0
- package/dist/marks/CustomMark.svelte +16 -10
- package/dist/marks/CustomMark.svelte.d.ts +112 -31
- package/dist/marks/CustomMarkHTML.svelte +8 -2
- package/dist/marks/CustomMarkHTML.svelte.d.ts +8 -2
- package/dist/marks/DifferenceY.svelte +31 -20
- package/dist/marks/DifferenceY.svelte.d.ts +134 -55
- package/dist/marks/Dot.svelte +21 -11
- package/dist/marks/Dot.svelte.d.ts +117 -38
- package/dist/marks/DotX.svelte +2 -0
- package/dist/marks/DotX.svelte.d.ts +136 -62
- package/dist/marks/DotY.svelte +1 -0
- package/dist/marks/DotY.svelte.d.ts +135 -62
- package/dist/marks/Frame.svelte +47 -9
- package/dist/marks/Frame.svelte.d.ts +124 -41
- package/dist/marks/Geo.svelte +21 -12
- package/dist/marks/Geo.svelte.d.ts +105 -30
- package/dist/marks/Graticule.svelte +3 -0
- package/dist/marks/Graticule.svelte.d.ts +3 -0
- package/dist/marks/GridX.svelte +31 -16
- package/dist/marks/GridX.svelte.d.ts +108 -32
- package/dist/marks/GridY.svelte +30 -15
- package/dist/marks/GridY.svelte.d.ts +108 -32
- package/dist/marks/HTMLTooltip.svelte +14 -7
- package/dist/marks/HTMLTooltip.svelte.d.ts +7 -0
- package/dist/marks/Image.svelte +50 -25
- package/dist/marks/Image.svelte.d.ts +117 -35
- package/dist/marks/Line.svelte +67 -44
- package/dist/marks/Line.svelte.d.ts +119 -30
- package/dist/marks/LineX.svelte +2 -1
- package/dist/marks/LineX.svelte.d.ts +142 -69
- package/dist/marks/LineY.svelte +2 -1
- package/dist/marks/LineY.svelte.d.ts +142 -69
- package/dist/marks/Link.svelte +70 -46
- package/dist/marks/Link.svelte.d.ts +126 -41
- package/dist/marks/Pointer.svelte +24 -15
- package/dist/marks/Pointer.svelte.d.ts +7 -0
- package/dist/marks/Rect.svelte +13 -5
- package/dist/marks/Rect.svelte.d.ts +116 -35
- package/dist/marks/RectX.svelte +6 -3
- package/dist/marks/RectX.svelte.d.ts +158 -12
- package/dist/marks/RectY.svelte +6 -3
- package/dist/marks/RectY.svelte.d.ts +158 -12
- package/dist/marks/RegressionX.svelte +13 -6
- package/dist/marks/RegressionX.svelte.d.ts +8 -3
- package/dist/marks/RegressionY.svelte +13 -6
- package/dist/marks/RegressionY.svelte.d.ts +8 -3
- package/dist/marks/RuleX.svelte +18 -11
- package/dist/marks/RuleX.svelte.d.ts +112 -32
- package/dist/marks/RuleY.svelte +19 -12
- package/dist/marks/RuleY.svelte.d.ts +114 -34
- package/dist/marks/Spike.svelte +11 -5
- package/dist/marks/Spike.svelte.d.ts +146 -68
- package/dist/marks/Text.svelte +24 -7
- package/dist/marks/Text.svelte.d.ts +253 -75
- package/dist/marks/TickX.svelte +56 -48
- package/dist/marks/TickX.svelte.d.ts +114 -40
- package/dist/marks/TickY.svelte +59 -51
- package/dist/marks/TickY.svelte.d.ts +117 -43
- package/dist/marks/Trail.svelte +25 -13
- package/dist/marks/Trail.svelte.d.ts +116 -33
- package/dist/marks/Vector.svelte +20 -11
- package/dist/marks/Vector.svelte.d.ts +116 -35
- package/dist/marks/WaffleX.svelte +18 -16
- package/dist/marks/WaffleX.svelte.d.ts +131 -57
- package/dist/marks/WaffleY.svelte +16 -15
- package/dist/marks/WaffleY.svelte.d.ts +129 -56
- package/dist/marks/helpers/Anchor.svelte +17 -2
- package/dist/marks/helpers/Anchor.svelte.d.ts +16 -1
- package/dist/marks/helpers/AreaCanvas.svelte +8 -8
- package/dist/marks/helpers/BaseAxisX.svelte +38 -41
- package/dist/marks/helpers/BaseAxisX.svelte.d.ts +11 -17
- package/dist/marks/helpers/BaseAxisY.svelte +35 -35
- package/dist/marks/helpers/BaseAxisY.svelte.d.ts +12 -15
- package/dist/marks/helpers/Box.svelte +35 -28
- package/dist/marks/helpers/Box.svelte.d.ts +122 -50
- package/dist/marks/helpers/DotCanvas.svelte +11 -9
- package/dist/marks/helpers/GeoCanvas.svelte +7 -6
- package/dist/marks/helpers/LineCanvas.svelte +7 -7
- package/dist/marks/helpers/LinearGradientX.svelte +2 -2
- package/dist/marks/helpers/LinearGradientX.svelte.d.ts +1 -1
- package/dist/marks/helpers/LinearGradientY.svelte +2 -2
- package/dist/marks/helpers/LinearGradientY.svelte.d.ts +1 -1
- package/dist/marks/helpers/Marker.svelte +2 -2
- package/dist/marks/helpers/MarkerPath.svelte +15 -12
- package/dist/marks/helpers/MarkerPath.svelte.d.ts +105 -32
- package/dist/marks/helpers/MultilineText.svelte +24 -17
- package/dist/marks/helpers/MultilineText.svelte.d.ts +1 -1
- package/dist/marks/helpers/RectCanvas.svelte +31 -26
- package/dist/marks/helpers/RectPath.svelte +2 -2
- package/dist/marks/helpers/Regression.svelte +176 -86
- package/dist/marks/helpers/Regression.svelte.d.ts +20 -8
- package/dist/marks/helpers/RuleCanvas.svelte +9 -6
- package/dist/marks/helpers/TextCanvas.svelte +13 -9
- package/dist/marks/helpers/TextCanvas.svelte.d.ts +6 -6
- package/dist/marks/helpers/TickCanvas.svelte +6 -5
- package/dist/marks/helpers/TrailCanvas.svelte +16 -18
- package/dist/marks/helpers/TrailCanvas.svelte.d.ts +3 -5
- package/dist/marks/helpers/canvas.js +16 -9
- package/dist/marks/helpers/events.d.ts +2 -2
- package/dist/marks/helpers/events.js +14 -7
- package/dist/marks/helpers/waffle.d.ts +3 -3
- package/dist/marks/helpers/waffle.js +6 -4
- package/dist/regression/polynomial.d.ts +1 -1
- package/dist/regression/polynomial.js +5 -5
- package/dist/regression/utils/determination.d.ts +1 -1
- package/dist/regression/utils/determination.js +1 -1
- package/dist/regression/utils/geometry.d.ts +1 -1
- package/dist/regression/utils/interpose.d.ts +1 -1
- package/dist/regression/utils/interpose.js +1 -1
- package/dist/regression/utils/points.d.ts +1 -1
- package/dist/transforms/bin.d.ts +3 -3
- package/dist/transforms/bin.js +29 -20
- package/dist/transforms/bollinger.d.ts +8 -0
- package/dist/transforms/bollinger.js +9 -1
- package/dist/transforms/centroid.d.ts +4 -0
- package/dist/transforms/centroid.js +4 -0
- package/dist/transforms/density.d.ts +4 -4
- package/dist/transforms/density.js +20 -13
- package/dist/transforms/dodge.d.ts +12 -1
- package/dist/transforms/dodge.js +15 -6
- package/dist/transforms/group.d.ts +141 -4
- package/dist/transforms/group.js +4 -1
- package/dist/transforms/interval.d.ts +204 -60
- package/dist/transforms/jitter.d.ts +421 -4
- package/dist/transforms/jitter.js +10 -1
- package/dist/transforms/map.d.ts +412 -4
- package/dist/transforms/map.js +3 -3
- package/dist/transforms/normalize.d.ts +276 -5
- package/dist/transforms/normalize.js +5 -3
- package/dist/transforms/recordize.d.ts +17 -5
- package/dist/transforms/recordize.js +13 -9
- package/dist/transforms/rename.d.ts +11 -4
- package/dist/transforms/rename.js +7 -2
- package/dist/transforms/select.d.ts +722 -210
- package/dist/transforms/select.js +13 -1
- package/dist/transforms/shift.d.ts +8 -0
- package/dist/transforms/shift.js +20 -6
- package/dist/transforms/sort.d.ts +13 -258
- package/dist/transforms/sort.js +13 -10
- package/dist/transforms/stack.d.ts +58 -9
- package/dist/transforms/stack.js +27 -11
- package/dist/transforms/window.d.ts +221 -66
- package/dist/transforms/window.js +8 -2
- package/dist/types/axes.d.ts +43 -0
- package/dist/types/axes.js +1 -0
- package/dist/types/channel.d.ts +30 -2
- package/dist/types/data.d.ts +14 -1
- package/dist/types/facet.d.ts +5 -0
- package/dist/types/index.d.ts +33 -8
- package/dist/types/index.js +11 -7
- package/dist/types/mark.d.ts +124 -35
- package/dist/types/plot.d.ts +118 -16
- package/dist/types/scale.d.ts +125 -8
- package/package.json +178 -175
- package/dist/helpers/autoTicks.d.ts +0 -12
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { groupFacetsAndZ } from '../helpers/group.js';
|
|
2
2
|
import { resolveChannel } from '../helpers/resolve.js';
|
|
3
3
|
// let o: SelectOptions = { x: 'min'};
|
|
4
|
+
/**
|
|
5
|
+
* selects one datum per group based on the given criteria; use "first"/"last"
|
|
6
|
+
* for positional selection, or `{channel: "min"/"max"}` for value-based selection
|
|
7
|
+
*/
|
|
4
8
|
export function select({ data, ...channels }, options) {
|
|
5
9
|
const newData = [];
|
|
6
10
|
groupFacetsAndZ(data, channels, (items) => {
|
|
@@ -22,7 +26,11 @@ export function select({ data, ...channels }, options) {
|
|
|
22
26
|
...item,
|
|
23
27
|
__sortby: resolveChannel(sortOptions[0][0], item, channels)
|
|
24
28
|
}))
|
|
25
|
-
.sort((a, b) =>
|
|
29
|
+
.sort((a, b) => a.__sortby > b.__sortby
|
|
30
|
+
? 1
|
|
31
|
+
: a.__sortby < b.__sortby
|
|
32
|
+
? -1
|
|
33
|
+
: 0)
|
|
26
34
|
.at(sortOptions[0][1] === 'min' ? 0 : -1);
|
|
27
35
|
newData.push(selected);
|
|
28
36
|
}
|
|
@@ -41,15 +49,19 @@ export function selectFirst(args) {
|
|
|
41
49
|
export function selectLast(args) {
|
|
42
50
|
return select(args, 'last');
|
|
43
51
|
}
|
|
52
|
+
/** keeps only the datum with the smallest x value per group */
|
|
44
53
|
export function selectMinX(args) {
|
|
45
54
|
return select(args, { x: 'min' });
|
|
46
55
|
}
|
|
56
|
+
/** keeps only the datum with the largest x value per group */
|
|
47
57
|
export function selectMaxX(args) {
|
|
48
58
|
return select(args, { x: 'max' });
|
|
49
59
|
}
|
|
60
|
+
/** keeps only the datum with the smallest y value per group */
|
|
50
61
|
export function selectMinY(args) {
|
|
51
62
|
return select(args, { y: 'min' });
|
|
52
63
|
}
|
|
64
|
+
/** keeps only the datum with the largest y value per group */
|
|
53
65
|
export function selectMaxY(args) {
|
|
54
66
|
return select(args, { y: 'max' });
|
|
55
67
|
}
|
|
@@ -2,12 +2,20 @@ import type { DataRecord, TransformArg } from '../types/index.js';
|
|
|
2
2
|
type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
|
3
3
|
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
|
4
4
|
}[Keys];
|
|
5
|
+
/** per-channel shift amounts for x channels; values can be numbers or time interval strings (e.g. "1 month") */
|
|
5
6
|
type ShiftXOptions = {
|
|
6
7
|
[key in 'x' | 'x1' | 'x2']: string | number;
|
|
7
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* shifts the x channel values by a fixed amount or time interval
|
|
11
|
+
*/
|
|
8
12
|
export declare function shiftX({ data, ...channels }: TransformArg<DataRecord>, shiftBy: string | number | RequireAtLeastOne<ShiftXOptions>): TransformArg<DataRecord>;
|
|
13
|
+
/** per-channel shift amounts for y channels; values can be numbers or time interval strings (e.g. "1 month") */
|
|
9
14
|
type ShiftYOptions = {
|
|
10
15
|
[key in 'y' | 'y1' | 'y2']: string | number;
|
|
11
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* shifts the y channel values by a fixed amount or time interval
|
|
19
|
+
*/
|
|
12
20
|
export declare function shiftY({ data, ...channels }: TransformArg<DataRecord>, shiftBy: string | number | RequireAtLeastOne<ShiftYOptions>): TransformArg<DataRecord>;
|
|
13
21
|
export {};
|
package/dist/transforms/shift.js
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import { resolveChannel } from '../helpers/resolve.js';
|
|
2
2
|
import { maybeTimeInterval } from '../helpers/time.js';
|
|
3
|
+
/**
|
|
4
|
+
* shifts the x channel values by a fixed amount or time interval
|
|
5
|
+
*/
|
|
3
6
|
export function shiftX({ data, ...channels }, shiftBy) {
|
|
4
7
|
if (typeof shiftBy === 'number' || typeof shiftBy === 'string') {
|
|
5
8
|
shiftBy = { x: shiftBy };
|
|
6
9
|
}
|
|
7
10
|
if (shiftBy) {
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
return shiftChannels('x', shiftBy, {
|
|
12
|
+
data,
|
|
13
|
+
...channels
|
|
14
|
+
});
|
|
10
15
|
}
|
|
11
16
|
return { data, ...channels };
|
|
12
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* shifts the y channel values by a fixed amount or time interval
|
|
20
|
+
*/
|
|
13
21
|
export function shiftY({ data, ...channels }, shiftBy) {
|
|
14
22
|
if (typeof shiftBy === 'number' || typeof shiftBy === 'string') {
|
|
15
23
|
shiftBy = { y: shiftBy };
|
|
16
24
|
}
|
|
17
25
|
if (shiftBy)
|
|
18
|
-
return shiftChannels('y', shiftBy, {
|
|
26
|
+
return shiftChannels('y', shiftBy, {
|
|
27
|
+
data,
|
|
28
|
+
...channels
|
|
29
|
+
});
|
|
19
30
|
return { data, ...channels };
|
|
20
31
|
}
|
|
21
32
|
function shiftChannels(shiftDim, shiftBy, { data, ...channels }) {
|
|
@@ -29,11 +40,14 @@ function shiftChannels(shiftDim, shiftBy, { data, ...channels }) {
|
|
|
29
40
|
resolveChannel(shiftFrom, d, channels) + shift;
|
|
30
41
|
}
|
|
31
42
|
else if (typeof shift === 'string') {
|
|
32
|
-
const
|
|
33
|
-
|
|
43
|
+
const match = shift.match(/^([+-])?(\d+)? ?([a-z]+)$/);
|
|
44
|
+
if (!match)
|
|
45
|
+
throw new Error(`Invalid shift format: '${shift}'`);
|
|
46
|
+
const [, sign, value, unit] = match;
|
|
47
|
+
const step = (sign === '-' ? -1 : 1) * (Number(value) || 1);
|
|
34
48
|
const interval = maybeTimeInterval(unit);
|
|
35
49
|
if (!interval)
|
|
36
|
-
throw new Error(`Invalid shift interval: ${shift}`);
|
|
50
|
+
throw new Error(`Invalid shift interval: '${shift}'`);
|
|
37
51
|
newRow[`__shift_${channel}`] = interval.offset(resolveChannel(shiftFrom, d, channels), step);
|
|
38
52
|
}
|
|
39
53
|
}
|
|
@@ -1,268 +1,23 @@
|
|
|
1
|
-
import type { DataRow, TransformArg } from '../types/index.js';
|
|
2
1
|
export declare const SORT_KEY: unique symbol;
|
|
3
2
|
export declare const IS_SORTED: unique symbol;
|
|
4
|
-
|
|
5
|
-
reverse?: boolean;
|
|
6
|
-
}): {
|
|
7
|
-
[IS_SORTED]: string | number | true | symbol | object;
|
|
8
|
-
sort: null;
|
|
9
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
10
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
11
|
-
fx?: import("../types/channel.js").ChannelAccessor<T>;
|
|
12
|
-
fy?: import("../types/channel.js").ChannelAccessor<T>;
|
|
13
|
-
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
14
|
-
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
15
|
-
dodgeX?: import("./dodge.js").DodgeXOptions | undefined;
|
|
16
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
17
|
-
fill?: import("../types/channel.js").ChannelAccessor<T>;
|
|
18
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
19
|
-
stroke?: import("../types/channel.js").ChannelAccessor<T>;
|
|
20
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
21
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
22
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
|
|
23
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
|
|
24
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
25
|
-
opacity?: import("../types/channel.js").ChannelAccessor<T>;
|
|
26
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
27
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
28
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
|
|
29
|
-
clipPath?: string | undefined;
|
|
30
|
-
mask?: 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 | undefined;
|
|
65
|
-
style?: string | undefined;
|
|
66
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
|
|
67
|
-
data: T[] | Omit<T & {
|
|
68
|
-
[SORT_KEY]: string | number | Date;
|
|
69
|
-
}, typeof SORT_KEY>[];
|
|
70
|
-
} | {
|
|
71
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
|
|
72
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
73
|
-
fx?: import("../types/channel.js").ChannelAccessor<T>;
|
|
74
|
-
fy?: import("../types/channel.js").ChannelAccessor<T>;
|
|
75
|
-
dx?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
76
|
-
dy?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
77
|
-
dodgeX?: import("./dodge.js").DodgeXOptions | undefined;
|
|
78
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
79
|
-
fill?: import("../types/channel.js").ChannelAccessor<T>;
|
|
80
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
81
|
-
sort?: ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | {
|
|
82
|
-
channel: string;
|
|
83
|
-
order?: "ascending" | "descending";
|
|
84
|
-
} | import("../types/index.js").ConstantAccessor<import("../types/data.js").RawValue, T>;
|
|
85
|
-
stroke?: import("../types/channel.js").ChannelAccessor<T>;
|
|
86
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
87
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
88
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
|
|
89
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
|
|
90
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
91
|
-
opacity?: import("../types/channel.js").ChannelAccessor<T>;
|
|
92
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
93
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
|
|
94
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
|
|
95
|
-
clipPath?: string | undefined;
|
|
96
|
-
mask?: string | undefined;
|
|
97
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
98
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, T>;
|
|
99
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, T>;
|
|
100
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
101
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
102
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
103
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
104
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
105
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
106
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
107
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
108
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
109
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
110
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
111
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
112
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
113
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
114
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
115
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
116
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
117
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
118
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
119
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
120
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
121
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
122
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
123
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
124
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
125
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
126
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
127
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
128
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
129
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
130
|
-
class?: string | undefined;
|
|
131
|
-
style?: string | undefined;
|
|
132
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
|
|
3
|
+
type TransformLike<T = Record<string | symbol, any>> = {
|
|
133
4
|
data: T[];
|
|
134
|
-
}
|
|
5
|
+
} & Record<string | symbol, any>;
|
|
6
|
+
/**
|
|
7
|
+
* sorts the data according to the sort channel option; supports channel
|
|
8
|
+
* accessors, comparator functions, and `{channel, order}` objects
|
|
9
|
+
*/
|
|
10
|
+
export declare function sort<T, C extends TransformLike<T> = TransformLike<T>>({ data, ...channels }: C, options?: {
|
|
11
|
+
reverse?: boolean;
|
|
12
|
+
}): C;
|
|
135
13
|
/**
|
|
136
14
|
* shuffles the data row order
|
|
137
15
|
*/
|
|
138
|
-
export declare function shuffle({ data, ...channels }:
|
|
16
|
+
export declare function shuffle({ data, ...channels }: TransformLike, options?: {
|
|
139
17
|
seed?: number;
|
|
140
|
-
}):
|
|
141
|
-
sort: null;
|
|
142
|
-
[IS_SORTED]: boolean;
|
|
143
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
144
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
145
|
-
fx?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
146
|
-
fy?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
147
|
-
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
148
|
-
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
149
|
-
dodgeX?: import("./dodge.js").DodgeXOptions | undefined;
|
|
150
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
151
|
-
fill?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
152
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
153
|
-
stroke?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
154
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
155
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
156
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRow[]>;
|
|
157
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRow[]>;
|
|
158
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
159
|
-
opacity?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
160
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
161
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
162
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRow[]>;
|
|
163
|
-
clipPath?: string | undefined;
|
|
164
|
-
mask?: string | undefined;
|
|
165
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
166
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRow[]>;
|
|
167
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
168
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
169
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
170
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
171
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
172
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
173
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
174
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
175
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
176
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
177
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
178
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
179
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
180
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
181
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
182
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
183
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
184
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
185
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
186
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
187
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
188
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
189
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
190
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
191
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
192
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
193
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
194
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
195
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
196
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
197
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
198
|
-
class?: string | undefined;
|
|
199
|
-
style?: string | undefined;
|
|
200
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRow[]>;
|
|
201
|
-
data: DataRow[][];
|
|
202
|
-
};
|
|
18
|
+
}): TransformLike;
|
|
203
19
|
/**
|
|
204
20
|
* reverses the data row order
|
|
205
21
|
*/
|
|
206
|
-
export declare function reverse({ data, ...channels }:
|
|
207
|
-
|
|
208
|
-
[IS_SORTED]: boolean;
|
|
209
|
-
filter?: import("../types/index.js").ConstantAccessor<boolean, DataRow[]>;
|
|
210
|
-
facet?: "auto" | "include" | "exclude" | undefined;
|
|
211
|
-
fx?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
212
|
-
fy?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
213
|
-
dx?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
214
|
-
dy?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
215
|
-
dodgeX?: import("./dodge.js").DodgeXOptions | undefined;
|
|
216
|
-
dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
|
|
217
|
-
fill?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
218
|
-
fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
219
|
-
stroke?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
220
|
-
strokeWidth?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
221
|
-
strokeOpacity?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
222
|
-
strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRow[]>;
|
|
223
|
-
strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRow[]>;
|
|
224
|
-
strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
225
|
-
opacity?: import("../types/channel.js").ChannelAccessor<DataRow[]>;
|
|
226
|
-
strokeDasharray?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
227
|
-
strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, DataRow[]>;
|
|
228
|
-
mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRow[]>;
|
|
229
|
-
clipPath?: string | undefined;
|
|
230
|
-
mask?: string | undefined;
|
|
231
|
-
imageFilter?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
232
|
-
shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRow[]>;
|
|
233
|
-
paintOrder?: import("../types/index.js").ConstantAccessor<string, DataRow[]>;
|
|
234
|
-
onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
235
|
-
ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
236
|
-
onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
237
|
-
onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
238
|
-
onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
239
|
-
onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
240
|
-
onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
241
|
-
onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
242
|
-
onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
243
|
-
onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
244
|
-
onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
245
|
-
onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
246
|
-
onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
247
|
-
onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
248
|
-
onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
249
|
-
onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
250
|
-
onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
251
|
-
ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
252
|
-
ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
253
|
-
ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
254
|
-
ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
255
|
-
ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
256
|
-
ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
257
|
-
ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
258
|
-
ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
259
|
-
ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
260
|
-
ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
261
|
-
ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
262
|
-
oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
263
|
-
onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
|
|
264
|
-
class?: string | undefined;
|
|
265
|
-
style?: string | undefined;
|
|
266
|
-
cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRow[]>;
|
|
267
|
-
data: DataRow[][];
|
|
268
|
-
};
|
|
22
|
+
export declare function reverse({ data, ...channels }: TransformLike): TransformLike;
|
|
23
|
+
export {};
|
package/dist/transforms/sort.js
CHANGED
|
@@ -4,9 +4,11 @@ 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
|
-
if (!Array.isArray(data))
|
|
9
|
-
return { data, ...channels };
|
|
10
12
|
if (channels.sort) {
|
|
11
13
|
const { sort } = channels;
|
|
12
14
|
if (isDataRecord(sort) &&
|
|
@@ -23,15 +25,16 @@ export function sort({ data, ...channels }, options = {}) {
|
|
|
23
25
|
data: isComparator
|
|
24
26
|
? data.toSorted(channels.sort)
|
|
25
27
|
: data
|
|
26
|
-
.map((
|
|
27
|
-
|
|
28
|
-
[SORT_KEY]: resolveChannel('sort',
|
|
28
|
+
.map((datum) => ({
|
|
29
|
+
datum,
|
|
30
|
+
[SORT_KEY]: resolveChannel('sort', datum, { ...channels, sort })
|
|
29
31
|
}))
|
|
30
|
-
.map((
|
|
31
|
-
...
|
|
32
|
-
[SORT_KEY]: typeof
|
|
32
|
+
.map((entry) => ({
|
|
33
|
+
...entry,
|
|
34
|
+
[SORT_KEY]: typeof entry[SORT_KEY] === 'number' &&
|
|
35
|
+
!Number.isFinite(entry[SORT_KEY])
|
|
33
36
|
? Number.POSITIVE_INFINITY
|
|
34
|
-
:
|
|
37
|
+
: entry[SORT_KEY]
|
|
35
38
|
}))
|
|
36
39
|
.toSorted((a, b) => (typeof a[SORT_KEY] === 'string' && typeof b[SORT_KEY] === 'string'
|
|
37
40
|
? a[SORT_KEY].localeCompare(b[SORT_KEY])
|
|
@@ -44,7 +47,7 @@ export function sort({ data, ...channels }, options = {}) {
|
|
|
44
47
|
(isDataRecord(sort) && sort?.order === 'descending')
|
|
45
48
|
? -1
|
|
46
49
|
: 1))
|
|
47
|
-
.map((
|
|
50
|
+
.map((entry) => entry.datum),
|
|
48
51
|
...channels,
|
|
49
52
|
[IS_SORTED]: sort,
|
|
50
53
|
// set the sort channel to null to disable the implicit alphabetical
|
|
@@ -1,17 +1,46 @@
|
|
|
1
|
-
import type { ChannelAccessor, TransformArg } from '../types/index.js';
|
|
1
|
+
import type { ChannelAccessor, TransformArg, Channels } 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>;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
declare function stackMosaic<T>({ data, x, y, value, fx, fy, ...rest }: {
|
|
24
|
+
data: T[];
|
|
25
|
+
x: ChannelAccessor<T>;
|
|
26
|
+
y: ChannelAccessor<T>;
|
|
27
|
+
value: ChannelAccessor<T>;
|
|
28
|
+
fx?: ChannelAccessor<T>;
|
|
29
|
+
fy?: ChannelAccessor<T>;
|
|
30
|
+
} & Channels<T>, { outer, inner }: {
|
|
31
|
+
outer: 'x' | 'y';
|
|
32
|
+
inner: 'x' | 'y';
|
|
33
|
+
}, { x: xOpt, y: yOpt }?: {
|
|
34
|
+
x?: {
|
|
35
|
+
percent?: boolean;
|
|
36
|
+
};
|
|
37
|
+
y?: {
|
|
38
|
+
percent?: boolean;
|
|
39
|
+
};
|
|
40
|
+
}): {
|
|
41
|
+
fx: ChannelAccessor<T>;
|
|
42
|
+
fy: ChannelAccessor<T>;
|
|
43
|
+
data: T[];
|
|
15
44
|
x: symbol;
|
|
16
45
|
x1: symbol;
|
|
17
46
|
x2: symbol;
|
|
@@ -19,10 +48,14 @@ export declare function stackMosaicX<T>(args: any, opts: any): {
|
|
|
19
48
|
y1: symbol;
|
|
20
49
|
y2: symbol;
|
|
21
50
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
51
|
+
/**
|
|
52
|
+
* creates a mosaic layout with the outer (width) dimension along x and
|
|
53
|
+
* the inner (height) dimension along y
|
|
54
|
+
*/
|
|
55
|
+
export declare function stackMosaicX<T>(args: Parameters<typeof stackMosaic<T>>[0], opts?: Parameters<typeof stackMosaic<T>>[2]): {
|
|
56
|
+
fx: ChannelAccessor<T>;
|
|
57
|
+
fy: ChannelAccessor<T>;
|
|
58
|
+
data: T[];
|
|
26
59
|
x: symbol;
|
|
27
60
|
x1: symbol;
|
|
28
61
|
x2: symbol;
|
|
@@ -30,3 +63,19 @@ export declare function stackMosaicY<T>(args: any, opts: any): {
|
|
|
30
63
|
y1: symbol;
|
|
31
64
|
y2: symbol;
|
|
32
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* creates a mosaic layout with the outer (height) dimension along y and
|
|
68
|
+
* the inner (width) dimension along x
|
|
69
|
+
*/
|
|
70
|
+
export declare function stackMosaicY<T>(args: Parameters<typeof stackMosaic<T>>[0], opts?: Parameters<typeof stackMosaic<T>>[2]): {
|
|
71
|
+
fx: ChannelAccessor<T>;
|
|
72
|
+
fy: ChannelAccessor<T>;
|
|
73
|
+
data: T[];
|
|
74
|
+
x: symbol;
|
|
75
|
+
x1: symbol;
|
|
76
|
+
x2: symbol;
|
|
77
|
+
y: symbol;
|
|
78
|
+
y1: symbol;
|
|
79
|
+
y2: symbol;
|
|
80
|
+
};
|
|
81
|
+
export {};
|