@kubit-ui-web/react-charts 1.0.0 → 1.2.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 (354) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/charts/barChart/barChart.js +12 -29
  3. package/dist/cjs/charts/barChart/barChart.type.d.ts +4 -0
  4. package/dist/cjs/charts/barChart/barChart.type.d.ts.map +1 -1
  5. package/dist/cjs/charts/barChart/barChart.type.js +1 -2
  6. package/dist/cjs/charts/barChart/barChartStructure.d.ts.map +1 -1
  7. package/dist/cjs/charts/barChart/barChartStructure.js +33 -30
  8. package/dist/cjs/charts/barChart/context/barChartContext.js +2 -5
  9. package/dist/cjs/charts/barChart/context/buildBarContextValues.d.ts +3 -1
  10. package/dist/cjs/charts/barChart/context/buildBarContextValues.d.ts.map +1 -1
  11. package/dist/cjs/charts/barChart/context/buildBarContextValues.js +191 -34
  12. package/dist/cjs/charts/barChart/fragments/barChartPath.d.ts +6 -0
  13. package/dist/cjs/charts/barChart/fragments/barChartPath.d.ts.map +1 -1
  14. package/dist/cjs/charts/barChart/fragments/barChartPath.js +48 -18
  15. package/dist/cjs/charts/barChart/fragments/barChartSeparator.d.ts.map +1 -1
  16. package/dist/cjs/charts/barChart/fragments/barChartSeparator.js +60 -14
  17. package/dist/cjs/charts/barChart/fragments/barChartXAxis.d.ts.map +1 -1
  18. package/dist/cjs/charts/barChart/fragments/barChartXAxis.js +11 -14
  19. package/dist/cjs/charts/barChart/fragments/barChartYAxis.d.ts.map +1 -1
  20. package/dist/cjs/charts/barChart/fragments/barChartYAxis.js +15 -18
  21. package/dist/cjs/charts/barChart/fragments/fixture/barContextData.d.ts.map +1 -1
  22. package/dist/cjs/charts/barChart/fragments/fixture/barContextData.js +4 -6
  23. package/dist/cjs/charts/barChart/fragments/fixture/index.js +1 -5
  24. package/dist/cjs/charts/barChart/index.js +1 -17
  25. package/dist/cjs/charts/barChart/utils/countBarChildren.js +5 -9
  26. package/dist/cjs/charts/barChart/utils/getAxisExtraSpacing.js +31 -35
  27. package/dist/cjs/charts/barChart/utils/getBarDataValue.d.ts.map +1 -1
  28. package/dist/cjs/charts/barChart/utils/getBarDataValue.js +6 -5
  29. package/dist/cjs/charts/barChart/utils/getRoundedBarMaxValue.js +1 -5
  30. package/dist/cjs/charts/constants/chartDefaults.d.ts +77 -0
  31. package/dist/cjs/charts/constants/chartDefaults.d.ts.map +1 -0
  32. package/dist/cjs/charts/constants/chartDefaults.js +76 -0
  33. package/dist/cjs/charts/index.js +3 -19
  34. package/dist/cjs/charts/lineChart/context/buildLineContextValue.d.ts +3 -1
  35. package/dist/cjs/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  36. package/dist/cjs/charts/lineChart/context/buildLineContextValue.js +175 -63
  37. package/dist/cjs/charts/lineChart/context/index.js +2 -7
  38. package/dist/cjs/charts/lineChart/context/lineChartContext.js +2 -5
  39. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.d.ts +1 -0
  40. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  41. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.js +2 -4
  42. package/dist/cjs/charts/lineChart/fragments/fixture/index.js +1 -5
  43. package/dist/cjs/charts/lineChart/fragments/index.js +4 -11
  44. package/dist/cjs/charts/lineChart/fragments/lineChartPath.d.ts.map +1 -1
  45. package/dist/cjs/charts/lineChart/fragments/lineChartPath.js +64 -35
  46. package/dist/cjs/charts/lineChart/fragments/lineChartProjection.d.ts +1 -1
  47. package/dist/cjs/charts/lineChart/fragments/lineChartProjection.d.ts.map +1 -1
  48. package/dist/cjs/charts/lineChart/fragments/lineChartProjection.js +50 -10
  49. package/dist/cjs/charts/lineChart/fragments/lineChartSeparator.d.ts.map +1 -1
  50. package/dist/cjs/charts/lineChart/fragments/lineChartSeparator.js +60 -14
  51. package/dist/cjs/charts/lineChart/fragments/lineChartXAxis.js +14 -18
  52. package/dist/cjs/charts/lineChart/fragments/lineChartYAxis.js +17 -21
  53. package/dist/cjs/charts/lineChart/hook/index.js +3 -9
  54. package/dist/cjs/charts/lineChart/hook/useAutoClick.js +6 -10
  55. package/dist/cjs/charts/lineChart/hook/useHover.js +5 -9
  56. package/dist/cjs/charts/lineChart/hook/useIndicator.js +5 -9
  57. package/dist/cjs/charts/lineChart/index.js +1 -17
  58. package/dist/cjs/charts/lineChart/lineChart.js +12 -29
  59. package/dist/cjs/charts/lineChart/lineChart.type.d.ts +2 -1
  60. package/dist/cjs/charts/lineChart/lineChart.type.d.ts.map +1 -1
  61. package/dist/cjs/charts/lineChart/lineChart.type.js +1 -2
  62. package/dist/cjs/charts/lineChart/lineChartStructure.d.ts.map +1 -1
  63. package/dist/cjs/charts/lineChart/lineChartStructure.js +46 -46
  64. package/dist/cjs/charts/lineChart/utils/accessibilityTemplateProcessor.js +6 -10
  65. package/dist/cjs/charts/lineChart/utils/findSurroundingNumber.js +2 -7
  66. package/dist/cjs/charts/lineChart/utils/getDataValues.js +1 -5
  67. package/dist/cjs/charts/lineChart/utils/getExtraSpacing.js +26 -30
  68. package/dist/cjs/charts/lineChart/utils/getPathData.js +1 -5
  69. package/dist/cjs/charts/lineChart/utils/getProjection.js +1 -5
  70. package/dist/cjs/charts/lineChart/utils/getRoundedMaxValue.js +2 -7
  71. package/dist/cjs/charts/lineChart/utils/handleNodesFocus.js +1 -5
  72. package/dist/cjs/charts/lineChart/utils/index.js +6 -17
  73. package/dist/cjs/charts/pieChart/context/buildPieContextValue.js +8 -12
  74. package/dist/cjs/charts/pieChart/context/index.js +2 -7
  75. package/dist/cjs/charts/pieChart/context/pieChartContext.js +2 -5
  76. package/dist/cjs/charts/pieChart/fragments/index.js +2 -7
  77. package/dist/cjs/charts/pieChart/fragments/pieChartForeign.js +7 -11
  78. package/dist/cjs/charts/pieChart/fragments/pieChartPath.js +12 -16
  79. package/dist/cjs/charts/pieChart/fragments/pieChartSegment.js +6 -10
  80. package/dist/cjs/charts/pieChart/index.js +1 -17
  81. package/dist/cjs/charts/pieChart/pieChart.js +8 -25
  82. package/dist/cjs/charts/pieChart/pieChart.type.js +1 -2
  83. package/dist/cjs/charts/pieChart/pieChartStructure.js +16 -20
  84. package/dist/cjs/charts/pieChart/utils/buildL.js +1 -5
  85. package/dist/cjs/charts/pieChart/utils/calculatePoint.js +1 -5
  86. package/dist/cjs/charts/pieChart/utils/calculateSegmentPath.js +10 -14
  87. package/dist/cjs/charts/pieChart/utils/drawSegmentPath.js +6 -10
  88. package/dist/cjs/charts/pieChart/utils/index.js +2 -7
  89. package/dist/cjs/charts/pieChart/utils/rotationDirection.js +3 -7
  90. package/dist/cjs/components/axisChart/index.js +2 -18
  91. package/dist/cjs/components/axisChart/utils/filterLineProps/filterLineProps.js +1 -5
  92. package/dist/cjs/components/axisChart/utils/index.js +1 -17
  93. package/dist/cjs/components/axisChart/xAxis/index.js +2 -18
  94. package/dist/cjs/components/axisChart/xAxis/xAxis.js +14 -18
  95. package/dist/cjs/components/axisChart/xAxis/xAxis.types.js +1 -2
  96. package/dist/cjs/components/axisChart/yAxis/index.js +2 -18
  97. package/dist/cjs/components/axisChart/yAxis/yAxis.js +13 -17
  98. package/dist/cjs/components/axisChart/yAxis/yAxis.types.js +1 -2
  99. package/dist/cjs/components/bar/bar.js +9 -13
  100. package/dist/cjs/components/bar/bar.type.js +1 -4
  101. package/dist/cjs/components/bar/fragments/barChartSegment.js +3 -7
  102. package/dist/cjs/components/bar/index.js +2 -18
  103. package/dist/cjs/components/bar/utils/buildD.js +5 -9
  104. package/dist/cjs/components/bar/utils/getSegments.js +3 -7
  105. package/dist/cjs/components/chartText/chartText.js +3 -7
  106. package/dist/cjs/components/chartText/chartText.types.js +1 -2
  107. package/dist/cjs/components/chartText/index.js +2 -18
  108. package/dist/cjs/components/foreignObject/foreignObject.js +3 -7
  109. package/dist/cjs/components/foreignObject/foreignObject.types.js +1 -2
  110. package/dist/cjs/components/foreignObject/index.js +2 -18
  111. package/dist/cjs/components/index.js +10 -26
  112. package/dist/cjs/components/line/index.js +2 -18
  113. package/dist/cjs/components/line/line.js +3 -7
  114. package/dist/cjs/components/line/line.types.js +1 -2
  115. package/dist/cjs/components/node/components/circle/circle.js +4 -7
  116. package/dist/cjs/components/node/components/hexagon/hexagon.js +6 -9
  117. package/dist/cjs/components/node/components/pentagon/pentagon.js +6 -9
  118. package/dist/cjs/components/node/components/square/square.js +4 -7
  119. package/dist/cjs/components/node/components/star/star.js +6 -9
  120. package/dist/cjs/components/node/components/straight/straight.js +4 -7
  121. package/dist/cjs/components/node/components/triangle/triangle.js +4 -7
  122. package/dist/cjs/components/node/index.js +2 -18
  123. package/dist/cjs/components/node/node.js +22 -25
  124. package/dist/cjs/components/node/node.types.js +1 -4
  125. package/dist/cjs/components/node/utils/calculateShapePoints/calculateShapePoints.js +1 -5
  126. package/dist/cjs/components/path/components/nodePath/nodePath.js +9 -12
  127. package/dist/cjs/components/path/index.js +2 -18
  128. package/dist/cjs/components/path/path.js +20 -23
  129. package/dist/cjs/components/path/path.types.js +1 -2
  130. package/dist/cjs/components/plot/components/circle/circle.js +4 -7
  131. package/dist/cjs/components/plot/components/index.js +3 -19
  132. package/dist/cjs/components/plot/components/square/square.js +4 -7
  133. package/dist/cjs/components/plot/components/triangle/triangle.js +4 -7
  134. package/dist/cjs/components/plot/index.js +2 -18
  135. package/dist/cjs/components/plot/plot.js +21 -24
  136. package/dist/cjs/components/plot/plot.types.js +8 -11
  137. package/dist/cjs/components/svgContainer/index.js +1 -17
  138. package/dist/cjs/components/svgContainer/svgContainer.js +5 -8
  139. package/dist/cjs/components/svgContainer/svgContainer.types.js +1 -2
  140. package/dist/cjs/components/svgContainer/utils/buildViewBox/buildViewBox.js +1 -5
  141. package/dist/cjs/components/svgContainer/utils/index.js +1 -17
  142. package/dist/cjs/components/tick/index.js +2 -18
  143. package/dist/cjs/components/tick/tick.js +4 -8
  144. package/dist/cjs/components/tick/tick.types.js +1 -4
  145. package/dist/cjs/components/zoomArea/components/HandlerIcon.js +3 -7
  146. package/dist/cjs/components/zoomArea/components/LineRenderer.js +3 -7
  147. package/dist/cjs/components/zoomArea/components/SelectionArea.js +9 -14
  148. package/dist/cjs/components/zoomArea/components/ZoomHandler.js +6 -10
  149. package/dist/cjs/components/zoomArea/components/index.js +4 -12
  150. package/dist/cjs/components/zoomArea/hooks/index.js +5 -13
  151. package/dist/cjs/components/zoomArea/hooks/useDragInteraction.js +19 -23
  152. package/dist/cjs/components/zoomArea/hooks/useKeyboardNavigation.js +18 -22
  153. package/dist/cjs/components/zoomArea/hooks/useResponsiveCanvas.js +12 -16
  154. package/dist/cjs/components/zoomArea/hooks/useZoomAreaFocus.js +6 -10
  155. package/dist/cjs/components/zoomArea/hooks/useZoomData.js +8 -12
  156. package/dist/cjs/components/zoomArea/index.js +5 -21
  157. package/dist/cjs/components/zoomArea/utils/accessibilityLabels.js +6 -11
  158. package/dist/cjs/components/zoomArea/utils/index.js +3 -14
  159. package/dist/cjs/components/zoomArea/utils/indexRounding.js +5 -11
  160. package/dist/cjs/components/zoomArea/utils/interactionConfig.js +1 -5
  161. package/dist/cjs/components/zoomArea/utils/pathGeneration.js +4 -9
  162. package/dist/cjs/components/zoomArea/utils/rangeAndPositions.js +5 -13
  163. package/dist/cjs/components/zoomArea/utils/selectionConfig.js +1 -5
  164. package/dist/cjs/components/zoomArea/zoomArea.js +35 -39
  165. package/dist/cjs/components/zoomArea/zoomArea.type.js +1 -4
  166. package/dist/cjs/hooks/index.js +2 -18
  167. package/dist/cjs/hooks/useFocus/useFocus.js +5 -9
  168. package/dist/cjs/hooks/useFocus/useFocus.types.js +1 -2
  169. package/dist/cjs/hooks/useHover/useHover.js +5 -9
  170. package/dist/cjs/hooks/useHover/useHover.types.js +1 -2
  171. package/dist/cjs/index.js +3 -19
  172. package/dist/cjs/types/canvas.type.js +1 -4
  173. package/dist/cjs/types/errors.type.d.ts +14 -1
  174. package/dist/cjs/types/errors.type.d.ts.map +1 -1
  175. package/dist/cjs/types/errors.type.js +19 -4
  176. package/dist/cjs/types/focusConfig.type.js +1 -4
  177. package/dist/cjs/types/index.js +4 -20
  178. package/dist/cjs/types/position.enum.js +1 -4
  179. package/dist/cjs/types/unit.enum.js +1 -4
  180. package/dist/cjs/types/valueFormatter.type.js +1 -2
  181. package/dist/cjs/utils/ajustedTextSpace/ajustedTextSpace.js +1 -5
  182. package/dist/cjs/utils/buildErrors/buildErrors.d.ts +63 -0
  183. package/dist/cjs/utils/buildErrors/buildErrors.d.ts.map +1 -1
  184. package/dist/cjs/utils/buildErrors/buildErrors.js +35 -7
  185. package/dist/cjs/utils/buildErrors/charts/buildBarChartErrors.d.ts +17 -0
  186. package/dist/cjs/utils/buildErrors/charts/buildBarChartErrors.d.ts.map +1 -0
  187. package/dist/cjs/utils/buildErrors/charts/buildBarChartErrors.js +16 -0
  188. package/dist/cjs/utils/buildErrors/charts/buildLineChartErrors.d.ts +13 -0
  189. package/dist/cjs/utils/buildErrors/charts/buildLineChartErrors.d.ts.map +1 -0
  190. package/dist/cjs/utils/buildErrors/charts/buildLineChartErrors.js +12 -0
  191. package/dist/cjs/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts +19 -0
  192. package/dist/cjs/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts.map +1 -0
  193. package/dist/cjs/utils/buildErrors/constants/errorMessages/barChartErrorMessages.js +23 -0
  194. package/dist/cjs/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts +25 -0
  195. package/dist/cjs/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts.map +1 -0
  196. package/dist/cjs/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.js +29 -0
  197. package/dist/cjs/utils/buildErrors/constants/errors/barChartErrors.d.ts +20 -0
  198. package/dist/cjs/utils/buildErrors/constants/errors/barChartErrors.d.ts.map +1 -0
  199. package/dist/cjs/utils/buildErrors/constants/errors/barChartErrors.js +28 -0
  200. package/dist/cjs/utils/buildErrors/constants/errors/lineChartErrors.d.ts +26 -0
  201. package/dist/cjs/utils/buildErrors/constants/errors/lineChartErrors.d.ts.map +1 -0
  202. package/dist/cjs/utils/buildErrors/constants/errors/lineChartErrors.js +34 -0
  203. package/dist/cjs/utils/buildErrors/index.d.ts +2 -0
  204. package/dist/cjs/utils/buildErrors/index.d.ts.map +1 -0
  205. package/dist/cjs/utils/buildErrors/index.js +2 -0
  206. package/dist/cjs/utils/buildTickValues/buildTickValues.js +2 -7
  207. package/dist/cjs/utils/calculateFocusOutline/calculateFocusOutline.js +8 -13
  208. package/dist/cjs/utils/classNames/classNames.js +1 -5
  209. package/dist/cjs/utils/createErrorAccumulator/createErrorAccumulator.d.ts +7 -0
  210. package/dist/cjs/utils/createErrorAccumulator/createErrorAccumulator.d.ts.map +1 -0
  211. package/dist/cjs/utils/createErrorAccumulator/createErrorAccumulator.js +54 -0
  212. package/dist/cjs/utils/createErrorAccumulator/index.d.ts +2 -0
  213. package/dist/cjs/utils/createErrorAccumulator/index.d.ts.map +1 -0
  214. package/dist/cjs/utils/createErrorAccumulator/index.js +1 -0
  215. package/dist/cjs/utils/cssGradientToSvg/cssGradientToSvg.js +4 -8
  216. package/dist/cjs/utils/cssGradientToSvg/cssGradientToSvg.types.js +1 -2
  217. package/dist/cjs/utils/cursorNear/isNear.js +1 -5
  218. package/dist/cjs/utils/getAxisData/getAxisData.js +1 -5
  219. package/dist/cjs/utils/getCanvasDimensions/getCanvasDimensions.js +8 -12
  220. package/dist/cjs/utils/getChildrenAttr/getChildrenAttr.js +4 -8
  221. package/dist/cjs/utils/getCoordinates/getCoordinates.js +9 -14
  222. package/dist/cjs/utils/getDataFingerprint/getDataFingerprint.js +1 -5
  223. package/dist/cjs/utils/getPoints/getPoints.js +1 -5
  224. package/dist/cjs/utils/getTickTextCoordinate/getTickTextCoordinates.js +5 -10
  225. package/dist/cjs/utils/getTicks/getTicks.js +2 -7
  226. package/dist/cjs/utils/index.js +8 -24
  227. package/dist/cjs/utils/parseStringToNumberPx.ts/parseStringToNumberPx.js +3 -7
  228. package/dist/cjs/utils/pickCustomAttributes/pickCustomAttributes.js +1 -5
  229. package/dist/cjs/utils/shadowSvg/shadowSvg.js +3 -7
  230. package/dist/cjs/utils/shadowSvg/shadowSvg.types.js +1 -2
  231. package/dist/cjs/utils/textBound/textBound.js +1 -5
  232. package/dist/esm/charts/barChart/barChart.type.d.ts +4 -0
  233. package/dist/esm/charts/barChart/barChart.type.d.ts.map +1 -1
  234. package/dist/esm/charts/barChart/barChartStructure.d.ts.map +1 -1
  235. package/dist/esm/charts/barChart/barChartStructure.js +9 -2
  236. package/dist/esm/charts/barChart/context/buildBarContextValues.d.ts +3 -1
  237. package/dist/esm/charts/barChart/context/buildBarContextValues.d.ts.map +1 -1
  238. package/dist/esm/charts/barChart/context/buildBarContextValues.js +177 -16
  239. package/dist/esm/charts/barChart/fragments/barChartPath.d.ts +6 -0
  240. package/dist/esm/charts/barChart/fragments/barChartPath.d.ts.map +1 -1
  241. package/dist/esm/charts/barChart/fragments/barChartPath.js +38 -4
  242. package/dist/esm/charts/barChart/fragments/barChartSeparator.d.ts.map +1 -1
  243. package/dist/esm/charts/barChart/fragments/barChartSeparator.js +52 -2
  244. package/dist/esm/charts/barChart/fragments/barChartXAxis.d.ts.map +1 -1
  245. package/dist/esm/charts/barChart/fragments/barChartXAxis.js +2 -1
  246. package/dist/esm/charts/barChart/fragments/barChartYAxis.d.ts.map +1 -1
  247. package/dist/esm/charts/barChart/fragments/barChartYAxis.js +2 -1
  248. package/dist/esm/charts/barChart/fragments/fixture/barContextData.d.ts.map +1 -1
  249. package/dist/esm/charts/barChart/fragments/fixture/barContextData.js +1 -0
  250. package/dist/esm/charts/barChart/utils/getBarDataValue.d.ts.map +1 -1
  251. package/dist/esm/charts/barChart/utils/getBarDataValue.js +5 -0
  252. package/dist/esm/charts/constants/chartDefaults.d.ts +77 -0
  253. package/dist/esm/charts/constants/chartDefaults.d.ts.map +1 -0
  254. package/dist/esm/charts/constants/chartDefaults.js +76 -0
  255. package/dist/esm/charts/lineChart/context/buildLineContextValue.d.ts +3 -1
  256. package/dist/esm/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  257. package/dist/esm/charts/lineChart/context/buildLineContextValue.js +162 -46
  258. package/dist/esm/charts/lineChart/fragments/fixture/contextData.d.ts +1 -0
  259. package/dist/esm/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  260. package/dist/esm/charts/lineChart/fragments/fixture/contextData.js +1 -0
  261. package/dist/esm/charts/lineChart/fragments/lineChartPath.d.ts.map +1 -1
  262. package/dist/esm/charts/lineChart/fragments/lineChartPath.js +34 -1
  263. package/dist/esm/charts/lineChart/fragments/lineChartProjection.d.ts +1 -1
  264. package/dist/esm/charts/lineChart/fragments/lineChartProjection.d.ts.map +1 -1
  265. package/dist/esm/charts/lineChart/fragments/lineChartProjection.js +44 -0
  266. package/dist/esm/charts/lineChart/fragments/lineChartSeparator.d.ts.map +1 -1
  267. package/dist/esm/charts/lineChart/fragments/lineChartSeparator.js +52 -2
  268. package/dist/esm/charts/lineChart/lineChart.type.d.ts +2 -1
  269. package/dist/esm/charts/lineChart/lineChart.type.d.ts.map +1 -1
  270. package/dist/esm/charts/lineChart/lineChartStructure.d.ts.map +1 -1
  271. package/dist/esm/charts/lineChart/lineChartStructure.js +15 -11
  272. package/dist/esm/types/errors.type.d.ts +14 -1
  273. package/dist/esm/types/errors.type.d.ts.map +1 -1
  274. package/dist/esm/types/errors.type.js +18 -0
  275. package/dist/esm/utils/buildErrors/buildErrors.d.ts +63 -0
  276. package/dist/esm/utils/buildErrors/buildErrors.d.ts.map +1 -1
  277. package/dist/esm/utils/buildErrors/buildErrors.js +32 -0
  278. package/dist/esm/utils/buildErrors/charts/buildBarChartErrors.d.ts +17 -0
  279. package/dist/esm/utils/buildErrors/charts/buildBarChartErrors.d.ts.map +1 -0
  280. package/dist/esm/utils/buildErrors/charts/buildBarChartErrors.js +16 -0
  281. package/dist/esm/utils/buildErrors/charts/buildLineChartErrors.d.ts +13 -0
  282. package/dist/esm/utils/buildErrors/charts/buildLineChartErrors.d.ts.map +1 -0
  283. package/dist/esm/utils/buildErrors/charts/buildLineChartErrors.js +12 -0
  284. package/dist/esm/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts +19 -0
  285. package/dist/esm/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts.map +1 -0
  286. package/dist/esm/utils/buildErrors/constants/errorMessages/barChartErrorMessages.js +23 -0
  287. package/dist/esm/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts +25 -0
  288. package/dist/esm/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts.map +1 -0
  289. package/dist/esm/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.js +29 -0
  290. package/dist/esm/utils/buildErrors/constants/errors/barChartErrors.d.ts +20 -0
  291. package/dist/esm/utils/buildErrors/constants/errors/barChartErrors.d.ts.map +1 -0
  292. package/dist/esm/utils/buildErrors/constants/errors/barChartErrors.js +28 -0
  293. package/dist/esm/utils/buildErrors/constants/errors/lineChartErrors.d.ts +26 -0
  294. package/dist/esm/utils/buildErrors/constants/errors/lineChartErrors.d.ts.map +1 -0
  295. package/dist/esm/utils/buildErrors/constants/errors/lineChartErrors.js +34 -0
  296. package/dist/esm/utils/buildErrors/index.d.ts +2 -0
  297. package/dist/esm/utils/buildErrors/index.d.ts.map +1 -0
  298. package/dist/esm/utils/buildErrors/index.js +2 -0
  299. package/dist/esm/utils/createErrorAccumulator/createErrorAccumulator.d.ts +7 -0
  300. package/dist/esm/utils/createErrorAccumulator/createErrorAccumulator.d.ts.map +1 -0
  301. package/dist/esm/utils/createErrorAccumulator/createErrorAccumulator.js +54 -0
  302. package/dist/esm/utils/createErrorAccumulator/index.d.ts +2 -0
  303. package/dist/esm/utils/createErrorAccumulator/index.d.ts.map +1 -0
  304. package/dist/esm/utils/createErrorAccumulator/index.js +1 -0
  305. package/dist/kubit-ui-web-react-charts.cjs.js +1 -10
  306. package/dist/kubit-ui-web-react-charts.es.js +1 -10
  307. package/dist/kubit-ui-web-react-charts.umd.js +1 -10
  308. package/dist/types/charts/barChart/barChart.type.d.ts +4 -0
  309. package/dist/types/charts/barChart/barChart.type.d.ts.map +1 -1
  310. package/dist/types/charts/barChart/barChartStructure.d.ts.map +1 -1
  311. package/dist/types/charts/barChart/context/buildBarContextValues.d.ts +3 -1
  312. package/dist/types/charts/barChart/context/buildBarContextValues.d.ts.map +1 -1
  313. package/dist/types/charts/barChart/fragments/barChartPath.d.ts +6 -0
  314. package/dist/types/charts/barChart/fragments/barChartPath.d.ts.map +1 -1
  315. package/dist/types/charts/barChart/fragments/barChartSeparator.d.ts.map +1 -1
  316. package/dist/types/charts/barChart/fragments/barChartXAxis.d.ts.map +1 -1
  317. package/dist/types/charts/barChart/fragments/barChartYAxis.d.ts.map +1 -1
  318. package/dist/types/charts/barChart/fragments/fixture/barContextData.d.ts.map +1 -1
  319. package/dist/types/charts/barChart/utils/getBarDataValue.d.ts.map +1 -1
  320. package/dist/types/charts/constants/chartDefaults.d.ts +77 -0
  321. package/dist/types/charts/constants/chartDefaults.d.ts.map +1 -0
  322. package/dist/types/charts/lineChart/context/buildLineContextValue.d.ts +3 -1
  323. package/dist/types/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  324. package/dist/types/charts/lineChart/fragments/fixture/contextData.d.ts +1 -0
  325. package/dist/types/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  326. package/dist/types/charts/lineChart/fragments/lineChartPath.d.ts.map +1 -1
  327. package/dist/types/charts/lineChart/fragments/lineChartProjection.d.ts.map +1 -1
  328. package/dist/types/charts/lineChart/fragments/lineChartSeparator.d.ts.map +1 -1
  329. package/dist/types/charts/lineChart/lineChart.type.d.ts +2 -1
  330. package/dist/types/charts/lineChart/lineChart.type.d.ts.map +1 -1
  331. package/dist/types/charts/lineChart/lineChartStructure.d.ts.map +1 -1
  332. package/dist/types/types/errors.type.d.ts +14 -1
  333. package/dist/types/types/errors.type.d.ts.map +1 -1
  334. package/dist/types/utils/buildErrors/buildErrors.d.ts +63 -0
  335. package/dist/types/utils/buildErrors/buildErrors.d.ts.map +1 -1
  336. package/dist/types/utils/buildErrors/charts/buildBarChartErrors.d.ts +17 -0
  337. package/dist/types/utils/buildErrors/charts/buildBarChartErrors.d.ts.map +1 -0
  338. package/dist/types/utils/buildErrors/charts/buildLineChartErrors.d.ts +13 -0
  339. package/dist/types/utils/buildErrors/charts/buildLineChartErrors.d.ts.map +1 -0
  340. package/dist/types/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts +19 -0
  341. package/dist/types/utils/buildErrors/constants/errorMessages/barChartErrorMessages.d.ts.map +1 -0
  342. package/dist/types/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts +25 -0
  343. package/dist/types/utils/buildErrors/constants/errorMessages/lineChartErrorMessages.d.ts.map +1 -0
  344. package/dist/types/utils/buildErrors/constants/errors/barChartErrors.d.ts +20 -0
  345. package/dist/types/utils/buildErrors/constants/errors/barChartErrors.d.ts.map +1 -0
  346. package/dist/types/utils/buildErrors/constants/errors/lineChartErrors.d.ts +26 -0
  347. package/dist/types/utils/buildErrors/constants/errors/lineChartErrors.d.ts.map +1 -0
  348. package/dist/types/utils/buildErrors/index.d.ts +2 -0
  349. package/dist/types/utils/buildErrors/index.d.ts.map +1 -0
  350. package/dist/types/utils/createErrorAccumulator/createErrorAccumulator.d.ts +7 -0
  351. package/dist/types/utils/createErrorAccumulator/createErrorAccumulator.d.ts.map +1 -0
  352. package/dist/types/utils/createErrorAccumulator/index.d.ts +2 -0
  353. package/dist/types/utils/createErrorAccumulator/index.d.ts.map +1 -0
  354. package/package.json +31 -33
@@ -1,3 +1,4 @@
1
+ import { type ChartError, ErrorType } from '../../../types/errors.type';
1
2
  import type { ChildrenType, IDataPoint, LineChartContextType } from '../lineChart.type';
2
3
  interface BuildContextValue {
3
4
  children: ChildrenType;
@@ -8,6 +9,7 @@ interface BuildContextValue {
8
9
  canvasHeight: number;
9
10
  canvasWidth: number;
10
11
  viewBox: string;
12
+ addError?: (errorType: keyof typeof ErrorType, error: Omit<ChartError, 'type'>) => void;
11
13
  }
12
14
  type OmitProps = 'data' | 'xKey' | 'canvasHeight' | 'canvasWidth' | 'canvasExtraSpace' | 'xBreakAxis' | 'yBreakAxis' | 'xCursor' | 'yCursor';
13
15
  /**
@@ -16,6 +18,6 @@ type OmitProps = 'data' | 'xKey' | 'canvasHeight' | 'canvasWidth' | 'canvasExtra
16
18
  * @param {BuildContextValue} options - The options for building the context value.
17
19
  * @returns {LineContextValue} - The built context value.
18
20
  */
19
- export declare const buildLineContextValue: ({ ajustedX, ajustedY, canvasHeight, canvasWidth, children, data, viewBox, xKey, }: BuildContextValue) => Omit<LineChartContextType, OmitProps>;
21
+ export declare const buildLineContextValue: ({ addError, ajustedX, ajustedY, canvasHeight, canvasWidth, children, data, viewBox, xKey, }: BuildContextValue) => Omit<LineChartContextType, OmitProps>;
20
22
  export {};
21
23
  //# sourceMappingURL=buildLineContextValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildLineContextValue.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/context/buildLineContextValue.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,UAAU,iBAAiB;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,SAAS,GACV,MAAM,GACN,MAAM,GACN,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEd;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,mFASnC,iBAAiB,KAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CA+I1D,CAAC"}
1
+ {"version":3,"file":"buildLineContextValue.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/context/buildLineContextValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAkBjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,UAAU,iBAAiB;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACzF;AAED,KAAK,SAAS,GACV,MAAM,GACN,MAAM,GACN,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEd;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,6FAUnC,iBAAiB,KAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAoR1D,CAAC"}
@@ -1,73 +1,164 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildLineContextValue = void 0;
4
- const position_enum_1 = require("../../../types/position.enum");
5
- const buildErrors_1 = require("../../../utils/buildErrors/buildErrors");
6
- const getCoordinates_1 = require("../../../utils/getCoordinates/getCoordinates");
7
- const getPoints_1 = require("../../../utils/getPoints/getPoints");
8
- const getTicks_1 = require("../../../utils/getTicks/getTicks");
9
- const getExtraSpacing_1 = require("../utils/getExtraSpacing");
1
+ import { ErrorType } from '../../../types/errors.type';
2
+ import { Positions } from '../../../types/position.enum';
3
+ import { BuildError, buildCanvasDimensionsError, buildError, } from '../../../utils/buildErrors/buildErrors';
4
+ import { getXCoordinates, getYCoordinates } from '../../../utils/getCoordinates/getCoordinates';
5
+ import { getPoints } from '../../../utils/getPoints/getPoints';
6
+ import { getXTicks, getYTicks } from '../../../utils/getTicks/getTicks';
7
+ import { AXIS_VALIDATION, BREAK_AXIS_DEFAULTS, CHART_CANVAS_DEFAULTS, LINE_CHART_FALLBACK_DATA, SHARED_FALLBACK_DATA, } from '../../constants/chartDefaults';
8
+ import { getExtraSpacing } from '../utils/getExtraSpacing';
10
9
  /**
11
10
  * Builds the context value for the line chart.
12
11
  *
13
12
  * @param {BuildContextValue} options - The options for building the context value.
14
13
  * @returns {LineContextValue} - The built context value.
15
14
  */
16
- const buildLineContextValue = ({ ajustedX, ajustedY, canvasHeight, canvasWidth, children, data, viewBox, xKey, }) => {
15
+ export const buildLineContextValue = ({ addError, ajustedX, ajustedY, canvasHeight, canvasWidth, children, data, viewBox, xKey, }) => {
17
16
  let error = undefined;
17
+ // 1. Validate data exists
18
+ if (!data || data.length === 0) {
19
+ const dataError = {
20
+ error: buildError(BuildError.LINE_CHART_NO_DATA),
21
+ };
22
+ addError?.('LINE_CHART_CONTEXT_ERROR', dataError);
23
+ error = dataError;
24
+ }
25
+ if (data && data.length === 1) {
26
+ const singlePointError = {
27
+ error: buildError(BuildError.LINE_CHART_SINGLE_POINT),
28
+ };
29
+ addError?.('LINE_CHART_CONTEXT_ERROR', singlePointError);
30
+ error = singlePointError;
31
+ }
32
+ // 2. Validate canvas dimensions
33
+ if (canvasWidth <= 0 || canvasHeight <= 0) {
34
+ const canvasError = {
35
+ error: buildCanvasDimensionsError(canvasWidth, canvasHeight),
36
+ };
37
+ addError?.('LINE_CHART_CONTEXT_ERROR', canvasError);
38
+ error = canvasError;
39
+ }
40
+ // Use safe defaults for data processing if there are critical errors
41
+ const safeData = data && data.length > 0
42
+ ? data
43
+ : [
44
+ {
45
+ [xKey]: LINE_CHART_FALLBACK_DATA.FALLBACK_X_FIRST,
46
+ y: LINE_CHART_FALLBACK_DATA.FALLBACK_Y_FIRST,
47
+ },
48
+ {
49
+ [xKey]: LINE_CHART_FALLBACK_DATA.FALLBACK_X_SECOND,
50
+ y: LINE_CHART_FALLBACK_DATA.FALLBACK_Y_SECOND,
51
+ },
52
+ ];
53
+ const safeCanvasWidth = canvasWidth > 0 ? canvasWidth : CHART_CANVAS_DEFAULTS.SAFE_WIDTH;
54
+ const safeCanvasHeight = canvasHeight > 0 ? canvasHeight : CHART_CANVAS_DEFAULTS.SAFE_HEIGHT;
18
55
  /**
19
56
  * Get the extra spacings for the line chart.
20
57
  */
21
- const { extraSpaceBottomY, extraSpaceLeftX, extraSpaceRightX, extraSpaceTopY, lineChartXPosition, lineChartYPosition, securityXSpace, securityYSpace, xAxisText, xBreakAxis, xData, yAxisText, yBreakAxis, yData, } = (0, getExtraSpacing_1.getExtraSpacing)({
58
+ const { extraSpaceBottomY, extraSpaceLeftX, extraSpaceRightX, extraSpaceTopY, lineChartXPosition, lineChartYPosition, securityXSpace, securityYSpace, xAxisText, xBreakAxis, xData, yAxisText, yBreakAxis, yData, } = getExtraSpacing({
22
59
  ajustedX,
23
60
  ajustedY,
24
- canvasHeight,
25
- canvasWidth,
61
+ canvasHeight: safeCanvasHeight,
62
+ canvasWidth: safeCanvasWidth,
26
63
  children,
27
- data,
64
+ data: safeData,
28
65
  viewBox,
29
66
  xKey,
30
67
  });
31
68
  /**
32
69
  * Calculate the tick values for the X Axis.
33
70
  */
34
- const crossXAxis = lineChartXPosition !== position_enum_1.Positions.TOP && lineChartXPosition !== position_enum_1.Positions.BOTTOM;
71
+ const crossXAxis = lineChartXPosition !== Positions.TOP && lineChartXPosition !== Positions.BOTTOM;
35
72
  const yAxisSpace = extraSpaceLeftX + extraSpaceRightX;
36
- const xTickValues = (0, getTicks_1.getXTicks)({
73
+ const xTickValues = getXTicks({
37
74
  initPos: extraSpaceLeftX,
38
- maxSpaceAvailable: canvasWidth,
75
+ maxSpaceAvailable: safeCanvasWidth,
39
76
  otherAxisSpace: yAxisSpace,
40
77
  securitySpace: securityXSpace,
41
78
  tickValues: xData,
42
79
  });
43
80
  if ((xTickValues ?? []).some(({ position }) => isNaN(position))) {
44
- error = {
45
- error: (0, buildErrors_1.buildError)(buildErrors_1.BuildError.INVALID_X_TICK),
81
+ const xTickError = {
82
+ error: buildError(BuildError.INVALID_X_TICK),
46
83
  };
84
+ addError?.('LINE_CHART_CONTEXT_ERROR', xTickError);
85
+ error = xTickError;
86
+ }
87
+ // Validate X-axis tick values
88
+ if (xTickValues) {
89
+ const hasInsufficientTicks = xTickValues.length < AXIS_VALIDATION.MIN_TICK_COUNT;
90
+ const hasIdenticalValues = xTickValues.length >= AXIS_VALIDATION.MIN_TICK_COUNT &&
91
+ new Set(xTickValues.map(tick => tick.value)).size === AXIS_VALIDATION.UNIQUE_VALUE_THRESHOLD;
92
+ if (hasInsufficientTicks) {
93
+ const xAxisError = {
94
+ error: buildError(BuildError.LINE_CHART_X_AXIS_INSUFFICIENT_TICKS),
95
+ };
96
+ addError?.('LINE_CHART_X_AXIS_ERROR', xAxisError);
97
+ if (!error) {
98
+ error = xAxisError;
99
+ }
100
+ }
101
+ if (hasIdenticalValues) {
102
+ const xAxisError = {
103
+ error: buildError(BuildError.LINE_CHART_X_AXIS_IDENTICAL_VALUES),
104
+ };
105
+ addError?.('LINE_CHART_X_AXIS_ERROR', xAxisError);
106
+ if (!error) {
107
+ error = xAxisError;
108
+ }
109
+ }
47
110
  }
48
111
  /**
49
112
  * Calculate the tick values for the Y Axis.
50
113
  */
51
- const crossYAxis = lineChartYPosition !== position_enum_1.Positions.LEFT && lineChartYPosition !== position_enum_1.Positions.RIGHT;
114
+ const crossYAxis = lineChartYPosition !== Positions.LEFT && lineChartYPosition !== Positions.RIGHT;
52
115
  const otherAxisSpace = extraSpaceTopY + extraSpaceBottomY;
53
- const yTickValues = (0, getTicks_1.getYTicks)({
54
- initPos: canvasHeight - extraSpaceBottomY,
55
- maxSpaceAvailable: canvasHeight,
116
+ const yTickValues = getYTicks({
117
+ initPos: safeCanvasHeight - extraSpaceBottomY,
118
+ maxSpaceAvailable: safeCanvasHeight,
56
119
  otherAxisSpace,
57
120
  securitySpace: securityYSpace,
58
121
  tickValues: yData,
59
122
  });
123
+ // Validate Y-axis tick values
124
+ if (yTickValues) {
125
+ const hasInsufficientTicks = yTickValues.length < AXIS_VALIDATION.MIN_TICK_COUNT;
126
+ const hasIdenticalValues = yTickValues.length >= AXIS_VALIDATION.MIN_TICK_COUNT &&
127
+ new Set(yTickValues.map(tick => tick.value)).size === AXIS_VALIDATION.UNIQUE_VALUE_THRESHOLD;
128
+ if (hasInsufficientTicks) {
129
+ const yAxisError = {
130
+ error: buildError(BuildError.LINE_CHART_Y_AXIS_INSUFFICIENT_TICKS),
131
+ };
132
+ addError?.('LINE_CHART_Y_AXIS_ERROR', yAxisError);
133
+ if (!error) {
134
+ error = yAxisError;
135
+ }
136
+ }
137
+ if (hasIdenticalValues) {
138
+ const yAxisError = {
139
+ error: buildError(BuildError.LINE_CHART_Y_AXIS_IDENTICAL_VALUES),
140
+ };
141
+ addError?.('LINE_CHART_Y_AXIS_ERROR', yAxisError);
142
+ if (!error) {
143
+ error = yAxisError;
144
+ }
145
+ }
146
+ }
60
147
  /**
61
148
  * Calculate the custom breakAxis for the X and Y Axis.
62
149
  */
63
- const customBreakXAxis = crossXAxis ? (0, getPoints_1.getPoints)(yTickValues || [], [String(xBreakAxis)])[0] : 0;
64
- const customBreakYAxis = crossYAxis ? (0, getPoints_1.getPoints)(xTickValues || [], [String(yBreakAxis)])[0] : 0;
150
+ const customBreakXAxis = crossXAxis
151
+ ? getPoints(yTickValues || [], [String(xBreakAxis)])[0]
152
+ : BREAK_AXIS_DEFAULTS.DEFAULT_BREAK_VALUE;
153
+ const customBreakYAxis = crossYAxis
154
+ ? getPoints(xTickValues || [], [String(yBreakAxis)])[0]
155
+ : BREAK_AXIS_DEFAULTS.DEFAULT_BREAK_VALUE;
65
156
  /**
66
157
  * Calculate the X coordinates for the line chart.
67
158
  */
68
- const xCoordinates = (0, getCoordinates_1.getXCoordinates)({
69
- canvasHeight,
70
- canvasWidth,
159
+ const xCoordinates = getXCoordinates({
160
+ canvasHeight: safeCanvasHeight,
161
+ canvasWidth: safeCanvasWidth,
71
162
  customBreakAxis: Number(customBreakXAxis),
72
163
  extraSpaceBottomY,
73
164
  extraSpaceLeftX,
@@ -79,9 +170,9 @@ const buildLineContextValue = ({ ajustedX, ajustedY, canvasHeight, canvasWidth,
79
170
  /**
80
171
  * Calculate the Y coordinates for the line chart.
81
172
  */
82
- const yCoordinates = (0, getCoordinates_1.getYCoordinates)({
83
- canvasHeight,
84
- canvasWidth,
173
+ const yCoordinates = getYCoordinates({
174
+ canvasHeight: safeCanvasHeight,
175
+ canvasWidth: safeCanvasWidth,
85
176
  customBreakAxis: Number(customBreakYAxis),
86
177
  extraSpaceBottomY,
87
178
  extraSpaceLeftX,
@@ -90,37 +181,27 @@ const buildLineContextValue = ({ ajustedX, ajustedY, canvasHeight, canvasWidth,
90
181
  position: lineChartYPosition,
91
182
  securityYSpace,
92
183
  });
93
- if (error) {
94
- // return fallback context value with error
95
- return {
96
- crossXAxis,
97
- crossYAxis,
98
- error,
99
- extraSpaceBottomY,
100
- extraSpaceLeftX,
101
- extraSpaceRightX,
102
- extraSpaceTopY,
103
- securityXSpace,
104
- securityYSpace,
105
- xAxisCoordinates: {
106
- coordinates: xCoordinates,
107
- tickValues: [
108
- { position: 0, value: '0' },
109
- { position: canvasWidth, value: '1' },
110
- ],
111
- },
112
- xAxisText,
113
- yAxisCoordinates: {
114
- coordinates: yCoordinates,
115
- tickValues: [
116
- { position: canvasHeight, value: '0' },
117
- { position: 0, value: '1' },
118
- ],
119
- },
120
- yAxisText,
184
+ // Validate axis coordinates for zero-length axes
185
+ if (xCoordinates.x1 === xCoordinates.x2) {
186
+ const xAxisError = {
187
+ error: buildError(BuildError.LINE_CHART_X_AXIS_ZERO_LENGTH),
188
+ };
189
+ addError?.('LINE_CHART_X_AXIS_ERROR', xAxisError);
190
+ if (!error) {
191
+ error = xAxisError;
192
+ }
193
+ }
194
+ if (yCoordinates.y1 === yCoordinates.y2) {
195
+ const yAxisError = {
196
+ error: buildError(BuildError.LINE_CHART_Y_AXIS_ZERO_LENGTH),
121
197
  };
198
+ addError?.('LINE_CHART_Y_AXIS_ERROR', yAxisError);
199
+ if (!error) {
200
+ error = yAxisError;
201
+ }
122
202
  }
123
- return {
203
+ const baseContext = {
204
+ addError,
124
205
  crossXAxis,
125
206
  crossYAxis,
126
207
  extraSpaceBottomY,
@@ -129,10 +210,41 @@ const buildLineContextValue = ({ ajustedX, ajustedY, canvasHeight, canvasWidth,
129
210
  extraSpaceTopY,
130
211
  securityXSpace,
131
212
  securityYSpace,
132
- xAxisCoordinates: { coordinates: xCoordinates, tickValues: xTickValues },
213
+ xAxisCoordinates: {
214
+ coordinates: xCoordinates,
215
+ tickValues: xTickValues ||
216
+ (error
217
+ ? [
218
+ {
219
+ position: BREAK_AXIS_DEFAULTS.DEFAULT_BREAK_VALUE,
220
+ value: LINE_CHART_FALLBACK_DATA.FALLBACK_X_FIRST,
221
+ },
222
+ { position: safeCanvasWidth, value: LINE_CHART_FALLBACK_DATA.FALLBACK_X_SECOND },
223
+ ]
224
+ : []),
225
+ },
133
226
  xAxisText,
134
- yAxisCoordinates: { coordinates: yCoordinates, tickValues: yTickValues },
227
+ yAxisCoordinates: {
228
+ coordinates: yCoordinates,
229
+ tickValues: yTickValues ||
230
+ (error
231
+ ? [
232
+ { position: safeCanvasHeight, value: SHARED_FALLBACK_DATA.FALLBACK_PKEY_FIRST },
233
+ {
234
+ position: BREAK_AXIS_DEFAULTS.DEFAULT_BREAK_VALUE,
235
+ value: SHARED_FALLBACK_DATA.FALLBACK_PKEY_SECOND,
236
+ },
237
+ ]
238
+ : []),
239
+ },
135
240
  yAxisText,
136
241
  };
242
+ // Add error only if it exists
243
+ if (error) {
244
+ return {
245
+ ...baseContext,
246
+ error: { ...error, type: ErrorType.LINE_CHART_CONTEXT_ERROR },
247
+ };
248
+ }
249
+ return baseContext;
137
250
  };
138
- exports.buildLineContextValue = buildLineContextValue;
@@ -1,7 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LineChartContext = exports.buildLineContextValue = void 0;
4
- var buildLineContextValue_1 = require("./buildLineContextValue");
5
- Object.defineProperty(exports, "buildLineContextValue", { enumerable: true, get: function () { return buildLineContextValue_1.buildLineContextValue; } });
6
- var lineChartContext_1 = require("./lineChartContext");
7
- Object.defineProperty(exports, "LineChartContext", { enumerable: true, get: function () { return lineChartContext_1.LineChartContext; } });
1
+ export { buildLineContextValue } from './buildLineContextValue';
2
+ export { LineChartContext } from './lineChartContext';
@@ -1,5 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LineChartContext = void 0;
4
- const react_1 = require("react");
5
- exports.LineChartContext = (0, react_1.createContext)({});
1
+ import { createContext } from 'react';
2
+ export const LineChartContext = createContext({});
@@ -1,5 +1,6 @@
1
1
  import type { TickData } from '../../../../components/tick/tick.types';
2
2
  export declare const CONTEXT: {
3
+ addError: undefined;
3
4
  canvasExtraSpace: number;
4
5
  canvasHeight: number;
5
6
  canvasWidth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"contextData.d.ts","sourceRoot":"","sources":["../../../../../../src/charts/lineChart/fragments/fixture/contextData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;oBAwBA,QAAQ,EAAE;;;;;;;;;;;;oBAWV,QAAQ,EAAE;;;;CAI7B,CAAC"}
1
+ {"version":3,"file":"contextData.d.ts","sourceRoot":"","sources":["../../../../../../src/charts/lineChart/fragments/fixture/contextData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;oBAyBA,QAAQ,EAAE;;;;;;;;;;;;oBAWV,QAAQ,EAAE;;;;CAI7B,CAAC"}
@@ -1,7 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONTEXT = void 0;
4
- exports.CONTEXT = {
1
+ export const CONTEXT = {
2
+ addError: undefined,
5
3
  canvasExtraSpace: 0,
6
4
  canvasHeight: 500,
7
5
  canvasWidth: 500,
@@ -1,5 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONTEXT = void 0;
4
- var contextData_1 = require("./contextData");
5
- Object.defineProperty(exports, "CONTEXT", { enumerable: true, get: function () { return contextData_1.CONTEXT; } });
1
+ export { CONTEXT } from './contextData';
@@ -1,11 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LineChartYAxis = exports.LineChartXAxis = exports.LineChartSeparator = exports.LineChartPath = void 0;
4
- var lineChartPath_1 = require("./lineChartPath");
5
- Object.defineProperty(exports, "LineChartPath", { enumerable: true, get: function () { return lineChartPath_1.LineChartPath; } });
6
- var lineChartSeparator_1 = require("./lineChartSeparator");
7
- Object.defineProperty(exports, "LineChartSeparator", { enumerable: true, get: function () { return lineChartSeparator_1.LineChartSeparator; } });
8
- var lineChartXAxis_1 = require("./lineChartXAxis");
9
- Object.defineProperty(exports, "LineChartXAxis", { enumerable: true, get: function () { return lineChartXAxis_1.LineChartXAxis; } });
10
- var lineChartYAxis_1 = require("./lineChartYAxis");
11
- Object.defineProperty(exports, "LineChartYAxis", { enumerable: true, get: function () { return lineChartYAxis_1.LineChartYAxis; } });
1
+ export { LineChartPath } from './lineChartPath';
2
+ export { LineChartSeparator } from './lineChartSeparator';
3
+ export { LineChartXAxis } from './lineChartXAxis';
4
+ export { LineChartYAxis } from './lineChartYAxis';
@@ -1 +1 @@
1
- {"version":3,"file":"lineChartPath.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/fragments/lineChartPath.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAoD,MAAM,OAAO,CAAC;AAUlF,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,qBAAqB,CAAC;AAO7B,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAiJhD,CAAC"}
1
+ {"version":3,"file":"lineChartPath.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/fragments/lineChartPath.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAoD,MAAM,OAAO,CAAC;AAWlF,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,qBAAqB,CAAC;AAO7B,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAwLhD,CAAC"}
@@ -1,31 +1,61 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LineChartPath = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const line_1 = require("../../../components/line/line");
7
- const node_1 = require("../../../components/node/node");
8
- const path_1 = require("../../../components/path/path");
9
- const getPoints_1 = require("../../../utils/getPoints/getPoints");
10
- const pickCustomAttributes_1 = require("../../../utils/pickCustomAttributes/pickCustomAttributes");
11
- const lineChartContext_1 = require("../context/lineChartContext");
12
- const useIndicator_1 = require("../hook/useIndicator");
13
- const findSurroundingNumber_1 = require("../utils/findSurroundingNumber");
14
- const getPathData_1 = require("../utils/getPathData");
15
- const handleNodesFocus_1 = require("../utils/handleNodesFocus");
16
- require("./lineChartPath.css");
17
- const lineChartProjection_1 = require("./lineChartProjection");
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext, useEffect, useRef } from 'react';
3
+ import { Line } from '../../../components/line/line';
4
+ import { Node } from '../../../components/node/node';
5
+ import { Path } from '../../../components/path/path';
6
+ import { BuildError, buildDataKeyNotFoundError, buildError } from '../../../utils/buildErrors/buildErrors';
7
+ import { getPoints } from '../../../utils/getPoints/getPoints';
8
+ import { pickCustomAttributes } from '../../../utils/pickCustomAttributes/pickCustomAttributes';
9
+ import { LineChartContext } from '../context/lineChartContext';
10
+ import { useIndicator } from '../hook/useIndicator';
11
+ import { findClosestNumber, findSurroundingNumber } from '../utils/findSurroundingNumber';
12
+ import { getPathData } from '../utils/getPathData';
13
+ import { handleNodesFocus } from '../utils/handleNodesFocus';
14
+ import './lineChartPath.css';
15
+ import { LineChartProjection } from './lineChartProjection';
18
16
  const getAxisData = (data, key) => {
19
17
  return data.map(dt => dt[key]);
20
18
  };
21
- const LineChartPath = ({ ariaLabel, closestClick, curved, getNodeFocusInfo, getNodesCoords, indicatorConfig, lineProjection, onClick, ...props }) => {
19
+ export const LineChartPath = ({ ariaLabel, closestClick, curved, getNodeFocusInfo, getNodesCoords, indicatorConfig, lineProjection, onClick, ...props }) => {
22
20
  // recovery the context values
23
- const { xAxisCoordinates, yAxisCoordinates, ...context } = (0, react_1.useContext)(lineChartContext_1.LineChartContext);
21
+ const { addError, xAxisCoordinates, yAxisCoordinates, ...context } = useContext(LineChartContext);
22
+ // Path error validations
23
+ useEffect(() => {
24
+ // Invalid dataKey validation
25
+ if (!props.dataKey || typeof props.dataKey !== 'string') {
26
+ addError?.('LINE_CHART_PATH_ERROR', {
27
+ error: buildError(BuildError.LINE_CHART_PATH_INVALID_DATAKEY),
28
+ });
29
+ return;
30
+ }
31
+ // Check if dataKey exists in dataset
32
+ if (context.data.length > 0 &&
33
+ !Object.prototype.hasOwnProperty.call(context.data[0], props.dataKey)) {
34
+ addError?.('LINE_CHART_PATH_ERROR', {
35
+ error: buildDataKeyNotFoundError(props.dataKey),
36
+ });
37
+ return;
38
+ }
39
+ // Curved path calculation errors
40
+ if (curved && context.data.length < 2) {
41
+ addError?.('LINE_CHART_PATH_ERROR', {
42
+ error: buildError(BuildError.LINE_CHART_PATH_INSUFFICIENT_POINTS),
43
+ });
44
+ return;
45
+ }
46
+ // Path rendering errors - validate coordinates
47
+ const yData = getAxisData(context.data, props.dataKey);
48
+ if (yData.length > 0 && yData.every(val => val === null || val === undefined)) {
49
+ addError?.('LINE_CHART_PATH_ERROR', {
50
+ error: buildError(BuildError.LINE_CHART_PATH_ALL_VALUES_NULL),
51
+ });
52
+ }
53
+ }, [props.dataKey, curved, context.data, addError]);
24
54
  // the node indicator logic
25
- const { indicatorRef, pathRef } = (0, useIndicator_1.useIndicator)(context.xCursor, !!indicatorConfig);
55
+ const { indicatorRef, pathRef } = useIndicator(context.xCursor, !!indicatorConfig);
26
56
  const showIndicator = !!indicatorConfig && context.xCursor !== -Infinity;
27
- const innerRefs = (0, react_1.useRef)(null);
28
- const pressedRef = (0, react_1.useRef)(null);
57
+ const innerRefs = useRef(null);
58
+ const pressedRef = useRef(null);
29
59
  // the projection line logic
30
60
  const { autoClick, lineIndicator, ...nodeIndicatorConfig } = indicatorConfig || {};
31
61
  // line indicator <Y> coordinates
@@ -36,24 +66,24 @@ const LineChartPath = ({ ariaLabel, closestClick, curved, getNodeFocusInfo, getN
36
66
  const { tickValues: yTickValues } = yAxisCoordinates;
37
67
  const xData = getAxisData(context.data, context.xKey);
38
68
  const yData = getAxisData(context.data, props.dataKey);
39
- const xPoints = (0, getPoints_1.getPoints)(xTickValues, xData, true);
40
- const yPoints = (0, getPoints_1.getPoints)(yTickValues, yData);
69
+ const xPoints = getPoints(xTickValues, xData, true);
70
+ const yPoints = getPoints(yTickValues, yData);
41
71
  const points = xPoints.map((x, i) => [x, yPoints[i]]);
42
72
  // the path data
43
- const dataOnlyLine = (0, getPathData_1.getPathData)({
73
+ const dataOnlyLine = getPathData({
44
74
  curved,
45
75
  extendToBottom: false,
46
76
  points,
47
77
  svgHeight: Number(context.canvasHeight) - context.extraSpaceBottomY,
48
78
  });
49
- const dataFill = (0, getPathData_1.getPathData)({
79
+ const dataFill = getPathData({
50
80
  curved,
51
81
  extendToBottom: !!props.fill || !!props.gradient,
52
82
  points,
53
83
  svgHeight: Number(context.canvasHeight) - context.extraSpaceBottomY,
54
84
  });
55
85
  // the ref to the path and handler the nodes focus
56
- (0, react_1.useEffect)(() => {
86
+ useEffect(() => {
57
87
  if (!innerRefs.current?.path) {
58
88
  return;
59
89
  }
@@ -61,15 +91,15 @@ const LineChartPath = ({ ariaLabel, closestClick, curved, getNodeFocusInfo, getN
61
91
  const main = innerRefs.current.main;
62
92
  const nodes = innerRefs.current.node;
63
93
  const data = xData.map((d, i) => ({ x: d, y: yData[i] }));
64
- const { mount, unmount } = (0, handleNodesFocus_1.handleNodesFocus)({ data, getNodeFocusInfo, nodes, ref: main });
94
+ const { mount, unmount } = handleNodesFocus({ data, getNodeFocusInfo, nodes, ref: main });
65
95
  mount();
66
96
  // eslint-disable-next-line consistent-return
67
97
  return () => unmount();
68
98
  }, []);
69
99
  // the auto click logic
70
- (0, react_1.useEffect)(() => {
100
+ useEffect(() => {
71
101
  if (props.nodeConfig && showIndicator && autoClick) {
72
- const { idx, match } = (0, findSurroundingNumber_1.findSurroundingNumber)(xPoints, context.xCursor);
102
+ const { idx, match } = findSurroundingNumber(xPoints, context.xCursor);
73
103
  if (match && idx !== pressedRef.current) {
74
104
  pressedRef.current = idx;
75
105
  const evt = new MouseEvent('click', { bubbles: true });
@@ -83,27 +113,26 @@ const LineChartPath = ({ ariaLabel, closestClick, curved, getNodeFocusInfo, getN
83
113
  }
84
114
  }, [context.xCursor]);
85
115
  // Return the nodes coordinates
86
- (0, react_1.useEffect)(() => {
116
+ useEffect(() => {
87
117
  getNodesCoords?.(points);
88
118
  }, [points]);
89
119
  // the click handler
90
120
  const handleClick = (data) => {
91
121
  onClick?.(data);
92
122
  if (closestClick) {
93
- const closest = (0, findSurroundingNumber_1.findClosestNumber)(xPoints, context.xCursor);
123
+ const closest = findClosestNumber(xPoints, context.xCursor);
94
124
  const evt = new MouseEvent('click', { bubbles: true });
95
125
  evt.autoClick = false;
96
126
  innerRefs.current?.node?.[closest]?.dispatchEvent(evt);
97
127
  }
98
128
  };
99
129
  // Extract custom attributes (aria-*, data-*) and handle deprecated ariaLabel
100
- const customAttributes = (0, pickCustomAttributes_1.pickCustomAttributes)(props);
130
+ const customAttributes = pickCustomAttributes(props);
101
131
  const mergedProps = {
102
132
  ...props,
103
133
  ...customAttributes,
104
134
  // Handle deprecated ariaLabel - give precedence to ariaLabel for backward compatibility
105
135
  ...(ariaLabel && { 'aria-label': ariaLabel }),
106
136
  };
107
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(path_1.Path, { ref: innerRefs, d: dataOnlyLine, dFill: dataFill, dataTestId: `${context.dataTestId}path`, dataValue: context.data, points: points, xKey: context.xKey, onClick: handleClick, ...mergedProps }), lineProjection && ((0, jsx_runtime_1.jsx)(lineChartProjection_1.LineChartProjection, { curved: curved, dataKey: props.dataKey, lineProjection: lineProjection, points: points, svgHeight: Number(context.canvasHeight) - context.extraSpaceBottomY })), showIndicator && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [!!lineIndicator && ((0, jsx_runtime_1.jsx)(line_1.Line, { ...lineIndicator, className: "pointer-events-none", x1: context.xCursor, x2: context.xCursor, y1: y1, y2: y2 })), (0, jsx_runtime_1.jsx)("g", { ref: indicatorRef, className: "pointer-events-none", children: (0, jsx_runtime_1.jsx)(node_1.Node, { ...nodeIndicatorConfig }) })] }))] }));
137
+ return (_jsxs(_Fragment, { children: [_jsx(Path, { ref: innerRefs, d: dataOnlyLine, dFill: dataFill, dataTestId: `${context.dataTestId}path`, dataValue: context.data, points: points, xKey: context.xKey, onClick: handleClick, ...mergedProps }), lineProjection && (_jsx(LineChartProjection, { curved: curved, dataKey: props.dataKey, lineProjection: lineProjection, points: points, svgHeight: Number(context.canvasHeight) - context.extraSpaceBottomY })), showIndicator && (_jsxs(_Fragment, { children: [!!lineIndicator && (_jsx(Line, { ...lineIndicator, className: "pointer-events-none", x1: context.xCursor, x2: context.xCursor, y1: y1, y2: y2 })), _jsx("g", { ref: indicatorRef, className: "pointer-events-none", children: _jsx(Node, { ...nodeIndicatorConfig }) })] }))] }));
108
138
  };
109
- exports.LineChartPath = LineChartPath;
@@ -1,4 +1,4 @@
1
- import type { FC } from 'react';
1
+ import { type FC } from 'react';
2
2
  import type { LineChartProjectionProps } from '../lineChart.type';
3
3
  import './lineChartPath.css';
4
4
  export declare const LineChartProjection: FC<LineChartProjectionProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"lineChartProjection.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/fragments/lineChartProjection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,qBAAqB,CAAC;AAE7B,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA2B5D,CAAC"}
1
+ {"version":3,"file":"lineChartProjection.d.ts","sourceRoot":"","sources":["../../../../../src/charts/lineChart/fragments/lineChartProjection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAyB,MAAM,OAAO,CAAC;AASvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,qBAAqB,CAAC;AAE7B,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA4E5D,CAAC"}