svelteplot 0.10.3 → 0.11.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 (222) 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 +41 -35
  8. package/dist/helpers/autoScales.d.ts +3 -3
  9. package/dist/helpers/autoScales.js +28 -18
  10. package/dist/helpers/autoTicks.js +2 -0
  11. package/dist/helpers/callWithProps.d.ts +1 -2
  12. package/dist/helpers/facets.js +0 -1
  13. package/dist/helpers/index.js +1 -1
  14. package/dist/helpers/mergeDeep.d.ts +1 -3
  15. package/dist/helpers/mergeDeep.js +15 -16
  16. package/dist/helpers/projection.d.ts +4 -3
  17. package/dist/helpers/projection.js +17 -5
  18. package/dist/helpers/reduce.d.ts +4 -4
  19. package/dist/helpers/reduce.js +6 -4
  20. package/dist/helpers/regressionLoess.js +2 -1
  21. package/dist/helpers/resolve.d.ts +6 -3
  22. package/dist/helpers/resolve.js +25 -16
  23. package/dist/helpers/scales.d.ts +10 -10
  24. package/dist/helpers/scales.js +43 -13
  25. package/dist/helpers/time.d.ts +10 -3
  26. package/dist/helpers/time.js +2 -1
  27. package/dist/hooks/index.d.ts +2 -0
  28. package/dist/hooks/index.js +2 -0
  29. package/dist/hooks/plotDefaults.d.ts +3 -1
  30. package/dist/hooks/plotDefaults.js +33 -1
  31. package/dist/hooks/usePlot.svelte.d.ts +10 -25
  32. package/dist/hooks/usePlot.svelte.js +8 -7
  33. package/dist/index.d.ts +1 -2
  34. package/dist/index.js +1 -3
  35. package/dist/marks/Area.svelte +24 -13
  36. package/dist/marks/Area.svelte.d.ts +118 -34
  37. package/dist/marks/AreaX.svelte +42 -8
  38. package/dist/marks/AreaX.svelte.d.ts +154 -71
  39. package/dist/marks/AreaY.svelte +42 -8
  40. package/dist/marks/AreaY.svelte.d.ts +154 -71
  41. package/dist/marks/Arrow.svelte +42 -23
  42. package/dist/marks/Arrow.svelte.d.ts +114 -35
  43. package/dist/marks/AxisX.svelte +43 -28
  44. package/dist/marks/AxisX.svelte.d.ts +125 -40
  45. package/dist/marks/AxisY.svelte +43 -26
  46. package/dist/marks/AxisY.svelte.d.ts +127 -40
  47. package/dist/marks/BarX.svelte +12 -10
  48. package/dist/marks/BarX.svelte.d.ts +104 -32
  49. package/dist/marks/BarY.svelte +11 -10
  50. package/dist/marks/BarY.svelte.d.ts +106 -34
  51. package/dist/marks/BollingerX.svelte +4 -7
  52. package/dist/marks/BollingerX.svelte.d.ts +105 -30
  53. package/dist/marks/BollingerY.svelte +3 -0
  54. package/dist/marks/BollingerY.svelte.d.ts +105 -30
  55. package/dist/marks/BoxX.svelte +3 -3
  56. package/dist/marks/BoxY.svelte +12 -9
  57. package/dist/marks/BoxY.svelte.d.ts +128 -53
  58. package/dist/marks/Brush.svelte +26 -21
  59. package/dist/marks/Brush.svelte.d.ts +119 -60
  60. package/dist/marks/Cell.svelte +13 -9
  61. package/dist/marks/Cell.svelte.d.ts +105 -30
  62. package/dist/marks/CellX.svelte +2 -1
  63. package/dist/marks/CellX.svelte.d.ts +105 -32
  64. package/dist/marks/CellY.svelte +2 -1
  65. package/dist/marks/CellY.svelte.d.ts +105 -32
  66. package/dist/marks/ColorLegend.svelte +24 -13
  67. package/dist/marks/ColorLegend.svelte.d.ts +1 -0
  68. package/dist/marks/CustomMark.svelte +16 -10
  69. package/dist/marks/CustomMark.svelte.d.ts +112 -31
  70. package/dist/marks/CustomMarkHTML.svelte +8 -2
  71. package/dist/marks/CustomMarkHTML.svelte.d.ts +8 -2
  72. package/dist/marks/DifferenceY.svelte +31 -20
  73. package/dist/marks/DifferenceY.svelte.d.ts +134 -55
  74. package/dist/marks/Dot.svelte +21 -11
  75. package/dist/marks/Dot.svelte.d.ts +117 -38
  76. package/dist/marks/DotX.svelte +2 -0
  77. package/dist/marks/DotX.svelte.d.ts +136 -62
  78. package/dist/marks/DotY.svelte +1 -0
  79. package/dist/marks/DotY.svelte.d.ts +135 -62
  80. package/dist/marks/Frame.svelte +47 -9
  81. package/dist/marks/Frame.svelte.d.ts +124 -41
  82. package/dist/marks/Geo.svelte +21 -12
  83. package/dist/marks/Geo.svelte.d.ts +105 -30
  84. package/dist/marks/Graticule.svelte +3 -0
  85. package/dist/marks/Graticule.svelte.d.ts +3 -0
  86. package/dist/marks/GridX.svelte +31 -16
  87. package/dist/marks/GridX.svelte.d.ts +108 -32
  88. package/dist/marks/GridY.svelte +30 -15
  89. package/dist/marks/GridY.svelte.d.ts +108 -32
  90. package/dist/marks/HTMLTooltip.svelte +14 -7
  91. package/dist/marks/HTMLTooltip.svelte.d.ts +7 -0
  92. package/dist/marks/Image.svelte +50 -25
  93. package/dist/marks/Image.svelte.d.ts +117 -35
  94. package/dist/marks/Line.svelte +67 -44
  95. package/dist/marks/Line.svelte.d.ts +119 -30
  96. package/dist/marks/LineX.svelte +2 -1
  97. package/dist/marks/LineX.svelte.d.ts +142 -69
  98. package/dist/marks/LineY.svelte +2 -1
  99. package/dist/marks/LineY.svelte.d.ts +142 -69
  100. package/dist/marks/Link.svelte +70 -46
  101. package/dist/marks/Link.svelte.d.ts +126 -41
  102. package/dist/marks/Pointer.svelte +24 -15
  103. package/dist/marks/Pointer.svelte.d.ts +7 -0
  104. package/dist/marks/Rect.svelte +13 -5
  105. package/dist/marks/Rect.svelte.d.ts +116 -35
  106. package/dist/marks/RectX.svelte +6 -3
  107. package/dist/marks/RectX.svelte.d.ts +158 -12
  108. package/dist/marks/RectY.svelte +6 -3
  109. package/dist/marks/RectY.svelte.d.ts +158 -12
  110. package/dist/marks/RegressionX.svelte +13 -6
  111. package/dist/marks/RegressionX.svelte.d.ts +8 -3
  112. package/dist/marks/RegressionY.svelte +13 -6
  113. package/dist/marks/RegressionY.svelte.d.ts +8 -3
  114. package/dist/marks/RuleX.svelte +18 -11
  115. package/dist/marks/RuleX.svelte.d.ts +112 -32
  116. package/dist/marks/RuleY.svelte +19 -12
  117. package/dist/marks/RuleY.svelte.d.ts +114 -34
  118. package/dist/marks/Spike.svelte +11 -5
  119. package/dist/marks/Spike.svelte.d.ts +146 -68
  120. package/dist/marks/Text.svelte +24 -7
  121. package/dist/marks/Text.svelte.d.ts +253 -75
  122. package/dist/marks/TickX.svelte +56 -48
  123. package/dist/marks/TickX.svelte.d.ts +114 -40
  124. package/dist/marks/TickY.svelte +59 -51
  125. package/dist/marks/TickY.svelte.d.ts +117 -43
  126. package/dist/marks/Trail.svelte +25 -13
  127. package/dist/marks/Trail.svelte.d.ts +116 -33
  128. package/dist/marks/Vector.svelte +20 -11
  129. package/dist/marks/Vector.svelte.d.ts +116 -35
  130. package/dist/marks/WaffleX.svelte +18 -16
  131. package/dist/marks/WaffleX.svelte.d.ts +131 -57
  132. package/dist/marks/WaffleY.svelte +16 -15
  133. package/dist/marks/WaffleY.svelte.d.ts +129 -56
  134. package/dist/marks/helpers/Anchor.svelte +17 -2
  135. package/dist/marks/helpers/Anchor.svelte.d.ts +16 -1
  136. package/dist/marks/helpers/AreaCanvas.svelte +8 -8
  137. package/dist/marks/helpers/BaseAxisX.svelte +38 -41
  138. package/dist/marks/helpers/BaseAxisX.svelte.d.ts +11 -17
  139. package/dist/marks/helpers/BaseAxisY.svelte +35 -35
  140. package/dist/marks/helpers/BaseAxisY.svelte.d.ts +12 -15
  141. package/dist/marks/helpers/Box.svelte +35 -28
  142. package/dist/marks/helpers/Box.svelte.d.ts +122 -50
  143. package/dist/marks/helpers/DotCanvas.svelte +11 -9
  144. package/dist/marks/helpers/GeoCanvas.svelte +7 -6
  145. package/dist/marks/helpers/LineCanvas.svelte +7 -7
  146. package/dist/marks/helpers/LinearGradientX.svelte +2 -2
  147. package/dist/marks/helpers/LinearGradientX.svelte.d.ts +1 -1
  148. package/dist/marks/helpers/LinearGradientY.svelte +2 -2
  149. package/dist/marks/helpers/LinearGradientY.svelte.d.ts +1 -1
  150. package/dist/marks/helpers/Marker.svelte +2 -2
  151. package/dist/marks/helpers/MarkerPath.svelte +15 -12
  152. package/dist/marks/helpers/MarkerPath.svelte.d.ts +105 -32
  153. package/dist/marks/helpers/MultilineText.svelte +24 -17
  154. package/dist/marks/helpers/MultilineText.svelte.d.ts +1 -1
  155. package/dist/marks/helpers/RectCanvas.svelte +31 -26
  156. package/dist/marks/helpers/RectPath.svelte +2 -2
  157. package/dist/marks/helpers/Regression.svelte +176 -86
  158. package/dist/marks/helpers/Regression.svelte.d.ts +20 -8
  159. package/dist/marks/helpers/RuleCanvas.svelte +9 -6
  160. package/dist/marks/helpers/TextCanvas.svelte +13 -9
  161. package/dist/marks/helpers/TextCanvas.svelte.d.ts +6 -6
  162. package/dist/marks/helpers/TickCanvas.svelte +6 -5
  163. package/dist/marks/helpers/TrailCanvas.svelte +16 -18
  164. package/dist/marks/helpers/TrailCanvas.svelte.d.ts +3 -5
  165. package/dist/marks/helpers/canvas.js +16 -9
  166. package/dist/marks/helpers/events.d.ts +2 -2
  167. package/dist/marks/helpers/events.js +14 -7
  168. package/dist/marks/helpers/waffle.d.ts +3 -3
  169. package/dist/marks/helpers/waffle.js +6 -4
  170. package/dist/regression/polynomial.d.ts +1 -1
  171. package/dist/regression/polynomial.js +5 -5
  172. package/dist/regression/utils/determination.d.ts +1 -1
  173. package/dist/regression/utils/determination.js +1 -1
  174. package/dist/regression/utils/geometry.d.ts +1 -1
  175. package/dist/regression/utils/interpose.d.ts +1 -1
  176. package/dist/regression/utils/interpose.js +1 -1
  177. package/dist/regression/utils/points.d.ts +1 -1
  178. package/dist/transforms/bin.d.ts +3 -3
  179. package/dist/transforms/bin.js +29 -20
  180. package/dist/transforms/bollinger.d.ts +8 -0
  181. package/dist/transforms/bollinger.js +9 -1
  182. package/dist/transforms/centroid.d.ts +4 -0
  183. package/dist/transforms/centroid.js +4 -0
  184. package/dist/transforms/density.d.ts +4 -4
  185. package/dist/transforms/density.js +20 -13
  186. package/dist/transforms/dodge.d.ts +12 -1
  187. package/dist/transforms/dodge.js +15 -6
  188. package/dist/transforms/group.d.ts +141 -4
  189. package/dist/transforms/group.js +4 -1
  190. package/dist/transforms/interval.d.ts +204 -60
  191. package/dist/transforms/jitter.d.ts +421 -4
  192. package/dist/transforms/jitter.js +10 -1
  193. package/dist/transforms/map.d.ts +412 -4
  194. package/dist/transforms/map.js +3 -3
  195. package/dist/transforms/normalize.d.ts +276 -5
  196. package/dist/transforms/normalize.js +5 -3
  197. package/dist/transforms/recordize.d.ts +17 -5
  198. package/dist/transforms/recordize.js +13 -9
  199. package/dist/transforms/rename.d.ts +11 -4
  200. package/dist/transforms/rename.js +7 -2
  201. package/dist/transforms/select.d.ts +722 -210
  202. package/dist/transforms/select.js +13 -1
  203. package/dist/transforms/shift.d.ts +8 -0
  204. package/dist/transforms/shift.js +20 -6
  205. package/dist/transforms/sort.d.ts +13 -258
  206. package/dist/transforms/sort.js +13 -10
  207. package/dist/transforms/stack.d.ts +58 -9
  208. package/dist/transforms/stack.js +27 -11
  209. package/dist/transforms/window.d.ts +221 -66
  210. package/dist/transforms/window.js +8 -2
  211. package/dist/types/axes.d.ts +43 -0
  212. package/dist/types/axes.js +1 -0
  213. package/dist/types/channel.d.ts +30 -2
  214. package/dist/types/data.d.ts +14 -1
  215. package/dist/types/facet.d.ts +5 -0
  216. package/dist/types/index.d.ts +33 -8
  217. package/dist/types/index.js +11 -7
  218. package/dist/types/mark.d.ts +124 -35
  219. package/dist/types/plot.d.ts +118 -16
  220. package/dist/types/scale.d.ts +125 -8
  221. package/package.json +178 -175
  222. package/dist/helpers/autoTicks.d.ts +0 -12
@@ -1,4 +1,4 @@
1
- import type { ChannelAccessor, ConstantAccessor, DataRecord, LinkableMarkProps } from '../types';
1
+ import type { ChannelAccessor, ConstantAccessor, DataRecord, LinkableMarkProps } from '../types/index.js';
2
2
  declare function $$render<Datum extends DataRecord>(): {
3
3
  props: Partial<{
4
4
  filter: ConstantAccessor<boolean, Datum>;
@@ -7,14 +7,24 @@ declare function $$render<Datum extends DataRecord>(): {
7
7
  fy: ChannelAccessor<Datum>;
8
8
  dx: ConstantAccessor<number, Datum>;
9
9
  dy: ConstantAccessor<number, Datum>;
10
- dodgeX: import("../transforms/dodge").DodgeXOptions;
11
- dodgeY: import("../transforms/dodge").DodgeYOptions;
10
+ dodgeX: import("../transforms/dodge.js").DodgeXOptions;
11
+ dodgeY: import("../transforms/dodge.js").DodgeYOptions;
12
12
  fill: ChannelAccessor<Datum>;
13
13
  fillOpacity: ConstantAccessor<number, Datum>;
14
- sort: ((a: import("../types").RawValue, b: import("../types").RawValue) => number) | {
14
+ fontFamily: ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
15
+ fontSize: ConstantAccessor<number | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "math" | (string & {}) | "large" | "medium" | "small" | "x-large" | "x-small" | "xx-large" | "xx-small" | "xxx-large" | "larger" | "smaller", Datum>;
16
+ fontStyle: ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
17
+ fontVariant: ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
18
+ fontWeight: ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
19
+ letterSpacing: ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
20
+ wordSpacing: ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
21
+ textAnchor: ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
22
+ textTransform: ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
23
+ textDecoration: ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
24
+ sort: ((a: import("../types/index.js").RawValue, b: import("../types/index.js").RawValue) => number) | {
15
25
  channel: string;
16
26
  order?: "ascending" | "descending";
17
- } | ConstantAccessor<import("../types").RawValue, Datum>;
27
+ } | ConstantAccessor<import("../types/index.js").RawValue, Datum>;
18
28
  stroke: ChannelAccessor<Datum>;
19
29
  strokeWidth: ConstantAccessor<number, Datum>;
20
30
  strokeOpacity: ConstantAccessor<number, Datum>;
@@ -24,55 +34,127 @@ declare function $$render<Datum extends DataRecord>(): {
24
34
  opacity: ChannelAccessor<Datum>;
25
35
  strokeDasharray: ConstantAccessor<string, Datum>;
26
36
  strokeDashoffset: ConstantAccessor<number, Datum>;
37
+ blend: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
27
38
  mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
28
39
  clipPath: string;
29
40
  mask: string;
30
41
  imageFilter: ConstantAccessor<string, Datum>;
31
42
  shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
32
43
  paintOrder: ConstantAccessor<string, Datum>;
33
- onclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
34
- ondblclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
35
- onmouseup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
- onmousedown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
- onmouseenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
- onmousemove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
- onmouseleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
- onmouseout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
- onmouseover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
- onpointercancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
- onpointerdown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
- onpointerup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
- onpointerenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
- onpointerleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
- onpointermove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
- onpointerover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
- onpointerout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
- ondrag: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
- ondrop: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
- ondragstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
- ondragenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
- ondragleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
- ondragover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
- ondragend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
- ontouchstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
- ontouchmove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
- ontouchend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
- ontouchcancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
61
- oncontextmenu: import("svelte/elements").MouseEventHandler<SVGPathElement>;
62
- onwheel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
+ onclick: (event: Event & {
45
+ currentTarget: SVGPathElement;
46
+ }, datum: Datum, index: number) => void;
47
+ ondblclick: (event: Event & {
48
+ currentTarget: SVGPathElement;
49
+ }, datum: Datum, index: number) => void;
50
+ onmouseup: (event: Event & {
51
+ currentTarget: SVGPathElement;
52
+ }, datum: Datum, index: number) => void;
53
+ onmousedown: (event: Event & {
54
+ currentTarget: SVGPathElement;
55
+ }, datum: Datum, index: number) => void;
56
+ onmouseenter: (event: Event & {
57
+ currentTarget: SVGPathElement;
58
+ }, datum: Datum, index: number) => void;
59
+ onmousemove: (event: Event & {
60
+ currentTarget: SVGPathElement;
61
+ }, datum: Datum, index: number) => void;
62
+ onmouseleave: (event: Event & {
63
+ currentTarget: SVGPathElement;
64
+ }, datum: Datum, index: number) => void;
65
+ onmouseout: (event: Event & {
66
+ currentTarget: SVGPathElement;
67
+ }, datum: Datum, index: number) => void;
68
+ onmouseover: (event: Event & {
69
+ currentTarget: SVGPathElement;
70
+ }, datum: Datum, index: number) => void;
71
+ onpointercancel: (event: Event & {
72
+ currentTarget: SVGPathElement;
73
+ }, datum: Datum, index: number) => void;
74
+ onpointerdown: (event: Event & {
75
+ currentTarget: SVGPathElement;
76
+ }, datum: Datum, index: number) => void;
77
+ onpointerup: (event: Event & {
78
+ currentTarget: SVGPathElement;
79
+ }, datum: Datum, index: number) => void;
80
+ onpointerenter: (event: Event & {
81
+ currentTarget: SVGPathElement;
82
+ }, datum: Datum, index: number) => void;
83
+ onpointerleave: (event: Event & {
84
+ currentTarget: SVGPathElement;
85
+ }, datum: Datum, index: number) => void;
86
+ onpointermove: (event: Event & {
87
+ currentTarget: SVGPathElement;
88
+ }, datum: Datum, index: number) => void;
89
+ onpointerover: (event: Event & {
90
+ currentTarget: SVGPathElement;
91
+ }, datum: Datum, index: number) => void;
92
+ onpointerout: (event: Event & {
93
+ currentTarget: SVGPathElement;
94
+ }, datum: Datum, index: number) => void;
95
+ ondrag: (event: Event & {
96
+ currentTarget: SVGPathElement;
97
+ }, datum: Datum, index: number) => void;
98
+ ondrop: (event: Event & {
99
+ currentTarget: SVGPathElement;
100
+ }, datum: Datum, index: number) => void;
101
+ ondragstart: (event: Event & {
102
+ currentTarget: SVGPathElement;
103
+ }, datum: Datum, index: number) => void;
104
+ ondragenter: (event: Event & {
105
+ currentTarget: SVGPathElement;
106
+ }, datum: Datum, index: number) => void;
107
+ ondragleave: (event: Event & {
108
+ currentTarget: SVGPathElement;
109
+ }, datum: Datum, index: number) => void;
110
+ ondragover: (event: Event & {
111
+ currentTarget: SVGPathElement;
112
+ }, datum: Datum, index: number) => void;
113
+ ondragend: (event: Event & {
114
+ currentTarget: SVGPathElement;
115
+ }, datum: Datum, index: number) => void;
116
+ ontouchstart: (event: Event & {
117
+ currentTarget: SVGPathElement;
118
+ }, datum: Datum, index: number) => void;
119
+ ontouchmove: (event: Event & {
120
+ currentTarget: SVGPathElement;
121
+ }, datum: Datum, index: number) => void;
122
+ ontouchend: (event: Event & {
123
+ currentTarget: SVGPathElement;
124
+ }, datum: Datum, index: number) => void;
125
+ ontouchcancel: (event: Event & {
126
+ currentTarget: SVGPathElement;
127
+ }, datum: Datum, index: number) => void;
128
+ oncontextmenu: (event: Event & {
129
+ currentTarget: SVGPathElement;
130
+ }, datum: Datum, index: number) => void;
131
+ onwheel: (event: Event & {
132
+ currentTarget: SVGPathElement;
133
+ }, datum: Datum, index: number) => void;
63
134
  class: string;
64
135
  style: string;
65
136
  cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
137
+ title: ConstantAccessor<string, Datum>;
66
138
  }> & LinkableMarkProps<Datum> & {
139
+ /** the input data array; each element becomes one image */
67
140
  data: Datum[];
141
+ /** the horizontal position channel */
68
142
  x: ChannelAccessor<Datum>;
143
+ /** the vertical position channel */
69
144
  y: ChannelAccessor<Datum>;
145
+ /** the clip radius for the image in pixels */
70
146
  r?: ChannelAccessor<Datum>;
147
+ /** the width of the image in pixels */
71
148
  width?: ConstantAccessor<number, Datum>;
149
+ /** the height of the image in pixels */
72
150
  height?: ConstantAccessor<number, Datum>;
151
+ /** the image source URL */
73
152
  src?: ConstantAccessor<string, Datum>;
153
+ /** the title attribute for the image element (shown as a browser tooltip) */
74
154
  title?: ConstantAccessor<string, Datum>;
155
+ /** the SVG preserveAspectRatio attribute for the image (e.g. "xMidYMid meet") */
75
156
  preserveAspectRatio?: string;
157
+ /** CSS class name(s) to apply to individual image elements */
76
158
  imageClass?: ConstantAccessor<string, Datum>;
77
159
  };
78
160
  exports: {};
@@ -3,22 +3,39 @@
3
3
  -->
4
4
  <script lang="ts" generics="Datum extends DataRecord">
5
5
  interface LineMarkProps extends MarkerOptions, BaseMarkProps<Datum> {
6
+ /** the input data array; each element becomes one point in the line */
6
7
  data?: Datum[];
8
+ /** the horizontal position channel */
7
9
  x?: ChannelAccessor<Datum>;
10
+ /** the vertical position channel */
8
11
  y?: ChannelAccessor<Datum>;
12
+ /** the series channel; data is grouped into separate lines by unique z values */
9
13
  z?: ChannelAccessor<Datum>;
14
+ /** the stroke color for the line outline */
10
15
  outlineStroke?: string;
16
+ /** the stroke width of the line outline in pixels */
11
17
  outlineStrokeWidth?: number;
18
+ /** the stroke opacity for the line outline; a number between 0 and 1 */
12
19
  outlineStrokeOpacity?: number;
20
+ /** the curve interpolation method for connecting data points (e.g. "basis", "catmull-rom") */
13
21
  curve?: CurveName | CurveFactory | 'auto';
22
+ /** the tension parameter for cardinal or Catmull-Rom curve interpolation */
14
23
  tension?: number;
24
+ /** controls the order of data points before rendering */
15
25
  sort?: ConstantAccessor<RawValue, Datum> | { channel: 'stroke' | 'fill' };
26
+ /** text label to render along the line path using a textPath element */
16
27
  text?: ConstantAccessor<string, Datum>;
28
+ /** the fill color for the text label rendered along the line */
17
29
  textFill?: ConstantAccessor<string, Datum>;
30
+ /** the stroke color for the text label rendered along the line */
18
31
  textStroke?: ConstantAccessor<string, Datum>;
32
+ /** the offset position for the text label along the line path (e.g. "50%") */
19
33
  textStartOffset?: ConstantAccessor<string, Datum>;
34
+ /** the stroke width for the text label rendered along the line in pixels */
20
35
  textStrokeWidth?: ConstantAccessor<number, Datum>;
36
+ /** CSS class name(s) to apply to individual line elements */
21
37
  lineClass?: ConstantAccessor<string, Datum>;
38
+ /** if true, renders using Canvas instead of SVG */
22
39
  canvas?: boolean;
23
40
  }
24
41
  import type {
@@ -32,10 +49,10 @@
32
49
  } from '../types/index.js';
33
50
  import Mark from '../Mark.svelte';
34
51
  import MarkerPath from './helpers/MarkerPath.svelte';
52
+ import type { MarkerShape } from './helpers/Marker.svelte';
35
53
  import { resolveProp, resolveStyles } from '../helpers/resolve.js';
36
54
  import { line, type CurveFactory, type Line as D3Line } from 'd3-shape';
37
55
  import { geoPath } from 'd3-geo';
38
- import callWithProps from '../helpers/callWithProps.js';
39
56
  import { maybeCurve } from '../helpers/curves.js';
40
57
  import { pick } from 'es-toolkit';
41
58
  import LineCanvas from './helpers/LineCanvas.svelte';
@@ -55,8 +72,8 @@
55
72
  tension: 0,
56
73
  canvas: false,
57
74
  markerScale: 1,
58
- class: null,
59
- lineClass: null,
75
+ class: undefined,
76
+ lineClass: undefined,
60
77
  ...getPlotDefaults().line
61
78
  };
62
79
 
@@ -81,8 +98,8 @@
81
98
  */
82
99
  function groupIndex(data: ScaledDataRecord[], groupByKey: ChannelAccessor<Datum> | null) {
83
100
  if (!groupByKey) return [data];
84
- let group = [];
85
- const groups = [group];
101
+ let group: ScaledDataRecord[] = [];
102
+ const groups: ScaledDataRecord[][] = [group];
86
103
  let lastGroupValue;
87
104
  for (const d of data) {
88
105
  const groupValue = resolveProp(groupByKey, d.datum);
@@ -104,33 +121,30 @@
104
121
 
105
122
  const linePath: D3Line<ScaledDataRecord> = $derived(
106
123
  plot.scales.projection && curve === 'auto'
107
- ? sphereLine(plot.scales.projection)
108
- : callWithProps(line, [], {
109
- curve: maybeCurve(curve === 'auto' ? 'linear' : curve, tension),
110
- x: (d) => d.x,
111
- y: (d) => d.y,
112
- defined: (d) => isValid(d.x) && isValid(d.y)
113
- })
124
+ ? (sphereLine(plot.scales.projection) as unknown as D3Line<ScaledDataRecord>)
125
+ : line<ScaledDataRecord>()
126
+ .curve(maybeCurve(curve === 'auto' ? 'linear' : curve, tension ?? 0))
127
+ .x((d) => d.x as number)
128
+ .y((d) => d.y as number)
129
+ .defined((d) => isValid(d.x) && isValid(d.y))
114
130
  );
115
131
 
116
- function sphereLine(projection) {
132
+ function sphereLine(projection: any) {
117
133
  const path = geoPath(projection);
118
- const fn = (lineData: ScaledDataRecord[]) => {
119
- let line = [];
120
- const lines = [line];
134
+ return (lineData: ScaledDataRecord[]) => {
135
+ let line: [number, number][] = [];
136
+ const lines: [number, number][][] = [line];
121
137
  for (const { x, y } of lineData) {
122
138
  // if x or y is undefined, start a new line segment
123
139
  if (!isValid(x) || !isValid(y)) {
124
140
  line = [];
125
141
  lines.push(line);
126
142
  } else {
127
- line.push([x, y]);
143
+ line.push([x as number, y as number]);
128
144
  }
129
145
  }
130
146
  return path({ type: 'MultiLineString', coordinates: lines });
131
147
  };
132
- fn.context = path.context;
133
- return fn;
134
148
  }
135
149
  </script>
136
150
 
@@ -149,7 +163,7 @@
149
163
  {#each groupedLineData as lineData, i (i)}
150
164
  {@const pathString = linePath(lineData)}
151
165
  {#if pathString}
152
- <GroupMultiple class={resolveProp(lineClass, lineData[0])}>
166
+ <GroupMultiple class={resolveProp(lineClass, lineData[0].datum)}>
153
167
  {#if options.outlineStroke}
154
168
  {@const [outlineStyle, outlineStyleClass] = resolveStyles(
155
169
  plot,
@@ -161,11 +175,11 @@
161
175
  strokeOpacity: options.outlineStrokeOpacity ?? 1,
162
176
  strokeWidth:
163
177
  options.outlineStrokeWidth ||
164
- resolveProp(
178
+ ((resolveProp(
165
179
  options.strokeWidth,
166
180
  lineData[0].datum,
167
181
  1.4
168
- ) + 2
182
+ ) as number) ?? 1.4) + 2
169
183
  },
170
184
  'stroke',
171
185
  usedScales
@@ -191,13 +205,8 @@
191
205
  plot,
192
206
  lineData[0],
193
207
  {
194
- textAnchor: 'middle',
195
- ...pick(args, [
196
- 'fontSize',
197
- 'fontWeight',
198
- 'fontStyle',
199
- 'textAnchor'
200
- ]),
208
+ textAnchor: args.textAnchor || 'middle',
209
+ ...pick(args, ['fontSize', 'fontWeight', 'fontStyle']),
201
210
  strokeWidth: args.textStrokeWidth
202
211
  ? args.textStrokeWidth
203
212
  : args.textStroke
@@ -212,26 +221,40 @@
212
221
  )}
213
222
  <MarkerPath
214
223
  {mark}
224
+ transform=""
215
225
  scales={plot.scales}
216
- markerStart={args.markerStart}
217
- markerMid={args.markerMid}
218
- markerEnd={args.markerEnd}
219
- marker={args.marker}
220
- markerScale={args.markerScale}
221
- strokeWidth={args.strokeWidth}
222
- datum={lineData[0].datum}
226
+ markerStart={options.markerStart as
227
+ | boolean
228
+ | MarkerShape
229
+ | undefined}
230
+ markerMid={options.markerMid as
231
+ | boolean
232
+ | MarkerShape
233
+ | undefined}
234
+ markerEnd={options.markerEnd as
235
+ | boolean
236
+ | MarkerShape
237
+ | undefined}
238
+ marker={options.marker as boolean | MarkerShape | undefined}
239
+ markerScale={options.markerScale}
240
+ strokeWidth={options.strokeWidth}
241
+ datum={lineData[0].datum as Datum}
223
242
  d={pathString}
224
- dInv={text ? linePath(lineData.toReversed()) : null}
243
+ dInv={text
244
+ ? (linePath(lineData.toReversed()) ?? undefined)
245
+ : undefined}
225
246
  color={lineData[0].stroke || 'currentColor'}
226
- {style}
227
- class={styleClass}
228
- text={text ? resolveProp(text, lineData[0].datum) : null}
229
- startOffset={resolveProp(
230
- args.textStartOffset,
247
+ style={style ?? ''}
248
+ class={styleClass ?? undefined}
249
+ text={text
250
+ ? ((resolveProp(text, lineData[0].datum) as string) ?? '')
251
+ : ''}
252
+ startOffset={(resolveProp(
253
+ options.textStartOffset,
231
254
  lineData[0].datum,
232
255
  '50%'
233
- )}
234
- {textStyle}
256
+ ) as string) ?? '50%'}
257
+ textStyle={textStyle ?? ''}
235
258
  {textStyleClass} />
236
259
  </GroupMultiple>
237
260
  {/if}
@@ -13,6 +13,16 @@ declare function $$render<Datum extends DataRecord>(): {
13
13
  dodgeY: import("../transforms/dodge.js").DodgeYOptions;
14
14
  fill: ChannelAccessor<Datum>;
15
15
  fillOpacity: ConstantAccessor<number, Datum>;
16
+ fontFamily: ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
17
+ fontSize: ConstantAccessor<number | "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset" | "math" | (string & {}) | "large" | "medium" | "small" | "x-large" | "x-small" | "xx-large" | "xx-small" | "xxx-large" | "larger" | "smaller", Datum>;
18
+ fontStyle: ConstantAccessor<import("csstype").Property.FontStyle, Datum>;
19
+ fontVariant: ConstantAccessor<import("csstype").Property.FontVariant, Datum>;
20
+ fontWeight: ConstantAccessor<import("csstype").Property.FontWeight, Datum>;
21
+ letterSpacing: ConstantAccessor<import("csstype").Property.LetterSpacing<0 | (string & {})>, Datum>;
22
+ wordSpacing: ConstantAccessor<import("csstype").Property.WordSpacing<0 | (string & {})>, Datum>;
23
+ textAnchor: ConstantAccessor<import("csstype").Property.TextAnchor, Datum>;
24
+ textTransform: ConstantAccessor<import("csstype").Property.TextTransform, Datum>;
25
+ textDecoration: ConstantAccessor<import("csstype").Property.TextDecoration<0 | (string & {})>, Datum>;
16
26
  sort: ((a: RawValue, b: RawValue) => number) | {
17
27
  channel: string;
18
28
  order?: "ascending" | "descending";
@@ -26,64 +36,143 @@ declare function $$render<Datum extends DataRecord>(): {
26
36
  opacity: ChannelAccessor<Datum>;
27
37
  strokeDasharray: ConstantAccessor<string, Datum>;
28
38
  strokeDashoffset: ConstantAccessor<number, Datum>;
39
+ blend: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
29
40
  mixBlendMode: ConstantAccessor<import("csstype").Property.MixBlendMode, Datum>;
30
41
  clipPath: string;
31
42
  mask: string;
32
43
  imageFilter: ConstantAccessor<string, Datum>;
33
44
  shapeRendering: ConstantAccessor<import("csstype").Property.ShapeRendering, Datum>;
34
45
  paintOrder: ConstantAccessor<string, Datum>;
35
- onclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
36
- ondblclick: import("svelte/elements").MouseEventHandler<SVGPathElement>;
37
- onmouseup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
38
- onmousedown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
39
- onmouseenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
40
- onmousemove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
41
- onmouseleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
42
- onmouseout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
43
- onmouseover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
44
- onpointercancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
45
- onpointerdown: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
- onpointerup: import("svelte/elements").MouseEventHandler<SVGPathElement>;
47
- onpointerenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
48
- onpointerleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
49
- onpointermove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
50
- onpointerover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
51
- onpointerout: import("svelte/elements").MouseEventHandler<SVGPathElement>;
52
- ondrag: import("svelte/elements").MouseEventHandler<SVGPathElement>;
53
- ondrop: import("svelte/elements").MouseEventHandler<SVGPathElement>;
54
- ondragstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
55
- ondragenter: import("svelte/elements").MouseEventHandler<SVGPathElement>;
56
- ondragleave: import("svelte/elements").MouseEventHandler<SVGPathElement>;
57
- ondragover: import("svelte/elements").MouseEventHandler<SVGPathElement>;
58
- ondragend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
59
- ontouchstart: import("svelte/elements").MouseEventHandler<SVGPathElement>;
60
- ontouchmove: import("svelte/elements").MouseEventHandler<SVGPathElement>;
61
- ontouchend: import("svelte/elements").MouseEventHandler<SVGPathElement>;
62
- ontouchcancel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
63
- oncontextmenu: import("svelte/elements").MouseEventHandler<SVGPathElement>;
64
- onwheel: import("svelte/elements").MouseEventHandler<SVGPathElement>;
46
+ onclick: (event: Event & {
47
+ currentTarget: SVGPathElement;
48
+ }, datum: Datum, index: number) => void;
49
+ ondblclick: (event: Event & {
50
+ currentTarget: SVGPathElement;
51
+ }, datum: Datum, index: number) => void;
52
+ onmouseup: (event: Event & {
53
+ currentTarget: SVGPathElement;
54
+ }, datum: Datum, index: number) => void;
55
+ onmousedown: (event: Event & {
56
+ currentTarget: SVGPathElement;
57
+ }, datum: Datum, index: number) => void;
58
+ onmouseenter: (event: Event & {
59
+ currentTarget: SVGPathElement;
60
+ }, datum: Datum, index: number) => void;
61
+ onmousemove: (event: Event & {
62
+ currentTarget: SVGPathElement;
63
+ }, datum: Datum, index: number) => void;
64
+ onmouseleave: (event: Event & {
65
+ currentTarget: SVGPathElement;
66
+ }, datum: Datum, index: number) => void;
67
+ onmouseout: (event: Event & {
68
+ currentTarget: SVGPathElement;
69
+ }, datum: Datum, index: number) => void;
70
+ onmouseover: (event: Event & {
71
+ currentTarget: SVGPathElement;
72
+ }, datum: Datum, index: number) => void;
73
+ onpointercancel: (event: Event & {
74
+ currentTarget: SVGPathElement;
75
+ }, datum: Datum, index: number) => void;
76
+ onpointerdown: (event: Event & {
77
+ currentTarget: SVGPathElement;
78
+ }, datum: Datum, index: number) => void;
79
+ onpointerup: (event: Event & {
80
+ currentTarget: SVGPathElement;
81
+ }, datum: Datum, index: number) => void;
82
+ onpointerenter: (event: Event & {
83
+ currentTarget: SVGPathElement;
84
+ }, datum: Datum, index: number) => void;
85
+ onpointerleave: (event: Event & {
86
+ currentTarget: SVGPathElement;
87
+ }, datum: Datum, index: number) => void;
88
+ onpointermove: (event: Event & {
89
+ currentTarget: SVGPathElement;
90
+ }, datum: Datum, index: number) => void;
91
+ onpointerover: (event: Event & {
92
+ currentTarget: SVGPathElement;
93
+ }, datum: Datum, index: number) => void;
94
+ onpointerout: (event: Event & {
95
+ currentTarget: SVGPathElement;
96
+ }, datum: Datum, index: number) => void;
97
+ ondrag: (event: Event & {
98
+ currentTarget: SVGPathElement;
99
+ }, datum: Datum, index: number) => void;
100
+ ondrop: (event: Event & {
101
+ currentTarget: SVGPathElement;
102
+ }, datum: Datum, index: number) => void;
103
+ ondragstart: (event: Event & {
104
+ currentTarget: SVGPathElement;
105
+ }, datum: Datum, index: number) => void;
106
+ ondragenter: (event: Event & {
107
+ currentTarget: SVGPathElement;
108
+ }, datum: Datum, index: number) => void;
109
+ ondragleave: (event: Event & {
110
+ currentTarget: SVGPathElement;
111
+ }, datum: Datum, index: number) => void;
112
+ ondragover: (event: Event & {
113
+ currentTarget: SVGPathElement;
114
+ }, datum: Datum, index: number) => void;
115
+ ondragend: (event: Event & {
116
+ currentTarget: SVGPathElement;
117
+ }, datum: Datum, index: number) => void;
118
+ ontouchstart: (event: Event & {
119
+ currentTarget: SVGPathElement;
120
+ }, datum: Datum, index: number) => void;
121
+ ontouchmove: (event: Event & {
122
+ currentTarget: SVGPathElement;
123
+ }, datum: Datum, index: number) => void;
124
+ ontouchend: (event: Event & {
125
+ currentTarget: SVGPathElement;
126
+ }, datum: Datum, index: number) => void;
127
+ ontouchcancel: (event: Event & {
128
+ currentTarget: SVGPathElement;
129
+ }, datum: Datum, index: number) => void;
130
+ oncontextmenu: (event: Event & {
131
+ currentTarget: SVGPathElement;
132
+ }, datum: Datum, index: number) => void;
133
+ onwheel: (event: Event & {
134
+ currentTarget: SVGPathElement;
135
+ }, datum: Datum, index: number) => void;
65
136
  class: string;
66
137
  style: string;
67
138
  cursor: ConstantAccessor<import("csstype").Property.Cursor, Datum>;
139
+ title: ConstantAccessor<string, Datum>;
68
140
  }> & {
141
+ /** the input data array; each element becomes one point in the line */
69
142
  data?: Datum[];
143
+ /** the horizontal position channel */
70
144
  x?: ChannelAccessor<Datum>;
145
+ /** the vertical position channel */
71
146
  y?: ChannelAccessor<Datum>;
147
+ /** the series channel; data is grouped into separate lines by unique z values */
72
148
  z?: ChannelAccessor<Datum>;
149
+ /** the stroke color for the line outline */
73
150
  outlineStroke?: string;
151
+ /** the stroke width of the line outline in pixels */
74
152
  outlineStrokeWidth?: number;
153
+ /** the stroke opacity for the line outline; a number between 0 and 1 */
75
154
  outlineStrokeOpacity?: number;
155
+ /** the curve interpolation method for connecting data points (e.g. "basis", "catmull-rom") */
76
156
  curve?: CurveName | CurveFactory | "auto";
157
+ /** the tension parameter for cardinal or Catmull-Rom curve interpolation */
77
158
  tension?: number;
159
+ /** controls the order of data points before rendering */
78
160
  sort?: ConstantAccessor<RawValue, Datum> | {
79
161
  channel: "stroke" | "fill";
80
162
  };
163
+ /** text label to render along the line path using a textPath element */
81
164
  text?: ConstantAccessor<string, Datum>;
165
+ /** the fill color for the text label rendered along the line */
82
166
  textFill?: ConstantAccessor<string, Datum>;
167
+ /** the stroke color for the text label rendered along the line */
83
168
  textStroke?: ConstantAccessor<string, Datum>;
169
+ /** the offset position for the text label along the line path (e.g. "50%") */
84
170
  textStartOffset?: ConstantAccessor<string, Datum>;
171
+ /** the stroke width for the text label rendered along the line in pixels */
85
172
  textStrokeWidth?: ConstantAccessor<number, Datum>;
173
+ /** CSS class name(s) to apply to individual line elements */
86
174
  lineClass?: ConstantAccessor<string, Datum>;
175
+ /** if true, renders using Canvas instead of SVG */
87
176
  canvas?: boolean;
88
177
  };
89
178
  exports: {};
@@ -3,12 +3,13 @@
3
3
  -->
4
4
  <script lang="ts" generics="Datum extends DataRow">
5
5
  interface LineXMarkProps extends Omit<ComponentProps<typeof Line>, 'y' | 'data'> {
6
+ /** the input data array */
6
7
  data: Datum[];
7
8
  }
8
9
  import Line from './Line.svelte';
9
10
  import { recordizeX } from '../index.js';
10
11
  import type { ComponentProps } from 'svelte';
11
- import type { DataRow } from '../index.js';
12
+ import type { DataRow } from '../types/index.js';
12
13
 
13
14
  let { data = [{} as Datum], ...rest }: LineXMarkProps = $props();
14
15