svelteplot 0.3.10 → 0.3.11-pr-153.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.
Files changed (37) hide show
  1. package/dist/core/FacetGrid.svelte +11 -0
  2. package/dist/helpers/colors.d.ts +1 -1
  3. package/dist/helpers/group.d.ts +1 -1
  4. package/dist/helpers/index.d.ts +2 -5
  5. package/dist/helpers/scales.d.ts +1 -1
  6. package/dist/helpers/typeChecks.d.ts +4 -4
  7. package/dist/marks/AreaX.svelte.d.ts +2 -1
  8. package/dist/marks/AreaY.svelte.d.ts +2 -1
  9. package/dist/marks/AxisX.svelte.d.ts +1 -1
  10. package/dist/marks/AxisY.svelte.d.ts +1 -1
  11. package/dist/marks/BarX.svelte.d.ts +1 -1
  12. package/dist/marks/BollingerX.svelte.d.ts +2 -73
  13. package/dist/marks/BollingerY.svelte.d.ts +2 -73
  14. package/dist/marks/BoxY.svelte.d.ts +6 -65
  15. package/dist/marks/CustomMark.svelte.d.ts +2 -80
  16. package/dist/marks/DifferenceY.svelte.d.ts +7 -66
  17. package/dist/marks/HTMLTooltip.svelte +38 -12
  18. package/dist/marks/HTMLTooltip.svelte.d.ts +2 -0
  19. package/dist/marks/Line.svelte.d.ts +2 -2
  20. package/dist/marks/LineX.svelte.d.ts +2 -1
  21. package/dist/marks/LineY.svelte.d.ts +2 -1
  22. package/dist/marks/Pointer.svelte +55 -34
  23. package/dist/marks/Pointer.svelte.d.ts +9 -2
  24. package/dist/transforms/bollinger.d.ts +1 -66
  25. package/dist/transforms/group.d.ts +4 -12
  26. package/dist/transforms/index.d.ts +1 -1
  27. package/dist/transforms/index.js +1 -1
  28. package/dist/transforms/interval.d.ts +2 -122
  29. package/dist/transforms/map.d.ts +4 -184
  30. package/dist/transforms/normalize.d.ts +3 -123
  31. package/dist/transforms/select.d.ts +7 -427
  32. package/dist/transforms/sort.d.ts +3 -242
  33. package/dist/transforms/stack.d.ts +26 -1
  34. package/dist/transforms/stack.js +37 -2
  35. package/dist/transforms/window.d.ts +2 -130
  36. package/dist/ui/ExamplesGrid.svelte +2 -1
  37. package/package.json +126 -125
@@ -8,6 +8,8 @@
8
8
  x?: ChannelAccessor<Datum>;
9
9
  y?: ChannelAccessor<Datum>;
10
10
  r?: ChannelAccessor<Datum>;
11
+ fx?: ChannelAccessor<Datum>;
12
+ fy?: ChannelAccessor<Datum>;
11
13
  children: Snippet<[{ datum: Datum }]>;
12
14
  }
13
15
  import { getContext, type Snippet } from 'svelte';
@@ -19,18 +21,33 @@
19
21
  import { resolveChannel } from '../helpers/resolve.js';
20
22
  import { quadtree } from 'd3-quadtree';
21
23
  import { projectX, projectY } from '../helpers/scales.js';
24
+ import { groupFacetsAndZ } from '../helpers/group.js';
22
25
 
23
- let { data, x, y, r, children }: HTMLTooltipMarkProps = $props();
26
+ let { data, x, y, r, fx, fy, children }: HTMLTooltipMarkProps = $props();
24
27
 
25
28
  let datum = $state(false);
26
29
  let tooltipX = $state();
27
30
  let tooltipY = $state();
28
31
 
32
+ let facetOffsetX = $state(0);
33
+ let facetOffsetY = $state(0);
34
+
29
35
  function onPointerMove(evt: MouseEvent) {
30
36
  const plotRect = plot.body.getBoundingClientRect();
31
- let relativeX = evt.clientX - plotRect.left;
32
- let relativeY = evt.clientY - plotRect.top;
33
- const pt = tree.find(relativeX, relativeY, 25);
37
+ let facetEl = evt.target as SVGElement;
38
+ while (facetEl && !facetEl.classList.contains('facet')) {
39
+ facetEl = facetEl.parentElement;
40
+ }
41
+ const facetIndex = +(facetEl.dataset?.facet ?? 0);
42
+ const facetRect = (facetEl?.firstChild ?? plot.body).getBoundingClientRect();
43
+
44
+ facetOffsetX = facetRect.left - plotRect.left - plot.options.marginLeft;
45
+ facetOffsetY = facetRect.top - plotRect.top - plot.options.marginTop;
46
+
47
+ const relativeX = evt.clientX - facetRect.left + (plot.options.marginLeft ?? 0);
48
+ const relativeY = evt.clientY - facetRect.top + (plot.options.marginTop ?? 0);
49
+
50
+ const pt = trees[facetIndex].find(relativeX, relativeY, 25);
34
51
  if (pt) {
35
52
  tooltipX = resolveChannel('x', pt, { x, y, r });
36
53
  tooltipY = resolveChannel('y', pt, { x, y, r });
@@ -54,18 +71,26 @@
54
71
  };
55
72
  });
56
73
 
57
- let tree = $derived(
58
- quadtree()
59
- .x((d) => projectX('x', plot.scales, resolveChannel('x', d, { x, y, r })))
60
- .y((d) => projectY('y', plot.scales, resolveChannel('y', d, { x, y, r })))
61
- .addAll(data)
74
+ const groups = $derived.by(() => {
75
+ const groups: Datum[][] = [];
76
+ groupFacetsAndZ(data, { fx, fy }, (d) => groups.push(d));
77
+ return groups;
78
+ });
79
+
80
+ const trees = $derived(
81
+ groups.map((items) =>
82
+ quadtree()
83
+ .x((d) => projectX('x', plot.scales, resolveChannel('x', d, { x, y, r })))
84
+ .y((d) => projectY('y', plot.scales, resolveChannel('y', d, { x, y, r })))
85
+ .addAll(items)
86
+ )
62
87
  );
63
88
  </script>
64
89
 
65
90
  <div
66
91
  class={['tooltip', { hide: !datum }]}
67
- style:left="{tooltipX ? projectX('x', plot.scales, tooltipX) : 0}px"
68
- style:top="{tooltipY ? projectY('y', plot.scales, tooltipY) : 0}px">
92
+ style:left="{tooltipX ? facetOffsetX + projectX('x', plot.scales, tooltipX) : 0}px"
93
+ style:top="{tooltipY ? facetOffsetY + projectY('y', plot.scales, tooltipY) : 0}px">
69
94
  <div class="tooltip-body">
70
95
  {@render children({ datum })}
71
96
  </div>
@@ -77,9 +102,10 @@
77
102
  background: var(--svelteplot-tooltip-bg);
78
103
  border: 1px solid #ccc;
79
104
  border-color: var(--svelteplot-tooltip-border);
80
- font-size: 13px;
105
+ font-size: 12px;
81
106
  padding: 1ex 1em;
82
107
  border-radius: 3px;
108
+ line-height: 1.2;
83
109
  box-shadow:
84
110
  rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,
85
111
  rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
@@ -6,6 +6,8 @@ declare class __sveltets_Render<Datum = DataRow> {
6
6
  x?: ChannelAccessor<Datum>;
7
7
  y?: ChannelAccessor<Datum>;
8
8
  r?: ChannelAccessor<Datum>;
9
+ fx?: ChannelAccessor<Datum>;
10
+ fy?: ChannelAccessor<Datum>;
9
11
  children: Snippet<[{
10
12
  datum: Datum;
11
13
  }]>;
@@ -14,7 +14,7 @@ declare class __sveltets_Render<Datum extends DataRecord> {
14
14
  sort: {
15
15
  channel: string;
16
16
  order?: "ascending" | "descending";
17
- } | ((a: RawValue, b: RawValue) => number) | ConstantAccessor<RawValue, Datum>;
17
+ } | ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | ConstantAccessor<import("../types/data.js").RawValue, Datum>;
18
18
  stroke: ChannelAccessor<Datum>;
19
19
  strokeWidth: ConstantAccessor<number, Datum>;
20
20
  strokeOpacity: ConstantAccessor<number, Datum>;
@@ -71,7 +71,7 @@ declare class __sveltets_Render<Datum extends DataRecord> {
71
71
  outlineStrokeOpacity?: number;
72
72
  curve?: CurveName | CurveFactory | "auto";
73
73
  tension?: number;
74
- sort?: ConstantAccessor<RawValue, Datum> | {
74
+ sort?: ConstantAccessor<RawValue, Datum_1> | {
75
75
  channel: "stroke" | "fill";
76
76
  };
77
77
  text?: ConstantAccessor<string, Datum>;
@@ -1,3 +1,4 @@
1
+ import { recordizeX } from '../index.js';
1
2
  import type { DataRow } from '../index.js';
2
3
  declare class __sveltets_Render<Datum extends DataRow> {
3
4
  props(): Omit<import("../types").MarkerOptions & Partial<{
@@ -69,7 +70,7 @@ declare class __sveltets_Render<Datum extends DataRow> {
69
70
  outlineStrokeOpacity?: number;
70
71
  curve?: import("../types").CurveName | import("d3-shape").CurveFactory | "auto";
71
72
  tension?: number;
72
- sort?: import("../types").ConstantAccessor<import("../types").RawValue, import("../types").DataRecord> | {
73
+ sort?: import("../types").ConstantAccessor<recordizeX, Datum_1> | {
73
74
  channel: "stroke" | "fill";
74
75
  };
75
76
  text?: import("../types").ConstantAccessor<string, import("../types").DataRecord>;
@@ -1,3 +1,4 @@
1
+ import { recordizeY } from '../index.js';
1
2
  import type { DataRow } from '../index.js';
2
3
  declare class __sveltets_Render<Datum extends DataRow> {
3
4
  props(): Omit<import("../types").MarkerOptions & Partial<{
@@ -69,7 +70,7 @@ declare class __sveltets_Render<Datum extends DataRow> {
69
70
  outlineStrokeOpacity?: number;
70
71
  curve?: import("../types").CurveName | import("d3-shape").CurveFactory | "auto";
71
72
  tension?: number;
72
- sort?: import("../types").ConstantAccessor<import("../types").RawValue, import("../types").DataRecord> | {
73
+ sort?: import("../types").ConstantAccessor<recordizeY, Datum_1> | {
73
74
  channel: "stroke" | "fill";
74
75
  };
75
76
  text?: import("../types").ConstantAccessor<string, import("../types").DataRecord>;
@@ -1,14 +1,21 @@
1
1
  <script lang="ts" generics="Datum extends DataRow">
2
2
  interface PointerMarkProps {
3
3
  data: Datum[];
4
- children: Snippet<[{ data: Datum[] }]>;
4
+ children?: Snippet<[{ data: Datum[] }]>;
5
5
  x?: ChannelAccessor<Datum>;
6
6
  y?: ChannelAccessor<Datum>;
7
7
  z?: ChannelAccessor<Datum>;
8
+ fx?: ChannelAccessor<Datum>;
9
+ fy?: ChannelAccessor<Datum>;
8
10
  /**
9
11
  * maximum cursor distance to select data points
10
12
  */
11
13
  maxDistance?: number;
14
+ /**
15
+ * tolerance for considering points as "the same" when sharing x or y values
16
+ * defaults to 0 pixel
17
+ */
18
+ tolerance?: number;
12
19
  /**
13
20
  * called whenever the selection changes
14
21
  * @param data
@@ -24,10 +31,14 @@
24
31
  import { projectXY } from '../helpers/scales.js';
25
32
  import isDataRecord from '../helpers/isDataRecord.js';
26
33
  import { RAW_VALUE } from '../transforms/recordize.js';
34
+ import { groupFacetsAndZ } from '../helpers/group.js';
27
35
 
28
36
  const { getPlotState } = getContext<PlotContext>('svelteplot');
29
37
  const plot = $derived(getPlotState());
30
38
 
39
+ const POINTER_X = Symbol('pointerX');
40
+ const POINTER_Y = Symbol('pointerY');
41
+
31
42
  let markProps: PointerMarkProps = $props();
32
43
 
33
44
  const DEFAULTS = {
@@ -40,7 +51,10 @@
40
51
  x,
41
52
  y,
42
53
  z,
54
+ fx,
55
+ fy,
43
56
  maxDistance = 15,
57
+ tolerance = Number.NEGATIVE_INFINITY,
44
58
  onupdate = null
45
59
  }: PointerMarkProps = $derived({
46
60
  ...DEFAULTS,
@@ -49,27 +63,21 @@
49
63
 
50
64
  let selectedData = $state([]);
51
65
 
52
- function onMouseMove(evt: MouseEvent) {
53
- updateSelection(evt.layerX, evt.layerY);
54
- }
55
-
56
- function onTouchMove(evt: TouchEvent) {
57
- if (evt.touches) {
58
- const rect = (evt.target as HTMLElement).getBoundingClientRect();
59
- const pageTop = window.scrollY || document.documentElement.scrollTop;
60
- const ox = rect.left;
61
- const oy = rect.top + pageTop;
62
-
63
- const touch = evt.touches[0] || evt.changedTouches[0];
64
- if (touch) {
65
- const ex = touch.pageX - ox;
66
- const ey = touch.pageY - oy;
67
- updateSelection(ex, ey);
68
- }
66
+ function onPointerMove(evt: MouseEvent) {
67
+ let facetEl = evt.target as SVGElement;
68
+ while (facetEl && !facetEl.classList.contains('facet')) {
69
+ facetEl = facetEl.parentElement;
69
70
  }
71
+ const facetRect = (facetEl?.firstChild ?? plot.body).getBoundingClientRect();
72
+
73
+ const relativeX = evt.clientX - facetRect.left + (plot.options.marginLeft ?? 0);
74
+ const relativeY = evt.clientY - facetRect.top + (plot.options.marginTop ?? 0);
75
+
76
+ // console.log({ relativeX, relativeY }, evt);
77
+ updateSelection(relativeX, relativeY);
70
78
  }
71
79
 
72
- function onMouseLeave() {
80
+ function onPointerLeave() {
73
81
  selectedData = [];
74
82
  if (onupdate) onupdate(selectedData);
75
83
  }
@@ -79,31 +87,44 @@
79
87
  const points = trees.map((tree) =>
80
88
  tree.find(x != null ? ex : 0, y != null ? ey : 0, maxDistance)
81
89
  );
82
- selectedData = points.filter((d) => d != null);
90
+ // also include other points that share the same x or y value
91
+ const otherPoints = trees.flatMap((tree, i) => {
92
+ return tree
93
+ .data()
94
+ .filter((d) => d !== points[i])
95
+ .filter(
96
+ (d) =>
97
+ (!isFinite(d[POINTER_X]) ||
98
+ Math.abs(d[POINTER_X] - points[i]?.[POINTER_X]) < tolerance) &&
99
+ (!isFinite(d[POINTER_Y]) ||
100
+ Math.abs(d[POINTER_Y] - points[i]?.[POINTER_Y]) < tolerance)
101
+ );
102
+ });
103
+ selectedData = [...points, ...otherPoints].filter((d) => d != null);
83
104
  if (onupdate) onupdate(selectedData);
84
105
  }
85
106
 
86
107
  $effect(() => {
87
- plot.body?.addEventListener('mousemove', onMouseMove);
88
- plot.body?.addEventListener('mouseleave', onMouseLeave);
89
- plot.body?.addEventListener('touchmove', onTouchMove);
108
+ plot.body?.addEventListener('pointermove', onPointerMove);
109
+ plot.body?.addEventListener('pointerleave', onPointerLeave);
90
110
 
91
111
  return () => {
92
- plot.body?.removeEventListener('mousemove', onMouseMove);
93
- plot.body?.removeEventListener('mouseleave', onMouseLeave);
94
- plot.body?.removeEventListener('touchmove', onTouchMove);
112
+ plot.body?.removeEventListener('pointermove', onPointerMove);
113
+ plot.body?.removeEventListener('pointerleave', onPointerLeave);
95
114
  };
96
115
  });
97
116
 
98
- const groups = $derived(
99
- z != null ? d3Groups(data, (d) => resolveChannel('z', d, { x, z })) : [[null, data]]
100
- );
117
+ const groups = $derived.by(() => {
118
+ const groups = [];
119
+ groupFacetsAndZ(data, { x, y, z, fx, fy }, (d) => groups.push(d));
120
+ return groups;
121
+ });
101
122
 
102
123
  const trees = $derived(
103
- groups.map(([, items]) =>
124
+ groups.map((items) =>
104
125
  quadtree()
105
- .x(x != null ? (d) => d.__pointerX : () => 0)
106
- .y(y != null ? (d) => d.__pointerY : () => 0)
126
+ .x(x != null ? (d) => d[POINTER_X] : () => 0)
127
+ .y(y != null ? (d) => d[POINTER_Y] : () => 0)
107
128
  .addAll(
108
129
  items?.map((d) => {
109
130
  const [px, py] = projectXY(
@@ -115,8 +136,8 @@
115
136
  );
116
137
  return {
117
138
  ...(isDataRecord(d) ? d : { [RAW_VALUE]: d }),
118
- __pointerX: px,
119
- __pointerY: py
139
+ [POINTER_X]: px,
140
+ [POINTER_Y]: py
120
141
  };
121
142
  }) ?? []
122
143
  )
@@ -3,16 +3,23 @@ import type { ChannelAccessor, DataRow } from '../types/index.js';
3
3
  declare class __sveltets_Render<Datum extends DataRow> {
4
4
  props(): {
5
5
  data: Datum[];
6
- children: Snippet<[{
6
+ children?: Snippet<[{
7
7
  data: Datum[];
8
- }]>;
8
+ }]> | undefined;
9
9
  x?: ChannelAccessor<Datum>;
10
10
  y?: ChannelAccessor<Datum>;
11
11
  z?: ChannelAccessor<Datum>;
12
+ fx?: ChannelAccessor<Datum>;
13
+ fy?: ChannelAccessor<Datum>;
12
14
  /**
13
15
  * maximum cursor distance to select data points
14
16
  */
15
17
  maxDistance?: number;
18
+ /**
19
+ * tolerance for considering points as "the same" when sharing x or y values
20
+ * defaults to 0 pixel
21
+ */
22
+ tolerance?: number;
16
23
  /**
17
24
  * called whenever the selection changes
18
25
  * @param data
@@ -11,69 +11,4 @@ export type BollingerOptions = {
11
11
  };
12
12
  export declare function bollingerX(args: TransformArg<DataRecord>, options?: BollingerOptions): TransformArg<DataRecord>;
13
13
  export declare function bollingerY(args: TransformArg<DataRecord>, options?: BollingerOptions): TransformArg<DataRecord>;
14
- export declare function bollingerDim(dim: 'x' | 'y', { data, ...channels }: TransformArg<DataRecord>, options?: BollingerOptions): {
15
- filter?: import("../types/index.js").ConstantAccessor<boolean, DataRecord>;
16
- facet?: "auto" | "include" | "exclude" | undefined;
17
- fx?: import("../types/index.js").ChannelAccessor<DataRecord>;
18
- fy?: import("../types/index.js").ChannelAccessor<DataRecord>;
19
- dx?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
20
- dy?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
21
- fill?: import("../types/index.js").ChannelAccessor<DataRecord>;
22
- fillOpacity?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
23
- sort?: {
24
- channel: string;
25
- order?: "ascending" | "descending";
26
- } | ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/index.js").RawValue, DataRecord>;
27
- stroke?: import("../types/index.js").ChannelAccessor<DataRecord>;
28
- strokeWidth?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
29
- strokeOpacity?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
30
- strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, DataRecord>;
31
- strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, DataRecord>;
32
- strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
33
- opacity?: import("../types/index.js").ChannelAccessor<DataRecord>;
34
- strokeDasharray?: import("../types/index.js").ConstantAccessor<string, DataRecord>;
35
- strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, DataRecord>;
36
- mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, DataRecord>;
37
- clipPath?: string | undefined;
38
- imageFilter?: import("../types/index.js").ConstantAccessor<string, DataRecord>;
39
- shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, DataRecord>;
40
- paintOrder?: import("../types/index.js").ConstantAccessor<string, DataRecord>;
41
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
42
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
43
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
44
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
45
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
46
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
47
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
48
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
49
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
50
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
51
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
52
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
53
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
54
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
55
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
56
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
57
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
58
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
59
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
61
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
62
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
63
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
64
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
65
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
66
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
67
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
68
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
69
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
70
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
71
- class?: string | null | undefined;
72
- cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, DataRecord>;
73
- data: {
74
- __x: import("../types/index.js").RawValue;
75
- __lo: number;
76
- __avg: number;
77
- __hi: number;
78
- }[];
79
- };
14
+ export declare function bollingerDim(dim: 'x' | 'y', { data, ...channels }: TransformArg<DataRecord>, options?: BollingerOptions): any;
@@ -38,29 +38,21 @@ type GroupZOptions = GroupXOptions | GroupYOptions;
38
38
  * groups the dataset by x and y channel and optionally reduces the group items
39
39
  * to output channels fill, stroke, r, opacity, fillOpacity, or strokeOpacity
40
40
  */
41
- export declare function group({ data, ...channels }: TransformArg<T, DataRecord>, options?: GroupXOptions): {
42
- data: DataRecord[];
43
- };
41
+ export declare function group({ data, ...channels }: TransformArg<T, DataRecord>, options?: GroupXOptions): any;
44
42
  /**
45
43
  * groups the dataset by the x channel and optionally reduces the group items
46
44
  * to output channels y, y1, y2, fill, stroke, r, opacity, fillOpacity, or strokeOpacity
47
45
  */
48
- export declare function groupX(input: TransformArg<T, DataRecord>, options?: GroupXOptions): {
49
- data: DataRecord[];
50
- };
46
+ export declare function groupX(input: TransformArg<T, DataRecord>, options?: GroupXOptions): any;
51
47
  /**
52
48
  * groups the dataset by the y channel and optionally reduces the group items
53
49
  * to output channels x, x1, x2, fill, stroke, r, opacity, fillOpacity, or strokeOpacity
54
50
  */
55
- export declare function groupY(input: TransformArg<T, DataRecord>, options?: GroupYOptions): {
56
- data: DataRecord[];
57
- };
51
+ export declare function groupY(input: TransformArg<T, DataRecord>, options?: GroupYOptions): any;
58
52
  /**
59
53
  * groups the dataset by the z channel and optionally reduces the group items
60
54
  * to output channels x, x1, x2, y, y1, y2, fill, stroke, r, opacity, fillOpacity,
61
55
  * or strokeOpacity
62
56
  */
63
- export declare function groupZ(input: TransformArg<T, DataRecord>, options?: GroupZOptions): {
64
- data: DataRecord[];
65
- };
57
+ export declare function groupZ(input: TransformArg<T, DataRecord>, options?: GroupZOptions): any;
66
58
  export {};
@@ -12,5 +12,5 @@ export { renameChannels, replaceChannels } from './rename.js';
12
12
  export { select, selectFirst, selectLast, selectMaxX, selectMaxY, selectMinX, selectMinY } from './select.js';
13
13
  export { shiftX, shiftY } from './shift.js';
14
14
  export { sort, shuffle, reverse } from './sort.js';
15
- export { stackX, stackY } from './stack.js';
15
+ export { stackX, stackY, stackMarimekko } from './stack.js';
16
16
  export { windowX, windowY } from './window.js';
@@ -12,5 +12,5 @@ export { renameChannels, replaceChannels } from './rename.js';
12
12
  export { select, selectFirst, selectLast, selectMaxX, selectMaxY, selectMinX, selectMinY } from './select.js';
13
13
  export { shiftX, shiftY } from './shift.js';
14
14
  export { sort, shuffle, reverse } from './sort.js';
15
- export { stackX, stackY } from './stack.js';
15
+ export { stackX, stackY, stackMarimekko } from './stack.js';
16
16
  export { windowX, windowY } from './window.js';
@@ -1,127 +1,7 @@
1
1
  import type { PlotState, TransformArg } from '../types/index.js';
2
2
  export declare function intervalX<T>(args: TransformArg<T>, { plot }: {
3
3
  plot: PlotState;
4
- }): {
5
- filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
6
- facet?: "auto" | "include" | "exclude" | undefined;
7
- fx?: import("../types/index.js").ChannelAccessor<T>;
8
- fy?: import("../types/index.js").ChannelAccessor<T>;
9
- dx?: import("../types/index.js").ConstantAccessor<number, T>;
10
- dy?: import("../types/index.js").ConstantAccessor<number, T>;
11
- fill?: import("../types/index.js").ChannelAccessor<T>;
12
- fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
13
- sort?: {
14
- channel: string;
15
- order?: "ascending" | "descending";
16
- } | ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/index.js").RawValue, T>;
17
- stroke?: import("../types/index.js").ChannelAccessor<T>;
18
- strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
19
- strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
20
- strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
21
- strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
22
- strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
23
- opacity?: import("../types/index.js").ChannelAccessor<T>;
24
- strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
25
- strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
26
- mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
27
- clipPath?: string | undefined;
28
- imageFilter?: import("../types/index.js").ConstantAccessor<string, T>;
29
- shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, T>;
30
- paintOrder?: import("../types/index.js").ConstantAccessor<string, T>;
31
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
32
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
33
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
34
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
35
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
36
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
37
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
38
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
39
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
40
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
41
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
42
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
43
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
44
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
45
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
46
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
47
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
48
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
49
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
50
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
51
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
52
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
53
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
54
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
55
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
56
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
57
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
58
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
59
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
61
- class?: string | null | undefined;
62
- cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
63
- data: T[];
64
- };
4
+ }): any;
65
5
  export declare function intervalY<T>(args: TransformArg<T>, { plot }: {
66
6
  plot: PlotState;
67
- }): {
68
- filter?: import("../types/index.js").ConstantAccessor<boolean, T>;
69
- facet?: "auto" | "include" | "exclude" | undefined;
70
- fx?: import("../types/index.js").ChannelAccessor<T>;
71
- fy?: import("../types/index.js").ChannelAccessor<T>;
72
- dx?: import("../types/index.js").ConstantAccessor<number, T>;
73
- dy?: import("../types/index.js").ConstantAccessor<number, T>;
74
- fill?: import("../types/index.js").ChannelAccessor<T>;
75
- fillOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
76
- sort?: {
77
- channel: string;
78
- order?: "ascending" | "descending";
79
- } | ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | import("../types/index.js").ConstantAccessor<import("../types/index.js").RawValue, T>;
80
- stroke?: import("../types/index.js").ChannelAccessor<T>;
81
- strokeWidth?: import("../types/index.js").ConstantAccessor<number, T>;
82
- strokeOpacity?: import("../types/index.js").ConstantAccessor<number, T>;
83
- strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, T>;
84
- strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, T>;
85
- strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, T>;
86
- opacity?: import("../types/index.js").ChannelAccessor<T>;
87
- strokeDasharray?: import("../types/index.js").ConstantAccessor<string, T>;
88
- strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, T>;
89
- mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, T>;
90
- clipPath?: string | undefined;
91
- imageFilter?: import("../types/index.js").ConstantAccessor<string, T>;
92
- shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, T>;
93
- paintOrder?: import("../types/index.js").ConstantAccessor<string, T>;
94
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
95
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
96
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
97
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
98
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
99
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
100
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
101
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
102
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
103
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
104
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
105
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
106
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
107
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
108
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
109
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
110
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
111
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
112
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
113
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
114
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
115
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
116
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
117
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
118
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
119
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
120
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
121
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
122
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
123
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
124
- class?: string | null | undefined;
125
- cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, T>;
126
- data: T[];
127
- };
7
+ }): any;