@elliemae/ds-dataviz 3.8.1 → 3.9.0-next.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 (164) hide show
  1. package/dist/cjs/graphs/Chart/Chart.js.map +2 -2
  2. package/dist/cjs/graphs/Chart/ChartContext.js +3 -1
  3. package/dist/cjs/graphs/Chart/ChartContext.js.map +2 -2
  4. package/dist/cjs/graphs/Chart/config/useChart.js +86 -33
  5. package/dist/cjs/graphs/Chart/config/useChart.js.map +3 -3
  6. package/dist/cjs/graphs/Chart/config/useInternalMargins.js +103 -0
  7. package/dist/cjs/graphs/Chart/config/useInternalMargins.js.map +7 -0
  8. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js +25 -15
  9. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
  10. package/dist/cjs/graphs/Chart/config/useScales.js +43 -17
  11. package/dist/cjs/graphs/Chart/config/useScales.js.map +2 -2
  12. package/dist/cjs/graphs/Chart/helpers/index.js +9 -13
  13. package/dist/cjs/graphs/Chart/helpers/index.js.map +2 -2
  14. package/dist/cjs/graphs/Chart/parts/ActivePoint.js +1 -1
  15. package/dist/cjs/graphs/Chart/parts/ActivePoint.js.map +2 -2
  16. package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js +17 -25
  17. package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js.map +3 -3
  18. package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js +33 -38
  19. package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js.map +2 -2
  20. package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js +6 -11
  21. package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
  22. package/dist/cjs/graphs/Chart/parts/ChartContainer.js +65 -16
  23. package/dist/cjs/graphs/Chart/parts/ChartContainer.js.map +2 -2
  24. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js +17 -68
  25. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js.map +2 -2
  26. package/dist/cjs/graphs/Chart/{series/Pie.js → parts/Labels/BottomLabel.js} +20 -12
  27. package/dist/cjs/graphs/Chart/parts/Labels/BottomLabel.js.map +7 -0
  28. package/dist/cjs/graphs/Chart/parts/Labels/Label.js +52 -0
  29. package/dist/cjs/graphs/Chart/parts/Labels/Label.js.map +7 -0
  30. package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js +61 -0
  31. package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js.map +7 -0
  32. package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js +65 -0
  33. package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js.map +7 -0
  34. package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js +28 -30
  35. package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js.map +2 -2
  36. package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js +14 -19
  37. package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js.map +2 -2
  38. package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js +100 -0
  39. package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js.map +7 -0
  40. package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js +31 -25
  41. package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js.map +2 -2
  42. package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js +3 -13
  43. package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js.map +2 -2
  44. package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js +50 -16
  45. package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js.map +2 -2
  46. package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js +3 -1
  47. package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +2 -2
  48. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js +39 -17
  49. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +2 -2
  50. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +29 -28
  51. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +2 -2
  52. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarX.js.map +2 -2
  53. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js +2 -2
  54. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +2 -2
  55. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js +57 -41
  56. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js.map +2 -2
  57. package/dist/cjs/graphs/Chart/react-desc-prop-types.js +1 -12
  58. package/dist/cjs/graphs/Chart/react-desc-prop-types.js.map +2 -2
  59. package/dist/cjs/graphs/Chart/series/Bars.js +29 -27
  60. package/dist/cjs/graphs/Chart/series/Bars.js.map +2 -2
  61. package/dist/cjs/graphs/Chart/series/HorizontalBars.js +85 -0
  62. package/dist/cjs/graphs/Chart/series/HorizontalBars.js.map +7 -0
  63. package/dist/cjs/graphs/Chart/series/HorizontalStackedBars.js +77 -0
  64. package/dist/cjs/graphs/Chart/series/HorizontalStackedBars.js.map +7 -0
  65. package/dist/cjs/graphs/Chart/series/Line.js +23 -19
  66. package/dist/cjs/graphs/Chart/series/Line.js.map +2 -2
  67. package/dist/cjs/graphs/Chart/series/Point.js +88 -18
  68. package/dist/cjs/graphs/Chart/series/Point.js.map +2 -2
  69. package/dist/cjs/graphs/Chart/series/Points.js +23 -27
  70. package/dist/cjs/graphs/Chart/series/Points.js.map +2 -2
  71. package/dist/cjs/graphs/Chart/series/Rect.js +105 -8
  72. package/dist/cjs/graphs/Chart/series/Rect.js.map +2 -2
  73. package/dist/cjs/graphs/Chart/series/StackedBar.js +23 -30
  74. package/dist/cjs/graphs/Chart/series/StackedBar.js.map +2 -2
  75. package/dist/cjs/graphs/Chart/series/index.js +0 -1
  76. package/dist/cjs/graphs/Chart/series/index.js.map +2 -2
  77. package/dist/cjs/graphs/Chart/styles.js +5 -20
  78. package/dist/cjs/graphs/Chart/styles.js.map +2 -2
  79. package/dist/cjs/graphs/constants.js +20 -0
  80. package/dist/cjs/graphs/constants.js.map +2 -2
  81. package/dist/esm/graphs/Chart/Chart.js.map +2 -2
  82. package/dist/esm/graphs/Chart/ChartContext.js +3 -1
  83. package/dist/esm/graphs/Chart/ChartContext.js.map +2 -2
  84. package/dist/esm/graphs/Chart/config/useChart.js +87 -34
  85. package/dist/esm/graphs/Chart/config/useChart.js.map +2 -2
  86. package/dist/esm/graphs/Chart/config/useInternalMargins.js +77 -0
  87. package/dist/esm/graphs/Chart/config/useInternalMargins.js.map +7 -0
  88. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js +26 -16
  89. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
  90. package/dist/esm/graphs/Chart/config/useScales.js +44 -18
  91. package/dist/esm/graphs/Chart/config/useScales.js.map +2 -2
  92. package/dist/esm/graphs/Chart/helpers/index.js +10 -14
  93. package/dist/esm/graphs/Chart/helpers/index.js.map +2 -2
  94. package/dist/esm/graphs/Chart/parts/ActivePoint.js +1 -1
  95. package/dist/esm/graphs/Chart/parts/ActivePoint.js.map +2 -2
  96. package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js +18 -26
  97. package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js.map +3 -3
  98. package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js +34 -39
  99. package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js.map +2 -2
  100. package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js +6 -11
  101. package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
  102. package/dist/esm/graphs/Chart/parts/ChartContainer.js +66 -17
  103. package/dist/esm/graphs/Chart/parts/ChartContainer.js.map +2 -2
  104. package/dist/esm/graphs/Chart/parts/FocusableRegion.js +18 -69
  105. package/dist/esm/graphs/Chart/parts/FocusableRegion.js.map +2 -2
  106. package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js +28 -0
  107. package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js.map +7 -0
  108. package/dist/esm/graphs/Chart/parts/Labels/Label.js +26 -0
  109. package/dist/esm/graphs/Chart/parts/Labels/Label.js.map +7 -0
  110. package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js +35 -0
  111. package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js.map +7 -0
  112. package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js +39 -0
  113. package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js.map +7 -0
  114. package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js +28 -30
  115. package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js.map +2 -2
  116. package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js +16 -21
  117. package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js.map +2 -2
  118. package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js +74 -0
  119. package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js.map +7 -0
  120. package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js +32 -26
  121. package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js.map +2 -2
  122. package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js +3 -13
  123. package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js.map +2 -2
  124. package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js +51 -17
  125. package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js.map +2 -2
  126. package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js +3 -1
  127. package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +2 -2
  128. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js +39 -17
  129. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +2 -2
  130. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +29 -28
  131. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +2 -2
  132. package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarX.js.map +2 -2
  133. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js +2 -2
  134. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +2 -2
  135. package/dist/esm/graphs/Chart/parts/SeriesFactory.js +58 -42
  136. package/dist/esm/graphs/Chart/parts/SeriesFactory.js.map +2 -2
  137. package/dist/esm/graphs/Chart/react-desc-prop-types.js +1 -12
  138. package/dist/esm/graphs/Chart/react-desc-prop-types.js.map +2 -2
  139. package/dist/esm/graphs/Chart/series/Bars.js +30 -28
  140. package/dist/esm/graphs/Chart/series/Bars.js.map +2 -2
  141. package/dist/esm/graphs/Chart/series/HorizontalBars.js +59 -0
  142. package/dist/esm/graphs/Chart/series/HorizontalBars.js.map +7 -0
  143. package/dist/esm/graphs/Chart/series/HorizontalStackedBars.js +51 -0
  144. package/dist/esm/graphs/Chart/series/HorizontalStackedBars.js.map +7 -0
  145. package/dist/esm/graphs/Chart/series/Line.js +25 -21
  146. package/dist/esm/graphs/Chart/series/Line.js.map +2 -2
  147. package/dist/esm/graphs/Chart/series/Point.js +89 -19
  148. package/dist/esm/graphs/Chart/series/Point.js.map +2 -2
  149. package/dist/esm/graphs/Chart/series/Points.js +24 -28
  150. package/dist/esm/graphs/Chart/series/Points.js.map +2 -2
  151. package/dist/esm/graphs/Chart/series/Rect.js +106 -9
  152. package/dist/esm/graphs/Chart/series/Rect.js.map +2 -2
  153. package/dist/esm/graphs/Chart/series/StackedBar.js +24 -31
  154. package/dist/esm/graphs/Chart/series/StackedBar.js.map +2 -2
  155. package/dist/esm/graphs/Chart/series/index.js +0 -1
  156. package/dist/esm/graphs/Chart/series/index.js.map +2 -2
  157. package/dist/esm/graphs/Chart/styles.js +5 -20
  158. package/dist/esm/graphs/Chart/styles.js.map +2 -2
  159. package/dist/esm/graphs/constants.js +20 -0
  160. package/dist/esm/graphs/constants.js.map +2 -2
  161. package/package.json +8 -8
  162. package/dist/cjs/graphs/Chart/series/Pie.js.map +0 -7
  163. package/dist/esm/graphs/Chart/series/Pie.js +0 -20
  164. package/dist/esm/graphs/Chart/series/Pie.js.map +0 -7
@@ -47,37 +47,54 @@ const useScales = ({
47
47
  const getLinearDomain = (0, import_react.useCallback)(
48
48
  (axis, axisString, withStackData = true) => {
49
49
  const begin = axis?.beginAtZero ? 0 : void 0;
50
- const data = series.filter((serie) => {
51
- if (serie.scale === "y2") {
52
- return serie.scale === axisString;
50
+ const data = currentData.filter((serie) => {
51
+ if (serie.isHidden)
52
+ return false;
53
+ if (serie.scale === axisString) {
54
+ return true;
53
55
  }
54
- return true;
56
+ if (!serie.scale && ["y", "x"].includes(axisString)) {
57
+ return true;
58
+ }
59
+ return false;
55
60
  }).map(
56
- (serie) => typeof serie.data[0] === "number" ? serie.data : serie.data.map((coord) => coord[axisString])
61
+ (serie) => serie.data.filter((datum) => datum.value).map((datum) => {
62
+ if (typeof datum.value === "number") {
63
+ return datum.value;
64
+ }
65
+ return datum.value[axisString];
66
+ })
57
67
  );
58
68
  const stack = withStackData && [
59
69
  (0, import_d3.min)(stackedData.flat(), (layer) => (0, import_d3.min)(layer, (sequence) => sequence[1])),
60
70
  (0, import_d3.max)(stackedData.flat(), (layer) => (0, import_d3.max)(layer, (sequence) => sequence[1]))
61
71
  ];
62
72
  const minRange = (0, import_d3.min)([begin, (0, import_d3.min)(data.flat()), stack[0]]);
63
- const maxRange = (0, import_d3.max)([(0, import_d3.max)(data.flat()), stack[1]]);
64
- return [minRange, maxRange];
73
+ const maxRange = (0, import_d3.max)([begin, (0, import_d3.max)(data.flat()), stack[1]]);
74
+ const [leftPadding, rightPadding] = typeof axis.domainPadding === "number" ? [axis.domainPadding, axis.domainPadding] : axis.domainPadding ?? [0, 0];
75
+ if (axis.type === "time") {
76
+ return [minRange, maxRange];
77
+ }
78
+ return [
79
+ minRange - (maxRange - minRange) * (leftPadding ?? 0),
80
+ maxRange + (maxRange - minRange) * (rightPadding ?? 0)
81
+ ];
65
82
  },
66
- [series, stackedData]
83
+ [currentData, stackedData]
67
84
  );
68
- const getScaleTime = (domain, range) => (0, import_d3.scaleTime)().domain([(0, import_d3.min)(domain) ?? 0, (0, import_d3.max)(domain) ?? 0]).range(range);
85
+ const getScaleTime = (domain, range) => (0, import_d3.scaleUtc)().domain(domain).range(range);
69
86
  const getScaleBand = (domain, range, padding = 0.2) => (0, import_d3.scaleBand)().domain(domain).range(range).padding(padding).paddingOuter(0.1);
70
87
  const getScaleLinear = (domain, range) => (0, import_d3.scaleLinear)().domain(domain).range(range);
71
88
  const getScaleLog = (domain, range) => (0, import_d3.scaleLog)().domain(domain).range(range);
72
89
  const xScale = (0, import_react.useMemo)(() => {
73
90
  if (xAxis?.type === "time")
74
- return getScaleTime(xAxis.cols, [0, rangeTo]);
91
+ return getScaleTime(getLinearDomain(xAxis, "x", false), [0, rangeTo]);
75
92
  if (xAxis?.type === "linear" || yAxis?.type === "band") {
76
93
  const withStackData = yAxis?.type === "band";
77
94
  return getScaleLinear(getLinearDomain(xAxis, "x", withStackData), [0, rangeTo], xAxis.padding);
78
95
  }
79
- return getScaleBand(getBandDomain(xAxis), [0, innerWidth], xAxis.padding);
80
- }, [getBandDomain, getLinearDomain, innerWidth, rangeTo, xAxis, yAxis?.type]);
96
+ return getScaleBand(getBandDomain(xAxis), [0, rangeTo], xAxis.padding);
97
+ }, [getBandDomain, getLinearDomain, rangeTo, xAxis, yAxis?.type]);
81
98
  const yScale = (0, import_react.useMemo)(() => {
82
99
  if (yAxis?.type === "band")
83
100
  return getScaleBand(getBandDomain(yAxis), [innerHeight, 0], yAxis.padding);
@@ -94,10 +111,16 @@ const useScales = ({
94
111
  return getScaleLog(getLinearDomain(y2Axis, "y2"), [innerHeight, 0]);
95
112
  return getScaleLinear(getLinearDomain(y2Axis, "y2"), [innerHeight, 0]);
96
113
  }, [getBandDomain, getLinearDomain, innerHeight, y2Axis]);
97
- const colorScale = (0, import_d3.scaleOrdinal)().domain(groups).range(currentData.map((d) => import_colorPallet.COLOR_PALLET[d.color] ?? d.color));
98
- const subgroupsWithBars = currentData.filter(
99
- (serie) => serie.type === "bar" && !(stackedSeries?.length && (0, import_helpers.getStackedIndex)(stackedSeries, serie.name) > -1)
100
- ).map((serie) => serie.name);
114
+ const colorScale = (0, import_react.useMemo)(
115
+ () => (0, import_d3.scaleOrdinal)().domain(groups).range(currentData.map((d) => import_colorPallet.COLOR_PALLET[d.color] ?? d.color)),
116
+ [currentData, groups]
117
+ );
118
+ const subgroupsWithBars = (0, import_react.useMemo)(
119
+ () => currentData.filter(
120
+ (serie) => serie.type === "bar" && !(stackedSeries?.length && (0, import_helpers.getStackedIndex)(stackedSeries, serie.name) > -1) && !serie.isHidden
121
+ ).map((serie) => serie.name),
122
+ [currentData, stackedSeries]
123
+ );
101
124
  const getBandwidth = (0, import_react.useCallback)(() => {
102
125
  if (xScale.bandwidth)
103
126
  return xScale.bandwidth();
@@ -108,7 +131,10 @@ const useScales = ({
108
131
  if (stackedSeries?.length) {
109
132
  stackedSeries.forEach((_, i) => subgroupsWithBars.push(`stacked-data-${i}`));
110
133
  }
111
- const subGroupScale = getBandwidth() ? (0, import_d3.scaleBand)().domain(subgroupsWithBars).range([0, getBandwidth() ?? 0]).paddingInner(0.55).padding(0.2) : null;
134
+ const subGroupScale = (0, import_react.useMemo)(
135
+ () => getBandwidth() ? (0, import_d3.scaleBand)().domain(subgroupsWithBars).range([0, getBandwidth() ?? 0]).paddingInner(0.55).padding(0.2) : null,
136
+ [getBandwidth, subgroupsWithBars]
137
+ );
112
138
  return { xScale, y2Scale, yScale, subGroupScale, colorScale, getBandwidth };
113
139
  };
114
140
  //# sourceMappingURL=useScales.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/graphs/Chart/config/useScales.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable indent */\nimport { useMemo, useCallback } from 'react';\nimport { max, min, scaleLinear, scaleBand, scaleTime, scaleOrdinal, scaleLog, Series, ScaleBand } from 'd3';\nimport { DSChartT } from '../react-desc-prop-types';\nimport { getStackedIndex } from '../helpers';\nimport { COLOR_PALLET } from '../helpers/colorPallet';\ninterface UseScales {\n props: DSChartT.Props;\n innerHeight: number;\n innerWidth: number;\n stackedData: Series<\n {\n [key: string]: number;\n },\n string\n >[][];\n currentData: {\n key: string;\n group: string;\n type: DSChartT.SerieTypeT;\n scale?: string;\n color: string;\n data: {\n key: string;\n value: number | { x: number; y: number };\n position: number;\n }[];\n }[];\n groups: string[];\n}\nexport const useScales = ({\n props,\n innerHeight,\n innerWidth,\n stackedData,\n currentData,\n groups,\n containerRatio,\n}: UseScales) => {\n const { series, xAxis, yAxis, y2Axis, groups: stackedSeries, types } = props;\n\n const rangeTo = innerWidth * (containerRatio ?? 1);\n const getBandDomain = useCallback((axis: DSChartT.AxisT) => axis.cols ?? [...series[0].data.keys()], [series]);\n\n const getLinearDomain = useCallback(\n (axis?: DSChartT.AxisT, axisString?: string, withStackData = true) => {\n // const data2 = data ? extent(data) : [];\n const begin = axis?.beginAtZero ? 0 : undefined;\n const data = series\n .filter((serie) => {\n if (serie.scale === 'y2') {\n return serie.scale === axisString;\n }\n return true;\n })\n .map((serie) =>\n typeof serie.data[0] === 'number' ? serie.data : serie.data.map((coord) => coord[axisString]),\n );\n\n const stack = withStackData && [\n min(stackedData.flat(), (layer) => min(layer, (sequence) => sequence[1])),\n max(stackedData.flat(), (layer) => max(layer, (sequence) => sequence[1])),\n ];\n const minRange = min([begin, min(data.flat()), stack[0]]);\n const maxRange = max([max(data.flat()), stack[1]]);\n // @TODO altering the domain to get padding right and left on axis\n // we set a pad on the x axis, we can create a prop to set this constant\n // return [\n // minRange - (axisString === 'x' ? (maxRange - minRange) * 0.05 : 0),\n // maxRange + (axisString === 'x' ? (maxRange - minRange) * 0.05 : 0),\n // ];\n return [minRange, maxRange];\n },\n [series, stackedData],\n );\n\n const getScaleTime = (domain: Date[], range: number[]) =>\n scaleTime()\n .domain([min(domain) ?? 0, max(domain) ?? 0])\n .range(range);\n\n const getScaleBand = (domain: string[], range: number[], padding = 0.2) =>\n scaleBand().domain(domain).range(range).padding(padding).paddingOuter(0.1);\n const getScaleLinear = (domain: number[], range: number[]) => scaleLinear().domain(domain).range(range);\n const getScaleLog = (domain: number[], range: number[]) => scaleLog().domain(domain).range(range);\n\n const xScale = useMemo(() => {\n if (xAxis?.type === 'time') return getScaleTime(xAxis.cols as Date[], [0, rangeTo]);\n if (xAxis?.type === 'linear' || yAxis?.type === 'band') {\n // @TODO is this really a thing ?\n const withStackData = yAxis?.type === 'band';\n return getScaleLinear(getLinearDomain(xAxis, 'x', withStackData) as number[], [0, rangeTo], xAxis.padding);\n }\n\n return getScaleBand(getBandDomain(xAxis) as string[], [0, innerWidth], xAxis.padding);\n }, [getBandDomain, getLinearDomain, innerWidth, rangeTo, xAxis, yAxis?.type]);\n\n const yScale = useMemo(() => {\n if (yAxis?.type === 'band') return getScaleBand(getBandDomain(yAxis), [innerHeight, 0], yAxis.padding);\n if (yAxis?.type === 'log') return getScaleLog(getLinearDomain(yAxis, 'y'), [innerHeight, 0]);\n return getScaleLinear(getLinearDomain(yAxis, 'y'), [innerHeight, 0]);\n }, [getBandDomain, getLinearDomain, innerHeight, yAxis]);\n\n const y2Scale = useMemo(() => {\n if (!y2Axis) return null;\n if (y2Axis?.type === 'band') return getScaleBand(getBandDomain(y2Axis), [innerHeight, 0], y2Scale.padding);\n if (y2Axis?.type === 'log') return getScaleLog(getLinearDomain(y2Axis, 'y2'), [innerHeight, 0]);\n return getScaleLinear(getLinearDomain(y2Axis, 'y2'), [innerHeight, 0]);\n }, [getBandDomain, getLinearDomain, innerHeight, y2Axis]);\n\n const colorScale = scaleOrdinal()\n .domain(groups)\n .range(currentData.map((d) => COLOR_PALLET[d.color] ?? d.color));\n // get only groups bars to calculate the subgroup scale\n\n const subgroupsWithBars = currentData\n .filter(\n (serie) => serie.type === 'bar' && !(stackedSeries?.length && getStackedIndex(stackedSeries, serie.name) > -1),\n )\n .map((serie) => serie.name);\n\n const getBandwidth = useCallback(() => {\n if ((xScale as ScaleBand<string>).bandwidth) return (xScale as ScaleBand<string>).bandwidth();\n if ((yScale as ScaleBand<string>).bandwidth) return (yScale as ScaleBand<string>).bandwidth();\n return innerWidth / xScale.ticks().length / 2;\n }, [innerWidth, xScale, yScale]);\n\n if (stackedSeries?.length) {\n stackedSeries.forEach((_, i) => subgroupsWithBars.push(`stacked-data-${i}`));\n }\n\n const subGroupScale = getBandwidth()\n ? scaleBand()\n .domain(subgroupsWithBars)\n .range([0, getBandwidth() ?? 0])\n .paddingInner(0.55)\n .padding(0.2)\n : null;\n\n return { xScale, y2Scale, yScale, subGroupScale, colorScale, getBandwidth };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable indent */\nimport { useMemo, useCallback } from 'react';\nimport { max, min, scaleLinear, scaleBand, scaleUtc, scaleOrdinal, scaleLog, Series, ScaleBand } from 'd3';\nimport { DSChartT } from '../react-desc-prop-types';\nimport { getStackedIndex } from '../helpers';\nimport { COLOR_PALLET } from '../helpers/colorPallet';\ninterface UseScales {\n props: DSChartT.Props;\n innerHeight: number;\n innerWidth: number;\n stackedData: Series<\n {\n [key: string]: number;\n },\n string\n >[][];\n currentData: {\n key: string;\n group: string;\n type: DSChartT.SerieTypeT;\n scale?: string;\n color: string;\n data: {\n key: string;\n value: number | { x: number; y: number };\n position: number;\n }[];\n }[];\n groups: string[];\n}\nexport const useScales = ({\n props,\n innerHeight,\n innerWidth,\n stackedData,\n currentData,\n groups,\n containerRatio,\n}: UseScales) => {\n const { series, xAxis, yAxis, y2Axis, groups: stackedSeries, types } = props;\n\n const rangeTo = innerWidth * (containerRatio ?? 1);\n const getBandDomain = useCallback((axis: DSChartT.AxisT) => axis.cols ?? [...series[0].data.keys()], [series]);\n\n const getLinearDomain = useCallback(\n (axis?: DSChartT.AxisT, axisString?: string, withStackData = true) => {\n // const data2 = data ? extent(data) : [];\n const begin = axis?.beginAtZero ? 0 : undefined;\n const data = currentData\n .filter((serie) => {\n if (serie.isHidden) return false;\n if (serie.scale === axisString) {\n return true;\n }\n if (!serie.scale && ['y', 'x'].includes(axisString)) {\n return true;\n }\n return false;\n })\n .map(\n (serie) =>\n serie.data\n .filter((datum) => datum.value)\n .map((datum) => {\n if (typeof datum.value === 'number') {\n return datum.value;\n }\n return datum.value[axisString];\n }),\n\n // ? serie.data.map((datum) => datum.value).flat()\n // : serie.data.map((datum) => datum.value.map((coord) => coord[axisString]).flat()),\n );\n\n const stack = withStackData && [\n min(stackedData.flat(), (layer) => min(layer, (sequence) => sequence[1])),\n max(stackedData.flat(), (layer) => max(layer, (sequence) => sequence[1])),\n ];\n const minRange = min([begin, min(data.flat()), stack[0]]);\n const maxRange = max([begin, max(data.flat()), stack[1]]);\n\n // @TODO fix this\n const [leftPadding, rightPadding] =\n typeof axis.domainPadding === 'number'\n ? [axis.domainPadding, axis.domainPadding]\n : axis.domainPadding ?? [0, 0];\n\n if (axis.type === 'time') {\n // @todo padding for time series\n return [minRange, maxRange];\n }\n return [\n minRange - (maxRange - minRange) * (leftPadding ?? 0),\n maxRange + (maxRange - minRange) * (rightPadding ?? 0),\n ];\n },\n [currentData, stackedData],\n );\n\n const getScaleTime = (domain: Date[], range: number[]) => scaleUtc().domain(domain).range(range);\n\n const getScaleBand = (domain: string[], range: number[], padding = 0.2) =>\n scaleBand().domain(domain).range(range).padding(padding).paddingOuter(0.1);\n const getScaleLinear = (domain: number[], range: number[]) => scaleLinear().domain(domain).range(range);\n const getScaleLog = (domain: number[], range: number[]) => scaleLog().domain(domain).range(range);\n\n const xScale = useMemo(() => {\n if (xAxis?.type === 'time') return getScaleTime(getLinearDomain(xAxis, 'x', false), [0, rangeTo]);\n if (xAxis?.type === 'linear' || yAxis?.type === 'band') {\n // @TODO is this really a thing ?\n const withStackData = yAxis?.type === 'band';\n return getScaleLinear(getLinearDomain(xAxis, 'x', withStackData) as number[], [0, rangeTo], xAxis.padding);\n }\n\n return getScaleBand(getBandDomain(xAxis) as string[], [0, rangeTo], xAxis.padding);\n }, [getBandDomain, getLinearDomain, rangeTo, xAxis, yAxis?.type]);\n\n const yScale = useMemo(() => {\n if (yAxis?.type === 'band') return getScaleBand(getBandDomain(yAxis), [innerHeight, 0], yAxis.padding);\n if (yAxis?.type === 'log') return getScaleLog(getLinearDomain(yAxis, 'y'), [innerHeight, 0]);\n return getScaleLinear(getLinearDomain(yAxis, 'y'), [innerHeight, 0]);\n }, [getBandDomain, getLinearDomain, innerHeight, yAxis]);\n\n const y2Scale = useMemo(() => {\n if (!y2Axis) return null;\n if (y2Axis?.type === 'band') return getScaleBand(getBandDomain(y2Axis), [innerHeight, 0], y2Scale.padding);\n if (y2Axis?.type === 'log') return getScaleLog(getLinearDomain(y2Axis, 'y2'), [innerHeight, 0]);\n return getScaleLinear(getLinearDomain(y2Axis, 'y2'), [innerHeight, 0]);\n }, [getBandDomain, getLinearDomain, innerHeight, y2Axis]);\n\n const colorScale = useMemo(\n () =>\n scaleOrdinal()\n .domain(groups)\n .range(currentData.map((d) => COLOR_PALLET[d.color] ?? d.color)),\n [currentData, groups],\n );\n // get only groups bars to calculate the subgroup scale\n\n const subgroupsWithBars = useMemo(\n () =>\n currentData\n .filter(\n (serie) =>\n serie.type === 'bar' &&\n !(stackedSeries?.length && getStackedIndex(stackedSeries, serie.name) > -1) &&\n !serie.isHidden,\n )\n .map((serie) => serie.name),\n [currentData, stackedSeries],\n );\n\n const getBandwidth = useCallback(() => {\n if ((xScale as ScaleBand<string>).bandwidth) return (xScale as ScaleBand<string>).bandwidth();\n if ((yScale as ScaleBand<string>).bandwidth) return (yScale as ScaleBand<string>).bandwidth();\n return innerWidth / xScale.ticks().length / 2;\n }, [innerWidth, xScale, yScale]);\n\n if (stackedSeries?.length) {\n stackedSeries.forEach((_, i) => subgroupsWithBars.push(`stacked-data-${i}`));\n }\n\n const subGroupScale = useMemo(\n () =>\n getBandwidth()\n ? scaleBand()\n .domain(subgroupsWithBars)\n .range([0, getBandwidth() ?? 0])\n .paddingInner(0.55)\n .padding(0.2)\n : null,\n [getBandwidth, subgroupsWithBars],\n );\n\n return { xScale, y2Scale, yScale, subGroupScale, colorScale, getBandwidth };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var helpers_exports = {};
26
26
  __export(helpers_exports, {
27
- getSeriesValuesAt: () => getSeriesValuesAt,
27
+ getFormatGenerator: () => getFormatGenerator,
28
28
  getStackedData: () => getStackedData,
29
29
  getStackedIndex: () => getStackedIndex,
30
30
  stackData: () => stackData
@@ -54,11 +54,11 @@ const stackData = (groupsStacked, series) => {
54
54
  if (!groupsStacked)
55
55
  return [];
56
56
  groupsStacked?.forEach((g) => {
57
- const seriesStacked = series.filter((serie) => g.includes(serie.name));
57
+ const seriesStacked = series.filter((serie) => g.includes(serie.name) && !serie.isHidden);
58
58
  const keys = seriesStacked.map((serie) => serie.name);
59
59
  const stackData2 = [];
60
60
  seriesStacked.forEach((serie) => {
61
- serie.data.forEach((d, i) => {
61
+ serie.originalData.data.forEach((d, i) => {
62
62
  if (typeof stackData2[i] === "object") {
63
63
  stackData2[i][serie.name] = typeof d === "number" ? d : d.y;
64
64
  }
@@ -69,15 +69,11 @@ const stackData = (groupsStacked, series) => {
69
69
  });
70
70
  return aux;
71
71
  };
72
- const getSeriesValuesAt = (data, point) => {
73
- const seriesValuesAtPoint = {};
74
- data.forEach((serie) => {
75
- serie.data.forEach((datum) => {
76
- if (datum.value === point) {
77
- seriesValuesAtPoint[serie.name] = seriesValuesAtPoint[serie.name] ? [...seriesValuesAtPoint[serie.name], point] : [point];
78
- }
79
- });
80
- });
81
- return seriesValuesAtPoint;
72
+ const getFormatGenerator = (type) => {
73
+ if (type === "time")
74
+ return import_d3.timeFormat;
75
+ if (type === "linear")
76
+ return import_d3.format;
77
+ return null;
82
78
  };
83
79
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/graphs/Chart/helpers/index.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { stack } from 'd3';\nimport { values } from 'lodash';\n\nexport const getStackedIndex = (groups: string[][], serie: string) => {\n for (let i = 0; i < groups.length; i += 1) {\n for (let j = 0; j < groups[i].length; j += 1) {\n if (groups[i][j] === serie) return i;\n }\n }\n return -1;\n};\n\nexport const getStackedData = (stackedData, serie) => {\n for (let i = 0; i < stackedData?.length; i += 1) {\n const data = stackedData[i].find((d) => d.key === serie.name);\n if (data) return data;\n }\n return false;\n};\n\nexport const stackData = (groupsStacked, series) => {\n const aux = [];\n if (!groupsStacked) return [];\n groupsStacked?.forEach((g) => {\n const seriesStacked = series.filter((serie) => g.includes(serie.name));\n const keys = seriesStacked.map((serie) => serie.name);\n const stackData: Array<{ [key: string]: number }> = [];\n seriesStacked.forEach((serie) => {\n serie.data.forEach((d, i) => {\n if (typeof stackData[i] === 'object') {\n stackData[i][serie.name] = typeof d === 'number' ? d : d.y;\n }\n stackData[i] = { ...stackData[i], [serie.name]: typeof d === 'number' ? d : d.y };\n });\n });\n\n aux.push(stack().keys(keys)(stackData));\n });\n return aux;\n};\n\nexport const getSeriesValuesAt = (data, point) => {\n const seriesValuesAtPoint = {};\n data.forEach((serie) => {\n serie.data.forEach((datum) => {\n if (datum.value === point) {\n seriesValuesAtPoint[serie.name] = seriesValuesAtPoint[serie.name]\n ? [...seriesValuesAtPoint[serie.name], point]\n : [point];\n }\n });\n });\n return seriesValuesAtPoint;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,gBAAsB;AAGf,MAAM,kBAAkB,CAAC,QAAoB,UAAkB;AACpE,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,aAAS,IAAI,GAAG,IAAI,OAAO,GAAG,QAAQ,KAAK,GAAG;AAC5C,UAAI,OAAO,GAAG,OAAO;AAAO,eAAO;AAAA,IACrC;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,aAAa,UAAU;AACpD,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,UAAM,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,IAAI;AAC5D,QAAI;AAAM,aAAO;AAAA,EACnB;AACA,SAAO;AACT;AAEO,MAAM,YAAY,CAAC,eAAe,WAAW;AAClD,QAAM,MAAM,CAAC;AACb,MAAI,CAAC;AAAe,WAAO,CAAC;AAC5B,iBAAe,QAAQ,CAAC,MAAM;AAC5B,UAAM,gBAAgB,OAAO,OAAO,CAAC,UAAU,EAAE,SAAS,MAAM,IAAI,CAAC;AACrE,UAAM,OAAO,cAAc,IAAI,CAAC,UAAU,MAAM,IAAI;AACpD,UAAMA,aAA8C,CAAC;AACrD,kBAAc,QAAQ,CAAC,UAAU;AAC/B,YAAM,KAAK,QAAQ,CAAC,GAAG,MAAM;AAC3B,YAAI,OAAOA,WAAU,OAAO,UAAU;AACpC,UAAAA,WAAU,GAAG,MAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,EAAE;AAAA,QAC3D;AACA,QAAAA,WAAU,KAAK,EAAE,GAAGA,WAAU,IAAI,CAAC,MAAM,OAAO,OAAO,MAAM,WAAW,IAAI,EAAE,EAAE;AAAA,MAClF,CAAC;AAAA,IACH,CAAC;AAED,QAAI,SAAK,iBAAM,EAAE,KAAK,IAAI,EAAEA,UAAS,CAAC;AAAA,EACxC,CAAC;AACD,SAAO;AACT;AAEO,MAAM,oBAAoB,CAAC,MAAM,UAAU;AAChD,QAAM,sBAAsB,CAAC;AAC7B,OAAK,QAAQ,CAAC,UAAU;AACtB,UAAM,KAAK,QAAQ,CAAC,UAAU;AAC5B,UAAI,MAAM,UAAU,OAAO;AACzB,4BAAoB,MAAM,QAAQ,oBAAoB,MAAM,QACxD,CAAC,GAAG,oBAAoB,MAAM,OAAO,KAAK,IAC1C,CAAC,KAAK;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;",
4
+ "sourcesContent": ["import { stack, timeFormat, format } from 'd3';\nimport { values } from 'lodash';\n\nexport const getStackedIndex = (groups: string[][], serie: string) => {\n for (let i = 0; i < groups.length; i += 1) {\n for (let j = 0; j < groups[i].length; j += 1) {\n if (groups[i][j] === serie) return i;\n }\n }\n return -1;\n};\n\nexport const getStackedData = (stackedData, serie) => {\n for (let i = 0; i < stackedData?.length; i += 1) {\n const data = stackedData[i].find((d) => d.key === serie.name);\n if (data) return data;\n }\n return false;\n};\n\nexport const stackData = (groupsStacked, series) => {\n const aux = [];\n if (!groupsStacked) return [];\n groupsStacked?.forEach((g) => {\n const seriesStacked = series.filter((serie) => g.includes(serie.name) && !serie.isHidden);\n const keys = seriesStacked.map((serie) => serie.name);\n const stackData: Array<{ [key: string]: number }> = [];\n seriesStacked.forEach((serie) => {\n serie.originalData.data.forEach((d, i) => {\n if (typeof stackData[i] === 'object') {\n stackData[i][serie.name] = typeof d === 'number' ? d : d.y;\n }\n stackData[i] = { ...stackData[i], [serie.name]: typeof d === 'number' ? d : d.y };\n });\n });\n\n aux.push(stack().keys(keys)(stackData));\n });\n return aux;\n};\n\nexport const getFormatGenerator = (type: string) => {\n if (type === 'time') return timeFormat;\n if (type === 'linear') return format;\n return null;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,gBAA0C;AAGnC,MAAM,kBAAkB,CAAC,QAAoB,UAAkB;AACpE,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,aAAS,IAAI,GAAG,IAAI,OAAO,GAAG,QAAQ,KAAK,GAAG;AAC5C,UAAI,OAAO,GAAG,OAAO;AAAO,eAAO;AAAA,IACrC;AAAA,EACF;AACA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,aAAa,UAAU;AACpD,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,GAAG;AAC/C,UAAM,OAAO,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,IAAI;AAC5D,QAAI;AAAM,aAAO;AAAA,EACnB;AACA,SAAO;AACT;AAEO,MAAM,YAAY,CAAC,eAAe,WAAW;AAClD,QAAM,MAAM,CAAC;AACb,MAAI,CAAC;AAAe,WAAO,CAAC;AAC5B,iBAAe,QAAQ,CAAC,MAAM;AAC5B,UAAM,gBAAgB,OAAO,OAAO,CAAC,UAAU,EAAE,SAAS,MAAM,IAAI,KAAK,CAAC,MAAM,QAAQ;AACxF,UAAM,OAAO,cAAc,IAAI,CAAC,UAAU,MAAM,IAAI;AACpD,UAAMA,aAA8C,CAAC;AACrD,kBAAc,QAAQ,CAAC,UAAU;AAC/B,YAAM,aAAa,KAAK,QAAQ,CAAC,GAAG,MAAM;AACxC,YAAI,OAAOA,WAAU,OAAO,UAAU;AACpC,UAAAA,WAAU,GAAG,MAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,EAAE;AAAA,QAC3D;AACA,QAAAA,WAAU,KAAK,EAAE,GAAGA,WAAU,IAAI,CAAC,MAAM,OAAO,OAAO,MAAM,WAAW,IAAI,EAAE,EAAE;AAAA,MAClF,CAAC;AAAA,IACH,CAAC;AAED,QAAI,SAAK,iBAAM,EAAE,KAAK,IAAI,EAAEA,UAAS,CAAC;AAAA,EACxC,CAAC;AACD,SAAO;AACT;AAEO,MAAM,qBAAqB,CAAC,SAAiB;AAClD,MAAI,SAAS;AAAQ,WAAO;AAC5B,MAAI,SAAS;AAAU,WAAO;AAC9B,SAAO;AACT;",
6
6
  "names": ["stackData"]
7
7
  }
@@ -49,7 +49,7 @@ const ActivePoint = () => {
49
49
  item = data.find((serie) => serie.key === activeSerie);
50
50
  lastActiveSerie.current = item;
51
51
  } else if (activePoint) {
52
- item = data.find((serie) => serie.data.some((value) => activePoint === value.key));
52
+ item = data.find((serie) => serie.data.some((value) => activePoint?.key === value.key));
53
53
  lastActiveSerie.current = item;
54
54
  } else if (!lastActiveSerie.current) {
55
55
  return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/graphs/Chart/parts/ActivePoint.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { Line, Points, Bars, StackedBar } from '../series';\nimport { getStackedIndex } from '../helpers';\n\nexport const ActivePoint = () => {\n const {\n props: { data, groups },\n activePoint,\n activeSerie,\n } = useContext(ChartContext);\n\n const lastActiveSerie = useRef(null);\n const activeItem = useMemo(() => {\n let item = null;\n if (!activePoint && !activeSerie && lastActiveSerie.current) {\n item = lastActiveSerie.current;\n }\n if (activeSerie) {\n item = data.find((serie) => serie.key === activeSerie);\n lastActiveSerie.current = item;\n } else if (activePoint) {\n item = data.find((serie) => serie.data.some((value) => activePoint === value.key));\n lastActiveSerie.current = item;\n } else if (!lastActiveSerie.current) {\n return;\n }\n\n if (item.type === 'bar' && groups && getStackedIndex(groups, item.name) > -1) {\n return <StackedBar serie={item} />;\n }\n if (item.type === 'bar') {\n return <Bars serie={item} />;\n }\n if (item.type === 'point') {\n return <Points serie={item} />;\n }\n if (item.type === 'line') {\n return <Line serie={item} />;\n }\n }, [activePoint, activeSerie, data, groups]);\n\n return <g className=\"redraw\">{activeItem}</g>;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAGA,mBAAmD;AACnD,0BAA6B;AAC7B,oBAA+C;AAC/C,qBAAgC;AAEzB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM,OAAO;AAAA,IACtB;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,sBAAkB,qBAAO,IAAI;AACnC,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,QAAI,OAAO;AACX,QAAI,CAAC,eAAe,CAAC,eAAe,gBAAgB,SAAS;AAC3D,aAAO,gBAAgB;AAAA,IACzB;AACA,QAAI,aAAa;AACf,aAAO,KAAK,KAAK,CAAC,UAAU,MAAM,QAAQ,WAAW;AACrD,sBAAgB,UAAU;AAAA,IAC5B,WAAW,aAAa;AACtB,aAAO,KAAK,KAAK,CAAC,UAAU,MAAM,KAAK,KAAK,CAAC,UAAU,gBAAgB,MAAM,GAAG,CAAC;AACjF,sBAAgB,UAAU;AAAA,IAC5B,WAAW,CAAC,gBAAgB,SAAS;AACnC;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,SAAS,cAAU,gCAAgB,QAAQ,KAAK,IAAI,IAAI,IAAI;AAC5E,aAAO,4CAAC;AAAA,QAAW,OAAO;AAAA,OAAM;AAAA,IAClC;AACA,QAAI,KAAK,SAAS,OAAO;AACvB,aAAO,4CAAC;AAAA,QAAK,OAAO;AAAA,OAAM;AAAA,IAC5B;AACA,QAAI,KAAK,SAAS,SAAS;AACzB,aAAO,4CAAC;AAAA,QAAO,OAAO;AAAA,OAAM;AAAA,IAC9B;AACA,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO,4CAAC;AAAA,QAAK,OAAO;AAAA,OAAM;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,aAAa,aAAa,MAAM,MAAM,CAAC;AAE3C,SAAO,4CAAC;AAAA,IAAE,WAAU;AAAA,IAAU;AAAA,GAAW;AAC3C;",
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { Line, Points, Bars, StackedBar } from '../series';\nimport { getStackedIndex } from '../helpers';\n\nexport const ActivePoint = () => {\n const {\n props: { data, groups },\n activePoint,\n activeSerie,\n } = useContext(ChartContext);\n\n const lastActiveSerie = useRef(null);\n const activeItem = useMemo(() => {\n let item = null;\n if (!activePoint && !activeSerie && lastActiveSerie.current) {\n item = lastActiveSerie.current;\n }\n if (activeSerie) {\n item = data.find((serie) => serie.key === activeSerie);\n lastActiveSerie.current = item;\n } else if (activePoint) {\n item = data.find((serie) => serie.data.some((value) => activePoint?.key === value.key));\n lastActiveSerie.current = item;\n } else if (!lastActiveSerie.current) {\n return;\n }\n\n if (item.type === 'bar' && groups && getStackedIndex(groups, item.name) > -1) {\n return <StackedBar serie={item} />;\n }\n if (item.type === 'bar') {\n return <Bars serie={item} />;\n }\n if (item.type === 'point') {\n return <Points serie={item} />;\n }\n if (item.type === 'line') {\n return <Line serie={item} />;\n }\n }, [activePoint, activeSerie, data, groups]);\n\n return <g className=\"redraw\">{activeItem}</g>;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAGA,mBAAmD;AACnD,0BAA6B;AAC7B,oBAA+C;AAC/C,qBAAgC;AAEzB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM,OAAO;AAAA,IACtB;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,sBAAkB,qBAAO,IAAI;AACnC,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,QAAI,OAAO;AACX,QAAI,CAAC,eAAe,CAAC,eAAe,gBAAgB,SAAS;AAC3D,aAAO,gBAAgB;AAAA,IACzB;AACA,QAAI,aAAa;AACf,aAAO,KAAK,KAAK,CAAC,UAAU,MAAM,QAAQ,WAAW;AACrD,sBAAgB,UAAU;AAAA,IAC5B,WAAW,aAAa;AACtB,aAAO,KAAK,KAAK,CAAC,UAAU,MAAM,KAAK,KAAK,CAAC,UAAU,aAAa,QAAQ,MAAM,GAAG,CAAC;AACtF,sBAAgB,UAAU;AAAA,IAC5B,WAAW,CAAC,gBAAgB,SAAS;AACnC;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,SAAS,cAAU,gCAAgB,QAAQ,KAAK,IAAI,IAAI,IAAI;AAC5E,aAAO,4CAAC;AAAA,QAAW,OAAO;AAAA,OAAM;AAAA,IAClC;AACA,QAAI,KAAK,SAAS,OAAO;AACvB,aAAO,4CAAC;AAAA,QAAK,OAAO;AAAA,OAAM;AAAA,IAC5B;AACA,QAAI,KAAK,SAAS,SAAS;AACzB,aAAO,4CAAC;AAAA,QAAO,OAAO;AAAA,OAAM;AAAA,IAC9B;AACA,QAAI,KAAK,SAAS,QAAQ;AACxB,aAAO,4CAAC;AAAA,QAAK,OAAO;AAAA,OAAM;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,aAAa,aAAa,MAAM,MAAM,CAAC;AAE3C,SAAO,4CAAC;AAAA,IAAE,WAAU;AAAA,IAAU;AAAA,GAAW;AAC3C;",
6
6
  "names": []
7
7
  }
@@ -29,28 +29,31 @@ __export(AxisBottom_exports, {
29
29
  module.exports = __toCommonJS(AxisBottom_exports);
30
30
  var React = __toESM(require("react"));
31
31
  var import_jsx_runtime = require("react/jsx-runtime");
32
- var import_react = require("react");
32
+ var import_react = __toESM(require("react"));
33
33
  var import_d3 = require("d3");
34
34
  var import_styles = require("../../styles");
35
35
  var import_ChartContext = require("../../ChartContext");
36
- const AxisBottom = () => {
36
+ const AxisBottom = import_react.default.memo(() => {
37
37
  const {
38
- props: { xAxis, xAxisLabelOffset = 50 },
38
+ props: { xAxis, width },
39
39
  innerHeight,
40
- innerWidth,
41
40
  xScale,
42
- setAxisBottomHeight,
43
- tickOffset = 3
41
+ setAxisBottomRef
44
42
  } = (0, import_react.useContext)(import_ChartContext.ChartContext);
43
+ if (xAxis.hideAxis)
44
+ return null;
45
45
  const axisRef = (0, import_react.useRef)();
46
46
  const gridRef = (0, import_react.useRef)();
47
- const ticks = xScale.ticks?.();
47
+ const ticks = xScale.ticks?.(xAxis.tickCount ?? width / 100);
48
48
  (0, import_react.useEffect)(() => {
49
49
  const grid = (0, import_d3.axisBottom)(xScale).tickSize(xAxis?.showGrid ? -innerHeight : 0).tickFormat("").tickSizeOuter(0);
50
- const axis = (0, import_d3.axisBottom)(xScale);
50
+ const axis = (0, import_d3.axisBottom)(xScale).tickSizeOuter(0);
51
51
  if (xAxis.tickValues && ticks) {
52
52
  const finalTicks = xAxis.overwriteTicks ? xAxis.tickValues : [...ticks, ...xAxis.tickValues];
53
53
  axis.tickValues(finalTicks);
54
+ } else {
55
+ axis.tickValues(ticks);
56
+ grid.tickValues(ticks);
54
57
  }
55
58
  if (xAxis.tickFormat) {
56
59
  if (typeof xAxis.tickFormat === "string") {
@@ -67,27 +70,16 @@ const AxisBottom = () => {
67
70
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
68
71
  transform: `translate(0,${innerHeight})`,
69
72
  children: [
70
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
71
- ref: setAxisBottomHeight,
72
- children: [
73
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
74
- transform: `translate(${innerWidth / 2},${axisRef.current?.getBoundingClientRect().height - 20})`,
75
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxisLabel, {
76
- className: "axis-label",
77
- textAnchor: "middle",
78
- dy: 50,
79
- children: xAxis?.label
80
- })
81
- }),
82
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
83
- ref: axisRef
84
- })
85
- ]
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
74
+ ref: setAxisBottomRef,
75
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
76
+ ref: axisRef
77
+ })
86
78
  }),
87
79
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, {
88
80
  ref: gridRef
89
81
  })
90
82
  ]
91
83
  });
92
- };
84
+ });
93
85
  //# sourceMappingURL=AxisBottom.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/graphs/Chart/parts/Axis/AxisBottom.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useContext, useEffect, useRef } from 'react';\nimport { select, axisBottom, timeFormat } from 'd3';\nimport { StyledAxis, StyledGrid, StyledAxisLabel } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\n\nexport const AxisBottom = () => {\n const {\n props: { xAxis, xAxisLabelOffset = 50 },\n innerHeight,\n innerWidth,\n xScale,\n setAxisBottomHeight,\n tickOffset = 3,\n } = useContext(ChartContext);\n\n const axisRef = useRef();\n const gridRef = useRef();\n const ticks = xScale.ticks?.();\n useEffect(() => {\n const grid = axisBottom(xScale)\n .tickSize(xAxis?.showGrid ? -innerHeight : 0)\n .tickFormat('')\n .tickSizeOuter(0);\n\n const axis = axisBottom(xScale);\n\n if (xAxis.tickValues && ticks) {\n const finalTicks = xAxis.overwriteTicks ? xAxis.tickValues : [...ticks, ...xAxis.tickValues];\n axis.tickValues(finalTicks);\n }\n\n if (xAxis.tickFormat) {\n if (typeof xAxis.tickFormat === 'string') {\n const formatGenerator = timeFormat(xAxis.tickFormat);\n axis.tickFormat((d) => formatGenerator(d));\n }\n if (typeof xAxis.tickFormat === 'function') {\n axis.tickFormat(xAxis.tickFormat);\n }\n }\n\n select(gridRef.current).call(grid);\n select(axisRef.current).call(axis);\n }, [innerHeight, ticks, xAxis.overwriteTicks, xAxis?.showGrid, xAxis.tickFormat, xAxis.tickValues, xScale]);\n\n return (\n <g transform={`translate(0,${innerHeight})`}>\n <g ref={setAxisBottomHeight}>\n <g transform={`translate(${innerWidth / 2},${axisRef.current?.getBoundingClientRect().height - 20 ?? 0})`}>\n <StyledAxisLabel className=\"axis-label\" textAnchor=\"middle\" dy={50}>\n {xAxis?.label}\n </StyledAxisLabel>\n </g>\n <StyledAxis ref={axisRef}></StyledAxis>\n </g>\n\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAqD;AACrD,gBAA+C;AAC/C,oBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,mBAAmB,GAAG;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,EACf,QAAI,yBAAW,gCAAY;AAE3B,QAAM,cAAU,qBAAO;AACvB,QAAM,cAAU,qBAAO;AACvB,QAAM,QAAQ,OAAO,QAAQ;AAC7B,8BAAU,MAAM;AACd,UAAM,WAAO,sBAAW,MAAM,EAC3B,SAAS,OAAO,WAAW,CAAC,cAAc,CAAC,EAC3C,WAAW,EAAE,EACb,cAAc,CAAC;AAElB,UAAM,WAAO,sBAAW,MAAM;AAE9B,QAAI,MAAM,cAAc,OAAO;AAC7B,YAAM,aAAa,MAAM,iBAAiB,MAAM,aAAa,CAAC,GAAG,OAAO,GAAG,MAAM,UAAU;AAC3F,WAAK,WAAW,UAAU;AAAA,IAC5B;AAEA,QAAI,MAAM,YAAY;AACpB,UAAI,OAAO,MAAM,eAAe,UAAU;AACxC,cAAM,sBAAkB,sBAAW,MAAM,UAAU;AACnD,aAAK,WAAW,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC3C;AACA,UAAI,OAAO,MAAM,eAAe,YAAY;AAC1C,aAAK,WAAW,MAAM,UAAU;AAAA,MAClC;AAAA,IACF;AAEA,0BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,0BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AAAA,EACnC,GAAG,CAAC,aAAa,OAAO,MAAM,gBAAgB,OAAO,UAAU,MAAM,YAAY,MAAM,YAAY,MAAM,CAAC;AAE1G,SACE,6CAAC;AAAA,IAAE,WAAW,eAAe;AAAA,IAC3B;AAAA,mDAAC;AAAA,QAAE,KAAK;AAAA,QACN;AAAA,sDAAC;AAAA,YAAE,WAAW,aAAa,aAAa,KAAK,QAAQ,SAAS,sBAAsB,EAAE,SAAS;AAAA,YAC7F,sDAAC;AAAA,cAAgB,WAAU;AAAA,cAAa,YAAW;AAAA,cAAS,IAAI;AAAA,cAC7D,iBAAO;AAAA,aACV;AAAA,WACF;AAAA,UACA,4CAAC;AAAA,YAAW,KAAK;AAAA,WAAS;AAAA;AAAA,OAC5B;AAAA,MAEA,4CAAC;AAAA,QAAW,KAAK;AAAA,OAAS;AAAA;AAAA,GAC5B;AAEJ;",
6
- "names": []
4
+ "sourcesContent": ["import React, { useContext, useMemo, useEffect, useRef } from 'react';\nimport { select, axisBottom, timeFormat } from 'd3';\nimport { StyledAxis, StyledGrid, StyledAxisLabel } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\n\nexport const AxisBottom = React.memo(() => {\n const {\n props: { xAxis, width },\n innerHeight,\n xScale,\n setAxisBottomRef,\n } = useContext(ChartContext);\n if (xAxis.hideAxis) return null;\n const axisRef = useRef();\n const gridRef = useRef();\n const ticks = xScale.ticks?.(xAxis.tickCount ?? width / 100);\n\n useEffect(() => {\n const grid = axisBottom(xScale)\n .tickSize(xAxis?.showGrid ? -innerHeight : 0)\n .tickFormat('')\n .tickSizeOuter(0);\n\n const axis = axisBottom(xScale).tickSizeOuter(0);\n\n if (xAxis.tickValues && ticks) {\n const finalTicks = xAxis.overwriteTicks ? xAxis.tickValues : [...ticks, ...xAxis.tickValues];\n axis.tickValues(finalTicks);\n } else {\n axis.tickValues(ticks);\n grid.tickValues(ticks);\n }\n\n if (xAxis.tickFormat) {\n if (typeof xAxis.tickFormat === 'string') {\n const formatGenerator = timeFormat(xAxis.tickFormat);\n axis.tickFormat((d) => formatGenerator(d));\n }\n if (typeof xAxis.tickFormat === 'function') {\n axis.tickFormat(xAxis.tickFormat);\n }\n }\n\n select(gridRef.current).call(grid);\n select(axisRef.current).call(axis);\n }, [innerHeight, ticks, xAxis.overwriteTicks, xAxis?.showGrid, xAxis.tickFormat, xAxis.tickValues, xScale]);\n\n return (\n <g transform={`translate(0,${innerHeight})`}>\n <g ref={setAxisBottomRef}>\n <StyledAxis ref={axisRef}></StyledAxis>\n </g>\n\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n );\n});\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAA8D;AAC9D,gBAA+C;AAC/C,oBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,aAAAA,QAAM,KAAK,MAAM;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,MAAM;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAC3B,MAAI,MAAM;AAAU,WAAO;AAC3B,QAAM,cAAU,qBAAO;AACvB,QAAM,cAAU,qBAAO;AACvB,QAAM,QAAQ,OAAO,QAAQ,MAAM,aAAa,QAAQ,GAAG;AAE3D,8BAAU,MAAM;AACd,UAAM,WAAO,sBAAW,MAAM,EAC3B,SAAS,OAAO,WAAW,CAAC,cAAc,CAAC,EAC3C,WAAW,EAAE,EACb,cAAc,CAAC;AAElB,UAAM,WAAO,sBAAW,MAAM,EAAE,cAAc,CAAC;AAE/C,QAAI,MAAM,cAAc,OAAO;AAC7B,YAAM,aAAa,MAAM,iBAAiB,MAAM,aAAa,CAAC,GAAG,OAAO,GAAG,MAAM,UAAU;AAC3F,WAAK,WAAW,UAAU;AAAA,IAC5B,OAAO;AACL,WAAK,WAAW,KAAK;AACrB,WAAK,WAAW,KAAK;AAAA,IACvB;AAEA,QAAI,MAAM,YAAY;AACpB,UAAI,OAAO,MAAM,eAAe,UAAU;AACxC,cAAM,sBAAkB,sBAAW,MAAM,UAAU;AACnD,aAAK,WAAW,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC3C;AACA,UAAI,OAAO,MAAM,eAAe,YAAY;AAC1C,aAAK,WAAW,MAAM,UAAU;AAAA,MAClC;AAAA,IACF;AAEA,0BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,0BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AAAA,EACnC,GAAG,CAAC,aAAa,OAAO,MAAM,gBAAgB,OAAO,UAAU,MAAM,YAAY,MAAM,YAAY,MAAM,CAAC;AAE1G,SACE,6CAAC;AAAA,IAAE,WAAW,eAAe;AAAA,IAC3B;AAAA,kDAAC;AAAA,QAAE,KAAK;AAAA,QACN,sDAAC;AAAA,UAAW,KAAK;AAAA,SAAS;AAAA,OAC5B;AAAA,MAEA,4CAAC;AAAA,QAAW,KAAK;AAAA,OAAS;AAAA;AAAA,GAC5B;AAEJ,CAAC;",
6
+ "names": ["React"]
7
7
  }
@@ -33,60 +33,55 @@ var import_react = require("react");
33
33
  var import_d3 = require("d3");
34
34
  var import_styles = require("../../styles");
35
35
  var import_ChartContext = require("../../ChartContext");
36
+ var import_helpers = require("../../helpers");
36
37
  const AxisLeft = () => {
37
38
  const {
38
- props: { yAxis, yAxisLabelOffset = 45, yAxisLabel },
39
+ props: { yAxis, height },
39
40
  innerHeight,
40
41
  innerWidth,
41
42
  yScale,
42
- internalMargin,
43
- setAxisLeftWidth
43
+ setAxisLeftRef
44
44
  } = (0, import_react.useContext)(import_ChartContext.ChartContext);
45
+ if (yAxis.hideAxis)
46
+ return null;
45
47
  const ref = (0, import_react.useRef)();
46
48
  const gridRef = (0, import_react.useRef)();
47
- const ticks = yScale.ticks?.();
49
+ const ticks = yScale.ticks?.(yAxis.tickCount ?? height / 80);
50
+ const hasNegativeDomain = yScale(innerHeight) < 0;
51
+ const { tickFormat, type } = yAxis;
48
52
  (0, import_react.useEffect)(() => {
49
- const axis = (0, import_d3.axisLeft)(yScale);
53
+ const axis = (0, import_d3.axisLeft)(yScale).tickSizeOuter(0);
54
+ const grid = (0, import_d3.axisLeft)(yScale).tickFormat((_) => "").tickSize(yAxis?.showGrid ? -innerWidth : 0).tickSizeOuter(0);
50
55
  if (yAxis.tickValues && ticks) {
51
56
  const finalTicks = yAxis.overwriteTicks ? yAxis.tickValues : [...ticks, ...yAxis.tickValues];
52
57
  axis.tickValues(finalTicks);
58
+ } else {
59
+ axis.tickValues(ticks);
60
+ grid.tickValues(ticks);
53
61
  }
54
- if (yAxis.tickFormat) {
55
- axis.tickFormat(yAxis.tickFormat);
62
+ if (tickFormat) {
63
+ if (typeof tickFormat === "string") {
64
+ const formatGenerator = (0, import_helpers.getFormatGenerator)(type ?? "linear");
65
+ axis.tickFormat((d) => formatGenerator(tickFormat)(d));
66
+ }
67
+ if (typeof tickFormat === "function") {
68
+ axis.tickFormat(tickFormat);
69
+ }
56
70
  }
57
- const grid = (0, import_d3.axisLeft)(yScale).tickFormat("").tickSize(yAxis?.showGrid ? -innerWidth : 0).tickSizeOuter(0);
58
- (0, import_d3.select)(ref.current).call(axis);
59
- (0, import_d3.select)(gridRef.current).call(grid);
60
- }, [
61
- innerHeight,
62
- innerWidth,
63
- ticks,
64
- yAxis.overwriteTicks,
65
- yAxis?.showGrid,
66
- yAxis.tickFormat,
67
- yAxis.tickValues,
68
- yScale
69
- ]);
71
+ if (ref?.current && gridRef?.current) {
72
+ (0, import_d3.select)(gridRef.current).call(grid);
73
+ (0, import_d3.select)(ref.current).call(axis);
74
+ }
75
+ }, [hasNegativeDomain, innerHeight, innerWidth, tickFormat, ticks, type, yAxis, yScale]);
70
76
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
71
77
  children: [
72
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
73
- ref: setAxisLeftWidth,
74
- children: [
75
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
76
- transform: `translate(${-ref.current?.getBoundingClientRect().width},${innerHeight / 2 + 10}) rotate(-90)`,
77
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxisLabel, {
78
- className: "axis-label",
79
- textAnchor: "middle",
80
- dy: -15,
81
- children: yAxis?.label
82
- })
83
- }),
84
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
85
- ref,
86
- color: yAxis.color,
87
- className: "axis-left"
88
- })
89
- ]
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
79
+ ref: setAxisLeftRef,
80
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
81
+ ref,
82
+ color: yAxis.color,
83
+ className: "axis-left"
84
+ })
90
85
  }),
91
86
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, {
92
87
  ref: gridRef
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/graphs/Chart/parts/Axis/AxisLeft.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useContext, useCallback, useEffect, useRef } from 'react';\nimport { select, axisLeft } from 'd3';\nimport { StyledAxis, StyledGrid, StyledAxisLabel } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\nexport const AxisLeft = () => {\n const {\n props: { yAxis, yAxisLabelOffset = 45, yAxisLabel },\n innerHeight,\n innerWidth,\n yScale,\n internalMargin,\n setAxisLeftWidth,\n } = useContext(ChartContext);\n\n const ref = useRef();\n const gridRef = useRef();\n const ticks = yScale.ticks?.();\n\n useEffect(() => {\n const axis = axisLeft(yScale);\n\n if (yAxis.tickValues && ticks) {\n const finalTicks = yAxis.overwriteTicks ? yAxis.tickValues : [...ticks, ...yAxis.tickValues];\n axis.tickValues(finalTicks);\n }\n\n if (yAxis.tickFormat) {\n axis.tickFormat(yAxis.tickFormat);\n }\n\n const grid = axisLeft(yScale)\n .tickFormat('')\n .tickSize(yAxis?.showGrid ? -innerWidth : 0)\n .tickSizeOuter(0);\n\n select(ref.current).call(axis);\n\n select(gridRef.current).call(grid);\n }, [\n innerHeight,\n innerWidth,\n ticks,\n yAxis.overwriteTicks,\n yAxis?.showGrid,\n yAxis.tickFormat,\n yAxis.tickValues,\n yScale,\n ]);\n return (\n <g>\n <g ref={setAxisLeftWidth}>\n <g\n transform={`translate(${-ref.current?.getBoundingClientRect().width ?? 0},${\n innerHeight / 2 + 10\n }) rotate(-90)`}\n >\n <StyledAxisLabel className=\"axis-label\" textAnchor=\"middle\" dy={-15}>\n {yAxis?.label}\n </StyledAxisLabel>\n </g>\n <StyledAxis ref={ref} color={yAxis.color} className=\"axis-left\"></StyledAxis>\n </g>\n\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAkE;AAClE,gBAAiC;AACjC,oBAAwD;AACxD,0BAA6B;AACtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,mBAAmB,IAAI,WAAW;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAO;AACnB,QAAM,cAAU,qBAAO;AACvB,QAAM,QAAQ,OAAO,QAAQ;AAE7B,8BAAU,MAAM;AACd,UAAM,WAAO,oBAAS,MAAM;AAE5B,QAAI,MAAM,cAAc,OAAO;AAC7B,YAAM,aAAa,MAAM,iBAAiB,MAAM,aAAa,CAAC,GAAG,OAAO,GAAG,MAAM,UAAU;AAC3F,WAAK,WAAW,UAAU;AAAA,IAC5B;AAEA,QAAI,MAAM,YAAY;AACpB,WAAK,WAAW,MAAM,UAAU;AAAA,IAClC;AAEA,UAAM,WAAO,oBAAS,MAAM,EACzB,WAAW,EAAE,EACb,SAAS,OAAO,WAAW,CAAC,aAAa,CAAC,EAC1C,cAAc,CAAC;AAElB,0BAAO,IAAI,OAAO,EAAE,KAAK,IAAI;AAE7B,0BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AAAA,EACnC,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACF,CAAC;AACD,SACE,6CAAC;AAAA,IACC;AAAA,mDAAC;AAAA,QAAE,KAAK;AAAA,QACN;AAAA,sDAAC;AAAA,YACC,WAAW,aAAa,CAAC,IAAI,SAAS,sBAAsB,EAAE,SAC5D,cAAc,IAAI;AAAA,YAGpB,sDAAC;AAAA,cAAgB,WAAU;AAAA,cAAa,YAAW;AAAA,cAAS,IAAI;AAAA,cAC7D,iBAAO;AAAA,aACV;AAAA,WACF;AAAA,UACA,4CAAC;AAAA,YAAW;AAAA,YAAU,OAAO,MAAM;AAAA,YAAO,WAAU;AAAA,WAAY;AAAA;AAAA,OAClE;AAAA,MAEA,4CAAC;AAAA,QAAW,KAAK;AAAA,OAAS;AAAA;AAAA,GAC5B;AAEJ;",
4
+ "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useContext, useEffect, useRef } from 'react';\nimport { select, axisLeft } from 'd3';\nimport { StyledAxis, StyledGrid } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\nimport { getFormatGenerator } from '../../helpers';\nexport const AxisLeft = () => {\n const {\n props: { yAxis, height },\n innerHeight,\n innerWidth,\n yScale,\n setAxisLeftRef,\n } = useContext(ChartContext);\n if (yAxis.hideAxis) return null;\n\n const ref = useRef<SVGSVGElement>();\n const gridRef = useRef<SVGSVGElement>();\n const ticks = yScale.ticks?.(yAxis.tickCount ?? height / 80);\n const hasNegativeDomain = yScale(innerHeight) < 0;\n const { tickFormat, type } = yAxis;\n useEffect(() => {\n const axis = axisLeft(yScale).tickSizeOuter(0);\n\n const grid = axisLeft(yScale)\n .tickFormat((_) => '')\n .tickSize(yAxis?.showGrid ? -innerWidth : 0)\n .tickSizeOuter(0);\n\n if (yAxis.tickValues && ticks) {\n const finalTicks = yAxis.overwriteTicks ? yAxis.tickValues : [...ticks, ...yAxis.tickValues];\n axis.tickValues(finalTicks);\n } else {\n axis.tickValues(ticks);\n grid.tickValues(ticks);\n }\n\n if (tickFormat) {\n if (typeof tickFormat === 'string') {\n const formatGenerator = getFormatGenerator(type ?? 'linear');\n\n axis.tickFormat((d) => formatGenerator(tickFormat)(d));\n }\n if (typeof tickFormat === 'function') {\n axis.tickFormat(tickFormat);\n }\n }\n\n if (ref?.current && gridRef?.current) {\n select(gridRef.current).call(grid);\n select(ref.current).call(axis);\n\n // if (yAxis.hideAxis) {\n // select(ref.current).call((g) => {\n // g.selectAll('.tick').remove();\n // g.select('.domain').remove();\n // });\n // select(gridRef.current).call((g) => g.select('.domain').remove());\n // }\n }\n }, [hasNegativeDomain, innerHeight, innerWidth, tickFormat, ticks, type, yAxis, yScale]);\n return (\n <g>\n <g ref={setAxisLeftRef}>\n <StyledAxis ref={ref} color={yAxis.color} className=\"axis-left\"></StyledAxis>\n </g>\n\n <StyledGrid ref={gridRef}></StyledGrid>\n {/* {hasNegativeDomain ? (\n <line stroke=\"black\" strokeWidth={2} x1={0} x2={innerWidth} y1={yScale(0)} y2={yScale(0)} />\n ) : null} */}\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAEA,mBAAqD;AACrD,gBAAiC;AACjC,oBAAuC;AACvC,0BAA6B;AAC7B,qBAAmC;AAC5B,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAC3B,MAAI,MAAM;AAAU,WAAO;AAE3B,QAAM,UAAM,qBAAsB;AAClC,QAAM,cAAU,qBAAsB;AACtC,QAAM,QAAQ,OAAO,QAAQ,MAAM,aAAa,SAAS,EAAE;AAC3D,QAAM,oBAAoB,OAAO,WAAW,IAAI;AAChD,QAAM,EAAE,YAAY,KAAK,IAAI;AAC7B,8BAAU,MAAM;AACd,UAAM,WAAO,oBAAS,MAAM,EAAE,cAAc,CAAC;AAE7C,UAAM,WAAO,oBAAS,MAAM,EACzB,WAAW,CAAC,MAAM,EAAE,EACpB,SAAS,OAAO,WAAW,CAAC,aAAa,CAAC,EAC1C,cAAc,CAAC;AAElB,QAAI,MAAM,cAAc,OAAO;AAC7B,YAAM,aAAa,MAAM,iBAAiB,MAAM,aAAa,CAAC,GAAG,OAAO,GAAG,MAAM,UAAU;AAC3F,WAAK,WAAW,UAAU;AAAA,IAC5B,OAAO;AACL,WAAK,WAAW,KAAK;AACrB,WAAK,WAAW,KAAK;AAAA,IACvB;AAEA,QAAI,YAAY;AACd,UAAI,OAAO,eAAe,UAAU;AAClC,cAAM,sBAAkB,mCAAmB,QAAQ,QAAQ;AAE3D,aAAK,WAAW,CAAC,MAAM,gBAAgB,UAAU,EAAE,CAAC,CAAC;AAAA,MACvD;AACA,UAAI,OAAO,eAAe,YAAY;AACpC,aAAK,WAAW,UAAU;AAAA,MAC5B;AAAA,IACF;AAEA,QAAI,KAAK,WAAW,SAAS,SAAS;AACpC,4BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,4BAAO,IAAI,OAAO,EAAE,KAAK,IAAI;AAAA,IAS/B;AAAA,EACF,GAAG,CAAC,mBAAmB,aAAa,YAAY,YAAY,OAAO,MAAM,OAAO,MAAM,CAAC;AACvF,SACE,6CAAC;AAAA,IACC;AAAA,kDAAC;AAAA,QAAE,KAAK;AAAA,QACN,sDAAC;AAAA,UAAW;AAAA,UAAU,OAAO,MAAM;AAAA,UAAO,WAAU;AAAA,SAAY;AAAA,OAClE;AAAA,MAEA,4CAAC;AAAA,QAAW,KAAK;AAAA,OAAS;AAAA;AAAA,GAI5B;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -35,31 +35,26 @@ var import_styles = require("../../styles");
35
35
  var import_ChartContext = require("../../ChartContext");
36
36
  const AxisRight = () => {
37
37
  const {
38
- props: { y2Axis, yAxisLabelOffset = 45, y2AxisLabel },
39
- innerHeight,
38
+ props: { y2Axis, height },
40
39
  innerWidth,
41
40
  y2Scale,
42
- setAxisRightWidth
41
+ setAxisRightRef
43
42
  } = (0, import_react.useContext)(import_ChartContext.ChartContext);
44
43
  if (!y2Axis)
45
44
  return null;
45
+ const ticks = y2Scale.ticks?.(y2Axis.tickCount ?? height / 80);
46
46
  const ref = (0, import_react.useRef)();
47
47
  (0, import_react.useEffect)(() => {
48
48
  const axis = (0, import_d3.axisRight)(y2Scale).tickSizeOuter(0);
49
49
  (0, import_d3.select)(ref.current).call(axis);
50
50
  }, [innerWidth, y2Scale]);
51
51
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
52
- ref: setAxisRightWidth,
52
+ ref: setAxisRightRef,
53
53
  transform: `translate(${innerWidth},0)`,
54
54
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
55
55
  ref,
56
- color: y2Axis.color,
57
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", {
58
- className: "axis-label",
59
- textAnchor: "middle",
60
- transform: `translate(${-yAxisLabelOffset},${innerHeight / 2}) rotate(-90)`
61
- })
56
+ color: y2Axis.color
62
57
  })
63
- });
58
+ }, ticks.toString());
64
59
  };
65
60
  //# sourceMappingURL=AxisRight.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/graphs/Chart/parts/Axis/AxisRight.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useContext, useEffect, useRef } from 'react';\nimport { select, axisRight } from 'd3';\nimport { StyledAxis } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\n\nexport const AxisRight = () => {\n const {\n props: { y2Axis, yAxisLabelOffset = 45, y2AxisLabel },\n innerHeight,\n innerWidth,\n y2Scale,\n setAxisRightWidth,\n } = useContext(ChartContext);\n\n if (!y2Axis) return null;\n const ref = useRef();\n useEffect(() => {\n const axis = axisRight(y2Scale).tickSizeOuter(0);\n\n select(ref.current).call(axis);\n }, [innerWidth, y2Scale]);\n return (\n <g ref={setAxisRightWidth} transform={`translate(${innerWidth},0)`}>\n <StyledAxis ref={ref} color={y2Axis.color}>\n <text\n className=\"axis-label\"\n textAnchor=\"middle\"\n transform={`translate(${-yAxisLabelOffset},${innerHeight / 2}) rotate(-90)`}\n >\n {/* {y2Axis?.label} */}\n </text>\n </StyledAxis>\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAqD;AACrD,gBAAkC;AAClC,oBAA2B;AAC3B,0BAA6B;AAEtB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ,mBAAmB,IAAI,YAAY;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,MAAI,CAAC;AAAQ,WAAO;AACpB,QAAM,UAAM,qBAAO;AACnB,8BAAU,MAAM;AACd,UAAM,WAAO,qBAAU,OAAO,EAAE,cAAc,CAAC;AAE/C,0BAAO,IAAI,OAAO,EAAE,KAAK,IAAI;AAAA,EAC/B,GAAG,CAAC,YAAY,OAAO,CAAC;AACxB,SACE,4CAAC;AAAA,IAAE,KAAK;AAAA,IAAmB,WAAW,aAAa;AAAA,IACjD,sDAAC;AAAA,MAAW;AAAA,MAAU,OAAO,OAAO;AAAA,MAClC,sDAAC;AAAA,QACC,WAAU;AAAA,QACV,YAAW;AAAA,QACX,WAAW,aAAa,CAAC,oBAAoB,cAAc;AAAA,OAG7D;AAAA,KACF;AAAA,GACF;AAEJ;",
4
+ "sourcesContent": ["import React, { useContext, useEffect, useMemo, useRef } from 'react';\nimport { select, axisRight } from 'd3';\nimport { StyledAxis, StyledAxisLabel } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\nexport const AxisRight = () => {\n const {\n props: { y2Axis, height },\n innerWidth,\n y2Scale,\n setAxisRightRef,\n } = useContext(ChartContext);\n if (!y2Axis) return null;\n\n const ticks = y2Scale.ticks?.(y2Axis.tickCount ?? height / 80);\n\n const ref = useRef();\n useEffect(() => {\n const axis = axisRight(y2Scale).tickSizeOuter(0);\n\n select(ref.current).call(axis);\n }, [innerWidth, y2Scale]);\n\n return (\n <g key={ticks.toString()} ref={setAxisRightRef} transform={`translate(${innerWidth},0)`}>\n <StyledAxis ref={ref} color={y2Axis.color} />\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAA8D;AAC9D,gBAAkC;AAClC,oBAA4C;AAC5C,0BAA6B;AACtB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ,OAAO;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAC3B,MAAI,CAAC;AAAQ,WAAO;AAEpB,QAAM,QAAQ,QAAQ,QAAQ,OAAO,aAAa,SAAS,EAAE;AAE7D,QAAM,UAAM,qBAAO;AACnB,8BAAU,MAAM;AACd,UAAM,WAAO,qBAAU,OAAO,EAAE,cAAc,CAAC;AAE/C,0BAAO,IAAI,OAAO,EAAE,KAAK,IAAI;AAAA,EAC/B,GAAG,CAAC,YAAY,OAAO,CAAC;AAExB,SACE,4CAAC;AAAA,IAAyB,KAAK;AAAA,IAAiB,WAAW,aAAa;AAAA,IACtE,sDAAC;AAAA,MAAW;AAAA,MAAU,OAAO,OAAO;AAAA,KAAO;AAAA,KADrC,MAAM,SAAS,CAEvB;AAEJ;",
6
6
  "names": []
7
7
  }