@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,131 @@
1
+ import type { ReactNode } from 'react';
2
+ import cx from 'classnames';
3
+ import { Group } from '@octanejs/visx/group';
4
+ import type { ScaleInput } from '@octanejs/visx/scale';
5
+ import Bar from './Bar.tsrx';
6
+ import type {
7
+ PositionScale,
8
+ DatumObject,
9
+ AnyScaleBand,
10
+ AddSVGProps,
11
+ BaseBarGroupProps,
12
+ BarGroup as BarGroupType,
13
+ GroupKey,
14
+ Accessor,
15
+ } from '../types';
16
+ import getBandwidth from '../util/getBandwidth';
17
+
18
+ export type BarGroupProps<Datum extends DatumObject, Key extends GroupKey = GroupKey, X0Scale extends AnyScaleBand = AnyScaleBand, X1Scale extends AnyScaleBand = AnyScaleBand> =
19
+ BaseBarGroupProps<Datum, Key> & {
20
+ /** Returns the value mapped to the x0 (group position) of a bar */
21
+ x0: Accessor<Datum, ScaleInput<X0Scale>>;
22
+ /** @octanejs/visx/scale or d3-scale that takes an x0 value (position of group) and maps it to an x0 axis position of the group. */
23
+ x0Scale: X0Scale;
24
+ /** @octanejs/visx/scale or d3-scale that takes a group key and maps it to an x axis position (within a group). */
25
+ x1Scale: X1Scale;
26
+ /** @octanejs/visx/scale or d3-scale that takes an y value (Datum[key]) and maps it to a y axis position. */
27
+ yScale: PositionScale;
28
+ /** Total height of the y-axis. */
29
+ height: number;
30
+ /** Override render function which is passed the computed BarGroups. */
31
+ children?: (barGroups: BarGroupType<Key>[]) => ReactNode;
32
+ };
33
+
34
+ /**
35
+ * Generates bar groups as an array of objects and renders `<rect />`s for each datum grouped by `key`. A general setup might look like this:
36
+ *
37
+ * ```js
38
+ * const data = [{
39
+ * date: date1,
40
+ * key1: value,
41
+ * key2: value,
42
+ * key3: value
43
+ * }, {
44
+ * date: date2,
45
+ * key1: value,
46
+ * key2: value,
47
+ * key3: value,
48
+ * }];
49
+ *
50
+ * const x0 = d => d.date;
51
+ * const keys = [key1, key2, key3];
52
+ *
53
+ * const x0Scale = scaleBand({
54
+ * domain: data.map(x0),
55
+ * padding: 0.2
56
+ * });
57
+ * const x1Scale = scaleBand({
58
+ * domain: keys,
59
+ * padding: 0.1
60
+ * });
61
+ * const yScale = scaleLinear({
62
+ * domain: [0, Math.max(...data.map(d => Math.max(...keys.map(key => d[key]))))]
63
+ * });
64
+ * const color = scaleOrdinal({
65
+ * domain: keys,
66
+ * range: [blue, green, purple]
67
+ * });
68
+ * ```
69
+ *
70
+ * Example: [https://airbnb.io/visx/bargroup](https://airbnb.io/visx/bargroup)
71
+ */
72
+ export default function BarGroup<Datum extends DatumObject, Key extends GroupKey = GroupKey, X0Scale extends AnyScaleBand = AnyScaleBand, X1Scale extends AnyScaleBand = AnyScaleBand>({
73
+ data,
74
+ className,
75
+ top,
76
+ left,
77
+ x0,
78
+ x0Scale,
79
+ x1Scale,
80
+ yScale,
81
+ color,
82
+ keys,
83
+ height,
84
+ children,
85
+ ...restProps
86
+ }: AddSVGProps<BarGroupProps<Datum, Key, X0Scale, X1Scale>, SVGRectElement>) {
87
+ const barWidth = getBandwidth(x1Scale);
88
+
89
+ const barGroups: BarGroupType<Key>[] = data.map(
90
+ (group, i) => ({
91
+ index: i,
92
+ x0: x0Scale(x0(group))!,
93
+ bars: keys.map((key, j) => {
94
+ const value = group[key];
95
+ return {
96
+ index: j,
97
+ key,
98
+ value,
99
+ width: barWidth,
100
+ x: x1Scale(key) || 0,
101
+ y: yScale(value) || 0,
102
+ color: color(key, j),
103
+ height: height - (yScale(value) || 0),
104
+ };
105
+ }),
106
+ }),
107
+ );
108
+
109
+ if (children) return <>
110
+ {children(barGroups)}
111
+ </>;
112
+
113
+ return <Group className={cx('visx-bar-group', className)} top={top} left={left}>{barGroups.map(
114
+ (barGroup) =>
115
+ <Group
116
+ key={`bar-group-${barGroup.index}-${barGroup.x0}`}
117
+ left={barGroup.x0}
118
+ >{barGroup.bars.map(
119
+ (bar) =>
120
+ <Bar
121
+ key={`bar-group-bar-${barGroup.index}-${bar.index}-${bar.value}-${bar.key}`}
122
+ x={bar.x}
123
+ y={bar.y}
124
+ width={bar.width}
125
+ height={bar.height}
126
+ fill={bar.color}
127
+ {...restProps}
128
+ />,
129
+ )}</Group>,
130
+ )}</Group>;
131
+ }
@@ -0,0 +1,57 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { ReactNode } from 'react';
3
+ import type { ScaleInput } from '@octanejs/visx/scale';
4
+ import type { PositionScale, DatumObject, AnyScaleBand, AddSVGProps, BaseBarGroupProps, BarGroup as BarGroupType, GroupKey, Accessor } from '../types';
5
+ export type BarGroupProps<Datum extends DatumObject, Key extends GroupKey = GroupKey, X0Scale extends AnyScaleBand = AnyScaleBand, X1Scale extends AnyScaleBand = AnyScaleBand> = BaseBarGroupProps<Datum, Key> & {
6
+ /** Returns the value mapped to the x0 (group position) of a bar */
7
+ x0: Accessor<Datum, ScaleInput<X0Scale>>;
8
+ /** @octanejs/visx/scale or d3-scale that takes an x0 value (position of group) and maps it to an x0 axis position of the group. */
9
+ x0Scale: X0Scale;
10
+ /** @octanejs/visx/scale or d3-scale that takes a group key and maps it to an x axis position (within a group). */
11
+ x1Scale: X1Scale;
12
+ /** @octanejs/visx/scale or d3-scale that takes an y value (Datum[key]) and maps it to a y axis position. */
13
+ yScale: PositionScale;
14
+ /** Total height of the y-axis. */
15
+ height: number;
16
+ /** Override render function which is passed the computed BarGroups. */
17
+ children?: (barGroups: BarGroupType<Key>[]) => ReactNode;
18
+ };
19
+ /**
20
+ * Generates bar groups as an array of objects and renders `<rect />`s for each datum grouped by `key`. A general setup might look like this:
21
+ *
22
+ * ```js
23
+ * const data = [{
24
+ * date: date1,
25
+ * key1: value,
26
+ * key2: value,
27
+ * key3: value
28
+ * }, {
29
+ * date: date2,
30
+ * key1: value,
31
+ * key2: value,
32
+ * key3: value,
33
+ * }];
34
+ *
35
+ * const x0 = d => d.date;
36
+ * const keys = [key1, key2, key3];
37
+ *
38
+ * const x0Scale = scaleBand({
39
+ * domain: data.map(x0),
40
+ * padding: 0.2
41
+ * });
42
+ * const x1Scale = scaleBand({
43
+ * domain: keys,
44
+ * padding: 0.1
45
+ * });
46
+ * const yScale = scaleLinear({
47
+ * domain: [0, Math.max(...data.map(d => Math.max(...keys.map(key => d[key]))))]
48
+ * });
49
+ * const color = scaleOrdinal({
50
+ * domain: keys,
51
+ * range: [blue, green, purple]
52
+ * });
53
+ * ```
54
+ *
55
+ * Example: [https://airbnb.io/visx/bargroup](https://airbnb.io/visx/bargroup)
56
+ */
57
+ export default function BarGroup<Datum extends DatumObject, Key extends GroupKey = GroupKey, X0Scale extends AnyScaleBand = AnyScaleBand, X1Scale extends AnyScaleBand = AnyScaleBand>({ data, className, top, left, x0, x0Scale, x1Scale, yScale, color, keys, height, children, ...restProps }: AddSVGProps<BarGroupProps<Datum, Key, X0Scale, X1Scale>, SVGRectElement>): import("react").JSX.Element;
@@ -0,0 +1,100 @@
1
+ import type { ReactNode } from 'react';
2
+ import cx from 'classnames';
3
+ import { Group } from '@octanejs/visx/group';
4
+ import type { ScaleInput } from '@octanejs/visx/scale';
5
+ import Bar from './Bar.tsrx';
6
+ import type {
7
+ PositionScale,
8
+ AnyScaleBand,
9
+ DatumObject,
10
+ AddSVGProps,
11
+ BarGroupHorizontal as BarGroupHorizontalType,
12
+ BaseBarGroupProps,
13
+ GroupKey,
14
+ Accessor,
15
+ } from '../types';
16
+ import getBandwidth from '../util/getBandwidth';
17
+
18
+ export type BarGroupHorizontalProps<Datum extends DatumObject, Key extends GroupKey = GroupKey, Y0Scale extends AnyScaleBand = AnyScaleBand, Y1Scale extends AnyScaleBand = AnyScaleBand> =
19
+ BaseBarGroupProps<Datum, Key> & {
20
+ /** Returns the value (Datum[key]) mapped to the x of a bar */
21
+ x?: (barValue: number) => number;
22
+ /** Returns the value mapped to the y0 (position of group) of a bar */
23
+ y0: Accessor<Datum, ScaleInput<Y0Scale>>;
24
+ /** @octanejs/visx/scale or d3-scale that takes a key value (Datum[key]) and maps it to an x axis position (width of bar). */
25
+ xScale: PositionScale;
26
+ /** @octanejs/visx/scale or d3-scale that takes a y0 value (position of group) and maps it to a y axis position. */
27
+ y0Scale: Y0Scale;
28
+ /** @octanejs/visx/scale or d3-scale that takes a group key and maps it to an y axis position (within a group). */
29
+ y1Scale: Y1Scale;
30
+ /** Total width of the x-axis. */
31
+ width: number;
32
+ /** Override render function which is passed the computed Ba/rGroups. */
33
+ children?: (barGroups: BarGroupHorizontalType<Key>[]) => ReactNode;
34
+ };
35
+
36
+ export default function BarGroupHorizontal<Datum extends DatumObject, Key extends GroupKey = GroupKey, Y0Scale extends AnyScaleBand = AnyScaleBand, Y1Scale extends AnyScaleBand = AnyScaleBand>({
37
+ data,
38
+ className,
39
+ top,
40
+ left,
41
+ x = () => /** val */ 0,
42
+ y0,
43
+ y0Scale,
44
+ y1Scale,
45
+ xScale,
46
+ color,
47
+ keys,
48
+ width,
49
+ children,
50
+ ...restProps
51
+ }: AddSVGProps<BarGroupHorizontalProps<Datum, Key, Y0Scale, Y1Scale>, SVGRectElement>) {
52
+ const barHeight = getBandwidth(y1Scale);
53
+
54
+ const barGroups: BarGroupHorizontalType<Key>[] = data.map(
55
+ (group, i) => ({
56
+ index: i,
57
+ y0: y0Scale(y0(group)) || 0,
58
+ bars: keys.map((key, j) => {
59
+ const value = group[key];
60
+ return {
61
+ index: j,
62
+ key,
63
+ value,
64
+ height: barHeight,
65
+ x: x(value) || 0,
66
+ y: y1Scale(key) || 0,
67
+ color: color(key, j),
68
+ width: xScale(value) || 0,
69
+ };
70
+ }),
71
+ }),
72
+ );
73
+
74
+ if (children) return <>
75
+ {children(barGroups)}
76
+ </>;
77
+
78
+ return <Group
79
+ className={cx('visx-bar-group-horizontal', className)}
80
+ top={top}
81
+ left={left}
82
+ >{barGroups.map(
83
+ (barGroup) =>
84
+ <Group
85
+ key={`bar-group-${barGroup.index}-${barGroup.y0}`}
86
+ top={barGroup.y0}
87
+ >{barGroup.bars.map(
88
+ (bar) =>
89
+ <Bar
90
+ key={`bar-group-bar-${barGroup.index}-${bar.index}-${bar.value}-${bar.key}`}
91
+ x={bar.x}
92
+ y={bar.y}
93
+ width={bar.width}
94
+ height={bar.height}
95
+ fill={bar.color}
96
+ {...restProps}
97
+ />,
98
+ )}</Group>,
99
+ )}</Group>;
100
+ }
@@ -0,0 +1,21 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { ReactNode } from 'react';
3
+ import type { ScaleInput } from '@octanejs/visx/scale';
4
+ import type { PositionScale, AnyScaleBand, DatumObject, AddSVGProps, BarGroupHorizontal as BarGroupHorizontalType, BaseBarGroupProps, GroupKey, Accessor } from '../types';
5
+ export type BarGroupHorizontalProps<Datum extends DatumObject, Key extends GroupKey = GroupKey, Y0Scale extends AnyScaleBand = AnyScaleBand, Y1Scale extends AnyScaleBand = AnyScaleBand> = BaseBarGroupProps<Datum, Key> & {
6
+ /** Returns the value (Datum[key]) mapped to the x of a bar */
7
+ x?: (barValue: number) => number;
8
+ /** Returns the value mapped to the y0 (position of group) of a bar */
9
+ y0: Accessor<Datum, ScaleInput<Y0Scale>>;
10
+ /** @octanejs/visx/scale or d3-scale that takes a key value (Datum[key]) and maps it to an x axis position (width of bar). */
11
+ xScale: PositionScale;
12
+ /** @octanejs/visx/scale or d3-scale that takes a y0 value (position of group) and maps it to a y axis position. */
13
+ y0Scale: Y0Scale;
14
+ /** @octanejs/visx/scale or d3-scale that takes a group key and maps it to an y axis position (within a group). */
15
+ y1Scale: Y1Scale;
16
+ /** Total width of the x-axis. */
17
+ width: number;
18
+ /** Override render function which is passed the computed Ba/rGroups. */
19
+ children?: (barGroups: BarGroupHorizontalType<Key>[]) => ReactNode;
20
+ };
21
+ export default function BarGroupHorizontal<Datum extends DatumObject, Key extends GroupKey = GroupKey, Y0Scale extends AnyScaleBand = AnyScaleBand, Y1Scale extends AnyScaleBand = AnyScaleBand>({ data, className, top, left, x, y0, y0Scale, y1Scale, xScale, color, keys, width, children, ...restProps }: AddSVGProps<BarGroupHorizontalProps<Datum, Key, Y0Scale, Y1Scale>, SVGRectElement>): import("react").JSX.Element;
@@ -0,0 +1,153 @@
1
+ import type { ReactNode, Ref } from 'react';
2
+ import cx from 'classnames';
3
+ import type { AddSVGProps } from '../types';
4
+
5
+ export type BarRoundedProps = {
6
+ /** className to apply to path element. */
7
+ className?: string;
8
+ /** reference to path element. */
9
+ innerRef?: Ref<SVGPathElement>;
10
+ /** left position of the bar */
11
+ x: number;
12
+ /** top position of the bar */
13
+ y: number;
14
+ /** width of the bar starting from x */
15
+ width: number;
16
+ /** height of the bar starting from y */
17
+ height: number;
18
+ /** corner radius of the bar. clamped to center of the shorter side of the bar (Math.min(width,height) / 2) */
19
+ radius: number;
20
+ /** apply corner radius to top left corner, top right corner, bottom right corner, and bottom left corner */
21
+ all?: boolean;
22
+ /** apply corner radius to top left corner, and top right corner */
23
+ top?: boolean;
24
+ /** apply corner radius to bottom right corner, and bottom left corner */
25
+ bottom?: boolean;
26
+ /** apply corner radius to top left corner, and bottom left corner */
27
+ left?: boolean;
28
+ /** apply corner radius to top right corner, and bottom right corner */
29
+ right?: boolean;
30
+ /** apply corner radius to top left corner */
31
+ topLeft?: boolean;
32
+ /** apply corner radius to top right corner */
33
+ topRight?: boolean;
34
+ /** apply corner radius to bottom left corner */
35
+ bottomLeft?: boolean;
36
+ /** apply corner radius to bottom right */
37
+ bottomRight?: boolean;
38
+ /** Optional children override. */
39
+ children?: ({
40
+ path,
41
+ }: {
42
+ path: string;
43
+ }) => ReactNode;
44
+ };
45
+
46
+ /** Hook that returns a BarRounded path. */
47
+ export function useBarRoundedPath({
48
+ all,
49
+ bottom,
50
+ bottomLeft,
51
+ bottomRight,
52
+ height,
53
+ left,
54
+ radius,
55
+ right,
56
+ top,
57
+ topLeft,
58
+ topRight,
59
+ width,
60
+ x,
61
+ y,
62
+ }: Pick<BarRoundedProps, | 'all'
63
+ | 'top'
64
+ | 'bottom'
65
+ | 'left'
66
+ | 'right'
67
+ | 'x'
68
+ | 'y'
69
+ | 'width'
70
+ | 'height'
71
+ | 'radius'
72
+ | 'topLeft'
73
+ | 'topRight'
74
+ | 'bottomRight'
75
+ | 'bottomLeft'>) {
76
+ topRight = all || top || right || topRight;
77
+ bottomRight = all || bottom || right || bottomRight;
78
+ bottomLeft = all || bottom || left || bottomLeft;
79
+ topLeft = all || top || left || topLeft;
80
+
81
+ // clamp radius to center of shortest side of the rect
82
+ radius = Math.max(1, Math.min(radius, Math.min(width, height) / 2));
83
+
84
+ const diameter = 2 * radius;
85
+ const path = `M${x + radius},${y} h${width - diameter}
86
+ ${
87
+ topRight ? `a${radius},${radius} 0 0 1 ${radius},${radius}` : `h${radius}v${radius}`
88
+ }
89
+ v${height - diameter}
90
+ ${
91
+ bottomRight ? `a${radius},${radius} 0 0 1 ${-radius},${radius}` : `v${radius}h${-radius}`
92
+ }
93
+ h${diameter - width}
94
+ ${
95
+ bottomLeft ? `a${radius},${radius} 0 0 1 ${-radius},${-radius}` : `h${-radius}v${-radius}`
96
+ }
97
+ v${diameter - height}
98
+ ${
99
+ topLeft ? `a${radius},${radius} 0 0 1 ${radius},${-radius}` : `v${-radius}h${radius}`
100
+ }
101
+ z`.split('\n').join('');
102
+
103
+ return path;
104
+ }
105
+
106
+ export default function BarRounded({
107
+ children,
108
+ className,
109
+ innerRef,
110
+ x,
111
+ y,
112
+ width,
113
+ height,
114
+ radius,
115
+ all = false,
116
+ top = false,
117
+ bottom = false,
118
+ left = false,
119
+ right = false,
120
+ topLeft = false,
121
+ topRight = false,
122
+ bottomLeft = false,
123
+ bottomRight = false,
124
+ ...restProps
125
+ }: AddSVGProps<BarRoundedProps, SVGPathElement>) {
126
+ const path = useBarRoundedPath({
127
+ x,
128
+ y,
129
+ width,
130
+ height,
131
+ radius,
132
+ all,
133
+ top,
134
+ bottom,
135
+ left,
136
+ right,
137
+ topLeft,
138
+ topRight,
139
+ bottomLeft,
140
+ bottomRight,
141
+ });
142
+
143
+ if (children) return <>
144
+ {children({ path })}
145
+ </>;
146
+
147
+ return <path
148
+ ref={innerRef}
149
+ className={cx('visx-bar-rounded', className)}
150
+ d={path}
151
+ {...restProps}
152
+ />;
153
+ }
@@ -0,0 +1,44 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { ReactNode, Ref } from 'react';
3
+ import type { AddSVGProps } from '../types';
4
+ export type BarRoundedProps = {
5
+ /** className to apply to path element. */
6
+ className?: string;
7
+ /** reference to path element. */
8
+ innerRef?: Ref<SVGPathElement>;
9
+ /** left position of the bar */
10
+ x: number;
11
+ /** top position of the bar */
12
+ y: number;
13
+ /** width of the bar starting from x */
14
+ width: number;
15
+ /** height of the bar starting from y */
16
+ height: number;
17
+ /** corner radius of the bar. clamped to center of the shorter side of the bar (Math.min(width,height) / 2) */
18
+ radius: number;
19
+ /** apply corner radius to top left corner, top right corner, bottom right corner, and bottom left corner */
20
+ all?: boolean;
21
+ /** apply corner radius to top left corner, and top right corner */
22
+ top?: boolean;
23
+ /** apply corner radius to bottom right corner, and bottom left corner */
24
+ bottom?: boolean;
25
+ /** apply corner radius to top left corner, and bottom left corner */
26
+ left?: boolean;
27
+ /** apply corner radius to top right corner, and bottom right corner */
28
+ right?: boolean;
29
+ /** apply corner radius to top left corner */
30
+ topLeft?: boolean;
31
+ /** apply corner radius to top right corner */
32
+ topRight?: boolean;
33
+ /** apply corner radius to bottom left corner */
34
+ bottomLeft?: boolean;
35
+ /** apply corner radius to bottom right */
36
+ bottomRight?: boolean;
37
+ /** Optional children override. */
38
+ children?: ({ path, }: {
39
+ path: string;
40
+ }) => ReactNode;
41
+ };
42
+ /** Hook that returns a BarRounded path. */
43
+ export declare function useBarRoundedPath({ all, bottom, bottomLeft, bottomRight, height, left, radius, right, top, topLeft, topRight, width, x, y, }: Pick<BarRoundedProps, 'all' | 'top' | 'bottom' | 'left' | 'right' | 'x' | 'y' | 'width' | 'height' | 'radius' | 'topLeft' | 'topRight' | 'bottomRight' | 'bottomLeft'>): string;
44
+ export default function BarRounded({ children, className, innerRef, x, y, width, height, radius, all, top, bottom, left, right, topLeft, topRight, bottomLeft, bottomRight, ...restProps }: AddSVGProps<BarRoundedProps, SVGPathElement>): import("react").JSX.Element;
@@ -0,0 +1,103 @@
1
+ import cx from 'classnames';
2
+ import type { SeriesPoint } from 'd3-shape';
3
+ import { stack as d3stack } from 'd3-shape';
4
+ import { Group } from '@octanejs/visx/group';
5
+ import type { ScaleInput } from '@octanejs/visx/scale';
6
+ import type {
7
+ PositionScale,
8
+ AddSVGProps,
9
+ BarStack as BarStackType,
10
+ BaseBarStackProps,
11
+ StackKey,
12
+ Accessor,
13
+ } from '../types';
14
+ import { getFirstItem, getSecondItem } from '../util/accessors';
15
+ import getBandwidth from '../util/getBandwidth';
16
+ import setNumOrAccessor from '../util/setNumberOrNumberAccessor';
17
+ import stackOrder from '../util/stackOrder';
18
+ import stackOffset from '../util/stackOffset';
19
+ import Bar from './Bar.tsrx';
20
+
21
+ export type BarStackProps<Datum, Key extends StackKey = StackKey, XScale extends PositionScale = PositionScale, YScale extends PositionScale = PositionScale> =
22
+ BaseBarStackProps<Datum, Key, XScale, YScale> & {
23
+ /** Returns the value mapped to the x of a bar. */
24
+ x: Accessor<Datum, ScaleInput<XScale>>;
25
+ /** Returns the value mapped to the y0 of a bar. */
26
+ y0?: Accessor<SeriesPoint<Datum>, ScaleInput<YScale>>;
27
+ /** Returns the value mapped to the y1 of a bar. */
28
+ y1?: Accessor<SeriesPoint<Datum>, ScaleInput<YScale>>;
29
+ };
30
+
31
+ export default function BarStack<Datum, Key extends StackKey = StackKey, XScale extends PositionScale = PositionScale, YScale extends PositionScale = PositionScale>({
32
+ data,
33
+ className,
34
+ top,
35
+ left,
36
+ x,
37
+ y0 = getFirstItem,
38
+ y1 = getSecondItem,
39
+ xScale,
40
+ yScale,
41
+ color,
42
+ keys,
43
+ value,
44
+ order,
45
+ offset,
46
+ children,
47
+ ...restProps
48
+ }: AddSVGProps<BarStackProps<Datum, Key, XScale, YScale>, SVGRectElement>) {
49
+ const stack = d3stack<Datum, Key>();
50
+ if (keys) stack.keys(keys);
51
+ if (value) setNumOrAccessor(stack.value, value);
52
+ if (order) stack.order(stackOrder(order));
53
+ if (offset) stack.offset(stackOffset(offset));
54
+
55
+ const stacks = stack(data);
56
+ const barWidth = getBandwidth(xScale);
57
+
58
+ const barStacks: BarStackType<Datum, Key>[] = stacks.map((barStack, i) => {
59
+ const { key } = barStack;
60
+ return {
61
+ index: i,
62
+ key,
63
+ bars: barStack.map((bar, j) => {
64
+ const barHeight = (yScale(y0(bar)) || 0) - (yScale(y1(bar)) || 0);
65
+ const barY = yScale(y1(bar));
66
+ const barX =
67
+ 'bandwidth' in xScale
68
+ ? xScale(x(bar.data))
69
+ : Math.max((xScale(x(bar.data)) || 0) - barWidth / 2);
70
+
71
+ return {
72
+ bar,
73
+ key,
74
+ index: j,
75
+ height: barHeight,
76
+ width: barWidth,
77
+ x: barX || 0,
78
+ y: barY || 0,
79
+ color: color(barStack.key, j),
80
+ };
81
+ }),
82
+ };
83
+ });
84
+
85
+ if (children) return <>
86
+ {children(barStacks)}
87
+ </>;
88
+
89
+ return <Group className={cx('visx-bar-stack', className)} top={top} left={left}>{barStacks.map(
90
+ (barStack) => barStack.bars.map(
91
+ (bar) =>
92
+ <Bar
93
+ key={`bar-stack-${barStack.index}-${bar.index}`}
94
+ x={bar.x}
95
+ y={bar.y}
96
+ height={bar.height}
97
+ width={bar.width}
98
+ fill={bar.color}
99
+ {...restProps}
100
+ />,
101
+ ),
102
+ )}</Group>;
103
+ }
@@ -0,0 +1,13 @@
1
+ // Generated by scripts/generate-tsrx-types.mjs.
2
+ import type { SeriesPoint } from 'd3-shape';
3
+ import type { ScaleInput } from '@octanejs/visx/scale';
4
+ import type { PositionScale, AddSVGProps, BaseBarStackProps, StackKey, Accessor } from '../types';
5
+ export type BarStackProps<Datum, Key extends StackKey = StackKey, XScale extends PositionScale = PositionScale, YScale extends PositionScale = PositionScale> = BaseBarStackProps<Datum, Key, XScale, YScale> & {
6
+ /** Returns the value mapped to the x of a bar. */
7
+ x: Accessor<Datum, ScaleInput<XScale>>;
8
+ /** Returns the value mapped to the y0 of a bar. */
9
+ y0?: Accessor<SeriesPoint<Datum>, ScaleInput<YScale>>;
10
+ /** Returns the value mapped to the y1 of a bar. */
11
+ y1?: Accessor<SeriesPoint<Datum>, ScaleInput<YScale>>;
12
+ };
13
+ export default function BarStack<Datum, Key extends StackKey = StackKey, XScale extends PositionScale = PositionScale, YScale extends PositionScale = PositionScale>({ data, className, top, left, x, y0, y1, xScale, yScale, color, keys, value, order, offset, children, ...restProps }: AddSVGProps<BarStackProps<Datum, Key, XScale, YScale>, SVGRectElement>): import("react").JSX.Element;