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,6 +1,6 @@
1
1
  import type { DataRecord, ConstantAccessor, ChannelAccessor, CurveName, MarkerOptions, RawValue } from '../types/index.js';
2
2
  import { type CurveFactory } from 'd3-shape';
3
- declare function $$render<Datum extends DataRecord>(): {
3
+ declare function $$render<Datum = DataRecord | GeoJSON.GeoJsonObject>(): {
4
4
  props: 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,63 +35,128 @@ 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
  }> & MarkerOptions & {
68
- data: Datum[];
69
- sort?: ConstantAccessor<RawValue> | {
140
+ /** the input data array; each element becomes one link */
141
+ data?: Datum[];
142
+ /** sort order for data points before rendering */
143
+ sort?: ConstantAccessor<RawValue, Datum> | {
70
144
  channel: "stroke" | "fill";
71
145
  };
72
146
  /**
73
147
  * the x1 channel accessor for the start of the link
74
148
  */
75
- x1: ChannelAccessor<Datum>;
149
+ x1?: ChannelAccessor<Datum>;
76
150
  /**
77
151
  * the y1 channel accessor for the start of the link
78
152
  */
79
- y1: ChannelAccessor<Datum>;
153
+ y1?: ChannelAccessor<Datum>;
80
154
  /**
81
155
  * the x2 channel accessor for the end of the link
82
156
  */
83
- x2: ChannelAccessor<Datum>;
84
- y2: ChannelAccessor<Datum>;
157
+ x2?: ChannelAccessor<Datum>;
158
+ /** the y2 channel accessor for the end of the link */
159
+ y2?: ChannelAccessor<Datum>;
85
160
  /**
86
161
  * the curve type, defaults to 'auto' which uses a linear curve for planar projections
87
162
  * and a spherical line for geographic projections
@@ -91,17 +166,27 @@ declare function $$render<Datum extends DataRecord>(): {
91
166
  * the tension of the curve, defaults to 0
92
167
  */
93
168
  tension?: number;
169
+ /** legacy alias for link curvature */
170
+ bend?: number | boolean;
94
171
  /**
95
172
  * the text label for the link, can be a constant or a function
96
173
  */
97
174
  text?: ConstantAccessor<string, Datum>;
175
+ /** the fill color for the text label rendered along the link */
176
+ textFill?: ConstantAccessor<string, Datum>;
177
+ /** the stroke color for the text label rendered along the link */
178
+ textStroke?: ConstantAccessor<string, Datum>;
179
+ /** the offset position for the text label along the link path */
180
+ textStartOffset?: ConstantAccessor<string, Datum>;
181
+ /** the stroke width for the text label rendered along the link */
182
+ textStrokeWidth?: ConstantAccessor<number, Datum>;
98
183
  };
99
184
  exports: {};
100
185
  bindings: "";
101
186
  slots: {};
102
187
  events: {};
103
188
  };
104
- declare class __sveltets_Render<Datum extends DataRecord> {
189
+ declare class __sveltets_Render<Datum = DataRecord | GeoJSON.GeoJsonObject> {
105
190
  props(): ReturnType<typeof $$render<Datum>>['props'];
106
191
  events(): ReturnType<typeof $$render<Datum>>['events'];
107
192
  slots(): ReturnType<typeof $$render<Datum>>['slots'];
@@ -109,13 +194,13 @@ declare class __sveltets_Render<Datum extends DataRecord> {
109
194
  exports(): {};
110
195
  }
111
196
  interface $$IsomorphicComponent {
112
- 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']>> & {
197
+ 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']>> & {
113
198
  $$bindings?: ReturnType<__sveltets_Render<Datum>['bindings']>;
114
199
  } & ReturnType<__sveltets_Render<Datum>['exports']>;
115
- <Datum extends DataRecord>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
200
+ <Datum = DataRecord | GeoJSON.GeoJsonObject>(internal: unknown, props: ReturnType<__sveltets_Render<Datum>['props']> & {}): ReturnType<__sveltets_Render<Datum>['exports']>;
116
201
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
117
202
  }
118
203
  /** Creates connections between pairs of points with optional curve styling and markers */
119
204
  declare const Link: $$IsomorphicComponent;
120
- type Link<Datum extends DataRecord> = InstanceType<typeof Link<Datum>>;
205
+ type Link<Datum = DataRecord | GeoJSON.GeoJsonObject> = InstanceType<typeof Link<Datum>>;
121
206
  export default Link;
@@ -1,11 +1,18 @@
1
1
  <script lang="ts" generics="Datum extends DataRow">
2
2
  interface PointerMarkProps {
3
+ /** the input data array */
3
4
  data: Datum[];
5
+ /** snippet rendered with the currently selected data points */
4
6
  children?: Snippet<[{ data: Datum[] }]>;
7
+ /** the horizontal position channel; bound to the x scale */
5
8
  x?: ChannelAccessor<Datum>;
9
+ /** the vertical position channel; bound to the y scale */
6
10
  y?: ChannelAccessor<Datum>;
11
+ /** grouping channel for splitting data into separate search trees */
7
12
  z?: ChannelAccessor<Datum>;
13
+ /** the horizontal facet channel */
8
14
  fx?: ChannelAccessor<Datum>;
15
+ /** the vertical facet channel */
9
16
  fy?: ChannelAccessor<Datum>;
10
17
  /**
11
18
  * maximum cursor distance to select data points
@@ -33,6 +40,8 @@
33
40
  import { groupFacetsAndZ } from '../helpers/group.js';
34
41
  import { getPlotDefaults } from '../hooks/plotDefaults.js';
35
42
  import { usePlot } from '../hooks/usePlot.svelte.js';
43
+ import { detectFacet, facetKey } from '../helpers/facets.js';
44
+ import { SvelteMap } from 'svelte/reactivity';
36
45
 
37
46
  const plot = usePlot();
38
47
 
@@ -46,7 +55,7 @@
46
55
  };
47
56
 
48
57
  const {
49
- data = [{}],
58
+ data = [] as Datum[],
50
59
  children,
51
60
  x,
52
61
  y,
@@ -55,26 +64,23 @@
55
64
  fy,
56
65
  maxDistance = 15,
57
66
  tolerance = Number.NEGATIVE_INFINITY,
58
- onupdate = null
67
+ onupdate = undefined
59
68
  }: PointerMarkProps = $derived({
60
69
  ...DEFAULTS,
61
70
  ...markProps
62
71
  });
63
72
 
64
- let selectedData = $state([]);
73
+ let selectedData = $state<any[]>([]);
65
74
 
66
75
  function onPointerMove(evt: MouseEvent) {
67
- let facetEl = evt.target as SVGElement;
68
- while (facetEl && !facetEl.classList.contains('facet')) {
69
- facetEl = facetEl.parentElement;
70
- }
71
- const facetRect = (facetEl?.firstChild ?? plot.body).getBoundingClientRect();
76
+ const { fxValue, fyValue, offsetX, offsetY } = detectFacet(evt, plot);
77
+ const bodyRect = plot.body.getBoundingClientRect();
72
78
 
73
- const relativeX = evt.clientX - facetRect.left + (plot.options.marginLeft ?? 0);
74
- const relativeY = evt.clientY - facetRect.top + (plot.options.marginTop ?? 0);
79
+ const relativeX = evt.clientX - bodyRect.left - offsetX;
80
+ const relativeY = evt.clientY - bodyRect.top - offsetY;
75
81
 
76
- // console.log({ relativeX, relativeY }, evt);
77
- updateSelection(relativeX, relativeY);
82
+ const key = facetKey(fxValue, fyValue);
83
+ updateSelection(relativeX, relativeY, key);
78
84
  }
79
85
 
80
86
  function onPointerLeave() {
@@ -82,22 +88,23 @@
82
88
  if (onupdate) onupdate(selectedData);
83
89
  }
84
90
 
85
- function updateSelection(ex: number, ey: number) {
86
- // find data row with minimum distance to
87
- const points = trees.map((tree) =>
91
+ function updateSelection(ex: number, ey: number, key: string) {
92
+ const facetTrees = treeMap.get(key) ?? [];
93
+ // find data row with minimum distance to cursor
94
+ const points = facetTrees.map((tree) =>
88
95
  tree.find(x != null ? ex : 0, y != null ? ey : 0, maxDistance)
89
96
  );
90
97
  // also include other points that share the same x or y value
91
- const otherPoints = trees.flatMap((tree, i) => {
98
+ const otherPoints = facetTrees.flatMap((tree, i) => {
92
99
  return tree
93
100
  .data()
94
101
  .filter((d) => d !== points[i])
95
102
  .filter(
96
- (d) =>
103
+ (d: any) =>
97
104
  (!isFinite(d[POINTER_X]) ||
98
- Math.abs(d[POINTER_X] - points[i]?.[POINTER_X]) < tolerance) &&
105
+ Math.abs(d[POINTER_X] - (points[i] as any)?.[POINTER_X]) < tolerance) &&
99
106
  (!isFinite(d[POINTER_Y]) ||
100
- Math.abs(d[POINTER_Y] - points[i]?.[POINTER_Y]) < tolerance)
107
+ Math.abs(d[POINTER_Y] - (points[i] as any)?.[POINTER_Y]) < tolerance)
101
108
  );
102
109
  });
103
110
  selectedData = [...points, ...otherPoints].filter((d) => d != null);
@@ -114,19 +121,19 @@
114
121
  };
115
122
  });
116
123
 
117
- const groups = $derived.by(() => {
118
- const groups = [];
119
- groupFacetsAndZ(indexData(data), { x, y, z, fx, fy }, (d) => groups.push(d));
120
- return groups;
121
- });
122
-
123
- const trees = $derived(
124
- groups.map((items) =>
125
- quadtree()
126
- .x(x != null ? (d) => d[POINTER_X] : () => 0)
127
- .y(y != null ? (d) => d[POINTER_Y] : () => 0)
124
+ const treeMap = $derived.by(() => {
125
+ const map = new SvelteMap<string, ReturnType<typeof quadtree<any>>[]>();
126
+ groupFacetsAndZ(indexData(data as object[]) as any, { x, y, z, fx, fy }, (items) => {
127
+ if (!items.length) return;
128
+ // Recover fx/fy values from the first datum in the group
129
+ const fxVal = fx ? resolveChannel('fx', items[0], { fx }) : true;
130
+ const fyVal = fy ? resolveChannel('fy', items[0], { fy }) : true;
131
+ const key = facetKey(fxVal, fyVal);
132
+ const tree = quadtree<any>()
133
+ .x(x != null ? (d: any) => d[POINTER_X] : () => 0)
134
+ .y(y != null ? (d: any) => d[POINTER_Y] : () => 0)
128
135
  .addAll(
129
- items?.map((d) => {
136
+ items.map((d: any) => {
130
137
  const [px, py] = projectXY(
131
138
  plot.scales,
132
139
  resolveChannel('x', d, { x }),
@@ -139,10 +146,14 @@
139
146
  [POINTER_X]: px,
140
147
  [POINTER_Y]: py
141
148
  };
142
- }) ?? []
143
- )
144
- )
145
- );
149
+ })
150
+ );
151
+ const existing = map.get(key) ?? [];
152
+ existing.push(tree);
153
+ map.set(key, existing);
154
+ });
155
+ return map;
156
+ });
146
157
  </script>
147
158
 
148
159
  {#if children}
@@ -2,14 +2,21 @@ import { type Snippet } from 'svelte';
2
2
  import type { ChannelAccessor, DataRow } from '../types/index.js';
3
3
  declare function $$render<Datum extends DataRow>(): {
4
4
  props: {
5
+ /** the input data array */
5
6
  data: Datum[];
7
+ /** snippet rendered with the currently selected data points */
6
8
  children?: Snippet<[{
7
9
  data: Datum[];
8
10
  }]>;
11
+ /** the horizontal position channel; bound to the x scale */
9
12
  x?: ChannelAccessor<Datum>;
13
+ /** the vertical position channel; bound to the y scale */
10
14
  y?: ChannelAccessor<Datum>;
15
+ /** grouping channel for splitting data into separate search trees */
11
16
  z?: ChannelAccessor<Datum>;
17
+ /** the horizontal facet channel */
12
18
  fx?: ChannelAccessor<Datum>;
19
+ /** the vertical facet channel */
13
20
  fy?: ChannelAccessor<Datum>;
14
21
  /**
15
22
  * maximum cursor distance to select data points
@@ -5,19 +5,27 @@
5
5
  <script lang="ts" generics="Datum extends DataRecord">
6
6
  interface RectMarkProps
7
7
  extends BaseMarkProps<Datum>, LinkableMarkProps<Datum>, BaseRectMarkProps<Datum> {
8
- data: Datum[];
8
+ /** the input data array; each element becomes one rectangle */
9
+ data?: Datum[];
10
+ /** the horizontal position channel; used as shorthand for x1 and x2 with an interval */
9
11
  x?: ChannelAccessor<Datum>;
12
+ /** the starting horizontal position channel */
10
13
  x1?: ChannelAccessor<Datum>;
14
+ /** the ending horizontal position channel */
11
15
  x2?: ChannelAccessor<Datum>;
16
+ /** the vertical position channel; used as shorthand for y1 and y2 with an interval */
12
17
  y?: ChannelAccessor<Datum>;
18
+ /** the starting vertical position channel */
13
19
  y1?: ChannelAccessor<Datum>;
20
+ /** the ending vertical position channel */
14
21
  y2?: ChannelAccessor<Datum>;
22
+ /** converts x/y into x1/x2 or y1/y2 ranges based on the provided interval */
15
23
  interval?: number | string;
24
+ /** additional CSS class name(s) for the rect element */
16
25
  class?: string;
17
26
  /**
18
27
  * Renders using Canvas instead of SVG.
19
28
  */
20
-
21
29
  canvas?: boolean;
22
30
  }
23
31
  import Mark from '../Mark.svelte';
@@ -33,7 +41,7 @@
33
41
  import RectPath from './helpers/RectPath.svelte';
34
42
  import RectCanvas from './helpers/RectCanvas.svelte';
35
43
  import { getPlotDefaults } from '../hooks/plotDefaults.js';
36
- import { IS_SORTED } from '../transforms/sort';
44
+ import { IS_SORTED } from '../transforms/sort.js';
37
45
  import { usePlot } from '../hooks/usePlot.svelte.js';
38
46
 
39
47
  let markProps: RectMarkProps = $props();
@@ -58,11 +66,11 @@
58
66
  </script>
59
67
 
60
68
  <Mark
61
- type="rect"
62
69
  required={[]}
63
70
  channels={['x1', 'x2', 'y1', 'y2', 'fill', 'stroke', 'opacity', 'fillOpacity', 'strokeOpacity']}
64
71
  {...markProps}
65
- {...args}>
72
+ {...args}
73
+ type="rect">
66
74
  {#snippet children({ usedScales, scaledData })}
67
75
  {#if canvas}
68
76
  {@const rectCanvasData = scaledData.map((d) => {