@solidports/recharts 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 (306) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +19 -0
  3. package/README.md +102 -0
  4. package/dist/dev.js +28564 -0
  5. package/dist/index.d.ts +7859 -0
  6. package/dist/index.js +28546 -0
  7. package/package.json +98 -0
  8. package/src/animation/AnimatedItems.tsx +183 -0
  9. package/src/animation/AnimationController.ts +33 -0
  10. package/src/animation/AnimationControllerImpl.ts +36 -0
  11. package/src/animation/AnimationHandle.ts +307 -0
  12. package/src/animation/CSSTransitionAnimate.tsx +170 -0
  13. package/src/animation/JavascriptAnimate.tsx +119 -0
  14. package/src/animation/easing.ts +221 -0
  15. package/src/animation/matchBy.ts +164 -0
  16. package/src/animation/timeoutController.ts +70 -0
  17. package/src/animation/useAnimationController.tsx +34 -0
  18. package/src/animation/useAnimationStartSnapshot.ts +118 -0
  19. package/src/animation/util.ts +41 -0
  20. package/src/cartesian/Area.tsx +915 -0
  21. package/src/cartesian/AreaRevealShape.tsx +190 -0
  22. package/src/cartesian/Bar.tsx +1369 -0
  23. package/src/cartesian/BarStack.tsx +152 -0
  24. package/src/cartesian/Brush.tsx +951 -0
  25. package/src/cartesian/CartesianAxis.tsx +722 -0
  26. package/src/cartesian/CartesianGrid.tsx +711 -0
  27. package/src/cartesian/ErrorBar.tsx +361 -0
  28. package/src/cartesian/Funnel.tsx +803 -0
  29. package/src/cartesian/GraphicalItemClipPath.tsx +67 -0
  30. package/src/cartesian/Line.tsx +863 -0
  31. package/src/cartesian/LineDrawShape.tsx +89 -0
  32. package/src/cartesian/ReferenceArea.tsx +331 -0
  33. package/src/cartesian/ReferenceDot.tsx +304 -0
  34. package/src/cartesian/ReferenceLine.tsx +474 -0
  35. package/src/cartesian/Scatter.tsx +888 -0
  36. package/src/cartesian/XAxis.tsx +433 -0
  37. package/src/cartesian/YAxis.tsx +443 -0
  38. package/src/cartesian/ZAxis.tsx +155 -0
  39. package/src/cartesian/cartesianPositionToCSSTranslate.tsx +29 -0
  40. package/src/cartesian/cartesianViewBoxToTrapezoid.tsx +21 -0
  41. package/src/cartesian/getCartesianPosition.tsx +267 -0
  42. package/src/cartesian/getEquidistantTicks.ts +144 -0
  43. package/src/cartesian/getTicks.ts +225 -0
  44. package/src/cartesian/isOutsidePosition.ts +15 -0
  45. package/src/cartesian/useAnimatedLineLength.ts +54 -0
  46. package/src/chart/AreaChart.tsx +29 -0
  47. package/src/chart/BarChart.tsx +29 -0
  48. package/src/chart/CartesianChart.tsx +131 -0
  49. package/src/chart/CategoricalChart.tsx +94 -0
  50. package/src/chart/ComposedChart.tsx +29 -0
  51. package/src/chart/FunnelChart.tsx +29 -0
  52. package/src/chart/LineChart.tsx +29 -0
  53. package/src/chart/PieChart.tsx +50 -0
  54. package/src/chart/PolarChart.tsx +164 -0
  55. package/src/chart/RadarChart.tsx +70 -0
  56. package/src/chart/RadialBarChart.tsx +46 -0
  57. package/src/chart/RechartsWrapper.tsx +551 -0
  58. package/src/chart/Sankey.tsx +1534 -0
  59. package/src/chart/ScatterChart.tsx +29 -0
  60. package/src/chart/SunburstChart.tsx +504 -0
  61. package/src/chart/Treemap.tsx +1223 -0
  62. package/src/chart/createInitialRootProps.ts +24 -0
  63. package/src/chart/types.ts +53 -0
  64. package/src/component/ActivePoints.tsx +144 -0
  65. package/src/component/Cell.tsx +37 -0
  66. package/src/component/Cursor.tsx +185 -0
  67. package/src/component/Customized.tsx +50 -0
  68. package/src/component/DefaultLegendContent.tsx +348 -0
  69. package/src/component/DefaultTooltipContent.tsx +224 -0
  70. package/src/component/Dots.tsx +157 -0
  71. package/src/component/Label.tsx +636 -0
  72. package/src/component/LabelList.tsx +375 -0
  73. package/src/component/Legend.tsx +512 -0
  74. package/src/component/ResponsiveContainer.tsx +348 -0
  75. package/src/component/Text.tsx +541 -0
  76. package/src/component/Tooltip.tsx +470 -0
  77. package/src/component/TooltipBoundingBox.tsx +146 -0
  78. package/src/component/responsiveContainerUtils.ts +134 -0
  79. package/src/container/ClipPathProvider.tsx +51 -0
  80. package/src/container/Layer.tsx +38 -0
  81. package/src/container/RootSurface.tsx +120 -0
  82. package/src/container/Surface.tsx +61 -0
  83. package/src/context/CellsContext.tsx +54 -0
  84. package/src/context/ErrorBarContext.tsx +146 -0
  85. package/src/context/GraphicalItemChildrenScope.tsx +18 -0
  86. package/src/context/PanoramaContext.tsx +9 -0
  87. package/src/context/RegisterGraphicalItemId.tsx +30 -0
  88. package/src/context/accessibilityContext.tsx +6 -0
  89. package/src/context/brushUpdateContext.tsx +9 -0
  90. package/src/context/chartDataContext.tsx +97 -0
  91. package/src/context/chartLayoutContext.tsx +201 -0
  92. package/src/context/legendPayloadContext.tsx +20 -0
  93. package/src/context/legendPortalContext.tsx +12 -0
  94. package/src/context/tooltipContext.tsx +89 -0
  95. package/src/context/tooltipPortalContext.tsx +12 -0
  96. package/src/context/useTooltipAxis.ts +22 -0
  97. package/src/hooks.ts +476 -0
  98. package/src/index.ts +280 -0
  99. package/src/polar/Pie.tsx +1360 -0
  100. package/src/polar/PolarAngleAxis.tsx +616 -0
  101. package/src/polar/PolarGrid.tsx +312 -0
  102. package/src/polar/PolarRadiusAxis.tsx +547 -0
  103. package/src/polar/Radar.tsx +734 -0
  104. package/src/polar/RadialBar.tsx +917 -0
  105. package/src/polar/defaultPolarAngleAxisProps.tsx +27 -0
  106. package/src/polar/defaultPolarRadiusAxisProps.tsx +25 -0
  107. package/src/shape/Cross.tsx +89 -0
  108. package/src/shape/Curve.tsx +343 -0
  109. package/src/shape/Dot.tsx +70 -0
  110. package/src/shape/Polygon.tsx +195 -0
  111. package/src/shape/Rectangle.tsx +470 -0
  112. package/src/shape/Sector.tsx +347 -0
  113. package/src/shape/Symbols.tsx +139 -0
  114. package/src/shape/Trapezoid.tsx +280 -0
  115. package/src/state/RechartsStateContext.tsx +12 -0
  116. package/src/state/RechartsStateProvider.tsx +87 -0
  117. package/src/state/RechartsStoreContext.tsx +25 -0
  118. package/src/state/RechartsStoreProvider.tsx +35 -0
  119. package/src/state/ReportChartProps.tsx +40 -0
  120. package/src/state/ReportEventSettings.tsx +30 -0
  121. package/src/state/ReportMainChartProps.tsx +61 -0
  122. package/src/state/ReportPolarOptions.tsx +35 -0
  123. package/src/state/SetGraphicalItem.ts +79 -0
  124. package/src/state/SetLegendPayload.ts +134 -0
  125. package/src/state/SetTooltipEntrySettings.tsx +72 -0
  126. package/src/state/actions.ts +464 -0
  127. package/src/state/brushSlice.ts +13 -0
  128. package/src/state/cartesianAxisSlice.ts +141 -0
  129. package/src/state/chartDataSlice.ts +50 -0
  130. package/src/state/chartState.ts +297 -0
  131. package/src/state/errorBarSlice.ts +29 -0
  132. package/src/state/eventSettingsSlice.ts +8 -0
  133. package/src/state/events.ts +76 -0
  134. package/src/state/externalEventsMiddleware.ts +255 -0
  135. package/src/state/graphicalItemsSlice.ts +74 -0
  136. package/src/state/hooks/useChartSelectors.tsx +45 -0
  137. package/src/state/keyboardEventsMiddleware.ts +228 -0
  138. package/src/state/layoutSlice.ts +21 -0
  139. package/src/state/legendSlice.ts +57 -0
  140. package/src/state/mouseEventsMiddleware.ts +185 -0
  141. package/src/state/optionsSlice.ts +47 -0
  142. package/src/state/polarAxisSlice.ts +10 -0
  143. package/src/state/polarOptionsSlice.ts +12 -0
  144. package/src/state/rawData.ts +26 -0
  145. package/src/state/referenceElementsSlice.ts +40 -0
  146. package/src/state/renderedTicksSlice.ts +15 -0
  147. package/src/state/rootPropsSlice.ts +47 -0
  148. package/src/state/selectors/areaSelectors.ts +240 -0
  149. package/src/state/selectors/arrayEqualityCheck.ts +29 -0
  150. package/src/state/selectors/axisSelectors.ts +2157 -0
  151. package/src/state/selectors/barSelectors.ts +310 -0
  152. package/src/state/selectors/barStackSelectors.ts +77 -0
  153. package/src/state/selectors/brushSelectors.ts +33 -0
  154. package/src/state/selectors/chartSelector.ts +185 -0
  155. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  156. package/src/state/selectors/combiners/combineActiveTooltipIndex.ts +95 -0
  157. package/src/state/selectors/combiners/combineAllBarPositions.ts +122 -0
  158. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  159. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  160. package/src/state/selectors/combiners/combineBarSizeList.ts +80 -0
  161. package/src/state/selectors/combiners/combineCheckedDomain.ts +48 -0
  162. package/src/state/selectors/combiners/combineConfiguredScale.ts +111 -0
  163. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +45 -0
  164. package/src/state/selectors/combiners/combineDisplayedStackedData.ts +50 -0
  165. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  166. package/src/state/selectors/combiners/combineRealScaleType.ts +44 -0
  167. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  168. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  169. package/src/state/selectors/combiners/combineTooltipPayload.ts +205 -0
  170. package/src/state/selectors/combiners/combineTooltipPayloadConfigurations.ts +58 -0
  171. package/src/state/selectors/containerSelectors.ts +12 -0
  172. package/src/state/selectors/dataSelectors.ts +88 -0
  173. package/src/state/selectors/funnelSelectors.ts +75 -0
  174. package/src/state/selectors/graphicalItemSelectors.ts +30 -0
  175. package/src/state/selectors/legendSelectors.ts +29 -0
  176. package/src/state/selectors/lineSelectors.ts +134 -0
  177. package/src/state/selectors/numberDomainEqualityCheck.ts +14 -0
  178. package/src/state/selectors/pickAxisId.ts +5 -0
  179. package/src/state/selectors/pickAxisType.ts +3 -0
  180. package/src/state/selectors/pieSelectors.ts +97 -0
  181. package/src/state/selectors/polarAxisSelectors.ts +201 -0
  182. package/src/state/selectors/polarGridSelectors.ts +28 -0
  183. package/src/state/selectors/polarScaleSelectors.ts +133 -0
  184. package/src/state/selectors/polarSelectors.ts +219 -0
  185. package/src/state/selectors/radarSelectors.ts +191 -0
  186. package/src/state/selectors/radialBarSelectors.ts +435 -0
  187. package/src/state/selectors/rootPropsSelectors.ts +25 -0
  188. package/src/state/selectors/scatterSelectors.ts +96 -0
  189. package/src/state/selectors/selectActivePropsFromChartPointer.ts +26 -0
  190. package/src/state/selectors/selectAllAxes.ts +17 -0
  191. package/src/state/selectors/selectChartOffset.ts +16 -0
  192. package/src/state/selectors/selectChartOffsetInternal.ts +136 -0
  193. package/src/state/selectors/selectLegendArea.ts +20 -0
  194. package/src/state/selectors/selectPlotArea.ts +22 -0
  195. package/src/state/selectors/selectTooltipAxisId.ts +7 -0
  196. package/src/state/selectors/selectTooltipAxisType.ts +32 -0
  197. package/src/state/selectors/selectTooltipEventType.ts +48 -0
  198. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  199. package/src/state/selectors/selectTooltipSettings.ts +39 -0
  200. package/src/state/selectors/selectTooltipState.ts +8 -0
  201. package/src/state/selectors/selectors.ts +271 -0
  202. package/src/state/selectors/tooltipSelectors.ts +578 -0
  203. package/src/state/selectors/touchSelectors.ts +31 -0
  204. package/src/state/store.ts +29 -0
  205. package/src/state/storeIdentity.ts +9 -0
  206. package/src/state/teardownWrite.ts +10 -0
  207. package/src/state/tooltipInteraction.ts +23 -0
  208. package/src/state/tooltipSlice.ts +334 -0
  209. package/src/state/touchEventsMiddleware.ts +214 -0
  210. package/src/state/types/AnimationSettings.ts +20 -0
  211. package/src/state/types/AreaSettings.ts +14 -0
  212. package/src/state/types/BarSettings.ts +15 -0
  213. package/src/state/types/LineSettings.ts +9 -0
  214. package/src/state/types/PieSettings.ts +34 -0
  215. package/src/state/types/RadarSettings.ts +5 -0
  216. package/src/state/types/RadialBarSettings.ts +10 -0
  217. package/src/state/types/ScatterSettings.ts +12 -0
  218. package/src/state/types/StackedGraphicalItem.ts +34 -0
  219. package/src/state/useChartState.ts +17 -0
  220. package/src/state/zIndexSlice.ts +39 -0
  221. package/src/synchronisation/syncSelectors.ts +7 -0
  222. package/src/synchronisation/types.ts +44 -0
  223. package/src/synchronisation/useChartSynchronisation.tsx +404 -0
  224. package/src/theme/RechartsTheme.ts +16 -0
  225. package/src/theme/RechartsThemeContext.ts +19 -0
  226. package/src/theme/darkTheme.ts +13 -0
  227. package/src/theme/graphicalItemIdentity.ts +70 -0
  228. package/src/theme/legacyTheme.ts +17 -0
  229. package/src/theme/lightTheme.ts +13 -0
  230. package/src/types.ts +54 -0
  231. package/src/util/ActiveShapeUtils.tsx +162 -0
  232. package/src/util/BarUtils.tsx +62 -0
  233. package/src/util/BarePortal.tsx +50 -0
  234. package/src/util/CamelCaseSVGAttrs.ts +34 -0
  235. package/src/util/CartesianUtils.ts +48 -0
  236. package/src/util/ChartUtils.ts +802 -0
  237. package/src/util/Constants.ts +42 -0
  238. package/src/util/CssPrefixUtils.ts +20 -0
  239. package/src/util/DOMUtils.ts +129 -0
  240. package/src/util/DataUtils.ts +216 -0
  241. package/src/util/Events.ts +16 -0
  242. package/src/util/FunnelUtils.tsx +15 -0
  243. package/src/util/Global.ts +12 -0
  244. package/src/util/IfOverflow.ts +15 -0
  245. package/src/util/LRUCache.ts +41 -0
  246. package/src/util/LogUtils.ts +22 -0
  247. package/src/util/PolarUtils.ts +132 -0
  248. package/src/util/RadialBarUtils.tsx +24 -0
  249. package/src/util/ReactUtils.ts +95 -0
  250. package/src/util/ReduceCSSCalc.ts +187 -0
  251. package/src/util/ScatterUtils.tsx +52 -0
  252. package/src/util/ShapeElementProps.tsx +87 -0
  253. package/src/util/TickUtils.ts +60 -0
  254. package/src/util/XAxisUtils.ts +48 -0
  255. package/src/util/YAxisUtils.ts +48 -0
  256. package/src/util/axisPropsAreEqual.ts +48 -0
  257. package/src/util/createCartesianCharts.tsx +150 -0
  258. package/src/util/createEventProxy.ts +20 -0
  259. package/src/util/createPolarCharts.tsx +112 -0
  260. package/src/util/cursor/getCursorPoints.ts +46 -0
  261. package/src/util/cursor/getCursorRectangle.ts +28 -0
  262. package/src/util/cursor/getRadialCursorPoints.ts +32 -0
  263. package/src/util/excludeEventProps.ts +171 -0
  264. package/src/util/getActiveCoordinate.ts +213 -0
  265. package/src/util/getAxisTypeBasedOnLayout.ts +21 -0
  266. package/src/util/getClassNameFromUnknown.ts +6 -0
  267. package/src/util/getEveryNth.ts +27 -0
  268. package/src/util/getRadiusAndStrokeWidthFromDot.ts +35 -0
  269. package/src/util/getRelativeCoordinate.ts +80 -0
  270. package/src/util/getSliced.ts +13 -0
  271. package/src/util/hoverDedupe.ts +41 -0
  272. package/src/util/isDomainSpecifiedByUser.ts +219 -0
  273. package/src/util/isWellBehavedNumber.ts +7 -0
  274. package/src/util/pathTotalLength.ts +25 -0
  275. package/src/util/payload/getUniqPayload.ts +28 -0
  276. package/src/util/propsAreEqual.ts +121 -0
  277. package/src/util/resolveDefaultProps.ts +161 -0
  278. package/src/util/round.ts +32 -0
  279. package/src/util/scale/CartesianScaleHelper.ts +72 -0
  280. package/src/util/scale/CustomScaleDefinition.ts +81 -0
  281. package/src/util/scale/RechartsScale.ts +130 -0
  282. package/src/util/scale/createCategoricalInverse.ts +72 -0
  283. package/src/util/scale/getNiceTickValues.ts +311 -0
  284. package/src/util/scale/index.ts +2 -0
  285. package/src/util/scale/util/arithmetic.ts +54 -0
  286. package/src/util/solid-1-compat.ts +310 -0
  287. package/src/util/solidJsxCamelAugment.d.ts +84 -0
  288. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  289. package/src/util/stacks/stackTypes.ts +60 -0
  290. package/src/util/structurallyEqual.ts +31 -0
  291. package/src/util/svgPropertiesAndEvents.ts +53 -0
  292. package/src/util/svgPropertiesNoEvents.ts +571 -0
  293. package/src/util/tooltip/translate.ts +171 -0
  294. package/src/util/typedDataKey.ts +48 -0
  295. package/src/util/types.ts +1560 -0
  296. package/src/util/useAnimationId.ts +31 -0
  297. package/src/util/useElementOffset.ts +110 -0
  298. package/src/util/useId.ts +8 -0
  299. package/src/util/usePrefersReducedMotion.ts +48 -0
  300. package/src/util/useReportScale.ts +24 -0
  301. package/src/util/useUniqueId.ts +30 -0
  302. package/src/zIndex/DefaultZIndexes.ts +84 -0
  303. package/src/zIndex/ZIndexLayer.tsx +121 -0
  304. package/src/zIndex/ZIndexPortal.tsx +79 -0
  305. package/src/zIndex/getZIndexFromUnknown.ts +14 -0
  306. package/src/zIndex/zIndexSelectors.ts +48 -0
@@ -0,0 +1,219 @@
1
+ /* eslint-disable import/no-cycle */
2
+ import type { AppliedChartData, ChartData } from "../chartDataSlice"
3
+ import { selectChartDataSliceIgnoringIndexes } from "./dataSelectors"
4
+ import type { ChartState } from "../store"
5
+ import type { AxisId, BaseCartesianAxis } from "../cartesianAxisSlice"
6
+ import { selectChartDataAndAlwaysIgnoreIndexes } from "./dataSelectors"
7
+ import {
8
+ type AppliedChartDataWithErrorDomain,
9
+ combineAppliedValues,
10
+ combineAxisDomain,
11
+ combineAxisDomainWithNiceTicks,
12
+ combineDisplayedData,
13
+ combineDomainOfAllAppliedNumericalValuesIncludingErrorValues,
14
+ combineGraphicalItemsData,
15
+ combineGraphicalItemsSettings,
16
+ combineNiceTicks,
17
+ combineNumericalDomain,
18
+ itemAxisPredicate,
19
+ selectAllErrorBarSettings,
20
+ selectBaseAxis,
21
+ selectDomainDefinition,
22
+ selectDomainFromUserPreference,
23
+ selectRealScaleType,
24
+ selectRenderableAxisSettings,
25
+ } from "./axisSelectors"
26
+ import type { PolarGraphicalItemSettings } from "../graphicalItemsSlice"
27
+ import { readChartState } from "../chartState"
28
+ import type { CategoricalDomain, NumberDomain } from "../../util/types"
29
+ import { selectChartLayout } from "../../context/chartLayoutContext"
30
+ import { getValueByDataKey } from "../../util/ChartUtils"
31
+ import { selectStackOffsetType } from "./rootPropsSelectors"
32
+ import { combineCheckedDomain } from "./combiners/combineCheckedDomain"
33
+
34
+ export type PolarAxisType = "angleAxis" | "radiusAxis"
35
+
36
+ export const selectUnfilteredPolarItems = (
37
+ state: ChartState,
38
+ ): ReadonlyArray<PolarGraphicalItemSettings> => {
39
+ const graphicalItems = readChartState(state).graphicalItems
40
+ const result: PolarGraphicalItemSettings[] = []
41
+ for (const id in graphicalItems) {
42
+ const item = graphicalItems[id]
43
+ if (
44
+ item != null &&
45
+ typeof item === "object" &&
46
+ (item.type === "pie" || item.type === "radar" || item.type === "radialBar")
47
+ ) {
48
+ const settings = item.settings
49
+ if (settings !== null && typeof settings === "object") {
50
+ result.push(settings)
51
+ }
52
+ }
53
+ }
54
+ return result
55
+ }
56
+
57
+ export function selectPolarItemsSettings(
58
+ state: ChartState,
59
+ axisType: PolarAxisType,
60
+ polarAxisId: AxisId,
61
+ ): ReadonlyArray<PolarGraphicalItemSettings> {
62
+ const graphicalItems = selectUnfilteredPolarItems(state)
63
+ const axisSettings = selectBaseAxis(state, axisType, polarAxisId)
64
+ const axisPredicate = itemAxisPredicate(axisType, polarAxisId)
65
+ return combineGraphicalItemsSettings(graphicalItems, axisSettings, axisPredicate)
66
+ }
67
+
68
+ function selectPolarGraphicalItemsData(
69
+ state: ChartState,
70
+ axisType: PolarAxisType,
71
+ polarAxisId: AxisId,
72
+ ): ChartData {
73
+ return combineGraphicalItemsData(selectPolarItemsSettings(state, axisType, polarAxisId))
74
+ }
75
+
76
+ export function selectPolarDisplayedData(
77
+ state: ChartState,
78
+ axisType: PolarAxisType,
79
+ polarAxisId: AxisId,
80
+ ): ChartData {
81
+ return combineDisplayedData(
82
+ selectPolarGraphicalItemsData(state, axisType, polarAxisId),
83
+ selectChartDataAndAlwaysIgnoreIndexes(state),
84
+ )
85
+ }
86
+
87
+ export function selectPolarAppliedValues(
88
+ state: ChartState,
89
+ axisType: PolarAxisType,
90
+ axisId: AxisId,
91
+ ): AppliedChartData {
92
+ return combineAppliedValues(
93
+ selectPolarDisplayedData(state, axisType, axisId),
94
+ selectBaseAxis(state, axisType, axisId),
95
+ selectPolarItemsSettings(state, axisType, axisId),
96
+ )
97
+ }
98
+
99
+ export function selectAllPolarAppliedNumericalValues(
100
+ state: ChartState,
101
+ axisType: PolarAxisType,
102
+ axisId: AxisId,
103
+ ): ReadonlyArray<AppliedChartDataWithErrorDomain> {
104
+ const data = selectPolarDisplayedData(state, axisType, axisId)
105
+ const axisSettings: BaseCartesianAxis = selectBaseAxis(state, axisType, axisId)
106
+ const items = selectPolarItemsSettings(state, axisType, axisId)
107
+
108
+ if (items.length > 0) {
109
+ return data
110
+ .flatMap((entry) => {
111
+ return items.flatMap((item): AppliedChartDataWithErrorDomain | undefined => {
112
+ const valueByDataKey: unknown = getValueByDataKey(
113
+ entry,
114
+ axisSettings.dataKey ?? item.dataKey,
115
+ )
116
+ return {
117
+ errorDomain: [],
118
+ value: valueByDataKey,
119
+ }
120
+ })
121
+ })
122
+ .filter(Boolean) as ReadonlyArray<AppliedChartDataWithErrorDomain>
123
+ }
124
+ if (axisSettings?.dataKey != null) {
125
+ return data.map(
126
+ (item): AppliedChartDataWithErrorDomain => ({
127
+ errorDomain: [],
128
+ value: getValueByDataKey(item, axisSettings.dataKey),
129
+ }),
130
+ )
131
+ }
132
+ return data.map((entry): AppliedChartDataWithErrorDomain => ({ errorDomain: [], value: entry }))
133
+ }
134
+
135
+ const unsupportedInPolarChart = (): undefined => undefined
136
+
137
+ function selectDomainOfAllPolarAppliedNumericalValues(
138
+ state: ChartState,
139
+ axisType: PolarAxisType,
140
+ axisId: AxisId,
141
+ ): NumberDomain | undefined {
142
+ return combineDomainOfAllAppliedNumericalValuesIncludingErrorValues(
143
+ selectPolarDisplayedData(state, axisType, axisId),
144
+ selectBaseAxis(state, axisType, axisId),
145
+ selectPolarItemsSettings(state, axisType, axisId),
146
+ selectAllErrorBarSettings(state),
147
+ axisType,
148
+ selectChartDataSliceIgnoringIndexes(state),
149
+ )
150
+ }
151
+
152
+ function selectPolarNumericalDomain(
153
+ state: ChartState,
154
+ axisType: PolarAxisType,
155
+ axisId: AxisId,
156
+ ): NumberDomain | undefined {
157
+ return combineNumericalDomain(
158
+ selectBaseAxis(state, axisType, axisId),
159
+ selectDomainDefinition(state, axisType, axisId),
160
+ selectDomainFromUserPreference(state, axisType, axisId),
161
+ unsupportedInPolarChart(),
162
+ selectDomainOfAllPolarAppliedNumericalValues(state, axisType, axisId),
163
+ unsupportedInPolarChart(),
164
+ selectChartLayout(state),
165
+ axisType,
166
+ )
167
+ }
168
+
169
+ export function selectPolarAxisDomain(
170
+ state: ChartState,
171
+ axisType: PolarAxisType,
172
+ polarAxisId: AxisId,
173
+ ): NumberDomain | CategoricalDomain | undefined {
174
+ return combineAxisDomain(
175
+ selectBaseAxis(state, axisType, polarAxisId),
176
+ selectChartLayout(state),
177
+ selectPolarDisplayedData(state, axisType, polarAxisId),
178
+ selectPolarAppliedValues(state, axisType, polarAxisId),
179
+ selectStackOffsetType(state),
180
+ axisType,
181
+ selectPolarNumericalDomain(state, axisType, polarAxisId),
182
+ )
183
+ }
184
+
185
+ export function selectPolarNiceTicks(
186
+ state: ChartState,
187
+ axisType: PolarAxisType,
188
+ polarAxisId: AxisId,
189
+ ): ReadonlyArray<number> | undefined {
190
+ return combineNiceTicks(
191
+ selectPolarAxisDomain(state, axisType, polarAxisId),
192
+ selectRenderableAxisSettings(state, axisType, polarAxisId),
193
+ selectRealScaleType(state, axisType, polarAxisId),
194
+ )
195
+ }
196
+
197
+ export function selectPolarAxisDomainIncludingNiceTicks(
198
+ state: ChartState,
199
+ axisType: PolarAxisType,
200
+ polarAxisId: AxisId,
201
+ ): NumberDomain | CategoricalDomain | undefined {
202
+ return combineAxisDomainWithNiceTicks(
203
+ selectBaseAxis(state, axisType, polarAxisId),
204
+ selectPolarAxisDomain(state, axisType, polarAxisId),
205
+ selectPolarNiceTicks(state, axisType, polarAxisId),
206
+ axisType,
207
+ )
208
+ }
209
+
210
+ export function selectPolarAxisCheckedDomain(
211
+ state: ChartState,
212
+ axisType: PolarAxisType,
213
+ polarAxisId: AxisId,
214
+ ): NumberDomain | CategoricalDomain | undefined {
215
+ return combineCheckedDomain(
216
+ selectRealScaleType(state, axisType, polarAxisId),
217
+ selectPolarAxisDomainIncludingNiceTicks(state, axisType, polarAxisId),
218
+ )
219
+ }
@@ -0,0 +1,191 @@
1
+ /* eslint-disable import/no-cycle */
2
+ import type { ChartState } from "../store"
3
+ import type { AngleAxisForRadar, RadarComposedData, RadiusAxisForRadar } from "../../polar/Radar"
4
+ import { computeRadarPoints } from "../../polar/Radar"
5
+ import type { BaseAxisWithScale } from "./axisSelectors"
6
+ import { selectHasBar } from "./axisSelectors"
7
+ import { selectPolarAxisScale, selectPolarAxisTicks } from "./polarScaleSelectors"
8
+ import { selectAngleAxis, selectAngleAxisRangeWithReversed, selectPolarViewBox, selectRadiusAxis } from "./polarAxisSelectors"
9
+ import type { AxisId } from "../cartesianAxisSlice"
10
+ import { selectChartDataAndAlwaysIgnoreIndexes } from "./dataSelectors"
11
+ import type { ChartDataState } from "../chartDataSlice"
12
+ import type { CategoricalDomain, DataKey, LayoutType, PolarViewBoxRequired, TickItem } from "../../util/types"
13
+ import { selectChartLayout } from "../../context/chartLayoutContext"
14
+ import { getBandSizeOfAxis, isCategoricalAxis } from "../../util/ChartUtils"
15
+ import type { AngleAxisSettings } from "../polarAxisSlice"
16
+ import { selectUnfilteredPolarItems, selectPolarAxisCheckedDomain } from "./polarSelectors"
17
+ import type { GraphicalItemId } from "../graphicalItemsSlice"
18
+ import { type RechartsScale, rechartsScaleFactory } from "../../util/scale/RechartsScale"
19
+ import { combineConfiguredScale } from "./combiners/combineConfiguredScale"
20
+ import { combineRealScaleType } from "./combiners/combineRealScaleType"
21
+ import { chartSelector } from "./chartSelector"
22
+ import { selectChartName } from "./rootPropsSelectors"
23
+
24
+ const selectRadiusAxisScale = chartSelector((
25
+ state: ChartState,
26
+ radiusAxisId: AxisId,
27
+ ): RechartsScale | undefined => selectPolarAxisScale(state, "radiusAxis", radiusAxisId))
28
+
29
+ const selectRadiusAxisForRadar = chartSelector(function selectRadiusAxisForRadar(state: ChartState, radiusAxisId: AxisId): RadiusAxisForRadar | undefined {
30
+ const scale = selectRadiusAxisScale(state, radiusAxisId)
31
+ if (scale == null) {
32
+ return undefined
33
+ }
34
+ return { scale }
35
+ })
36
+
37
+ export const selectRadiusAxisForBandSize = chartSelector(function selectRadiusAxisForBandSize(state: ChartState, radiusAxisId: AxisId): BaseAxisWithScale | undefined {
38
+ const axisSettings = selectRadiusAxis(state, radiusAxisId)
39
+ const scale = selectRadiusAxisScale(state, radiusAxisId)
40
+ if (axisSettings == null || scale == null) {
41
+ return undefined
42
+ }
43
+ return {
44
+ ...axisSettings,
45
+ scale,
46
+ }
47
+ })
48
+
49
+ const selectRadiusAxisTicks = chartSelector((
50
+ state: ChartState,
51
+ radiusAxisId: AxisId,
52
+ _angleAxisId: AxisId,
53
+ isPanorama: boolean,
54
+ ): ReadonlyArray<TickItem> | undefined => {
55
+ return selectPolarAxisTicks(state, "radiusAxis", radiusAxisId, isPanorama)
56
+ })
57
+
58
+ const selectAngleAxisForRadar = (
59
+ state: ChartState,
60
+ _radiusAxisId: AxisId,
61
+ angleAxisId: AxisId,
62
+ ): AngleAxisSettings => selectAngleAxis(state, angleAxisId)
63
+
64
+ const selectPolarAxisScaleForRadar = chartSelector((
65
+ state: ChartState,
66
+ _radiusAxisId: AxisId,
67
+ angleAxisId: AxisId,
68
+ ): RechartsScale | undefined => selectPolarAxisScale(state, "angleAxis", angleAxisId))
69
+
70
+ export const selectAngleAxisForBandSize = chartSelector(function selectAngleAxisForBandSize(state: ChartState, _radiusAxisId: AxisId, angleAxisId: AxisId): BaseAxisWithScale | undefined {
71
+ const axisSettings = selectAngleAxisForRadar(state, _radiusAxisId, angleAxisId)
72
+ const scale = selectPolarAxisScaleForRadar(state, _radiusAxisId, angleAxisId)
73
+ if (axisSettings == null || scale == null) {
74
+ return undefined
75
+ }
76
+ return {
77
+ ...axisSettings,
78
+ scale,
79
+ }
80
+ })
81
+
82
+ const selectAngleAxisTicks = chartSelector((
83
+ state: ChartState,
84
+ _radiusAxisId: AxisId,
85
+ angleAxisId: AxisId,
86
+ isPanorama: boolean,
87
+ ): ReadonlyArray<TickItem> | undefined => {
88
+ return selectPolarAxisTicks(state, "angleAxis", angleAxisId, isPanorama)
89
+ })
90
+
91
+ export const selectAngleAxisWithScaleAndViewport = chartSelector(function selectAngleAxisWithScaleAndViewport(state: ChartState, _radiusAxisId: AxisId, angleAxisId: AxisId): AngleAxisForRadar | undefined {
92
+ const axisOptions = selectAngleAxisForRadar(state, _radiusAxisId, angleAxisId)
93
+ const scale = selectPolarAxisScaleForRadar(state, _radiusAxisId, angleAxisId)
94
+ const polarViewBox: PolarViewBoxRequired | undefined = selectPolarViewBox(state)
95
+
96
+ if (polarViewBox == null || scale == null) {
97
+ return undefined
98
+ }
99
+ return {
100
+ cx: polarViewBox.cx,
101
+ cy: polarViewBox.cy,
102
+ dataKey: axisOptions.dataKey,
103
+ scale,
104
+ type: axisOptions.type,
105
+ }
106
+ })
107
+
108
+ const selectAngleAxisWithScaleAndViewportWithOverride = chartSelector(function selectAngleAxisWithScaleAndViewportWithOverride(state: ChartState, _radiusAxisId: AxisId, angleAxisId: AxisId, override: AngleAxisSettings): AngleAxisForRadar | undefined {
109
+ const polarViewBox: PolarViewBoxRequired | undefined = selectPolarViewBox(state)
110
+ if (polarViewBox == null) {
111
+ return undefined
112
+ }
113
+ const axisRange = selectAngleAxisRangeWithReversed(state, angleAxisId)
114
+ if (axisRange == null) {
115
+ return undefined
116
+ }
117
+ /* When override has an explicit domain use it directly so mutations that set a
118
+ numerical domain on a categorical axis actually change the scale — bypassing
119
+ the data-derived categorical domain that would otherwise override it. */
120
+ const axisDomain = override.domain != null
121
+ ? (override.domain as unknown as CategoricalDomain)
122
+ : selectPolarAxisCheckedDomain(state, "angleAxis", angleAxisId)
123
+ if (axisDomain == null) {
124
+ return undefined
125
+ }
126
+ const realScaleType = combineRealScaleType(override, selectHasBar(state), selectChartName(state))
127
+ const scale: RechartsScale | undefined = rechartsScaleFactory(
128
+ combineConfiguredScale(override, realScaleType, axisDomain, axisRange),
129
+ )
130
+ if (scale == null) {
131
+ return undefined
132
+ }
133
+ return {
134
+ cx: polarViewBox.cx,
135
+ cy: polarViewBox.cy,
136
+ dataKey: override.dataKey,
137
+ scale,
138
+ type: override.type,
139
+ }
140
+ })
141
+
142
+ const selectBandSizeOfAxis = chartSelector(function selectBandSizeOfAxis(state: ChartState, radiusAxisId: AxisId, angleAxisId: AxisId, isPanorama: boolean): number | undefined {
143
+ const layout: LayoutType = selectChartLayout(state)
144
+ const radiusAxis = selectRadiusAxisForBandSize(state, radiusAxisId)
145
+ const radiusAxisTicks = selectRadiusAxisTicks(state, radiusAxisId, angleAxisId, isPanorama)
146
+ const angleAxis = selectAngleAxisForBandSize(state, radiusAxisId, angleAxisId)
147
+ const angleAxisTicks = selectAngleAxisTicks(state, radiusAxisId, angleAxisId, isPanorama)
148
+
149
+ if (isCategoricalAxis(layout, "radiusAxis")) {
150
+ return getBandSizeOfAxis(radiusAxis, radiusAxisTicks, false)
151
+ }
152
+ return getBandSizeOfAxis(angleAxis, angleAxisTicks, false)
153
+ })
154
+
155
+ const selectSynchronisedRadarDataKey = chartSelector(function selectSynchronisedRadarDataKey(state: ChartState, radarId: GraphicalItemId): DataKey<unknown> | undefined {
156
+ const graphicalItems = selectUnfilteredPolarItems(state)
157
+ if (graphicalItems == null) {
158
+ return undefined
159
+ }
160
+ const pgis = graphicalItems.find((item) => item.type === "radar" && radarId === item.id)
161
+ return pgis?.dataKey
162
+ })
163
+
164
+ export const selectRadarPoints = chartSelector(function selectRadarPoints(state: ChartState, radiusAxisId: AxisId, angleAxisId: AxisId, isPanorama: boolean, radarId: GraphicalItemId, angleAxisOverride?: AngleAxisSettings): RadarComposedData | undefined {
165
+ const radiusAxis = selectRadiusAxisForRadar(state, radiusAxisId)
166
+ const angleAxis = angleAxisOverride != null
167
+ ? selectAngleAxisWithScaleAndViewportWithOverride(state, radiusAxisId, angleAxisId, angleAxisOverride)
168
+ : selectAngleAxisWithScaleAndViewport(state, radiusAxisId, angleAxisId)
169
+ const { chartData, dataStartIndex, dataEndIndex }: ChartDataState =
170
+ selectChartDataAndAlwaysIgnoreIndexes(state)
171
+ const dataKey = selectSynchronisedRadarDataKey(state, radarId)
172
+ const bandSize = selectBandSizeOfAxis(state, radiusAxisId, angleAxisId, isPanorama)
173
+
174
+ if (
175
+ radiusAxis == null ||
176
+ angleAxis == null ||
177
+ chartData == null ||
178
+ bandSize == null ||
179
+ dataKey == null
180
+ ) {
181
+ return undefined
182
+ }
183
+ const displayedData = chartData.slice(dataStartIndex, dataEndIndex + 1)
184
+ return computeRadarPoints({
185
+ angleAxis,
186
+ bandSize,
187
+ dataKey,
188
+ displayedData,
189
+ radiusAxis,
190
+ })
191
+ })