@octanejs/visx 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (767) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/UPSTREAM.md +52 -0
  4. package/package.json +161 -0
  5. package/src/a11y/components/ChartA11yAnnouncer.tsrx +40 -0
  6. package/src/a11y/components/ChartA11yAnnouncer.tsrx.d.ts +14 -0
  7. package/src/a11y/components/ChartA11yDataTable.tsrx +40 -0
  8. package/src/a11y/components/ChartA11yDataTable.tsrx.d.ts +9 -0
  9. package/src/a11y/generators/ariaProps.ts +79 -0
  10. package/src/a11y/generators/dataTableHTML.ts +24 -0
  11. package/src/a11y/generators/description.ts +125 -0
  12. package/src/a11y/index.ts +35 -0
  13. package/src/a11y/keyboard/stateMachine.ts +231 -0
  14. package/src/a11y/react/index.ts +59 -0
  15. package/src/a11y/server.ts +29 -0
  16. package/src/a11y/types.ts +104 -0
  17. package/src/a11y/useChartA11y.tsrx +144 -0
  18. package/src/a11y/useChartA11y.tsrx.d.ts +27 -0
  19. package/src/a11y/useChartKeyboardNav.tsrx +234 -0
  20. package/src/a11y/useChartKeyboardNav.tsrx.d.ts +26 -0
  21. package/src/a11y/utils/data.ts +80 -0
  22. package/src/a11y/utils/format.ts +73 -0
  23. package/src/a11y/utils/table.ts +81 -0
  24. package/src/annotation/components/Annotation.tsrx +14 -0
  25. package/src/annotation/components/Annotation.tsrx.d.ts +8 -0
  26. package/src/annotation/components/CircleSubject.tsrx +37 -0
  27. package/src/annotation/components/CircleSubject.tsrx.d.ts +12 -0
  28. package/src/annotation/components/Connector.tsrx +75 -0
  29. package/src/annotation/components/Connector.tsrx.d.ts +14 -0
  30. package/src/annotation/components/EditableAnnotation.tsrx +179 -0
  31. package/src/annotation/components/EditableAnnotation.tsrx.d.ts +33 -0
  32. package/src/annotation/components/HtmlLabel.tsrx +93 -0
  33. package/src/annotation/components/HtmlLabel.tsrx.d.ts +10 -0
  34. package/src/annotation/components/Label.tsrx +249 -0
  35. package/src/annotation/components/Label.tsrx.d.ts +60 -0
  36. package/src/annotation/components/LabelAnchorLine.tsrx +32 -0
  37. package/src/annotation/components/LabelAnchorLine.tsrx.d.ts +12 -0
  38. package/src/annotation/components/LineSubject.tsrx +50 -0
  39. package/src/annotation/components/LineSubject.tsrx.d.ts +21 -0
  40. package/src/annotation/context/AnnotationContext.tsrx +6 -0
  41. package/src/annotation/context/AnnotationContext.tsrx.d.ts +4 -0
  42. package/src/annotation/index.ts +18 -0
  43. package/src/annotation/types/index.ts +10 -0
  44. package/src/axis/axis/Axis.tsrx +54 -0
  45. package/src/axis/axis/Axis.tsrx.d.ts +7 -0
  46. package/src/axis/axis/AxisBottom.tsrx +37 -0
  47. package/src/axis/axis/AxisBottom.tsrx.d.ts +10 -0
  48. package/src/axis/axis/AxisLeft.tsrx +37 -0
  49. package/src/axis/axis/AxisLeft.tsrx.d.ts +11 -0
  50. package/src/axis/axis/AxisRenderer.tsrx +102 -0
  51. package/src/axis/axis/AxisRenderer.tsrx.d.ts +3 -0
  52. package/src/axis/axis/AxisRight.tsrx +39 -0
  53. package/src/axis/axis/AxisRight.tsrx.d.ts +12 -0
  54. package/src/axis/axis/AxisTop.tsrx +38 -0
  55. package/src/axis/axis/AxisTop.tsrx.d.ts +11 -0
  56. package/src/axis/axis/Ticks.tsrx +56 -0
  57. package/src/axis/axis/Ticks.tsrx.d.ts +3 -0
  58. package/src/axis/constants/orientation.ts +12 -0
  59. package/src/axis/index.ts +10 -0
  60. package/src/axis/react/index.ts +5 -0
  61. package/src/axis/react/useAxis.tsrx +89 -0
  62. package/src/axis/react/useAxis.tsrx.d.ts +13 -0
  63. package/src/axis/types.ts +145 -0
  64. package/src/axis/utils/createPoint.ts +5 -0
  65. package/src/axis/utils/getAxisRangePaddingConfig.ts +11 -0
  66. package/src/axis/utils/getLabelTransform.ts +44 -0
  67. package/src/axis/utils/getTickFormatter.ts +19 -0
  68. package/src/axis/utils/getTickPosition.ts +28 -0
  69. package/src/bounds/enhancers/withBoundingRects.tsrx +59 -0
  70. package/src/bounds/enhancers/withBoundingRects.tsrx.d.ts +21 -0
  71. package/src/bounds/index.ts +6 -0
  72. package/src/brush/BaseBrush.tsrx +567 -0
  73. package/src/brush/BaseBrush.tsrx.d.ts +39 -0
  74. package/src/brush/Brush.tsrx +217 -0
  75. package/src/brush/Brush.tsrx.d.ts +56 -0
  76. package/src/brush/BrushCorner.tsrx +173 -0
  77. package/src/brush/BrushCorner.tsrx.d.ts +21 -0
  78. package/src/brush/BrushHandle.tsrx +222 -0
  79. package/src/brush/BrushHandle.tsrx.d.ts +33 -0
  80. package/src/brush/BrushOverlay.tsrx +18 -0
  81. package/src/brush/BrushOverlay.tsrx.d.ts +15 -0
  82. package/src/brush/BrushSelection.tsrx +181 -0
  83. package/src/brush/BrushSelection.tsrx.d.ts +27 -0
  84. package/src/brush/index.ts +9 -0
  85. package/src/brush/types.ts +62 -0
  86. package/src/brush/utils.ts +89 -0
  87. package/src/chart/config.ts +50 -0
  88. package/src/chart/domains.ts +47 -0
  89. package/src/chart/index.ts +33 -0
  90. package/src/chart/responsive.ts +3 -0
  91. package/src/chart/ticks.ts +90 -0
  92. package/src/chart/useChartDimensions.tsrx +74 -0
  93. package/src/chart/useChartDimensions.tsrx.d.ts +28 -0
  94. package/src/chord/Chord.tsrx +42 -0
  95. package/src/chord/Chord.tsrx.d.ts +22 -0
  96. package/src/chord/Ribbon.tsrx +63 -0
  97. package/src/chord/Ribbon.tsrx.d.ts +26 -0
  98. package/src/chord/index.ts +6 -0
  99. package/src/clip-path/clip-paths/CircleClipPath.tsrx +26 -0
  100. package/src/clip-path/clip-paths/CircleClipPath.tsrx.d.ts +14 -0
  101. package/src/clip-path/clip-paths/ClipPath.tsrx +21 -0
  102. package/src/clip-path/clip-paths/ClipPath.tsrx.d.ts +10 -0
  103. package/src/clip-path/clip-paths/RectClipPath.tsrx +28 -0
  104. package/src/clip-path/clip-paths/RectClipPath.tsrx.d.ts +15 -0
  105. package/src/clip-path/index.ts +4 -0
  106. package/src/curve/index.ts +21 -0
  107. package/src/delaunay/components/Polygon.tsrx +32 -0
  108. package/src/delaunay/components/Polygon.tsrx.d.ts +14 -0
  109. package/src/delaunay/delaunay.ts +17 -0
  110. package/src/delaunay/index.ts +4 -0
  111. package/src/delaunay/voronoi.ts +30 -0
  112. package/src/drag/Drag.tsrx +66 -0
  113. package/src/drag/Drag.tsrx.d.ts +17 -0
  114. package/src/drag/index.ts +13 -0
  115. package/src/drag/useDrag.tsrx +214 -0
  116. package/src/drag/useDrag.tsrx.d.ts +60 -0
  117. package/src/drag/util/clampNumber.ts +4 -0
  118. package/src/drag/util/getClosestPoint.ts +13 -0
  119. package/src/drag/util/raise.ts +8 -0
  120. package/src/drag/util/restrictPoint.ts +18 -0
  121. package/src/drag/util/useSamplesAlongPath.tsrx +26 -0
  122. package/src/drag/util/useSamplesAlongPath.tsrx.d.ts +3 -0
  123. package/src/drag/util/useStateWithCallback.tsrx +26 -0
  124. package/src/drag/util/useStateWithCallback.tsrx.d.ts +5 -0
  125. package/src/event/getXAndYFromEvent.ts +36 -0
  126. package/src/event/index.ts +3 -0
  127. package/src/event/localPoint.ts +18 -0
  128. package/src/event/localPointGeneric.ts +34 -0
  129. package/src/event/touchPoint.ts +2 -0
  130. package/src/event/typeGuards.ts +37 -0
  131. package/src/event/types.ts +13 -0
  132. package/src/external.d.ts +3 -0
  133. package/src/geo/graticule/Graticule.tsrx +97 -0
  134. package/src/geo/graticule/Graticule.tsrx.d.ts +52 -0
  135. package/src/geo/index.ts +13 -0
  136. package/src/geo/projections/Albers.tsrx +10 -0
  137. package/src/geo/projections/Albers.tsrx.d.ts +7 -0
  138. package/src/geo/projections/AlbersUsa.tsrx +10 -0
  139. package/src/geo/projections/AlbersUsa.tsrx.d.ts +7 -0
  140. package/src/geo/projections/CustomProjection.tsrx +10 -0
  141. package/src/geo/projections/CustomProjection.tsrx.d.ts +7 -0
  142. package/src/geo/projections/EqualEarth.tsrx +10 -0
  143. package/src/geo/projections/EqualEarth.tsrx.d.ts +7 -0
  144. package/src/geo/projections/Mercator.tsrx +10 -0
  145. package/src/geo/projections/Mercator.tsrx.d.ts +7 -0
  146. package/src/geo/projections/NaturalEarth.tsrx +10 -0
  147. package/src/geo/projections/NaturalEarth.tsrx.d.ts +7 -0
  148. package/src/geo/projections/Orthographic.tsrx +10 -0
  149. package/src/geo/projections/Orthographic.tsrx.d.ts +7 -0
  150. package/src/geo/projections/Projection.tsrx +201 -0
  151. package/src/geo/projections/Projection.tsrx.d.ts +86 -0
  152. package/src/geo/types.ts +14 -0
  153. package/src/glyph/glyphs/Glyph.tsrx +18 -0
  154. package/src/glyph/glyphs/Glyph.tsrx.d.ts +13 -0
  155. package/src/glyph/glyphs/GlyphCircle.tsrx +46 -0
  156. package/src/glyph/glyphs/GlyphCircle.tsrx.d.ts +18 -0
  157. package/src/glyph/glyphs/GlyphCross.tsrx +46 -0
  158. package/src/glyph/glyphs/GlyphCross.tsrx.d.ts +18 -0
  159. package/src/glyph/glyphs/GlyphDiamond.tsrx +46 -0
  160. package/src/glyph/glyphs/GlyphDiamond.tsrx.d.ts +18 -0
  161. package/src/glyph/glyphs/GlyphDot.tsrx +29 -0
  162. package/src/glyph/glyphs/GlyphDot.tsrx.d.ts +17 -0
  163. package/src/glyph/glyphs/GlyphSquare.tsrx +46 -0
  164. package/src/glyph/glyphs/GlyphSquare.tsrx.d.ts +18 -0
  165. package/src/glyph/glyphs/GlyphStar.tsrx +45 -0
  166. package/src/glyph/glyphs/GlyphStar.tsrx.d.ts +18 -0
  167. package/src/glyph/glyphs/GlyphTriangle.tsrx +46 -0
  168. package/src/glyph/glyphs/GlyphTriangle.tsrx.d.ts +18 -0
  169. package/src/glyph/glyphs/GlyphWye.tsrx +45 -0
  170. package/src/glyph/glyphs/GlyphWye.tsrx.d.ts +18 -0
  171. package/src/glyph/index.ts +20 -0
  172. package/src/gradient/gradients/GradientDarkgreenGreen.tsrx +13 -0
  173. package/src/gradient/gradients/GradientDarkgreenGreen.tsrx.d.ts +6 -0
  174. package/src/gradient/gradients/GradientLightgreenGreen.tsrx +13 -0
  175. package/src/gradient/gradients/GradientLightgreenGreen.tsrx.d.ts +6 -0
  176. package/src/gradient/gradients/GradientOrangeRed.tsrx +13 -0
  177. package/src/gradient/gradients/GradientOrangeRed.tsrx.d.ts +6 -0
  178. package/src/gradient/gradients/GradientPinkBlue.tsrx +13 -0
  179. package/src/gradient/gradients/GradientPinkBlue.tsrx.d.ts +6 -0
  180. package/src/gradient/gradients/GradientPinkRed.tsrx +13 -0
  181. package/src/gradient/gradients/GradientPinkRed.tsrx.d.ts +6 -0
  182. package/src/gradient/gradients/GradientPurpleOrange.tsrx +13 -0
  183. package/src/gradient/gradients/GradientPurpleOrange.tsrx.d.ts +6 -0
  184. package/src/gradient/gradients/GradientPurpleRed.tsrx +13 -0
  185. package/src/gradient/gradients/GradientPurpleRed.tsrx.d.ts +6 -0
  186. package/src/gradient/gradients/GradientPurpleTeal.tsrx +13 -0
  187. package/src/gradient/gradients/GradientPurpleTeal.tsrx.d.ts +6 -0
  188. package/src/gradient/gradients/GradientSteelPurple.tsrx +13 -0
  189. package/src/gradient/gradients/GradientSteelPurple.tsrx.d.ts +6 -0
  190. package/src/gradient/gradients/GradientTealBlue.tsrx +13 -0
  191. package/src/gradient/gradients/GradientTealBlue.tsrx.d.ts +6 -0
  192. package/src/gradient/gradients/LinearGradient.tsrx +85 -0
  193. package/src/gradient/gradients/LinearGradient.tsrx.d.ts +37 -0
  194. package/src/gradient/gradients/RadialGradient.tsrx +43 -0
  195. package/src/gradient/gradients/RadialGradient.tsrx.d.ts +5 -0
  196. package/src/gradient/index.ts +16 -0
  197. package/src/grid/grids/Grid.tsrx +86 -0
  198. package/src/grid/grids/Grid.tsrx.d.ts +30 -0
  199. package/src/grid/grids/GridAngle.tsrx +74 -0
  200. package/src/grid/grids/GridAngle.tsrx.d.ts +29 -0
  201. package/src/grid/grids/GridColumns.tsrx +76 -0
  202. package/src/grid/grids/GridColumns.tsrx.d.ts +18 -0
  203. package/src/grid/grids/GridPolar.tsrx +189 -0
  204. package/src/grid/grids/GridPolar.tsrx.d.ts +123 -0
  205. package/src/grid/grids/GridRadial.tsrx +92 -0
  206. package/src/grid/grids/GridRadial.tsrx.d.ts +44 -0
  207. package/src/grid/grids/GridRows.tsrx +76 -0
  208. package/src/grid/grids/GridRows.tsrx.d.ts +18 -0
  209. package/src/grid/index.ts +11 -0
  210. package/src/grid/types.ts +40 -0
  211. package/src/grid/utils/getScaleBandwidth.ts +5 -0
  212. package/src/grid/utils/polarToCartesian.ts +16 -0
  213. package/src/group/Group.tsrx +33 -0
  214. package/src/group/Group.tsrx.d.ts +16 -0
  215. package/src/group/index.ts +2 -0
  216. package/src/heatmap/heatmaps/HeatmapCircle.tsrx +109 -0
  217. package/src/heatmap/heatmaps/HeatmapCircle.tsrx.d.ts +44 -0
  218. package/src/heatmap/heatmaps/HeatmapRect.tsrx +121 -0
  219. package/src/heatmap/heatmaps/HeatmapRect.tsrx.d.ts +49 -0
  220. package/src/heatmap/index.ts +11 -0
  221. package/src/heatmap/types.ts +22 -0
  222. package/src/hierarchy/HierarchyDefaultLink.tsrx +19 -0
  223. package/src/hierarchy/HierarchyDefaultLink.tsrx.d.ts +13 -0
  224. package/src/hierarchy/HierarchyDefaultNode.tsrx +7 -0
  225. package/src/hierarchy/HierarchyDefaultNode.tsrx.d.ts +9 -0
  226. package/src/hierarchy/HierarchyDefaultRectNode.tsrx +7 -0
  227. package/src/hierarchy/HierarchyDefaultRectNode.tsrx.d.ts +10 -0
  228. package/src/hierarchy/hierarchies/Cluster.tsrx +81 -0
  229. package/src/hierarchy/hierarchies/Cluster.tsrx.d.ts +40 -0
  230. package/src/hierarchy/hierarchies/Pack.tsrx +69 -0
  231. package/src/hierarchy/hierarchies/Pack.tsrx.d.ts +35 -0
  232. package/src/hierarchy/hierarchies/Partition.tsrx +62 -0
  233. package/src/hierarchy/hierarchies/Partition.tsrx.d.ts +27 -0
  234. package/src/hierarchy/hierarchies/Tree.tsrx +82 -0
  235. package/src/hierarchy/hierarchies/Tree.tsrx.d.ts +43 -0
  236. package/src/hierarchy/hierarchies/Treemap.tsrx +97 -0
  237. package/src/hierarchy/hierarchies/Treemap.tsrx.d.ts +47 -0
  238. package/src/hierarchy/index.ts +26 -0
  239. package/src/hierarchy/types.ts +21 -0
  240. package/src/hierarchy/utils/setNumOrNumAccessor.ts +11 -0
  241. package/src/index.ts +74 -0
  242. package/src/internal/spring.tsrx +190 -0
  243. package/src/internal/spring.tsrx.d.ts +28 -0
  244. package/src/internal/useMeasure.tsrx +120 -0
  245. package/src/internal/useMeasure.tsrx.d.ts +22 -0
  246. package/src/kernel/accessors/normalizeAccessor.ts +59 -0
  247. package/src/kernel/domain/useDomain.tsrx +111 -0
  248. package/src/kernel/domain/useDomain.tsrx.d.ts +13 -0
  249. package/src/kernel/format/formatNumber.ts +8 -0
  250. package/src/kernel/ids/useStableId.tsrx +7 -0
  251. package/src/kernel/ids/useStableId.tsrx.d.ts +2 -0
  252. package/src/kernel/index.ts +25 -0
  253. package/src/kernel/memo/shallowEqual.ts +65 -0
  254. package/src/kernel/memo/useStructuralMemo.tsrx +18 -0
  255. package/src/kernel/memo/useStructuralMemo.tsrx.d.ts +3 -0
  256. package/src/kernel/path/createPath.ts +132 -0
  257. package/src/kernel/path/toPath2D.ts +41 -0
  258. package/src/kernel/refs/useLatestRef.tsrx +7 -0
  259. package/src/kernel/refs/useLatestRef.tsrx.d.ts +4 -0
  260. package/src/kernel/refs/useStableCallback.tsrx +13 -0
  261. package/src/kernel/refs/useStableCallback.tsrx.d.ts +2 -0
  262. package/src/kernel/warnings.ts +76 -0
  263. package/src/legend/index.ts +27 -0
  264. package/src/legend/legends/Legend/LegendItem.tsrx +35 -0
  265. package/src/legend/legends/Legend/LegendItem.tsrx.d.ts +16 -0
  266. package/src/legend/legends/Legend/LegendLabel.tsrx +39 -0
  267. package/src/legend/legends/Legend/LegendLabel.tsrx.d.ts +16 -0
  268. package/src/legend/legends/Legend/LegendShape.tsrx +64 -0
  269. package/src/legend/legends/Legend/LegendShape.tsrx.d.ts +25 -0
  270. package/src/legend/legends/Legend/index.tsrx +140 -0
  271. package/src/legend/legends/Legend/index.tsrx.d.ts +50 -0
  272. package/src/legend/legends/Linear.tsrx +23 -0
  273. package/src/legend/legends/Linear.tsrx.d.ts +11 -0
  274. package/src/legend/legends/Ordinal.tsrx +13 -0
  275. package/src/legend/legends/Ordinal.tsrx.d.ts +8 -0
  276. package/src/legend/legends/Quantile.tsrx +53 -0
  277. package/src/legend/legends/Quantile.tsrx.d.ts +12 -0
  278. package/src/legend/legends/Size.tsrx +37 -0
  279. package/src/legend/legends/Size.tsrx.d.ts +14 -0
  280. package/src/legend/legends/Threshold.tsrx +108 -0
  281. package/src/legend/legends/Threshold.tsrx.d.ts +23 -0
  282. package/src/legend/shapes/Circle.tsrx +27 -0
  283. package/src/legend/shapes/Circle.tsrx.d.ts +13 -0
  284. package/src/legend/shapes/Line.tsrx +33 -0
  285. package/src/legend/shapes/Line.tsrx.d.ts +13 -0
  286. package/src/legend/shapes/Rect.tsrx +23 -0
  287. package/src/legend/shapes/Rect.tsrx.d.ts +13 -0
  288. package/src/legend/types/index.ts +64 -0
  289. package/src/legend/util/defaultDomain.ts +21 -0
  290. package/src/legend/util/identity.ts +3 -0
  291. package/src/legend/util/labelTransformFactory.ts +18 -0
  292. package/src/legend/util/renderShape.ts +67 -0
  293. package/src/legend/util/valueOrIdentity.ts +12 -0
  294. package/src/marker/index.ts +9 -0
  295. package/src/marker/markers/Arrow.tsrx +30 -0
  296. package/src/marker/markers/Arrow.tsrx.d.ts +3 -0
  297. package/src/marker/markers/Circle.tsrx +26 -0
  298. package/src/marker/markers/Circle.tsrx.d.ts +3 -0
  299. package/src/marker/markers/Cross.tsrx +27 -0
  300. package/src/marker/markers/Cross.tsrx.d.ts +3 -0
  301. package/src/marker/markers/Line.tsrx +29 -0
  302. package/src/marker/markers/Line.tsrx.d.ts +3 -0
  303. package/src/marker/markers/Marker.tsrx +46 -0
  304. package/src/marker/markers/Marker.tsrx.d.ts +25 -0
  305. package/src/marker/markers/X.tsrx +6 -0
  306. package/src/marker/markers/X.tsrx.d.ts +3 -0
  307. package/src/mock-data/generators/genBin.ts +28 -0
  308. package/src/mock-data/generators/genBins.ts +27 -0
  309. package/src/mock-data/generators/genDateValue.ts +22 -0
  310. package/src/mock-data/generators/genPhyllotaxis.ts +27 -0
  311. package/src/mock-data/generators/genRandomNormalPoints.ts +32 -0
  312. package/src/mock-data/generators/genStats.ts +96 -0
  313. package/src/mock-data/generators/getSeededRandom.ts +9 -0
  314. package/src/mock-data/index.ts +40 -0
  315. package/src/mock-data/mocks/appleStock.ts +1289 -0
  316. package/src/mock-data/mocks/bitcoinPrice.ts +382 -0
  317. package/src/mock-data/mocks/browserUsage.ts +4053 -0
  318. package/src/mock-data/mocks/cityTemperature.ts +2207 -0
  319. package/src/mock-data/mocks/exoplanets.ts +5295 -0
  320. package/src/mock-data/mocks/groupDateValue.ts +22 -0
  321. package/src/mock-data/mocks/lesMiserables.ts +355 -0
  322. package/src/mock-data/mocks/letterFrequency.ts +35 -0
  323. package/src/mock-data/mocks/planets.ts +55 -0
  324. package/src/mock-data/mocks/shakespeare.ts +1870 -0
  325. package/src/network/DefaultLink.tsrx +16 -0
  326. package/src/network/DefaultLink.tsrx.d.ts +3 -0
  327. package/src/network/DefaultNode.tsrx +16 -0
  328. package/src/network/DefaultNode.tsrx.d.ts +9 -0
  329. package/src/network/Graph.tsrx +43 -0
  330. package/src/network/Graph.tsrx.d.ts +16 -0
  331. package/src/network/Links.tsrx +27 -0
  332. package/src/network/Links.tsrx.d.ts +12 -0
  333. package/src/network/Nodes.tsrx +41 -0
  334. package/src/network/Nodes.tsrx.d.ts +17 -0
  335. package/src/network/index.ts +11 -0
  336. package/src/network/types.ts +22 -0
  337. package/src/pattern/constants/index.ts +8 -0
  338. package/src/pattern/index.ts +16 -0
  339. package/src/pattern/patterns/Circles.tsrx +78 -0
  340. package/src/pattern/patterns/Circles.tsrx.d.ts +26 -0
  341. package/src/pattern/patterns/Hexagons.tsrx +63 -0
  342. package/src/pattern/patterns/Hexagons.tsrx.d.ts +26 -0
  343. package/src/pattern/patterns/Lines.tsrx +95 -0
  344. package/src/pattern/patterns/Lines.tsrx.d.ts +31 -0
  345. package/src/pattern/patterns/Path.tsrx +58 -0
  346. package/src/pattern/patterns/Path.tsrx.d.ts +28 -0
  347. package/src/pattern/patterns/Pattern.tsrx +25 -0
  348. package/src/pattern/patterns/Pattern.tsrx.d.ts +13 -0
  349. package/src/pattern/patterns/Waves.tsrx +69 -0
  350. package/src/pattern/patterns/Waves.tsrx.d.ts +26 -0
  351. package/src/point/Point.ts +20 -0
  352. package/src/point/index.ts +4 -0
  353. package/src/point/subtractPoints.ts +8 -0
  354. package/src/point/sumPoints.ts +8 -0
  355. package/src/react-spring/axis/AnimatedAxis.tsrx +28 -0
  356. package/src/react-spring/axis/AnimatedAxis.tsrx.d.ts +7 -0
  357. package/src/react-spring/axis/AnimatedTicks.tsrx +85 -0
  358. package/src/react-spring/axis/AnimatedTicks.tsrx.d.ts +6 -0
  359. package/src/react-spring/grid/AnimatedGridColumns.tsrx +38 -0
  360. package/src/react-spring/grid/AnimatedGridColumns.tsrx.d.ts +6 -0
  361. package/src/react-spring/grid/AnimatedGridLines.tsrx +47 -0
  362. package/src/react-spring/grid/AnimatedGridLines.tsrx.d.ts +10 -0
  363. package/src/react-spring/grid/AnimatedGridRows.tsrx +38 -0
  364. package/src/react-spring/grid/AnimatedGridRows.tsrx.d.ts +6 -0
  365. package/src/react-spring/index.ts +7 -0
  366. package/src/react-spring/spring-configs/useLineTransitionConfig.tsrx +102 -0
  367. package/src/react-spring/spring-configs/useLineTransitionConfig.tsrx.d.ts +50 -0
  368. package/src/react-spring/types/index.ts +1 -0
  369. package/src/responsive/components/ParentSize.tsrx +66 -0
  370. package/src/responsive/components/ParentSize.tsrx.d.ts +21 -0
  371. package/src/responsive/components/ScaleSVG.tsrx +44 -0
  372. package/src/responsive/components/ScaleSVG.tsrx.d.ts +19 -0
  373. package/src/responsive/enhancers/withParentSize.tsrx +101 -0
  374. package/src/responsive/enhancers/withParentSize.tsrx.d.ts +17 -0
  375. package/src/responsive/enhancers/withScreenSize.tsrx +64 -0
  376. package/src/responsive/enhancers/withScreenSize.tsrx.d.ts +17 -0
  377. package/src/responsive/hooks/useParentSize.tsrx +103 -0
  378. package/src/responsive/hooks/useParentSize.tsrx.d.ts +25 -0
  379. package/src/responsive/hooks/useScreenSize.tsrx +53 -0
  380. package/src/responsive/hooks/useScreenSize.tsrx.d.ts +12 -0
  381. package/src/responsive/index.ts +21 -0
  382. package/src/responsive/types/index.ts +36 -0
  383. package/src/responsive/utils/debounce.ts +59 -0
  384. package/src/sankey/Sankey.tsrx +157 -0
  385. package/src/sankey/Sankey.tsrx.d.ts +54 -0
  386. package/src/sankey/index.ts +20 -0
  387. package/src/sankey/types.ts +10 -0
  388. package/src/scale/createScale.ts +176 -0
  389. package/src/scale/index.ts +31 -0
  390. package/src/scale/operators/align.ts +16 -0
  391. package/src/scale/operators/base.ts +16 -0
  392. package/src/scale/operators/clamp.ts +16 -0
  393. package/src/scale/operators/constant.ts +16 -0
  394. package/src/scale/operators/domain.ts +25 -0
  395. package/src/scale/operators/exponent.ts +16 -0
  396. package/src/scale/operators/interpolate.ts +23 -0
  397. package/src/scale/operators/nice.ts +81 -0
  398. package/src/scale/operators/padding.ts +30 -0
  399. package/src/scale/operators/range.ts +22 -0
  400. package/src/scale/operators/reverse.ts +23 -0
  401. package/src/scale/operators/round.ts +32 -0
  402. package/src/scale/operators/scaleOperator.ts +86 -0
  403. package/src/scale/operators/unknown.ts +16 -0
  404. package/src/scale/operators/zero.ts +21 -0
  405. package/src/scale/react/index.ts +3 -0
  406. package/src/scale/react/useScale.tsrx +48 -0
  407. package/src/scale/react/useScale.tsrx.d.ts +20 -0
  408. package/src/scale/scales/band.ts +19 -0
  409. package/src/scale/scales/linear.ts +21 -0
  410. package/src/scale/scales/log.ts +21 -0
  411. package/src/scale/scales/ordinal.ts +13 -0
  412. package/src/scale/scales/point.ts +19 -0
  413. package/src/scale/scales/power.ts +22 -0
  414. package/src/scale/scales/quantile.ts +12 -0
  415. package/src/scale/scales/quantize.ts +18 -0
  416. package/src/scale/scales/radial.ts +19 -0
  417. package/src/scale/scales/squareRoot.ts +21 -0
  418. package/src/scale/scales/symlog.ts +21 -0
  419. package/src/scale/scales/threshold.ts +14 -0
  420. package/src/scale/scales/time.ts +20 -0
  421. package/src/scale/scales/utc.ts +20 -0
  422. package/src/scale/types/Base.ts +14 -0
  423. package/src/scale/types/BaseScaleConfig.ts +123 -0
  424. package/src/scale/types/Nice.ts +1 -0
  425. package/src/scale/types/Scale.ts +96 -0
  426. package/src/scale/types/ScaleConfig.ts +210 -0
  427. package/src/scale/types/ScaleInterpolate.ts +14 -0
  428. package/src/scale/updateScale.ts +163 -0
  429. package/src/scale/utils/coerceNumber.ts +10 -0
  430. package/src/scale/utils/createColorInterpolator.ts +43 -0
  431. package/src/scale/utils/getTicks.ts +25 -0
  432. package/src/scale/utils/inferScaleType.ts +60 -0
  433. package/src/scale/utils/isUtcScale.ts +16 -0
  434. package/src/scale/utils/scaleCanBeZeroed.ts +25 -0
  435. package/src/scale/utils/toString.ts +5 -0
  436. package/src/shape/index.ts +96 -0
  437. package/src/shape/react/index.ts +5 -0
  438. package/src/shape/react/usePie.tsrx +60 -0
  439. package/src/shape/react/usePie.tsrx.d.ts +20 -0
  440. package/src/shape/shapes/Arc.tsrx +60 -0
  441. package/src/shape/shapes/Arc.tsrx.d.ts +17 -0
  442. package/src/shape/shapes/Area.tsrx +32 -0
  443. package/src/shape/shapes/Area.tsrx.d.ts +4 -0
  444. package/src/shape/shapes/AreaClosed.tsrx +47 -0
  445. package/src/shape/shapes/AreaClosed.tsrx.d.ts +6 -0
  446. package/src/shape/shapes/AreaStack.tsrx +78 -0
  447. package/src/shape/shapes/AreaStack.tsrx.d.ts +7 -0
  448. package/src/shape/shapes/Bar.tsrx +18 -0
  449. package/src/shape/shapes/Bar.tsrx.d.ts +10 -0
  450. package/src/shape/shapes/BarGroup.tsrx +131 -0
  451. package/src/shape/shapes/BarGroup.tsrx.d.ts +57 -0
  452. package/src/shape/shapes/BarGroupHorizontal.tsrx +100 -0
  453. package/src/shape/shapes/BarGroupHorizontal.tsrx.d.ts +21 -0
  454. package/src/shape/shapes/BarRounded.tsrx +153 -0
  455. package/src/shape/shapes/BarRounded.tsrx.d.ts +44 -0
  456. package/src/shape/shapes/BarStack.tsrx +103 -0
  457. package/src/shape/shapes/BarStack.tsrx.d.ts +13 -0
  458. package/src/shape/shapes/BarStackHorizontal.tsrx +99 -0
  459. package/src/shape/shapes/BarStackHorizontal.tsrx.d.ts +13 -0
  460. package/src/shape/shapes/Circle.tsrx +18 -0
  461. package/src/shape/shapes/Circle.tsrx.d.ts +10 -0
  462. package/src/shape/shapes/Line.tsrx +43 -0
  463. package/src/shape/shapes/Line.tsrx.d.ts +21 -0
  464. package/src/shape/shapes/LinePath.tsrx +44 -0
  465. package/src/shape/shapes/LinePath.tsrx.d.ts +19 -0
  466. package/src/shape/shapes/LineRadial.tsrx +42 -0
  467. package/src/shape/shapes/LineRadial.tsrx.d.ts +12 -0
  468. package/src/shape/shapes/Pie.tsrx +87 -0
  469. package/src/shape/shapes/Pie.tsrx.d.ts +30 -0
  470. package/src/shape/shapes/Polygon.tsrx +85 -0
  471. package/src/shape/shapes/Polygon.tsrx.d.ts +37 -0
  472. package/src/shape/shapes/SplitLinePath.tsrx +86 -0
  473. package/src/shape/shapes/SplitLinePath.tsrx.d.ts +23 -0
  474. package/src/shape/shapes/Stack.tsrx +83 -0
  475. package/src/shape/shapes/Stack.tsrx.d.ts +25 -0
  476. package/src/shape/shapes/link/curve/LinkHorizontalCurve.tsrx +63 -0
  477. package/src/shape/shapes/link/curve/LinkHorizontalCurve.tsrx.d.ts +11 -0
  478. package/src/shape/shapes/link/curve/LinkRadialCurve.tsrx +72 -0
  479. package/src/shape/shapes/link/curve/LinkRadialCurve.tsrx.d.ts +9 -0
  480. package/src/shape/shapes/link/curve/LinkVerticalCurve.tsrx +62 -0
  481. package/src/shape/shapes/link/curve/LinkVerticalCurve.tsrx.d.ts +9 -0
  482. package/src/shape/shapes/link/diagonal/LinkHorizontal.tsrx +47 -0
  483. package/src/shape/shapes/link/diagonal/LinkHorizontal.tsrx.d.ts +7 -0
  484. package/src/shape/shapes/link/diagonal/LinkRadial.tsrx +49 -0
  485. package/src/shape/shapes/link/diagonal/LinkRadial.tsrx.d.ts +9 -0
  486. package/src/shape/shapes/link/diagonal/LinkVertical.tsrx +46 -0
  487. package/src/shape/shapes/link/diagonal/LinkVertical.tsrx.d.ts +6 -0
  488. package/src/shape/shapes/link/line/LinkHorizontalLine.tsrx +53 -0
  489. package/src/shape/shapes/link/line/LinkHorizontalLine.tsrx.d.ts +7 -0
  490. package/src/shape/shapes/link/line/LinkRadialLine.tsrx +58 -0
  491. package/src/shape/shapes/link/line/LinkRadialLine.tsrx.d.ts +5 -0
  492. package/src/shape/shapes/link/line/LinkVerticalLine.tsrx +53 -0
  493. package/src/shape/shapes/link/line/LinkVerticalLine.tsrx.d.ts +5 -0
  494. package/src/shape/shapes/link/step/LinkHorizontalStep.tsrx +59 -0
  495. package/src/shape/shapes/link/step/LinkHorizontalStep.tsrx.d.ts +12 -0
  496. package/src/shape/shapes/link/step/LinkRadialStep.tsrx +68 -0
  497. package/src/shape/shapes/link/step/LinkRadialStep.tsrx.d.ts +8 -0
  498. package/src/shape/shapes/link/step/LinkVerticalStep.tsrx +59 -0
  499. package/src/shape/shapes/link/step/LinkVerticalStep.tsrx.d.ts +10 -0
  500. package/src/shape/types/D3ShapeConfig.ts +91 -0
  501. package/src/shape/types/accessor.ts +9 -0
  502. package/src/shape/types/area.ts +14 -0
  503. package/src/shape/types/barGroup.ts +57 -0
  504. package/src/shape/types/barStack.ts +55 -0
  505. package/src/shape/types/base.ts +23 -0
  506. package/src/shape/types/index.ts +8 -0
  507. package/src/shape/types/link.ts +37 -0
  508. package/src/shape/types/stack.ts +15 -0
  509. package/src/shape/util/D3ShapeFactories.ts +125 -0
  510. package/src/shape/util/accessors.ts +25 -0
  511. package/src/shape/util/getBandwidth.ts +11 -0
  512. package/src/shape/util/getOrCreateMeasurementElement.ts +28 -0
  513. package/src/shape/util/getSplitLineSegments.ts +100 -0
  514. package/src/shape/util/setNumberOrNumberAccessor.ts +11 -0
  515. package/src/shape/util/stackOffset.ts +23 -0
  516. package/src/shape/util/stackOrder.ts +23 -0
  517. package/src/shape/util/trigonometry.ts +1 -0
  518. package/src/stats/BoxPlot.tsrx +257 -0
  519. package/src/stats/BoxPlot.tsrx.d.ts +51 -0
  520. package/src/stats/ViolinPlot.tsrx +78 -0
  521. package/src/stats/ViolinPlot.tsrx.d.ts +21 -0
  522. package/src/stats/index.ts +8 -0
  523. package/src/stats/types.ts +56 -0
  524. package/src/stats/util/computeStats.ts +71 -0
  525. package/src/text/Text.tsrx +43 -0
  526. package/src/text/Text.tsrx.d.ts +4 -0
  527. package/src/text/hooks/useText.tsrx +125 -0
  528. package/src/text/hooks/useText.tsrx.d.ts +7 -0
  529. package/src/text/index.ts +5 -0
  530. package/src/text/types.ts +54 -0
  531. package/src/text/util/getStringWidth.ts +38 -0
  532. package/src/text/util/memoize.ts +13 -0
  533. package/src/theme/compat/fromXYChartTheme.ts +132 -0
  534. package/src/theme/index.ts +14 -0
  535. package/src/theme/provider/ThemeScope.tsrx +58 -0
  536. package/src/theme/provider/ThemeScope.tsrx.d.ts +23 -0
  537. package/src/theme/provider/defineTheme.ts +67 -0
  538. package/src/theme/react/ThemeContext.tsrx +7 -0
  539. package/src/theme/react/ThemeContext.tsrx.d.ts +4 -0
  540. package/src/theme/react/ThemeProvider.tsrx +14 -0
  541. package/src/theme/react/ThemeProvider.tsrx.d.ts +4 -0
  542. package/src/theme/react/categoricalColor.ts +32 -0
  543. package/src/theme/react/index.ts +29 -0
  544. package/src/theme/react/useAxisStyle.tsrx +100 -0
  545. package/src/theme/react/useAxisStyle.tsrx.d.ts +23 -0
  546. package/src/theme/react/useCategoricalScale.tsrx +23 -0
  547. package/src/theme/react/useCategoricalScale.tsrx.d.ts +3 -0
  548. package/src/theme/react/useChartConfig.tsrx +108 -0
  549. package/src/theme/react/useChartConfig.tsrx.d.ts +15 -0
  550. package/src/theme/react/useColor.tsrx +18 -0
  551. package/src/theme/react/useColor.tsrx.d.ts +4 -0
  552. package/src/theme/react/useColorScale.tsrx +39 -0
  553. package/src/theme/react/useColorScale.tsrx.d.ts +7 -0
  554. package/src/theme/react/useGridStyle.tsrx +15 -0
  555. package/src/theme/react/useGridStyle.tsrx.d.ts +6 -0
  556. package/src/theme/react/useTheme.tsrx +7 -0
  557. package/src/theme/react/useTheme.tsrx.d.ts +3 -0
  558. package/src/theme/react/warn.ts +3 -0
  559. package/src/theme/runtime/createRuntimeTheme.ts +70 -0
  560. package/src/theme/runtime/resolveThemeInput.ts +19 -0
  561. package/src/theme/tokens/categorical.ts +18 -0
  562. package/src/theme/tokens/cssVar.ts +5 -0
  563. package/src/theme/tokens/dark.ts +51 -0
  564. package/src/theme/tokens/light.ts +62 -0
  565. package/src/theme/tokens/names.ts +49 -0
  566. package/src/theme/tokens/style.ts +45 -0
  567. package/src/theme/tokens/types.ts +118 -0
  568. package/src/theme/utils/warn.ts +5 -0
  569. package/src/threshold/Threshold.tsrx +112 -0
  570. package/src/threshold/Threshold.tsrx.d.ts +45 -0
  571. package/src/threshold/index.ts +2 -0
  572. package/src/tooltip/Portal.tsrx +27 -0
  573. package/src/tooltip/Portal.tsrx.d.ts +10 -0
  574. package/src/tooltip/context/TooltipPositionContext.tsrx +16 -0
  575. package/src/tooltip/context/TooltipPositionContext.tsrx.d.ts +11 -0
  576. package/src/tooltip/enhancers/withTooltip.tsrx +29 -0
  577. package/src/tooltip/enhancers/withTooltip.tsrx.d.ts +8 -0
  578. package/src/tooltip/floating/ChartTooltip.tsrx +95 -0
  579. package/src/tooltip/floating/ChartTooltip.tsrx.d.ts +29 -0
  580. package/src/tooltip/floating/ChartTooltipContent.tsrx +219 -0
  581. package/src/tooltip/floating/ChartTooltipContent.tsrx.d.ts +57 -0
  582. package/src/tooltip/floating/FloatingTooltip.tsrx +269 -0
  583. package/src/tooltip/floating/FloatingTooltip.tsrx.d.ts +20 -0
  584. package/src/tooltip/floating/anchors.ts +146 -0
  585. package/src/tooltip/floating/context.tsrx +29 -0
  586. package/src/tooltip/floating/context.tsrx.d.ts +9 -0
  587. package/src/tooltip/floating/index.ts +61 -0
  588. package/src/tooltip/floating/internalTypes.ts +125 -0
  589. package/src/tooltip/floating/middleware.ts +104 -0
  590. package/src/tooltip/floating/types.ts +198 -0
  591. package/src/tooltip/floating/useChartTooltip.tsrx +180 -0
  592. package/src/tooltip/floating/useChartTooltip.tsrx.d.ts +40 -0
  593. package/src/tooltip/floating/useFloatingTooltip.tsrx +301 -0
  594. package/src/tooltip/floating/useFloatingTooltip.tsrx.d.ts +3 -0
  595. package/src/tooltip/hooks/useTooltip.tsrx +67 -0
  596. package/src/tooltip/hooks/useTooltip.tsrx.d.ts +25 -0
  597. package/src/tooltip/hooks/useTooltipInPortal.tsrx +92 -0
  598. package/src/tooltip/hooks/useTooltipInPortal.tsrx.d.ts +34 -0
  599. package/src/tooltip/index.ts +20 -0
  600. package/src/tooltip/tooltips/Tooltip.tsrx +71 -0
  601. package/src/tooltip/tooltips/Tooltip.tsrx.d.ts +39 -0
  602. package/src/tooltip/tooltips/TooltipWithBounds.tsrx +82 -0
  603. package/src/tooltip/tooltips/TooltipWithBounds.tsrx.d.ts +9 -0
  604. package/src/voronoi/components/VoronoiPolygon.tsrx +32 -0
  605. package/src/voronoi/components/VoronoiPolygon.tsrx.d.ts +14 -0
  606. package/src/voronoi/index.ts +6 -0
  607. package/src/voronoi/react/index.ts +5 -0
  608. package/src/voronoi/react/useVoronoi.tsrx +30 -0
  609. package/src/voronoi/react/useVoronoi.tsrx.d.ts +10 -0
  610. package/src/voronoi/voronoi.ts +32 -0
  611. package/src/wordcloud/Wordcloud.tsrx +20 -0
  612. package/src/wordcloud/Wordcloud.tsrx.d.ts +7 -0
  613. package/src/wordcloud/d3-cloud.d.ts +1 -0
  614. package/src/wordcloud/index.ts +3 -0
  615. package/src/wordcloud/types.ts +154 -0
  616. package/src/wordcloud/useWordcloud.tsrx +277 -0
  617. package/src/wordcloud/useWordcloud.tsrx.d.ts +16 -0
  618. package/src/xychart/classes/DataRegistry.ts +53 -0
  619. package/src/xychart/components/Tooltip.tsrx +356 -0
  620. package/src/xychart/components/Tooltip.tsrx.d.ts +57 -0
  621. package/src/xychart/components/XYChart.tsrx +196 -0
  622. package/src/xychart/components/XYChart.tsrx.d.ts +47 -0
  623. package/src/xychart/components/annotation/AnimatedAnnotation.tsrx +72 -0
  624. package/src/xychart/components/annotation/AnimatedAnnotation.tsrx.d.ts +7 -0
  625. package/src/xychart/components/annotation/Annotation.tsrx +20 -0
  626. package/src/xychart/components/annotation/Annotation.tsrx.d.ts +7 -0
  627. package/src/xychart/components/annotation/AnnotationCircleSubject.tsrx +12 -0
  628. package/src/xychart/components/annotation/AnnotationCircleSubject.tsrx.d.ts +5 -0
  629. package/src/xychart/components/annotation/AnnotationConnector.tsrx +12 -0
  630. package/src/xychart/components/annotation/AnnotationConnector.tsrx.d.ts +5 -0
  631. package/src/xychart/components/annotation/AnnotationLabel.tsrx +29 -0
  632. package/src/xychart/components/annotation/AnnotationLabel.tsrx.d.ts +5 -0
  633. package/src/xychart/components/annotation/AnnotationLineSubject.tsrx +28 -0
  634. package/src/xychart/components/annotation/AnnotationLineSubject.tsrx.d.ts +9 -0
  635. package/src/xychart/components/annotation/private/BaseAnnotation.tsrx +86 -0
  636. package/src/xychart/components/annotation/private/BaseAnnotation.tsrx.d.ts +18 -0
  637. package/src/xychart/components/axis/AnimatedAxis.tsrx +15 -0
  638. package/src/xychart/components/axis/AnimatedAxis.tsrx.d.ts +9 -0
  639. package/src/xychart/components/axis/Axis.tsrx +11 -0
  640. package/src/xychart/components/axis/Axis.tsrx.d.ts +5 -0
  641. package/src/xychart/components/axis/BaseAxis.tsrx +94 -0
  642. package/src/xychart/components/axis/BaseAxis.tsrx.d.ts +15 -0
  643. package/src/xychart/components/grid/AnimatedGrid.tsrx +34 -0
  644. package/src/xychart/components/grid/AnimatedGrid.tsrx.d.ts +8 -0
  645. package/src/xychart/components/grid/BaseGrid.tsrx +49 -0
  646. package/src/xychart/components/grid/BaseGrid.tsrx.d.ts +16 -0
  647. package/src/xychart/components/grid/Grid.tsrx +9 -0
  648. package/src/xychart/components/grid/Grid.tsrx.d.ts +4 -0
  649. package/src/xychart/components/series/AnimatedAreaSeries.tsrx +8 -0
  650. package/src/xychart/components/series/AnimatedAreaSeries.tsrx.d.ts +4 -0
  651. package/src/xychart/components/series/AnimatedAreaStack.tsrx +8 -0
  652. package/src/xychart/components/series/AnimatedAreaStack.tsrx.d.ts +4 -0
  653. package/src/xychart/components/series/AnimatedBarGroup.tsrx +8 -0
  654. package/src/xychart/components/series/AnimatedBarGroup.tsrx.d.ts +4 -0
  655. package/src/xychart/components/series/AnimatedBarSeries.tsrx +15 -0
  656. package/src/xychart/components/series/AnimatedBarSeries.tsrx.d.ts +4 -0
  657. package/src/xychart/components/series/AnimatedBarStack.tsrx +8 -0
  658. package/src/xychart/components/series/AnimatedBarStack.tsrx.d.ts +4 -0
  659. package/src/xychart/components/series/AnimatedGlyphSeries.tsrx +28 -0
  660. package/src/xychart/components/series/AnimatedGlyphSeries.tsrx.d.ts +8 -0
  661. package/src/xychart/components/series/AnimatedLineSeries.tsrx +8 -0
  662. package/src/xychart/components/series/AnimatedLineSeries.tsrx.d.ts +4 -0
  663. package/src/xychart/components/series/AreaSeries.tsrx +7 -0
  664. package/src/xychart/components/series/AreaSeries.tsrx.d.ts +4 -0
  665. package/src/xychart/components/series/AreaStack.tsrx +7 -0
  666. package/src/xychart/components/series/AreaStack.tsrx.d.ts +4 -0
  667. package/src/xychart/components/series/BarGroup.tsrx +8 -0
  668. package/src/xychart/components/series/BarGroup.tsrx.d.ts +4 -0
  669. package/src/xychart/components/series/BarSeries.tsrx +13 -0
  670. package/src/xychart/components/series/BarSeries.tsrx.d.ts +5 -0
  671. package/src/xychart/components/series/BarStack.tsrx +8 -0
  672. package/src/xychart/components/series/BarStack.tsrx.d.ts +4 -0
  673. package/src/xychart/components/series/GlyphSeries.tsrx +38 -0
  674. package/src/xychart/components/series/GlyphSeries.tsrx.d.ts +8 -0
  675. package/src/xychart/components/series/LineSeries.tsrx +7 -0
  676. package/src/xychart/components/series/LineSeries.tsrx.d.ts +4 -0
  677. package/src/xychart/components/series/private/AnimatedBars.tsrx +151 -0
  678. package/src/xychart/components/series/private/AnimatedBars.tsrx.d.ts +5 -0
  679. package/src/xychart/components/series/private/AnimatedGlyphs.tsrx +108 -0
  680. package/src/xychart/components/series/private/AnimatedGlyphs.tsrx.d.ts +40 -0
  681. package/src/xychart/components/series/private/AnimatedPath.tsrx +47 -0
  682. package/src/xychart/components/series/private/AnimatedPath.tsrx.d.ts +4 -0
  683. package/src/xychart/components/series/private/Bars.tsrx +45 -0
  684. package/src/xychart/components/series/private/Bars.tsrx.d.ts +4 -0
  685. package/src/xychart/components/series/private/BaseAreaSeries.tsrx +187 -0
  686. package/src/xychart/components/series/private/BaseAreaSeries.tsrx.d.ts +20 -0
  687. package/src/xychart/components/series/private/BaseAreaStack.tsrx +259 -0
  688. package/src/xychart/components/series/private/BaseAreaStack.tsrx.d.ts +19 -0
  689. package/src/xychart/components/series/private/BaseBarGroup.tsrx +198 -0
  690. package/src/xychart/components/series/private/BaseBarGroup.tsrx.d.ts +15 -0
  691. package/src/xychart/components/series/private/BaseBarSeries.tsrx +154 -0
  692. package/src/xychart/components/series/private/BaseBarSeries.tsrx.d.ts +16 -0
  693. package/src/xychart/components/series/private/BaseBarStack.tsrx +192 -0
  694. package/src/xychart/components/series/private/BaseBarStack.tsrx.d.ts +14 -0
  695. package/src/xychart/components/series/private/BaseGlyphSeries.tsrx +107 -0
  696. package/src/xychart/components/series/private/BaseGlyphSeries.tsrx.d.ts +14 -0
  697. package/src/xychart/components/series/private/BaseLineSeries.tsrx +135 -0
  698. package/src/xychart/components/series/private/BaseLineSeries.tsrx.d.ts +14 -0
  699. package/src/xychart/components/series/private/defaultRenderGlyph.tsrx +29 -0
  700. package/src/xychart/components/series/private/defaultRenderGlyph.tsrx.d.ts +3 -0
  701. package/src/xychart/constants.ts +9 -0
  702. package/src/xychart/context/DataContext.tsrx +23 -0
  703. package/src/xychart/context/DataContext.tsrx.d.ts +11 -0
  704. package/src/xychart/context/EventEmitterContext.tsrx +6 -0
  705. package/src/xychart/context/EventEmitterContext.tsrx.d.ts +3 -0
  706. package/src/xychart/context/ThemeContext.tsrx +7 -0
  707. package/src/xychart/context/ThemeContext.tsrx.d.ts +4 -0
  708. package/src/xychart/context/TooltipContext.tsrx +7 -0
  709. package/src/xychart/context/TooltipContext.tsrx.d.ts +3 -0
  710. package/src/xychart/hooks/useDataRegistry.tsrx +41 -0
  711. package/src/xychart/hooks/useDataRegistry.tsrx.d.ts +5 -0
  712. package/src/xychart/hooks/useDimensions.tsrx +40 -0
  713. package/src/xychart/hooks/useDimensions.tsrx.d.ts +15 -0
  714. package/src/xychart/hooks/useEventEmitter.tsrx +62 -0
  715. package/src/xychart/hooks/useEventEmitter.tsrx.d.ts +24 -0
  716. package/src/xychart/hooks/useEventEmitters.tsrx +64 -0
  717. package/src/xychart/hooks/useEventEmitters.tsrx.d.ts +25 -0
  718. package/src/xychart/hooks/useEventHandlers.tsrx +162 -0
  719. package/src/xychart/hooks/useEventHandlers.tsrx.d.ts +31 -0
  720. package/src/xychart/hooks/useScales.tsrx +113 -0
  721. package/src/xychart/hooks/useScales.tsrx.d.ts +15 -0
  722. package/src/xychart/hooks/useSeriesEvents.tsrx +82 -0
  723. package/src/xychart/hooks/useSeriesEvents.tsrx.d.ts +18 -0
  724. package/src/xychart/hooks/useStackedData.tsrx +96 -0
  725. package/src/xychart/hooks/useStackedData.tsrx.d.ts +14 -0
  726. package/src/xychart/index.ts +56 -0
  727. package/src/xychart/providers/DataProvider.tsrx +141 -0
  728. package/src/xychart/providers/DataProvider.tsrx.d.ts +22 -0
  729. package/src/xychart/providers/EventEmitterProvider.tsrx +10 -0
  730. package/src/xychart/providers/EventEmitterProvider.tsrx.d.ts +6 -0
  731. package/src/xychart/providers/ThemeProvider.tsrx +13 -0
  732. package/src/xychart/providers/ThemeProvider.tsrx.d.ts +8 -0
  733. package/src/xychart/providers/TooltipProvider.tsrx +101 -0
  734. package/src/xychart/providers/TooltipProvider.tsrx.d.ts +10 -0
  735. package/src/xychart/theme/buildChartTheme.ts +178 -0
  736. package/src/xychart/theme/colors.ts +174 -0
  737. package/src/xychart/theme/themes/dark.ts +24 -0
  738. package/src/xychart/theme/themes/light.ts +16 -0
  739. package/src/xychart/typeguards/events.ts +12 -0
  740. package/src/xychart/typeguards/isValidNumber.ts +3 -0
  741. package/src/xychart/types/axis.ts +3 -0
  742. package/src/xychart/types/data.ts +57 -0
  743. package/src/xychart/types/event.ts +30 -0
  744. package/src/xychart/types/index.ts +6 -0
  745. package/src/xychart/types/series.ts +219 -0
  746. package/src/xychart/types/theme.ts +50 -0
  747. package/src/xychart/types/tooltip.ts +24 -0
  748. package/src/xychart/utils/cleanColorString.ts +4 -0
  749. package/src/xychart/utils/collectDataRegistryEntries.ts +50 -0
  750. package/src/xychart/utils/combineBarStackData.ts +51 -0
  751. package/src/xychart/utils/findNearestDatumSingleDimension.ts +64 -0
  752. package/src/xychart/utils/findNearestDatumX.ts +34 -0
  753. package/src/xychart/utils/findNearestDatumXY.ts +42 -0
  754. package/src/xychart/utils/findNearestDatumY.ts +34 -0
  755. package/src/xychart/utils/findNearestGroupDatum.ts +50 -0
  756. package/src/xychart/utils/findNearestStackDatum.ts +44 -0
  757. package/src/xychart/utils/getBarStackRegistryData.ts +49 -0
  758. package/src/xychart/utils/getChildrenAndGrandchildrenWithProps.ts +24 -0
  759. package/src/xychart/utils/getScaleBandwidth.ts +7 -0
  760. package/src/xychart/utils/getScaleBaseline.ts +24 -0
  761. package/src/xychart/utils/getScaledValueFactory.ts +21 -0
  762. package/src/xychart/utils/isDiscreteScale.ts +9 -0
  763. package/src/zoom/Zoom.tsrx +375 -0
  764. package/src/zoom/Zoom.tsrx.d.ts +62 -0
  765. package/src/zoom/index.ts +16 -0
  766. package/src/zoom/types.ts +120 -0
  767. package/src/zoom/util/matrix.ts +104 -0
@@ -0,0 +1,192 @@
1
+ import { useContext, useCallback } from 'octane';
2
+ import type { ReactElement, FC } from 'react';
3
+ import type { SeriesPoint } from 'd3-shape';
4
+ import type { PositionScale, StackPathConfig } from '@octanejs/visx/shape';
5
+ import { getFirstItem, getSecondItem, getBandwidth } from '@octanejs/visx/shape';
6
+
7
+ import type { BaseBarSeriesProps } from './BaseBarSeries.tsrx';
8
+ import DataContext from '../../../context/DataContext.tsrx';
9
+ import type {
10
+ Bar,
11
+ BarsProps,
12
+ BarStackDatum,
13
+ CombinedStackData,
14
+ DataContextType,
15
+ NearestDatumArgs,
16
+ NearestDatumReturnType,
17
+ SeriesProps,
18
+ } from '../../../types';
19
+ import isValidNumber from '../../../typeguards/isValidNumber';
20
+ import { getStackValue } from '../../../utils/combineBarStackData';
21
+ import { BARSTACK_EVENT_SOURCE, XYCHART_EVENT_SOURCE } from '../../../constants';
22
+ import useSeriesEvents from '../../../hooks/useSeriesEvents.tsrx';
23
+ import findNearestStackDatum from '../../../utils/findNearestStackDatum';
24
+ import useStackedData from '../../../hooks/useStackedData.tsrx';
25
+
26
+ type BarStackChildProps<XScale extends PositionScale, YScale extends PositionScale, Datum extends object> =
27
+ Omit<BaseBarSeriesProps<XScale, YScale, Datum>, 'BarsComponent'>;
28
+
29
+ type StackBar<XScale extends PositionScale, YScale extends PositionScale> =
30
+ SeriesPoint<CombinedStackData<XScale, YScale>>;
31
+
32
+ export type BaseBarStackProps<XScale extends PositionScale, YScale extends PositionScale, Datum extends object> =
33
+ {
34
+ /** `BarSeries` elements, note we can't strictly enforce this with TS yet. */
35
+ children: | ReactElement<BarStackChildProps<XScale, YScale, Datum>>
36
+ | ReactElement<BarStackChildProps<XScale, YScale, Datum>>[];
37
+ /** Rendered component which is passed BarsProps by BaseBarStack after processing. */
38
+ BarsComponent: FC<BarsProps<XScale, YScale>>;
39
+ } & Pick<StackPathConfig<Datum, string>, | 'offset'
40
+ | 'order'> & Pick<SeriesProps<XScale, YScale, Datum>, | 'onPointerMove'
41
+ | 'onPointerOut'
42
+ | 'onPointerUp'
43
+ | 'onPointerDown'
44
+ | 'onBlur'
45
+ | 'onFocus'
46
+ | 'enableEvents'>;
47
+
48
+ function BaseBarStack<XScale extends PositionScale, YScale extends PositionScale, Datum extends object>({
49
+ children,
50
+ order,
51
+ offset,
52
+ BarsComponent,
53
+ onBlur,
54
+ onFocus,
55
+ onPointerMove,
56
+ onPointerOut,
57
+ onPointerUp,
58
+ onPointerDown,
59
+ enableEvents = true,
60
+ }: BaseBarStackProps<XScale, YScale, Datum>) {
61
+ const { colorScale, dataRegistry, horizontal, xScale, yScale } = useContext(
62
+ DataContext,
63
+ ) as unknown as DataContextType<XScale, YScale, BarStackDatum<XScale, YScale>>;
64
+
65
+ const { seriesChildren, dataKeys, stackedData } = useStackedData<
66
+ XScale,
67
+ YScale,
68
+ Datum,
69
+ BaseBarSeriesProps<XScale, YScale, Datum>
70
+ >({
71
+ children,
72
+ order,
73
+ offset,
74
+ });
75
+
76
+ // custom logic to find the nearest AreaStackDatum (context) and return the original Datum (props)
77
+ const findNearestDatum = useCallback(
78
+ (params: NearestDatumArgs<XScale, YScale, BarStackDatum<XScale, YScale>>): NearestDatumReturnType<Datum> => {
79
+ const childData = seriesChildren.find(
80
+ (child) => child.props.dataKey === params.dataKey,
81
+ )?.props?.data;
82
+ return childData ? findNearestStackDatum(params, childData, horizontal) : null;
83
+ },
84
+ [seriesChildren, horizontal],
85
+ );
86
+
87
+ const ownEventSourceKey = `${BARSTACK_EVENT_SOURCE}-${dataKeys.join('-')}`;
88
+ const eventEmitters = useSeriesEvents<XScale, YScale, Datum>({
89
+ dataKey: dataKeys,
90
+ enableEvents,
91
+ // @ts-expect-error Datum input + return type are expected to be the same type but they differ for BarStack (registry data is StackedDatum, return type is user Datum)
92
+ findNearestDatum,
93
+ onBlur,
94
+ onFocus,
95
+ onPointerMove,
96
+ onPointerOut,
97
+ onPointerUp,
98
+ onPointerDown,
99
+ source: ownEventSourceKey,
100
+ allowedSources: [XYCHART_EVENT_SOURCE, ownEventSourceKey],
101
+ });
102
+
103
+ const registryEntries = dataKeys.map((key) => dataRegistry.get(key));
104
+
105
+ // if scales and data are not available in the registry, bail
106
+ if (registryEntries.some((entry) => entry == null) || !xScale || !yScale || !colorScale) {
107
+ return null;
108
+ }
109
+
110
+ const barThickness = getBandwidth(horizontal ? yScale : xScale);
111
+ const halfBarThickness = barThickness / 2;
112
+
113
+ let getWidth: (bar: StackBar<XScale, YScale>) => number | undefined;
114
+ let getHeight: (bar: StackBar<XScale, YScale>) => number | undefined;
115
+ let getX: (bar: StackBar<XScale, YScale>) => number | undefined;
116
+ let getY: (bar: StackBar<XScale, YScale>) => number | undefined;
117
+
118
+ if (horizontal) {
119
+ getWidth = (bar) => (xScale(getSecondItem(bar)) ?? NaN) - (xScale(getFirstItem(bar)) ?? NaN);
120
+ getHeight = () => barThickness;
121
+ getX = (bar) => xScale(getFirstItem(bar));
122
+ getY = (bar) => 'bandwidth' in yScale
123
+ ? yScale(getStackValue(bar.data))
124
+ : Math.max((yScale(getStackValue(bar.data)) ?? NaN) - halfBarThickness);
125
+ } else {
126
+ getWidth = () => barThickness;
127
+ getHeight = (bar) => (yScale(getFirstItem(bar)) ?? NaN) - (yScale(getSecondItem(bar)) ?? NaN);
128
+ getX = (bar) => 'bandwidth' in xScale
129
+ ? xScale(getStackValue(bar.data))
130
+ : Math.max((xScale(getStackValue(bar.data)) ?? NaN) - halfBarThickness);
131
+ getY = (bar) => yScale(getSecondItem(bar));
132
+ }
133
+
134
+ const barSeries = stackedData.map((barStack, stackIndex) => {
135
+ const entry = dataRegistry.get(barStack.key);
136
+ if (!entry) return null;
137
+
138
+ // get props from child BarSeries, if available
139
+ const childBarSeries: ReactElement<BaseBarSeriesProps<XScale, YScale, Datum>> | undefined =
140
+ seriesChildren.find((child) => child.props.dataKey === barStack.key);
141
+ const { colorAccessor, radius, radiusAll, radiusBottom, radiusLeft, radiusRight, radiusTop } =
142
+ childBarSeries?.props || {};
143
+
144
+ return {
145
+ key: barStack.key,
146
+ radius,
147
+ radiusAll,
148
+ radiusBottom,
149
+ radiusLeft,
150
+ radiusRight,
151
+ radiusTop,
152
+ bars: barStack.map((bar, index) => {
153
+ const barX = getX(bar);
154
+ if (!isValidNumber(barX)) return null;
155
+ const barY = getY(bar);
156
+ if (!isValidNumber(barY)) return null;
157
+ const barWidth = getWidth(bar);
158
+ if (!isValidNumber(barWidth)) return null;
159
+ const barHeight = getHeight(bar);
160
+ if (!isValidNumber(barHeight)) return null;
161
+
162
+ const barSeriesDatum = colorAccessor ? childBarSeries?.props?.data[index] : null;
163
+
164
+ return {
165
+ key: `${stackIndex}-${barStack.key}-${index}`,
166
+ x: barX,
167
+ y: barY,
168
+ width: barWidth,
169
+ height: barHeight,
170
+ fill: barSeriesDatum && colorAccessor
171
+ ? colorAccessor(barSeriesDatum, index)
172
+ : colorScale(barStack.key),
173
+ };
174
+ }).filter((bar) => bar) as Bar[],
175
+ };
176
+ }).filter((series) => series);
177
+
178
+ return <g className="visx-bar-stack">{barSeries.map(
179
+ (series) =>
180
+ series &&
181
+ <BarsComponent
182
+ horizontal={horizontal}
183
+ xScale={xScale}
184
+ yScale={yScale}
185
+ {...series}
186
+ {...eventEmitters}
187
+ key={series.key}
188
+ />,
189
+ )}</g>;
190
+ }
191
+
192
+ export default BaseBarStack
@@ -0,0 +1,14 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { ReactElement, FC } from 'react';
3
+ import type { PositionScale, StackPathConfig } from '@octanejs/visx/shape';
4
+ import type { BaseBarSeriesProps } from './BaseBarSeries.tsrx';
5
+ import type { BarsProps, SeriesProps } from '../../../types';
6
+ type BarStackChildProps<XScale extends PositionScale, YScale extends PositionScale, Datum extends object> = Omit<BaseBarSeriesProps<XScale, YScale, Datum>, 'BarsComponent'>;
7
+ export type BaseBarStackProps<XScale extends PositionScale, YScale extends PositionScale, Datum extends object> = {
8
+ /** `BarSeries` elements, note we can't strictly enforce this with TS yet. */
9
+ children: ReactElement<BarStackChildProps<XScale, YScale, Datum>> | ReactElement<BarStackChildProps<XScale, YScale, Datum>>[];
10
+ /** Rendered component which is passed BarsProps by BaseBarStack after processing. */
11
+ BarsComponent: FC<BarsProps<XScale, YScale>>;
12
+ } & Pick<StackPathConfig<Datum, string>, 'offset' | 'order'> & Pick<SeriesProps<XScale, YScale, Datum>, 'onPointerMove' | 'onPointerOut' | 'onPointerUp' | 'onPointerDown' | 'onBlur' | 'onFocus' | 'enableEvents'>;
13
+ declare function BaseBarStack<XScale extends PositionScale, YScale extends PositionScale, Datum extends object>({ children, order, offset, BarsComponent, onBlur, onFocus, onPointerMove, onPointerOut, onPointerUp, onPointerDown, enableEvents, }: BaseBarStackProps<XScale, YScale, Datum>): import("react").JSX.Element | null;
14
+ export default BaseBarStack;
@@ -0,0 +1,107 @@
1
+ import { useContext, useEffect, useMemo } from 'octane';
2
+ import type { ReactNode } from 'react';
3
+ import type { AxisScale } from '@octanejs/visx/axis';
4
+ import DataContext from '../../../context/DataContext.tsrx';
5
+ import type { DataContextType, GlyphProps, GlyphsProps, SeriesProps } from '../../../types';
6
+ import getScaledValueFactory from '../../../utils/getScaledValueFactory';
7
+ import isValidNumber from '../../../typeguards/isValidNumber';
8
+ import { GLYPHSERIES_EVENT_SOURCE, XYCHART_EVENT_SOURCE } from '../../../constants';
9
+ import useSeriesEvents from '../../../hooks/useSeriesEvents.tsrx';
10
+
11
+ export type BaseGlyphSeriesProps<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> =
12
+ SeriesProps<XScale, YScale, Datum> & {
13
+ /** Given a Datum, returns its color. Falls back to theme color if unspecified or if a null-ish value is returned. */
14
+ colorAccessor?: (d: Datum, index: number) => string | null | undefined;
15
+ /** The size of a `Glyph`, a `number` or a function which takes a `Datum` and returns a `number`. */
16
+ size?: number | ((d: Datum) => number);
17
+ /** Function which handles rendering glyphs. */
18
+ renderGlyphs: (glyphsProps: GlyphsProps<XScale, YScale, Datum>) => ReactNode;
19
+ };
20
+
21
+ export function BaseGlyphSeries<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
22
+ colorAccessor,
23
+ data,
24
+ dataKey,
25
+ onBlur,
26
+ onFocus,
27
+ onPointerMove,
28
+ onPointerOut,
29
+ onPointerUp,
30
+ onPointerDown,
31
+ enableEvents = true,
32
+ renderGlyphs,
33
+ size = 8,
34
+ xAccessor,
35
+ xScale,
36
+ yAccessor,
37
+ yScale,
38
+ }: BaseGlyphSeriesProps<XScale, YScale, Datum> & Pick<DataContextType<XScale, YScale, Datum>, | 'xScale'
39
+ | 'yScale'>) {
40
+ const { colorScale, theme, horizontal } = useContext(DataContext);
41
+ const getScaledX = useMemo(() => getScaledValueFactory(xScale, xAccessor), [xScale, xAccessor]);
42
+ const getScaledY = useMemo(() => getScaledValueFactory(yScale, yAccessor), [yScale, yAccessor]);
43
+ const color = colorScale?.(dataKey) ?? theme?.colors?.[0] ?? '#222';
44
+
45
+ const ownEventSourceKey = `${GLYPHSERIES_EVENT_SOURCE}-${dataKey}`;
46
+ const eventEmitters = useSeriesEvents<XScale, YScale, Datum>({
47
+ dataKey,
48
+ enableEvents,
49
+ onBlur,
50
+ onFocus,
51
+ onPointerMove,
52
+ onPointerOut,
53
+ onPointerUp,
54
+ onPointerDown,
55
+ source: ownEventSourceKey,
56
+ allowedSources: [XYCHART_EVENT_SOURCE, ownEventSourceKey],
57
+ });
58
+
59
+ const glyphs = useMemo(
60
+ () => data.map((datum, i) => {
61
+ const x = getScaledX(datum);
62
+ if (!isValidNumber(x)) return null;
63
+ const y = getScaledY(datum);
64
+ if (!isValidNumber(y)) return null;
65
+ return {
66
+ key: `${i}`,
67
+ x,
68
+ y,
69
+ color: colorAccessor?.(datum, i) ?? color,
70
+ size: typeof size === 'function' ? size(datum) : size,
71
+ datum,
72
+ };
73
+ }).filter((point) => point) as GlyphProps<Datum>[],
74
+ [color, colorAccessor, data, getScaledX, getScaledY, size],
75
+ );
76
+
77
+ return <>
78
+ {renderGlyphs({ glyphs, xScale, yScale, horizontal, ...eventEmitters })}
79
+ </>;
80
+ }
81
+
82
+ export default function BaseGlyphSeriesWithRegisteredData<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(props: BaseGlyphSeriesProps<XScale, YScale, Datum>) {
83
+ const { dataKey, data, xAccessor, yAccessor } = props;
84
+ const { xScale, yScale, dataRegistry } = useContext(
85
+ DataContext,
86
+ ) as unknown as DataContextType<XScale, YScale, Datum>;
87
+
88
+ useEffect(() => {
89
+ if (dataRegistry) dataRegistry.registerData({ key: dataKey, data, xAccessor, yAccessor });
90
+ return () => dataRegistry?.unregisterData(dataKey);
91
+ }, [dataRegistry, dataKey, data, xAccessor, yAccessor]);
92
+
93
+ const registryEntry = dataRegistry?.get(dataKey);
94
+
95
+ // Explicit domains let wrapped series render before their registration effect.
96
+ if (!xScale || !yScale) return null;
97
+
98
+ // otherwise pass props + over-write data/accessors
99
+ return <BaseGlyphSeries
100
+ {...props}
101
+ xScale={xScale}
102
+ yScale={yScale}
103
+ data={registryEntry?.data ?? data}
104
+ xAccessor={registryEntry?.xAccessor ?? xAccessor}
105
+ yAccessor={registryEntry?.yAccessor ?? yAccessor}
106
+ />;
107
+ }
@@ -0,0 +1,14 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { ReactNode } from 'react';
3
+ import type { AxisScale } from '@octanejs/visx/axis';
4
+ import type { DataContextType, GlyphsProps, SeriesProps } from '../../../types';
5
+ export type BaseGlyphSeriesProps<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = SeriesProps<XScale, YScale, Datum> & {
6
+ /** Given a Datum, returns its color. Falls back to theme color if unspecified or if a null-ish value is returned. */
7
+ colorAccessor?: (d: Datum, index: number) => string | null | undefined;
8
+ /** The size of a `Glyph`, a `number` or a function which takes a `Datum` and returns a `number`. */
9
+ size?: number | ((d: Datum) => number);
10
+ /** Function which handles rendering glyphs. */
11
+ renderGlyphs: (glyphsProps: GlyphsProps<XScale, YScale, Datum>) => ReactNode;
12
+ };
13
+ export declare function BaseGlyphSeries<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ colorAccessor, data, dataKey, onBlur, onFocus, onPointerMove, onPointerOut, onPointerUp, onPointerDown, enableEvents, renderGlyphs, size, xAccessor, xScale, yAccessor, yScale, }: BaseGlyphSeriesProps<XScale, YScale, Datum> & Pick<DataContextType<XScale, YScale, Datum>, 'xScale' | 'yScale'>): import("react").JSX.Element;
14
+ export default function BaseGlyphSeriesWithRegisteredData<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(props: BaseGlyphSeriesProps<XScale, YScale, Datum>): import("react").JSX.Element | null;
@@ -0,0 +1,135 @@
1
+ import { Fragment, useContext, useCallback, useMemo, useEffect } from 'octane';
2
+ import type { FC, SVGProps } from 'react';
3
+ import type { LinePathProps } from '@octanejs/visx/shape';
4
+ import { LinePath } from '@octanejs/visx/shape';
5
+ import type { AxisScale } from '@octanejs/visx/axis';
6
+ import DataContext from '../../../context/DataContext.tsrx';
7
+ import type { DataContextType, GlyphsProps, SeriesProps } from '../../../types';
8
+ import getScaledValueFactory from '../../../utils/getScaledValueFactory';
9
+ import isValidNumber from '../../../typeguards/isValidNumber';
10
+ import { LINESERIES_EVENT_SOURCE, XYCHART_EVENT_SOURCE } from '../../../constants';
11
+ import { BaseGlyphSeries } from './BaseGlyphSeries.tsrx';
12
+ import defaultRenderGlyph from './defaultRenderGlyph.tsrx';
13
+ import useSeriesEvents from '../../../hooks/useSeriesEvents.tsrx';
14
+
15
+ export type BaseLineSeriesProps<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> =
16
+ SeriesProps<XScale, YScale, Datum> & {
17
+ /** Rendered component which is passed path props by BaseLineSeries after processing. */
18
+ PathComponent?: FC<Omit<SVGProps<SVGPathElement>, 'ref'>> | 'path';
19
+ /** Sets the curve factory (from @octanejs/visx/curve or d3-curve) for the line generator. Defaults to curveLinear. */
20
+ curve?: LinePathProps<Datum>['curve'];
21
+ /** Given a datakey, returns its color. Falls back to theme color if unspecified or if a null-ish value is returned. */
22
+ colorAccessor?: (dataKey: string) => string | undefined | null;
23
+ } & Omit<SVGProps<SVGPathElement>, 'x' | 'y' | 'x0' | 'x1' | 'y0' | 'y1' | 'ref'>;
24
+
25
+ function BaseLineSeries<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
26
+ colorAccessor,
27
+ curve,
28
+ data,
29
+ dataKey,
30
+ onBlur,
31
+ onFocus,
32
+ onPointerMove,
33
+ onPointerOut,
34
+ onPointerUp,
35
+ onPointerDown,
36
+ enableEvents = true,
37
+ xAccessor,
38
+ xScale,
39
+ yAccessor,
40
+ yScale,
41
+ PathComponent = 'path',
42
+ ...lineProps
43
+ }: BaseLineSeriesProps<XScale, YScale, Datum> & Pick<DataContextType<XScale, YScale, Datum>, | 'xScale'
44
+ | 'yScale'>) {
45
+ const { colorScale, theme } = useContext(DataContext);
46
+ const getScaledX = useMemo(() => getScaledValueFactory(xScale, xAccessor), [xScale, xAccessor]);
47
+ const getScaledY = useMemo(() => getScaledValueFactory(yScale, yAccessor), [yScale, yAccessor]);
48
+ const isDefined = useCallback(
49
+ (d: Datum) => isValidNumber(xScale(xAccessor(d))) && isValidNumber(yScale(yAccessor(d))),
50
+ [xScale, xAccessor, yScale, yAccessor],
51
+ );
52
+ const color = colorScale?.(dataKey) ?? theme?.colors?.[0] ?? '#222';
53
+
54
+ const ownEventSourceKey = `${LINESERIES_EVENT_SOURCE}-${dataKey}`;
55
+ const eventEmitters = useSeriesEvents<XScale, YScale, Datum>({
56
+ dataKey,
57
+ enableEvents,
58
+ onBlur,
59
+ onFocus,
60
+ onPointerMove,
61
+ onPointerOut,
62
+ onPointerUp,
63
+ onPointerDown,
64
+ source: ownEventSourceKey,
65
+ allowedSources: [XYCHART_EVENT_SOURCE, ownEventSourceKey],
66
+ });
67
+
68
+ // render invisible glyphs for focusing if onFocus/onBlur are defined
69
+ const captureFocusEvents = Boolean(onFocus || onBlur);
70
+ const renderGlyphs = useCallback(
71
+ ({ glyphs }: GlyphsProps<XScale, YScale, Datum>) => captureFocusEvents
72
+ ? glyphs.map(
73
+ (glyph) => <Fragment key={glyph.key}>{defaultRenderGlyph({
74
+ ...glyph,
75
+ color: 'transparent',
76
+ onFocus: eventEmitters.onFocus,
77
+ onBlur: eventEmitters.onBlur,
78
+ })}</Fragment>,
79
+ )
80
+ : null,
81
+ [captureFocusEvents, eventEmitters.onFocus, eventEmitters.onBlur],
82
+ );
83
+
84
+ return <>
85
+ <LinePath x={getScaledX} y={getScaledY} defined={isDefined} curve={curve} {...lineProps}>
86
+ {({ path }) =>
87
+ <PathComponent
88
+ stroke={colorAccessor?.(dataKey) ?? color}
89
+ strokeWidth={2}
90
+ fill="transparent"
91
+ strokeLinecap="round"
92
+ {...lineProps}
93
+ d={path(data) || ''}
94
+ {...eventEmitters}
95
+ />}
96
+ </LinePath>
97
+ {captureFocusEvents &&
98
+ <BaseGlyphSeries
99
+ dataKey={dataKey}
100
+ data={data}
101
+ xAccessor={xAccessor}
102
+ yAccessor={yAccessor}
103
+ xScale={xScale}
104
+ yScale={yScale}
105
+ renderGlyphs={renderGlyphs}
106
+ />}
107
+ </>;
108
+ }
109
+
110
+ export default function BaseBaseLineSeriesWithRegisteredData<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(props: BaseLineSeriesProps<XScale, YScale, Datum>) {
111
+ const { dataKey, data, xAccessor, yAccessor } = props;
112
+ const { xScale, yScale, dataRegistry } = useContext(
113
+ DataContext,
114
+ ) as unknown as DataContextType<XScale, YScale, Datum>;
115
+
116
+ useEffect(() => {
117
+ if (dataRegistry) dataRegistry.registerData({ key: dataKey, data, xAccessor, yAccessor });
118
+ return () => dataRegistry?.unregisterData(dataKey);
119
+ }, [dataRegistry, dataKey, data, xAccessor, yAccessor]);
120
+
121
+ const registryEntry = dataRegistry?.get(dataKey);
122
+
123
+ // Explicit domains let wrapped series render before their registration effect.
124
+ if (!xScale || !yScale) return null;
125
+
126
+ // otherwise pass props + over-write data/accessors
127
+ return <BaseLineSeries
128
+ {...props}
129
+ xScale={xScale}
130
+ yScale={yScale}
131
+ data={registryEntry?.data ?? data}
132
+ xAccessor={registryEntry?.xAccessor ?? xAccessor}
133
+ yAccessor={registryEntry?.yAccessor ?? yAccessor}
134
+ />;
135
+ }
@@ -0,0 +1,14 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { FC, SVGProps } from 'react';
3
+ import type { LinePathProps } from '@octanejs/visx/shape';
4
+ import type { AxisScale } from '@octanejs/visx/axis';
5
+ import type { SeriesProps } from '../../../types';
6
+ export type BaseLineSeriesProps<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = SeriesProps<XScale, YScale, Datum> & {
7
+ /** Rendered component which is passed path props by BaseLineSeries after processing. */
8
+ PathComponent?: FC<Omit<SVGProps<SVGPathElement>, 'ref'>> | 'path';
9
+ /** Sets the curve factory (from @octanejs/visx/curve or d3-curve) for the line generator. Defaults to curveLinear. */
10
+ curve?: LinePathProps<Datum>['curve'];
11
+ /** Given a datakey, returns its color. Falls back to theme color if unspecified or if a null-ish value is returned. */
12
+ colorAccessor?: (dataKey: string) => string | undefined | null;
13
+ } & Omit<SVGProps<SVGPathElement>, 'x' | 'y' | 'x0' | 'x1' | 'y0' | 'y1' | 'ref'>;
14
+ export default function BaseBaseLineSeriesWithRegisteredData<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(props: BaseLineSeriesProps<XScale, YScale, Datum>): import("react").JSX.Element | null;
@@ -0,0 +1,29 @@
1
+ import type { GlyphProps } from '../../../types';
2
+
3
+ export default function defaultRenderGlyph<Datum extends object>({
4
+ key,
5
+ color,
6
+ x,
7
+ y,
8
+ size,
9
+ onBlur,
10
+ onFocus,
11
+ onPointerMove,
12
+ onPointerOut,
13
+ onPointerUp,
14
+ }: GlyphProps<Datum>) {
15
+ return <circle
16
+ className="visx-circle-glyph"
17
+ key={key}
18
+ tabIndex={onBlur || onFocus ? 0 : undefined}
19
+ fill={color}
20
+ r={size / 2}
21
+ cx={x}
22
+ cy={y}
23
+ onBlur={onBlur}
24
+ onFocus={onFocus}
25
+ onPointerMove={onPointerMove}
26
+ onPointerOut={onPointerOut}
27
+ onPointerUp={onPointerUp}
28
+ />;
29
+ }
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { GlyphProps } from '../../../types';
3
+ export default function defaultRenderGlyph<Datum extends object>({ key, color, x, y, size, onBlur, onFocus, onPointerMove, onPointerOut, onPointerUp, }: GlyphProps<Datum>): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ // event sources
2
+ export const AREASERIES_EVENT_SOURCE = 'AREASERIES_EVENT_SOURCE';
3
+ export const AREASTACK_EVENT_SOURCE = 'AREASTACK_EVENT_SOURCE';
4
+ export const BARGROUP_EVENT_SOURCE = 'BARGROUP_EVENT_SOURCE';
5
+ export const BARSERIES_EVENT_SOURCE = 'BARSERIES_EVENT_SOURCE';
6
+ export const BARSTACK_EVENT_SOURCE = 'BARSTACK_EVENT_SOURCE';
7
+ export const GLYPHSERIES_EVENT_SOURCE = 'GLYPHSERIES_EVENT_SOURCE';
8
+ export const LINESERIES_EVENT_SOURCE = 'LINESERIES_EVENT_SOURCE';
9
+ export const XYCHART_EVENT_SOURCE = 'XYCHART_EVENT_SOURCE';
@@ -0,0 +1,23 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { createContext } from 'octane';
3
+ import type { AxisScale } from '@octanejs/visx/axis';
4
+ import type { DataContextType } from '../types';
5
+
6
+ type AnyDataContext = DataContextType<AxisScale, AxisScale, any>;
7
+
8
+ /** Utilities for inferring context generics */
9
+ export type InferXScaleConfig<X extends AnyDataContext> =
10
+ X extends DataContextType<infer T, any, any> ? T : AxisScale;
11
+
12
+ export type InferYScaleConfig<X extends AnyDataContext> =
13
+ X extends DataContextType<any, infer T, any> ? T : AxisScale;
14
+
15
+ export type InferDatum<X extends AnyDataContext> =
16
+ X extends DataContextType<any, any, infer T> ? T : any;
17
+
18
+ export type InferDataContext<C extends AnyDataContext = AnyDataContext> =
19
+ DataContextType<InferXScaleConfig<C>, InferYScaleConfig<C>, InferDatum<C>>;
20
+
21
+ const DataContext = createContext<Partial<InferDataContext>>({});
22
+
23
+ export default DataContext
@@ -0,0 +1,11 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { AxisScale } from '@octanejs/visx/axis';
3
+ import type { DataContextType } from '../types';
4
+ type AnyDataContext = DataContextType<AxisScale, AxisScale, any>;
5
+ /** Utilities for inferring context generics */
6
+ export type InferXScaleConfig<X extends AnyDataContext> = X extends DataContextType<infer T, any, any> ? T : AxisScale;
7
+ export type InferYScaleConfig<X extends AnyDataContext> = X extends DataContextType<any, infer T, any> ? T : AxisScale;
8
+ export type InferDatum<X extends AnyDataContext> = X extends DataContextType<any, any, infer T> ? T : any;
9
+ export type InferDataContext<C extends AnyDataContext = AnyDataContext> = DataContextType<InferXScaleConfig<C>, InferYScaleConfig<C>, InferDatum<C>>;
10
+ declare const DataContext: import("octane").Context<Partial<InferDataContext<AnyDataContext>>>;
11
+ export default DataContext;
@@ -0,0 +1,6 @@
1
+ import { createContext } from 'octane';
2
+ import type { EventEmitterContextType } from '../types';
3
+
4
+ const EventEmitterContext = createContext<EventEmitterContextType | null>(null);
5
+
6
+ export default EventEmitterContext
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ declare const EventEmitterContext: import("octane").Context<import("mitt").Emitter | null>;
3
+ export default EventEmitterContext;
@@ -0,0 +1,7 @@
1
+ import { createContext } from 'octane';
2
+ import type { XYChartTheme } from '../types';
3
+ import lightTheme from '../theme/themes/light';
4
+
5
+ const ThemeContext = createContext<XYChartTheme>(lightTheme);
6
+
7
+ export default ThemeContext
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { XYChartTheme } from '../types';
3
+ declare const ThemeContext: import("octane").Context<XYChartTheme>;
4
+ export default ThemeContext;
@@ -0,0 +1,7 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { createContext } from 'octane';
3
+ import type { TooltipContextType } from '../types';
4
+
5
+ const TooltipContext = createContext<TooltipContextType<any> | null>(null);
6
+
7
+ export default TooltipContext
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ declare const TooltipContext: import("octane").Context<any>;
3
+ export default TooltipContext;
@@ -0,0 +1,41 @@
1
+ import type { AxisScale } from '@octanejs/visx/axis';
2
+ import { useMemo, useRef, useState } from 'octane';
3
+ import DataRegistry from '../classes/DataRegistry';
4
+ import type { DataContextType, DataRegistryEntry } from '../types';
5
+
6
+ /** Hook that returns an API equivalent to DataRegistry but which updates as needed for use as a hook. */
7
+ export default function useDataRegistry<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(
8
+ initialEntries: DataRegistryEntry<XScale, YScale, Datum>[] = [],
9
+ ): DataContextType<XScale, YScale, Datum>['dataRegistry'] {
10
+ const [, forceUpdate] = useState(0);
11
+ const privateRegistry = useMemo(() => new DataRegistry<XScale, YScale, Datum>(), []);
12
+ const initialKeysRef = useRef<string[]>([]);
13
+
14
+ const initialKeys = initialEntries.map((entry) => entry.key);
15
+ const currentKeySet = new Set(initialKeys);
16
+ const removedKeys = initialKeysRef.current.filter((key) => !currentKeySet.has(key));
17
+ if (removedKeys.length > 0) privateRegistry.unregisterData(removedKeys);
18
+ if (initialEntries.length > 0) privateRegistry.registerData(initialEntries);
19
+ initialKeysRef.current = initialKeys;
20
+
21
+ return useMemo(
22
+ () => ({
23
+ registerData: (
24
+ ...params: Parameters<DataContextType<XScale, YScale, Datum>['dataRegistry']['registerData']>
25
+ ) => {
26
+ privateRegistry.registerData(...params);
27
+ forceUpdate((version) => version + 1);
28
+ },
29
+ unregisterData: (
30
+ ...params: Parameters<DataContextType<XScale, YScale, Datum>['dataRegistry']['unregisterData']>
31
+ ) => {
32
+ privateRegistry.unregisterData(...params);
33
+ forceUpdate((version) => version + 1);
34
+ },
35
+ entries: () => privateRegistry.entries(),
36
+ get: (key: string) => privateRegistry.get(key),
37
+ keys: () => privateRegistry.keys(),
38
+ }),
39
+ [privateRegistry],
40
+ );
41
+ }
@@ -0,0 +1,5 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { AxisScale } from '@octanejs/visx/axis';
3
+ import type { DataContextType, DataRegistryEntry } from '../types';
4
+ /** Hook that returns an API equivalent to DataRegistry but which updates as needed for use as a hook. */
5
+ export default function useDataRegistry<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>(initialEntries?: DataRegistryEntry<XScale, YScale, Datum>[]): DataContextType<XScale, YScale, Datum>['dataRegistry'];