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
@@ -56,7 +56,7 @@
56
56
  usedScales,
57
57
  plot,
58
58
  'stroke'
59
- );
59
+ ) as { fill: string; stroke: string } & Record<string, unknown>;
60
60
 
61
61
  const opacity = maybeOpacity(restStyles['opacity']);
62
62
  const strokeOpacity = maybeOpacity(restStyles['stroke-opacity']);
@@ -67,12 +67,12 @@
67
67
  1.4
68
68
  ) as number;
69
69
 
70
- if (mark.options.outlineStroke) {
70
+ const lineOpts = mark.options as any;
71
+ if (lineOpts.outlineStroke) {
71
72
  // draw stroke outline first
72
- const outlineStroke = resolveColor(mark.options.outlineStroke, canvas);
73
- const outlineStrokeWidth =
74
- mark.options.outlineStrokeWidth ?? strokeWidth + 2;
75
- const outlineStrokeOpacity = mark.options.outlineStrokeOpacity ?? 1;
73
+ const outlineStroke = resolveColor(lineOpts.outlineStroke, canvas);
74
+ const outlineStrokeWidth = lineOpts.outlineStrokeWidth ?? strokeWidth + 2;
75
+ const outlineStrokeOpacity = lineOpts.outlineStrokeOpacity ?? 1;
76
76
 
77
77
  context.lineWidth = outlineStrokeWidth;
78
78
  context.strokeStyle = outlineStroke;
@@ -82,7 +82,7 @@
82
82
  context.stroke();
83
83
  }
84
84
 
85
- stroke = resolveColor(stroke, canvas);
85
+ stroke = resolveColor(stroke, canvas) as string;
86
86
 
87
87
  if (stroke && stroke !== 'none') {
88
88
  context.lineWidth = strokeWidth ?? 1.4;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { RawValue } from '../../index.js';
2
+ import type { RawValue } from '../../types/index.js';
3
3
  import { usePlot } from '../../hooks/usePlot.svelte.js';
4
4
 
5
5
  let {
@@ -14,7 +14,7 @@
14
14
 
15
15
  const projectedStops = $derived(
16
16
  stops
17
- .map((d) => ({ ...d, px: plot.scales.x.fn(d.x) / plot.width }))
17
+ .map((d) => ({ ...d, px: (plot.scales.x?.fn(d.x as any) ?? 0) / plot.width }))
18
18
  .sort((a, b) => a.px - b.px)
19
19
  );
20
20
  </script>
@@ -1,4 +1,4 @@
1
- import type { RawValue } from '../../index.js';
1
+ import type { RawValue } from '../../types/index.js';
2
2
  type $$ComponentProps = {
3
3
  id: string;
4
4
  stops: {
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type { RawValue } from '../../index.js';
2
+ import type { RawValue } from '../../types/index.js';
3
3
  import { usePlot } from '../../hooks/usePlot.svelte.js';
4
4
 
5
5
  let {
@@ -14,7 +14,7 @@
14
14
 
15
15
  const projectedStops = $derived(
16
16
  stops
17
- .map((d) => ({ ...d, py: plot.scales.y.fn(d.y) / plot.height }))
17
+ .map((d) => ({ ...d, py: (plot.scales.y?.fn(d.y as any) ?? 0) / plot.height }))
18
18
  .sort((a, b) => a.py - b.py)
19
19
  );
20
20
  </script>
@@ -1,4 +1,4 @@
1
- import type { RawValue } from '../../index.js';
1
+ import type { RawValue } from '../../types/index.js';
2
2
  type $$ComponentProps = {
3
3
  id: string;
4
4
  stops: {
@@ -16,7 +16,7 @@
16
16
 
17
17
  <script lang="ts">
18
18
  import { getContext } from 'svelte';
19
- import { getPlotDefaults } from '../../hooks/plotDefaults';
19
+ import { getPlotDefaults } from '../../hooks/plotDefaults.js';
20
20
 
21
21
  type MarkerProps = {
22
22
  id: string;
@@ -33,7 +33,7 @@
33
33
  width: 6,
34
34
  height: 6,
35
35
  orient,
36
- color: 'stroke'
36
+ color: 'stroke' as const
37
37
  });
38
38
 
39
39
  const MARKERS: Record<
@@ -47,6 +47,7 @@
47
47
  * path string
48
48
  */
49
49
  d: string;
50
+ dInv?: string;
50
51
  style: string;
51
52
  startOffset: string;
52
53
  textStyle: string;
@@ -69,7 +70,7 @@
69
70
  d,
70
71
  dInv,
71
72
  style,
72
- class: className = null,
73
+ class: className = '',
73
74
  textStyleClass = null,
74
75
  startOffset,
75
76
  textStyle,
@@ -86,14 +87,14 @@
86
87
 
87
88
  const points = $derived(text && d != null ? d.split(/[LMC]/).slice(1) : []);
88
89
  const hasPath = $derived(points.length > 0);
89
- const firstPt = $derived(text && hasPath ? points.at(0).split(',').map(Number) : []);
90
- const lastPt = $derived(text && hasPath ? points.at(-1).split(',').map(Number) : []);
91
- const leftToRight = $derived(text && hasPath ? firstPt[0] < lastPt.at(-2) : true);
90
+ const firstPt = $derived(text && hasPath ? (points.at(0)?.split(',').map(Number) ?? []) : []);
91
+ const lastPt = $derived(text && hasPath ? (points.at(-1)?.split(',').map(Number) ?? []) : []);
92
+ const leftToRight = $derived(text && hasPath ? firstPt[0] < (lastPt.at(-2) ?? 0) : true);
92
93
 
93
94
  // use reversed path if the path is not left to right
94
95
  const textPath = $derived(!text || leftToRight ? d : dInv);
95
- const strokeWidth_ = $derived(resolveProp(strokeWidth, datum, 1.4));
96
- const markerScale_ = $derived(resolveProp(markerScale, datum, 1));
96
+ const strokeWidth_ = $derived(resolveProp(strokeWidth, datum, 1.4) ?? 1.4);
97
+ const markerScale_ = $derived(resolveProp(markerScale, datum, 1) ?? 1);
97
98
  </script>
98
99
 
99
100
  <g
@@ -105,14 +106,16 @@
105
106
  options: mark.options,
106
107
  datum: datum
107
108
  })}>
108
- {#each Object.entries( { start: markerStart, mid: markerMid, end: markerEnd, all: marker } ) as [key, marker] (key)}
109
+ {#each Object.entries( { start: markerStart, mid: markerMid, end: markerEnd, all: marker } ) as [key, markerValue] (key)}
109
110
  {@const markerId = `marker-${key === 'all' ? '' : `${key}-`}${id}`}
110
- {#if isSnippet(marker)}
111
- {@render marker(markerId, color)}
112
- {:else if marker}
111
+ {#if isSnippet(markerValue)}
112
+ {@render (markerValue as any)(markerId, color)}
113
+ {:else if markerValue}
113
114
  <Marker
114
115
  id={markerId}
115
- shape={marker === true ? 'circle' : resolveProp(marker, datum)}
116
+ shape={markerValue === true
117
+ ? 'circle'
118
+ : ((resolveProp(markerValue, datum) ?? 'circle') as MarkerShape)}
116
119
  {color}
117
120
  markerScale={markerScale_} />
118
121
  {/if}
@@ -121,7 +124,7 @@
121
124
  <!-- add invisible path in bg for easier mouse access -->
122
125
  <path
123
126
  {d}
124
- style="fill:none;stroke-width: {(strokeWidth || 1) +
127
+ style="fill:none;stroke-width: {(strokeWidth_ || 1) +
125
128
  10}; stroke: transparent; stroke-opacity:0" />
126
129
  {/if}
127
130
  <path
@@ -8,10 +8,20 @@ declare function $$render<Datum extends DataRecord>(): {
8
8
  fy: import("../../types/index.js").ChannelAccessor<Datum>;
9
9
  dx: ConstantAccessor<number, Datum>;
10
10
  dy: ConstantAccessor<number, Datum>;
11
- dodgeX: import("../../transforms/dodge").DodgeXOptions;
12
- dodgeY: import("../../transforms/dodge").DodgeYOptions;
11
+ dodgeX: import("../../transforms/dodge.js").DodgeXOptions;
12
+ dodgeY: import("../../transforms/dodge.js").DodgeYOptions;
13
13
  fill: import("../../types/index.js").ChannelAccessor<Datum>;
14
14
  fillOpacity: ConstantAccessor<number, Datum>;
15
+ fontFamily: ConstantAccessor<import("csstype").Property.FontFamily, Datum>;
16
+ 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>;
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: import("../../types/index.js").RawValue, b: import("../../types/index.js").RawValue) => number) | {
16
26
  channel: string;
17
27
  order?: "ascending" | "descending";
@@ -25,45 +35,107 @@ declare function $$render<Datum extends DataRecord>(): {
25
35
  opacity: import("../../types/index.js").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
  }> & {
68
140
  /**
69
141
  * the datum associated with this path, usually the first
@@ -95,6 +167,7 @@ declare function $$render<Datum extends DataRecord>(): {
95
167
  * path string
96
168
  */
97
169
  d: string;
170
+ dInv?: string;
98
171
  style: string;
99
172
  startOffset: string;
100
173
  textStyle: string;
@@ -1,10 +1,10 @@
1
1
  <script lang="ts">
2
- import { resolveProp, resolveStyles } from '../../helpers/resolve';
2
+ import { resolveProp, resolveStyles } from '../../helpers/resolve.js';
3
3
  import { type ComponentProps } from 'svelte';
4
- import type { ScaledDataRecord, UsedScales } from '../../index.js';
4
+ import type { ScaledDataRecord, UsedScales } from '../../types/index.js';
5
5
  import type Text from '../Text.svelte';
6
- import { CSS_VAR } from '../../constants';
7
- import { maybeFromPixel, maybeFromRem } from '../../helpers/getBaseStyles';
6
+ import { CSS_VAR } from '../../constants.js';
7
+ import { maybeFromPixel, maybeFromRem } from '../../helpers/getBaseStyles.js';
8
8
  import { usePlot } from '../../hooks/usePlot.svelte.js';
9
9
 
10
10
  const LINE_ANCHOR = {
@@ -46,7 +46,7 @@
46
46
  args.lineAnchor,
47
47
  d.datum,
48
48
  args.y != null ? 'middle' : isTop ? 'top' : isBottom ? 'bottom' : 'middle'
49
- )
49
+ ) ?? 'middle'
50
50
  );
51
51
  const textClassName = $derived(resolveProp(args.textClass, d.datum, null));
52
52
  const [x, y] = $derived(
@@ -73,7 +73,7 @@
73
73
  const [style, styleClass] = $derived(
74
74
  resolveStyles(
75
75
  plot,
76
- { ...d, __tspanIndex: 0 },
76
+ { ...d, __tspanIndex: 0 } as any,
77
77
  {
78
78
  fontSize: 12,
79
79
  fontWeight: 500,
@@ -92,20 +92,27 @@
92
92
  let textElement: SVGTextElement | null = $state(null);
93
93
 
94
94
  const rootFontSize = $derived(
95
- textElement?.ownerDocument?.documentElement && textLines.length > 1
96
- ? maybeFromPixel(getComputedStyle(textElement.ownerDocument.documentElement).fontSize)
95
+ textElement != null && textLines.length > 1
96
+ ? maybeFromPixel(
97
+ getComputedStyle(
98
+ (textElement as unknown as SVGTextElement).ownerDocument.documentElement
99
+ ).fontSize
100
+ )
97
101
  : 14
98
102
  );
99
103
 
100
104
  const computedFontSize = $derived(
101
- textElement && textLines.length > 1 && CSS_VAR.test(fontSize)
105
+ textElement &&
106
+ textLines.length > 1 &&
107
+ typeof fontSize === 'string' &&
108
+ CSS_VAR.test(fontSize)
102
109
  ? maybeFromRem(
103
110
  maybeFromPixel(
104
111
  getComputedStyle(textElement).getPropertyValue(
105
- `--${fontSize.match(CSS_VAR)[1]}`
112
+ `--${String(fontSize).match(CSS_VAR)![1]}`
106
113
  )
107
114
  ),
108
- rootFontSize
115
+ rootFontSize as number
109
116
  )
110
117
  : fontSize
111
118
  );
@@ -114,7 +121,7 @@
114
121
  textLines.length > 1 ? (resolveProp(args.lineHeight, d.datum) ?? 1.2) : 0
115
122
  );
116
123
 
117
- const rotate = $derived(+resolveProp(args.rotate, d.datum, 0));
124
+ const rotate = $derived(Number(resolveProp(args.rotate, d.datum, 0) ?? 0));
118
125
  </script>
119
126
 
120
127
  {#if textLines.length > 1}
@@ -123,19 +130,19 @@
123
130
  bind:this={textElement}
124
131
  class={[textClassName]}
125
132
  dominant-baseline={LINE_ANCHOR[lineAnchor]}
126
- transform="translate({Math.round(x)},{Math.round(
127
- y -
133
+ transform="translate({Math.round(x ?? 0)},{Math.round(
134
+ (y ?? 0) -
128
135
  (lineAnchor === 'bottom'
129
136
  ? textLines.length - 1
130
137
  : lineAnchor === 'middle'
131
138
  ? (textLines.length - 1) * 0.5
132
139
  : 0) *
133
- computedFontSize *
140
+ (computedFontSize as number) *
134
141
  lineHeight
135
142
  )}) rotate({rotate})"
136
143
  >{#each textLines as line, l (l)}<tspan
137
144
  x="0"
138
- dy={l ? computedFontSize * lineHeight : 0}
145
+ dy={l ? (computedFontSize as number) * lineHeight : 0}
139
146
  class={styleClass}
140
147
  {style}>{line}</tspan
141
148
  >{/each}{#if title}<title>{title}</title>{/if}</text>
@@ -144,7 +151,7 @@
144
151
  <text
145
152
  class={[textClassName, styleClass]}
146
153
  dominant-baseline={LINE_ANCHOR[lineAnchor]}
147
- transform="translate({Math.round(x)},{Math.round(y)}) rotate({rotate})"
154
+ transform="translate({Math.round(x ?? 0)},{Math.round(y ?? 0)}) rotate({rotate})"
148
155
  {style}
149
156
  >{textLines[0]}{#if title}<title>{title}</title>{/if}</text>
150
157
  {/if}
@@ -1,5 +1,5 @@
1
1
  import { type ComponentProps } from 'svelte';
2
- import type { ScaledDataRecord, UsedScales } from '../../index.js';
2
+ import type { ScaledDataRecord, UsedScales } from '../../types/index.js';
3
3
  import type Text from '../Text.svelte';
4
4
  type $$ComponentProps = {
5
5
  textLines: string[];
@@ -31,7 +31,7 @@ Helper class for rendering Cell, Bar and Rect marks in canvas
31
31
  } from '../../types/index.js';
32
32
  import type { BorderRadius } from '../../types/mark.js';
33
33
  import { resolveProp, resolveScaledStyleProps } from '../../helpers/resolve.js';
34
- import { roundedRect } from '../../helpers/roundedRect';
34
+ import { roundedRect } from '../../helpers/roundedRect.js';
35
35
  import type { Attachment } from 'svelte/attachments';
36
36
  import { devicePixelRatio } from 'svelte/reactivity/window';
37
37
  import CanvasLayer from './CanvasLayer.svelte';
@@ -70,7 +70,8 @@ Helper class for rendering Cell, Bar and Rect marks in canvas
70
70
  return value == null ? 1 : +value;
71
71
  }
72
72
 
73
- const render: Attachment = (canvas: HTMLCanvasElement) => {
73
+ const render: Attachment = (canvasEl: Element) => {
74
+ const canvas = canvasEl as HTMLCanvasElement;
74
75
  const context = canvas.getContext('2d');
75
76
 
76
77
  $effect(() => {
@@ -93,27 +94,31 @@ Helper class for rendering Cell, Bar and Rect marks in canvas
93
94
  const miny = Math.min(y1, y2);
94
95
  const maxy = Math.max(y1, y2);
95
96
 
96
- const inset = +resolveProp(options.inset, datum.datum, 0);
97
- const insetLeft = +resolveProp(
98
- options.insetLeft,
99
- datum.datum,
100
- useInsetAsFallbackHorizontally ? inset : 0
101
- );
102
- const insetRight = +resolveProp(
103
- options.insetRight,
104
- datum.datum,
105
- useInsetAsFallbackHorizontally ? inset : 0
106
- );
107
- const insetTop = +resolveProp(
108
- options.insetTop,
109
- datum.datum,
110
- useInsetAsFallbackVertically ? inset : 0
111
- );
112
- const insetBottom = +resolveProp(
113
- options.insetBottom,
114
- datum.datum,
115
- useInsetAsFallbackVertically ? inset : 0
116
- );
97
+ const inset = resolveProp(options.inset, datum.datum, 0) ?? 0;
98
+ const insetLeft =
99
+ resolveProp(
100
+ options.insetLeft,
101
+ datum.datum,
102
+ useInsetAsFallbackHorizontally ? inset : 0
103
+ ) ?? 0;
104
+ const insetRight =
105
+ resolveProp(
106
+ options.insetRight,
107
+ datum.datum,
108
+ useInsetAsFallbackHorizontally ? inset : 0
109
+ ) ?? 0;
110
+ const insetTop =
111
+ resolveProp(
112
+ options.insetTop,
113
+ datum.datum,
114
+ useInsetAsFallbackVertically ? inset : 0
115
+ ) ?? 0;
116
+ const insetBottom =
117
+ resolveProp(
118
+ options.insetBottom,
119
+ datum.datum,
120
+ useInsetAsFallbackVertically ? inset : 0
121
+ ) ?? 0;
117
122
 
118
123
  const rectX = minx + insetLeft;
119
124
  const rectY = miny + insetBottom;
@@ -135,17 +140,17 @@ Helper class for rendering Cell, Bar and Rect marks in canvas
135
140
  usedScales,
136
141
  plot,
137
142
  defaultColorProp
138
- );
143
+ ) as { fill: string; stroke: string } & Record<string, unknown>;
139
144
 
140
145
  const opacity = maybeOpacity(restStyles['opacity']);
141
146
  const fillOpacity = maybeOpacity(restStyles['fill-opacity']);
142
147
  const strokeOpacity = maybeOpacity(restStyles['stroke-opacity']);
143
148
 
144
149
  if (typeof fill === 'string') {
145
- fill = resolveColor(fill, canvas);
150
+ fill = resolveColor(fill, canvas) as string;
146
151
  }
147
152
  if (typeof stroke === 'string') {
148
- stroke = resolveColor(stroke, canvas);
153
+ stroke = resolveColor(stroke, canvas) as string;
149
154
  }
150
155
 
151
156
  if (stroke && stroke !== 'none') {
@@ -26,8 +26,8 @@ Helper component for rendering rectangular marks in SVG
26
26
  fallbackStyle?: 'fill' | 'stroke';
27
27
  }
28
28
 
29
- import { resolveProp, resolveStyles } from '../../helpers/resolve';
30
- import { roundedRect } from '../../helpers/roundedRect';
29
+ import { resolveProp, resolveStyles } from '../../helpers/resolve.js';
30
+ import { roundedRect } from '../../helpers/roundedRect.js';
31
31
  import { addEventHandlers } from './events.js';
32
32
  import Anchor from './Anchor.svelte';
33
33
  import type { BaseMarkProps, BaseRectMarkProps, BorderRadius } from '../../types/mark.js';