@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,40 @@
1
+ import { useCallback, useState } from 'octane';
2
+
3
+ const DEFAULT_DIMS = {
4
+ width: 0,
5
+ height: 0,
6
+ margin: { top: 0, right: 0, bottom: 0, left: 0 },
7
+ };
8
+
9
+ export type Dimensions = typeof DEFAULT_DIMS;
10
+
11
+ /** A hook for accessing and setting memoized width, height, and margin chart dimensions. */
12
+ export default function useDimensions(initialDims?: Partial<Dimensions>): [Dimensions, (dims: Dimensions) => void] {
13
+ const [dimensions, privateSetDimensions] = useState<Dimensions>({
14
+ width: initialDims?.width == null ? DEFAULT_DIMS.width : initialDims.width,
15
+ height: initialDims?.height == null ? DEFAULT_DIMS.height : initialDims.height,
16
+ margin: initialDims?.margin == null ? DEFAULT_DIMS.margin : initialDims.margin,
17
+ });
18
+
19
+ // expose a setter with better memoization logic
20
+ const publicSetDimensions = useCallback((dims: Dimensions) => {
21
+ if (
22
+ dims.width !== dimensions.width || dims.height !== dimensions.height ||
23
+ dims.margin.left !== dimensions.margin.left ||
24
+ dims.margin.right !== dimensions.margin.right ||
25
+ dims.margin.top !== dimensions.margin.top ||
26
+ dims.margin.bottom !== dimensions.margin.bottom
27
+ ) {
28
+ privateSetDimensions(dims);
29
+ }
30
+ }, [
31
+ dimensions.width,
32
+ dimensions.height,
33
+ dimensions.margin.left,
34
+ dimensions.margin.right,
35
+ dimensions.margin.bottom,
36
+ dimensions.margin.top,
37
+ ]);
38
+
39
+ return [dimensions, publicSetDimensions];
40
+ }
@@ -0,0 +1,15 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ declare const DEFAULT_DIMS: {
3
+ width: number;
4
+ height: number;
5
+ margin: {
6
+ top: number;
7
+ right: number;
8
+ bottom: number;
9
+ left: number;
10
+ };
11
+ };
12
+ export type Dimensions = typeof DEFAULT_DIMS;
13
+ /** A hook for accessing and setting memoized width, height, and margin chart dimensions. */
14
+ export default function useDimensions(initialDims?: Partial<Dimensions>): [Dimensions, (dims: Dimensions) => void];
15
+ export {};
@@ -0,0 +1,62 @@
1
+ import type { PointerEvent, FocusEvent } from 'react';
2
+ import { useCallback, useContext, useEffect, useRef } from 'octane';
3
+ import { localPoint } from '@octanejs/visx/event';
4
+ import EventEmitterContext from '../context/EventEmitterContext.tsrx';
5
+ import type { EventEmitterContextType } from '../types';
6
+
7
+ export type EventType =
8
+ 'pointermove' | 'pointerout' | 'pointerup' | 'pointerdown' | 'focus' | 'blur';
9
+
10
+ export type HandlerParams = {
11
+ /** The react PointerEvent or FocusEvent. */
12
+ event: PointerEvent | FocusEvent;
13
+ /** Position of the PointerEvent in svg coordinates. */
14
+ svgPoint: ReturnType<typeof localPoint>;
15
+ /** The source of the event. This can be anything, but for this package is the name of the component which emitted the event. */
16
+ source?: string;
17
+ };
18
+
19
+ export type Handler = (params?: HandlerParams) => void;
20
+
21
+ /**
22
+ * Hook for optionally subscribing to a specified EventType,
23
+ * and returns emitter for emitting events.
24
+ */
25
+ export default function useEventEmitter(
26
+ /** Type of event to subscribe to. */
27
+ eventType?: EventType,
28
+ /** Handler invoked on emission of EventType event. */
29
+ handler?: Handler,
30
+ /** Optional valid sources for EventType subscription. */
31
+ allowedSources?: string[],
32
+ ) {
33
+ const emitter = useContext(EventEmitterContext) as EventEmitterContextType | null;
34
+ const allowedSourcesRef = useRef<string[] | undefined>(undefined);
35
+ allowedSourcesRef.current = allowedSources; // use ref so allowedSources[] can change without creating new handlers
36
+
37
+ // wrap emitter.emit so we can enforce stricter type signature
38
+ const emit = useCallback((type: EventType, event: HandlerParams['event'], source?: string) => {
39
+ if (emitter) {
40
+ emitter.emit<HandlerParams>(type, { event, svgPoint: localPoint(event), source });
41
+ }
42
+ }, [emitter]);
43
+
44
+ useEffect(() => {
45
+ if (emitter && eventType && handler) {
46
+ // register handler, with source filtering as needed
47
+ const handlerWithSourceFilter: Handler = (params?: HandlerParams) => {
48
+ if (
49
+ !allowedSourcesRef.current ||
50
+ params?.source && allowedSourcesRef.current?.includes(params.source)
51
+ ) {
52
+ handler(params);
53
+ }
54
+ };
55
+ emitter.on<HandlerParams>(eventType, handlerWithSourceFilter);
56
+ return () => emitter?.off<HandlerParams>(eventType, handlerWithSourceFilter);
57
+ }
58
+ return undefined;
59
+ }, [emitter, eventType, handler]);
60
+
61
+ return emitter ? emit : null;
62
+ }
@@ -0,0 +1,24 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { PointerEvent, FocusEvent } from 'react';
3
+ import { localPoint } from '@octanejs/visx/event';
4
+ export type EventType = 'pointermove' | 'pointerout' | 'pointerup' | 'pointerdown' | 'focus' | 'blur';
5
+ export type HandlerParams = {
6
+ /** The react PointerEvent or FocusEvent. */
7
+ event: PointerEvent | FocusEvent;
8
+ /** Position of the PointerEvent in svg coordinates. */
9
+ svgPoint: ReturnType<typeof localPoint>;
10
+ /** The source of the event. This can be anything, but for this package is the name of the component which emitted the event. */
11
+ source?: string;
12
+ };
13
+ export type Handler = (params?: HandlerParams) => void;
14
+ /**
15
+ * Hook for optionally subscribing to a specified EventType,
16
+ * and returns emitter for emitting events.
17
+ */
18
+ export default function useEventEmitter(
19
+ /** Type of event to subscribe to. */
20
+ eventType?: EventType,
21
+ /** Handler invoked on emission of EventType event. */
22
+ handler?: Handler,
23
+ /** Optional valid sources for EventType subscription. */
24
+ allowedSources?: string[]): ((type: EventType, event: HandlerParams["event"], source?: string) => void) | null;
@@ -0,0 +1,64 @@
1
+ import type { PointerEvent, FocusEvent } from 'react';
2
+ import { useCallback } from 'octane';
3
+ import useEventEmitter from './useEventEmitter.tsrx';
4
+
5
+ type PointerEventEmitterParams = {
6
+ /** Source of the events, e.g., the component name. */
7
+ source: string;
8
+ onBlur?: boolean;
9
+ onFocus?: boolean;
10
+ onPointerMove?: boolean;
11
+ onPointerOut?: boolean;
12
+ onPointerUp?: boolean;
13
+ onPointerDown?: boolean;
14
+ };
15
+
16
+ /**
17
+ * A hook that simplifies creation of handlers for emitting
18
+ * pointermove, pointerout, and pointerup events to EventEmitterContext.
19
+ */
20
+ export default function usePointerEventEmitters({
21
+ source,
22
+ onPointerOut = true,
23
+ onPointerMove = true,
24
+ onPointerUp = true,
25
+ onPointerDown = true,
26
+ onFocus = false,
27
+ onBlur = false,
28
+ }: PointerEventEmitterParams) {
29
+ const emit = useEventEmitter();
30
+
31
+ const emitPointerMove = useCallback(
32
+ (event: PointerEvent) => emit?.('pointermove', event, source),
33
+ [emit, source],
34
+ );
35
+ const emitPointerOut = useCallback((event: PointerEvent) => emit?.('pointerout', event, source), [
36
+ emit,
37
+ source,
38
+ ]);
39
+ const emitPointerUp = useCallback((event: PointerEvent) => emit?.('pointerup', event, source), [
40
+ emit,
41
+ source,
42
+ ]);
43
+ const emitPointerDown = useCallback(
44
+ (event: PointerEvent) => emit?.('pointerdown', event, source),
45
+ [emit, source],
46
+ );
47
+ const emitFocus = useCallback((event: FocusEvent) => emit?.('focus', event, source), [
48
+ emit,
49
+ source,
50
+ ]);
51
+ const emitBlur = useCallback((event: FocusEvent) => emit?.('blur', event, source), [
52
+ emit,
53
+ source,
54
+ ]);
55
+
56
+ return {
57
+ onPointerMove: onPointerMove ? emitPointerMove : undefined,
58
+ onFocus: onFocus ? emitFocus : undefined,
59
+ onBlur: onBlur ? emitBlur : undefined,
60
+ onPointerOut: onPointerOut ? emitPointerOut : undefined,
61
+ onPointerUp: onPointerUp ? emitPointerUp : undefined,
62
+ onPointerDown: onPointerDown ? emitPointerDown : undefined,
63
+ };
64
+ }
@@ -0,0 +1,25 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { PointerEvent, FocusEvent } from 'react';
3
+ type PointerEventEmitterParams = {
4
+ /** Source of the events, e.g., the component name. */
5
+ source: string;
6
+ onBlur?: boolean;
7
+ onFocus?: boolean;
8
+ onPointerMove?: boolean;
9
+ onPointerOut?: boolean;
10
+ onPointerUp?: boolean;
11
+ onPointerDown?: boolean;
12
+ };
13
+ /**
14
+ * A hook that simplifies creation of handlers for emitting
15
+ * pointermove, pointerout, and pointerup events to EventEmitterContext.
16
+ */
17
+ export default function usePointerEventEmitters({ source, onPointerOut, onPointerMove, onPointerUp, onPointerDown, onFocus, onBlur, }: PointerEventEmitterParams): {
18
+ onPointerMove: ((event: PointerEvent) => void | undefined) | undefined;
19
+ onFocus: ((event: FocusEvent) => void | undefined) | undefined;
20
+ onBlur: ((event: FocusEvent) => void | undefined) | undefined;
21
+ onPointerOut: ((event: PointerEvent) => void | undefined) | undefined;
22
+ onPointerUp: ((event: PointerEvent) => void | undefined) | undefined;
23
+ onPointerDown: ((event: PointerEvent) => void | undefined) | undefined;
24
+ };
25
+ export {};
@@ -0,0 +1,162 @@
1
+ import type { AxisScale } from '@octanejs/visx/axis';
2
+ import type { PointerEvent, FocusEvent } from 'react';
3
+ import { useCallback, useContext } from 'octane';
4
+ import DataContext from '../context/DataContext.tsrx';
5
+ import { isFocusEvent, isPointerEvent } from '../typeguards/events';
6
+ import type {
7
+ DataContextType,
8
+ EventHandlerParams,
9
+ NearestDatumArgs,
10
+ NearestDatumReturnType,
11
+ } from '../types';
12
+ import findNearestDatumX from '../utils/findNearestDatumX';
13
+ import findNearestDatumY from '../utils/findNearestDatumY';
14
+ import type { HandlerParams } from './useEventEmitter.tsrx';
15
+ import useEventEmitter from './useEventEmitter.tsrx';
16
+
17
+ export const POINTER_EVENTS_ALL = '__POINTER_EVENTS_ALL';
18
+ export const POINTER_EVENTS_NEAREST = '__POINTER_EVENTS_NEAREST';
19
+
20
+ export type PointerEventHandlerParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = {
21
+ /** Controls whether callbacks are invoked for one or more registered dataKeys, the nearest dataKey, or all dataKeys. */
22
+ dataKey: string | string[] | typeof POINTER_EVENTS_NEAREST | typeof POINTER_EVENTS_ALL; // last two are eaten by string
23
+ /** Optionally override the findNearestDatum logic. */
24
+ findNearestDatum?: (params: NearestDatumArgs<XScale, YScale, Datum>) => NearestDatumReturnType<Datum>;
25
+ /** Callback invoked onFocus for one or more series based on dataKey. */
26
+ onFocus?: (params: EventHandlerParams<Datum>) => void;
27
+ /** Callback invoked onBlur. */
28
+ onBlur?: (event: FocusEvent) => void;
29
+ /** Callback invoked onPointerMove for one or more series based on dataKey. */
30
+ onPointerMove?: (params: EventHandlerParams<Datum>) => void;
31
+ /** Callback invoked onPointerOut. */
32
+ onPointerOut?: (event: PointerEvent) => void;
33
+ /** Callback invoked onPointerUp for one or more series based on dataKey. */
34
+ onPointerUp?: (params: EventHandlerParams<Datum>) => void;
35
+ /** Callback invoked onPointerDown for one or more series based on dataKey. */
36
+ onPointerDown?: (params: EventHandlerParams<Datum>) => void;
37
+ /** Valid event sources for which to invoke handlers. */
38
+ allowedSources?: string[]
39
+ };
40
+
41
+ /**
42
+ * Hook that returns PointerEvent handlers that invoke the passed pointer
43
+ * handlers with the nearest datum to the event for the passed dataKey.
44
+ */
45
+ export default function usePointerEventHandlers<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
46
+ dataKey,
47
+ findNearestDatum: findNearestDatumProps,
48
+ onBlur,
49
+ onFocus,
50
+ onPointerMove,
51
+ onPointerOut,
52
+ onPointerUp,
53
+ onPointerDown,
54
+ allowedSources,
55
+ }: PointerEventHandlerParams<XScale, YScale, Datum>) {
56
+ const { width, height, horizontal, dataRegistry, xScale, yScale } = useContext(
57
+ DataContext,
58
+ ) as unknown as DataContextType<XScale, YScale, Datum>;
59
+
60
+ const findNearestDatum =
61
+ findNearestDatumProps || (horizontal ? findNearestDatumY : findNearestDatumX);
62
+
63
+ // this logic is shared by pointerup, pointermove, and focus handlers
64
+ const getHandlerParams = useCallback((params?: HandlerParams) => {
65
+ const { svgPoint, event } = params || {};
66
+ const pointerParamsByKey: { [dataKey: string]: EventHandlerParams<Datum> } = {};
67
+
68
+ // nearest Datum across all dataKeys, if relevant
69
+ let nearestDatumPointerParams: EventHandlerParams<Datum> | null = null;
70
+ let nearestDatumDistance = Infinity;
71
+
72
+ if (params && event && svgPoint && width && height) {
73
+ const considerAllKeys = dataKey === POINTER_EVENTS_NEAREST || dataKey === POINTER_EVENTS_ALL;
74
+
75
+ const dataKeys =
76
+ considerAllKeys
77
+ ? dataRegistry?.keys() ?? []
78
+ : Array.isArray(dataKey)
79
+ ? dataKey
80
+ : [dataKey];
81
+
82
+ // find nearestDatum for relevant dataKey(s)
83
+ dataKeys.forEach((key) => {
84
+ const entry = dataRegistry?.get(key);
85
+ if (entry) {
86
+ const nearestDatum = findNearestDatum({
87
+ dataKey: key,
88
+ data: entry.data,
89
+ height,
90
+ point: svgPoint,
91
+ width,
92
+ xAccessor: entry.xAccessor,
93
+ xScale,
94
+ yAccessor: entry.yAccessor,
95
+ yScale,
96
+ });
97
+
98
+ if (nearestDatum) {
99
+ pointerParamsByKey[key] = { key, svgPoint, event, ...nearestDatum };
100
+
101
+ // compute nearest Datum if not emitting events for all keys
102
+ if (dataKey === POINTER_EVENTS_NEAREST) {
103
+ const distance = Math.sqrt(
104
+ (nearestDatum.distanceX ?? Infinity ** 2) +
105
+ (nearestDatum.distanceY ?? Infinity ** 2),
106
+ );
107
+ nearestDatumPointerParams = distance < nearestDatumDistance
108
+ ? pointerParamsByKey[key]
109
+ : nearestDatumPointerParams;
110
+ nearestDatumDistance = Math.min(nearestDatumDistance, distance);
111
+ }
112
+ }
113
+ }
114
+ });
115
+
116
+ const pointerParams: (EventHandlerParams<Datum> | null)[] =
117
+ dataKey === POINTER_EVENTS_NEAREST
118
+ ? [nearestDatumPointerParams]
119
+ : dataKey === POINTER_EVENTS_ALL || Array.isArray(dataKey)
120
+ ? Object.values(pointerParamsByKey)
121
+ : [pointerParamsByKey[dataKey]];
122
+
123
+ return pointerParams.filter((param) => param) as EventHandlerParams<Datum>[];
124
+ }
125
+ return [];
126
+ }, [dataKey, dataRegistry, xScale, yScale, width, height, findNearestDatum]);
127
+ const handlePointerMove = useCallback((params?: HandlerParams) => {
128
+ if (onPointerMove) {
129
+ getHandlerParams(params).forEach((p) => onPointerMove(p));
130
+ }
131
+ }, [getHandlerParams, onPointerMove]);
132
+ const handlePointerUp = useCallback((params?: HandlerParams) => {
133
+ if (onPointerUp) {
134
+ getHandlerParams(params).forEach((p) => onPointerUp(p));
135
+ }
136
+ }, [getHandlerParams, onPointerUp]);
137
+ const handlePointerDown = useCallback((params?: HandlerParams) => {
138
+ if (onPointerDown) {
139
+ getHandlerParams(params).forEach((p) => onPointerDown(p));
140
+ }
141
+ }, [getHandlerParams, onPointerDown]);
142
+ const handleFocus = useCallback((params?: HandlerParams) => {
143
+ if (onFocus) {
144
+ getHandlerParams(params).forEach((p) => onFocus(p));
145
+ }
146
+ }, [getHandlerParams, onFocus]);
147
+ const handlePointerOut = useCallback((params?: HandlerParams) => {
148
+ const event = params?.event;
149
+ if (event && isPointerEvent(event) && onPointerOut) onPointerOut(event);
150
+ }, [onPointerOut]);
151
+ const handleBlur = useCallback((params?: HandlerParams) => {
152
+ const event = params?.event;
153
+ if (event && isFocusEvent(event) && onBlur) onBlur(event);
154
+ }, [onBlur]);
155
+
156
+ useEventEmitter('pointermove', onPointerMove ? handlePointerMove : undefined, allowedSources);
157
+ useEventEmitter('pointerout', onPointerOut ? handlePointerOut : undefined, allowedSources);
158
+ useEventEmitter('pointerup', onPointerUp ? handlePointerUp : undefined, allowedSources);
159
+ useEventEmitter('pointerdown', onPointerDown ? handlePointerDown : undefined, allowedSources);
160
+ useEventEmitter('focus', onFocus ? handleFocus : undefined, allowedSources);
161
+ useEventEmitter('blur', onBlur ? handleBlur : undefined, allowedSources);
162
+ }
@@ -0,0 +1,31 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { AxisScale } from '@octanejs/visx/axis';
3
+ import type { PointerEvent, FocusEvent } from 'react';
4
+ import type { EventHandlerParams, NearestDatumArgs, NearestDatumReturnType } from '../types';
5
+ export declare const POINTER_EVENTS_ALL = "__POINTER_EVENTS_ALL";
6
+ export declare const POINTER_EVENTS_NEAREST = "__POINTER_EVENTS_NEAREST";
7
+ export type PointerEventHandlerParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = {
8
+ /** Controls whether callbacks are invoked for one or more registered dataKeys, the nearest dataKey, or all dataKeys. */
9
+ dataKey: string | string[] | typeof POINTER_EVENTS_NEAREST | typeof POINTER_EVENTS_ALL;
10
+ /** Optionally override the findNearestDatum logic. */
11
+ findNearestDatum?: (params: NearestDatumArgs<XScale, YScale, Datum>) => NearestDatumReturnType<Datum>;
12
+ /** Callback invoked onFocus for one or more series based on dataKey. */
13
+ onFocus?: (params: EventHandlerParams<Datum>) => void;
14
+ /** Callback invoked onBlur. */
15
+ onBlur?: (event: FocusEvent) => void;
16
+ /** Callback invoked onPointerMove for one or more series based on dataKey. */
17
+ onPointerMove?: (params: EventHandlerParams<Datum>) => void;
18
+ /** Callback invoked onPointerOut. */
19
+ onPointerOut?: (event: PointerEvent) => void;
20
+ /** Callback invoked onPointerUp for one or more series based on dataKey. */
21
+ onPointerUp?: (params: EventHandlerParams<Datum>) => void;
22
+ /** Callback invoked onPointerDown for one or more series based on dataKey. */
23
+ onPointerDown?: (params: EventHandlerParams<Datum>) => void;
24
+ /** Valid event sources for which to invoke handlers. */
25
+ allowedSources?: string[];
26
+ };
27
+ /**
28
+ * Hook that returns PointerEvent handlers that invoke the passed pointer
29
+ * handlers with the nearest datum to the event for the passed dataKey.
30
+ */
31
+ export default function usePointerEventHandlers<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataKey, findNearestDatum: findNearestDatumProps, onBlur, onFocus, onPointerMove, onPointerOut, onPointerUp, onPointerDown, allowedSources, }: PointerEventHandlerParams<XScale, YScale, Datum>): void;
@@ -0,0 +1,113 @@
1
+ import type { AxisScaleOutput, AxisScale } from '@octanejs/visx/axis';
2
+ import type { ScaleConfig, ScaleInput } from '@octanejs/visx/scale';
3
+ import { createScale, scaleCanBeZeroed } from '@octanejs/visx/scale';
4
+ import { extent as d3Extent } from 'd3-array';
5
+ import { useMemo } from 'octane';
6
+ import type DataRegistry from '../classes/DataRegistry';
7
+ import isDiscreteScale from '../utils/isDiscreteScale';
8
+
9
+ /** A hook for creating memoized x- and y-scales. */
10
+ export default function useScales<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
11
+ dataRegistry,
12
+ xRange,
13
+ xScaleConfig,
14
+ yRange,
15
+ yScaleConfig,
16
+ }: {
17
+ xScaleConfig: ScaleConfig<AxisScaleOutput>;
18
+ yScaleConfig: ScaleConfig<AxisScaleOutput>;
19
+ dataRegistry: Omit<DataRegistry<XScale, YScale, Datum>, 'registry' | 'registryKeys'>;
20
+ xRange: [number, number];
21
+ yRange: [number, number];
22
+ }) {
23
+ // pull out memoization keys that are less likely to change
24
+ const registryKeys = dataRegistry.keys();
25
+ const [xMin, xMax] = xRange;
26
+ const [yMin, yMax] = yRange;
27
+
28
+ const memoizedXScale = useMemo(() => {
29
+ const registryEntries = registryKeys.map((key) => dataRegistry.get(key));
30
+
31
+ type XScaleInput = ScaleInput<XScale>;
32
+
33
+ const xValues = registryEntries.reduce<XScaleInput[]>(
34
+ (combined, entry) => entry
35
+ ? combined.concat(entry.data.map((d: Datum) => entry.xAccessor(d)))
36
+ : combined,
37
+ [],
38
+ );
39
+
40
+ const configuredDomain = xScaleConfig.domain;
41
+
42
+ // A fixed domain is sufficient for SSR even when a child component owns the
43
+ // series and its registration effect has not run yet.
44
+ if (xValues.length === 0 && configuredDomain == null) return undefined;
45
+
46
+ const xDomain =
47
+ configuredDomain ?? (isDiscreteScale(xScaleConfig) ? xValues : d3Extent(xValues));
48
+
49
+ let xScale = (scaleCanBeZeroed(xScaleConfig)
50
+ ? createScale({
51
+ range: [xMin, xMax],
52
+ domain: xDomain as [XScaleInput, XScaleInput],
53
+ zero: true,
54
+ ...xScaleConfig,
55
+ })
56
+ : createScale({
57
+ range: [xMin, xMax],
58
+ domain: xDomain as [XScaleInput, XScaleInput],
59
+ ...xScaleConfig,
60
+ })) as XScale;
61
+
62
+ // apply any scale updates from the registry
63
+ registryEntries.forEach((entry) => {
64
+ if (entry?.xScale) xScale = entry.xScale(xScale);
65
+ });
66
+
67
+ return xScale;
68
+ }, [dataRegistry, xScaleConfig, registryKeys, xMin, xMax]);
69
+
70
+ // same for yScale. this logic is hard to apply generically because of the scale types / accessors
71
+ const memoizedYScale = useMemo(() => {
72
+ const registryEntries = registryKeys.map((key) => dataRegistry.get(key));
73
+
74
+ type YScaleInput = ScaleInput<YScale>;
75
+
76
+ const yValues = registryEntries.reduce<YScaleInput[]>(
77
+ (combined, entry) => entry
78
+ ? combined.concat(entry.data.map((d: Datum) => entry.yAccessor(d)))
79
+ : combined,
80
+ [],
81
+ );
82
+
83
+ const configuredDomain = yScaleConfig.domain;
84
+
85
+ // See the x-scale branch above: explicit domains are complete server input.
86
+ if (yValues.length === 0 && configuredDomain == null) return undefined;
87
+
88
+ const yDomain =
89
+ configuredDomain ?? (isDiscreteScale(yScaleConfig) ? yValues : d3Extent(yValues));
90
+
91
+ let yScale = (scaleCanBeZeroed(yScaleConfig)
92
+ ? createScale({
93
+ range: [yMin, yMax],
94
+ domain: yDomain as [YScaleInput, YScaleInput],
95
+ zero: true,
96
+ ...yScaleConfig,
97
+ })
98
+ : createScale({
99
+ range: [yMin, yMax],
100
+ domain: yDomain as [YScaleInput, YScaleInput],
101
+ ...yScaleConfig,
102
+ })) as YScale;
103
+
104
+ // apply any scale updates from the registry
105
+ registryEntries.forEach((entry) => {
106
+ if (entry?.yScale) yScale = entry.yScale(yScale);
107
+ });
108
+
109
+ return yScale;
110
+ }, [dataRegistry, yScaleConfig, registryKeys, yMin, yMax]);
111
+
112
+ return { xScale: memoizedXScale, yScale: memoizedYScale };
113
+ }
@@ -0,0 +1,15 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { AxisScaleOutput, AxisScale } from '@octanejs/visx/axis';
3
+ import type { ScaleConfig } from '@octanejs/visx/scale';
4
+ import type DataRegistry from '../classes/DataRegistry';
5
+ /** A hook for creating memoized x- and y-scales. */
6
+ export default function useScales<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataRegistry, xRange, xScaleConfig, yRange, yScaleConfig, }: {
7
+ xScaleConfig: ScaleConfig<AxisScaleOutput>;
8
+ yScaleConfig: ScaleConfig<AxisScaleOutput>;
9
+ dataRegistry: Omit<DataRegistry<XScale, YScale, Datum>, 'registry' | 'registryKeys'>;
10
+ xRange: [number, number];
11
+ yRange: [number, number];
12
+ }): {
13
+ xScale: XScale | undefined;
14
+ yScale: YScale | undefined;
15
+ };
@@ -0,0 +1,82 @@
1
+ import type { FocusEvent, PointerEvent } from 'react';
2
+ import { useCallback, useContext } from 'octane';
3
+ import type { AxisScale } from '@octanejs/visx/axis';
4
+ import TooltipContext from '../context/TooltipContext.tsrx';
5
+ import type { EventHandlerParams, SeriesProps, TooltipContextType } from '../types';
6
+ import useEventEmitters from './useEventEmitters.tsrx';
7
+ import type { PointerEventHandlerParams } from './useEventHandlers.tsrx';
8
+ import useEventHandlers from './useEventHandlers.tsrx';
9
+
10
+ export type SeriesEventsParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> =
11
+ Pick<SeriesProps<XScale, YScale, Datum>, | 'enableEvents'
12
+ | 'onBlur'
13
+ | 'onFocus'
14
+ | 'onPointerMove'
15
+ | 'onPointerOut'
16
+ | 'onPointerUp'
17
+ | 'onPointerDown'> & Pick<PointerEventHandlerParams<XScale, YScale, Datum>, | 'dataKey'
18
+ | 'allowedSources'
19
+ | 'findNearestDatum'> & {
20
+ /** The source of emitted events. */
21
+ source: string;
22
+ };
23
+
24
+ /** This hook simplifies the logic for initializing Series event emitters + handlers. */
25
+ export default function useSeriesEvents<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({
26
+ dataKey,
27
+ enableEvents,
28
+ findNearestDatum,
29
+ onBlur: onBlurProps,
30
+ onFocus: onFocusProps,
31
+ onPointerMove: onPointerMoveProps,
32
+ onPointerOut: onPointerOutProps,
33
+ onPointerUp: onPointerUpProps,
34
+ onPointerDown: onPointerDownProps,
35
+ source,
36
+ allowedSources,
37
+ }: SeriesEventsParams<XScale, YScale, Datum>) {
38
+ const { showTooltip, hideTooltip } =
39
+ useContext(TooltipContext) ?? {} as TooltipContextType<Datum>;
40
+ const onPointerMove = useCallback((params: EventHandlerParams<Datum>) => {
41
+ showTooltip(params);
42
+ if (onPointerMoveProps) onPointerMoveProps(params);
43
+ }, [showTooltip, onPointerMoveProps]);
44
+ const onFocus = useCallback((params: EventHandlerParams<Datum>) => {
45
+ showTooltip(params);
46
+ if (onFocusProps) onFocusProps(params);
47
+ }, [showTooltip, onFocusProps]);
48
+ const onPointerOut = useCallback((event: PointerEvent) => {
49
+ hideTooltip();
50
+ if (event && onPointerOutProps) onPointerOutProps(event);
51
+ }, [hideTooltip, onPointerOutProps]);
52
+ const onBlur = useCallback((event: FocusEvent) => {
53
+ hideTooltip();
54
+ if (event && onBlurProps) onBlurProps(event);
55
+ }, [hideTooltip, onBlurProps]);
56
+
57
+ const onPointerDown = useCallback((params: EventHandlerParams<Datum>) => {
58
+ showTooltip(params);
59
+ if (onPointerDownProps) onPointerDownProps(params);
60
+ }, [showTooltip, onPointerDownProps]);
61
+
62
+ useEventHandlers({
63
+ dataKey,
64
+ findNearestDatum,
65
+ onBlur: enableEvents ? onBlur : undefined,
66
+ onFocus: enableEvents ? onFocus : undefined,
67
+ onPointerMove: enableEvents ? onPointerMove : undefined,
68
+ onPointerOut: enableEvents ? onPointerOut : undefined,
69
+ onPointerUp: enableEvents ? onPointerUpProps : undefined,
70
+ onPointerDown: enableEvents ? onPointerDown : undefined,
71
+ allowedSources,
72
+ });
73
+ return useEventEmitters({
74
+ source,
75
+ onBlur: !!onBlurProps && enableEvents,
76
+ onFocus: !!onFocusProps && enableEvents,
77
+ onPointerMove: !!onPointerMoveProps && enableEvents,
78
+ onPointerOut: !!onPointerOutProps && enableEvents,
79
+ onPointerUp: !!onPointerUpProps && enableEvents,
80
+ onPointerDown: !!onPointerDownProps && enableEvents,
81
+ });
82
+ }
@@ -0,0 +1,18 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { FocusEvent, PointerEvent } from 'react';
3
+ import type { AxisScale } from '@octanejs/visx/axis';
4
+ import type { SeriesProps } from '../types';
5
+ import type { PointerEventHandlerParams } from './useEventHandlers.tsrx';
6
+ export type SeriesEventsParams<XScale extends AxisScale, YScale extends AxisScale, Datum extends object> = Pick<SeriesProps<XScale, YScale, Datum>, 'enableEvents' | 'onBlur' | 'onFocus' | 'onPointerMove' | 'onPointerOut' | 'onPointerUp' | 'onPointerDown'> & Pick<PointerEventHandlerParams<XScale, YScale, Datum>, 'dataKey' | 'allowedSources' | 'findNearestDatum'> & {
7
+ /** The source of emitted events. */
8
+ source: string;
9
+ };
10
+ /** This hook simplifies the logic for initializing Series event emitters + handlers. */
11
+ export default function useSeriesEvents<XScale extends AxisScale, YScale extends AxisScale, Datum extends object>({ dataKey, enableEvents, findNearestDatum, onBlur: onBlurProps, onFocus: onFocusProps, onPointerMove: onPointerMoveProps, onPointerOut: onPointerOutProps, onPointerUp: onPointerUpProps, onPointerDown: onPointerDownProps, source, allowedSources, }: SeriesEventsParams<XScale, YScale, Datum>): {
12
+ onPointerMove: ((event: PointerEvent) => void | undefined) | undefined;
13
+ onFocus: ((event: FocusEvent) => void | undefined) | undefined;
14
+ onBlur: ((event: FocusEvent) => void | undefined) | undefined;
15
+ onPointerOut: ((event: PointerEvent) => void | undefined) | undefined;
16
+ onPointerUp: ((event: PointerEvent) => void | undefined) | undefined;
17
+ onPointerDown: ((event: PointerEvent) => void | undefined) | undefined;
18
+ };