svelteplot 0.10.3 → 0.11.0-pr-514.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 (229) hide show
  1. package/dist/Mark.svelte +42 -25
  2. package/dist/Mark.svelte.d.ts +111 -32
  3. package/dist/Plot.svelte +21 -15
  4. package/dist/core/Facet.svelte +1 -1
  5. package/dist/core/FacetAxes.svelte +13 -8
  6. package/dist/core/FacetGrid.svelte +4 -4
  7. package/dist/core/Plot.svelte +70 -36
  8. package/dist/helpers/arrowPath.js +10 -5
  9. package/dist/helpers/autoScales.d.ts +3 -3
  10. package/dist/helpers/autoScales.js +28 -18
  11. package/dist/helpers/autoTicks.js +2 -0
  12. package/dist/helpers/callWithProps.d.ts +1 -2
  13. package/dist/helpers/colors.d.ts +4 -4
  14. package/dist/helpers/facets.d.ts +42 -1
  15. package/dist/helpers/facets.js +83 -1
  16. package/dist/helpers/index.js +1 -1
  17. package/dist/helpers/math.js +1 -1
  18. package/dist/helpers/mergeDeep.d.ts +1 -3
  19. package/dist/helpers/mergeDeep.js +15 -16
  20. package/dist/helpers/noise.js +1 -1
  21. package/dist/helpers/projection.d.ts +4 -3
  22. package/dist/helpers/projection.js +17 -5
  23. package/dist/helpers/reduce.d.ts +4 -4
  24. package/dist/helpers/reduce.js +6 -4
  25. package/dist/helpers/regressionLoess.js +2 -1
  26. package/dist/helpers/resolve.d.ts +6 -3
  27. package/dist/helpers/resolve.js +25 -16
  28. package/dist/helpers/roundedRect.js +1 -1
  29. package/dist/helpers/scales.d.ts +11 -10
  30. package/dist/helpers/scales.js +43 -13
  31. package/dist/helpers/time.d.ts +10 -3
  32. package/dist/helpers/time.js +2 -1
  33. package/dist/hooks/index.d.ts +2 -0
  34. package/dist/hooks/index.js +2 -0
  35. package/dist/hooks/plotDefaults.d.ts +3 -1
  36. package/dist/hooks/plotDefaults.js +33 -1
  37. package/dist/hooks/usePlot.svelte.d.ts +10 -25
  38. package/dist/hooks/usePlot.svelte.js +8 -7
  39. package/dist/index.d.ts +1 -2
  40. package/dist/index.js +1 -3
  41. package/dist/marks/Area.svelte +24 -13
  42. package/dist/marks/Area.svelte.d.ts +118 -34
  43. package/dist/marks/AreaX.svelte +42 -8
  44. package/dist/marks/AreaX.svelte.d.ts +154 -71
  45. package/dist/marks/AreaY.svelte +42 -8
  46. package/dist/marks/AreaY.svelte.d.ts +154 -71
  47. package/dist/marks/Arrow.svelte +42 -23
  48. package/dist/marks/Arrow.svelte.d.ts +114 -35
  49. package/dist/marks/AxisX.svelte +43 -28
  50. package/dist/marks/AxisX.svelte.d.ts +125 -40
  51. package/dist/marks/AxisY.svelte +43 -26
  52. package/dist/marks/AxisY.svelte.d.ts +127 -40
  53. package/dist/marks/BarX.svelte +12 -10
  54. package/dist/marks/BarX.svelte.d.ts +104 -32
  55. package/dist/marks/BarY.svelte +11 -10
  56. package/dist/marks/BarY.svelte.d.ts +106 -34
  57. package/dist/marks/BollingerX.svelte +4 -7
  58. package/dist/marks/BollingerX.svelte.d.ts +105 -30
  59. package/dist/marks/BollingerY.svelte +3 -0
  60. package/dist/marks/BollingerY.svelte.d.ts +105 -30
  61. package/dist/marks/BoxX.svelte +3 -3
  62. package/dist/marks/BoxY.svelte +12 -9
  63. package/dist/marks/BoxY.svelte.d.ts +128 -53
  64. package/dist/marks/Brush.svelte +26 -21
  65. package/dist/marks/Brush.svelte.d.ts +119 -60
  66. package/dist/marks/Cell.svelte +13 -9
  67. package/dist/marks/Cell.svelte.d.ts +105 -30
  68. package/dist/marks/CellX.svelte +2 -1
  69. package/dist/marks/CellX.svelte.d.ts +105 -32
  70. package/dist/marks/CellY.svelte +2 -1
  71. package/dist/marks/CellY.svelte.d.ts +105 -32
  72. package/dist/marks/ColorLegend.svelte +24 -13
  73. package/dist/marks/ColorLegend.svelte.d.ts +1 -0
  74. package/dist/marks/CustomMark.svelte +16 -10
  75. package/dist/marks/CustomMark.svelte.d.ts +112 -31
  76. package/dist/marks/CustomMarkHTML.svelte +8 -2
  77. package/dist/marks/CustomMarkHTML.svelte.d.ts +8 -2
  78. package/dist/marks/DifferenceY.svelte +31 -20
  79. package/dist/marks/DifferenceY.svelte.d.ts +134 -55
  80. package/dist/marks/Dot.svelte +21 -11
  81. package/dist/marks/Dot.svelte.d.ts +117 -38
  82. package/dist/marks/DotX.svelte +2 -0
  83. package/dist/marks/DotX.svelte.d.ts +136 -62
  84. package/dist/marks/DotY.svelte +1 -0
  85. package/dist/marks/DotY.svelte.d.ts +135 -62
  86. package/dist/marks/Frame.svelte +47 -9
  87. package/dist/marks/Frame.svelte.d.ts +124 -41
  88. package/dist/marks/Geo.svelte +21 -12
  89. package/dist/marks/Geo.svelte.d.ts +105 -30
  90. package/dist/marks/Graticule.svelte +3 -0
  91. package/dist/marks/Graticule.svelte.d.ts +3 -0
  92. package/dist/marks/GridX.svelte +31 -16
  93. package/dist/marks/GridX.svelte.d.ts +108 -32
  94. package/dist/marks/GridY.svelte +30 -15
  95. package/dist/marks/GridY.svelte.d.ts +108 -32
  96. package/dist/marks/HTMLTooltip.svelte +37 -27
  97. package/dist/marks/HTMLTooltip.svelte.d.ts +7 -0
  98. package/dist/marks/Image.svelte +50 -25
  99. package/dist/marks/Image.svelte.d.ts +117 -35
  100. package/dist/marks/Line.svelte +67 -44
  101. package/dist/marks/Line.svelte.d.ts +119 -30
  102. package/dist/marks/LineX.svelte +2 -1
  103. package/dist/marks/LineX.svelte.d.ts +142 -69
  104. package/dist/marks/LineY.svelte +2 -1
  105. package/dist/marks/LineY.svelte.d.ts +142 -69
  106. package/dist/marks/Link.svelte +70 -46
  107. package/dist/marks/Link.svelte.d.ts +126 -41
  108. package/dist/marks/Pointer.svelte +46 -35
  109. package/dist/marks/Pointer.svelte.d.ts +7 -0
  110. package/dist/marks/Rect.svelte +13 -5
  111. package/dist/marks/Rect.svelte.d.ts +116 -35
  112. package/dist/marks/RectX.svelte +6 -3
  113. package/dist/marks/RectX.svelte.d.ts +158 -12
  114. package/dist/marks/RectY.svelte +6 -3
  115. package/dist/marks/RectY.svelte.d.ts +158 -12
  116. package/dist/marks/RegressionX.svelte +13 -6
  117. package/dist/marks/RegressionX.svelte.d.ts +8 -3
  118. package/dist/marks/RegressionY.svelte +13 -6
  119. package/dist/marks/RegressionY.svelte.d.ts +8 -3
  120. package/dist/marks/RuleX.svelte +18 -11
  121. package/dist/marks/RuleX.svelte.d.ts +112 -32
  122. package/dist/marks/RuleY.svelte +19 -12
  123. package/dist/marks/RuleY.svelte.d.ts +114 -34
  124. package/dist/marks/Spike.svelte +11 -5
  125. package/dist/marks/Spike.svelte.d.ts +146 -68
  126. package/dist/marks/Text.svelte +24 -7
  127. package/dist/marks/Text.svelte.d.ts +253 -75
  128. package/dist/marks/TickX.svelte +56 -48
  129. package/dist/marks/TickX.svelte.d.ts +114 -40
  130. package/dist/marks/TickY.svelte +59 -51
  131. package/dist/marks/TickY.svelte.d.ts +117 -43
  132. package/dist/marks/Trail.svelte +25 -13
  133. package/dist/marks/Trail.svelte.d.ts +116 -33
  134. package/dist/marks/Vector.svelte +20 -11
  135. package/dist/marks/Vector.svelte.d.ts +116 -35
  136. package/dist/marks/WaffleX.svelte +18 -16
  137. package/dist/marks/WaffleX.svelte.d.ts +131 -57
  138. package/dist/marks/WaffleY.svelte +16 -15
  139. package/dist/marks/WaffleY.svelte.d.ts +129 -56
  140. package/dist/marks/helpers/Anchor.svelte +17 -2
  141. package/dist/marks/helpers/Anchor.svelte.d.ts +16 -1
  142. package/dist/marks/helpers/AreaCanvas.svelte +8 -8
  143. package/dist/marks/helpers/BaseAxisX.svelte +38 -41
  144. package/dist/marks/helpers/BaseAxisX.svelte.d.ts +11 -17
  145. package/dist/marks/helpers/BaseAxisY.svelte +35 -35
  146. package/dist/marks/helpers/BaseAxisY.svelte.d.ts +12 -15
  147. package/dist/marks/helpers/Box.svelte +35 -28
  148. package/dist/marks/helpers/Box.svelte.d.ts +122 -50
  149. package/dist/marks/helpers/DotCanvas.svelte +11 -9
  150. package/dist/marks/helpers/GeoCanvas.svelte +7 -6
  151. package/dist/marks/helpers/LineCanvas.svelte +7 -7
  152. package/dist/marks/helpers/LinearGradientX.svelte +2 -2
  153. package/dist/marks/helpers/LinearGradientX.svelte.d.ts +1 -1
  154. package/dist/marks/helpers/LinearGradientY.svelte +2 -2
  155. package/dist/marks/helpers/LinearGradientY.svelte.d.ts +1 -1
  156. package/dist/marks/helpers/Marker.svelte +2 -2
  157. package/dist/marks/helpers/MarkerPath.svelte +15 -12
  158. package/dist/marks/helpers/MarkerPath.svelte.d.ts +105 -32
  159. package/dist/marks/helpers/MultilineText.svelte +24 -17
  160. package/dist/marks/helpers/MultilineText.svelte.d.ts +1 -1
  161. package/dist/marks/helpers/RectCanvas.svelte +31 -26
  162. package/dist/marks/helpers/RectPath.svelte +2 -2
  163. package/dist/marks/helpers/Regression.svelte +176 -86
  164. package/dist/marks/helpers/Regression.svelte.d.ts +20 -8
  165. package/dist/marks/helpers/RuleCanvas.svelte +9 -6
  166. package/dist/marks/helpers/TextCanvas.svelte +13 -9
  167. package/dist/marks/helpers/TextCanvas.svelte.d.ts +6 -6
  168. package/dist/marks/helpers/TickCanvas.svelte +6 -5
  169. package/dist/marks/helpers/TrailCanvas.svelte +16 -18
  170. package/dist/marks/helpers/TrailCanvas.svelte.d.ts +3 -5
  171. package/dist/marks/helpers/canvas.js +16 -9
  172. package/dist/marks/helpers/events.d.ts +2 -2
  173. package/dist/marks/helpers/events.js +14 -7
  174. package/dist/marks/helpers/trail.js +1 -1
  175. package/dist/marks/helpers/waffle.d.ts +3 -3
  176. package/dist/marks/helpers/waffle.js +7 -5
  177. package/dist/regression/polynomial.d.ts +1 -1
  178. package/dist/regression/polynomial.js +7 -7
  179. package/dist/regression/utils/determination.d.ts +1 -1
  180. package/dist/regression/utils/determination.js +1 -1
  181. package/dist/regression/utils/geometry.d.ts +1 -1
  182. package/dist/regression/utils/interpose.d.ts +1 -1
  183. package/dist/regression/utils/interpose.js +1 -1
  184. package/dist/regression/utils/points.d.ts +1 -1
  185. package/dist/transforms/bin.d.ts +3 -3
  186. package/dist/transforms/bin.js +29 -20
  187. package/dist/transforms/bollinger.d.ts +8 -0
  188. package/dist/transforms/bollinger.js +15 -4
  189. package/dist/transforms/centroid.d.ts +4 -0
  190. package/dist/transforms/centroid.js +4 -0
  191. package/dist/transforms/density.d.ts +4 -4
  192. package/dist/transforms/density.js +23 -16
  193. package/dist/transforms/dodge.d.ts +12 -1
  194. package/dist/transforms/dodge.js +15 -6
  195. package/dist/transforms/group.d.ts +141 -4
  196. package/dist/transforms/group.js +4 -1
  197. package/dist/transforms/interval.d.ts +204 -60
  198. package/dist/transforms/jitter.d.ts +421 -4
  199. package/dist/transforms/jitter.js +10 -1
  200. package/dist/transforms/map.d.ts +412 -4
  201. package/dist/transforms/map.js +5 -5
  202. package/dist/transforms/normalize.d.ts +276 -5
  203. package/dist/transforms/normalize.js +6 -4
  204. package/dist/transforms/recordize.d.ts +17 -5
  205. package/dist/transforms/recordize.js +13 -9
  206. package/dist/transforms/rename.d.ts +11 -4
  207. package/dist/transforms/rename.js +7 -2
  208. package/dist/transforms/select.d.ts +722 -210
  209. package/dist/transforms/select.js +13 -1
  210. package/dist/transforms/shift.d.ts +8 -0
  211. package/dist/transforms/shift.js +20 -6
  212. package/dist/transforms/sort.d.ts +13 -258
  213. package/dist/transforms/sort.js +13 -10
  214. package/dist/transforms/stack.d.ts +58 -9
  215. package/dist/transforms/stack.js +27 -11
  216. package/dist/transforms/window.d.ts +221 -66
  217. package/dist/transforms/window.js +8 -2
  218. package/dist/types/axes.d.ts +43 -0
  219. package/dist/types/axes.js +1 -0
  220. package/dist/types/channel.d.ts +30 -2
  221. package/dist/types/data.d.ts +14 -1
  222. package/dist/types/facet.d.ts +5 -0
  223. package/dist/types/index.d.ts +33 -8
  224. package/dist/types/index.js +11 -7
  225. package/dist/types/mark.d.ts +125 -36
  226. package/dist/types/plot.d.ts +118 -16
  227. package/dist/types/scale.d.ts +125 -8
  228. package/package.json +37 -32
  229. package/dist/helpers/autoTicks.d.ts +0 -12
@@ -2,7 +2,7 @@ import isDataRecord from '../helpers/isDataRecord.js';
2
2
  import { resolveChannel, resolveProp } from '../helpers/resolve.js';
3
3
  import { stack, stackOffsetExpand, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAppearance, stackOrderAscending, stackOrderInsideOut, stackOrderNone, stackOffsetDiverging } from 'd3-shape';
4
4
  import { sum, groups as d3Groups, min, range } from 'd3-array';
5
- import { groupFacetsAndZ } from '../helpers/group';
5
+ import { groupFacetsAndZ } from '../helpers/group.js';
6
6
  import { filter } from './filter.js';
7
7
  import { sort } from './sort.js';
8
8
  import { INDEX, ORIGINAL_NAME_KEYS } from '../constants.js';
@@ -55,7 +55,7 @@ function stackXY(byDim, data, channels, options) {
55
55
  channels[`${byLow}`] === undefined &&
56
56
  channels[`${byHigh}`] === undefined) {
57
57
  // resolve all channels for easier computation below
58
- const resolvedData = indexData(data).map((d, i) => ({
58
+ const resolvedData = indexData(data).map((d) => ({
59
59
  ...(isDataRecord(d) ? d : { [RAW_VALUE]: d }),
60
60
  [S[secondDim]]: resolveChannel(secondDim, d, channels),
61
61
  [GROUP]: groupBy === true ? 'G' : resolveChannel(groupBy, d, channels),
@@ -91,7 +91,7 @@ function stackXY(byDim, data, channels, options) {
91
91
  // Unit stacking: map each secondary-dimension bucket to an array of values.
92
92
  // Series are positional (0..N-1) within each bucket.
93
93
  let maxKeys = 0;
94
- stackData = groupedBySecondDim.map(([k, items]) => {
94
+ stackData = groupedBySecondDim.map(([_k, items]) => {
95
95
  const values = items
96
96
  // keep original order within bucket; no stable series identity across buckets
97
97
  .map((d) => ({ i: d[INDEX], v: d[S[byDim]] }));
@@ -104,7 +104,7 @@ function stackXY(byDim, data, channels, options) {
104
104
  else {
105
105
  // Grouped stacking: keep consistent series identities using the group key
106
106
  const keySet = new Set(facetData.map((d) => d[GROUP]));
107
- stackData = groupedBySecondDim.map(([k, items]) => {
107
+ stackData = groupedBySecondDim.map(([_k, items]) => {
108
108
  const obj = {};
109
109
  items.forEach((d) => {
110
110
  const key = d[GROUP];
@@ -130,11 +130,11 @@ function stackXY(byDim, data, channels, options) {
130
130
  const series = stack()
131
131
  .order(stackOrder)
132
132
  // Wiggle requires consistent series identities; fall back to 'center' for unit stacking
133
- .offset(groupBy === true && options.offset === 'wiggle'
133
+ .offset((groupBy === true && options.offset === 'wiggle'
134
134
  ? STACK_OFFSET['center']
135
- : STACK_OFFSET[options.offset])
135
+ : STACK_OFFSET[options.offset ?? 'none']))
136
136
  .keys(keys)
137
- .value((d, key, i, data) => {
137
+ .value((d, key, _i, _data) => {
138
138
  return d[key]?.v == null ? undefined : d[key]?.v;
139
139
  })(stackData);
140
140
  // and combine it all back into a flat array
@@ -153,21 +153,28 @@ function stackXY(byDim, data, channels, options) {
153
153
  ...(typeof channels[byDim] === 'string' && !channels[ORIGINAL_NAME_KEYS[byDim]]
154
154
  ? { [ORIGINAL_NAME_KEYS[byDim]]: channels[byDim] }
155
155
  : {}),
156
- ...{ [byLow]: S[byLow], [byHigh]: S[byHigh] }
156
+ [byLow]: S[byLow],
157
+ [byHigh]: S[byHigh]
157
158
  };
158
159
  }
159
160
  return { data, ...channels };
160
161
  }
162
+ /**
163
+ * stacks data along the y dimension, producing y1 and y2 channels
164
+ */
161
165
  export function stackY({ data, ...channels }, opts = {}) {
162
166
  return stackXY('y', data, channels, applyDefaults(opts));
163
167
  }
168
+ /**
169
+ * stacks data along the x dimension, producing x1 and x2 channels
170
+ */
164
171
  export function stackX({ data, ...channels }, opts = {}) {
165
172
  return stackXY('x', data, channels, applyDefaults(opts));
166
173
  }
167
174
  function applyDefaults(opts) {
168
175
  if (opts === false)
169
176
  return false;
170
- if (opts.offset === 'wiggle' && opts.order === undefined) {
177
+ if (typeof opts === 'object' && opts.offset === 'wiggle' && opts.order === undefined) {
171
178
  return { ...DEFAULT_STACK_OPTIONS, order: 'inside-out', ...opts };
172
179
  }
173
180
  return { ...DEFAULT_STACK_OPTIONS, ...opts };
@@ -198,13 +205,14 @@ function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, {
198
205
  const innerOpt = inner === 'x' ? xOpt : yOpt;
199
206
  const grouped = d3Groups(data, (d) => resolveProp(d[outerChannel], d));
200
207
  const innerOrder = new Map(grouped[0][1].map((d, i) => [d[innerChannel], i]));
201
- grouped.forEach(([k, items], i) => {
208
+ grouped.forEach(([_k, items], i) => {
202
209
  const groupValue = sum(items, (d) => resolveProp(d[value], d));
203
210
  const o1 = outerPos, o2 = outerPos + groupValue;
204
211
  outerPos = o2;
205
212
  let innerPos = 0;
206
213
  (i
207
- ? items.sort((a, b) => innerOrder.get(a[innerChannel]) - innerOrder.get(b[innerChannel]))
214
+ ? items.sort((a, b) => (innerOrder.get(a[innerChannel]) ?? 0) -
215
+ (innerOrder.get(b[innerChannel]) ?? 0))
208
216
  : items).forEach((d) => {
209
217
  const iv = resolveProp(d[value], d);
210
218
  const i1 = innerPos, i2 = innerPos + iv;
@@ -237,9 +245,17 @@ function stackMosaic({ data, x, y, value, fx, fy, ...rest }, { outer, inner }, {
237
245
  y2: S.y2
238
246
  };
239
247
  }
248
+ /**
249
+ * creates a mosaic layout with the outer (width) dimension along x and
250
+ * the inner (height) dimension along y
251
+ */
240
252
  export function stackMosaicX(args, opts) {
241
253
  return stackMosaic(args, { outer: 'x', inner: 'y' }, opts);
242
254
  }
255
+ /**
256
+ * creates a mosaic layout with the outer (height) dimension along y and
257
+ * the inner (width) dimension along x
258
+ */
243
259
  export function stackMosaicY(args, opts) {
244
260
  return stackMosaic(args, { outer: 'y', inner: 'x' }, opts);
245
261
  }
@@ -1,12 +1,21 @@
1
1
  import { type ReducerName } from '../helpers/reduce.js';
2
2
  import type { DataRecord, TransformArg } from '../types/index.js';
3
- type WindowOptions = {
3
+ export type WindowAnchor = 'start' | 'middle' | 'end';
4
+ export type WindowOptions = {
5
+ /** the window size (number of data points) */
4
6
  k: number;
5
- interval: string;
6
- anchor: 'start' | 'middle' | 'end';
7
- reduce: ReducerName;
8
- strict: boolean;
7
+ /** a time interval string to use instead of a fixed window size */
8
+ interval?: string;
9
+ /** where to align the window relative to the current data point */
10
+ anchor?: WindowAnchor;
11
+ /** the reducer function to apply within each window (e.g. "mean", "median", "sum") */
12
+ reduce?: ReducerName;
13
+ /** if true, return null when the window has fewer than k values */
14
+ strict?: boolean | number;
9
15
  };
16
+ /**
17
+ * applies a sliding window reducer to the x channel
18
+ */
10
19
  export declare function windowX(args: TransformArg<DataRecord>, options: WindowOptions): {
11
20
  filter?: import("../types/index.js").ConstantAccessor<boolean, Record<string | symbol, import("../types/data.js").RawValue>>;
12
21
  facet?: "auto" | "include" | "exclude" | undefined;
@@ -18,6 +27,16 @@ export declare function windowX(args: TransformArg<DataRecord>, options: WindowO
18
27
  dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
19
28
  fill?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
20
29
  fillOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
30
+ fontFamily?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontFamily, Record<string | symbol, import("../types/data.js").RawValue>>;
31
+ fontSize?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontSize<number>, Record<string | symbol, import("../types/data.js").RawValue>>;
32
+ fontStyle?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontStyle, Record<string | symbol, import("../types/data.js").RawValue>>;
33
+ fontVariant?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontVariant, Record<string | symbol, import("../types/data.js").RawValue>>;
34
+ fontWeight?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontWeight, Record<string | symbol, import("../types/data.js").RawValue>>;
35
+ letterSpacing?: import("../types/index.js").ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
36
+ wordSpacing?: import("../types/index.js").ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
37
+ textAnchor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextAnchor, Record<string | symbol, import("../types/data.js").RawValue>>;
38
+ textTransform?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextTransform, Record<string | symbol, import("../types/data.js").RawValue>>;
39
+ textDecoration?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
21
40
  sort?: ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | {
22
41
  channel: string;
23
42
  order?: "ascending" | "descending";
@@ -31,50 +50,115 @@ export declare function windowX(args: TransformArg<DataRecord>, options: WindowO
31
50
  opacity?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
32
51
  strokeDasharray?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
33
52
  strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
53
+ blend?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
34
54
  mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
35
55
  clipPath?: string | undefined;
36
56
  mask?: string | undefined;
37
57
  imageFilter?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
38
58
  shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Record<string | symbol, import("../types/data.js").RawValue>>;
39
59
  paintOrder?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
40
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
41
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
42
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
43
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
44
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
45
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
46
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
47
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
48
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
49
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
50
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
51
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
52
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
53
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
54
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
55
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
56
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
57
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
58
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
59
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
61
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
62
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
63
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
64
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
65
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
66
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
67
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
68
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
69
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
60
+ onclick?: ((event: Event & {
61
+ currentTarget: SVGPathElement;
62
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
63
+ ondblclick?: ((event: Event & {
64
+ currentTarget: SVGPathElement;
65
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
66
+ onmouseup?: ((event: Event & {
67
+ currentTarget: SVGPathElement;
68
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
69
+ onmousedown?: ((event: Event & {
70
+ currentTarget: SVGPathElement;
71
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
72
+ onmouseenter?: ((event: Event & {
73
+ currentTarget: SVGPathElement;
74
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
75
+ onmousemove?: ((event: Event & {
76
+ currentTarget: SVGPathElement;
77
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
78
+ onmouseleave?: ((event: Event & {
79
+ currentTarget: SVGPathElement;
80
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
81
+ onmouseout?: ((event: Event & {
82
+ currentTarget: SVGPathElement;
83
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
84
+ onmouseover?: ((event: Event & {
85
+ currentTarget: SVGPathElement;
86
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
87
+ onpointercancel?: ((event: Event & {
88
+ currentTarget: SVGPathElement;
89
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
90
+ onpointerdown?: ((event: Event & {
91
+ currentTarget: SVGPathElement;
92
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
93
+ onpointerup?: ((event: Event & {
94
+ currentTarget: SVGPathElement;
95
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
96
+ onpointerenter?: ((event: Event & {
97
+ currentTarget: SVGPathElement;
98
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
99
+ onpointerleave?: ((event: Event & {
100
+ currentTarget: SVGPathElement;
101
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
102
+ onpointermove?: ((event: Event & {
103
+ currentTarget: SVGPathElement;
104
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
105
+ onpointerover?: ((event: Event & {
106
+ currentTarget: SVGPathElement;
107
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
108
+ onpointerout?: ((event: Event & {
109
+ currentTarget: SVGPathElement;
110
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
111
+ ondrag?: ((event: Event & {
112
+ currentTarget: SVGPathElement;
113
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
114
+ ondrop?: ((event: Event & {
115
+ currentTarget: SVGPathElement;
116
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
117
+ ondragstart?: ((event: Event & {
118
+ currentTarget: SVGPathElement;
119
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
120
+ ondragenter?: ((event: Event & {
121
+ currentTarget: SVGPathElement;
122
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
123
+ ondragleave?: ((event: Event & {
124
+ currentTarget: SVGPathElement;
125
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
126
+ ondragover?: ((event: Event & {
127
+ currentTarget: SVGPathElement;
128
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
129
+ ondragend?: ((event: Event & {
130
+ currentTarget: SVGPathElement;
131
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
132
+ ontouchstart?: ((event: Event & {
133
+ currentTarget: SVGPathElement;
134
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
135
+ ontouchmove?: ((event: Event & {
136
+ currentTarget: SVGPathElement;
137
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
138
+ ontouchend?: ((event: Event & {
139
+ currentTarget: SVGPathElement;
140
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
141
+ ontouchcancel?: ((event: Event & {
142
+ currentTarget: SVGPathElement;
143
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
144
+ oncontextmenu?: ((event: Event & {
145
+ currentTarget: SVGPathElement;
146
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
147
+ onwheel?: ((event: Event & {
148
+ currentTarget: SVGPathElement;
149
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
70
150
  class?: string | undefined;
71
151
  style?: string | undefined;
72
152
  cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Record<string | symbol, import("../types/data.js").RawValue>>;
153
+ title?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
73
154
  data: {
74
155
  [x: string]: import("../types/data.js").RawValue;
75
156
  [x: symbol]: import("../types/data.js").RawValue;
76
157
  }[];
77
158
  };
159
+ /**
160
+ * applies a sliding window reducer to the y channel
161
+ */
78
162
  export declare function windowY(args: TransformArg<DataRecord>, options: WindowOptions): {
79
163
  filter?: import("../types/index.js").ConstantAccessor<boolean, Record<string | symbol, import("../types/data.js").RawValue>>;
80
164
  facet?: "auto" | "include" | "exclude" | undefined;
@@ -86,6 +170,16 @@ export declare function windowY(args: TransformArg<DataRecord>, options: WindowO
86
170
  dodgeY?: import("./dodge.js").DodgeYOptions | undefined;
87
171
  fill?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
88
172
  fillOpacity?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
173
+ fontFamily?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontFamily, Record<string | symbol, import("../types/data.js").RawValue>>;
174
+ fontSize?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontSize<number>, Record<string | symbol, import("../types/data.js").RawValue>>;
175
+ fontStyle?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontStyle, Record<string | symbol, import("../types/data.js").RawValue>>;
176
+ fontVariant?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontVariant, Record<string | symbol, import("../types/data.js").RawValue>>;
177
+ fontWeight?: import("../types/index.js").ConstantAccessor<import("csstype").Property.FontWeight, Record<string | symbol, import("../types/data.js").RawValue>>;
178
+ letterSpacing?: import("../types/index.js").ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
179
+ wordSpacing?: import("../types/index.js").ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
180
+ textAnchor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextAnchor, Record<string | symbol, import("../types/data.js").RawValue>>;
181
+ textTransform?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextTransform, Record<string | symbol, import("../types/data.js").RawValue>>;
182
+ textDecoration?: import("../types/index.js").ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Record<string | symbol, import("../types/data.js").RawValue>>;
89
183
  sort?: ((a: import("../types/data.js").RawValue, b: import("../types/data.js").RawValue) => number) | {
90
184
  channel: string;
91
185
  order?: "ascending" | "descending";
@@ -99,48 +193,109 @@ export declare function windowY(args: TransformArg<DataRecord>, options: WindowO
99
193
  opacity?: import("../types/channel.js").ChannelAccessor<Record<string | symbol, import("../types/data.js").RawValue>>;
100
194
  strokeDasharray?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
101
195
  strokeDashoffset?: import("../types/index.js").ConstantAccessor<number, Record<string | symbol, import("../types/data.js").RawValue>>;
196
+ blend?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
102
197
  mixBlendMode?: import("../types/index.js").ConstantAccessor<import("csstype").Property.MixBlendMode, Record<string | symbol, import("../types/data.js").RawValue>>;
103
198
  clipPath?: string | undefined;
104
199
  mask?: string | undefined;
105
200
  imageFilter?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
106
201
  shapeRendering?: import("../types/index.js").ConstantAccessor<import("csstype").Property.ShapeRendering, Record<string | symbol, import("../types/data.js").RawValue>>;
107
202
  paintOrder?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
108
- onclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
109
- ondblclick?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
110
- onmouseup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
111
- onmousedown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
112
- onmouseenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
113
- onmousemove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
114
- onmouseleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
115
- onmouseout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
116
- onmouseover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
117
- onpointercancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
118
- onpointerdown?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
119
- onpointerup?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
120
- onpointerenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
121
- onpointerleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
122
- onpointermove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
123
- onpointerover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
124
- onpointerout?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
125
- ondrag?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
126
- ondrop?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
127
- ondragstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
128
- ondragenter?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
129
- ondragleave?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
130
- ondragover?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
131
- ondragend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
132
- ontouchstart?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
133
- ontouchmove?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
134
- ontouchend?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
135
- ontouchcancel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
136
- oncontextmenu?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
137
- onwheel?: import("svelte/elements").MouseEventHandler<SVGPathElement> | undefined;
203
+ onclick?: ((event: Event & {
204
+ currentTarget: SVGPathElement;
205
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
206
+ ondblclick?: ((event: Event & {
207
+ currentTarget: SVGPathElement;
208
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
209
+ onmouseup?: ((event: Event & {
210
+ currentTarget: SVGPathElement;
211
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
212
+ onmousedown?: ((event: Event & {
213
+ currentTarget: SVGPathElement;
214
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
215
+ onmouseenter?: ((event: Event & {
216
+ currentTarget: SVGPathElement;
217
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
218
+ onmousemove?: ((event: Event & {
219
+ currentTarget: SVGPathElement;
220
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
221
+ onmouseleave?: ((event: Event & {
222
+ currentTarget: SVGPathElement;
223
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
224
+ onmouseout?: ((event: Event & {
225
+ currentTarget: SVGPathElement;
226
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
227
+ onmouseover?: ((event: Event & {
228
+ currentTarget: SVGPathElement;
229
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
230
+ onpointercancel?: ((event: Event & {
231
+ currentTarget: SVGPathElement;
232
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
233
+ onpointerdown?: ((event: Event & {
234
+ currentTarget: SVGPathElement;
235
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
236
+ onpointerup?: ((event: Event & {
237
+ currentTarget: SVGPathElement;
238
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
239
+ onpointerenter?: ((event: Event & {
240
+ currentTarget: SVGPathElement;
241
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
242
+ onpointerleave?: ((event: Event & {
243
+ currentTarget: SVGPathElement;
244
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
245
+ onpointermove?: ((event: Event & {
246
+ currentTarget: SVGPathElement;
247
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
248
+ onpointerover?: ((event: Event & {
249
+ currentTarget: SVGPathElement;
250
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
251
+ onpointerout?: ((event: Event & {
252
+ currentTarget: SVGPathElement;
253
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
254
+ ondrag?: ((event: Event & {
255
+ currentTarget: SVGPathElement;
256
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
257
+ ondrop?: ((event: Event & {
258
+ currentTarget: SVGPathElement;
259
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
260
+ ondragstart?: ((event: Event & {
261
+ currentTarget: SVGPathElement;
262
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
263
+ ondragenter?: ((event: Event & {
264
+ currentTarget: SVGPathElement;
265
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
266
+ ondragleave?: ((event: Event & {
267
+ currentTarget: SVGPathElement;
268
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
269
+ ondragover?: ((event: Event & {
270
+ currentTarget: SVGPathElement;
271
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
272
+ ondragend?: ((event: Event & {
273
+ currentTarget: SVGPathElement;
274
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
275
+ ontouchstart?: ((event: Event & {
276
+ currentTarget: SVGPathElement;
277
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
278
+ ontouchmove?: ((event: Event & {
279
+ currentTarget: SVGPathElement;
280
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
281
+ ontouchend?: ((event: Event & {
282
+ currentTarget: SVGPathElement;
283
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
284
+ ontouchcancel?: ((event: Event & {
285
+ currentTarget: SVGPathElement;
286
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
287
+ oncontextmenu?: ((event: Event & {
288
+ currentTarget: SVGPathElement;
289
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
290
+ onwheel?: ((event: Event & {
291
+ currentTarget: SVGPathElement;
292
+ }, datum: Record<string | symbol, import("../types/data.js").RawValue>, index: number) => void) | undefined;
138
293
  class?: string | undefined;
139
294
  style?: string | undefined;
140
295
  cursor?: import("../types/index.js").ConstantAccessor<import("csstype").Property.Cursor, Record<string | symbol, import("../types/data.js").RawValue>>;
296
+ title?: import("../types/index.js").ConstantAccessor<string, Record<string | symbol, import("../types/data.js").RawValue>>;
141
297
  data: {
142
298
  [x: string]: import("../types/data.js").RawValue;
143
299
  [x: symbol]: import("../types/data.js").RawValue;
144
300
  }[];
145
301
  };
146
- export {};
@@ -3,16 +3,22 @@ import { isValid } from '../helpers/index.js';
3
3
  import { mayberReducer } from '../helpers/reduce.js';
4
4
  import { resolveChannel } from '../helpers/resolve.js';
5
5
  import { groups as d3Groups } from 'd3-array';
6
+ /**
7
+ * applies a sliding window reducer to the x channel
8
+ */
6
9
  export function windowX(args, options) {
7
10
  return windowDim('x', args, options);
8
11
  }
12
+ /**
13
+ * applies a sliding window reducer to the y channel
14
+ */
9
15
  export function windowY(args, options) {
10
16
  return windowDim('y', args, options);
11
17
  }
12
18
  function windowDim(dim, { data, ...channels }, options) {
13
19
  const { anchor = 'middle', reduce = 'mean', strict = false } = options;
14
- let { k, interval } = options;
15
- interval = maybeInterval(interval, 'time');
20
+ let { k } = options;
21
+ const interval = options.interval ? maybeInterval(options.interval) : undefined;
16
22
  // we only change the data, but not the
17
23
  if (!((k = Math.floor(k)) > 0))
18
24
  throw new Error(`invalid k: ${k}`);
@@ -0,0 +1,43 @@
1
+ import type * as CSS from 'csstype';
2
+ import type { ChannelAccessor, ConstantAccessor, DataRecord, RawValue } from './index.js';
3
+ export type AxisTextAnchor = 'start' | 'middle' | 'end';
4
+ export type AxisTickDatum<TKeyRaw extends symbol = symbol, TKeyIndex extends symbol = symbol> = DataRecord & {
5
+ [K in TKeyRaw]: RawValue;
6
+ } & {
7
+ [K in TKeyIndex]: number;
8
+ };
9
+ export type AxisXTick<TDatum extends DataRecord = DataRecord> = TDatum & {
10
+ hidden: boolean;
11
+ dx: number;
12
+ dy: number;
13
+ x: number;
14
+ text: string[];
15
+ element: SVGTextElement | null;
16
+ };
17
+ export type AxisYTick<TDatum extends DataRecord = DataRecord> = TDatum & {
18
+ hidden: boolean;
19
+ dx: number;
20
+ dy: number;
21
+ y: number;
22
+ text: string | string[];
23
+ element: SVGTextElement | null;
24
+ };
25
+ export type BaseAxisXOptions = Record<string | symbol, any> & {
26
+ dx?: ConstantAccessor<number>;
27
+ dy?: ConstantAccessor<number>;
28
+ filter?: ChannelAccessor;
29
+ wordwrap?: boolean;
30
+ fontWeight?: ConstantAccessor<CSS.Property.FontWeight>;
31
+ textAnchor?: ConstantAccessor<AxisTextAnchor> | 'auto';
32
+ removeDuplicateTicks?: boolean;
33
+ anchor?: ConstantAccessor<'start' | 'end'>;
34
+ style?: string;
35
+ };
36
+ export type BaseAxisYOptions = Record<string | symbol, any> & {
37
+ dx?: ConstantAccessor<number>;
38
+ dy?: ConstantAccessor<number>;
39
+ filter?: ChannelAccessor;
40
+ fontWeight?: ConstantAccessor<CSS.Property.FontWeight>;
41
+ textAnchor?: ConstantAccessor<AxisTextAnchor>;
42
+ style?: string;
43
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,12 +1,40 @@
1
1
  import type { ConstantAccessor, RawValue } from './index.js';
2
- export type Channels<T> = Record<string | symbol, ChannelAccessor<T> | ConstantAccessor<T, string | number | boolean | symbol>>;
2
+ /** a partial record of channel names to their accessor definitions */
3
+ export type Channels<T = Record<string | symbol, RawValue>> = Partial<Record<string | symbol, ChannelAccessor<T> | ConstantAccessor<RawValue, T>>>;
4
+ type BivariantCallback<TArgs extends unknown[], TResult> = {
5
+ bivarianceHack(...args: TArgs): TResult;
6
+ }['bivarianceHack'];
7
+ /** channel accessor callback receiving a typed datum */
8
+ export type ChannelValueAccessor<T = Record<string | symbol, RawValue>> = BivariantCallback<[
9
+ d: T,
10
+ index: number
11
+ ], RawValue>;
12
+ /** plain objects are allowed as constants, except accessor option objects with `value`/`scale` keys */
13
+ export type ChannelConstantObject = object & {
14
+ value?: never;
15
+ scale?: never;
16
+ };
17
+ /** constant channel values (non-accessor) */
18
+ export type ChannelConstantValue = Exclude<RawValue, object> | Date | ChannelConstantObject | null | undefined;
19
+ /**
20
+ * a channel accessor: either a simple channel value, or an object with
21
+ * a value and an optional scale override
22
+ */
3
23
  export type ChannelAccessor<T = Record<string | symbol, RawValue>> = ChannelValue<T> | {
4
24
  /** the channel value */
5
25
  value: ChannelValue<T>;
6
26
  /** you can bypass the scale by passing null */
7
27
  scale: boolean | null;
8
28
  };
9
- export type ChannelValue<T = Record<string | symbol, RawValue>> = RawValue | keyof T | ((d: T, index: number) => RawValue) | null | undefined;
29
+ /**
30
+ * the value for a channel: a constant, a data field name, an accessor
31
+ * function, or null/undefined to leave the channel unset
32
+ */
33
+ export type ChannelValue<T = Record<string | symbol, RawValue>> = ChannelConstantValue | keyof T | ChannelValueAccessor<T> | null | undefined;
34
+ /** the name of a channel that is bound to a scale */
10
35
  export type ScaledChannelName = 'fill' | 'fillOpacity' | 'opacity' | 'r' | 'length' | 'stroke' | 'strokeOpacity' | 'symbol' | 'fx' | 'fy' | 'x' | 'x1' | 'x2' | 'y' | 'y1' | 'y2';
36
+ /** maps a scaled channel name to its output type (string for color/symbol, number otherwise) */
11
37
  export type ScaledChannelType<T extends ScaledChannelName> = T extends 'fill' | 'stroke' | 'symbol' ? string : number;
38
+ /** all channel names, including non-scaled channels like z, sort, filter, and interval */
12
39
  export type ChannelName = ScaledChannelName | 'z' | 'sort' | 'filter' | 'interval';
40
+ export {};
@@ -1,18 +1,31 @@
1
1
  import type { ScaledChannelName, ScaledChannelType } from './channel.js';
2
+ /** a raw data value that can be used in channels */
2
3
  export type RawValue = number | Date | boolean | string | symbol | object | null;
4
+ /** a data record passed to marks; generic over the user's row shape */
3
5
  export type DataRecord<T = Record<string | symbol, RawValue>> = T;
6
+ /** a data record after channel accessors have been resolved to concrete values */
4
7
  export type ResolvedDataRecord<T = Record<string | symbol, RawValue>> = Partial<Record<ScaledChannelName, any>> & {
8
+ /** the original data record before resolution */
5
9
  datum: DataRecord<T>;
10
+ /** the index of this record in the original data array */
6
11
  index: number;
7
12
  };
13
+ /** a data record after scale functions have been applied to channel values */
8
14
  export type ScaledDataRecord<T = Record<string | symbol, RawValue>> = Partial<{
9
15
  [K in ScaledChannelName]?: ScaledChannelType<K>;
10
16
  }> & {
17
+ /** horizontal pixel offset applied after scaling */
11
18
  dx: number;
19
+ /** vertical pixel offset applied after scaling */
12
20
  dy: number;
21
+ /** the original data record */
13
22
  datum: DataRecord<T>;
23
+ /** the resolved (pre-scaling) channel values */
14
24
  resolved: ResolvedDataRecord<T>;
15
- valid: Boolean;
25
+ /** whether this record has valid values for all required channels */
26
+ valid: boolean;
27
+ /** the index of this record in the original data array */
16
28
  index: number;
17
29
  };
30
+ /** a data row as passed by the user; can be a record, a raw value, a coordinate pair, or null */
18
31
  export type DataRow<T = Record<string | symbol, RawValue>> = DataRecord<T> | RawValue | [number, number] | null;