@elliemae/ds-dataviz 3.12.0-rc.2 → 3.12.0-rc.20

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 (157) hide show
  1. package/dist/cjs/graphs/Chart/Chart.js +1 -4
  2. package/dist/cjs/graphs/Chart/Chart.js.map +1 -1
  3. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js +9 -10
  4. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
  5. package/dist/cjs/graphs/Chart/config/useScales.js +6 -3
  6. package/dist/cjs/graphs/Chart/config/useScales.js.map +2 -2
  7. package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js +4 -16
  8. package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js.map +1 -1
  9. package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js +4 -19
  10. package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js.map +1 -1
  11. package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js +48 -14
  12. package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
  13. package/dist/cjs/graphs/Chart/parts/ChartContainer.js +50 -65
  14. package/dist/cjs/graphs/Chart/parts/ChartContainer.js.map +2 -2
  15. package/dist/cjs/graphs/Chart/parts/ClipPaths.js +1 -16
  16. package/dist/cjs/graphs/Chart/parts/ClipPaths.js.map +1 -1
  17. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js +4 -21
  18. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js.map +2 -2
  19. package/dist/cjs/graphs/Chart/parts/Labels/BottomLabel.js +8 -9
  20. package/dist/cjs/graphs/Chart/parts/Labels/BottomLabel.js.map +1 -1
  21. package/dist/cjs/graphs/Chart/parts/Labels/Label.js +5 -7
  22. package/dist/cjs/graphs/Chart/parts/Labels/Label.js.map +1 -1
  23. package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js +8 -10
  24. package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js.map +1 -1
  25. package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js +11 -20
  26. package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js.map +1 -1
  27. package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js +6 -8
  28. package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js.map +1 -1
  29. package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js +1 -11
  30. package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js.map +1 -1
  31. package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js +24 -49
  32. package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js.map +1 -1
  33. package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js +11 -21
  34. package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js.map +1 -1
  35. package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js +4 -17
  36. package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js.map +1 -1
  37. package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js +5 -10
  38. package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js.map +1 -1
  39. package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js +49 -47
  40. package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +1 -1
  41. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js +6 -5
  42. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +1 -1
  43. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +38 -40
  44. package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +1 -1
  45. package/dist/cjs/graphs/Chart/parts/Scroller/BlurMask.js +18 -74
  46. package/dist/cjs/graphs/Chart/parts/Scroller/BlurMask.js.map +1 -1
  47. package/dist/cjs/graphs/Chart/parts/Scroller/Controllers.js +25 -25
  48. package/dist/cjs/graphs/Chart/parts/Scroller/Controllers.js.map +1 -1
  49. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarX.js +22 -25
  50. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarX.js.map +1 -1
  51. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarY.js +31 -25
  52. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarY.js.map +1 -1
  53. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js +29 -29
  54. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +1 -1
  55. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerY.js +8 -17
  56. package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerY.js.map +1 -1
  57. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js +28 -45
  58. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js.map +1 -1
  59. package/dist/cjs/graphs/Chart/parts/TrendHighlight.js +11 -8
  60. package/dist/cjs/graphs/Chart/parts/TrendHighlight.js.map +1 -1
  61. package/dist/cjs/graphs/Chart/series/Area.js +5 -21
  62. package/dist/cjs/graphs/Chart/series/Area.js.map +1 -1
  63. package/dist/cjs/graphs/Chart/series/Bars.js +22 -27
  64. package/dist/cjs/graphs/Chart/series/Bars.js.map +1 -1
  65. package/dist/cjs/graphs/Chart/series/HorizontalBars.js +22 -26
  66. package/dist/cjs/graphs/Chart/series/HorizontalBars.js.map +1 -1
  67. package/dist/cjs/graphs/Chart/series/HorizontalStackedBars.js +22 -28
  68. package/dist/cjs/graphs/Chart/series/HorizontalStackedBars.js.map +1 -1
  69. package/dist/cjs/graphs/Chart/series/Line.js +4 -12
  70. package/dist/cjs/graphs/Chart/series/Line.js.map +1 -1
  71. package/dist/cjs/graphs/Chart/series/Point.js +51 -60
  72. package/dist/cjs/graphs/Chart/series/Point.js.map +1 -1
  73. package/dist/cjs/graphs/Chart/series/Points.js +15 -14
  74. package/dist/cjs/graphs/Chart/series/Points.js.map +1 -1
  75. package/dist/cjs/graphs/Chart/series/Rect.js +35 -54
  76. package/dist/cjs/graphs/Chart/series/Rect.js.map +1 -1
  77. package/dist/cjs/graphs/Chart/series/StackedBar.js +23 -27
  78. package/dist/cjs/graphs/Chart/series/StackedBar.js.map +1 -1
  79. package/dist/esm/graphs/Chart/Chart.js +1 -4
  80. package/dist/esm/graphs/Chart/Chart.js.map +1 -1
  81. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js +9 -10
  82. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
  83. package/dist/esm/graphs/Chart/config/useScales.js +6 -3
  84. package/dist/esm/graphs/Chart/config/useScales.js.map +2 -2
  85. package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js +4 -16
  86. package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js.map +1 -1
  87. package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js +4 -19
  88. package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js.map +1 -1
  89. package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js +50 -16
  90. package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
  91. package/dist/esm/graphs/Chart/parts/ChartContainer.js +50 -65
  92. package/dist/esm/graphs/Chart/parts/ChartContainer.js.map +2 -2
  93. package/dist/esm/graphs/Chart/parts/ClipPaths.js +1 -16
  94. package/dist/esm/graphs/Chart/parts/ClipPaths.js.map +1 -1
  95. package/dist/esm/graphs/Chart/parts/FocusableRegion.js +4 -21
  96. package/dist/esm/graphs/Chart/parts/FocusableRegion.js.map +2 -2
  97. package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js +8 -9
  98. package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js.map +1 -1
  99. package/dist/esm/graphs/Chart/parts/Labels/Label.js +5 -7
  100. package/dist/esm/graphs/Chart/parts/Labels/Label.js.map +1 -1
  101. package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js +8 -10
  102. package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js.map +1 -1
  103. package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js +11 -20
  104. package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js.map +1 -1
  105. package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js +6 -8
  106. package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js.map +1 -1
  107. package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js +1 -11
  108. package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js.map +1 -1
  109. package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js +24 -49
  110. package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js.map +1 -1
  111. package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js +11 -21
  112. package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js.map +1 -1
  113. package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js +4 -17
  114. package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js.map +1 -1
  115. package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js +5 -10
  116. package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js.map +1 -1
  117. package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js +49 -47
  118. package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +1 -1
  119. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js +6 -5
  120. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +1 -1
  121. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +38 -40
  122. package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +1 -1
  123. package/dist/esm/graphs/Chart/parts/Scroller/BlurMask.js +18 -74
  124. package/dist/esm/graphs/Chart/parts/Scroller/BlurMask.js.map +1 -1
  125. package/dist/esm/graphs/Chart/parts/Scroller/Controllers.js +25 -25
  126. package/dist/esm/graphs/Chart/parts/Scroller/Controllers.js.map +1 -1
  127. package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarX.js +22 -25
  128. package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarX.js.map +1 -1
  129. package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarY.js +31 -25
  130. package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarY.js.map +1 -1
  131. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js +29 -29
  132. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +1 -1
  133. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerY.js +8 -17
  134. package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerY.js.map +1 -1
  135. package/dist/esm/graphs/Chart/parts/SeriesFactory.js +28 -45
  136. package/dist/esm/graphs/Chart/parts/SeriesFactory.js.map +1 -1
  137. package/dist/esm/graphs/Chart/parts/TrendHighlight.js +11 -8
  138. package/dist/esm/graphs/Chart/parts/TrendHighlight.js.map +1 -1
  139. package/dist/esm/graphs/Chart/series/Area.js +5 -21
  140. package/dist/esm/graphs/Chart/series/Area.js.map +1 -1
  141. package/dist/esm/graphs/Chart/series/Bars.js +22 -27
  142. package/dist/esm/graphs/Chart/series/Bars.js.map +1 -1
  143. package/dist/esm/graphs/Chart/series/HorizontalBars.js +22 -26
  144. package/dist/esm/graphs/Chart/series/HorizontalBars.js.map +1 -1
  145. package/dist/esm/graphs/Chart/series/HorizontalStackedBars.js +22 -28
  146. package/dist/esm/graphs/Chart/series/HorizontalStackedBars.js.map +1 -1
  147. package/dist/esm/graphs/Chart/series/Line.js +4 -12
  148. package/dist/esm/graphs/Chart/series/Line.js.map +1 -1
  149. package/dist/esm/graphs/Chart/series/Point.js +51 -60
  150. package/dist/esm/graphs/Chart/series/Point.js.map +1 -1
  151. package/dist/esm/graphs/Chart/series/Points.js +15 -14
  152. package/dist/esm/graphs/Chart/series/Points.js.map +1 -1
  153. package/dist/esm/graphs/Chart/series/Rect.js +35 -54
  154. package/dist/esm/graphs/Chart/series/Rect.js.map +1 -1
  155. package/dist/esm/graphs/Chart/series/StackedBar.js +23 -27
  156. package/dist/esm/graphs/Chart/series/StackedBar.js.map +1 -1
  157. package/package.json +5 -5
@@ -34,9 +34,6 @@ var import_ChartContext = require("./ChartContext");
34
34
  var import_useChart = require("./config/useChart");
35
35
  const Chart = (props) => {
36
36
  const ctx = (0, import_useChart.useChart)(props);
37
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ChartContext.ChartContext.Provider, {
38
- value: ctx,
39
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ChartContainer.ChartContainer, {})
40
- });
37
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ChartContext.ChartContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ChartContainer.ChartContainer, {}) });
41
38
  };
42
39
  //# sourceMappingURL=Chart.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/graphs/Chart/Chart.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["import React from 'react';\nimport { ChartContainer } from './parts/ChartContainer';\nimport { ChartContext } from './ChartContext';\nimport { useChart } from './config/useChart';\nimport type { DSChartT } from './react-desc-prop-types';\nexport const Chart: React.ComponentType<DSChartT.Props> = (props) => {\n const ctx = useChart(props);\n return (\n <ChartContext.Provider value={ctx}>\n <ChartContainer />\n </ChartContext.Provider>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADSjB;AARN,4BAA+B;AAC/B,0BAA6B;AAC7B,sBAAyB;AAElB,MAAM,QAA6C,CAAC,UAAU;AACnE,QAAM,UAAM,0BAAS,KAAK;AAC1B,SACE,4CAAC,iCAAa,UAAb;AAAA,IAAsB,OAAO;AAAA,IAC5B,sDAAC,wCAAe;AAAA,GAClB;AAEJ;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADSjB;AARN,4BAA+B;AAC/B,0BAA6B;AAC7B,sBAAyB;AAElB,MAAM,QAA6C,CAAC,UAAU;AACnE,QAAM,UAAM,0BAAS,KAAK;AAC1B,SACE,4CAAC,iCAAa,UAAb,EAAsB,OAAO,KAC5B,sDAAC,wCAAe,GAClB;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -31,7 +31,6 @@ module.exports = __toCommonJS(useKeyboardNavigation_exports);
31
31
  var React = __toESM(require("react"));
32
32
  var import_react = require("react");
33
33
  var import_ChartContext = require("../ChartContext");
34
- var import_constants = require("../../constants");
35
34
  const findInCircularList = (list, from, step = 1) => {
36
35
  for (let i = (from + step + list.length) % list.length; i !== from && from > -1; i = (i + step + list.length) % list.length) {
37
36
  if (list[i])
@@ -55,10 +54,10 @@ const useKeyboardNavigation = () => {
55
54
  getYScaleValue,
56
55
  groups,
57
56
  currentData: data,
58
- props: { xAxis, yAxis }
57
+ props: { xAxis, yAxis, xScroll, yScroll }
59
58
  } = (0, import_react.useContext)(import_ChartContext.ChartContext);
60
- const xScroll = xAxis.advanced?.pointSpacing?.value > 1;
61
- const yScroll = yAxis.advanced?.pointSpacing?.value > 1;
59
+ const xScrollable = xAxis.advanced?.pointSpacing?.value > 1 || xScroll;
60
+ const yScrollable = yAxis.advanced?.pointSpacing?.value > 1 || yScroll;
62
61
  const currentSerie = (0, import_react.useMemo)(
63
62
  () => data.find((d) => d.name === activePoint?.serie) ?? data[0],
64
63
  [activePoint?.serie, data]
@@ -91,7 +90,7 @@ const useKeyboardNavigation = () => {
91
90
  step
92
91
  );
93
92
  setActivePoint(currentSerie?.data[newValue]);
94
- if (xScroll) {
93
+ if (xScrollable) {
95
94
  const xValue = getXScaleValue(currentSerie?.data[newValue]);
96
95
  if (xValue === void 0)
97
96
  return;
@@ -107,9 +106,9 @@ const useKeyboardNavigation = () => {
107
106
  return nextPosition;
108
107
  });
109
108
  else if (xValue < xScrollbarPosition * containerRatio)
110
- setXScrollbarPosition(xValue / containerRatio - import_constants.FOCUS_RING.STROKE_WIDTH);
109
+ setXScrollbarPosition(xValue / containerRatio);
111
110
  }
112
- if (yScroll) {
111
+ if (yScrollable) {
113
112
  const yValue = getYScaleValue(currentSerie?.data[newValue]);
114
113
  if (yValue === void 0)
115
114
  return;
@@ -125,15 +124,15 @@ const useKeyboardNavigation = () => {
125
124
  return nextPosition;
126
125
  });
127
126
  else if (yValue < xScrollbarPosition * containerRatio)
128
- setXScrollbarPosition(yValue / containerRatio - import_constants.FOCUS_RING.STROKE_WIDTH);
127
+ setXScrollbarPosition(yValue / containerRatio);
129
128
  }
130
129
  },
131
130
  [
132
131
  currentSerie?.data,
133
132
  currentActiveItemIndex,
134
133
  setActivePoint,
135
- xScroll,
136
- yScroll,
134
+ xScrollable,
135
+ yScrollable,
137
136
  getXScaleValue,
138
137
  innerWidth,
139
138
  containerRatio,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/graphs/Chart/config/useKeyboardNavigation.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable max-depth */\n/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { useCallback, useContext, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { FOCUS_RING } from '../../constants';\nexport const findInCircularList = (\n list: string[],\n from: number,\n step = 1,\n // eslint-disable-next-line max-params\n): number => {\n for (\n let i = (from + step + list.length) % list.length;\n i !== from && from > -1;\n i = (i + step + list.length) % list.length\n ) {\n if (list[i]) return i;\n }\n return from; // return same item\n};\n\nexport const useKeyboardNavigation = () => {\n const {\n activePoint,\n setActivePoint,\n containerRef,\n yScale,\n setXScrollbarPosition,\n containerRatio,\n xScrollbarPosition,\n innerWidth,\n innerHeight,\n getYValue,\n getXScaleValue,\n getYScaleValue,\n groups,\n currentData: data,\n props: { xAxis, yAxis },\n } = useContext(ChartContext);\n\n const xScroll = xAxis.advanced?.pointSpacing?.value > 1;\n const yScroll = yAxis.advanced?.pointSpacing?.value > 1;\n\n const currentSerie = useMemo(\n () => data.find((d) => d.name === activePoint?.serie) ?? data[0],\n [activePoint?.serie, data],\n );\n\n const currentActiveItemIndex = useMemo(\n () => currentSerie?.data.findIndex((opt) => opt.key === activePoint?.key),\n [activePoint, currentSerie],\n );\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n if (containerRef === e.target) {\n setActivePoint(currentSerie?.data[0]);\n setXScrollbarPosition(0);\n }\n },\n [containerRef, currentSerie?.data, setActivePoint, setXScrollbarPosition],\n );\n\n const handleOnBlur: React.FocusEventHandler<HTMLInputElement> = useCallback(() => {\n setTimeout(() => {\n if (!containerRef.contains(document.activeElement) || containerRef === document.activeElement) {\n setActivePoint(null);\n }\n });\n }, [containerRef, setActivePoint]);\n\n const navigateSerie = useCallback(\n (step: number) => {\n const newValue = findInCircularList(\n currentSerie?.data.map((d) => d.value.toString()),\n currentActiveItemIndex,\n step,\n );\n setActivePoint(currentSerie?.data[newValue]);\n if (xScroll) {\n const xValue = getXScaleValue(currentSerie?.data[newValue]);\n if (xValue === undefined) return;\n const barWidth = innerWidth / containerRatio;\n const total = innerWidth * containerRatio;\n if (total <= xValue) {\n // to go from the first to last\n setXScrollbarPosition((total - innerWidth) / containerRatio);\n } else if (xValue > xScrollbarPosition * containerRatio + innerWidth)\n // if is not visible we move the scroll to the next best position\n setXScrollbarPosition((prev) => {\n const nextPosition = prev + (xValue / containerRatio - prev);\n if (nextPosition + barWidth > innerWidth) return innerWidth - barWidth;\n return nextPosition;\n });\n // move backwards - 2 because focus ring in bars\n else if (xValue < xScrollbarPosition * containerRatio)\n setXScrollbarPosition(xValue / containerRatio - FOCUS_RING.STROKE_WIDTH);\n }\n if (yScroll) {\n const yValue = getYScaleValue(currentSerie?.data[newValue]);\n if (yValue === undefined) return;\n const barWidth = innerHeight / containerRatio;\n const total = innerHeight * containerRatio;\n if (total <= yValue) {\n // to go from the first to last\n setXScrollbarPosition((total - innerHeight) / containerRatio);\n } else if (yValue > xScrollbarPosition * containerRatio + innerHeight)\n // if is not visible we move the scroll to the next best position\n setXScrollbarPosition((prev) => {\n const nextPosition = prev + (yValue / containerRatio - prev);\n if (nextPosition + barWidth > innerHeight) return innerHeight - barWidth;\n return nextPosition;\n });\n // move backwards - 2 because focus ring in bars\n else if (yValue < xScrollbarPosition * containerRatio)\n setXScrollbarPosition(yValue / containerRatio - FOCUS_RING.STROKE_WIDTH);\n }\n },\n [\n currentSerie?.data,\n currentActiveItemIndex,\n setActivePoint,\n xScroll,\n yScroll,\n getXScaleValue,\n innerWidth,\n containerRatio,\n xScrollbarPosition,\n setXScrollbarPosition,\n getYScaleValue,\n innerHeight,\n ],\n );\n\n const changeSerie = useCallback(\n (step: number) => {\n const nextSerie = data.find((d) => {\n const nextSerieIndex = findInCircularList(\n groups,\n groups.findIndex((item) => item === currentSerie.name),\n step,\n );\n\n return d.name === groups[nextSerieIndex];\n });\n setActivePoint(nextSerie?.data[currentActiveItemIndex] || nextSerie?.data?.[0] || null);\n },\n [data, setActivePoint, currentActiveItemIndex, groups, currentSerie.name],\n );\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n if (e.code !== 'Tab') {\n e.preventDefault();\n }\n if (['ArrowLeft', 'ArrowRight'].includes(e.code)) {\n if (yScale.bandwidth) changeSerie(e.code === 'ArrowLeft' ? -1 : 1);\n else navigateSerie(e.code === 'ArrowLeft' ? -1 : 1);\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n if (yScale.bandwidth) navigateSerie(e.code === 'ArrowDown' ? 1 : -1);\n else changeSerie(e.code === 'ArrowDown' ? -1 : 1);\n }\n },\n [changeSerie, navigateSerie, yScale.bandwidth],\n );\n\n return useMemo(\n () => ({ onInputKeyDown, handleOnBlur, handleOnFocus }),\n [handleOnBlur, handleOnFocus, onInputKeyDown],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable max-depth */\n/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport { useCallback, useContext, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { FOCUS_RING } from '../../constants';\nexport const findInCircularList = (\n list: string[],\n from: number,\n step = 1,\n // eslint-disable-next-line max-params\n): number => {\n for (\n let i = (from + step + list.length) % list.length;\n i !== from && from > -1;\n i = (i + step + list.length) % list.length\n ) {\n if (list[i]) return i;\n }\n return from; // return same item\n};\n\nexport const useKeyboardNavigation = () => {\n const {\n activePoint,\n setActivePoint,\n containerRef,\n yScale,\n setXScrollbarPosition,\n containerRatio,\n xScrollbarPosition,\n innerWidth,\n innerHeight,\n getYValue,\n getXScaleValue,\n getYScaleValue,\n groups,\n currentData: data,\n props: { xAxis, yAxis, xScroll, yScroll },\n } = useContext(ChartContext);\n\n const xScrollable = xAxis.advanced?.pointSpacing?.value > 1 || xScroll;\n const yScrollable = yAxis.advanced?.pointSpacing?.value > 1 || yScroll;\n\n const currentSerie = useMemo(\n () => data.find((d) => d.name === activePoint?.serie) ?? data[0],\n [activePoint?.serie, data],\n );\n\n const currentActiveItemIndex = useMemo(\n () => currentSerie?.data.findIndex((opt) => opt.key === activePoint?.key),\n [activePoint, currentSerie],\n );\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n if (containerRef === e.target) {\n setActivePoint(currentSerie?.data[0]);\n setXScrollbarPosition(0);\n }\n },\n [containerRef, currentSerie?.data, setActivePoint, setXScrollbarPosition],\n );\n\n const handleOnBlur: React.FocusEventHandler<HTMLInputElement> = useCallback(() => {\n setTimeout(() => {\n if (!containerRef.contains(document.activeElement) || containerRef === document.activeElement) {\n setActivePoint(null);\n }\n });\n }, [containerRef, setActivePoint]);\n\n const navigateSerie = useCallback(\n (step: number) => {\n const newValue = findInCircularList(\n currentSerie?.data.map((d) => d.value.toString()),\n currentActiveItemIndex,\n step,\n );\n setActivePoint(currentSerie?.data[newValue]);\n\n if (xScrollable) {\n const xValue = getXScaleValue(currentSerie?.data[newValue]);\n if (xValue === undefined) return;\n const barWidth = innerWidth / containerRatio;\n const total = innerWidth * containerRatio;\n if (total <= xValue) {\n // to go from the first to last\n setXScrollbarPosition((total - innerWidth) / containerRatio);\n } else if (xValue > xScrollbarPosition * containerRatio + innerWidth)\n // if is not visible we move the scroll to the next best position\n setXScrollbarPosition((prev) => {\n const nextPosition = prev + (xValue / containerRatio - prev);\n if (nextPosition + barWidth > innerWidth) return innerWidth - barWidth;\n return nextPosition;\n });\n // move backwards - 2 because focus ring in bars\n else if (xValue < xScrollbarPosition * containerRatio) setXScrollbarPosition(xValue / containerRatio);\n }\n if (yScrollable) {\n const yValue = getYScaleValue(currentSerie?.data[newValue]);\n if (yValue === undefined) return;\n const barWidth = innerHeight / containerRatio;\n const total = innerHeight * containerRatio;\n if (total <= yValue) {\n // to go from the first to last\n setXScrollbarPosition((total - innerHeight) / containerRatio);\n } else if (yValue > xScrollbarPosition * containerRatio + innerHeight)\n // if is not visible we move the scroll to the next best position\n setXScrollbarPosition((prev) => {\n const nextPosition = prev + (yValue / containerRatio - prev);\n if (nextPosition + barWidth > innerHeight) return innerHeight - barWidth;\n return nextPosition;\n });\n // move backwards - 2 because focus ring in bars\n else if (yValue < xScrollbarPosition * containerRatio) setXScrollbarPosition(yValue / containerRatio);\n }\n },\n [\n currentSerie?.data,\n currentActiveItemIndex,\n setActivePoint,\n xScrollable,\n yScrollable,\n getXScaleValue,\n innerWidth,\n containerRatio,\n xScrollbarPosition,\n setXScrollbarPosition,\n getYScaleValue,\n innerHeight,\n ],\n );\n\n const changeSerie = useCallback(\n (step: number) => {\n const nextSerie = data.find((d) => {\n const nextSerieIndex = findInCircularList(\n groups,\n groups.findIndex((item) => item === currentSerie.name),\n step,\n );\n\n return d.name === groups[nextSerieIndex];\n });\n setActivePoint(nextSerie?.data[currentActiveItemIndex] || nextSerie?.data?.[0] || null);\n },\n [data, setActivePoint, currentActiveItemIndex, groups, currentSerie.name],\n );\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n if (e.code !== 'Tab') {\n e.preventDefault();\n }\n if (['ArrowLeft', 'ArrowRight'].includes(e.code)) {\n if (yScale.bandwidth) changeSerie(e.code === 'ArrowLeft' ? -1 : 1);\n else navigateSerie(e.code === 'ArrowLeft' ? -1 : 1);\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n if (yScale.bandwidth) navigateSerie(e.code === 'ArrowDown' ? 1 : -1);\n else changeSerie(e.code === 'ArrowDown' ? -1 : 1);\n }\n },\n [changeSerie, navigateSerie, yScale.bandwidth],\n );\n\n return useMemo(\n () => ({ onInputKeyDown, handleOnBlur, handleOnFocus }),\n [handleOnBlur, handleOnFocus, onInputKeyDown],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -43,7 +43,8 @@ const useScales = ({ props, innerHeight, innerWidth, stackedData, currentData, c
43
43
  );
44
44
  const getLinearDomain = (0, import_react.useCallback)(
45
45
  (axis, axisString) => {
46
- const begin = axis?.beginAtZero ? 0 : void 0;
46
+ const begin = axis?.beginAtZero ? 0 : axis.min ?? void 0;
47
+ const end = axis.max ?? void 0;
47
48
  const data = currentData.filter((serie) => {
48
49
  if (serie.scale === axisString) {
49
50
  return true;
@@ -69,7 +70,7 @@ const useScales = ({ props, innerHeight, innerWidth, stackedData, currentData, c
69
70
  const types = ["number", "object"];
70
71
  const getMin = () => {
71
72
  const aux = [];
72
- if (typeof begin === "number")
73
+ if (typeof begin === "number" || typeof begin === "object")
73
74
  aux.push(begin);
74
75
  if (types.includes(typeof minData))
75
76
  aux.push(minData);
@@ -79,8 +80,10 @@ const useScales = ({ props, innerHeight, innerWidth, stackedData, currentData, c
79
80
  };
80
81
  const getMax = () => {
81
82
  const aux = [];
82
- if (typeof begin === "number")
83
+ if (typeof begin === "number" || typeof begin === "object")
83
84
  aux.push(begin);
85
+ if (typeof end === "number" || typeof end === "object")
86
+ aux.push(end);
84
87
  if (types.includes(typeof maxData))
85
88
  aux.push(maxData);
86
89
  if (typeof maxStackedData === "number")
@@ -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 complexity */\n/* eslint-disable max-statements */\n/* eslint-disable indent */\nimport { useMemo, useCallback } from 'react';\nimport type { ScaleLinear, Series, ScaleBand } from 'd3';\nimport { max, min, scaleLinear, scaleBand, scaleUtc, scaleOrdinal, scaleLog } from 'd3';\nimport type { 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: DSChartT.InternalData;\n groups: string[];\n containerRatio: number;\n}\nexport const useScales = ({ props, innerHeight, innerWidth, stackedData, currentData, containerRatio }: UseScales) => {\n const { series, xAxis, yAxis, y2Axis, groups: stackedSeries, xScroll } = props;\n\n // const xScroll = xAxis.advanced?.pointSpacing?.value > 1;\n const yScroll = yAxis.advanced?.pointSpacing?.value > 1;\n\n const rangeToWidth = innerWidth * (xScroll ? containerRatio : 1);\n const rangeToHeight = innerHeight * (yScroll ? containerRatio : 1);\n\n const getBandDomain = useCallback(\n (axis: DSChartT.AxisT) => axis.cols ?? [...series[0].data.map((_, i) => i.toString())],\n [series],\n );\n\n const getLinearDomain = useCallback(\n (axis: DSChartT.AxisT, axisString: 'x' | 'y' | 'y2') => {\n // we are calculating the min and max between all the data\n // including the stacked groups if exists\n\n const begin = axis?.beginAtZero ? 0 : undefined;\n const data = currentData\n .filter((serie) => {\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((serie) =>\n serie.data\n .filter((datum) => datum.value !== null)\n .map((datum) => {\n if (typeof datum.value === 'number') {\n return datum.value;\n }\n\n return datum.value[axisString === 'y2' ? 'y' : axisString];\n }),\n );\n const dataFlattened = data.flat();\n const stackedDataFlatten = stackedData.flat();\n const minStackedData = min(stackedDataFlatten, (layer) => min(layer, (sequence) => sequence[0]));\n const maxStackedData = max(stackedDataFlatten, (layer) => max(layer, (sequence) => sequence[1]));\n const minData = min(dataFlattened);\n const maxData = max(dataFlattened);\n const types = ['number', 'object'];\n\n const getMin = () => {\n const aux = [];\n if (typeof begin === 'number') aux.push(begin);\n if (types.includes(typeof minData)) aux.push(minData);\n if (typeof minStackedData === 'number') aux.push(minStackedData);\n return min(aux);\n };\n const getMax = () => {\n const aux = [];\n if (typeof begin === 'number') aux.push(begin);\n if (types.includes(typeof maxData)) aux.push(maxData);\n if (typeof maxStackedData === 'number') aux.push(maxStackedData);\n return max(aux);\n };\n const minRange = getMin();\n const maxRange = getMax();\n\n if (types.includes(typeof minRange) && types.includes(typeof maxRange)) {\n if (typeof minRange === 'number' && typeof maxRange === 'number') {\n // @TODO fix this domain padding\n const [leftPadding, rightPadding] =\n typeof axis.domainPadding === 'number'\n ? [axis.domainPadding, axis.domainPadding]\n : axis.domainPadding ?? [0, 0];\n\n return [\n minRange - (maxRange - minRange) * (leftPadding ?? 0),\n maxRange + (maxRange - minRange) * (rightPadding ?? 0),\n ];\n }\n // timelinear case\n if (typeof minRange === 'object' && typeof maxRange === 'object') return [minRange, maxRange];\n }\n return [];\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.05);\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'), [0, rangeToWidth]);\n if (xAxis?.type === 'linear' || yAxis?.type === 'band') {\n return getScaleLinear(getLinearDomain(xAxis, 'x'), [0, rangeToWidth]);\n }\n\n return getScaleBand(getBandDomain(xAxis), [0, rangeToWidth]);\n }, [getBandDomain, getLinearDomain, rangeToWidth, xAxis, yAxis?.type]);\n\n const yScale = useMemo(() => {\n if (yAxis?.type === 'band') return getScaleBand(getBandDomain(yAxis), [0, rangeToHeight]);\n if (yAxis?.type === 'log') return getScaleLog(getLinearDomain(yAxis, 'y'), [rangeToHeight, 0]);\n return getScaleLinear(getLinearDomain(yAxis, 'y'), [rangeToHeight, 0]);\n }, [getBandDomain, getLinearDomain, rangeToHeight, yAxis]);\n\n const y2Scale = useMemo(() => {\n if (!y2Axis) return null;\n if (y2Axis?.type === 'band') return getScaleBand(getBandDomain(y2Axis), [0, innerHeight]);\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(series.map((d) => d.name))\n .range(series.map((d) => COLOR_PALLET[d.color as keyof typeof COLOR_PALLET] ?? d.color))\n .unknown('red'),\n [series],\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' && !(stackedSeries?.length && getStackedIndex(stackedSeries, serie.name) > -1),\n )\n .map((serie) => serie.name),\n [currentData, stackedSeries],\n );\n\n const getBandwidth = useCallback(() => {\n if ((xAxis.type === undefined || xAxis.type === 'band') && yAxis.type !== 'band') {\n return (xScale as ScaleBand<string>).bandwidth();\n }\n if (yAxis.type === 'band') {\n return (yScale as ScaleBand<string>).bandwidth();\n }\n // @todo explore this. is to create bars with a linear\n return innerWidth / (xScale as ScaleLinear<number, number, never>).ticks().length / 2;\n }, [innerWidth, xAxis.type, xScale, yAxis.type, 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 .paddingOuter(0.01)\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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",
4
+ "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable max-statements */\n/* eslint-disable indent */\nimport { useMemo, useCallback } from 'react';\nimport type { ScaleLinear, Series, ScaleBand } from 'd3';\nimport { max, min, scaleLinear, scaleBand, scaleUtc, scaleOrdinal, scaleLog } from 'd3';\nimport type { 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: DSChartT.InternalData;\n groups: string[];\n containerRatio: number;\n}\nexport const useScales = ({ props, innerHeight, innerWidth, stackedData, currentData, containerRatio }: UseScales) => {\n const { series, xAxis, yAxis, y2Axis, groups: stackedSeries, xScroll } = props;\n\n // const xScroll = xAxis.advanced?.pointSpacing?.value > 1;\n const yScroll = yAxis.advanced?.pointSpacing?.value > 1;\n\n const rangeToWidth = innerWidth * (xScroll ? containerRatio : 1);\n const rangeToHeight = innerHeight * (yScroll ? containerRatio : 1);\n\n const getBandDomain = useCallback(\n (axis: DSChartT.AxisT) => axis.cols ?? [...series[0].data.map((_, i) => i.toString())],\n [series],\n );\n\n const getLinearDomain = useCallback(\n (axis: DSChartT.AxisT, axisString: 'x' | 'y' | 'y2') => {\n // we are calculating the min and max between all the data\n // including the stacked groups if exists\n\n const begin = axis?.beginAtZero ? 0 : axis.min ?? undefined;\n const end = axis.max ?? undefined;\n const data = currentData\n .filter((serie) => {\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((serie) =>\n serie.data\n .filter((datum) => datum.value !== null)\n .map((datum) => {\n if (typeof datum.value === 'number') {\n return datum.value;\n }\n\n return datum.value[axisString === 'y2' ? 'y' : axisString];\n }),\n );\n const dataFlattened = data.flat();\n const stackedDataFlatten = stackedData.flat();\n const minStackedData = min(stackedDataFlatten, (layer) => min(layer, (sequence) => sequence[0]));\n const maxStackedData = max(stackedDataFlatten, (layer) => max(layer, (sequence) => sequence[1]));\n const minData = min(dataFlattened);\n const maxData = max(dataFlattened);\n const types = ['number', 'object'];\n\n const getMin = () => {\n const aux = [];\n if (typeof begin === 'number' || typeof begin === 'object') aux.push(begin);\n if (types.includes(typeof minData)) aux.push(minData);\n if (typeof minStackedData === 'number') aux.push(minStackedData);\n return min(aux);\n };\n const getMax = () => {\n const aux = [];\n if (typeof begin === 'number' || typeof begin === 'object') aux.push(begin);\n if (typeof end === 'number' || typeof end === 'object') aux.push(end);\n if (types.includes(typeof maxData)) aux.push(maxData);\n if (typeof maxStackedData === 'number') aux.push(maxStackedData);\n return max(aux);\n };\n const minRange = getMin();\n const maxRange = getMax();\n\n if (types.includes(typeof minRange) && types.includes(typeof maxRange)) {\n if (typeof minRange === 'number' && typeof maxRange === 'number') {\n // @TODO fix this domain padding\n const [leftPadding, rightPadding] =\n typeof axis.domainPadding === 'number'\n ? [axis.domainPadding, axis.domainPadding]\n : axis.domainPadding ?? [0, 0];\n\n return [\n minRange - (maxRange - minRange) * (leftPadding ?? 0),\n maxRange + (maxRange - minRange) * (rightPadding ?? 0),\n ];\n }\n // timelinear case\n if (typeof minRange === 'object' && typeof maxRange === 'object') return [minRange, maxRange];\n }\n return [];\n },\n [currentData, stackedData],\n );\n\n // d3 scale functions\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.05);\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 // dataviz scales\n\n const xScale = useMemo(() => {\n if (xAxis?.type === 'time') return getScaleTime(getLinearDomain(xAxis, 'x'), [0, rangeToWidth]);\n if (xAxis?.type === 'linear' || yAxis?.type === 'band') {\n return getScaleLinear(getLinearDomain(xAxis, 'x'), [0, rangeToWidth]);\n }\n\n return getScaleBand(getBandDomain(xAxis), [0, rangeToWidth]);\n }, [getBandDomain, getLinearDomain, rangeToWidth, xAxis, yAxis?.type]);\n\n const yScale = useMemo(() => {\n if (yAxis?.type === 'band') return getScaleBand(getBandDomain(yAxis), [0, rangeToHeight]);\n if (yAxis?.type === 'log') return getScaleLog(getLinearDomain(yAxis, 'y'), [rangeToHeight, 0]);\n return getScaleLinear(getLinearDomain(yAxis, 'y'), [rangeToHeight, 0]);\n }, [getBandDomain, getLinearDomain, rangeToHeight, yAxis]);\n\n const y2Scale = useMemo(() => {\n if (!y2Axis) return null;\n if (y2Axis?.type === 'band') return getScaleBand(getBandDomain(y2Axis), [0, innerHeight]);\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(series.map((d) => d.name))\n .range(series.map((d) => COLOR_PALLET[d.color as keyof typeof COLOR_PALLET] ?? d.color))\n .unknown('red'),\n [series],\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' && !(stackedSeries?.length && getStackedIndex(stackedSeries, serie.name) > -1),\n )\n .map((serie) => serie.name),\n [currentData, stackedSeries],\n );\n\n const getBandwidth = useCallback(() => {\n if ((xAxis.type === undefined || xAxis.type === 'band') && yAxis.type !== 'band') {\n return (xScale as ScaleBand<string>).bandwidth();\n }\n if (yAxis.type === 'band') {\n return (yScale as ScaleBand<string>).bandwidth();\n }\n // @todo explore this. is to create bars with a linear\n return innerWidth / (xScale as ScaleLinear<number, number, never>).ticks().length / 2;\n }, [innerWidth, xAxis.type, xScale, yAxis.type, 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 .paddingOuter(0.01)\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
  }
@@ -117,21 +117,9 @@ const AxisBottom = import_react.default.memo(() => {
117
117
  ]);
118
118
  if (xAxis.hideAxis)
119
119
  return null;
120
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
121
- transform: `translate(0,${innerHeight})`,
122
- children: [
123
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
124
- ref: setAxisBottomRef,
125
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
126
- axisColor: xAxis.color,
127
- tickColor: color,
128
- ref: axisRef
129
- })
130
- }),
131
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, {
132
- ref: gridRef
133
- })
134
- ]
135
- });
120
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { transform: `translate(0,${innerHeight})`, children: [
121
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { ref: setAxisBottomRef, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, { axisColor: xAxis.color, tickColor: color, ref: axisRef }) }),
122
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, { ref: gridRef })
123
+ ] });
136
124
  });
137
125
  //# sourceMappingURL=AxisBottom.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/graphs/Chart/parts/Axis/AxisBottom.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
4
  "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useContext, useEffect, useRef } from 'react';\nimport type { ScaleLinear, ScaleTime } from 'd3';\nimport { select, axisBottom, timeFormat } from 'd3';\nimport { StyledAxis, StyledGrid } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\nimport type { DSChartT } from '../../react-desc-prop-types';\nimport { useUniqueData } from '../../helpers/useUniqueData';\nimport { getFormatGenerator } from '../../helpers';\n\nexport const AxisBottom = React.memo(() => {\n const {\n props: { xAxis },\n innerHeight,\n xScale,\n innerWidth,\n containerRatio,\n internalMargin,\n isHorizontal,\n setAxisBottomRef,\n } = useContext(ChartContext);\n\n const axisRef = useRef<SVGSVGElement>(null);\n const gridRef = useRef<SVGSVGElement>(null);\n const { tickValues, tickFormat, overwriteTicks, color, tickRotation, tickCount } =\n xAxis.tick || ({} as DSChartT.AxisTickT);\n\n const ticksScales = ['linear', 'time', 'log'];\n // const ticks = xScale.ticks?.(tickCount ?? width / 100);\n\n const uniqueData = useUniqueData();\n useEffect(() => {\n const grid = axisBottom(xScale as ScaleLinear<number, number>)\n .tickSize(-innerHeight)\n .tickFormat('')\n .tickSizeOuter(0);\n\n const axis = axisBottom(xScale as ScaleLinear<number, number>).tickSizeOuter(0);\n\n if (ticksScales.includes(xAxis.type)) {\n const ticksNum = (() => {\n if (tickCount) return tickCount;\n if (containerRatio > 1) {\n return (innerWidth / 100) * containerRatio;\n }\n return innerWidth / 100;\n })();\n const ticks = (xScale as ScaleLinear<number, number> | ScaleTime<number, number, never>).ticks?.(ticksNum);\n\n // we show the only the ticks values on the screen when zoomed enough\n // @todo we need to improve this logic\n if (containerRatio > 1 && uniqueData.length < 10 && !isHorizontal) {\n const ticksName = uniqueData.map((u) => u.xValue);\n axis.tickValues(ticksName);\n grid.tickValues(ticksName);\n } else if (tickValues && ticks) {\n const finalTicks = overwriteTicks ? tickValues : [...ticks, ...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(xAxis.type ?? 'linear');\n axis.tickFormat((d) => formatGenerator(tickFormat)(d));\n }\n if (typeof tickFormat === 'function') {\n axis.tickFormat(tickFormat);\n }\n }\n }\n\n if (axisRef?.current && gridRef?.current) {\n if (xAxis?.showGrid) select(gridRef.current).call(grid);\n const axisNode = select(axisRef.current);\n axisNode.call(axis);\n\n // need to remove the first tick when live under the domain line\n const firstTick = axisNode.select('.tick').node() as SVGGElement; // select all the text elements\n if (firstTick?.getBoundingClientRect().left < internalMargin.left + 10 && !xScale.bandwidth) {\n firstTick.remove();\n }\n if (tickRotation)\n axisNode\n .selectAll('text')\n .style('text-anchor', tickRotation > 0 ? 'start' : 'end')\n .attr('dx', 8 * Math.sin(Math.PI * (tickRotation / 180)))\n .attr('dy', '.71em')\n .attr('y', 11.5 - 2.5 * (tickRotation / 15) * (tickRotation > 0 ? 1 : -1))\n .attr('transform', `rotate(${tickRotation})`);\n }\n }, [\n innerHeight,\n overwriteTicks,\n xAxis?.showGrid,\n tickFormat,\n tickValues,\n xScale,\n tickRotation,\n xAxis.type,\n ticksScales,\n tickCount,\n containerRatio,\n innerWidth,\n uniqueData.length,\n uniqueData,\n internalMargin.left,\n isHorizontal,\n ]);\n if (xAxis.hideAxis) return null;\n return (\n <g transform={`translate(0,${innerHeight})`}>\n <g ref={setAxisBottomRef}>\n <StyledAxis axisColor={xAxis.color} tickColor={color} ref={axisRef}></StyledAxis>\n </g>\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n );\n});\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -90,24 +90,9 @@ const AxisLeft = () => {
90
90
  ]);
91
91
  if (yAxis.hideAxis)
92
92
  return null;
93
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
94
- children: [
95
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
96
- mask: `url(#mask-${chartId})`,
97
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, {
98
- ref: gridRef
99
- })
100
- }),
101
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
102
- ref: setAxisLeftRef,
103
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
104
- axisColor,
105
- ref,
106
- tickColor,
107
- className: "axis-left"
108
- })
109
- })
110
- ]
111
- });
93
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { children: [
94
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { mask: `url(#mask-${chartId})`, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, { ref: gridRef }) }),
95
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { ref: setAxisLeftRef, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, { axisColor, ref, tickColor, className: "axis-left" }) })
96
+ ] });
112
97
  };
113
98
  //# sourceMappingURL=AxisLeft.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/graphs/Chart/parts/Axis/AxisLeft.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
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';\n\nexport const AxisLeft = () => {\n const {\n props: { yAxis },\n innerHeight,\n innerWidth,\n yScale,\n chartId,\n height,\n setAxisLeftRef,\n } = useContext(ChartContext);\n\n const ref = useRef<SVGSVGElement>(null);\n const gridRef = useRef<SVGSVGElement>(null);\n const { tickValues, color: tickColor, tickFormat, overwriteTicks, tickRotation, tickCount } = yAxis.tick || {};\n\n const ticks = yScale.ticks?.(tickCount ?? height / 80);\n\n const { type, showGrid, color: axisColor } = yAxis;\n\n useEffect(() => {\n const axis = axisLeft(yScale).tickSizeOuter(0);\n\n const grid = axisLeft(yScale)\n .tickFormat((_) => '')\n .tickSize(showGrid ? -innerWidth : 0)\n .tickSizeOuter(0);\n\n if (tickValues && ticks) {\n const finalTicks = overwriteTicks ? tickValues : [...ticks, ...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 if (ref?.current && gridRef?.current) {\n select(gridRef.current).call(grid);\n const axisNode = select(ref.current);\n axisNode.call(axis);\n if (tickRotation)\n axisNode\n .selectAll('text')\n .style('text-anchor', 'end')\n .attr('dx', '-.8em')\n .attr('dy', '.15em')\n .attr('transform', `rotate(-${tickRotation})`);\n }\n }, [\n innerHeight,\n innerWidth,\n overwriteTicks,\n showGrid,\n tickFormat,\n tickRotation,\n tickValues,\n ticks,\n type,\n yAxis,\n yScale,\n ]);\n\n if (yAxis.hideAxis) return null;\n\n return (\n <g>\n <g mask={`url(#mask-${chartId})`}>\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n <g ref={setAxisLeftRef}>\n <StyledAxis axisColor={axisColor} ref={ref} tickColor={tickColor} className=\"axis-left\"></StyledAxis>\n </g>\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkFnB;AAhFJ,mBAAqD;AACrD,gBAAiC;AACjC,oBAAuC;AACvC,0BAA6B;AAC7B,qBAAmC;AAE5B,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAsB,IAAI;AACtC,QAAM,cAAU,qBAAsB,IAAI;AAC1C,QAAM,EAAE,YAAY,OAAO,WAAW,YAAY,gBAAgB,cAAc,UAAU,IAAI,MAAM,QAAQ,CAAC;AAE7G,QAAM,QAAQ,OAAO,QAAQ,aAAa,SAAS,EAAE;AAErD,QAAM,EAAE,MAAM,UAAU,OAAO,UAAU,IAAI;AAE7C,8BAAU,MAAM;AACd,UAAM,WAAO,oBAAS,MAAM,EAAE,cAAc,CAAC;AAE7C,UAAM,WAAO,oBAAS,MAAM,EACzB,WAAW,CAAC,MAAM,EAAE,EACpB,SAAS,WAAW,CAAC,aAAa,CAAC,EACnC,cAAc,CAAC;AAElB,QAAI,cAAc,OAAO;AACvB,YAAM,aAAa,iBAAiB,aAAa,CAAC,GAAG,OAAO,GAAG,UAAU;AACzE,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;AACA,QAAI,KAAK,WAAW,SAAS,SAAS;AACpC,4BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,YAAM,eAAW,kBAAO,IAAI,OAAO;AACnC,eAAS,KAAK,IAAI;AAClB,UAAI;AACF,iBACG,UAAU,MAAM,EAChB,MAAM,eAAe,KAAK,EAC1B,KAAK,MAAM,OAAO,EAClB,KAAK,MAAM,OAAO,EAClB,KAAK,aAAa,WAAW,eAAe;AAAA,IACnD;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,MAAM;AAAU,WAAO;AAE3B,SACE,6CAAC;AAAA,IACC;AAAA,kDAAC;AAAA,QAAE,MAAM,aAAa;AAAA,QACpB,sDAAC;AAAA,UAAW,KAAK;AAAA,SAAS;AAAA,OAC5B;AAAA,MACA,4CAAC;AAAA,QAAE,KAAK;AAAA,QACN,sDAAC;AAAA,UAAW;AAAA,UAAsB;AAAA,UAAU;AAAA,UAAsB,WAAU;AAAA,SAAY;AAAA,OAC1F;AAAA;AAAA,GACF;AAEJ;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkFnB;AAhFJ,mBAAqD;AACrD,gBAAiC;AACjC,oBAAuC;AACvC,0BAA6B;AAC7B,qBAAmC;AAE5B,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAsB,IAAI;AACtC,QAAM,cAAU,qBAAsB,IAAI;AAC1C,QAAM,EAAE,YAAY,OAAO,WAAW,YAAY,gBAAgB,cAAc,UAAU,IAAI,MAAM,QAAQ,CAAC;AAE7G,QAAM,QAAQ,OAAO,QAAQ,aAAa,SAAS,EAAE;AAErD,QAAM,EAAE,MAAM,UAAU,OAAO,UAAU,IAAI;AAE7C,8BAAU,MAAM;AACd,UAAM,WAAO,oBAAS,MAAM,EAAE,cAAc,CAAC;AAE7C,UAAM,WAAO,oBAAS,MAAM,EACzB,WAAW,CAAC,MAAM,EAAE,EACpB,SAAS,WAAW,CAAC,aAAa,CAAC,EACnC,cAAc,CAAC;AAElB,QAAI,cAAc,OAAO;AACvB,YAAM,aAAa,iBAAiB,aAAa,CAAC,GAAG,OAAO,GAAG,UAAU;AACzE,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;AACA,QAAI,KAAK,WAAW,SAAS,SAAS;AACpC,4BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,YAAM,eAAW,kBAAO,IAAI,OAAO;AACnC,eAAS,KAAK,IAAI;AAClB,UAAI;AACF,iBACG,UAAU,MAAM,EAChB,MAAM,eAAe,KAAK,EAC1B,KAAK,MAAM,OAAO,EAClB,KAAK,MAAM,OAAO,EAClB,KAAK,aAAa,WAAW,eAAe;AAAA,IACnD;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,MAAM;AAAU,WAAO;AAE3B,SACE,6CAAC,OACC;AAAA,gDAAC,OAAE,MAAM,aAAa,YACpB,sDAAC,4BAAW,KAAK,SAAS,GAC5B;AAAA,IACA,4CAAC,OAAE,KAAK,gBACN,sDAAC,4BAAW,WAAsB,KAAU,WAAsB,WAAU,aAAY,GAC1F;AAAA,KACF;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -33,30 +33,64 @@ 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 AxisRight = () => {
37
38
  const {
38
39
  props: { y2Axis },
40
+ innerHeight,
39
41
  innerWidth,
40
42
  y2Scale,
43
+ chartId,
44
+ height,
41
45
  setAxisRightRef
42
46
  } = (0, import_react.useContext)(import_ChartContext.ChartContext);
43
- const { color: tickColor } = y2Axis?.tick || {};
44
47
  const ref = (0, import_react.useRef)(null);
48
+ const gridRef = (0, import_react.useRef)(null);
49
+ const { tickValues, color: tickColor, tickFormat, overwriteTicks, tickRotation, tickCount } = y2Axis.tick || {};
50
+ const ticks = y2Scale.ticks?.(tickCount ?? height / 80);
51
+ const { type, showGrid, color: axisColor } = y2Axis;
45
52
  (0, import_react.useEffect)(() => {
46
53
  const axis = (0, import_d3.axisRight)(y2Scale).tickSizeOuter(0);
47
- if (ref.current)
48
- (0, import_d3.select)(ref.current).call(axis);
49
- }, [innerWidth, y2Scale]);
50
- if (!y2Axis)
54
+ const grid = (0, import_d3.axisRight)(y2Scale).tickFormat((_) => "").tickSize(showGrid ? -innerWidth : 0).tickSizeOuter(0);
55
+ if (tickValues && ticks) {
56
+ const finalTicks = overwriteTicks ? tickValues : [...ticks, ...tickValues];
57
+ axis.tickValues(finalTicks);
58
+ } else {
59
+ axis.tickValues(ticks);
60
+ grid.tickValues(ticks);
61
+ }
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
+ }
70
+ }
71
+ if (ref?.current && gridRef?.current) {
72
+ (0, import_d3.select)(gridRef.current).call(grid);
73
+ const axisNode = (0, import_d3.select)(ref.current);
74
+ axisNode.call(axis);
75
+ }
76
+ }, [
77
+ innerHeight,
78
+ innerWidth,
79
+ overwriteTicks,
80
+ showGrid,
81
+ tickFormat,
82
+ tickRotation,
83
+ tickValues,
84
+ ticks,
85
+ type,
86
+ y2Axis,
87
+ y2Scale
88
+ ]);
89
+ if (y2Axis.hideAxis)
51
90
  return null;
52
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
53
- ref: setAxisRightRef,
54
- transform: `translate(${innerWidth},0)`,
55
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, {
56
- axisColor: y2Axis?.color,
57
- ref,
58
- tickColor
59
- })
60
- });
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { transform: `translate(${innerWidth},0)`, children: [
92
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { mask: `url(#mask-${chartId})`, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledGrid, { ref: gridRef }) }),
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { ref: setAxisRightRef, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledAxis, { axisColor, ref, tickColor, className: "axis-right" }) })
94
+ ] });
61
95
  };
62
96
  //# 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';\nexport const AxisRight = () => {\n const {\n props: { y2Axis },\n innerWidth,\n y2Scale,\n setAxisRightRef,\n } = useContext(ChartContext);\n\n const { color: tickColor } = y2Axis?.tick || {};\n const ref = useRef<SVGGElement>(null);\n useEffect(() => {\n const axis = axisRight(y2Scale).tickSizeOuter(0);\n\n if (ref.current) select(ref.current).call(axis);\n }, [innerWidth, y2Scale]);\n if (!y2Axis) return null;\n return (\n <g ref={setAxisRightRef} transform={`translate(${innerWidth},0)`}>\n <StyledAxis axisColor={y2Axis?.color} ref={ref} tickColor={tickColor} />\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsBjB;AAtBN,mBAAqD;AACrD,gBAAkC;AAClC,oBAA2B;AAC3B,0BAA6B;AACtB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,EAAE,OAAO,UAAU,IAAI,QAAQ,QAAQ,CAAC;AAC9C,QAAM,UAAM,qBAAoB,IAAI;AACpC,8BAAU,MAAM;AACd,UAAM,WAAO,qBAAU,OAAO,EAAE,cAAc,CAAC;AAE/C,QAAI,IAAI;AAAS,4BAAO,IAAI,OAAO,EAAE,KAAK,IAAI;AAAA,EAChD,GAAG,CAAC,YAAY,OAAO,CAAC;AACxB,MAAI,CAAC;AAAQ,WAAO;AACpB,SACE,4CAAC;AAAA,IAAE,KAAK;AAAA,IAAiB,WAAW,aAAa;AAAA,IAC/C,sDAAC;AAAA,MAAW,WAAW,QAAQ;AAAA,MAAO;AAAA,MAAU;AAAA,KAAsB;AAAA,GACxE;AAEJ;",
4
+ "sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useContext, useEffect, useRef } from 'react';\nimport { select, axisRight } from 'd3';\nimport { StyledAxis, StyledGrid } from '../../styles';\nimport { ChartContext } from '../../ChartContext';\nimport { getFormatGenerator } from '../../helpers';\n\nexport const AxisRight = () => {\n const {\n props: { y2Axis },\n innerHeight,\n innerWidth,\n y2Scale,\n chartId,\n height,\n setAxisRightRef,\n } = useContext(ChartContext);\n\n const ref = useRef<SVGSVGElement>(null);\n const gridRef = useRef<SVGSVGElement>(null);\n const { tickValues, color: tickColor, tickFormat, overwriteTicks, tickRotation, tickCount } = y2Axis.tick || {};\n\n const ticks = y2Scale.ticks?.(tickCount ?? height / 80);\n\n const { type, showGrid, color: axisColor } = y2Axis;\n\n useEffect(() => {\n const axis = axisRight(y2Scale).tickSizeOuter(0);\n\n const grid = axisRight(y2Scale)\n .tickFormat((_) => '')\n .tickSize(showGrid ? -innerWidth : 0)\n .tickSizeOuter(0);\n\n if (tickValues && ticks) {\n const finalTicks = overwriteTicks ? tickValues : [...ticks, ...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 if (ref?.current && gridRef?.current) {\n select(gridRef.current).call(grid);\n const axisNode = select(ref.current);\n axisNode.call(axis);\n }\n }, [\n innerHeight,\n innerWidth,\n overwriteTicks,\n showGrid,\n tickFormat,\n tickRotation,\n tickValues,\n ticks,\n type,\n y2Axis,\n y2Scale,\n ]);\n\n if (y2Axis.hideAxis) return null;\n\n return (\n <g transform={`translate(${innerWidth},0)`}>\n <g mask={`url(#mask-${chartId})`}>\n <StyledGrid ref={gridRef}></StyledGrid>\n </g>\n <g ref={setAxisRightRef}>\n <StyledAxis axisColor={axisColor} ref={ref} tickColor={tickColor} className=\"axis-right\"></StyledAxis>\n </g>\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD2EnB;AAzEJ,mBAAqD;AACrD,gBAAkC;AAClC,oBAAuC;AACvC,0BAA6B;AAC7B,qBAAmC;AAE5B,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAsB,IAAI;AACtC,QAAM,cAAU,qBAAsB,IAAI;AAC1C,QAAM,EAAE,YAAY,OAAO,WAAW,YAAY,gBAAgB,cAAc,UAAU,IAAI,OAAO,QAAQ,CAAC;AAE9G,QAAM,QAAQ,QAAQ,QAAQ,aAAa,SAAS,EAAE;AAEtD,QAAM,EAAE,MAAM,UAAU,OAAO,UAAU,IAAI;AAE7C,8BAAU,MAAM;AACd,UAAM,WAAO,qBAAU,OAAO,EAAE,cAAc,CAAC;AAE/C,UAAM,WAAO,qBAAU,OAAO,EAC3B,WAAW,CAAC,MAAM,EAAE,EACpB,SAAS,WAAW,CAAC,aAAa,CAAC,EACnC,cAAc,CAAC;AAElB,QAAI,cAAc,OAAO;AACvB,YAAM,aAAa,iBAAiB,aAAa,CAAC,GAAG,OAAO,GAAG,UAAU;AACzE,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;AACA,QAAI,KAAK,WAAW,SAAS,SAAS;AACpC,4BAAO,QAAQ,OAAO,EAAE,KAAK,IAAI;AACjC,YAAM,eAAW,kBAAO,IAAI,OAAO;AACnC,eAAS,KAAK,IAAI;AAAA,IACpB;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,OAAO;AAAU,WAAO;AAE5B,SACE,6CAAC,OAAE,WAAW,aAAa,iBACzB;AAAA,gDAAC,OAAE,MAAM,aAAa,YACpB,sDAAC,4BAAW,KAAK,SAAS,GAC5B;AAAA,IACA,4CAAC,OAAE,KAAK,iBACN,sDAAC,4BAAW,WAAsB,KAAU,WAAsB,WAAU,cAAa,GAC3F;AAAA,KACF;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -48,7 +48,7 @@ var import_VerticalScrapper = require("./Scrapper/VerticalScrapper");
48
48
  var import_Controllers = require("./Scroller/Controllers");
49
49
  const ChartContainer = () => {
50
50
  const {
51
- props: { yAxis, xScroll, scrapper, xAxis, width: userWidth },
51
+ props: { yAxis, y2Axis, xScroll, scrapper, xAxis, width: userWidth },
52
52
  containerRef,
53
53
  activePoint,
54
54
  internalMargin,
@@ -127,76 +127,61 @@ const ChartContainer = () => {
127
127
  () => `${width},${internalMargin.left},${internalMargin.top},${internalMargin.right},${internalMargin.bottom}`,
128
128
  [internalMargin, width]
129
129
  );
130
- if (currentData.length === 0)
131
- return null;
132
130
  const render = (0, import_react.useMemo)(() => {
131
+ if (currentData.length === 0)
132
+ return null;
133
133
  if (xScroll || xAxis.advanced?.pointSpacing?.value > 1) {
134
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
135
- children: [
136
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisRight.AxisRight, {}),
137
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisLeft.AxisLeft, {}),
138
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ScrollableContainerX.ScrollableContainerX, {})
139
- ]
140
- });
134
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
135
+ y2Axis ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisRight.AxisRight, {}) : null,
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisLeft.AxisLeft, {}),
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ScrollableContainerX.ScrollableContainerX, {})
138
+ ] });
141
139
  }
142
140
  if (yScroll) {
143
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
144
- children: [
145
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisBottom.AxisBottom, {}),
146
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ScrollableContainerY.ScrollableContainerY, {})
147
- ]
148
- });
149
- }
150
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
151
- children: [
152
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisRight.AxisRight, {}),
153
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisLeft.AxisLeft, {}),
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
142
+ y2Axis ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisRight.AxisRight, {}) : null,
154
143
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisBottom.AxisBottom, {}),
155
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SeriesFactory.SeriesFactory, {}),
156
- scrapper?.type === "horizontal" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Scrapper.Scrapper, {}) : null,
157
- scrapper?.type === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {}) : null
158
- ]
159
- });
160
- }, [scrapper?.type, xAxis.advanced?.pointSpacing?.value, xScroll, yScroll]);
161
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledSVGWrapper, {
162
- ref: setContainerRef,
163
- onKeyDown: onInputKeyDown,
164
- "aria-hidden": "true",
165
- tabIndex: activePoint ? -1 : 0,
166
- onBlur: handleOnBlur,
167
- onFocus: handleOnFocus,
168
- onMouseEnter: onMouseEnterHandler,
169
- onMouseLeave: onMouseLeaveHandler,
170
- onMouseMove: handleMouseMove,
171
- onMouseUp: handleMouseUp,
172
- onMouseDown: (e) => e.preventDefault(),
173
- isGrabbed,
174
- style: { width: userWidth, height },
175
- children: width !== 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
176
- ref: svgRef,
177
- width,
178
- height,
179
- children: [
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ScrollableContainerY.ScrollableContainerY, {})
145
+ ] });
146
+ }
147
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
148
+ y2Axis ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisRight.AxisRight, {}) : null,
149
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisLeft.AxisLeft, {}),
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AxisBottom.AxisBottom, {}),
151
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SeriesFactory.SeriesFactory, {}),
152
+ scrapper?.type === "horizontal" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Scrapper.Scrapper, {}) : null,
153
+ scrapper?.type === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {}) : null
154
+ ] });
155
+ }, [currentData.length, scrapper?.type, xAxis.advanced?.pointSpacing?.value, xScroll, y2Axis, yScroll]);
156
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
157
+ import_styles.StyledSVGWrapper,
158
+ {
159
+ ref: setContainerRef,
160
+ onKeyDown: onInputKeyDown,
161
+ "aria-hidden": "true",
162
+ tabIndex: activePoint ? -1 : 0,
163
+ onBlur: handleOnBlur,
164
+ onFocus: handleOnFocus,
165
+ onMouseEnter: onMouseEnterHandler,
166
+ onMouseLeave: onMouseLeaveHandler,
167
+ onMouseMove: handleMouseMove,
168
+ onMouseUp: handleMouseUp,
169
+ onMouseDown: (e) => e.preventDefault(),
170
+ isGrabbed,
171
+ style: { width: userWidth, height },
172
+ children: width !== 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { ref: svgRef, width, height, children: [
180
173
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ClipPaths.ClipPaths, {}),
181
174
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_BlurMask.BlurMask, {}),
182
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
183
- children: [
184
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
185
- children: [
186
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Controllers.Controllers, {}),
187
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Legend.Legend, {}),
188
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Label.Label, {})
189
- ]
190
- }),
191
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
192
- className: "container",
193
- transform: `translate(${internalMargin.left},${internalMargin.top})`,
194
- children: render
195
- })
196
- ]
197
- }, key)
198
- ]
199
- }) : null
200
- });
175
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { children: [
176
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { children: [
177
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Controllers.Controllers, {}),
178
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Legend.Legend, {}),
179
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Label.Label, {})
180
+ ] }),
181
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { className: "container", transform: `translate(${internalMargin.left},${internalMargin.top})`, children: render })
182
+ ] }, key)
183
+ ] }) : null
184
+ }
185
+ );
201
186
  };
202
187
  //# sourceMappingURL=ChartContainer.js.map