@solidports/recharts 0.1.0 → 0.1.1

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 (304) hide show
  1. package/dist/index.d.ts +40 -2
  2. package/dist/index.js +14238 -7174
  3. package/dist/{dev.js → index.jsx} +18367 -15900
  4. package/dist/server.js +48178 -0
  5. package/package.json +36 -19
  6. package/src/animation/AnimatedItems.tsx +0 -183
  7. package/src/animation/AnimationController.ts +0 -33
  8. package/src/animation/AnimationControllerImpl.ts +0 -36
  9. package/src/animation/AnimationHandle.ts +0 -307
  10. package/src/animation/CSSTransitionAnimate.tsx +0 -170
  11. package/src/animation/JavascriptAnimate.tsx +0 -119
  12. package/src/animation/easing.ts +0 -221
  13. package/src/animation/matchBy.ts +0 -164
  14. package/src/animation/timeoutController.ts +0 -70
  15. package/src/animation/useAnimationController.tsx +0 -34
  16. package/src/animation/useAnimationStartSnapshot.ts +0 -118
  17. package/src/animation/util.ts +0 -41
  18. package/src/cartesian/Area.tsx +0 -915
  19. package/src/cartesian/AreaRevealShape.tsx +0 -190
  20. package/src/cartesian/Bar.tsx +0 -1369
  21. package/src/cartesian/BarStack.tsx +0 -152
  22. package/src/cartesian/Brush.tsx +0 -951
  23. package/src/cartesian/CartesianAxis.tsx +0 -722
  24. package/src/cartesian/CartesianGrid.tsx +0 -711
  25. package/src/cartesian/ErrorBar.tsx +0 -361
  26. package/src/cartesian/Funnel.tsx +0 -803
  27. package/src/cartesian/GraphicalItemClipPath.tsx +0 -67
  28. package/src/cartesian/Line.tsx +0 -863
  29. package/src/cartesian/LineDrawShape.tsx +0 -89
  30. package/src/cartesian/ReferenceArea.tsx +0 -331
  31. package/src/cartesian/ReferenceDot.tsx +0 -304
  32. package/src/cartesian/ReferenceLine.tsx +0 -474
  33. package/src/cartesian/Scatter.tsx +0 -888
  34. package/src/cartesian/XAxis.tsx +0 -433
  35. package/src/cartesian/YAxis.tsx +0 -443
  36. package/src/cartesian/ZAxis.tsx +0 -155
  37. package/src/cartesian/cartesianPositionToCSSTranslate.tsx +0 -29
  38. package/src/cartesian/cartesianViewBoxToTrapezoid.tsx +0 -21
  39. package/src/cartesian/getCartesianPosition.tsx +0 -267
  40. package/src/cartesian/getEquidistantTicks.ts +0 -144
  41. package/src/cartesian/getTicks.ts +0 -225
  42. package/src/cartesian/isOutsidePosition.ts +0 -15
  43. package/src/cartesian/useAnimatedLineLength.ts +0 -54
  44. package/src/chart/AreaChart.tsx +0 -29
  45. package/src/chart/BarChart.tsx +0 -29
  46. package/src/chart/CartesianChart.tsx +0 -131
  47. package/src/chart/CategoricalChart.tsx +0 -94
  48. package/src/chart/ComposedChart.tsx +0 -29
  49. package/src/chart/FunnelChart.tsx +0 -29
  50. package/src/chart/LineChart.tsx +0 -29
  51. package/src/chart/PieChart.tsx +0 -50
  52. package/src/chart/PolarChart.tsx +0 -164
  53. package/src/chart/RadarChart.tsx +0 -70
  54. package/src/chart/RadialBarChart.tsx +0 -46
  55. package/src/chart/RechartsWrapper.tsx +0 -551
  56. package/src/chart/Sankey.tsx +0 -1534
  57. package/src/chart/ScatterChart.tsx +0 -29
  58. package/src/chart/SunburstChart.tsx +0 -504
  59. package/src/chart/Treemap.tsx +0 -1223
  60. package/src/chart/createInitialRootProps.ts +0 -24
  61. package/src/chart/types.ts +0 -53
  62. package/src/component/ActivePoints.tsx +0 -144
  63. package/src/component/Cell.tsx +0 -37
  64. package/src/component/Cursor.tsx +0 -185
  65. package/src/component/Customized.tsx +0 -50
  66. package/src/component/DefaultLegendContent.tsx +0 -348
  67. package/src/component/DefaultTooltipContent.tsx +0 -224
  68. package/src/component/Dots.tsx +0 -157
  69. package/src/component/Label.tsx +0 -636
  70. package/src/component/LabelList.tsx +0 -375
  71. package/src/component/Legend.tsx +0 -512
  72. package/src/component/ResponsiveContainer.tsx +0 -348
  73. package/src/component/Text.tsx +0 -541
  74. package/src/component/Tooltip.tsx +0 -470
  75. package/src/component/TooltipBoundingBox.tsx +0 -146
  76. package/src/component/responsiveContainerUtils.ts +0 -134
  77. package/src/container/ClipPathProvider.tsx +0 -51
  78. package/src/container/Layer.tsx +0 -38
  79. package/src/container/RootSurface.tsx +0 -120
  80. package/src/container/Surface.tsx +0 -61
  81. package/src/context/CellsContext.tsx +0 -54
  82. package/src/context/ErrorBarContext.tsx +0 -146
  83. package/src/context/GraphicalItemChildrenScope.tsx +0 -18
  84. package/src/context/PanoramaContext.tsx +0 -9
  85. package/src/context/RegisterGraphicalItemId.tsx +0 -30
  86. package/src/context/accessibilityContext.tsx +0 -6
  87. package/src/context/brushUpdateContext.tsx +0 -9
  88. package/src/context/chartDataContext.tsx +0 -97
  89. package/src/context/chartLayoutContext.tsx +0 -201
  90. package/src/context/legendPayloadContext.tsx +0 -20
  91. package/src/context/legendPortalContext.tsx +0 -12
  92. package/src/context/tooltipContext.tsx +0 -89
  93. package/src/context/tooltipPortalContext.tsx +0 -12
  94. package/src/context/useTooltipAxis.ts +0 -22
  95. package/src/hooks.ts +0 -476
  96. package/src/index.ts +0 -280
  97. package/src/polar/Pie.tsx +0 -1360
  98. package/src/polar/PolarAngleAxis.tsx +0 -616
  99. package/src/polar/PolarGrid.tsx +0 -312
  100. package/src/polar/PolarRadiusAxis.tsx +0 -547
  101. package/src/polar/Radar.tsx +0 -734
  102. package/src/polar/RadialBar.tsx +0 -917
  103. package/src/polar/defaultPolarAngleAxisProps.tsx +0 -27
  104. package/src/polar/defaultPolarRadiusAxisProps.tsx +0 -25
  105. package/src/shape/Cross.tsx +0 -89
  106. package/src/shape/Curve.tsx +0 -343
  107. package/src/shape/Dot.tsx +0 -70
  108. package/src/shape/Polygon.tsx +0 -195
  109. package/src/shape/Rectangle.tsx +0 -470
  110. package/src/shape/Sector.tsx +0 -347
  111. package/src/shape/Symbols.tsx +0 -139
  112. package/src/shape/Trapezoid.tsx +0 -280
  113. package/src/state/RechartsStateContext.tsx +0 -12
  114. package/src/state/RechartsStateProvider.tsx +0 -87
  115. package/src/state/RechartsStoreContext.tsx +0 -25
  116. package/src/state/RechartsStoreProvider.tsx +0 -35
  117. package/src/state/ReportChartProps.tsx +0 -40
  118. package/src/state/ReportEventSettings.tsx +0 -30
  119. package/src/state/ReportMainChartProps.tsx +0 -61
  120. package/src/state/ReportPolarOptions.tsx +0 -35
  121. package/src/state/SetGraphicalItem.ts +0 -79
  122. package/src/state/SetLegendPayload.ts +0 -134
  123. package/src/state/SetTooltipEntrySettings.tsx +0 -72
  124. package/src/state/actions.ts +0 -464
  125. package/src/state/brushSlice.ts +0 -13
  126. package/src/state/cartesianAxisSlice.ts +0 -141
  127. package/src/state/chartDataSlice.ts +0 -50
  128. package/src/state/chartState.ts +0 -297
  129. package/src/state/errorBarSlice.ts +0 -29
  130. package/src/state/eventSettingsSlice.ts +0 -8
  131. package/src/state/events.ts +0 -76
  132. package/src/state/externalEventsMiddleware.ts +0 -255
  133. package/src/state/graphicalItemsSlice.ts +0 -74
  134. package/src/state/hooks/useChartSelectors.tsx +0 -45
  135. package/src/state/keyboardEventsMiddleware.ts +0 -228
  136. package/src/state/layoutSlice.ts +0 -21
  137. package/src/state/legendSlice.ts +0 -57
  138. package/src/state/mouseEventsMiddleware.ts +0 -185
  139. package/src/state/optionsSlice.ts +0 -47
  140. package/src/state/polarAxisSlice.ts +0 -10
  141. package/src/state/polarOptionsSlice.ts +0 -12
  142. package/src/state/rawData.ts +0 -26
  143. package/src/state/referenceElementsSlice.ts +0 -40
  144. package/src/state/renderedTicksSlice.ts +0 -15
  145. package/src/state/rootPropsSlice.ts +0 -47
  146. package/src/state/selectors/areaSelectors.ts +0 -240
  147. package/src/state/selectors/arrayEqualityCheck.ts +0 -29
  148. package/src/state/selectors/axisSelectors.ts +0 -2157
  149. package/src/state/selectors/barSelectors.ts +0 -310
  150. package/src/state/selectors/barStackSelectors.ts +0 -77
  151. package/src/state/selectors/brushSelectors.ts +0 -33
  152. package/src/state/selectors/chartSelector.ts +0 -185
  153. package/src/state/selectors/combiners/combineActiveLabel.ts +0 -16
  154. package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +0 -95
  155. package/src/state/selectors/combiners/combineAllBarPositions.ts +0 -122
  156. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +0 -16
  157. package/src/state/selectors/combiners/combineBarPosition.ts +0 -23
  158. package/src/state/selectors/combiners/combineBarSizeList.ts +0 -80
  159. package/src/state/selectors/combiners/combineCheckedDomain.ts +0 -48
  160. package/src/state/selectors/combiners/combineConfiguredScale.ts +0 -111
  161. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +0 -45
  162. package/src/state/selectors/combiners/combineDisplayedStackedData.ts +0 -50
  163. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +0 -16
  164. package/src/state/selectors/combiners/combineRealScaleType.ts +0 -44
  165. package/src/state/selectors/combiners/combineStackedData.ts +0 -27
  166. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +0 -86
  167. package/src/state/selectors/combiners/combineTooltipPayload.ts +0 -205
  168. package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +0 -58
  169. package/src/state/selectors/containerSelectors.ts +0 -12
  170. package/src/state/selectors/dataSelectors.ts +0 -88
  171. package/src/state/selectors/funnelSelectors.ts +0 -75
  172. package/src/state/selectors/graphicalItemSelectors.ts +0 -30
  173. package/src/state/selectors/legendSelectors.ts +0 -29
  174. package/src/state/selectors/lineSelectors.ts +0 -134
  175. package/src/state/selectors/numberDomainEqualityCheck.ts +0 -14
  176. package/src/state/selectors/pickAxisId.ts +0 -5
  177. package/src/state/selectors/pickAxisType.ts +0 -3
  178. package/src/state/selectors/pieSelectors.ts +0 -97
  179. package/src/state/selectors/polarAxisSelectors.ts +0 -201
  180. package/src/state/selectors/polarGridSelectors.ts +0 -28
  181. package/src/state/selectors/polarScaleSelectors.ts +0 -133
  182. package/src/state/selectors/polarSelectors.ts +0 -219
  183. package/src/state/selectors/radarSelectors.ts +0 -191
  184. package/src/state/selectors/radialBarSelectors.ts +0 -435
  185. package/src/state/selectors/rootPropsSelectors.ts +0 -25
  186. package/src/state/selectors/scatterSelectors.ts +0 -96
  187. package/src/state/selectors/selectActivePropsFromChartPointer.ts +0 -26
  188. package/src/state/selectors/selectAllAxes.ts +0 -17
  189. package/src/state/selectors/selectChartOffset.ts +0 -16
  190. package/src/state/selectors/selectChartOffsetInternal.ts +0 -136
  191. package/src/state/selectors/selectLegendArea.ts +0 -20
  192. package/src/state/selectors/selectPlotArea.ts +0 -22
  193. package/src/state/selectors/selectTooltipAxisId.ts +0 -7
  194. package/src/state/selectors/selectTooltipAxisType.ts +0 -32
  195. package/src/state/selectors/selectTooltipEventType.ts +0 -48
  196. package/src/state/selectors/selectTooltipPayloadSearcher.ts +0 -6
  197. package/src/state/selectors/selectTooltipSettings.ts +0 -39
  198. package/src/state/selectors/selectTooltipState.ts +0 -8
  199. package/src/state/selectors/selectors.ts +0 -271
  200. package/src/state/selectors/tooltipSelectors.ts +0 -578
  201. package/src/state/selectors/touchSelectors.ts +0 -31
  202. package/src/state/store.ts +0 -29
  203. package/src/state/storeIdentity.ts +0 -9
  204. package/src/state/teardownWrite.ts +0 -10
  205. package/src/state/tooltipInteraction.ts +0 -23
  206. package/src/state/tooltipSlice.ts +0 -334
  207. package/src/state/touchEventsMiddleware.ts +0 -214
  208. package/src/state/types/AnimationSettings.ts +0 -20
  209. package/src/state/types/AreaSettings.ts +0 -14
  210. package/src/state/types/BarSettings.ts +0 -15
  211. package/src/state/types/LineSettings.ts +0 -9
  212. package/src/state/types/PieSettings.ts +0 -34
  213. package/src/state/types/RadarSettings.ts +0 -5
  214. package/src/state/types/RadialBarSettings.ts +0 -10
  215. package/src/state/types/ScatterSettings.ts +0 -12
  216. package/src/state/types/StackedGraphicalItem.ts +0 -34
  217. package/src/state/useChartState.ts +0 -17
  218. package/src/state/zIndexSlice.ts +0 -39
  219. package/src/synchronisation/syncSelectors.ts +0 -7
  220. package/src/synchronisation/types.ts +0 -44
  221. package/src/synchronisation/useChartSynchronisation.tsx +0 -404
  222. package/src/theme/RechartsTheme.ts +0 -16
  223. package/src/theme/RechartsThemeContext.ts +0 -19
  224. package/src/theme/darkTheme.ts +0 -13
  225. package/src/theme/graphicalItemIdentity.ts +0 -70
  226. package/src/theme/legacyTheme.ts +0 -17
  227. package/src/theme/lightTheme.ts +0 -13
  228. package/src/types.ts +0 -54
  229. package/src/util/ActiveShapeUtils.tsx +0 -162
  230. package/src/util/BarUtils.tsx +0 -62
  231. package/src/util/BarePortal.tsx +0 -50
  232. package/src/util/CamelCaseSVGAttrs.ts +0 -34
  233. package/src/util/CartesianUtils.ts +0 -48
  234. package/src/util/ChartUtils.ts +0 -802
  235. package/src/util/Constants.ts +0 -42
  236. package/src/util/CssPrefixUtils.ts +0 -20
  237. package/src/util/DOMUtils.ts +0 -129
  238. package/src/util/DataUtils.ts +0 -216
  239. package/src/util/Events.ts +0 -16
  240. package/src/util/FunnelUtils.tsx +0 -15
  241. package/src/util/Global.ts +0 -12
  242. package/src/util/IfOverflow.ts +0 -15
  243. package/src/util/LRUCache.ts +0 -41
  244. package/src/util/LogUtils.ts +0 -22
  245. package/src/util/PolarUtils.ts +0 -132
  246. package/src/util/RadialBarUtils.tsx +0 -24
  247. package/src/util/ReactUtils.ts +0 -95
  248. package/src/util/ReduceCSSCalc.ts +0 -187
  249. package/src/util/ScatterUtils.tsx +0 -52
  250. package/src/util/ShapeElementProps.tsx +0 -87
  251. package/src/util/TickUtils.ts +0 -60
  252. package/src/util/XAxisUtils.ts +0 -48
  253. package/src/util/YAxisUtils.ts +0 -48
  254. package/src/util/axisPropsAreEqual.ts +0 -48
  255. package/src/util/createCartesianCharts.tsx +0 -150
  256. package/src/util/createEventProxy.ts +0 -20
  257. package/src/util/createPolarCharts.tsx +0 -112
  258. package/src/util/cursor/getCursorPoints.ts +0 -46
  259. package/src/util/cursor/getCursorRectangle.ts +0 -28
  260. package/src/util/cursor/getRadialCursorPoints.ts +0 -32
  261. package/src/util/excludeEventProps.ts +0 -171
  262. package/src/util/getActiveCoordinate.ts +0 -213
  263. package/src/util/getAxisTypeBasedOnLayout.ts +0 -21
  264. package/src/util/getClassNameFromUnknown.ts +0 -6
  265. package/src/util/getEveryNth.ts +0 -27
  266. package/src/util/getRadiusAndStrokeWidthFromDot.ts +0 -35
  267. package/src/util/getRelativeCoordinate.ts +0 -80
  268. package/src/util/getSliced.ts +0 -13
  269. package/src/util/hoverDedupe.ts +0 -41
  270. package/src/util/isDomainSpecifiedByUser.ts +0 -219
  271. package/src/util/isWellBehavedNumber.ts +0 -7
  272. package/src/util/pathTotalLength.ts +0 -25
  273. package/src/util/payload/getUniqPayload.ts +0 -28
  274. package/src/util/propsAreEqual.ts +0 -121
  275. package/src/util/resolveDefaultProps.ts +0 -161
  276. package/src/util/round.ts +0 -32
  277. package/src/util/scale/CartesianScaleHelper.ts +0 -72
  278. package/src/util/scale/CustomScaleDefinition.ts +0 -81
  279. package/src/util/scale/RechartsScale.ts +0 -130
  280. package/src/util/scale/createCategoricalInverse.ts +0 -72
  281. package/src/util/scale/getNiceTickValues.ts +0 -311
  282. package/src/util/scale/index.ts +0 -2
  283. package/src/util/scale/util/arithmetic.ts +0 -54
  284. package/src/util/solid-1-compat.ts +0 -310
  285. package/src/util/solidJsxCamelAugment.d.ts +0 -84
  286. package/src/util/stacks/getStackSeriesIdentifier.ts +0 -21
  287. package/src/util/stacks/stackTypes.ts +0 -60
  288. package/src/util/structurallyEqual.ts +0 -31
  289. package/src/util/svgPropertiesAndEvents.ts +0 -53
  290. package/src/util/svgPropertiesNoEvents.ts +0 -571
  291. package/src/util/tooltip/translate.ts +0 -171
  292. package/src/util/typedDataKey.ts +0 -48
  293. package/src/util/types.ts +0 -1560
  294. package/src/util/useAnimationId.ts +0 -31
  295. package/src/util/useElementOffset.ts +0 -110
  296. package/src/util/useId.ts +0 -8
  297. package/src/util/usePrefersReducedMotion.ts +0 -48
  298. package/src/util/useReportScale.ts +0 -24
  299. package/src/util/useUniqueId.ts +0 -30
  300. package/src/zIndex/DefaultZIndexes.ts +0 -84
  301. package/src/zIndex/ZIndexLayer.tsx +0 -121
  302. package/src/zIndex/ZIndexPortal.tsx +0 -79
  303. package/src/zIndex/getZIndexFromUnknown.ts +0 -14
  304. package/src/zIndex/zIndexSelectors.ts +0 -48
@@ -1,361 +0,0 @@
1
- /* eslint-disable import/no-cycle */
2
- /**
3
- * @fileOverview Render a group of error bar
4
- */
5
- import { createMemo, For, Show } from 'solid-js';
6
- import type { CamelCaseSVGAttrs } from "../util/CamelCaseSVGAttrs"
7
- import type { WithoutRemoveFalse } from "../util/types"
8
- import type { JSX } from '@solidjs/web';
9
- import { Layer } from "../container/Layer"
10
- import type { AnimationTiming, DataKey, RectangleCoordinate } from "../util/types"
11
- import type { BarRectangleItem } from "./Bar"
12
- import type { LinePointItem } from "./Line"
13
- import type { ScatterPointItem } from "./Scatter"
14
- import { ReportErrorBarSettings, useErrorBarContext } from "../context/ErrorBarContext"
15
- import { useXAxis, useYAxis } from "../hooks"
16
- import { resolveDefaultProps } from "../util/resolveDefaultProps"
17
- import { svgPropertiesNoEvents } from "../util/svgPropertiesNoEvents"
18
- import { useChartLayout } from "../context/chartLayoutContext"
19
- import { CSSTransitionAnimate, extractCssEasing } from "../animation/CSSTransitionAnimate"
20
- import type { ZIndexable } from "../zIndex/ZIndexLayer"
21
- import { ZIndexLayer } from "../zIndex/ZIndexLayer"
22
- import { DefaultZIndexes } from "../zIndex/DefaultZIndexes"
23
-
24
- import { splitProps } from '../util/solid-1-compat';
25
- export interface ErrorBarDataItem {
26
- x: number | undefined
27
- y: number | undefined
28
- value: number
29
- errorVal?: number[] | number
30
- }
31
-
32
- /**
33
- * So usually the direction is decided by the chart layout.
34
- * Horizontal layout means error bars are vertical means direction=y
35
- * Vertical layout means error bars are horizontal means direction=x
36
- *
37
- * Except! In Scatter chart, error bars can go both ways.
38
- *
39
- * So this property is only ever used in Scatter chart, and ignored elsewhere.
40
- */
41
- export type ErrorBarDirection = "x" | "y"
42
-
43
- export type ErrorBarDataPointFormatter<
44
- T extends BarRectangleItem | LinePointItem | ScatterPointItem,
45
- > = (
46
- entry: T,
47
- dataKey: DataKey<T, number[] | number>,
48
- direction: ErrorBarDirection,
49
- ) => ErrorBarDataItem
50
-
51
- /**
52
- * External ErrorBar props, visible for users of the library
53
- */
54
- interface ErrorBarProps<DataPointType = unknown, DataValueType = unknown> extends ZIndexable {
55
- /**
56
- * Decides how to extract the value of this ErrorBar from the data:
57
- * - `string`: the name of the field in the data object;
58
- * - `number`: the index of the field in the data;
59
- * - `function`: a function that receives the data object and returns the value of this ErrorBar.
60
- *
61
- * The error values can be a single value for symmetric error bars;
62
- * or an array of a lower and upper error value for asymmetric error bars.
63
- */
64
- dataKey: DataKey<DataPointType, DataValueType>
65
- /**
66
- * Width of the error bar ends (the serifs) in pixels.
67
- * This is not the total width of the error bar, but just the width of the little lines at the ends.
68
- *
69
- * The total width of the error bar is determined by the data value plus/minus the error value.
70
- *
71
- * @defaultValue 5
72
- */
73
- width?: number
74
- /**
75
- * Direction of the error bar. Usually determined by chart layout, except in Scatter chart.
76
- * In Scatter chart, "x" means horizontal error bars, "y" means vertical error bars.
77
- */
78
- direction?: ErrorBarDirection
79
- /**
80
- * If set "auto", animation is disabled during SSR and when the user prefers reduced motion.
81
- * @defaultValue true
82
- */
83
- isAnimationActive?: boolean | "auto"
84
- /**
85
- * @defaultValue 0
86
- */
87
- animationBegin?: number
88
- /**
89
- * @defaultValue 400
90
- */
91
- animationDuration?: number
92
- /**
93
- * @defaultValue ease-in-out
94
- */
95
- animationEasing?: AnimationTiming
96
- /**
97
- * The width of the stroke
98
- */
99
- strokeWidth?: number | string
100
- /**
101
- * The stroke color. If "none", no line will be drawn.
102
- *
103
- * @defaultValue black
104
- */
105
- stroke?: string
106
- /**
107
- * @defaultValue 400
108
- */
109
- zIndex?: number
110
- }
111
-
112
- /* React's SVGProps carries the SVG `offset` attribute; Solid's line attributes do not. */
113
- type OffsetAttr = { offset?: number | string }
114
-
115
- export type Props = WithoutRemoveFalse<JSX.LineSVGAttributes<SVGLineElement>> &
116
- CamelCaseSVGAttrs &
117
- OffsetAttr &
118
- ErrorBarProps
119
-
120
- /**
121
- * Props after defaults, and required props have been applied.
122
- */
123
- type ErrorBarInternalProps = WithoutRemoveFalse<JSX.LineSVGAttributes<SVGLineElement>> & OffsetAttr & {
124
- dataKey: DataKey<unknown>
125
- /** the width of the error bar ends */
126
- width: number
127
- /**
128
- * Only used for ScatterChart with error bars in two directions.
129
- * Only accepts a value of "x" or "y" and makes the error bars lie in that direction.
130
- */
131
- direction: ErrorBarDirection
132
- isAnimationActive: boolean | "auto"
133
- animationBegin: number
134
- animationDuration: number
135
- animationEasing: AnimationTiming
136
- }
137
-
138
- function ErrorBarImpl(props: ErrorBarInternalProps) {
139
- const svgProps = () => {
140
- /* eslint-disable solid/reactivity -- reactive accessor called from JSX; multi-line destructure is inside tracked scope */
141
- const {
142
- direction: _direction,
143
- width: _width,
144
- dataKey: _dataKey,
145
- isAnimationActive: _isAnimationActive,
146
- animationBegin: _animationBegin,
147
- animationDuration: _animationDuration,
148
- animationEasing: _animationEasing,
149
- ...others
150
- } = props
151
- /* eslint-enable solid/reactivity */
152
- const { ref: _ref, ...noRef } = svgPropertiesNoEvents(others)
153
- return noRef
154
- }
155
-
156
- /* ctx is now an Accessor (GOTCHA-005-A). Each `ctx()` re-reads through the
157
- reactive Provider value so data/formatter/offset stay live as parent
158
- computes rectangles/points. */
159
- const ctx = useErrorBarContext()
160
- const xAxis = createMemo(() => useXAxis(ctx().xAxisId))
161
- const yAxis = createMemo(() => useYAxis(ctx().yAxisId))
162
-
163
- return (
164
- <Show when={xAxis()?.scale != null && yAxis()?.scale != null && ctx().data != null}>
165
- <Show when={props.direction !== "x" || xAxis()?.type === "number"}>
166
- <Layer class="recharts-errorBars">
167
- <For each={ctx().data as ReadonlyArray<unknown>}>
168
- {(entry: unknown, _dataIndex) => {
169
- const formatted = () =>
170
- ctx().dataPointFormatter(
171
- entry as BarRectangleItem | LinePointItem | ScatterPointItem,
172
- props.dataKey as DataKey<
173
- BarRectangleItem | LinePointItem | ScatterPointItem,
174
- number[] | number
175
- >,
176
- props.direction,
177
- )
178
- const errorVal = () => formatted().errorVal
179
- const x = () => formatted().x
180
- const y = () => formatted().y
181
- const value = () => formatted().value
182
-
183
- const lineCoordinates = (): Array<RectangleCoordinate> => {
184
- if (errorVal() == null || x() == null || y() == null) {
185
- return []
186
- }
187
-
188
- const ev = errorVal()
189
- let lowBound: number
190
- let highBound: number
191
-
192
- if (Array.isArray(ev)) {
193
- const [low, high] = ev
194
- if (low == null || high == null) {
195
- return []
196
- }
197
- lowBound = low
198
- highBound = high
199
- } else {
200
- lowBound = ev as number
201
- highBound = ev as number
202
- }
203
-
204
- const coords: Array<RectangleCoordinate> = []
205
- const offset = ctx().errorBarOffset
206
-
207
- if (props.direction === "x") {
208
- const scale = xAxis()?.scale
209
- const yMid = (y() as number) + offset
210
- const yMin = yMid + props.width
211
- const yMax = yMid - props.width
212
- const xMin = scale?.map(value() - lowBound)
213
- const xMax = scale?.map(value() + highBound)
214
-
215
- if (xMin != null && xMax != null) {
216
- coords.push({ x1: xMax, x2: xMax, y1: yMin, y2: yMax })
217
- coords.push({ x1: xMin, x2: xMax, y1: yMid, y2: yMid })
218
- coords.push({ x1: xMin, x2: xMin, y1: yMin, y2: yMax })
219
- }
220
- } else if (props.direction === "y") {
221
- const scale = yAxis()?.scale
222
- const xMid = (x() as number) + offset
223
- const xMin = xMid - props.width
224
- const xMax = xMid + props.width
225
- const yMin = scale?.map(value() - lowBound)
226
- const yMax = scale?.map(value() + highBound)
227
-
228
- if (yMin != null && yMax != null) {
229
- coords.push({ x1: xMin, x2: xMax, y1: yMax, y2: yMax })
230
- coords.push({ x1: xMid, x2: xMid, y1: yMin, y2: yMax })
231
- coords.push({ x1: xMin, x2: xMax, y1: yMin, y2: yMin })
232
- }
233
- }
234
-
235
- return coords
236
- }
237
-
238
- const scaleDirection = () => (props.direction === "x" ? "scaleX" : "scaleY")
239
- const transformOrigin = () =>
240
- `${(x() as number) + ctx().errorBarOffset}px ${(y() as number) + ctx().errorBarOffset}px`
241
-
242
- return (
243
- <Show when={lineCoordinates().length > 0}>
244
- <Layer class="recharts-errorBar" {...svgProps()}>
245
- <For each={lineCoordinates()}>
246
- {(c, _lineIndex) => {
247
- const lineStyle = () =>
248
- props.isAnimationActive
249
- ? { "transform-origin": transformOrigin() }
250
- : undefined
251
- return (
252
- <CSSTransitionAnimate
253
- animationId={`error-bar-${props.direction}_${c.x1}-${c.x2}-${c.y1}-${c.y2}`}
254
- from={`${scaleDirection()}(0)`}
255
- to={`${scaleDirection()}(1)`}
256
- attributeName="transform"
257
- begin={props.animationBegin}
258
- easing={extractCssEasing(props.animationEasing)}
259
- isActive={props.isAnimationActive}
260
- duration={props.animationDuration}
261
- >
262
- {(style) => (
263
- <line
264
- {...c}
265
- style={{ ...lineStyle(), ...style() }}
266
- />
267
- )}
268
- </CSSTransitionAnimate>
269
- )
270
- }}
271
- </For>
272
- </Layer>
273
- </Show>
274
- )
275
- }}
276
- </For>
277
- </Layer>
278
- </Show>
279
- </Show>
280
- )
281
- }
282
-
283
- function useErrorBarDirection(
284
- directionFromProps: ErrorBarDirection | undefined,
285
- ): ErrorBarDirection {
286
- const layout = useChartLayout()
287
- if (directionFromProps != null) {
288
- return directionFromProps
289
- }
290
- if (layout != null) {
291
- return layout === "horizontal" ? "y" : "x"
292
- }
293
- return "x"
294
- }
295
-
296
- /* Upstream key order: defaults spread into the layer, so the order sets DOM attribute order. */
297
- /* eslint-disable sort-keys */
298
- export const errorBarDefaultProps = {
299
- stroke: "black",
300
- strokeWidth: 1.5,
301
- width: 5,
302
- offset: 0,
303
- isAnimationActive: true,
304
- animationBegin: 0,
305
- animationDuration: 400,
306
- animationEasing: "ease-in-out",
307
- zIndex: DefaultZIndexes.line,
308
- } as const satisfies Partial<Props>
309
- /* eslint-enable sort-keys */
310
-
311
- /**
312
- * ErrorBar renders whiskers to represent error margins on a chart.
313
- *
314
- * It must be a child of a graphical element.
315
- *
316
- * ErrorBar expects data in one of the following forms:
317
- * - Symmetric error bars: a single error value representing both lower and upper bounds.
318
- * - Asymmetric error bars: an array of two values representing lower and upper bounds separately. First value is the lower bound, second value is the upper bound.
319
- *
320
- * The values provided are relative to the main data value.
321
- * For example, if the main data value is 10 and the error value is 2,
322
- * the error bar will extend from 8 to 12 for symmetric error bars.
323
- *
324
- * In other words, what ErrorBar will render is:
325
- * - For symmetric error bars: [value - errorVal, value + errorVal]
326
- * - For asymmetric error bars: [value - errorVal[0], value + errorVal[1]]
327
- *
328
- * In stacked or ranged Bar charts, ErrorBar will use the higher data value
329
- * as the reference point for calculating the error bar positions.
330
- *
331
- * @consumes ErrorBarContext
332
- */
333
- export function ErrorBar(outsideProps: Props) {
334
- const realDirection = createMemo(() => useErrorBarDirection(outsideProps.direction))
335
- /* GOTCHA-013: split children before resolveDefaultProps. resolveDefaultProps
336
- does `{...realProps}` which enumerates own keys of the Solid props proxy —
337
- children are not part of ErrorBar's public API, but extra spread keys are
338
- still resolved through proxy getters at setup. Strip first to keep the
339
- resolved props plain and stable. */
340
- const [, restProps] = splitProps(outsideProps, ["children"])
341
- const props = resolveDefaultProps(restProps, errorBarDefaultProps)
342
-
343
- return (
344
- <>
345
- <ReportErrorBarSettings dataKey={props.dataKey} direction={realDirection()} />
346
- <ZIndexLayer zIndex={props.zIndex}>
347
- <ErrorBarImpl
348
- {...props}
349
- direction={realDirection()}
350
- width={props.width}
351
- isAnimationActive={props.isAnimationActive}
352
- animationBegin={props.animationBegin}
353
- animationDuration={props.animationDuration}
354
- animationEasing={props.animationEasing}
355
- />
356
- </ZIndexLayer>
357
- </>
358
- )
359
- }
360
-
361
- ErrorBar.displayName = "ErrorBar"