layerchart 2.0.0-next.5 → 2.0.0-next.51

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 (703) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bench/ComposableLineChart.svelte +56 -0
  3. package/dist/bench/ComposableLineChart.svelte.d.ts +16 -0
  4. package/dist/bench/GeoBench.svelte +31 -0
  5. package/dist/bench/GeoBench.svelte.d.ts +11 -0
  6. package/dist/bench/PrimitiveBench.svelte +66 -0
  7. package/dist/bench/PrimitiveBench.svelte.d.ts +10 -0
  8. package/dist/bench/composable-vs-linechart.svelte.bench.d.ts +1 -0
  9. package/dist/bench/composable-vs-linechart.svelte.bench.js +100 -0
  10. package/dist/bench/generateData.d.ts +29 -0
  11. package/dist/bench/generateData.js +93 -0
  12. package/dist/bench/primitives.svelte.bench.d.ts +1 -0
  13. package/dist/bench/primitives.svelte.bench.js +42 -0
  14. package/dist/bench/svg-vs-canvas.svelte.bench.d.ts +1 -0
  15. package/dist/bench/svg-vs-canvas.svelte.bench.js +431 -0
  16. package/dist/components/AnnotationLine.svelte +16 -3
  17. package/dist/components/AnnotationPoint.svelte +30 -12
  18. package/dist/components/AnnotationRange.svelte +32 -17
  19. package/dist/components/Arc.svelte +25 -25
  20. package/dist/components/Arc.svelte.d.ts +5 -6
  21. package/dist/components/Arc.svelte.test.d.ts +1 -0
  22. package/dist/components/Arc.svelte.test.js +858 -0
  23. package/dist/components/Area.svelte +95 -100
  24. package/dist/components/Area.svelte.d.ts +7 -3
  25. package/dist/components/Axis.svelte +244 -58
  26. package/dist/components/Axis.svelte.d.ts +34 -6
  27. package/dist/components/Bar.svelte +178 -31
  28. package/dist/components/Bar.svelte.d.ts +22 -2
  29. package/dist/components/Bars.svelte +33 -7
  30. package/dist/components/Bars.svelte.d.ts +9 -1
  31. package/dist/components/Blur.svelte +10 -9
  32. package/dist/components/Blur.svelte.d.ts +2 -5
  33. package/dist/components/Bounds.svelte +1 -1
  34. package/dist/components/BoxPlot.svelte +397 -0
  35. package/dist/components/BoxPlot.svelte.d.ts +40 -0
  36. package/dist/components/BrushContext.svelte +149 -329
  37. package/dist/components/BrushContext.svelte.d.ts +17 -45
  38. package/dist/components/BrushContext.svelte.test.d.ts +1 -0
  39. package/dist/components/BrushContext.svelte.test.js +301 -0
  40. package/dist/components/Calendar.svelte +45 -20
  41. package/dist/components/Calendar.svelte.d.ts +4 -4
  42. package/dist/components/Cell.svelte +59 -0
  43. package/dist/components/Cell.svelte.d.ts +25 -0
  44. package/dist/components/Chart.svelte +505 -768
  45. package/dist/components/Chart.svelte.d.ts +127 -101
  46. package/dist/components/ChartChildren.svelte +290 -0
  47. package/dist/components/ChartChildren.svelte.d.ts +147 -0
  48. package/dist/components/ChartClipPath.svelte +2 -2
  49. package/dist/components/Chord.svelte +114 -0
  50. package/dist/components/Chord.svelte.d.ts +53 -0
  51. package/dist/components/Circle.svelte +350 -72
  52. package/dist/components/Circle.svelte.d.ts +34 -9
  53. package/dist/components/Circle.svelte.test.d.ts +1 -0
  54. package/dist/components/Circle.svelte.test.js +141 -0
  55. package/dist/components/CircleClipPath.svelte +18 -2
  56. package/dist/components/ClipPath.svelte +36 -6
  57. package/dist/components/ClipPath.svelte.d.ts +10 -0
  58. package/dist/components/ColorRamp.svelte +1 -1
  59. package/dist/components/ComputedStyles.svelte +9 -2
  60. package/dist/components/Connector.svelte +7 -7
  61. package/dist/components/Connector.svelte.d.ts +4 -4
  62. package/dist/components/Contour.svelte +301 -0
  63. package/dist/components/Contour.svelte.d.ts +48 -0
  64. package/dist/components/Dagre.svelte +5 -0
  65. package/dist/components/Density.svelte +146 -0
  66. package/dist/components/Density.svelte.d.ts +21 -0
  67. package/dist/components/Ellipse.svelte +464 -0
  68. package/dist/components/Ellipse.svelte.d.ts +89 -0
  69. package/dist/components/Ellipse.svelte.test.d.ts +1 -0
  70. package/dist/components/Ellipse.svelte.test.js +126 -0
  71. package/dist/components/ForceSimulation.svelte +184 -50
  72. package/dist/components/ForceSimulation.svelte.d.ts +95 -21
  73. package/dist/components/Frame.svelte +2 -2
  74. package/dist/components/GeoCircle.svelte +1 -1
  75. package/dist/components/GeoEdgeFade.svelte +4 -5
  76. package/dist/components/GeoPath.svelte +62 -98
  77. package/dist/components/GeoPath.svelte.d.ts +6 -6
  78. package/dist/components/GeoPoint.svelte +22 -13
  79. package/dist/components/GeoProjection.svelte +30 -0
  80. package/dist/components/GeoProjection.svelte.d.ts +8 -0
  81. package/dist/components/GeoRaster.svelte +311 -0
  82. package/dist/components/GeoRaster.svelte.d.ts +61 -0
  83. package/dist/components/GeoSpline.svelte +26 -30
  84. package/dist/components/GeoSpline.svelte.d.ts +3 -3
  85. package/dist/components/GeoTile.svelte +12 -13
  86. package/dist/components/GeoVisible.svelte +3 -3
  87. package/dist/components/Graticule.svelte +9 -12
  88. package/dist/components/Graticule.svelte.d.ts +2 -1
  89. package/dist/components/Grid.svelte +79 -64
  90. package/dist/components/Grid.svelte.d.ts +5 -0
  91. package/dist/components/Group.svelte +182 -65
  92. package/dist/components/Group.svelte.d.ts +34 -9
  93. package/dist/components/Group.svelte.test.d.ts +1 -0
  94. package/dist/components/Group.svelte.test.js +63 -0
  95. package/dist/components/Highlight.svelte +384 -159
  96. package/dist/components/Highlight.svelte.d.ts +12 -0
  97. package/dist/components/Hull.svelte +21 -11
  98. package/dist/components/Image.svelte +546 -0
  99. package/dist/components/Image.svelte.d.ts +127 -0
  100. package/dist/components/Image.svelte.test.d.ts +1 -0
  101. package/dist/components/Image.svelte.test.js +220 -0
  102. package/dist/components/Labels.svelte +105 -25
  103. package/dist/components/Labels.svelte.d.ts +19 -7
  104. package/dist/components/Legend.svelte +237 -81
  105. package/dist/components/Legend.svelte.d.ts +23 -12
  106. package/dist/components/Line.svelte +361 -84
  107. package/dist/components/Line.svelte.d.ts +39 -14
  108. package/dist/components/Line.svelte.test.d.ts +1 -0
  109. package/dist/components/Line.svelte.test.js +121 -0
  110. package/dist/components/LinearGradient.svelte +43 -13
  111. package/dist/components/Link.svelte +1 -1
  112. package/dist/components/Marker.svelte +43 -27
  113. package/dist/components/Marker.svelte.d.ts +1 -1
  114. package/dist/components/Month.svelte +273 -0
  115. package/dist/components/Month.svelte.d.ts +70 -0
  116. package/dist/components/MonthPath.svelte +32 -18
  117. package/dist/components/MonthPath.svelte.d.ts +8 -3
  118. package/dist/components/MotionPath.svelte +1 -1
  119. package/dist/components/Pack.svelte +4 -6
  120. package/dist/components/Pack.svelte.d.ts +12 -7
  121. package/dist/components/Partition.svelte +4 -3
  122. package/dist/components/Partition.svelte.d.ts +12 -4
  123. package/dist/components/Path.svelte +361 -0
  124. package/dist/components/Path.svelte.d.ts +72 -0
  125. package/dist/components/Pattern.svelte +15 -14
  126. package/dist/components/Pie.svelte +6 -8
  127. package/dist/components/Pie.svelte.d.ts +2 -3
  128. package/dist/components/Point.svelte +1 -1
  129. package/dist/components/Points.svelte +76 -84
  130. package/dist/components/Points.svelte.d.ts +7 -8
  131. package/dist/components/Polygon.svelte +538 -0
  132. package/dist/components/Polygon.svelte.d.ts +136 -0
  133. package/dist/components/Polygon.svelte.test.d.ts +1 -0
  134. package/dist/components/Polygon.svelte.test.js +121 -0
  135. package/dist/components/RadialGradient.svelte +12 -16
  136. package/dist/components/Raster.svelte +335 -0
  137. package/dist/components/Raster.svelte.d.ts +48 -0
  138. package/dist/components/Rect.svelte +551 -89
  139. package/dist/components/Rect.svelte.d.ts +82 -8
  140. package/dist/components/Rect.svelte.test.d.ts +1 -0
  141. package/dist/components/Rect.svelte.test.js +179 -0
  142. package/dist/components/RectClipPath.svelte +16 -4
  143. package/dist/components/RectClipPath.svelte.d.ts +2 -2
  144. package/dist/components/Ribbon.svelte +141 -0
  145. package/dist/components/Ribbon.svelte.d.ts +51 -0
  146. package/dist/components/Rule.svelte +170 -78
  147. package/dist/components/Rule.svelte.d.ts +7 -2
  148. package/dist/components/Sankey.svelte +1 -3
  149. package/dist/components/Spline.svelte +181 -279
  150. package/dist/components/Spline.svelte.d.ts +28 -56
  151. package/dist/components/Text.svelte +579 -215
  152. package/dist/components/Text.svelte.d.ts +54 -14
  153. package/dist/components/Text.svelte.test.d.ts +1 -0
  154. package/dist/components/Text.svelte.test.js +152 -0
  155. package/dist/components/Threshold.svelte +6 -3
  156. package/dist/components/TileImage.svelte +19 -4
  157. package/dist/components/Trail.svelte +256 -0
  158. package/dist/components/Trail.svelte.d.ts +88 -0
  159. package/dist/components/TransformContext.svelte +132 -428
  160. package/dist/components/TransformContext.svelte.d.ts +22 -0
  161. package/dist/components/TransformContext.svelte.test.d.ts +1 -0
  162. package/dist/components/TransformContext.svelte.test.js +166 -0
  163. package/dist/components/Tree.svelte +4 -3
  164. package/dist/components/Tree.svelte.d.ts +12 -4
  165. package/dist/components/Treemap.svelte +67 -29
  166. package/dist/components/Treemap.svelte.d.ts +23 -15
  167. package/dist/components/Vector.svelte +376 -0
  168. package/dist/components/Vector.svelte.d.ts +109 -0
  169. package/dist/components/Violin.svelte +319 -0
  170. package/dist/components/Violin.svelte.d.ts +47 -0
  171. package/dist/components/Voronoi.svelte +17 -18
  172. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-full-circle--360-degree-range--1.png +0 -0
  173. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-full-circle--360-degree-range--2.png +0 -0
  174. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-innerRadius-of-0--pie-slice--1.png +0 -0
  175. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-innerRadius-of-0--pie-slice--2.png +0 -0
  176. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-negative-domain-values-1.png +0 -0
  177. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-negative-domain-values-2.png +0 -0
  178. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-partial-arc--e-g---180-degrees--1.png +0 -0
  179. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-partial-arc--e-g---180-degrees--2.png +0 -0
  180. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-at-max-domain-1.png +0 -0
  181. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-at-max-domain-2.png +0 -0
  182. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-below-domain-min-1.png +0 -0
  183. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-below-domain-min-2.png +0 -0
  184. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-exceeding-domain-max-1.png +0 -0
  185. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-exceeding-domain-max-2.png +0 -0
  186. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-of-0-1.png +0 -0
  187. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-of-0-2.png +0 -0
  188. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-enter-events-1.png +0 -0
  189. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-enter-events-2.png +0 -0
  190. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-move-events-1.png +0 -0
  191. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-move-events-2.png +0 -0
  192. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-offset-to-arc-position-1.png +0 -0
  193. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-offset-to-arc-position-2.png +0 -0
  194. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-hide-on-pointer-leave-1.png +0 -0
  195. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-hide-on-pointer-leave-2.png +0 -0
  196. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-show-on-pointer-enter-with-data-1.png +0 -0
  197. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-show-on-pointer-enter-with-data-2.png +0 -0
  198. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-handle-custom-start-angle-in-range-1.png +0 -0
  199. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-handle-custom-start-angle-in-range-2.png +0 -0
  200. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-an-arc-path-with-value-1.png +0 -0
  201. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-an-arc-path-with-value-2.png +0 -0
  202. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-when-track-prop-is-provided-1.png +0 -0
  203. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-when-track-prop-is-provided-2.png +0 -0
  204. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackEndAngle-1.png +0 -0
  205. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackEndAngle-2.png +0 -0
  206. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-1.png +0 -0
  207. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-2.png +0 -0
  208. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackPadAngle-1.png +0 -0
  209. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackPadAngle-2.png +0 -0
  210. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-1.png +0 -0
  211. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-2.png +0 -0
  212. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-and-trackEndAngle-1.png +0 -0
  213. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-and-trackEndAngle-2.png +0 -0
  214. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-both-startAngle-and-endAngle-1.png +0 -0
  215. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-both-startAngle-and-endAngle-2.png +0 -0
  216. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-cornerRadius-1.png +0 -0
  217. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-cornerRadius-2.png +0 -0
  218. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-1.png +0 -0
  219. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-2.png +0 -0
  220. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-and-range-1.png +0 -0
  221. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-and-range-2.png +0 -0
  222. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-range-1.png +0 -0
  223. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-range-2.png +0 -0
  224. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-endAngle-in-radians-1.png +0 -0
  225. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-endAngle-in-radians-2.png +0 -0
  226. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-1.png +0 -0
  227. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-2.png +0 -0
  228. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-padAngle-1.png +0 -0
  229. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-padAngle-2.png +0 -0
  230. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-startAngle-in-radians-1.png +0 -0
  231. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-startAngle-in-radians-2.png +0 -0
  232. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-snippets-should-render-text-inner--middle--outer-Text-children-1.png +0 -0
  233. package/dist/components/__screenshots__/Arc.svelte.test.ts/Arc-snippets-should-render-text-inner--middle--outer-Text-children-2.png +0 -0
  234. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-clear-brush-when-x-prop-changes-to--null--null--1.png +0 -0
  235. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-clear-brush-when-x-prop-changes-to--null--null--2.png +0 -0
  236. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-not-show-brush-when-x-prop-is-null-1.png +0 -0
  237. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-not-show-brush-when-x-prop-is-null-2.png +0 -0
  238. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-not-show-brush-when-x-prop-matches-full-domain-1.png +0 -0
  239. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-not-show-brush-when-x-prop-matches-full-domain-2.png +0 -0
  240. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-show-brush-when-x-prop-is-provided-with-a-sub-domain-1.png +0 -0
  241. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-show-brush-when-x-prop-is-provided-with-a-sub-domain-2.png +0 -0
  242. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-update-brush-width-when-x-prop-changes-1.png +0 -0
  243. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-external-sync--x-y-props--should-update-brush-width-when-x-prop-changes-2.png +0 -0
  244. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-clear-brush-when-reset-programmatically-1.png +0 -0
  245. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-clear-brush-when-reset-programmatically-2.png +0 -0
  246. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-compute-correct-pixel-width-for-brush-move---1.png +0 -0
  247. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-compute-correct-pixel-width-for-brush-move---2.png +0 -0
  248. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-move-only-y-when-x-is-not-specified-1.png +0 -0
  249. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-move-only-y-when-x-is-not-specified-2.png +0 -0
  250. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-select-full-domain-with-selectAll-1.png +0 -0
  251. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-select-full-domain-with-selectAll-2.png +0 -0
  252. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-show-brush-when-moved-programmatically-via-context-1.png +0 -0
  253. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-show-brush-when-moved-programmatically-via-context-2.png +0 -0
  254. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-update-width-when-brush-move---is-called-again-1.png +0 -0
  255. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-programmatic-control-should-update-width-when-brush-move---is-called-again-2.png +0 -0
  256. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-not-render-brush-UI-when-brush-is-disabled-1.png +0 -0
  257. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-not-render-brush-UI-when-brush-is-disabled-2.png +0 -0
  258. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-not-render-range-or-handles-initially-1.png +0 -0
  259. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-not-render-range-or-handles-initially-2.png +0 -0
  260. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-render-brush-context-when-brush-is-enabled-1.png +0 -0
  261. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-rendering-should-render-brush-context-when-brush-is-enabled-2.png +0 -0
  262. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-zoomOnBrush-with-onBrushEnd-should-pass-brush-domain-values-to-onBrushEnd-before-resetting-1.png +0 -0
  263. package/dist/components/__screenshots__/BrushContext.svelte.test.ts/BrushContext-zoomOnBrush-with-onBrushEnd-should-pass-brush-domain-values-to-onBrushEnd-before-resetting-2.png +0 -0
  264. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  265. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  266. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-render-one-circle-per-data-item-with-string-accessors-1.png +0 -0
  267. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-render-one-circle-per-data-item-with-string-accessors-2.png +0 -0
  268. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-render-with-function-accessors-1.png +0 -0
  269. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-render-with-function-accessors-2.png +0 -0
  270. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-resolve-data-driven-fill-through-cScale-1.png +0 -0
  271. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-resolve-data-driven-fill-through-cScale-2.png +0 -0
  272. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  273. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  274. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-pixel-mode-should-render-a-circle-with-pixel-values-1.png +0 -0
  275. package/dist/components/__screenshots__/Circle.svelte.test.ts/Circle-pixel-mode-should-render-a-circle-with-pixel-values-2.png +0 -0
  276. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  277. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  278. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-render-one-ellipse-per-data-item-with-string-accessors-1.png +0 -0
  279. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-render-one-ellipse-per-data-item-with-string-accessors-2.png +0 -0
  280. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-resolve-data-driven-fill-through-cScale-1.png +0 -0
  281. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-resolve-data-driven-fill-through-cScale-2.png +0 -0
  282. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  283. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  284. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-pixel-mode-should-render-an-ellipse-with-pixel-values-1.png +0 -0
  285. package/dist/components/__screenshots__/Ellipse.svelte.test.ts/Ellipse-pixel-mode-should-render-an-ellipse-with-pixel-values-2.png +0 -0
  286. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-apply-circular-clipping-in-data-mode-1.png +0 -0
  287. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-apply-circular-clipping-in-data-mode-2.png +0 -0
  288. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-pass-literal-URL-through-unchanged-in-data-mode-1.png +0 -0
  289. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-pass-literal-URL-through-unchanged-in-data-mode-2.png +0 -0
  290. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-render-one-image-per-data-item-with-string-accessors-1.png +0 -0
  291. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-render-one-image-per-data-item-with-string-accessors-2.png +0 -0
  292. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-render-with-function-accessors-1.png +0 -0
  293. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-render-with-function-accessors-2.png +0 -0
  294. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-resolve-data-driven-href-from-data-property-1.png +0 -0
  295. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-resolve-data-driven-href-from-data-property-2.png +0 -0
  296. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  297. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  298. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-circular-clipping-when-r-is-set-1.png +0 -0
  299. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-circular-clipping-when-r-is-set-2.png +0 -0
  300. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-preserveAspectRatio-1.png +0 -0
  301. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-preserveAspectRatio-2.png +0 -0
  302. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-rotation-1.png +0 -0
  303. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-apply-rotation-2.png +0 -0
  304. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-default-width-and-height-to-16-1.png +0 -0
  305. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-default-width-and-height-to-16-2.png +0 -0
  306. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-render-an-image-with-pixel-values-1.png +0 -0
  307. package/dist/components/__screenshots__/Image.svelte.test.ts/Image-pixel-mode-should-render-an-image-with-pixel-values-2.png +0 -0
  308. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  309. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  310. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-render-one-line-per-data-item-with-string-accessors-1.png +0 -0
  311. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-render-one-line-per-data-item-with-string-accessors-2.png +0 -0
  312. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-resolve-data-driven-stroke-through-cScale-1.png +0 -0
  313. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-resolve-data-driven-stroke-through-cScale-2.png +0 -0
  314. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  315. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  316. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-pixel-mode-should-render-a-line-with-pixel-values-1.png +0 -0
  317. package/dist/components/__screenshots__/Line.svelte.test.ts/Line-pixel-mode-should-render-a-line-with-pixel-values-2.png +0 -0
  318. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  319. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  320. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-render-one-polygon-per-data-item-with-string-accessors-1.png +0 -0
  321. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-render-one-polygon-per-data-item-with-string-accessors-2.png +0 -0
  322. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-resolve-data-driven-fill-through-cScale-1.png +0 -0
  323. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-resolve-data-driven-fill-through-cScale-2.png +0 -0
  324. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  325. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  326. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-pixel-mode-should-render-a-polygon-with-pixel-values-1.png +0 -0
  327. package/dist/components/__screenshots__/Polygon.svelte.test.ts/Polygon-pixel-mode-should-render-a-polygon-with-pixel-values-2.png +0 -0
  328. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---colors-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  329. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---colors-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  330. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---colors-should-resolve-data-driven-fill-through-cScale-1.png +0 -0
  331. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---colors-should-resolve-data-driven-fill-through-cScale-2.png +0 -0
  332. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-render-rects-from-edge-props-1.png +0 -0
  333. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-render-rects-from-edge-props-2.png +0 -0
  334. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-render-rects-with-insets-1.png +0 -0
  335. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-render-rects-with-insets-2.png +0 -0
  336. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  337. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---edge-based-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  338. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---standard-should-render-one-rect-per-data-item-with-string-accessors-1.png +0 -0
  339. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-data-mode---standard-should-render-one-rect-per-data-item-with-string-accessors-2.png +0 -0
  340. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-pixel-mode-should-render-a-rect-with-pixel-values-1.png +0 -0
  341. package/dist/components/__screenshots__/Rect.svelte.test.ts/Rect-pixel-mode-should-render-a-rect-with-pixel-values-2.png +0 -0
  342. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-1.png +0 -0
  343. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-pass-literal-CSS-colors-through-unchanged-in-data-mode-2.png +0 -0
  344. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-render-one-text-per-data-item-with-string-accessors-1.png +0 -0
  345. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-render-one-text-per-data-item-with-string-accessors-2.png +0 -0
  346. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-resolve-data-driven-fill-through-cScale-1.png +0 -0
  347. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-resolve-data-driven-fill-through-cScale-2.png +0 -0
  348. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-resolve-value-as-data-property-name-in-data-mode-1.png +0 -0
  349. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-resolve-value-as-data-property-name-in-data-mode-2.png +0 -0
  350. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-use-explicit-data-prop-over-chart-context-data-1.png +0 -0
  351. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-data-mode-should-use-explicit-data-prop-over-chart-context-data-2.png +0 -0
  352. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-pixel-mode-should-preserve-CSS-like-string-values-as-SVG-values-1.png +0 -0
  353. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-pixel-mode-should-preserve-CSS-like-string-values-as-SVG-values-2.png +0 -0
  354. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-pixel-mode-should-render-text-with-pixel-values-1.png +0 -0
  355. package/dist/components/__screenshots__/Text.svelte.test.ts/Text-pixel-mode-should-render-text-with-pixel-values-2.png +0 -0
  356. package/dist/components/charts/ArcChart.svelte +148 -221
  357. package/dist/components/charts/ArcChart.svelte.d.ts +44 -18
  358. package/dist/components/charts/ArcChart.svelte.test.d.ts +1 -0
  359. package/dist/components/charts/ArcChart.svelte.test.js +24 -0
  360. package/dist/components/charts/AreaChart.svelte +86 -529
  361. package/dist/components/charts/AreaChart.svelte.d.ts +36 -37
  362. package/dist/components/charts/AreaChart.svelte.test.d.ts +1 -0
  363. package/dist/components/charts/AreaChart.svelte.test.js +154 -0
  364. package/dist/components/charts/BarChart.svelte +128 -507
  365. package/dist/components/charts/BarChart.svelte.d.ts +39 -32
  366. package/dist/components/charts/BarChart.svelte.test.d.ts +1 -0
  367. package/dist/components/charts/BarChart.svelte.test.js +449 -0
  368. package/dist/components/charts/BarChartFixedWidthTest.svelte +47 -0
  369. package/dist/components/charts/BarChartFixedWidthTest.svelte.d.ts +11 -0
  370. package/dist/components/charts/ChartAnnotations.svelte +8 -7
  371. package/dist/components/charts/ChartAnnotations.svelte.d.ts +1 -3
  372. package/dist/components/charts/DefaultTooltip.svelte +98 -33
  373. package/dist/components/charts/DefaultTooltip.svelte.d.ts +2 -4
  374. package/dist/components/charts/DefaultTooltip.svelte.test.d.ts +1 -0
  375. package/dist/components/charts/DefaultTooltip.svelte.test.js +231 -0
  376. package/dist/components/charts/LineChart.svelte +94 -433
  377. package/dist/components/charts/LineChart.svelte.bench.d.ts +1 -0
  378. package/dist/components/charts/LineChart.svelte.bench.js +189 -0
  379. package/dist/components/charts/LineChart.svelte.d.ts +36 -31
  380. package/dist/components/charts/LineChart.svelte.test.d.ts +1 -0
  381. package/dist/components/charts/LineChart.svelte.test.js +45 -0
  382. package/dist/components/charts/PieChart.svelte +292 -362
  383. package/dist/components/charts/PieChart.svelte.d.ts +62 -33
  384. package/dist/components/charts/PieChart.svelte.test.d.ts +1 -0
  385. package/dist/components/charts/PieChart.svelte.test.js +36 -0
  386. package/dist/components/charts/ScatterChart.svelte +53 -376
  387. package/dist/components/charts/ScatterChart.svelte.d.ts +27 -23
  388. package/dist/components/charts/__fixtures__/ArcChartTooltip.svelte +39 -0
  389. package/dist/{docs/Blockquote.svelte.d.ts → components/charts/__fixtures__/ArcChartTooltip.svelte.d.ts} +4 -6
  390. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-1.png +0 -0
  391. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-2.png +0 -0
  392. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-with-separate-data-1.png +0 -0
  393. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-with-separate-data-2.png +0 -0
  394. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-with-separate-data-and-stack-layout-1.png +0 -0
  395. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-multiple-area-paths-for-each-series-with-separate-data-and-stack-layout-2.png +0 -0
  396. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-with-single-series-when-no-series-prop-provided-1.png +0 -0
  397. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-basic-should-render-with-single-series-when-no-series-prop-provided-2.png +0 -0
  398. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-series-layout-should-render-with-overlap-layout-1.png +0 -0
  399. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-series-layout-should-render-with-overlap-layout-2.png +0 -0
  400. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-series-layout-should-render-with-stack-layout-1.png +0 -0
  401. package/dist/components/charts/__screenshots__/AreaChart.svelte.test.ts/AreaChart-series-layout-should-render-with-stack-layout-2.png +0 -0
  402. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-horizontal-bars-1.png +0 -0
  403. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-horizontal-bars-2.png +0 -0
  404. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-vertical-bars-without-NaN-attributes-1.png +0 -0
  405. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-vertical-bars-without-NaN-attributes-2.png +0 -0
  406. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-with-default-series-when-no-series-prop-provided-1.png +0 -0
  407. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-basic-should-render-with-default-series-when-no-series-prop-provided-2.png +0 -0
  408. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-center-fixed-width-bars-within-their-band-1.png +0 -0
  409. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-center-fixed-width-bars-within-their-band-2.png +0 -0
  410. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-render-horizontal-bars-with-fixed-height-1.png +0 -0
  411. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-render-horizontal-bars-with-fixed-height-2.png +0 -0
  412. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-render-vertical-bars-with-fixed-width-1.png +0 -0
  413. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-fixed-width-height-should-render-vertical-bars-with-fixed-width-2.png +0 -0
  414. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-legend-series-toggle-adjusts-group-scale-should-adjust-grouped-bar-widths-when-series-are-toggled-via-legend-1.png +0 -0
  415. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-legend-series-toggle-adjusts-group-scale-should-adjust-grouped-bar-widths-when-series-are-toggled-via-legend-2.png +0 -0
  416. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-no-series-prop--transition-example-pattern--should-render-without-series-prop-and-not-produce-NaN-rect-attributes-1.png +0 -0
  417. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-no-series-prop--transition-example-pattern--should-render-without-series-prop-and-not-produce-NaN-rect-attributes-2.png +0 -0
  418. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-separate-data-per-series-should-render-overlapping-series-with-separate-data-arrays-1.png +0 -0
  419. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-separate-data-per-series-should-render-overlapping-series-with-separate-data-arrays-2.png +0 -0
  420. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-separate-data-per-series-should-render-stacked-series-with-separate-data-arrays-1.png +0 -0
  421. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-separate-data-per-series-should-render-stacked-series-with-separate-data-arrays-2.png +0 -0
  422. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-grouped-series-1.png +0 -0
  423. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-grouped-series-2.png +0 -0
  424. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-multiple-Bars-groups-for-each-series-1.png +0 -0
  425. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-multiple-Bars-groups-for-each-series-2.png +0 -0
  426. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stackDiverging-series-1.png +0 -0
  427. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stackDiverging-series-2.png +0 -0
  428. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stackExpand-series-1.png +0 -0
  429. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stackExpand-series-2.png +0 -0
  430. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stacked-series-1.png +0 -0
  431. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stacked-series-2.png +0 -0
  432. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stacked-series-horizontally-1.png +0 -0
  433. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-should-render-stacked-series-horizontally-2.png +0 -0
  434. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-stackDiverging-edge-rounding-should-round-both-tips-when-there-is-one-positive-and-one-negative-series-1.png +0 -0
  435. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-stackDiverging-edge-rounding-should-round-both-tips-when-there-is-one-positive-and-one-negative-series-2.png +0 -0
  436. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-stackDiverging-edge-rounding-should-round-the-tip-of-each-direction--not-inner-layers-1.png +0 -0
  437. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-stackDiverging-edge-rounding-should-round-the-tip-of-each-direction--not-inner-layers-2.png +0 -0
  438. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-tooltip-should-use-explicit-series-colors--not-color-scale-1.png +0 -0
  439. package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-series-tooltip-should-use-explicit-series-colors--not-color-scale-2.png +0 -0
  440. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-AreaChart--multi-series--quadtree-x-mode--should-fade-non-highlighted-tooltip-series-items-on-hover-1.png +0 -0
  441. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-AreaChart--multi-series--quadtree-x-mode--should-fade-non-highlighted-tooltip-series-items-on-hover-2.png +0 -0
  442. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-AreaChart--multi-series--quadtree-x-mode--should-show-header-and-all-series-items-1.png +0 -0
  443. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-AreaChart--multi-series--quadtree-x-mode--should-show-header-and-all-series-items-2.png +0 -0
  444. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-LineChart--multi-series--quadtree-x-mode--should-show-header-and-all-series-items-1.png +0 -0
  445. package/dist/components/charts/__screenshots__/DefaultTooltip.svelte.test.ts/DefaultTooltip-LineChart--multi-series--quadtree-x-mode--should-show-header-and-all-series-items-2.png +0 -0
  446. package/dist/components/charts/types.d.ts +6 -211
  447. package/dist/components/index.d.ts +45 -13
  448. package/dist/components/index.js +45 -14
  449. package/dist/components/layers/Canvas.svelte +502 -0
  450. package/dist/components/{layout → layers}/Canvas.svelte.d.ts +17 -37
  451. package/dist/components/{layout → layers}/Html.svelte +34 -16
  452. package/dist/components/{layout → layers}/Html.svelte.d.ts +7 -0
  453. package/dist/components/layers/Layer.svelte +85 -0
  454. package/dist/components/layers/Layer.svelte.d.ts +23 -0
  455. package/dist/components/{layout → layers}/Svg.svelte +38 -18
  456. package/dist/components/{layout → layers}/Svg.svelte.d.ts +7 -0
  457. package/dist/components/{layout → layers}/WebGL.svelte +27 -7
  458. package/dist/components/{layout → layers}/WebGL.svelte.d.ts +8 -5
  459. package/dist/components/tests/BrushTestHarness.svelte +27 -0
  460. package/dist/components/tests/BrushTestHarness.svelte.d.ts +8 -0
  461. package/dist/components/tests/TestHarness.svelte +87 -0
  462. package/dist/components/tests/TestHarness.svelte.d.ts +21 -0
  463. package/dist/components/tests/TransformTestHarness.svelte +27 -0
  464. package/dist/components/tests/TransformTestHarness.svelte.d.ts +8 -0
  465. package/dist/components/tooltip/Tooltip.svelte +97 -61
  466. package/dist/components/tooltip/Tooltip.svelte.d.ts +12 -14
  467. package/dist/components/tooltip/TooltipContext.svelte +321 -173
  468. package/dist/components/tooltip/TooltipContext.svelte.d.ts +23 -21
  469. package/dist/components/tooltip/TooltipHeader.svelte +32 -18
  470. package/dist/components/tooltip/TooltipHeader.svelte.d.ts +3 -3
  471. package/dist/components/tooltip/TooltipItem.svelte +57 -37
  472. package/dist/components/tooltip/TooltipItem.svelte.d.ts +3 -3
  473. package/dist/components/tooltip/TooltipList.svelte +12 -10
  474. package/dist/components/tooltip/TooltipSeparator.svelte +18 -10
  475. package/dist/components/tooltip/index.d.ts +1 -0
  476. package/dist/components/tooltip/index.js +1 -0
  477. package/dist/contexts/canvas.d.ts +34 -0
  478. package/dist/contexts/canvas.js +14 -0
  479. package/dist/contexts/chart.d.ts +6 -0
  480. package/dist/contexts/chart.js +48 -0
  481. package/dist/contexts/componentTree.test.d.ts +1 -0
  482. package/dist/contexts/componentTree.test.js +83 -0
  483. package/dist/contexts/geo.d.ts +4 -0
  484. package/dist/contexts/geo.js +11 -0
  485. package/dist/contexts/index.d.ts +5 -0
  486. package/dist/contexts/index.js +5 -0
  487. package/dist/contexts/layer.d.ts +3 -0
  488. package/dist/contexts/layer.js +8 -0
  489. package/dist/contexts/settings.d.ts +4 -0
  490. package/dist/contexts/settings.js +10 -0
  491. package/dist/contexts/transform.d.ts +96 -0
  492. package/dist/contexts/transform.js +10 -0
  493. package/dist/index.d.ts +1 -0
  494. package/dist/index.js +1 -0
  495. package/dist/server/ContextCapture.svelte +30 -0
  496. package/dist/server/ContextCapture.svelte.d.ts +8 -0
  497. package/dist/server/ServerChart.svelte +26 -0
  498. package/dist/server/ServerChart.svelte.d.ts +11 -0
  499. package/dist/server/TestBarChart.svelte +35 -0
  500. package/dist/server/TestBarChart.svelte.d.ts +14 -0
  501. package/dist/server/TestLineChart.svelte +35 -0
  502. package/dist/server/TestLineChart.svelte.d.ts +14 -0
  503. package/dist/server/captureStore.d.ts +8 -0
  504. package/dist/server/captureStore.js +18 -0
  505. package/dist/server/index.d.ts +137 -0
  506. package/dist/server/index.js +141 -0
  507. package/dist/server/renderChart.ssr.test.d.ts +1 -0
  508. package/dist/server/renderChart.ssr.test.js +205 -0
  509. package/dist/server/renderTree.d.ts +8 -0
  510. package/dist/server/renderTree.js +29 -0
  511. package/dist/states/__fixtures__/ComponentNodeLifecycleChild.svelte +13 -0
  512. package/dist/{docs/Json.svelte.d.ts → states/__fixtures__/ComponentNodeLifecycleChild.svelte.d.ts} +4 -8
  513. package/dist/states/__fixtures__/ComponentNodeLifecycleHarness.svelte +48 -0
  514. package/dist/states/__fixtures__/ComponentNodeLifecycleHarness.svelte.d.ts +8 -0
  515. package/dist/states/__fixtures__/ComponentNodeLifecycleParent.svelte +26 -0
  516. package/dist/states/__fixtures__/ComponentNodeLifecycleParent.svelte.d.ts +9 -0
  517. package/dist/states/__screenshots__/chart.component-node.svelte.test.ts/ChartState-registerComponent-cleans-up-child-nodes-and-mark-registrations-when-components-unmount-1.png +0 -0
  518. package/dist/states/__screenshots__/chart.component-node.svelte.test.ts/ChartState-registerComponent-cleans-up-child-nodes-and-mark-registrations-when-components-unmount-2.png +0 -0
  519. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-baseline-domain-multi-series-should-work-without-baseline--no-forced-0--1.png +0 -0
  520. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-baseline-domain-multi-series-should-work-without-baseline--no-forced-0--2.png +0 -0
  521. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-degenerate-domain-should-expand-degenerate-y-domain--5--5--to--5--6--1.png +0 -0
  522. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-degenerate-domain-should-expand-degenerate-y-domain--5--5--to--5--6--2.png +0 -0
  523. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-geo-projection-skips-markInfo-should-not-derive-x-y-accessors-from-marks-when-geo-projection-is-active-1.png +0 -0
  524. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-geo-projection-skips-markInfo-should-not-derive-x-y-accessors-from-marks-when-geo-projection-is-active-2.png +0 -0
  525. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-series-domain-update-on-visibility-toggle-should-update-y-domain-when-hiding-an-explicit-series-1.png +0 -0
  526. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-series-domain-update-on-visibility-toggle-should-update-y-domain-when-hiding-an-explicit-series-2.png +0 -0
  527. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-series-domain-update-on-visibility-toggle-should-update-y-domain-when-hiding-an-implicit-series-1.png +0 -0
  528. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-series-domain-update-on-visibility-toggle-should-update-y-domain-when-hiding-an-implicit-series-2.png +0 -0
  529. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-deduplicate-repeated-mark-x-keys-into-a-single-accessor-1.png +0 -0
  530. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-deduplicate-repeated-mark-x-keys-into-a-single-accessor-2.png +0 -0
  531. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-derive-correct-y-domain-across-two-marks-with-different-data-and-no-y-prop-1.png +0 -0
  532. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-derive-correct-y-domain-across-two-marks-with-different-data-and-no-y-prop-2.png +0 -0
  533. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-derive-x-accessor-from-marks-when-x-prop-is-absent-1.png +0 -0
  534. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-implicit-x-y-from-marks--no-x-y-on-Chart--should-derive-x-accessor-from-marks-when-x-prop-is-absent-2.png +0 -0
  535. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-aggregate-y-accessor-from-implicit-series-into-resolveAccessor-1.png +0 -0
  536. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-aggregate-y-accessor-from-implicit-series-into-resolveAccessor-2.png +0 -0
  537. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-calculate-correct-y-domain-from-two-marks-with-same-y-accessor-but-different-data-1.png +0 -0
  538. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-calculate-correct-y-domain-from-two-marks-with-same-y-accessor-but-different-data-2.png +0 -0
  539. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-deduplicate-implicit-series-with-the-same-key-1.png +0 -0
  540. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-deduplicate-implicit-series-with-the-same-key-2.png +0 -0
  541. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-marks-with-seriesKey-1.png +0 -0
  542. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-marks-with-seriesKey-2.png +0 -0
  543. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-marks-with-string-y-accessors-1.png +0 -0
  544. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-marks-with-string-y-accessors-2.png +0 -0
  545. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-x-accessor-for-vertical-charts--valueAxis-x--1.png +0 -0
  546. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-generate-implicit-series-from-x-accessor-for-vertical-charts--valueAxis-x--2.png +0 -0
  547. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-data-from-two-marks-with-same-y-accessor-but-different-data-arrays-1.png +0 -0
  548. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-data-from-two-marks-with-same-y-accessor-but-different-data-arrays-2.png +0 -0
  549. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-implicit-series-label-when-provided-1.png +0 -0
  550. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-implicit-series-label-when-provided-2.png +0 -0
  551. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-mark-data-in-flatData-for-domain-calculation-1.png +0 -0
  552. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-mark-data-in-flatData-for-domain-calculation-2.png +0 -0
  553. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-per-mark-data-in-domain-via-implicit-series-1.png +0 -0
  554. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-include-per-mark-data-in-domain-via-implicit-series-2.png +0 -0
  555. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-not-double-include-data-when-mark-data-matches-series-data-reference-1.png +0 -0
  556. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-not-double-include-data-when-mark-data-matches-series-data-reference-2.png +0 -0
  557. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-register-and-unregister-marks-1.png +0 -0
  558. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-register-and-unregister-marks-2.png +0 -0
  559. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-revert-flatData-after-all-marks-unregister-1.png +0 -0
  560. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-revert-flatData-after-all-marks-unregister-2.png +0 -0
  561. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-skip-marks-without-a-derivable-key-for-implicit-series-1.png +0 -0
  562. package/dist/states/__screenshots__/chart.svelte.test.ts/ChartState-mark-registration-should-skip-marks-without-a-derivable-key-for-implicit-series-2.png +0 -0
  563. package/dist/states/__screenshots__/series.svelte.test.ts/SeriesState-visibility-should-allow-toggling-after-initial-selected--false-1.png +0 -0
  564. package/dist/states/__screenshots__/series.svelte.test.ts/SeriesState-visibility-should-allow-toggling-after-initial-selected--false-2.png +0 -0
  565. package/dist/states/__screenshots__/series.svelte.test.ts/SeriesState-visibility-should-respect-selected--false-on-series-items-1.png +0 -0
  566. package/dist/states/__screenshots__/series.svelte.test.ts/SeriesState-visibility-should-respect-selected--false-on-series-items-2.png +0 -0
  567. package/dist/states/brush.svelte.d.ts +99 -0
  568. package/dist/states/brush.svelte.js +246 -0
  569. package/dist/states/brush.svelte.test.d.ts +1 -0
  570. package/dist/states/brush.svelte.test.js +417 -0
  571. package/dist/states/chart.component-node.svelte.test.d.ts +1 -0
  572. package/dist/states/chart.component-node.svelte.test.js +28 -0
  573. package/dist/states/chart.svelte.d.ts +264 -0
  574. package/dist/states/chart.svelte.js +1066 -0
  575. package/dist/states/chart.svelte.test.d.ts +1 -0
  576. package/dist/states/chart.svelte.test.js +1403 -0
  577. package/dist/states/geo.svelte.d.ts +49 -0
  578. package/dist/states/geo.svelte.js +100 -0
  579. package/dist/states/series.svelte.d.ts +83 -0
  580. package/dist/states/series.svelte.js +248 -0
  581. package/dist/states/series.svelte.test.d.ts +1 -0
  582. package/dist/states/series.svelte.test.js +333 -0
  583. package/dist/states/settings.svelte.d.ts +12 -0
  584. package/dist/states/settings.svelte.js +10 -0
  585. package/dist/states/tooltip.svelte.d.ts +22 -0
  586. package/dist/states/tooltip.svelte.js +16 -0
  587. package/dist/states/transform.svelte.d.ts +175 -0
  588. package/dist/states/transform.svelte.js +408 -0
  589. package/dist/styles/daisyui-5.css +6 -0
  590. package/dist/styles/shadcn-svelte.css +11 -0
  591. package/dist/styles/skeleton-3.css +15 -0
  592. package/dist/styles/skeleton-4.css +15 -0
  593. package/dist/utils/__screenshots__/canvas.svelte.test.ts/clearCanvasContext-clears-with-zero-padding--no-offset--1.png +0 -0
  594. package/dist/utils/__screenshots__/canvas.svelte.test.ts/clearCanvasContext-clears-with-zero-padding--no-offset--2.png +0 -0
  595. package/dist/utils/__screenshots__/canvas.svelte.test.ts/renderPathData-inline-style-overrides-styles-object-1.png +0 -0
  596. package/dist/utils/__screenshots__/canvas.svelte.test.ts/renderPathData-inline-style-overrides-styles-object-2.png +0 -0
  597. package/dist/utils/arcText.svelte.d.ts +1 -1
  598. package/dist/utils/arcText.svelte.js +4 -4
  599. package/dist/utils/array.d.ts +11 -0
  600. package/dist/utils/array.js +23 -0
  601. package/dist/utils/array.test.d.ts +1 -0
  602. package/dist/utils/array.test.js +200 -0
  603. package/dist/utils/attributes.d.ts +3 -13
  604. package/dist/utils/attributes.js +4 -18
  605. package/dist/utils/canvas.d.ts +83 -0
  606. package/dist/utils/canvas.js +228 -55
  607. package/dist/utils/canvas.svelte.test.d.ts +1 -0
  608. package/dist/utils/canvas.svelte.test.js +703 -0
  609. package/dist/utils/chart.js +8 -0
  610. package/dist/utils/color.js +11 -8
  611. package/dist/utils/common.d.ts +19 -3
  612. package/dist/utils/common.js +29 -10
  613. package/dist/utils/common.test.js +35 -1
  614. package/dist/utils/dataProp.d.ts +112 -0
  615. package/dist/utils/dataProp.js +125 -0
  616. package/dist/utils/dataProp.test.d.ts +1 -0
  617. package/dist/utils/dataProp.test.js +128 -0
  618. package/dist/utils/download.d.ts +98 -0
  619. package/dist/utils/download.js +250 -0
  620. package/dist/utils/genData.d.ts +22 -8
  621. package/dist/utils/genData.js +34 -14
  622. package/dist/utils/graph/dagre.js +5 -7
  623. package/dist/utils/graph/sankey.js +9 -7
  624. package/dist/utils/index.d.ts +8 -0
  625. package/dist/utils/index.js +8 -0
  626. package/dist/utils/math.d.ts +17 -0
  627. package/dist/utils/math.js +17 -0
  628. package/dist/utils/motion.svelte.d.ts +26 -2
  629. package/dist/utils/motion.svelte.js +99 -2
  630. package/dist/utils/motion.test.js +49 -1
  631. package/dist/utils/path.d.ts +54 -1
  632. package/dist/utils/path.js +147 -17
  633. package/dist/utils/rasterBounds.d.ts +18 -0
  634. package/dist/utils/rasterBounds.js +98 -0
  635. package/dist/utils/rasterBounds.test.d.ts +1 -0
  636. package/dist/utils/rasterBounds.test.js +63 -0
  637. package/dist/utils/rasterInterpolate.d.ts +11 -0
  638. package/dist/utils/rasterInterpolate.js +103 -0
  639. package/dist/utils/rect.svelte.d.ts +11 -4
  640. package/dist/utils/rect.svelte.js +87 -7
  641. package/dist/utils/scales.svelte.d.ts +10 -4
  642. package/dist/utils/scales.svelte.js +60 -13
  643. package/dist/utils/scales.svelte.test.d.ts +1 -0
  644. package/dist/utils/scales.svelte.test.js +67 -0
  645. package/dist/utils/shape.d.ts +43 -0
  646. package/dist/utils/shape.js +59 -0
  647. package/dist/utils/stack.js +1 -1
  648. package/dist/utils/stats.d.ts +33 -0
  649. package/dist/utils/stats.js +79 -0
  650. package/dist/utils/string.d.ts +51 -0
  651. package/dist/utils/string.js +4 -2
  652. package/dist/utils/ticks.d.ts +15 -4
  653. package/dist/utils/ticks.js +147 -162
  654. package/dist/utils/ticks.test.js +26 -26
  655. package/dist/utils/trail.d.ts +36 -0
  656. package/dist/utils/trail.js +341 -0
  657. package/dist/utils/treemap.d.ts +1 -1
  658. package/dist/utils/types.d.ts +28 -2
  659. package/package.json +54 -57
  660. package/README.md +0 -41
  661. package/dist/components/GeoContext.svelte +0 -176
  662. package/dist/components/GeoContext.svelte.d.ts +0 -52
  663. package/dist/components/TransformControls.svelte +0 -179
  664. package/dist/components/TransformControls.svelte.d.ts +0 -28
  665. package/dist/components/charts/utils.svelte.d.ts +0 -30
  666. package/dist/components/charts/utils.svelte.js +0 -55
  667. package/dist/components/layout/Canvas.svelte +0 -505
  668. package/dist/components/layout/Layer.svelte +0 -39
  669. package/dist/components/layout/Layer.svelte.d.ts +0 -17
  670. package/dist/components/tooltip/tooltipMetaContext.d.ts +0 -79
  671. package/dist/components/tooltip/tooltipMetaContext.js +0 -139
  672. package/dist/docs/Blockquote.svelte +0 -15
  673. package/dist/docs/Code.svelte +0 -38
  674. package/dist/docs/Code.svelte.d.ts +0 -29
  675. package/dist/docs/ConnectorSweepMenuField.svelte +0 -17
  676. package/dist/docs/ConnectorSweepMenuField.svelte.d.ts +0 -7
  677. package/dist/docs/ConnectorTypeMenuField.svelte +0 -17
  678. package/dist/docs/ConnectorTypeMenuField.svelte.d.ts +0 -7
  679. package/dist/docs/CurveMenuField.svelte +0 -44
  680. package/dist/docs/CurveMenuField.svelte.d.ts +0 -9
  681. package/dist/docs/GeoDebug.svelte +0 -60
  682. package/dist/docs/GeoDebug.svelte.d.ts +0 -4
  683. package/dist/docs/Header1.svelte +0 -14
  684. package/dist/docs/Header1.svelte.d.ts +0 -29
  685. package/dist/docs/Json.svelte +0 -28
  686. package/dist/docs/Layout.svelte +0 -18
  687. package/dist/docs/Layout.svelte.d.ts +0 -23
  688. package/dist/docs/Link.svelte +0 -5
  689. package/dist/docs/Link.svelte.d.ts +0 -39
  690. package/dist/docs/PathDataMenuField.svelte +0 -78
  691. package/dist/docs/PathDataMenuField.svelte.d.ts +0 -9
  692. package/dist/docs/Preview.svelte +0 -105
  693. package/dist/docs/Preview.svelte.d.ts +0 -14
  694. package/dist/docs/TilesetField.svelte +0 -135
  695. package/dist/docs/TilesetField.svelte.d.ts +0 -23
  696. package/dist/docs/TransformDebug.svelte +0 -22
  697. package/dist/docs/TransformDebug.svelte.d.ts +0 -20
  698. package/dist/docs/ViewSourceButton.svelte +0 -50
  699. package/dist/docs/ViewSourceButton.svelte.d.ts +0 -25
  700. package/dist/utils/graph/dagre.d.ts +0 -34
  701. package/dist/utils/object.js +0 -2
  702. /package/dist/{utils → contexts}/legendPayload.d.ts +0 -0
  703. /package/dist/{utils → contexts}/legendPayload.js +0 -0
@@ -0,0 +1,1066 @@
1
+ import { untrack } from 'svelte';
2
+ import { scaleBand, scaleOrdinal, scaleSqrt, scaleTime } from 'd3-scale';
3
+ import { extent, max, min } from 'd3-array';
4
+ import { unique } from '@layerstack/utils';
5
+ import { Context, useDebounce } from 'runed';
6
+ import { getCanvasContext } from '../contexts/canvas.js';
7
+ import { autoScale, createScale, getRange, isScaleBand, isScaleTime, makeAccessor, } from '../utils/scales.svelte.js';
8
+ import { accessor, chartDataArray, defaultChartPadding } from '../utils/common.js';
9
+ import { filterObject } from '../utils/filterObject.js';
10
+ import { calcDomain, calcScaleExtents, createGetter, createChartScale } from '../utils/chart.js';
11
+ import { printDebug } from '../utils/debug.js';
12
+ import { GeoState } from './geo.svelte.js';
13
+ import { SeriesState } from './series.svelte.js';
14
+ import { createControlledMotion, parseMotionProp } from '../utils/motion.svelte.js';
15
+ const defaultPadding = { top: 0, right: 0, bottom: 0, left: 0 };
16
+ /** Stable empty array to avoid creating new [] references on each reactive update */
17
+ const EMPTY_SERIES = [];
18
+ /** Svelte context key for tracking the nearest parent ComponentNode. */
19
+ const _ParentNodeContext = new Context('ComponentTreeParent');
20
+ export class ChartState {
21
+ // Props getter function - set in constructor
22
+ _propsGetter;
23
+ // Props - accessed via getter function for fine-grained reactivity
24
+ props = $derived(this._propsGetter());
25
+ // State / contexts
26
+ geoState;
27
+ transformState = $state(null);
28
+ tooltipState = $state(null);
29
+ brushState = $state(null);
30
+ // TODO: handle TComponent
31
+ seriesState;
32
+ // Container dimensions
33
+ _containerWidth = $state(100);
34
+ _containerHeight = $state(100);
35
+ // Mount state
36
+ isMounted = $state(false);
37
+ // Mark registration — marks register stable MarkInfo snapshots on mount for
38
+ // domain/series calculation. Snapshots are updated via $effect (not $derived)
39
+ // in registerComponent, so reads here never create circular derived refs.
40
+ // Composite marks set insideCompositeMark context so child marks skip registration.
41
+ //
42
+ // Use a plain array + reactive version counter instead of $state<array> so that
43
+ // registerMark() never reads $state during execution. If it did (e.g. spreading
44
+ // a $state array), calling registerMark() from a $effect would subscribe that
45
+ // effect to _markInfos changes, then the effect's own write would trigger it to
46
+ // re-run → infinite loop.
47
+ _markInfosRaw = [];
48
+ _markInfosVersion = $state(0);
49
+ _nextMarkId = 0;
50
+ /** Reactive accessor — reads _markInfosVersion to create a reactive dependency,
51
+ * returns the plain array so items are never wrapped in Svelte proxies.
52
+ *
53
+ * When a geo projection is active, strips x/y/data from mark info — those
54
+ * values are geographic coordinates handled by the projection, not xScale/yScale.
55
+ * seriesKey/color/label are preserved so marks can still contribute to legends. */
56
+ get _markInfos() {
57
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
58
+ this._markInfosVersion;
59
+ if (this.geoState.props.projection) {
60
+ return this._markInfosRaw.map(({ _id, info }) => ({
61
+ _id,
62
+ info: {
63
+ seriesKey: info.seriesKey,
64
+ color: info.color,
65
+ label: info.label,
66
+ },
67
+ }));
68
+ }
69
+ return this._markInfosRaw;
70
+ }
71
+ /**
72
+ * Register a mark with the chart. The MarkInfo snapshot is stored directly
73
+ * (not inside $derived) so chart deriveds can read _markInfos without creating
74
+ * circular references. Returns a cleanup function to call on unmount.
75
+ *
76
+ * For use in tests or synchronous contexts. In components, use `registerComponent` with `markInfo`.
77
+ */
78
+ registerMark(info) {
79
+ const id = ++this._nextMarkId;
80
+ this._markInfosRaw.push({ _id: id, info });
81
+ this._markInfosVersion++;
82
+ return () => {
83
+ const idx = this._markInfosRaw.findIndex((r) => r._id === id);
84
+ if (idx !== -1)
85
+ this._markInfosRaw.splice(idx, 1);
86
+ this._markInfosVersion++;
87
+ };
88
+ }
89
+ /**
90
+ * Register a component tree node. Call at the top level of a component's <script> block.
91
+ * Sets self as context for children, handles canvas deps/cleanup, and mark registration.
92
+ */
93
+ registerComponent(options) {
94
+ const { name, kind, canvasRender, markInfo } = options;
95
+ const parent = _ParentNodeContext.getOr(null);
96
+ // Walk ancestors to check for composite-mark
97
+ let insideCompositeMark = false;
98
+ let ancestor = parent;
99
+ while (ancestor) {
100
+ if (ancestor.kind === 'composite-mark') {
101
+ insideCompositeMark = true;
102
+ break;
103
+ }
104
+ ancestor = ancestor.parent;
105
+ }
106
+ const node = {
107
+ id: Symbol(name),
108
+ kind,
109
+ name,
110
+ parent,
111
+ children: [],
112
+ canvasRender: canvasRender,
113
+ insideCompositeMark,
114
+ };
115
+ if (parent)
116
+ parent.children.push(node);
117
+ _ParentNodeContext.set(node);
118
+ const canvasCtx = canvasRender ? getCanvasContext() : null;
119
+ if (canvasRender) {
120
+ if (canvasRender.deps) {
121
+ $effect.pre(() => {
122
+ canvasRender.deps?.();
123
+ canvasCtx?.invalidate();
124
+ });
125
+ }
126
+ canvasCtx.invalidate();
127
+ }
128
+ $effect.pre(() => {
129
+ return () => {
130
+ this._removeComponentNode(node);
131
+ canvasCtx?.invalidate();
132
+ };
133
+ });
134
+ if (markInfo && !insideCompositeMark) {
135
+ $effect(() => {
136
+ const info = markInfo();
137
+ // Skip registration for empty mark info (e.g. pixel-mode marks)
138
+ // to avoid unnecessary array push/splice and version bumps
139
+ if (!info.x && !info.y && !info.data && !info.color && !info.seriesKey && !info.label)
140
+ return;
141
+ return untrack(() => this.registerMark(info));
142
+ });
143
+ }
144
+ return node;
145
+ }
146
+ _removeComponentNode(node) {
147
+ if (node.parent) {
148
+ const idx = node.parent.children.indexOf(node);
149
+ if (idx >= 0)
150
+ node.parent.children.splice(idx, 1);
151
+ }
152
+ }
153
+ // Container ref (set from Chart.svelte)
154
+ containerRef = $state();
155
+ // Domain motion (animates base domain changes for smooth scale transitions)
156
+ _xDomainMotion = null;
157
+ _yDomainMotion = null;
158
+ _xDomainIsDate = false;
159
+ _yDomainIsDate = false;
160
+ // Meta data - reactive to props.meta changes
161
+ meta = $derived(this.props.meta ?? {});
162
+ constructor(propsGetter) {
163
+ this._propsGetter = propsGetter;
164
+ // Create GeoState instance — pass a dimensions getter so projection
165
+ // is available during SSR (where $effect doesn't run)
166
+ this.geoState = new GeoState(() => this.props.geo ?? {}, () => ({ width: this.width, height: this.height }));
167
+ // Create SeriesState internally from series/seriesLayout props.
168
+ // When no explicit series are provided, derive implicit series from mark registrations.
169
+ this.seriesState = new SeriesState(() => {
170
+ const explicit = this.props.series;
171
+ if (explicit && explicit.length > 0)
172
+ return explicit;
173
+ // Generate implicit series from registered marks.
174
+ // Use the value axis accessor (y for horizontal charts, x for vertical).
175
+ const valueAxis = this.valueAxis;
176
+ const chartValueProp = valueAxis === 'y' ? this.props.y : this.props.x;
177
+ const implicitSeries = [];
178
+ for (const { info } of this._markInfos) {
179
+ const valueAccessor = valueAxis === 'y' ? info.y : info.x;
180
+ const key = info.seriesKey ??
181
+ (typeof valueAccessor === 'string' ? valueAccessor : undefined);
182
+ if (!key)
183
+ continue;
184
+ // Skip if the mark just reuses the chart's own axis accessor and has no
185
+ // separate data — it's not defining a new series, just using the chart's axis.
186
+ // Marks with their own data arrays are kept (multi-dataset scenario).
187
+ if (key === chartValueProp && !info.data)
188
+ continue;
189
+ if (implicitSeries.some((s) => s.key === key))
190
+ continue;
191
+ implicitSeries.push({
192
+ key,
193
+ color: info.color,
194
+ label: info.label,
195
+ value: valueAccessor,
196
+ data: info.data,
197
+ });
198
+ }
199
+ return implicitSeries.length > 0 ? implicitSeries : EMPTY_SERIES;
200
+ }, () => {
201
+ const layout = this.props.seriesLayout;
202
+ if (!layout || !layout.startsWith('stack'))
203
+ return null;
204
+ const series = this.props.series ?? [];
205
+ const keyBy = this.valueAxis === 'y' ? this.props.x : this.props.y;
206
+ const hasSeparateData = series.some((s) => s.data != null);
207
+ return {
208
+ layout: layout,
209
+ data: hasSeparateData ? undefined : chartDataArray(this.props.data),
210
+ keyBy: keyBy,
211
+ valueAccessor: this.valueAxis === 'y' ? this.props.y : this.props.x,
212
+ };
213
+ });
214
+ const logDebug = useDebounce(printDebug, 200);
215
+ // Set mounted state once component initializes
216
+ $effect(() => {
217
+ this.isMounted = true;
218
+ });
219
+ // Sync chart dimensions to geo state
220
+ $effect(() => {
221
+ this.geoState.chartWidth = this.width;
222
+ this.geoState.chartHeight = this.height;
223
+ });
224
+ // Sync transform state to geo state
225
+ $effect(() => {
226
+ if (this.transformState) {
227
+ this.geoState.transformState = this.transformState;
228
+ }
229
+ });
230
+ // Call onResize callback when dimensions change
231
+ $effect(() => {
232
+ if (!this.isMounted)
233
+ return;
234
+ this.props.onResize?.({
235
+ width: this.width,
236
+ height: this.height,
237
+ containerWidth: this.containerWidth,
238
+ containerHeight: this.containerHeight,
239
+ });
240
+ });
241
+ // Debug logging when mounted
242
+ $effect(() => {
243
+ if (!this.isMounted ||
244
+ !this.props.debug ||
245
+ (!this.props.ssr && typeof window === 'undefined')) {
246
+ return;
247
+ }
248
+ if (this.box) {
249
+ logDebug({
250
+ data: this.data,
251
+ flatData: this.flatData,
252
+ boundingBox: this.box,
253
+ activeGetters: this.activeGetters,
254
+ x: this.props.x,
255
+ y: this.props.y,
256
+ z: this.props.z,
257
+ r: this.props.r,
258
+ xScale: this.xScale,
259
+ yScale: this.yScale,
260
+ zScale: this.zScale,
261
+ rScale: this.rScale,
262
+ });
263
+ }
264
+ });
265
+ // Set up domain motion if motion prop is configured
266
+ const motionProp = propsGetter().motion;
267
+ if (motionProp) {
268
+ const resolved = parseMotionProp(motionProp);
269
+ this._xDomainMotion = createControlledMotion([], resolved);
270
+ this._yDomainMotion = createControlledMotion([], resolved);
271
+ let xInit = false;
272
+ let yInit = false;
273
+ $effect(() => {
274
+ const domain = this._rawXDomain;
275
+ if (!domain || domain.length < 2)
276
+ return;
277
+ const isDate = domain[0] instanceof Date;
278
+ this._xDomainIsDate = isDate;
279
+ const numeric = isDate ? domain.map((d) => d.getTime()) : [...domain];
280
+ // Skip animation on first value to avoid mount transition
281
+ if (!xInit) {
282
+ xInit = true;
283
+ const instant = this._xDomainMotion.type === 'spring'
284
+ ? { instant: true }
285
+ : this._xDomainMotion.type === 'tween'
286
+ ? { duration: 0 }
287
+ : undefined;
288
+ this._xDomainMotion.set(numeric, instant);
289
+ }
290
+ else {
291
+ this._xDomainMotion.set(numeric);
292
+ }
293
+ });
294
+ $effect(() => {
295
+ const domain = this._rawYDomain;
296
+ if (!domain || domain.length < 2)
297
+ return;
298
+ const isDate = domain[0] instanceof Date;
299
+ this._yDomainIsDate = isDate;
300
+ const numeric = isDate ? domain.map((d) => d.getTime()) : [...domain];
301
+ if (!yInit) {
302
+ yInit = true;
303
+ const instant = this._yDomainMotion.type === 'spring'
304
+ ? { instant: true }
305
+ : this._yDomainMotion.type === 'tween'
306
+ ? { duration: 0 }
307
+ : undefined;
308
+ this._yDomainMotion.set(numeric, instant);
309
+ }
310
+ else {
311
+ this._yDomainMotion.set(numeric);
312
+ }
313
+ });
314
+ }
315
+ }
316
+ // Use $derived fields instead of getters for caching
317
+ containerWidth = $derived(this.props.width ?? this._containerWidth);
318
+ containerHeight = $derived(this.props.height ?? this._containerHeight);
319
+ // If seriesState has series-specific data, use visible series data (for domain calculations).
320
+ // This allows simplified charts to pass raw data and let Chart derive chartData from seriesState.
321
+ // Using visibleSeriesData ensures domain recalculates when series are shown/hidden via legend.
322
+ data = $derived.by(() => {
323
+ if (this.seriesState?.visibleSeriesData?.length) {
324
+ return this.seriesState.visibleSeriesData;
325
+ }
326
+ return this.props.data ?? [];
327
+ });
328
+ flatData = $derived.by(() => {
329
+ const base = (this.props.flatData ?? this.data);
330
+ // Include data from marks that have their own data but aren't already in a series.
331
+ // Include data from marks that have their own data but aren't already in a series
332
+ const extra = [];
333
+ for (const { info } of this._markInfos) {
334
+ if (!info.data)
335
+ continue;
336
+ // If this mark's exact data array is already included via a series, skip it.
337
+ // Use reference equality (===) so marks sharing the same accessor key but
338
+ // different data arrays (e.g. two Circle marks with separate datasets) are
339
+ // both included in domain calculation.
340
+ const key = info.seriesKey ?? (typeof info.y === 'string' ? info.y : undefined);
341
+ if (key && this.seriesState?.series.some((s) => s.key === key && s.data === info.data))
342
+ continue;
343
+ extra.push(...info.data);
344
+ }
345
+ if (extra.length === 0)
346
+ return base;
347
+ return [...base, ...extra];
348
+ });
349
+ // Cached scale props - use this.flatData which derives from seriesState.visibleSeriesData when available
350
+ _xScaleProp = $derived.by(() => {
351
+ if (this.props.xScale)
352
+ return this.props.xScale;
353
+ // When xInterval is set, use scaleTime (takes precedence over bandPadding)
354
+ if (this.props.xInterval)
355
+ return scaleTime();
356
+ // When bandPadding is set and x is the category axis, use scaleBand with padding
357
+ if (this.props.bandPadding != null && this.valueAxis === 'y') {
358
+ return scaleBand().padding(this.props.bandPadding);
359
+ }
360
+ return autoScale(this.props.xDomain, this.flatData, this.x);
361
+ });
362
+ _yScaleProp = $derived.by(() => {
363
+ if (this.props.yScale)
364
+ return this.props.yScale;
365
+ // When yInterval is set, use scaleTime (takes precedence over bandPadding)
366
+ if (this.props.yInterval)
367
+ return scaleTime();
368
+ // When bandPadding is set and y is the category axis, use scaleBand with padding
369
+ if (this.props.bandPadding != null && this.valueAxis === 'x') {
370
+ return scaleBand().padding(this.props.bandPadding);
371
+ }
372
+ return autoScale(this.props.yDomain, this.flatData, this.y);
373
+ });
374
+ _zScaleProp = $derived.by(() => {
375
+ return this.props.zScale ?? autoScale(this.props.zDomain, this.flatData, this.props.z);
376
+ });
377
+ _rScaleProp = $derived(this.props.rScale ?? scaleSqrt());
378
+ xRangeProp = $derived(this.props.xRange ? this.props.xRange : this.props.radial ? [0, 2 * Math.PI] : undefined);
379
+ yRangeProp = $derived(this.props.yRange ??
380
+ (this.props.radial ? ({ height }) => [0, height / 2] : undefined));
381
+ /** Transform-aware range for band scales in domain mode (D3 range-rescaling pattern) */
382
+ _xScaleRange = $derived.by(() => {
383
+ if (this.transformState?.mode === 'domain' &&
384
+ (this.transformState.axis === 'x' || this.transformState.axis === 'both') &&
385
+ isScaleBand(this._xScaleProp) &&
386
+ this.width > 0) {
387
+ const { scale, translate } = this.transformState;
388
+ return [translate.x, translate.x + this.width * scale];
389
+ }
390
+ return this.xRangeProp;
391
+ });
392
+ _yScaleRange = $derived.by(() => {
393
+ if (this.transformState?.mode === 'domain' &&
394
+ (this.transformState.axis === 'y' || this.transformState.axis === 'both') &&
395
+ isScaleBand(this._yScaleProp) &&
396
+ this.height > 0) {
397
+ const { scale, translate } = this.transformState;
398
+ return [translate.y, translate.y + this.height * scale];
399
+ }
400
+ return this.yRangeProp;
401
+ });
402
+ yReverse = $derived(!isScaleBand(this._yScaleProp) && !isScaleTime(this._yScaleProp));
403
+ resolveAccessor(axis) {
404
+ const axisAccessor = axis === 'x' ? this.props.x : this.props.y;
405
+ if (axisAccessor) {
406
+ return makeAccessor(axisAccessor);
407
+ }
408
+ else if (this.valueAxis === axis && this.seriesState && !this.seriesState.isDefaultSeries) {
409
+ // Derive accessor from series (explicit or mark-implied) values/keys
410
+ return accessor(this.seriesState.series.map((s) => s.value ?? s.key));
411
+ }
412
+ // Derive position axis accessor from registered marks when not set on the Chart.
413
+ // This allows marks like <Circle cx="date" cy="value" /> to define the axes
414
+ // without requiring x/y on the Chart itself.
415
+ const markAxisKeys = [];
416
+ for (const { info } of this._markInfos) {
417
+ const markKey = axis === 'x' ? info.x : info.y;
418
+ if (typeof markKey === 'string' && !markAxisKeys.includes(markKey)) {
419
+ markAxisKeys.push(markKey);
420
+ }
421
+ }
422
+ if (markAxisKeys.length > 0) {
423
+ return accessor(markAxisKeys.length === 1 ? markAxisKeys[0] : markAxisKeys);
424
+ }
425
+ // No accessor available — identity function
426
+ return makeAccessor(axisAccessor);
427
+ }
428
+ x = $derived(this.resolveAccessor('x'));
429
+ y = $derived(this.resolveAccessor('y'));
430
+ z = $derived(makeAccessor(this.props.z));
431
+ r = $derived(makeAccessor(this.props.r));
432
+ c = $derived(accessor(this.props.c));
433
+ x1 = $derived(makeAccessor(this.props.x1));
434
+ y1 = $derived(makeAccessor(this.props.y1));
435
+ filteredExtents = $derived(filterObject($state.snapshot(this.props.extents ?? {})));
436
+ activeGetters = $derived({
437
+ x: this.x,
438
+ y: this.y,
439
+ z: this.z,
440
+ r: this.r,
441
+ });
442
+ padding = $derived.by(() => {
443
+ let paddingProp = this.props.padding;
444
+ // When no explicit padding, compute default from axis/legend (unless radial).
445
+ // When `children` is not set, ChartChildren renders with axis=true by default,
446
+ // so apply matching padding. When `children` IS set (Treemap, Pack, etc.),
447
+ // the user controls layout — only apply padding if axis is explicitly set.
448
+ const hasChartChildrenLayout = !this.props.children;
449
+ const effectiveAxis = this.props.axis ?? (hasChartChildrenLayout ? true : false);
450
+ if (paddingProp == null && !this.props.radial && effectiveAxis) {
451
+ paddingProp = defaultChartPadding({
452
+ axis: effectiveAxis,
453
+ legend: this.props.legend,
454
+ });
455
+ }
456
+ paddingProp = paddingProp ?? {};
457
+ if (typeof paddingProp === 'number') {
458
+ return {
459
+ ...defaultPadding,
460
+ top: paddingProp,
461
+ right: paddingProp,
462
+ bottom: paddingProp,
463
+ left: paddingProp,
464
+ };
465
+ }
466
+ return { ...defaultPadding, ...paddingProp };
467
+ });
468
+ box = $derived.by(() => {
469
+ const top = this.padding.top;
470
+ const right = this.containerWidth - this.padding.right;
471
+ const bottom = this.containerHeight - this.padding.bottom;
472
+ const left = this.padding.left;
473
+ const width = right - left;
474
+ const height = bottom - top;
475
+ if (this.props.verbose === true) {
476
+ if (width <= 0 && this.isMounted === true) {
477
+ console.warn(`[LayerChart] Target div has zero or negative width (${width}). Did you forget to set an explicit width in CSS on the container?`);
478
+ }
479
+ if (height <= 0 && this.isMounted === true) {
480
+ console.warn(`[LayerChart] Target div has zero or negative height (${height}). Did you forget to set an explicit width in CSS on the container?`);
481
+ }
482
+ }
483
+ return {
484
+ top,
485
+ left,
486
+ bottom,
487
+ right,
488
+ width,
489
+ height,
490
+ };
491
+ });
492
+ width = $derived(this.box.width);
493
+ height = $derived(this.box.height);
494
+ extents = $derived.by(() => {
495
+ const scaleLookup = {
496
+ x: {
497
+ scale: this._xScaleProp,
498
+ sort: this.props.xDomainSort,
499
+ },
500
+ y: {
501
+ scale: this._yScaleProp,
502
+ sort: this.props.yDomainSort,
503
+ },
504
+ z: {
505
+ scale: this._zScaleProp,
506
+ sort: this.props.zDomainSort,
507
+ },
508
+ r: {
509
+ scale: this._rScaleProp,
510
+ sort: this.props.rDomainSort,
511
+ },
512
+ };
513
+ const getters = filterObject(this.activeGetters, this.filteredExtents);
514
+ const activeScales = Object.fromEntries(Object.keys(getters).map((k) => [k, scaleLookup[k]]));
515
+ if (Object.keys(getters).length > 0) {
516
+ const calculatedExtents = calcScaleExtents(this.flatData, getters, activeScales);
517
+ return { ...calculatedExtents, ...this.filteredExtents };
518
+ }
519
+ else {
520
+ return {};
521
+ }
522
+ });
523
+ /**
524
+ * Resolves the domain for a given axis based on props, series state, and data.
525
+ * Handles explicit domains, intervals, baselines, and series-specific calculations.
526
+ */
527
+ _computeTransformDomain(baseDomain, translate, scale, dimension) {
528
+ if (baseDomain.length < 2 || dimension <= 0) {
529
+ return baseDomain;
530
+ }
531
+ // d3 scales treat Date as numeric, so runtime values may be Date despite number[] type
532
+ const d0 = baseDomain[0];
533
+ const d1 = baseDomain[1];
534
+ const isDate = d0 instanceof Date;
535
+ if (!isDate && typeof d0 !== 'number')
536
+ return baseDomain;
537
+ const numMin = isDate ? d0.getTime() : d0;
538
+ const numMax = isDate ? d1.getTime() : d1;
539
+ const range = numMax - numMin;
540
+ if (!isFinite(range) || range === 0)
541
+ return baseDomain;
542
+ const f0 = -translate / scale / dimension;
543
+ const f1 = (dimension - translate) / scale / dimension;
544
+ const newMin = numMin + f0 * range;
545
+ const newMax = numMin + f1 * range;
546
+ return (isDate ? [new Date(newMin), new Date(newMax)] : [newMin, newMax]);
547
+ }
548
+ /**
549
+ * Auto-derive baseline for an axis based on valueAxis.
550
+ * The value axis gets baseline=0 (unless time scale), the category axis gets none.
551
+ */
552
+ _autoBaseline(axis) {
553
+ const valueAxis = this.props.valueAxis;
554
+ // Only auto-derive baseline for simplified charts that set bandPadding
555
+ if (valueAxis == null || this.props.bandPadding == null)
556
+ return undefined;
557
+ if (valueAxis === axis) {
558
+ // Value axis — baseline 0 unless time scale
559
+ const scale = axis === 'x' ? this._xScaleProp : this._yScaleProp;
560
+ return isScaleTime(scale) ? undefined : 0;
561
+ }
562
+ // Category axis — no baseline
563
+ return undefined;
564
+ }
565
+ resolveDomain(axis) {
566
+ const domain = axis === 'x' ? this.props.xDomain : this.props.yDomain;
567
+ const interval = axis === 'x' ? this.props.xInterval : this.props.yInterval;
568
+ const explicitBaseline = axis === 'x' ? this.props.xBaseline : this.props.yBaseline;
569
+ // Use explicit baseline if provided (null means "no baseline"), otherwise auto-derive
570
+ const baseline = explicitBaseline !== undefined ? explicitBaseline : this._autoBaseline(axis);
571
+ const axisAccessor = axis === 'x' ? this.props.x : this.props.y;
572
+ // If explicit domain is provided, use it
573
+ if (domain !== undefined)
574
+ return domain;
575
+ // Series-specific domain calculation (only applies if the value axis)
576
+ if (this.valueAxis === axis && this.seriesState) {
577
+ // For stacked series, collect all y0/y1 values for domain calculation
578
+ if (this.seriesState.isStacked) {
579
+ const stackAccessor = (d) => {
580
+ const values = [];
581
+ for (const s of this.seriesState.visibleSeries) {
582
+ const stackValue = this.seriesState.getStackValue(s.key, d);
583
+ if (stackValue) {
584
+ values.push(stackValue[0], stackValue[1]);
585
+ }
586
+ }
587
+ return values.length ? values : undefined;
588
+ };
589
+ // @ts-ignore - fix type
590
+ return extent(chartDataArray(this.data).flatMap(stackAccessor));
591
+ }
592
+ // For non-default series, calculate domain from all visible series values
593
+ if (!this.seriesState.isDefaultSeries) {
594
+ const seriesValues = this.series.visibleSeries.flatMap((s) => {
595
+ const acc = accessor(s.value ?? axisAccessor ?? s.key);
596
+ const data = s.data ?? chartDataArray(this.data);
597
+ return data.flatMap(acc);
598
+ });
599
+ // Also include data from registered marks whose data isn't the primary
600
+ // data for any visible series. This handles marks with the same accessor
601
+ // key but different data arrays (e.g. two Circle marks pointing at
602
+ // separate datasets with the same field name).
603
+ const extraMarkValues = [];
604
+ for (const { info } of this._markInfos) {
605
+ if (!info.data)
606
+ continue;
607
+ const infoKey = info.seriesKey ?? (typeof info.y === 'string' ? info.y : undefined);
608
+ if (infoKey &&
609
+ this.seriesState.visibleSeries.some((s) => s.key === infoKey && s.data === info.data))
610
+ continue;
611
+ const markAccessor = (axis === 'y' ? info.y : info.x) ?? axisAccessor;
612
+ if (markAccessor) {
613
+ extraMarkValues.push(...info.data.flatMap(accessor(markAccessor)));
614
+ }
615
+ }
616
+ const allValues = [...seriesValues, ...extraMarkValues];
617
+ if (baseline != null) {
618
+ return [min([baseline, ...allValues]), max([baseline, ...allValues])];
619
+ }
620
+ return extent(allValues);
621
+ }
622
+ }
623
+ // Interval-based domain: extend to the next interval offset
624
+ if (interval != null && Array.isArray(this.data) && this.data.length > 0) {
625
+ const lastValue = accessor(axisAccessor)(this.data[this.data.length - 1]);
626
+ return [null, interval.offset(lastValue)];
627
+ }
628
+ // Baseline-based domain: include the baseline value in the extent
629
+ if (baseline != null && Array.isArray(this.data)) {
630
+ const values = this.data.flatMap(accessor(axisAccessor));
631
+ return [min([baseline, ...values]), max([baseline, ...values])];
632
+ }
633
+ }
634
+ _xDomain = $derived.by(() => this.resolveDomain('x'));
635
+ _yDomain = $derived.by(() => this.resolveDomain('y'));
636
+ /** Full domain from data/props before any transform override */
637
+ _baseXDomain = $derived(calcDomain('x', this.extents, this._xDomain));
638
+ _baseYDomain = $derived(calcDomain('y', this.extents, this._yDomain));
639
+ /** Target domain — narrowed by transform when mode is 'domain', but not yet animated */
640
+ _rawXDomain = $derived.by(() => {
641
+ if (this.transformState?.mode === 'domain' &&
642
+ (this.transformState.axis === 'x' || this.transformState.axis === 'both') &&
643
+ this.width > 0) {
644
+ return this._computeTransformDomain(this._baseXDomain, this.transformState.translate.x, this.transformState.scale, this.width);
645
+ }
646
+ return this._baseXDomain;
647
+ });
648
+ _rawYDomain = $derived.by(() => {
649
+ if (this.transformState?.mode === 'domain' &&
650
+ (this.transformState.axis === 'y' || this.transformState.axis === 'both') &&
651
+ this.height > 0) {
652
+ return this._computeTransformDomain(this._baseYDomain, this.transformState.translate.y, this.transformState.scale, this.height);
653
+ }
654
+ return this._baseYDomain;
655
+ });
656
+ /** Effective domain — animated via motion if configured */
657
+ xDomain = $derived.by(() => {
658
+ if (this._xDomainMotion) {
659
+ const animated = this._xDomainMotion.current;
660
+ if (this._xDomainIsDate) {
661
+ return animated.map((v) => new Date(v));
662
+ }
663
+ return animated;
664
+ }
665
+ return this._rawXDomain;
666
+ });
667
+ yDomain = $derived.by(() => {
668
+ if (this._yDomainMotion) {
669
+ const animated = this._yDomainMotion.current;
670
+ if (this._yDomainIsDate) {
671
+ return animated.map((v) => new Date(v));
672
+ }
673
+ return animated;
674
+ }
675
+ return this._rawYDomain;
676
+ });
677
+ zDomain = $derived(calcDomain('z', this.extents, this.props.zDomain));
678
+ rDomain = $derived(calcDomain('r', this.extents, this.props.rDomain));
679
+ x1Domain = $derived.by(() => {
680
+ if (this.props.x1Domain) {
681
+ const visibleKeys = new Set(this.seriesState.visibleSeries.map((s) => s.key));
682
+ return this.props.x1Domain.filter((key) => visibleKeys.has(key));
683
+ }
684
+ // Auto-derive for grouped series when x is the category axis
685
+ if (this.props.seriesLayout === 'group' && this.valueAxis === 'y') {
686
+ return this.seriesState.visibleSeries.map((s) => s.key);
687
+ }
688
+ if (this.x1) {
689
+ return extent(chartDataArray(this.data), this.x1);
690
+ }
691
+ return undefined;
692
+ });
693
+ y1Domain = $derived.by(() => {
694
+ if (this.props.y1Domain) {
695
+ const visibleKeys = new Set(this.seriesState.visibleSeries.map((s) => s.key));
696
+ return this.props.y1Domain.filter((key) => visibleKeys.has(key));
697
+ }
698
+ // Auto-derive for grouped series when y is the category axis
699
+ if (this.props.seriesLayout === 'group' && this.valueAxis === 'x') {
700
+ return this.seriesState.visibleSeries.map((s) => s.key);
701
+ }
702
+ if (this.y1) {
703
+ return extent(chartDataArray(this.data), this.y1);
704
+ }
705
+ return undefined;
706
+ });
707
+ cDomain = $derived.by(() => {
708
+ if (this.props.cDomain)
709
+ return this.props.cDomain;
710
+ const values = chartDataArray(this.data).map(this.c);
711
+ // Use extent for numeric values (continuous scales), unique for categorical (ordinal scales)
712
+ if (values.length > 0 && typeof values[0] === 'number') {
713
+ return extent(values);
714
+ }
715
+ return unique(values);
716
+ });
717
+ snappedPadding = $derived($state.snapshot(this.props.xPadding));
718
+ snappedExtents = $derived($state.snapshot(this.extents));
719
+ xScale = $derived(createChartScale('x', {
720
+ scale: this._xScaleProp,
721
+ domain: this.xDomain,
722
+ padding: this.snappedPadding,
723
+ nice: this.xNice,
724
+ reverse: this.props.xReverse ?? false,
725
+ percentRange: this.props.percentRange ?? false,
726
+ range: this._xScaleRange,
727
+ height: this.height,
728
+ width: this.width,
729
+ extents: this.snappedExtents,
730
+ }));
731
+ xGet = $derived(createGetter(this.x, this.xScale));
732
+ yScale = $derived(createChartScale('y', {
733
+ scale: this._yScaleProp,
734
+ domain: this.yDomain,
735
+ padding: this.props.yPadding,
736
+ nice: this.yNice,
737
+ reverse: this.yReverse,
738
+ percentRange: this.props.percentRange ?? false,
739
+ range: this._yScaleRange,
740
+ height: this.height,
741
+ width: this.width,
742
+ extents: this.filteredExtents,
743
+ }));
744
+ yGet = $derived(createGetter(this.y, this.yScale));
745
+ /** Scale using the full (pre-transform) domain — used by BrushState for positioning */
746
+ baseXScale = $derived(createChartScale('x', {
747
+ scale: this._xScaleProp,
748
+ domain: this._baseXDomain,
749
+ padding: this.snappedPadding,
750
+ nice: this.xNice,
751
+ reverse: this.props.xReverse ?? false,
752
+ percentRange: this.props.percentRange ?? false,
753
+ range: this.xRangeProp,
754
+ height: this.height,
755
+ width: this.width,
756
+ extents: this.snappedExtents,
757
+ }));
758
+ baseYScale = $derived(createChartScale('y', {
759
+ scale: this._yScaleProp,
760
+ domain: this._baseYDomain,
761
+ padding: this.props.yPadding,
762
+ nice: this.yNice,
763
+ reverse: this.yReverse,
764
+ percentRange: this.props.percentRange ?? false,
765
+ range: this.yRangeProp,
766
+ height: this.height,
767
+ width: this.width,
768
+ extents: this.filteredExtents,
769
+ }));
770
+ zScale = $derived(createChartScale('z', {
771
+ scale: this._zScaleProp,
772
+ domain: this.zDomain,
773
+ padding: this.props.zPadding,
774
+ nice: this.props.zNice ?? false,
775
+ reverse: this.props.zReverse ?? false,
776
+ percentRange: this.props.percentRange ?? false,
777
+ range: this.props.zRange,
778
+ height: this.height,
779
+ width: this.width,
780
+ extents: this.filteredExtents,
781
+ }));
782
+ zGet = $derived(createGetter(this.z, this.zScale));
783
+ rScale = $derived(createChartScale('r', {
784
+ scale: this._rScaleProp,
785
+ domain: this.rDomain,
786
+ padding: this.props.rPadding,
787
+ nice: this.props.rNice ?? false,
788
+ reverse: this.props.rReverse ?? false,
789
+ percentRange: this.props.percentRange ?? false,
790
+ range: this.props.rRange,
791
+ height: this.height,
792
+ width: this.width,
793
+ extents: this.filteredExtents,
794
+ }));
795
+ rGet = $derived(createGetter(this.r, this.rScale));
796
+ x1Scale = $derived.by(() => {
797
+ // Explicit x1Range — existing behavior
798
+ if (this.props.x1Range) {
799
+ return createScale(this.props.x1Scale ?? autoScale(this.props.x1Domain, this.flatData, this.props.x1), this.x1Domain, this.props.x1Range, { xScale: this.xScale, width: this.width, height: this.height });
800
+ }
801
+ // Auto-derive for grouped series when x is the category axis
802
+ if (this.props.seriesLayout === 'group' && this.valueAxis === 'y' && this.x1Domain) {
803
+ const groupPadding = this.props.groupPadding ?? 0;
804
+ return createScale(scaleBand().padding(groupPadding), this.x1Domain, ({ xScale }) => [0, xScale.bandwidth()], { xScale: this.xScale, width: this.width, height: this.height });
805
+ }
806
+ return null;
807
+ });
808
+ x1Get = $derived(this.x1 ? createGetter(this.x1, this.x1Scale) : null);
809
+ y1Scale = $derived.by(() => {
810
+ // Explicit y1Range — existing behavior
811
+ if (this.props.y1Range) {
812
+ return createScale(this.props.y1Scale ?? autoScale(this.props.y1Domain, this.flatData, this.props.y1), this.y1Domain, this.props.y1Range, { yScale: this.yScale, width: this.width, height: this.height });
813
+ }
814
+ // Auto-derive for grouped series when y is the category axis
815
+ if (this.props.seriesLayout === 'group' && this.valueAxis === 'x' && this.y1Domain) {
816
+ const groupPadding = this.props.groupPadding ?? 0;
817
+ return createScale(scaleBand().padding(groupPadding), this.y1Domain, ({ yScale }) => [0, yScale.bandwidth()], { yScale: this.yScale, width: this.width, height: this.height });
818
+ }
819
+ return null;
820
+ });
821
+ y1Get = $derived(this.y1 ? createGetter(this.y1, this.y1Scale) : null);
822
+ cScale = $derived(this.props.cScale || this.props.cRange
823
+ ? createScale(this.props.cScale ?? scaleOrdinal(), this.cDomain, this.props.cRange, {
824
+ width: this.width,
825
+ height: this.height,
826
+ })
827
+ : null);
828
+ cGet = $derived((d) => this.cScale?.(this.c(d)));
829
+ xDomainPossiblyNice = $derived(this.xScale.domain());
830
+ yDomainPossiblyNice = $derived(this.yScale.domain());
831
+ zDomainPossiblyNice = $derived(this.zScale.domain());
832
+ rDomainPossiblyNice = $derived(this.rScale.domain());
833
+ /** Viewport range — always [0, width] / [height, 0] for layout components (axis, grid, etc).
834
+ * When band scale domain transform is active, xScale.range() is wider than the viewport,
835
+ * so we return the base scale's range instead. */
836
+ xRange = $derived.by(() => {
837
+ if (this.transformState?.mode === 'domain' &&
838
+ (this.transformState.axis === 'x' || this.transformState.axis === 'both') &&
839
+ isScaleBand(this._xScaleProp)) {
840
+ return getRange(this.baseXScale);
841
+ }
842
+ return getRange(this.xScale);
843
+ });
844
+ yRange = $derived.by(() => {
845
+ if (this.transformState?.mode === 'domain' &&
846
+ (this.transformState.axis === 'y' || this.transformState.axis === 'both') &&
847
+ isScaleBand(this._yScaleProp)) {
848
+ return getRange(this.baseYScale);
849
+ }
850
+ return getRange(this.yScale);
851
+ });
852
+ zRange = $derived(getRange(this.zScale));
853
+ rRange = $derived(getRange(this.rScale));
854
+ aspectRatio = $derived(this.width / this.height);
855
+ // Properties that come directly from props (not derived)
856
+ get percentRange() {
857
+ return this.props.percentRange ?? false;
858
+ }
859
+ get xNice() {
860
+ if (this.props.xNice !== undefined)
861
+ return this.props.xNice;
862
+ // Auto-nice the value axis when valueAxis is explicitly set
863
+ return this.props.valueAxis === 'x';
864
+ }
865
+ get yNice() {
866
+ if (this.props.yNice !== undefined)
867
+ return this.props.yNice;
868
+ return this.props.valueAxis === 'y';
869
+ }
870
+ get zNice() {
871
+ return this.props.zNice ?? false;
872
+ }
873
+ get rNice() {
874
+ return this.props.rNice ?? false;
875
+ }
876
+ get xDomainSort() {
877
+ return this.props.xDomainSort ?? false;
878
+ }
879
+ get yDomainSort() {
880
+ return this.props.yDomainSort ?? false;
881
+ }
882
+ get zDomainSort() {
883
+ return this.props.zDomainSort ?? false;
884
+ }
885
+ get rDomainSort() {
886
+ return this.props.rDomainSort ?? false;
887
+ }
888
+ get xReverse() {
889
+ return this.props.xReverse ?? false;
890
+ }
891
+ get zReverse() {
892
+ return this.props.zReverse ?? false;
893
+ }
894
+ get rReverse() {
895
+ return this.props.rReverse ?? false;
896
+ }
897
+ get xPadding() {
898
+ return this.props.xPadding;
899
+ }
900
+ get yPadding() {
901
+ return this.props.yPadding;
902
+ }
903
+ get zPadding() {
904
+ return this.props.zPadding;
905
+ }
906
+ get rPadding() {
907
+ return this.props.rPadding;
908
+ }
909
+ get cRange() {
910
+ return this.props.cRange;
911
+ }
912
+ get x1Range() {
913
+ return this.props.x1Range;
914
+ }
915
+ get y1Range() {
916
+ return this.props.y1Range;
917
+ }
918
+ get xInterval() {
919
+ return this.props.xInterval ?? null;
920
+ }
921
+ get yInterval() {
922
+ return this.props.yInterval ?? null;
923
+ }
924
+ get radial() {
925
+ return this.props.radial ?? false;
926
+ }
927
+ get valueAxis() {
928
+ return (this.props.valueAxis ??
929
+ (this.props.yScale && isScaleBand(this.props.yScale)
930
+ ? 'x'
931
+ : this.props.xScale && isScaleBand(this.props.xScale)
932
+ ? 'y'
933
+ : 'y'));
934
+ }
935
+ // Fallback objects for when state hasn't been initialized yet
936
+ static #fallbackTooltip = {
937
+ x: 0,
938
+ y: 0,
939
+ data: null,
940
+ series: [],
941
+ config: {},
942
+ isHoveringTooltipArea: false,
943
+ isHoveringTooltipContent: false,
944
+ mode: 'manual',
945
+ show: () => { },
946
+ hide: () => { },
947
+ };
948
+ static #fallbackTransform = {
949
+ mode: 'none',
950
+ scale: 1,
951
+ translate: { x: 0, y: 0 },
952
+ moving: false,
953
+ dragging: false,
954
+ setScale: () => { },
955
+ setTranslate: () => { },
956
+ };
957
+ static #fallbackSeries = {
958
+ series: [],
959
+ visibleSeries: [],
960
+ highlightKey: null,
961
+ isVisible: () => true,
962
+ isHighlighted: () => false,
963
+ isDefaultSeries: true,
964
+ allSeriesData: [],
965
+ allSeriesColors: [],
966
+ selectedKeys: { isEmpty: () => true, isSelected: () => false },
967
+ };
968
+ // TODO: We also expose context states directly as well for `bind:` for each context (TooltipContext, GeoContext, etc).
969
+ get tooltip() {
970
+ return this.tooltipState ?? ChartState.#fallbackTooltip;
971
+ }
972
+ get geo() {
973
+ return this.geoState;
974
+ }
975
+ get brush() {
976
+ return this.brushState;
977
+ }
978
+ get transform() {
979
+ return this.transformState ?? ChartState.#fallbackTransform;
980
+ }
981
+ get series() {
982
+ return this.seriesState ?? ChartState.#fallbackSeries;
983
+ }
984
+ /**
985
+ * Convert a brush selection to transform scale/translate, zooming the chart to the brushed region.
986
+ * Used by integrated brush mode when `transform.mode === 'domain'`.
987
+ */
988
+ zoomToBrush(brush, axis = 'x') {
989
+ const brushX = brush.x;
990
+ const brushY = brush.y;
991
+ if ((axis === 'x' || axis === 'both') && brushX[0] != null && brushX[1] != null) {
992
+ const baseDomainX = this._baseXDomain;
993
+ if (typeof baseDomainX[0] === 'string') {
994
+ // Categorical: compute scale/translate from domain indices
995
+ const totalCount = baseDomainX.length;
996
+ const startIdx = baseDomainX.indexOf(brushX[0]);
997
+ const endIdx = baseDomainX.indexOf(brushX[1]) + 1;
998
+ const selectedCount = endIdx - startIdx;
999
+ if (selectedCount > 0 && totalCount > 0) {
1000
+ const newScale = totalCount / selectedCount;
1001
+ const newTranslateX = -(startIdx / totalCount) * this.width * newScale;
1002
+ let newTranslateY = 0;
1003
+ if (axis === 'both' && brushY[0] != null && brushY[1] != null) {
1004
+ const baseDomainY = this._baseYDomain;
1005
+ if (typeof baseDomainY[0] === 'string') {
1006
+ const yTotal = baseDomainY.length;
1007
+ const yStart = baseDomainY.indexOf(brushY[0]);
1008
+ const yEnd = baseDomainY.indexOf(brushY[1]) + 1;
1009
+ const ySelected = yEnd - yStart;
1010
+ if (ySelected > 0) {
1011
+ newTranslateY = -(yStart / yTotal) * this.height * newScale;
1012
+ }
1013
+ }
1014
+ }
1015
+ this.transform.setScale(newScale);
1016
+ this.transform.setTranslate({ x: newTranslateX, y: newTranslateY });
1017
+ }
1018
+ }
1019
+ else {
1020
+ // Continuous: existing numeric logic
1021
+ const baseMinX = +baseDomainX[0];
1022
+ const baseRangeX = +baseDomainX[1] - baseMinX;
1023
+ const brushMinX = +brushX[0];
1024
+ const brushRangeX = +brushX[1] - brushMinX;
1025
+ if (brushRangeX > 0 && baseRangeX > 0) {
1026
+ const newScale = baseRangeX / brushRangeX;
1027
+ const newTranslateX = -((brushMinX - baseMinX) / baseRangeX) * this.width * newScale;
1028
+ let newTranslateY = 0;
1029
+ if (axis === 'both' && brushY[0] != null && brushY[1] != null) {
1030
+ const baseMinY = +this._baseYDomain[0];
1031
+ const baseRangeY = +this._baseYDomain[1] - baseMinY;
1032
+ const brushMinY = +brushY[0];
1033
+ newTranslateY = -((brushMinY - baseMinY) / baseRangeY) * this.height * newScale;
1034
+ }
1035
+ this.transform.setScale(newScale);
1036
+ this.transform.setTranslate({ x: newTranslateX, y: newTranslateY });
1037
+ }
1038
+ }
1039
+ }
1040
+ }
1041
+ get config() {
1042
+ return {
1043
+ x: this.props.x,
1044
+ y: this.props.y,
1045
+ z: this.props.z,
1046
+ r: this.props.r,
1047
+ c: this.props.c,
1048
+ x1: this.props.x1,
1049
+ y1: this.props.y1,
1050
+ xDomain: this._xDomain,
1051
+ yDomain: this._yDomain,
1052
+ zDomain: this.props.zDomain,
1053
+ rDomain: this.props.rDomain,
1054
+ x1Domain: this.props.x1Domain,
1055
+ y1Domain: this.props.y1Domain,
1056
+ cDomain: this.props.cDomain,
1057
+ xRange: this.props.xRange,
1058
+ yRange: this.props.yRange,
1059
+ zRange: this.props.zRange,
1060
+ rRange: this.props.rRange,
1061
+ cRange: this.props.cRange,
1062
+ x1Range: this.props.x1Range,
1063
+ y1Range: this.props.y1Range,
1064
+ };
1065
+ }
1066
+ }