@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,310 +0,0 @@
1
- import {
2
- createStore as createStore2,
3
- omit,
4
- untrack,
5
- type Accessor,
6
- type Store,
7
- type StoreSetter,
8
- } from "solid-js"
9
- import { storePath } from "@solidjs/signals"
10
-
11
- type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
12
- k: infer I,
13
- ) => void
14
- ? I
15
- : never
16
-
17
- type MergePropsResult<T extends unknown[]> = UnionToIntersection<
18
- Exclude<T[number], null | undefined>
19
- >
20
-
21
- /**
22
- * Solid 2 compiles `ref={props.ref}` to `props.ref = el` when the value is not a
23
- * function. Getter-only merge/split views throw; keep a local override bag.
24
- */
25
- function defineWritableProp(
26
- target: object,
27
- key: PropertyKey,
28
- getValue: () => unknown,
29
- overrides: Record<PropertyKey, unknown>,
30
- ) {
31
- Object.defineProperty(target, key, {
32
- enumerable: true,
33
- configurable: true,
34
- get() {
35
- return Object.prototype.hasOwnProperty.call(overrides, key)
36
- ? overrides[key]
37
- : getValue()
38
- },
39
- set(value: unknown) {
40
- overrides[key] = value
41
- },
42
- })
43
- }
44
-
45
- /**
46
- * Call a Solid 2 ref without assigning onto getter-only merge/split props.
47
- */
48
- export function bindRef<T>(ref: unknown, el: T): void {
49
- if (typeof ref === "function") {
50
- ;(ref as (node: T) => void)(el)
51
- return
52
- }
53
- if (Array.isArray(ref)) {
54
- for (const item of ref) bindRef(item, el)
55
- }
56
- }
57
-
58
- /**
59
- * Solid 1.x mergeProps: later sources win, `undefined` is skipped.
60
- * Solid 2 `merge` treats `undefined` as a real override.
61
- */
62
- export function mergeProps<T extends (object | null | undefined)[]>(
63
- ...sources: T
64
- ): MergePropsResult<T> {
65
- const keys = new Set<string>()
66
- untrack(() => {
67
- for (const source of sources) {
68
- if (!source) continue
69
- /* Reflect.ownKeys: Object.keys on a props/merge proxy pays a descriptor trap per
70
- key, and this runs per element for every shape. Props views expose only
71
- enumerable string keys, so the key set is the same. */
72
- for (const key of Reflect.ownKeys(source)) {
73
- if (typeof key === "string") keys.add(key)
74
- }
75
- }
76
- })
77
- const overrides: Record<PropertyKey, unknown> = {}
78
- const target: Record<string, unknown> = {}
79
- for (const key of keys) {
80
- defineWritableProp(
81
- target,
82
- key,
83
- () => {
84
- for (let i = sources.length - 1; i >= 0; i--) {
85
- const source = sources[i]
86
- if (!source) continue
87
- const value = (source as Record<string, unknown>)[key]
88
- if (value !== undefined) return value
89
- }
90
- },
91
- overrides,
92
- )
93
- }
94
- return target as MergePropsResult<T>
95
- }
96
-
97
- function pickProps<T extends object>(props: T, keys: readonly (keyof T)[]) {
98
- const picked: Partial<T> = {}
99
- const overrides: Record<PropertyKey, unknown> = {}
100
- for (const key of keys) {
101
- defineWritableProp(picked, key, () => props[key], overrides)
102
- }
103
- return picked as Pick<T, (typeof keys)[number]>
104
- }
105
-
106
- export type SplitProps<T, K extends (readonly (keyof T)[])[]> = [
107
- ...{
108
- [P in keyof K]: P extends `${number}`
109
- ? Pick<T, Extract<K[P], readonly (keyof T)[]>[number]>
110
- : never
111
- },
112
- Omit<T, K[number][number]>,
113
- ]
114
-
115
- /**
116
- * Solid 1.x splitProps: returns `[...pickedGroups, rest]`.
117
- */
118
- export function splitProps<T extends object, const K extends (readonly (keyof T)[])[]>(
119
- props: T,
120
- ...groups: K
121
- ): SplitProps<T, K> {
122
- return untrack(() => {
123
- const claimed = new Set<PropertyKey>()
124
- const result: unknown[] = []
125
- for (const group of groups) {
126
- const owned = group.filter((key) => {
127
- if (claimed.has(key)) return false
128
- claimed.add(key)
129
- return true
130
- })
131
- result.push(pickProps(props, owned))
132
- }
133
- result.push(omit(props, ...(claimed as unknown as (keyof T)[])))
134
- return result as SplitProps<T, K>
135
- })
136
- }
137
-
138
- type AccessorValue<A> = A extends () => infer V ? V : A
139
- type OnDepsValue<D> = D extends readonly unknown[]
140
- ? { [K in keyof D]: AccessorValue<D[K]> }
141
- : AccessorValue<D>
142
-
143
- type EffectApply<T> = (value: T, prev?: T) => void | (() => void)
144
-
145
- /**
146
- * Solid 1.x `on()` as a 2.0 `createEffect(...on(deps, fn))` spread.
147
- */
148
- export function on<const D extends Accessor<unknown> | readonly Accessor<unknown>[]>(
149
- deps: D,
150
- fn: EffectApply<OnDepsValue<D>>,
151
- options: { defer?: boolean },
152
- ): [() => OnDepsValue<D>, EffectApply<OnDepsValue<D>>, { defer?: boolean }]
153
- export function on<const D extends Accessor<unknown> | readonly Accessor<unknown>[]>(
154
- deps: D,
155
- fn: EffectApply<OnDepsValue<D>>,
156
- ): [() => OnDepsValue<D>, EffectApply<OnDepsValue<D>>]
157
- export function on(
158
- deps: Accessor<unknown> | readonly Accessor<unknown>[],
159
- fn: EffectApply<any>,
160
- options?: { defer?: boolean },
161
- ): [() => any, EffectApply<any>, { defer?: boolean }?] {
162
- const compute = () => {
163
- if (Array.isArray(deps)) {
164
- return (deps as readonly Accessor<unknown>[]).map(dep =>
165
- typeof dep === "function" ? dep() : dep,
166
- )
167
- }
168
- return (deps as Accessor<unknown>)()
169
- }
170
- return options ? [compute, fn, options] : [compute, fn]
171
- }
172
-
173
- /** Solid 1.x createSelector. Fine-grained key isolation is not preserved. */
174
- export function createSelector<T, U>(
175
- source: Accessor<T>,
176
- fn: (a: T, b: U) => boolean = (a, b) => a === (b as unknown as T),
177
- ): (key: U) => boolean {
178
- return (key: U) => fn(source(), key)
179
- }
180
-
181
- type PathValue<T> = T | Partial<T> | ((prev: T) => T | Partial<T> | void)
182
- type At<T, K> = K extends keyof NonNullable<T> ? NonNullable<T>[K] : never
183
-
184
- /** 1.x path-style store setter. Solid 2 `StoreSetter` is draft-only. */
185
- export interface SetStoreFunction<T> {
186
- (setter: (draft: T) => void): void
187
- <K1 extends keyof T>(k1: K1, value: PathValue<T[K1]>): void
188
- <K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>>(
189
- k1: K1,
190
- k2: K2,
191
- value: PathValue<At<T[K1], K2>>,
192
- ): void
193
- <K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<At<T[K1], K2>>>(
194
- k1: K1,
195
- k2: K2,
196
- k3: K3,
197
- value: PathValue<At<At<T[K1], K2>, K3>>,
198
- ): void
199
- <
200
- K1 extends keyof T,
201
- K2 extends keyof NonNullable<T[K1]>,
202
- K3 extends keyof NonNullable<At<T[K1], K2>>,
203
- K4 extends keyof NonNullable<At<At<T[K1], K2>, K3>>,
204
- >(
205
- k1: K1,
206
- k2: K2,
207
- k3: K3,
208
- k4: K4,
209
- value: PathValue<At<At<At<T[K1], K2>, K3>, K4>>,
210
- ): void
211
- <
212
- K1 extends keyof T,
213
- K2 extends keyof NonNullable<T[K1]>,
214
- K3 extends keyof NonNullable<At<T[K1], K2>>,
215
- K4 extends keyof NonNullable<At<At<T[K1], K2>, K3>>,
216
- K5 extends keyof NonNullable<At<At<At<T[K1], K2>, K3>, K4>>,
217
- >(
218
- k1: K1,
219
- k2: K2,
220
- k3: K3,
221
- k4: K4,
222
- k5: K5,
223
- value: PathValue<At<At<At<At<T[K1], K2>, K3>, K4>, K5>>,
224
- ): void
225
- <
226
- K1 extends keyof T,
227
- K2 extends keyof NonNullable<T[K1]>,
228
- K3 extends keyof NonNullable<At<T[K1], K2>>,
229
- K4 extends keyof NonNullable<At<At<T[K1], K2>, K3>>,
230
- K5 extends keyof NonNullable<At<At<At<T[K1], K2>, K3>, K4>>,
231
- K6 extends keyof NonNullable<At<At<At<At<T[K1], K2>, K3>, K4>, K5>>,
232
- >(
233
- k1: K1,
234
- k2: K2,
235
- k3: K3,
236
- k4: K4,
237
- k5: K5,
238
- k6: K6,
239
- value: PathValue<At<At<At<At<At<T[K1], K2>, K3>, K4>, K5>, K6>>,
240
- ): void
241
- }
242
-
243
- function pathHasFilter(args: unknown[]): boolean {
244
- return args.some(
245
- arg =>
246
- typeof arg === "function" ||
247
- (arg !== null &&
248
- typeof arg === "object" &&
249
- !Array.isArray(arg) &&
250
- ("from" in (arg as object) ||
251
- "to" in (arg as object) ||
252
- "by" in (arg as object))),
253
- )
254
- }
255
-
256
- function applyPath(set: StoreSetter<any>, args: any[]) {
257
- if (args.length === 0) return
258
- if (args.length === 1) {
259
- const arg = args[0]
260
- if (typeof arg === "function") {
261
- set(arg)
262
- return
263
- }
264
- if (arg && typeof arg === "object" && !Array.isArray(arg)) {
265
- set((draft: any) => {
266
- Object.assign(draft, arg)
267
- })
268
- return
269
- }
270
- set(storePath(arg as never) as never)
271
- return
272
- }
273
-
274
- const last = args[args.length - 1]
275
- const path = args.slice(0, -1)
276
-
277
- if (typeof last === "function" && !pathHasFilter(path)) {
278
- set((draft: any) => {
279
- let parent = draft
280
- for (let i = 0; i < path.length; i++) {
281
- const key = path[i]
282
- if (i === path.length - 1) {
283
- const current = parent[key]
284
- const result = last(current)
285
- if (result !== undefined) parent[key] = result
286
- return
287
- }
288
- parent = parent[key]
289
- }
290
- })
291
- return
292
- }
293
-
294
- set((storePath as any)(...args))
295
- }
296
-
297
- /**
298
- * Solid 1.x `createStore` with path setters (`set("a", "b", value)`).
299
- * Native Solid 2 setters only accept a draft function.
300
- */
301
- export function createStore<T extends object>(
302
- initialValue: T,
303
- options?: { name?: string; shallow?: boolean },
304
- ): [Store<T>, SetStoreFunction<T>] {
305
- const [store, set] = createStore2(initialValue as any, options)
306
- const setCompat = ((...args: any[]) => {
307
- applyPath(set as unknown as StoreSetter<any>, args)
308
- }) as SetStoreFunction<T>
309
- return [store, setCompat]
310
- }
@@ -1,84 +0,0 @@
1
- /*
2
- * 1:1 React parity — upstream recharts API uses camelCase SVG attrs
3
- * (`fillOpacity`, `strokeWidth`, ...). Solid's `JSX.SvgSVGAttributes` and
4
- * the per-element interfaces (`PathSVGAttributes`, `LineSVGAttributes`,
5
- * `GSVGAttributes`, etc.) only declare kebab-case. Module-augment the
6
- * shared base interfaces so every SVG element shape accepts both forms
7
- * at the type level. Runtime rekeys camel → kebab via `SVG_CAMEL_TO_KEBAB`
8
- * in `svgPropertiesNoEvents.ts`.
9
- *
10
- * Augmenting `ShapeElementSVGAttributes` covers Path/Line/Rect/Circle/Ellipse/Polygon/Polyline.
11
- * Augmenting `TextContentElementSVGAttributes` covers `<text>`/`<tspan>`.
12
- * Augmenting `StylableSVGAttributes` covers `class` → `className`.
13
- * Augmenting `ContainerElementSVGAttributes` covers `<g>` (and any container).
14
- */
15
-
16
- import type { JSX as SolidJSX } from '@solidjs/web';
17
- declare module "solid-js" {
18
- namespace JSX {
19
- interface StylableSVGAttributes {
20
- className?: string
21
- }
22
-
23
- interface ShapeElementSVGAttributes<T> {
24
- fillOpacity?: number | string
25
- fillRule?: "nonzero" | "evenodd" | "inherit"
26
- strokeDasharray?: string
27
- strokeDashoffset?: number | string
28
- strokeLinecap?: "butt" | "round" | "square" | "inherit"
29
- strokeLinejoin?: "miter" | "round" | "bevel" | "inherit"
30
- strokeMiterlimit?: number | string
31
- strokeOpacity?: number | string
32
- strokeWidth?: number | string
33
- }
34
-
35
- interface TextContentElementSVGAttributes<T> {
36
- dominantBaseline?: string
37
- fillOpacity?: number | string
38
- fillRule?: "nonzero" | "evenodd" | "inherit"
39
- fontFamily?: string
40
- fontSize?: number | string
41
- fontStyle?: string
42
- fontWeight?: number | string
43
- letterSpacing?: number | string
44
- strokeDasharray?: string
45
- strokeDashoffset?: number | string
46
- strokeLinecap?: "butt" | "round" | "square" | "inherit"
47
- strokeLinejoin?: "miter" | "round" | "bevel" | "inherit"
48
- strokeMiterlimit?: number | string
49
- strokeOpacity?: number | string
50
- strokeWidth?: number | string
51
- textAnchor?: "start" | "middle" | "end" | "inherit"
52
- textDecoration?: string
53
- wordSpacing?: number | string
54
- writingMode?: string
55
- }
56
-
57
- interface ContainerElementSVGAttributes<T> {
58
- clipPath?: string
59
- pointerEvents?: string
60
- }
61
-
62
- /* `<svg>` element — inherits via SvgSVGAttributes; covers root chart Surface. */
63
- interface SvgSVGAttributes<T> {
64
- clipPath?: string
65
- fillOpacity?: number | string
66
- fillRule?: "nonzero" | "evenodd" | "inherit"
67
- pointerEvents?: string
68
- strokeDasharray?: string
69
- strokeDashoffset?: number | string
70
- strokeLinecap?: "butt" | "round" | "square" | "inherit"
71
- strokeLinejoin?: "miter" | "round" | "bevel" | "inherit"
72
- strokeMiterlimit?: number | string
73
- strokeOpacity?: number | string
74
- strokeWidth?: number | string
75
- }
76
- }
77
- }
78
-
79
- /*
80
- * Re-export to keep the file referenced when imported solely for side-effect
81
- * type augmentation; consumers do `import "@solidports/recharts"` and the
82
- * augmentation flows transitively through `src/index.ts`'s reference.
83
- */
84
- export type _SolidJSXCamelAugmentMarker = SolidJSX.Element
@@ -1,21 +0,0 @@
1
- /* eslint-disable import/no-cycle */
2
- import { StackSeriesIdentifier } from "./stackTypes"
3
- import { MaybeStackedGraphicalItem } from "../../state/types/StackedGraphicalItem"
4
-
5
- export function getStackSeriesIdentifier(
6
- graphicalItem: MaybeStackedGraphicalItem,
7
- ): StackSeriesIdentifier
8
- export function getStackSeriesIdentifier(graphicalItem: undefined): undefined
9
- export function getStackSeriesIdentifier(
10
- graphicalItem: MaybeStackedGraphicalItem | undefined,
11
- ): StackSeriesIdentifier | undefined
12
- /**
13
- * Returns identifier for stack series which is one individual graphical item in the stack.
14
- * @param graphicalItem - The graphical item representing the series in the stack.
15
- * @return The identifier for the series in the stack
16
- */
17
- export function getStackSeriesIdentifier(
18
- graphicalItem: MaybeStackedGraphicalItem | undefined,
19
- ): StackSeriesIdentifier | undefined {
20
- return graphicalItem?.id
21
- }
@@ -1,60 +0,0 @@
1
- import type { Series } from "victory-vendor/d3-shape"
2
- import type { StackId } from "../ChartUtils"
3
- import type { GraphicalItemId } from "../../state/graphicalItemsSlice"
4
- import type { MaybeStackedGraphicalItem } from "../../state/types/StackedGraphicalItem"
5
-
6
- /*
7
- * So chart stacks come in layers:
8
- *
9
- * - The top layer is the stack itself, which is a collection of series. The stack is identified by the `StackId` of the stack.
10
- * The StackId is defined by the `stackId` prop of the graphical items.
11
- * A typical stacked chart will have a single stack, but Recharts allows for multiple stacks.
12
- *
13
- * - One stack will have multiple series, which are the individual data series that make up the stack.
14
- * This is the second layer of the stack.
15
- * One series is represented by a single `GraphicalItem` in the stack.
16
- * This function returns the identifier for the series.
17
- *
18
- * - Finally the third layer is the data point itself, which is a tuple of two numbers.
19
- */
20
-
21
- /**
22
- * Collection of all stacks in the chart.
23
- * A simple stacked chart will have a single stack. Recharts allows for multiple stacks.
24
- * In a chart without stacks, this will be an empty object.
25
- */
26
- export type AllStackGroups = Record<StackId, StackGroup>
27
-
28
- /**
29
- * One stack group is a collection of series that are stacked together.
30
- * The stack series and graphical items are joined by the StackSeriesIdentifier.
31
- */
32
- export type StackGroup = {
33
- readonly graphicalItems: ReadonlyArray<MaybeStackedGraphicalItem>
34
- readonly stackedData: ReadonlyArray<StackSeries>
35
- }
36
-
37
- /**
38
- * Stack series is a collection of data points. This represents one individual graphical item in the stack.
39
- * There are presumably other series in the stack, which are represented by other `StackSeries` objects
40
- * that this object will not know about.
41
- * The coordinates of the data points in the series already include the baseline of the previous series in the stack.
42
- *
43
- * The Datum generic is `Record<string, unknown>` because d3 keeps a reference to the original input data
44
- * in each SeriesPoint.data property.
45
- */
46
- export type StackSeries = Series<Record<string, unknown>, StackSeriesIdentifier>
47
-
48
- /**
49
- * Stack data point is a tuple of two numbers:
50
- * first, where the previous stack series ended,
51
- * and second, where the current stack series ends.
52
- * This allows for setting the baseline of the next series in the stack.
53
- */
54
- export type StackDataPoint = [number, number]
55
-
56
- /**
57
- * Identifier for a series in the stack.
58
- * Used to join the stack series with the graphical items in the stack.
59
- */
60
- export type StackSeriesIdentifier = GraphicalItemId
@@ -1,31 +0,0 @@
1
- function isPlainContainer(value: unknown): value is Record<string, unknown> | unknown[] {
2
- if (Array.isArray(value)) return true
3
- if (value == null || typeof value !== "object") return false
4
- const proto = Object.getPrototypeOf(value)
5
- return proto === Object.prototype || proto === null
6
- }
7
-
8
- /* Structural equality over plain objects and arrays; anything else (functions, DOM nodes,
9
- class instances, Dates) compares by identity. Selectors rebuild nested objects such as
10
- `payload` / `tooltipPayload` on every recompute, where upstream's memoized selectors keep
11
- the references stable, so identity alone would restart animations needlessly. */
12
- export function structurallyEqual(a: unknown, b: unknown, depth: number = 0): boolean {
13
- if (Object.is(a, b)) return true
14
- if (depth > 6 || !isPlainContainer(a) || !isPlainContainer(b)) return false
15
- if (Array.isArray(a) !== Array.isArray(b)) return false
16
- if (Array.isArray(a) && Array.isArray(b)) {
17
- if (a.length !== b.length) return false
18
- for (let i = 0; i < a.length; i++) {
19
- if (!structurallyEqual(a[i], b[i], depth + 1)) return false
20
- }
21
- return true
22
- }
23
- const aRecord = a as Record<string, unknown>
24
- const bRecord = b as Record<string, unknown>
25
- const aKeys = Object.keys(aRecord)
26
- if (aKeys.length !== Object.keys(bRecord).length) return false
27
- for (const key of aKeys) {
28
- if (!structurallyEqual(aRecord[key], bRecord[key], depth + 1)) return false
29
- }
30
- return true
31
- }
@@ -1,53 +0,0 @@
1
- import { isEventKey } from "./excludeEventProps"
2
- import { ownStringKeys, svgPropCanonicalKey } from "./svgPropertiesNoEvents"
3
- import type { DataAttributeKeyType, SVGElementPropKeysType } from "./svgPropertiesNoEvents"
4
- import type { EventKeysType } from "./excludeEventProps"
5
-
6
- type SVGElementPropsAndEventsType = SVGElementPropKeysType | EventKeysType | DataAttributeKeyType
7
-
8
- export type SVGPropsAndEvents<T> = Pick<T, Extract<keyof T, SVGElementPropsAndEventsType>>
9
-
10
- /**
11
- * Filters an object to only include SVG properties, data attributes, and event handlers.
12
- * @param obj - The object to filter.
13
- * @returns A new object containing only valid SVG properties, data attributes, and event handlers.
14
- */
15
- export function svgPropertiesAndEvents<T extends object>(obj: T): SVGPropsAndEvents<T> {
16
- const result: Record<PropertyKey, unknown> = {}
17
- for (const key of ownStringKeys(obj)) {
18
- const canonical = svgPropCanonicalKey(key)
19
- if (canonical !== undefined) {
20
- result[canonical] = (obj as Record<string, unknown>)[key]
21
- } else if (isEventKey(key)) {
22
- /* Event handler keys (onClick etc.) keep their camelCase — Solid uses
23
- * delegation via the original prop name. */
24
- result[key] = (obj as Record<string, unknown>)[key]
25
- }
26
- }
27
- return result as SVGPropsAndEvents<T>
28
- }
29
-
30
- /**
31
- * Function to filter SVG properties from various input types.
32
- * The input types can be:
33
- * - A record of string keys to any values, in which case it returns a record of only SVG properties
34
- * - Anything else, in which case it returns null
35
- *
36
- * This function has a wide-open return type, because it will read and filter the props of an arbitrary element.
37
- *
38
- * If you wish to have a type-safe version, use svgPropertiesNoEvents directly with a typed object.
39
- *
40
- * @param input - The input to filter, which can be a record or other types.
41
- * @returns A record of SVG properties if the input is a record, otherwise null.
42
- */
43
- export function svgPropertiesAndEventsFromUnknown(input: unknown): Record<string, unknown> | null {
44
- if (input == null) {
45
- return null
46
- }
47
-
48
- if (typeof input === "object" && !Array.isArray(input)) {
49
- return svgPropertiesAndEvents(input as Record<PropertyKey, unknown>)
50
- }
51
-
52
- return null
53
- }