svelteplot 0.5.1 → 0.5.2-pr-251.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/Mark.svelte.d.ts +5 -4
  2. package/dist/constants.d.ts +2 -1
  3. package/dist/constants.js +22 -0
  4. package/dist/core/Plot.svelte +7 -2
  5. package/dist/helpers/autoScales.js +10 -1
  6. package/dist/helpers/colors.d.ts +1 -1
  7. package/dist/helpers/index.d.ts +2 -2
  8. package/dist/helpers/isRawValue.js +6 -1
  9. package/dist/helpers/reduce.js +3 -2
  10. package/dist/helpers/scales.d.ts +2 -1
  11. package/dist/helpers/scales.js +13 -10
  12. package/dist/helpers/typeChecks.d.ts +4 -4
  13. package/dist/marks/Area.svelte +9 -3
  14. package/dist/marks/Area.svelte.d.ts +6 -4
  15. package/dist/marks/AreaX.svelte.d.ts +7 -5
  16. package/dist/marks/Arrow.svelte.d.ts +5 -4
  17. package/dist/marks/AxisX.svelte.d.ts +6 -5
  18. package/dist/marks/AxisY.svelte.d.ts +6 -5
  19. package/dist/marks/BarX.svelte +1 -1
  20. package/dist/marks/BarX.svelte.d.ts +5 -4
  21. package/dist/marks/BarY.svelte +1 -1
  22. package/dist/marks/BarY.svelte.d.ts +5 -4
  23. package/dist/marks/BollingerX.svelte.d.ts +2 -76
  24. package/dist/marks/BollingerY.svelte.d.ts +2 -76
  25. package/dist/marks/BoxX.svelte +13 -1
  26. package/dist/marks/BoxY.svelte +12 -1
  27. package/dist/marks/BoxY.svelte.d.ts +6 -68
  28. package/dist/marks/Cell.svelte.d.ts +5 -4
  29. package/dist/marks/CustomMark.svelte +9 -3
  30. package/dist/marks/CustomMark.svelte.d.ts +2 -83
  31. package/dist/marks/CustomMarkHTML.svelte.d.ts +1 -1
  32. package/dist/marks/DifferenceY.svelte.d.ts +7 -69
  33. package/dist/marks/Dot.svelte +6 -1
  34. package/dist/marks/Dot.svelte.d.ts +5 -4
  35. package/dist/marks/DotX.svelte.d.ts +6 -5
  36. package/dist/marks/DotY.svelte.d.ts +6 -5
  37. package/dist/marks/Geo.svelte.d.ts +5 -4
  38. package/dist/marks/GridX.svelte.d.ts +5 -4
  39. package/dist/marks/GridY.svelte.d.ts +5 -4
  40. package/dist/marks/Image.svelte +67 -0
  41. package/dist/marks/Image.svelte.d.ts +18 -0
  42. package/dist/marks/Line.svelte.d.ts +6 -5
  43. package/dist/marks/LineX.svelte.d.ts +7 -6
  44. package/dist/marks/LineY.svelte.d.ts +7 -6
  45. package/dist/marks/Link.svelte.d.ts +5 -4
  46. package/dist/marks/Rect.svelte +2 -0
  47. package/dist/marks/Rect.svelte.d.ts +5 -4
  48. package/dist/marks/RuleX.svelte +5 -1
  49. package/dist/marks/RuleX.svelte.d.ts +5 -4
  50. package/dist/marks/RuleY.svelte +6 -1
  51. package/dist/marks/RuleY.svelte.d.ts +5 -4
  52. package/dist/marks/Spike.svelte.d.ts +6 -5
  53. package/dist/marks/Text.svelte.d.ts +7 -6
  54. package/dist/marks/TickX.svelte +5 -1
  55. package/dist/marks/TickX.svelte.d.ts +5 -4
  56. package/dist/marks/TickY.svelte +5 -1
  57. package/dist/marks/TickY.svelte.d.ts +5 -4
  58. package/dist/marks/Vector.svelte.d.ts +5 -4
  59. package/dist/marks/helpers/MarkerPath.svelte.d.ts +2 -164
  60. package/dist/marks/helpers/RectPath.svelte +3 -1
  61. package/dist/marks/helpers/RectPath.svelte.d.ts +3 -65
  62. package/dist/marks/index.d.ts +1 -0
  63. package/dist/marks/index.js +1 -0
  64. package/dist/transforms/bin.js +46 -26
  65. package/dist/transforms/bollinger.d.ts +1 -69
  66. package/dist/transforms/group.d.ts +4 -12
  67. package/dist/transforms/interval.d.ts +2 -128
  68. package/dist/transforms/recordize.d.ts +1 -4
  69. package/dist/transforms/select.d.ts +7 -448
  70. package/dist/transforms/sort.d.ts +3 -254
  71. package/dist/transforms/stack.d.ts +4 -24
  72. package/dist/transforms/stack.js +9 -3
  73. package/dist/transforms/window.d.ts +2 -134
  74. package/dist/types/channel.d.ts +1 -1
  75. package/dist/types/data.d.ts +1 -1
  76. package/dist/types/mark.d.ts +1 -1
  77. package/dist/types/plot.d.ts +13 -1
  78. package/package.json +129 -128
@@ -1,168 +1,6 @@
1
- import { type MarkerShape } from './Marker.svelte';
2
- import type { ConstantAccessor, DataRecord, Mark, PlotScales } from '../../types/index.js';
1
+ import type { DataRecord } from '../../types/index.js';
3
2
  declare class __sveltets_Render<Datum extends DataRecord> {
4
- props(): Partial<{
5
- filter: ConstantAccessor<boolean, Datum>;
6
- facet: "auto" | "include" | "exclude";
7
- fx: import("../../types/index.js").ChannelAccessor<Datum>;
8
- fy: import("../../types/index.js").ChannelAccessor<Datum>;
9
- dx: ConstantAccessor<number, Datum>;
10
- dy: ConstantAccessor<number, Datum>;
11
- dodgeX: import("../../transforms/dodge").DodgeXOptions;
12
- dodgeY: import("../../transforms/dodge").DodgeYOptions;
13
- fill: import("../../types/index.js").ChannelAccessor<Datum>;
14
- fillOpacity: ConstantAccessor<number, Datum>;
15
- sort: ((a: import("../../types/index.js").RawValue, b: import("../../types/index.js").RawValue) => number) | {
16
- channel: string;
17
- order?: "ascending" | "descending";
18
- } | ConstantAccessor<import("../../types/index.js").RawValue, Datum>;
19
- stroke: import("../../types/index.js").ChannelAccessor<Datum>;
20
- strokeWidth: ConstantAccessor<number, Datum>;
21
- strokeOpacity: ConstantAccessor<number, Datum>;
22
- strokeLinejoin: ConstantAccessor<import("csstype").Property.StrokeLinejoin, Datum>;
23
- strokeLinecap: ConstantAccessor<import("csstype").Property.StrokeLinecap, Datum>;
24
- strokeMiterlimit: ConstantAccessor<number, Datum>;
25
- opacity: import("../../types/index.js").ChannelAccessor<Datum>;
26
- strokeDasharray: ConstantAccessor<string, Datum>;
27
- strokeDashoffset: ConstantAccessor<number, Datum>;
28
- mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
29
- clipPath: string;
30
- imageFilter: ConstantAccessor<string, Datum>;
31
- shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
32
- paintOrder: ConstantAccessor<string, Datum>;
33
- onclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
34
- ondblclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
35
- onmouseup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
- onmousedown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
- onmouseenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
- onmousemove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
- onmouseleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
- onmouseout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
- onmouseover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
- onpointercancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
- onpointerdown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
- onpointerup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
- onpointerenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
- onpointerleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
- onpointermove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
- onpointerover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
- onpointerout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
- ondrag: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
- ondrop: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
- ondragstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
- ondragenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
- ondragleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
- ondragover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
- ondragend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
- ontouchstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
- ontouchmove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
- ontouchend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
- ontouchcancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
61
- oncontextmenu: import("svelte/elements").MouseEventHandler<SVGPathElement>;
62
- onwheel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
63
- class: string;
64
- style: string;
65
- cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
66
- }> & {
67
- /**
68
- * the datum associated with this path, usually the first
69
- * element of the data array group
70
- */
71
- datum: Datum;
72
- /**
73
- * the marker shape to use at the start of the path, defaults to
74
- * circle
75
- */
76
- markerStart?: boolean | MarkerShape;
77
- /**
78
- * the marker shape to use at the middle of the path, defaults to circle
79
- */
80
- markerMid?: boolean | MarkerShape;
81
- /**
82
- * the marker shape to use at the end of the path, defaults to circle
83
- */
84
- markerEnd?: boolean | MarkerShape;
85
- /**
86
- * shorthand for setting all markers
87
- */
88
- marker?: boolean | MarkerShape;
89
- /**
90
- * path string
91
- */
92
- d: string;
93
- style: string;
94
- startOffset: string;
95
- textStyle: string;
96
- textStyleClass?: string | null;
97
- text: string;
98
- transform: string;
99
- color: string;
100
- strokeWidth: ConstantAccessor<number>;
101
- mark: Mark<Partial<{
102
- filter: ConstantAccessor<boolean, Datum>;
103
- facet: "auto" | "include" | "exclude";
104
- fx: import("../../types/index.js").ChannelAccessor<Datum>;
105
- fy: import("../../types/index.js").ChannelAccessor<Datum>;
106
- dx: ConstantAccessor<number, Datum>;
107
- dy: ConstantAccessor<number, Datum>;
108
- dodgeX: import("../../transforms/dodge").DodgeXOptions;
109
- dodgeY: import("../../transforms/dodge").DodgeYOptions;
110
- fill: import("../../types/index.js").ChannelAccessor<Datum>;
111
- fillOpacity: ConstantAccessor<number, Datum>;
112
- sort: ((a: import("../../types/index.js").RawValue, b: import("../../types/index.js").RawValue) => number) | {
113
- channel: string;
114
- order?: "ascending" | "descending";
115
- } | ConstantAccessor<import("../../types/index.js").RawValue, Datum>;
116
- stroke: import("../../types/index.js").ChannelAccessor<Datum>;
117
- strokeWidth: ConstantAccessor<number, Datum>;
118
- strokeOpacity: ConstantAccessor<number, Datum>;
119
- strokeLinejoin: ConstantAccessor<import("csstype").Property.StrokeLinejoin, Datum>;
120
- strokeLinecap: ConstantAccessor<import("csstype").Property.StrokeLinecap, Datum>;
121
- strokeMiterlimit: ConstantAccessor<number, Datum>;
122
- opacity: import("../../types/index.js").ChannelAccessor<Datum>;
123
- strokeDasharray: ConstantAccessor<string, Datum>;
124
- strokeDashoffset: ConstantAccessor<number, Datum>;
125
- mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
126
- clipPath: string;
127
- imageFilter: ConstantAccessor<string, Datum>;
128
- shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
129
- paintOrder: ConstantAccessor<string, Datum>;
130
- onclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
131
- ondblclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
132
- onmouseup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
133
- onmousedown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
134
- onmouseenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
135
- onmousemove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
136
- onmouseleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
137
- onmouseout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
138
- onmouseover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
139
- onpointercancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
140
- onpointerdown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
141
- onpointerup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
142
- onpointerenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
143
- onpointerleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
144
- onpointermove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
145
- onpointerover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
146
- onpointerout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
147
- ondrag: import("svelte/elements").MouseEventHandler<SVGPathElement>;
148
- ondrop: import("svelte/elements").MouseEventHandler<SVGPathElement>;
149
- ondragstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
150
- ondragenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
151
- ondragleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
152
- ondragover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
153
- ondragend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
154
- ontouchstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
155
- ontouchmove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
156
- ontouchend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
157
- ontouchcancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
158
- oncontextmenu: import("svelte/elements").MouseEventHandler<SVGPathElement>;
159
- onwheel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
160
- class: string;
161
- style: string;
162
- cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
163
- }>>;
164
- scales: PlotScales;
165
- };
3
+ props(): any;
166
4
  events(): {};
167
5
  slots(): {};
168
6
  bindings(): "";
@@ -81,7 +81,9 @@ Helper component for rendering rectangular marks in SVG
81
81
  useInsetAsFallbackVertically ? inset : 0
82
82
  ) as number)
83
83
  );
84
- const borderRadius = $derived((options.borderRadius ?? 0) as BorderRadius);
84
+ const borderRadius = $derived(
85
+ resolveProp(options.borderRadius, datum?.datum, 0) as BorderRadius
86
+ );
85
87
  const hasBorderRadius = $derived(
86
88
  (typeof borderRadius === 'number' && borderRadius > 0) ||
87
89
  (typeof borderRadius === 'object' &&
@@ -1,77 +1,15 @@
1
- import type { BaseRectMarkProps } from '../../types/mark.js';
1
+ import type { BaseMarkProps, BaseRectMarkProps } from '../../types/mark.js';
2
2
  import type { DataRecord, ScaledDataRecord } from '../../types/data.js';
3
3
  import type { UsedScales } from '../../types/index.js';
4
4
  declare class __sveltets_Render<Datum extends DataRecord> {
5
5
  props(): {
6
- datum: ScaledDataRecord<Datum>;
6
+ datum: ScaledDataRecord<Datum_1>;
7
7
  class: string | null;
8
8
  x: number;
9
9
  y: number;
10
10
  width: number;
11
11
  height: number;
12
- options: BaseRectMarkProps<Datum> & Partial<{
13
- filter: import("../../types/index.js").ConstantAccessor<boolean, Datum>;
14
- facet: "auto" | "include" | "exclude";
15
- fx: import("../../types/index.js").ChannelAccessor<Datum>;
16
- fy: import("../../types/index.js").ChannelAccessor<Datum>;
17
- dx: import("../../types/index.js").ConstantAccessor<number, Datum>;
18
- dy: import("../../types/index.js").ConstantAccessor<number, Datum>;
19
- dodgeX: import("../../transforms/dodge.js").DodgeXOptions;
20
- dodgeY: import("../../transforms/dodge.js").DodgeYOptions;
21
- fill: import("../../types/index.js").ChannelAccessor<Datum>;
22
- fillOpacity: import("../../types/index.js").ConstantAccessor<number, Datum>;
23
- sort: ((a: import("../../types/data.js").RawValue, b: import("../../types/data.js").RawValue) => number) | {
24
- channel: string;
25
- order?: "ascending" | "descending";
26
- } | import("../../types/index.js").ConstantAccessor<import("../../types/data.js").RawValue, Datum>;
27
- stroke: import("../../types/index.js").ChannelAccessor<Datum>;
28
- strokeWidth: import("../../types/index.js").ConstantAccessor<number, Datum>;
29
- strokeOpacity: import("../../types/index.js").ConstantAccessor<number, Datum>;
30
- strokeLinejoin: import("../../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, Datum>;
31
- strokeLinecap: import("../../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, Datum>;
32
- strokeMiterlimit: import("../../types/index.js").ConstantAccessor<number, Datum>;
33
- opacity: import("../../types/index.js").ChannelAccessor<Datum>;
34
- strokeDasharray: import("../../types/index.js").ConstantAccessor<string, Datum>;
35
- strokeDashoffset: import("../../types/index.js").ConstantAccessor<number, Datum>;
36
- mixBlendMode: import("../../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
37
- clipPath: string;
38
- imageFilter: import("../../types/index.js").ConstantAccessor<string, Datum>;
39
- shapeRendering: import("../../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
40
- paintOrder: import("../../types/index.js").ConstantAccessor<string, Datum>;
41
- onclick: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
42
- ondblclick: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
43
- onmouseup: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
44
- onmousedown: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
45
- onmouseenter: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
46
- onmousemove: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
47
- onmouseleave: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
48
- onmouseout: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
49
- onmouseover: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
50
- onpointercancel: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
51
- onpointerdown: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
52
- onpointerup: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
53
- onpointerenter: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
54
- onpointerleave: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
55
- onpointermove: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
56
- onpointerover: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
57
- onpointerout: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
58
- ondrag: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
59
- ondrop: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
60
- ondragstart: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
61
- ondragenter: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
62
- ondragleave: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
63
- ondragover: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
64
- ondragend: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
65
- ontouchstart: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
66
- ontouchmove: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
67
- ontouchend: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
68
- ontouchcancel: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
69
- oncontextmenu: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
70
- onwheel: import("svelte/elements.js").MouseEventHandler<SVGPathElement>;
71
- class: string;
72
- style: string;
73
- cursor: import("../../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Datum>;
74
- }>;
12
+ options: BaseRectMarkProps<Datum_1> & BaseMarkProps<Datum_1>;
75
13
  /**
76
14
  * By default, the `inset` property is applied to all four insets. Mark components
77
15
  * can tweak this behavior for insetTop and insetBottom by setting the
@@ -27,6 +27,7 @@ export { default as Geo } from './Geo.svelte';
27
27
  export { default as Graticule } from './Graticule.svelte';
28
28
  export { default as GridX } from './GridX.svelte';
29
29
  export { default as GridY } from './GridY.svelte';
30
+ export { default as Image } from './Image.svelte';
30
31
  export { default as Line } from './Line.svelte';
31
32
  export { default as LineX } from './LineX.svelte';
32
33
  export { default as LineY } from './LineY.svelte';
@@ -27,6 +27,7 @@ export { default as Geo } from './Geo.svelte';
27
27
  export { default as Graticule } from './Graticule.svelte';
28
28
  export { default as GridX } from './GridX.svelte';
29
29
  export { default as GridY } from './GridY.svelte';
30
+ export { default as Image } from './Image.svelte';
30
31
  export { default as Line } from './Line.svelte';
31
32
  export { default as LineX } from './LineX.svelte';
32
33
  export { default as LineY } from './LineY.svelte';
@@ -4,6 +4,15 @@ import { bin as d3Bin, extent, thresholdFreedmanDiaconis, thresholdScott, thresh
4
4
  import { reduceOutputs } from '../helpers/reduce.js';
5
5
  import { groupFacetsAndZ } from '../helpers/group.js';
6
6
  import { isDate } from '../helpers/typeChecks.js';
7
+ import { ORIGINAL_NAME_KEYS } from '../constants';
8
+ const CHANNELS = {
9
+ x: Symbol('x'),
10
+ x1: Symbol('x1'),
11
+ x2: Symbol('x2'),
12
+ y: Symbol('y'),
13
+ y1: Symbol('y1'),
14
+ y2: Symbol('y2')
15
+ };
7
16
  const ThresholdGenerators = {
8
17
  auto: thresholdScott,
9
18
  scott: thresholdScott,
@@ -41,19 +50,19 @@ function binBy(byDim, { data, ...channels }, options) {
41
50
  [byDim === 'x' ? 'insetLeft' : 'insetTop']: 0.5,
42
51
  [byDim === 'x' ? 'insetRight' : 'insetBottom']: 0.5,
43
52
  ...channels,
44
- [`${byDim}`]: `__${byDim}`,
45
- [`${byDim}1`]: `__${byDim}1`,
46
- [`${byDim}2`]: `__${byDim}2`,
47
- [`__${byDim}_origField`]: typeof channels[byDim] === 'string' ? channels[byDim] : null
53
+ [`${byDim}`]: CHANNELS[byDim], // `__${byDim}`,
54
+ [`${byDim}1`]: CHANNELS[`${byDim}1`],
55
+ [`${byDim}2`]: CHANNELS[`${byDim}2`],
56
+ [ORIGINAL_NAME_KEYS[byDim]]: typeof channels[byDim] === 'string' ? channels[byDim] : null
48
57
  };
49
58
  const newData = [];
50
59
  let passedGroups = [];
51
60
  const bins = bin(data);
52
61
  (options.cumulative < 0 ? bins.toReversed() : bins).forEach((group) => {
53
62
  const itemBinProps = {
54
- [`__${byDim}1`]: group.x0,
55
- [`__${byDim}2`]: group.x1,
56
- [`__${byDim}`]: isDate(group.x0)
63
+ [CHANNELS[`${byDim}1`]]: group.x0,
64
+ [CHANNELS[`${byDim}2`]]: group.x1,
65
+ [CHANNELS[`${byDim}`]]: isDate(group.x0)
57
66
  ? new Date(Math.round((group.x0.getTime() + group.x1.getTime()) * 0.5))
58
67
  : (group.x0 + group.x1) * 0.5
59
68
  };
@@ -101,11 +110,12 @@ export function bin({ data, ...channels }, options = { thresholds: 'auto', cumul
101
110
  // channels.x is the input
102
111
  binX.value((d) => resolveChannel('x', d, channels));
103
112
  binY.value((d) => resolveChannel('y', d, channels));
113
+ let yThresholds = [];
104
114
  if (interval) {
105
115
  const [xlo, xhi] = extent(data.map((d) => resolveChannel('x', d, channels)));
106
116
  const [ylo, yhi] = extent(data.map((d) => resolveChannel('y', d, channels)));
107
117
  binX.thresholds(maybeInterval(interval).range(xlo, xhi));
108
- binY.thresholds(maybeInterval(interval).range(ylo, yhi));
118
+ binY.thresholds((yThresholds = maybeInterval(interval).range(ylo, yhi)));
109
119
  }
110
120
  else if (thresholds) {
111
121
  // when binning in x and y, we need to ensure we are using consistent thresholds
@@ -114,7 +124,7 @@ export function bin({ data, ...channels }, options = { thresholds: 'auto', cumul
114
124
  : thresholds;
115
125
  binX.thresholds(t);
116
126
  binY.thresholds(t);
117
- const yThresholds = binY(data)
127
+ yThresholds = binY(data)
118
128
  .slice(1)
119
129
  .map((g) => g.x0);
120
130
  binY.thresholds(yThresholds);
@@ -124,14 +134,14 @@ export function bin({ data, ...channels }, options = { thresholds: 'auto', cumul
124
134
  let newChannels = {
125
135
  inset: 0.5,
126
136
  ...channels,
127
- x: '__x',
128
- x1: '__x1',
129
- x2: '__x2',
130
- y: '__y',
131
- y1: '__y1',
132
- y2: '__y2',
133
- __x_origField: typeof channels.x === 'string' ? channels.x : null,
134
- __y_origField: typeof channels.y === 'string' ? channels.y : null
137
+ x: CHANNELS.x,
138
+ x1: CHANNELS.x1,
139
+ x2: CHANNELS.x2,
140
+ y: CHANNELS.y,
141
+ y1: CHANNELS.y1,
142
+ y2: CHANNELS.y2,
143
+ [ORIGINAL_NAME_KEYS.x]: typeof channels.x === 'string' ? channels.x : null,
144
+ [ORIGINAL_NAME_KEYS.y]: typeof channels.y === 'string' ? channels.y : null
135
145
  };
136
146
  const groupBy = channels.z ? 'z' : channels.fill ? 'fill' : channels.stroke ? 'stroke' : true;
137
147
  const groupByPropName = groupBy !== true && typeof channels[groupBy] === 'string' ? channels[groupBy] : '__group';
@@ -141,20 +151,30 @@ export function bin({ data, ...channels }, options = { thresholds: 'auto', cumul
141
151
  const newData = [];
142
152
  binX(data).forEach((groupX) => {
143
153
  const newRecordBaseX = {
144
- __x1: groupX.x0,
145
- __x2: groupX.x1,
146
- __x: isDate(groupX.x0)
154
+ [CHANNELS.x1]: groupX.x0,
155
+ [CHANNELS.x2]: groupX.x1,
156
+ [CHANNELS.x]: isDate(groupX.x0)
147
157
  ? new Date(Math.round((groupX.x0.getTime() + groupX.x1.getTime()) * 0.5))
148
158
  : (groupX.x0 + groupX.x1) * 0.5
149
159
  };
150
- binY(groupX).forEach((groupY) => {
160
+ const [ylo, yhi] = extent(groupX.map((d) => resolveChannel('y', d, channels)));
161
+ const tExtentLo = yThresholds.filter((d) => d < ylo).at(-1);
162
+ const tExtentHi = yThresholds.filter((d) => d > yhi).at(0);
163
+ binY(groupX).forEach((groupY, i) => {
164
+ if (groupY.length === 0)
165
+ return;
166
+ // The first bin.x0 is always equal to the minimum domain value,
167
+ // and the last bin.x1 is always equal to the maximum domain value,
168
+ // therefore we need to align with the thresholds
169
+ const y1 = groupY.x0 === ylo ? tExtentLo : groupY.x0;
170
+ const y2 = groupY.x1 === yhi ? tExtentHi : groupY.x1;
151
171
  const newRecordBaseY = {
152
172
  ...newRecordBaseX,
153
- __y1: groupY.x0,
154
- __y2: groupY.x1,
155
- __y: isDate(groupY.x0)
156
- ? new Date(Math.round((groupY.x0.getTime() + groupY.x1.getTime()) * 0.5))
157
- : (groupY.x0 + groupY.x1) * 0.5
173
+ [CHANNELS.y1]: y1,
174
+ [CHANNELS.y2]: y2,
175
+ [CHANNELS.y]: isDate(y1)
176
+ ? new Date(Math.round((y1.getTime() + y2.getTime()) * 0.5))
177
+ : (y1 + y2) * 0.5
158
178
  };
159
179
  const newGroupChannels = groupFacetsAndZ(groupY, channels, (items, itemGroupProps) => {
160
180
  const newRecord = {
@@ -11,72 +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, Record<string | symbol, import("../types/index.js").RawValue>>;
16
- facet?: "auto" | "include" | "exclude" | undefined;
17
- fx?: import("../types/index.js").ChannelAccessor<Record<string | symbol, import("../types/index.js").RawValue>>;
18
- fy?: import("../types/index.js").ChannelAccessor<Record<string | symbol, import("../types/index.js").RawValue>>;
19
- dx?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
20
- dy?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
21
- dodgeX?: import("./dodge").DodgeXOptions | undefined;
22
- dodgeY?: import("./dodge").DodgeYOptions | undefined;
23
- fill?: import("../types/index.js").ChannelAccessor<Record<string | symbol, import("../types/index.js").RawValue>>;
24
- fillOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
25
- sort?: ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | {
26
- channel: string;
27
- order?: "ascending" | "descending";
28
- } | import("../types/index.js").ConstantAccessor<import("../types/index.js").RawValue, Record<string | symbol, import("../types/index.js").RawValue>>;
29
- stroke?: import("../types/index.js").ChannelAccessor<Record<string | symbol, import("../types/index.js").RawValue>>;
30
- strokeWidth?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
31
- strokeOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
32
- strokeLinejoin?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinejoin, Record<string | symbol, import("../types/index.js").RawValue>>;
33
- strokeLinecap?: import("../types/index.js").ConstantAccessor<import("csstype").Property.StrokeLinecap, Record<string | symbol, import("../types/index.js").RawValue>>;
34
- strokeMiterlimit?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
35
- opacity?: import("../types/index.js").ChannelAccessor<Record<string | symbol, import("../types/index.js").RawValue>>;
36
- strokeDasharray?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/index.js").RawValue>>;
37
- strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/index.js").RawValue>>;
38
- mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/index.js").RawValue>>;
39
- clipPath?: string | undefined;
40
- imageFilter?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/index.js").RawValue>>;
41
- shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Record<string | symbol, import("../types/index.js").RawValue>>;
42
- paintOrder?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/index.js").RawValue>>;
43
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
44
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
45
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
46
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
47
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
48
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
49
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
50
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
51
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
52
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
53
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
54
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
55
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
56
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
57
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
58
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
59
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
61
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
62
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
63
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
64
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
65
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
66
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
67
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
68
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
69
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
70
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
71
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
72
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
73
- class?: string | undefined;
74
- style?: string | undefined;
75
- cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Record<string | symbol, import("../types/index.js").RawValue>>;
76
- data: {
77
- __x: import("../types/index.js").RawValue;
78
- __lo: number;
79
- __avg: number;
80
- __hi: number;
81
- }[];
82
- };
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: Record<string | symbol, RawValue>[];
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: Record<string | symbol, RawValue>[];
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: Record<string | symbol, RawValue>[];
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: Record<string | symbol, RawValue>[];
65
- };
57
+ export declare function groupZ(input: TransformArg<T, DataRecord>, options?: GroupZOptions): any;
66
58
  export {};