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
@@ -1,15 +1,21 @@
1
1
  <!-- @component
2
2
  Creates arrows with customizable heads, angles, and bending
3
3
  -->
4
- <script lang="ts" generics="Datum extends DataRecord">
4
+ <script lang="ts" generics="Datum = DataRecord | GeoJSON.GeoJsonObject">
5
5
  interface ArrowMarkProps extends Omit<BaseMarkProps<Datum>, 'fill' | 'fillOpacity'> {
6
+ /** the input data array; each element becomes one arrow */
6
7
  data: Datum[];
8
+ /** controls the order of data before rendering */
7
9
  sort?:
8
10
  | ConstantAccessor<RawValue>
9
11
  | { channel: 'stroke' | 'fill' | 'x1' | 'y1' | 'x2' | 'y2' };
12
+ /** the starting horizontal position channel */
10
13
  x1: ChannelAccessor<Datum>;
14
+ /** the starting vertical position channel */
11
15
  y1: ChannelAccessor<Datum>;
16
+ /** the ending horizontal position channel */
12
17
  x2: ChannelAccessor<Datum>;
18
+ /** the ending vertical position channel */
13
19
  y2: ChannelAccessor<Datum>;
14
20
  /**
15
21
  * the bend angle, in degrees; defaults to 0°; true for 22.5°
@@ -35,6 +41,7 @@
35
41
  * shorthand for the two insets
36
42
  */
37
43
  inset?: ConstantAccessor<number, Datum>;
44
+ /** controls the sweep direction of the arrow arc; 1 or -1 */
38
45
  sweep?: SweepOption;
39
46
  }
40
47
  import type {
@@ -42,13 +49,17 @@
42
49
  BaseMarkProps,
43
50
  ConstantAccessor,
44
51
  ChannelAccessor,
45
- RawValue,
46
- PlotDefaults
52
+ RawValue
47
53
  } from '../types/index.js';
48
54
  import { resolveProp, resolveStyles } from '../helpers/resolve.js';
49
55
  import { coalesce, maybeNumber } from '../helpers/index.js';
50
56
  import Mark from '../Mark.svelte';
51
- import { arrowPath, maybeSweep, type SweepOption } from '../helpers/arrowPath.js';
57
+ import {
58
+ arrowPath,
59
+ maybeSweep,
60
+ type SweepFunc,
61
+ type SweepOption
62
+ } from '../helpers/arrowPath.js';
52
63
  import { replaceChannels } from '../transforms/rename.js';
53
64
  import { addEventHandlers } from './helpers/events.js';
54
65
  import GroupMultiple from './helpers/GroupMultiple.svelte';
@@ -80,10 +91,10 @@
80
91
  const args: ArrowMarkProps = $derived(
81
92
  sort(
82
93
  replaceChannels(
83
- { data: indexData(data), ...options },
94
+ { data: indexData(data as object[]), ...options },
84
95
  { y: ['y1', 'y2'], x: ['x1', 'x2'] }
85
96
  )
86
- )
97
+ ) as unknown as ArrowMarkProps
87
98
  );
88
99
  </script>
89
100
 
@@ -91,29 +102,37 @@
91
102
  type="arrow"
92
103
  required={['x1', 'x2', 'y1', 'y2']}
93
104
  channels={['x1', 'y1', 'x2', 'y2', 'opacity', 'stroke', 'strokeOpacity']}
94
- {...args}>
105
+ {...args as any}>
95
106
  {#snippet children({ usedScales, scaledData })}
96
- {@const sweep = maybeSweep(args.sweep)}
107
+ {@const sweep = maybeSweep(args.sweep) as SweepFunc}
97
108
  <GroupMultiple class="arrow" length={scaledData.length}>
98
109
  {#each scaledData as d, i (i)}
99
110
  {#if d.valid}
100
- {@const inset = resolveProp(args.inset, d.datum, 0)}
101
- {@const insetStart = resolveProp(args.insetStart, d.datum)}
102
- {@const insetEnd = resolveProp(args.insetEnd, d.datum)}
103
- {@const headAngle = resolveProp(args.headAngle, d.datum)}
104
- {@const headLength = resolveProp(args.headLength, d.datum)}
105
- {@const bend = resolveProp(args.bend, d.datum, 0)}
106
- {@const strokeWidth = resolveProp(args.strokeWidth, d.datum, 1)}
111
+ {@const datum = d.datum as unknown as Datum}
112
+ {@const inset = resolveProp(args.inset, datum, 0)}
113
+ {@const insetStart = resolveProp(args.insetStart, datum)}
114
+ {@const insetEnd = resolveProp(args.insetEnd, datum)}
115
+ {@const headAngle = (resolveProp(args.headAngle, datum, 60) ?? 60) as number}
116
+ {@const headLength = (resolveProp(args.headLength, datum, 8) ?? 8) as number}
117
+ {@const bendVal =
118
+ args.bend === true
119
+ ? 22.5
120
+ : (resolveProp(
121
+ args.bend as ConstantAccessor<number, Datum>,
122
+ datum,
123
+ 0
124
+ ) ?? 0)}
125
+ {@const strokeWidth = (resolveProp(args.strokeWidth, datum, 1) ?? 1) as number}
107
126
  {@const arrPath = arrowPath(
108
- d.x1,
109
- d.y1,
110
- d.x2,
111
- d.y2,
112
- maybeNumber(coalesce(insetStart, inset)),
113
- maybeNumber(coalesce(insetEnd, inset)),
127
+ d.x1 ?? 0,
128
+ d.y1 ?? 0,
129
+ d.x2 ?? 0,
130
+ d.y2 ?? 0,
131
+ maybeNumber(coalesce(insetStart, inset)) ?? 0,
132
+ maybeNumber(coalesce(insetEnd, inset)) ?? 0,
114
133
  headAngle,
115
134
  headLength,
116
- bend === true ? 22.5 : bend === false ? 0 : bend,
135
+ bendVal,
117
136
  strokeWidth,
118
137
  sweep
119
138
  )}
@@ -133,7 +152,7 @@
133
152
  class={[className]}
134
153
  {@attach addEventHandlers({
135
154
  plot,
136
- options,
155
+ options: options as any,
137
156
  datum: d?.datum
138
157
  })}>
139
158
  {#if options.onmouseenter || options.onclick}
@@ -1,6 +1,6 @@
1
1
  import type { DataRecord, ConstantAccessor, ChannelAccessor, RawValue } from '../types/index.js';
2
2
  import { type SweepOption } from '../helpers/arrowPath.js';
3
- declare function $$render<Datum extends DataRecord>(): {
3
+ declare function $$render<Datum = DataRecord | GeoJSON.GeoJsonObject>(): {
4
4
  props: Omit<Partial<{
5
5
  filter: ConstantAccessor<boolean, Datum>;
6
6
  facet: "auto" | "include" | "exclude";
@@ -12,6 +12,16 @@ declare function $$render<Datum extends DataRecord>(): {
12
12
  dodgeY: import("../transforms/dodge.js").DodgeYOptions;
13
13
  fill: ChannelAccessor<Datum>;
14
14
  fillOpacity: ConstantAccessor<number, Datum>;
15
+ fontFamily: ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
16
+ fontSize: ConstantAccessor<import("csstype").Property.FontSize<number>, Datum>;
17
+ fontStyle: ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
18
+ fontVariant: ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
19
+ fontWeight: ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
20
+ letterSpacing: ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
21
+ wordSpacing: ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
22
+ textAnchor: ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
23
+ textTransform: ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
24
+ textDecoration: ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
15
25
  sort: ((a: RawValue, b: RawValue) => number) | {
16
26
  channel: string;
17
27
  order?: "ascending" | "descending";
@@ -25,53 +35,121 @@ declare function $$render<Datum extends DataRecord>(): {
25
35
  opacity: ChannelAccessor<Datum>;
26
36
  strokeDasharray: ConstantAccessor<string, Datum>;
27
37
  strokeDashoffset: ConstantAccessor<number, Datum>;
38
+ blend: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
28
39
  mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
29
40
  clipPath: string;
30
41
  mask: string;
31
42
  imageFilter: ConstantAccessor<string, Datum>;
32
43
  shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
33
44
  paintOrder: ConstantAccessor<string, Datum>;
34
- onclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
35
- ondblclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
- onmouseup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
- onmousedown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
- onmouseenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
- onmousemove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
- onmouseleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
- onmouseout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
- onmouseover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
- onpointercancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
- onpointerdown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
- onpointerup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
- onpointerenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
- onpointerleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
- onpointermove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
- onpointerover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
- onpointerout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
- ondrag: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
- ondrop: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
- ondragstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
- ondragenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
- ondragleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
- ondragover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
- ondragend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
- ontouchstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
- ontouchmove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
- ontouchend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
61
- ontouchcancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
62
- oncontextmenu: import("svelte/elements").MouseEventHandler<SVGPathElement>;
63
- onwheel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
+ onclick: (event: Event & {
46
+ currentTarget: SVGPathElement;
47
+ }, datum: Datum, index: number) => void;
48
+ ondblclick: (event: Event & {
49
+ currentTarget: SVGPathElement;
50
+ }, datum: Datum, index: number) => void;
51
+ onmouseup: (event: Event & {
52
+ currentTarget: SVGPathElement;
53
+ }, datum: Datum, index: number) => void;
54
+ onmousedown: (event: Event & {
55
+ currentTarget: SVGPathElement;
56
+ }, datum: Datum, index: number) => void;
57
+ onmouseenter: (event: Event & {
58
+ currentTarget: SVGPathElement;
59
+ }, datum: Datum, index: number) => void;
60
+ onmousemove: (event: Event & {
61
+ currentTarget: SVGPathElement;
62
+ }, datum: Datum, index: number) => void;
63
+ onmouseleave: (event: Event & {
64
+ currentTarget: SVGPathElement;
65
+ }, datum: Datum, index: number) => void;
66
+ onmouseout: (event: Event & {
67
+ currentTarget: SVGPathElement;
68
+ }, datum: Datum, index: number) => void;
69
+ onmouseover: (event: Event & {
70
+ currentTarget: SVGPathElement;
71
+ }, datum: Datum, index: number) => void;
72
+ onpointercancel: (event: Event & {
73
+ currentTarget: SVGPathElement;
74
+ }, datum: Datum, index: number) => void;
75
+ onpointerdown: (event: Event & {
76
+ currentTarget: SVGPathElement;
77
+ }, datum: Datum, index: number) => void;
78
+ onpointerup: (event: Event & {
79
+ currentTarget: SVGPathElement;
80
+ }, datum: Datum, index: number) => void;
81
+ onpointerenter: (event: Event & {
82
+ currentTarget: SVGPathElement;
83
+ }, datum: Datum, index: number) => void;
84
+ onpointerleave: (event: Event & {
85
+ currentTarget: SVGPathElement;
86
+ }, datum: Datum, index: number) => void;
87
+ onpointermove: (event: Event & {
88
+ currentTarget: SVGPathElement;
89
+ }, datum: Datum, index: number) => void;
90
+ onpointerover: (event: Event & {
91
+ currentTarget: SVGPathElement;
92
+ }, datum: Datum, index: number) => void;
93
+ onpointerout: (event: Event & {
94
+ currentTarget: SVGPathElement;
95
+ }, datum: Datum, index: number) => void;
96
+ ondrag: (event: Event & {
97
+ currentTarget: SVGPathElement;
98
+ }, datum: Datum, index: number) => void;
99
+ ondrop: (event: Event & {
100
+ currentTarget: SVGPathElement;
101
+ }, datum: Datum, index: number) => void;
102
+ ondragstart: (event: Event & {
103
+ currentTarget: SVGPathElement;
104
+ }, datum: Datum, index: number) => void;
105
+ ondragenter: (event: Event & {
106
+ currentTarget: SVGPathElement;
107
+ }, datum: Datum, index: number) => void;
108
+ ondragleave: (event: Event & {
109
+ currentTarget: SVGPathElement;
110
+ }, datum: Datum, index: number) => void;
111
+ ondragover: (event: Event & {
112
+ currentTarget: SVGPathElement;
113
+ }, datum: Datum, index: number) => void;
114
+ ondragend: (event: Event & {
115
+ currentTarget: SVGPathElement;
116
+ }, datum: Datum, index: number) => void;
117
+ ontouchstart: (event: Event & {
118
+ currentTarget: SVGPathElement;
119
+ }, datum: Datum, index: number) => void;
120
+ ontouchmove: (event: Event & {
121
+ currentTarget: SVGPathElement;
122
+ }, datum: Datum, index: number) => void;
123
+ ontouchend: (event: Event & {
124
+ currentTarget: SVGPathElement;
125
+ }, datum: Datum, index: number) => void;
126
+ ontouchcancel: (event: Event & {
127
+ currentTarget: SVGPathElement;
128
+ }, datum: Datum, index: number) => void;
129
+ oncontextmenu: (event: Event & {
130
+ currentTarget: SVGPathElement;
131
+ }, datum: Datum, index: number) => void;
132
+ onwheel: (event: Event & {
133
+ currentTarget: SVGPathElement;
134
+ }, datum: Datum, index: number) => void;
64
135
  class: string;
65
136
  style: string;
66
137
  cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
138
+ title: ConstantAccessor<string, Datum>;
67
139
  }>, "fill" | "fillOpacity"> & {
140
+ /** the input data array; each element becomes one arrow */
68
141
  data: Datum[];
142
+ /** controls the order of data before rendering */
69
143
  sort?: ConstantAccessor<RawValue> | {
70
144
  channel: "stroke" | "fill" | "x1" | "y1" | "x2" | "y2";
71
145
  };
146
+ /** the starting horizontal position channel */
72
147
  x1: ChannelAccessor<Datum>;
148
+ /** the starting vertical position channel */
73
149
  y1: ChannelAccessor<Datum>;
150
+ /** the ending horizontal position channel */
74
151
  x2: ChannelAccessor<Datum>;
152
+ /** the ending vertical position channel */
75
153
  y2: ChannelAccessor<Datum>;
76
154
  /**
77
155
  * the bend angle, in degrees; defaults to 0°; true for 22.5°
@@ -97,6 +175,7 @@ declare function $$render<Datum extends DataRecord>(): {
97
175
  * shorthand for the two insets
98
176
  */
99
177
  inset?: ConstantAccessor<number, Datum>;
178
+ /** controls the sweep direction of the arrow arc; 1 or -1 */
100
179
  sweep?: SweepOption;
101
180
  };
102
181
  exports: {};
@@ -104,7 +183,7 @@ declare function $$render<Datum extends DataRecord>(): {
104
183
  slots: {};
105
184
  events: {};
106
185
  };
107
- declare class __sveltets_Render<Datum extends DataRecord> {
186
+ declare class __sveltets_Render<Datum = DataRecord | GeoJSON.GeoJsonObject> {
108
187
  props(): ReturnType<typeof $$render<Datum>>['props'];
109
188
  events(): ReturnType<typeof $$render<Datum>>['events'];
110
189
  slots(): ReturnType<typeof $$render<Datum>>['slots'];
@@ -112,13 +191,13 @@ declare class __sveltets_Render<Datum extends DataRecord> {
112
191
  exports(): {};
113
192
  }
114
193
  interface $$IsomorphicComponent {
115
- new <Datum extends DataRecord>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Datum>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Datum>['props']>, ReturnType<__sveltets_Render<Datum>['events']>, ReturnType<__sveltets_Render<Datum>['slots']>> & {
194
+ new <Datum = DataRecord | GeoJSON.GeoJsonObject>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Datum>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Datum>['props']>, ReturnType<__sveltets_Render<Datum>['events']>, ReturnType<__sveltets_Render<Datum>['slots']>> & {
116
195
  $$bindings?: ReturnType<__sveltets_Render<Datum>['bindings']>;
117
196
  } & ReturnType<__sveltets_Render<Datum>['exports']>;
118
- <Datum extends DataRecord>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
197
+ <Datum = DataRecord | GeoJSON.GeoJsonObject>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
119
198
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
120
199
  }
121
200
  /** Creates arrows with customizable heads, angles, and bending */
122
201
  declare const Arrow: $$IsomorphicComponent;
123
- type Arrow<Datum extends DataRecord> = InstanceType<typeof Arrow<Datum>>;
202
+ type Arrow<Datum = DataRecord | GeoJSON.GeoJsonObject> = InstanceType<typeof Arrow<Datum>>;
124
203
  export default Arrow;
@@ -10,7 +10,10 @@
10
10
  RawValue,
11
11
  ConstantAccessor,
12
12
  FacetContext,
13
- ChannelName
13
+ ChannelName,
14
+ TickFormatFunction,
15
+ DataRecord,
16
+ ScaledChannelName
14
17
  } from '../types/index.js';
15
18
  import type * as CSS from 'csstype';
16
19
  import autoTimeFormat from '../helpers/autoTimeFormat.js';
@@ -22,24 +25,37 @@
22
25
 
23
26
  interface AxisXMarkProps extends Omit<
24
27
  BaseMarkProps<Datum>,
25
- 'fillOpacity' | 'paintOrder' | 'title' | 'href' | 'target'
28
+ 'fillOpacity' | 'paintOrder' | 'title' | 'href' | 'target' | 'textAnchor'
26
29
  > {
30
+ /** custom tick values to display on the axis */
27
31
  data?: Datum[];
32
+ /** whether this axis was automatically added by the Plot component */
28
33
  automatic?: boolean;
34
+ /** the axis title label; set to false or null to hide */
29
35
  title?: string | false | null;
36
+ /** which edge of the plot the axis appears on */
30
37
  anchor?: 'top' | 'bottom';
38
+ /** the interval between ticks, e.g. "day", "month", or a number */
31
39
  interval?: string | number;
40
+ /** controls which facet edge displays this axis */
32
41
  facetAnchor?: 'auto' | 'top-empty' | 'bottom-empty' | 'top' | 'bottom';
42
+ /** horizontal alignment of the axis title */
33
43
  labelAnchor?: 'auto' | 'left' | 'center' | 'right';
44
+ /** the length of tick marks in pixels */
34
45
  tickSize?: number;
46
+ /** font size for tick labels */
35
47
  tickFontSize?: ConstantAccessor<number, Datum>;
48
+ /** font size for the axis title */
36
49
  titleFontSize?: number;
50
+ /** spacing between tick marks and tick labels in pixels */
37
51
  tickPadding?: number;
52
+ /** formatter for tick labels; can be "auto", an Intl format options object, or a custom function */
38
53
  tickFormat?:
39
54
  | 'auto'
40
55
  | Intl.DateTimeFormatOptions
41
56
  | Intl.NumberFormatOptions
42
- | ((d: RawValue, i: number) => string);
57
+ | TickFormatFunction;
58
+ /** CSS class applied to each tick label */
43
59
  tickClass?: ConstantAccessor<string, Datum>;
44
60
  /** ticks is a shorthand for defining data, tickCount or interval */
45
61
  ticks?: number | string | Datum[];
@@ -59,7 +75,7 @@
59
75
 
60
76
  let markProps: AxisXMarkProps = $props();
61
77
 
62
- const DEFAULTS: Omit<AxisXMarkProps, 'data' | ChannelName> = {
78
+ const DEFAULTS = {
63
79
  tickSize: 6,
64
80
  tickPadding: 3,
65
81
  tickFontSize: 11,
@@ -74,7 +90,7 @@
74
90
  const { ticks: magicTicks } = $derived({ ...DEFAULTS, ...markProps });
75
91
 
76
92
  const {
77
- data,
93
+ data = [] as Datum[],
78
94
  automatic = false,
79
95
  title,
80
96
  anchor,
@@ -92,12 +108,12 @@
92
108
  text = true,
93
109
  ...options
94
110
  }: AxisXMarkProps = $derived({
95
- data: Array.isArray(magicTicks) ? magicTicks : [],
111
+ data: (Array.isArray(magicTicks) ? magicTicks : []) as Datum[],
96
112
  tickCount: typeof magicTicks === 'number' ? magicTicks : undefined,
97
113
  interval: typeof magicTicks === 'string' ? magicTicks : undefined,
98
114
  ...DEFAULTS,
99
115
  ...markProps
100
- });
116
+ } as AxisXMarkProps);
101
117
 
102
118
  const plot = usePlot();
103
119
 
@@ -125,15 +141,14 @@
125
141
  );
126
142
 
127
143
  const useCompactNotation = $derived.by(() => {
128
- const range =
129
- extent(plot.scales.x.domain).filter(
130
- (d): d is number => typeof d === 'number' && Number.isFinite(d)
131
- ) ?? [];
132
-
133
- if (range[0] === undefined || range[1] === undefined) return false;
134
- const crossesZero = range[0] <= 0 && range[1] >= 0;
144
+ const numericDomain = plot.scales.x.domain.filter(
145
+ (d): d is number => typeof d === 'number' && Number.isFinite(d)
146
+ );
147
+ if (numericDomain.length < 2) return false;
148
+ const [min, max] = extent(numericDomain) as [number, number];
149
+ const crossesZero = min <= 0 && max >= 0;
135
150
  if (crossesZero) return true;
136
- const magnitudes = range.map((d) =>
151
+ const magnitudes = [min, max].map((d) =>
137
152
  d === 0 ? -Infinity : Math.floor(Math.log10(Math.abs(d)))
138
153
  );
139
154
  return magnitudes[0] !== magnitudes[1];
@@ -145,7 +160,7 @@
145
160
  typeof tickFmt === 'function'
146
161
  ? tickFmt
147
162
  : plot.scales.x.type === 'band' || plot.scales.x.type === 'point'
148
- ? (d) => d
163
+ ? (d: RawValue) => String(d)
149
164
  : plot.scales.x.type === 'time'
150
165
  ? // time scale
151
166
  typeof tickFmt === 'object'
@@ -159,9 +174,9 @@
159
174
  Intl.NumberFormat(plot.options.locale, {
160
175
  // use compact notation if range covers multiple magnitudes
161
176
  ...(useCompactNotation ? { notation: 'compact' } : {}),
162
- ...DEFAULTS.numberFormat,
177
+ ...getPlotDefaults().numberFormat,
163
178
  style: plot.options.x.percent ? 'percent' : 'decimal'
164
- }).format(d)
179
+ }).format(d as number)
165
180
  );
166
181
 
167
182
  const optionsLabel = $derived(plot.options?.x?.label);
@@ -195,7 +210,7 @@
195
210
  const useFacetAnchor = $derived(
196
211
  facetAnchor !== 'auto' ? facetAnchor : anchor === 'bottom' ? 'bottom-empty' : 'top-empty'
197
212
  );
198
- const showAxis = $derived(
213
+ const showFacetAnchoredAxis = $derived(
199
214
  useFacetAnchor === 'top'
200
215
  ? top
201
216
  : useFacetAnchor === 'bottom'
@@ -204,19 +219,20 @@
204
219
  ? topEmpty
205
220
  : bottomEmpty
206
221
  );
222
+ const showAxis = $derived(showFacetAnchoredAxis);
207
223
  </script>
208
224
 
209
225
  <Mark
210
226
  type="axisX"
211
227
  data={data.length ? data.map((tick) => ({ __x: tick })) : []}
212
228
  channels={['x']}
213
- {...options}
229
+ {...options as any}
214
230
  x="__x"
215
231
  {automatic}>
216
232
  {#if left && top && useTitle}
217
233
  <text
218
234
  style={resolveScaledStyles(
219
- null,
235
+ {} as DataRecord,
220
236
  {
221
237
  opacity: 0.8,
222
238
  ...options,
@@ -229,7 +245,7 @@
229
245
  ? 'middle'
230
246
  : 'start'
231
247
  },
232
- {},
248
+ {} as Record<ScaledChannelName, boolean>,
233
249
  plot,
234
250
  'fill'
235
251
  )}
@@ -245,12 +261,11 @@
245
261
  <BaseAxisX
246
262
  {anchor}
247
263
  class={className}
248
- {labelAnchor}
249
- options={{ ...options, ...plot.options.x }}
264
+ options={{ ...(options as any), ...plot.options.x }}
250
265
  {plot}
251
266
  {text}
252
- {tickClass}
253
- {tickFontSize}
267
+ tickClass={tickClass as ConstantAccessor<string>}
268
+ tickFontSize={tickFontSize as ConstantAccessor<number>}
254
269
  {tickPadding}
255
270
  {ticks}
256
271
  {tickSize}
@@ -258,8 +273,8 @@
258
273
  marginTop={plot.options.marginTop}
259
274
  scaleFn={plot.scales.x.fn}
260
275
  scaleType={plot.scales.x.type}
261
- tickFormat={useTickFormat}
262
- title={useTitle} />
276
+ tickFormat={useTickFormat as TickFormatFunction}
277
+ title={useTitle as string | null} />
263
278
  {/if}
264
279
  </Mark>
265
280