@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
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useContext, useMemo } from "react";
4
+ import { ChartContext } from "../../ChartContext";
5
+ import { RightLabel } from "./RightLabel";
6
+ import { LeftLabel } from "./LeftLabel";
7
+ import { BottomLabel } from "./BottomLabel";
8
+ const Label = () => {
9
+ const {
10
+ props: { xAxis, yAxis, y2Axis }
11
+ } = useContext(ChartContext);
12
+ return useMemo(
13
+ () => /* @__PURE__ */ jsxs("g", {
14
+ children: [
15
+ y2Axis?.label ? /* @__PURE__ */ jsx(RightLabel, {}) : "",
16
+ yAxis?.label ? /* @__PURE__ */ jsx(LeftLabel, {}) : "",
17
+ xAxis?.label ? /* @__PURE__ */ jsx(BottomLabel, {}) : ""
18
+ ]
19
+ }),
20
+ [xAxis?.label, y2Axis?.label, yAxis?.label]
21
+ );
22
+ };
23
+ export {
24
+ Label
25
+ };
26
+ //# sourceMappingURL=Label.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Labels/Label.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo } from 'react';\n\nimport { ChartContext } from '../../ChartContext';\nimport { RightLabel } from './RightLabel';\nimport { LeftLabel } from './LeftLabel';\nimport { BottomLabel } from './BottomLabel';\n\nexport const Label = () => {\n const {\n props: { xAxis, yAxis, y2Axis },\n } = useContext(ChartContext);\n\n return useMemo(\n () => (\n <g>\n {y2Axis?.label ? <RightLabel /> : ''}\n {yAxis?.label ? <LeftLabel /> : ''}\n {xAxis?.label ? <BottomLabel /> : ''}\n </g>\n ),\n [xAxis?.label, y2Axis?.label, yAxis?.label],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,eAAe;AAE3C,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAErB,MAAM,QAAQ,MAAM;AACzB,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO,OAAO,OAAO;AAAA,EAChC,IAAI,WAAW,YAAY;AAE3B,SAAO;AAAA,IACL,MACE,qBAAC;AAAA,MACE;AAAA,gBAAQ,QAAQ,oBAAC,cAAW,IAAK;AAAA,QACjC,OAAO,QAAQ,oBAAC,aAAU,IAAK;AAAA,QAC/B,OAAO,QAAQ,oBAAC,eAAY,IAAK;AAAA;AAAA,KACpC;AAAA,IAEF,CAAC,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK;AAAA,EAC5C;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,35 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useContext } from "react";
4
+ import { ChartContext } from "../../ChartContext";
5
+ import { StyledAxisLabel } from "../../styles";
6
+ const LeftLabel = () => {
7
+ const {
8
+ innerHeight,
9
+ internalMargin,
10
+ setLeftLabel,
11
+ leftLegendWidth,
12
+ props: { yAxis }
13
+ } = useContext(ChartContext);
14
+ return /* @__PURE__ */ jsxs("g", {
15
+ ref: setLeftLabel,
16
+ transform: `translate(${leftLegendWidth > 0 ? leftLegendWidth + 8 : 0},${innerHeight / 2 + internalMargin.top}) rotate(-90)`,
17
+ children: [
18
+ /* @__PURE__ */ jsx("rect", {
19
+ height: "30",
20
+ width: "1",
21
+ fill: "transparent"
22
+ }),
23
+ /* @__PURE__ */ jsx(StyledAxisLabel, {
24
+ className: "axis-label",
25
+ textAnchor: "middle",
26
+ dy: 15,
27
+ children: yAxis?.label
28
+ })
29
+ ]
30
+ });
31
+ };
32
+ export {
33
+ LeftLabel
34
+ };
35
+ //# sourceMappingURL=LeftLabel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Labels/LeftLabel.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { StyledAxisLabel } from '../../styles';\n\nexport const LeftLabel = () => {\n const {\n innerHeight,\n internalMargin,\n setLeftLabel,\n leftLegendWidth,\n props: { yAxis },\n } = useContext(ChartContext);\n\n return (\n <g\n ref={setLeftLabel}\n transform={`translate(${leftLegendWidth > 0 ? leftLegendWidth + 8 : 0},${\n innerHeight / 2 + internalMargin.top\n }) rotate(-90)`}\n >\n <rect height=\"30\" width=\"1\" fill=\"transparent\" />\n <StyledAxisLabel className=\"axis-label\" textAnchor=\"middle\" dy={15}>\n {yAxis?.label}\n </StyledAxisLabel>\n </g>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,kBAA2B;AAC3C,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAEzB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,MAAM;AAAA,EACjB,IAAI,WAAW,YAAY;AAE3B,SACE,qBAAC;AAAA,IACC,KAAK;AAAA,IACL,WAAW,aAAa,kBAAkB,IAAI,kBAAkB,IAAI,KAClE,cAAc,IAAI,eAAe;AAAA,IAGnC;AAAA,0BAAC;AAAA,QAAK,QAAO;AAAA,QAAK,OAAM;AAAA,QAAI,MAAK;AAAA,OAAc;AAAA,MAC/C,oBAAC;AAAA,QAAgB,WAAU;AAAA,QAAa,YAAW;AAAA,QAAS,IAAI;AAAA,QAC7D,iBAAO;AAAA,OACV;AAAA;AAAA,GACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useContext } from "react";
4
+ import { ChartContext } from "../../ChartContext";
5
+ import { StyledAxisLabel } from "../../styles";
6
+ const RightLabel = () => {
7
+ const {
8
+ innerWidth,
9
+ innerHeight,
10
+ internalMargin,
11
+ axisRightWidth,
12
+ setRightLabel,
13
+ props: { y2Axis }
14
+ } = useContext(ChartContext);
15
+ return /* @__PURE__ */ jsxs("g", {
16
+ ref: setRightLabel,
17
+ transform: `translate(${innerWidth + internalMargin.left + axisRightWidth},${innerHeight / 2 + internalMargin.top}) `,
18
+ children: [
19
+ /* @__PURE__ */ jsx("rect", {
20
+ width: "20",
21
+ height: 1,
22
+ fill: "transparent"
23
+ }),
24
+ /* @__PURE__ */ jsx("g", {
25
+ transform: " rotate(90)",
26
+ children: /* @__PURE__ */ jsx(StyledAxisLabel, {
27
+ className: "axis-label",
28
+ textAnchor: "middle",
29
+ dy: "-15",
30
+ children: y2Axis?.label
31
+ })
32
+ })
33
+ ]
34
+ });
35
+ };
36
+ export {
37
+ RightLabel
38
+ };
39
+ //# sourceMappingURL=RightLabel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Labels/RightLabel.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useEffect, useRef, useState } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { StyledAxisLabel } from '../../styles';\n\nexport const RightLabel = () => {\n const {\n innerWidth,\n innerHeight,\n internalMargin,\n axisRightWidth,\n setRightLabel,\n props: { y2Axis },\n } = useContext(ChartContext);\n\n return (\n <g\n ref={setRightLabel}\n transform={`translate(${innerWidth + internalMargin.left + axisRightWidth},${\n innerHeight / 2 + internalMargin.top\n }) `}\n >\n <rect width=\"20\" height={1} fill=\"transparent\" />\n <g transform=\" rotate(90)\">\n <StyledAxisLabel className=\"axis-label\" textAnchor=\"middle\" dy=\"-15\">\n {y2Axis?.label}\n </StyledAxisLabel>\n </g>\n </g>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,kBAA+C;AAC/D,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAEzB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,OAAO;AAAA,EAClB,IAAI,WAAW,YAAY;AAE3B,SACE,qBAAC;AAAA,IACC,KAAK;AAAA,IACL,WAAW,aAAa,aAAa,eAAe,OAAO,kBACzD,cAAc,IAAI,eAAe;AAAA,IAGnC;AAAA,0BAAC;AAAA,QAAK,OAAM;AAAA,QAAK,QAAQ;AAAA,QAAG,MAAK;AAAA,OAAc;AAAA,MAC/C,oBAAC;AAAA,QAAE,WAAU;AAAA,QACX,8BAAC;AAAA,UAAgB,WAAU;AAAA,UAAa,YAAW;AAAA,UAAS,IAAG;AAAA,UAC5D,kBAAQ;AAAA,SACX;AAAA,OACF;AAAA;AAAA,GACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -3,43 +3,53 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useContext, useMemo, useEffect, useRef, useState } from "react";
4
4
  import { selectAll, select } from "d3";
5
5
  import { ChartContext } from "../../ChartContext";
6
+ import { LegendItem } from "./LegendItem";
6
7
  const BottomLegend = () => {
7
- const {
8
- colorScale,
9
- innerWidth,
10
- innerHeight,
11
- internalMargin,
12
- setBottomLegend,
13
- props: { height }
14
- } = useContext(ChartContext);
8
+ const { colorScale, axisBottomHeight, innerWidth, innerHeight, bottomLabelHeight, internalMargin, setBottomLegend } = useContext(ChartContext);
15
9
  const ref = useRef(null);
16
10
  const firstRender = useRef(true);
17
11
  const [xTransform, setXTransform] = useState(innerWidth / 2);
18
12
  useEffect(() => {
19
13
  if (ref.current && firstRender.current) {
20
14
  const cells = selectAll(".cell");
21
- const padding = 40;
15
+ const padding = 30;
22
16
  let offset = 0;
17
+ let verticalOffset = 0;
23
18
  cells.each((d, i) => {
24
19
  if (cells._groups[0][i - 1]) {
25
20
  const lastCell = select(cells._groups[0][i - 1]);
26
21
  const d3sel = select(cells._groups[0][i]);
27
22
  const { width } = lastCell.node().getBBox();
28
- offset += width + padding;
29
- d3sel.attr("transform", `translate(${offset}, 0)`);
23
+ if (offset + width + padding > innerWidth - innerWidth / 3) {
24
+ offset = 0;
25
+ verticalOffset += 20;
26
+ } else {
27
+ offset += width + padding;
28
+ }
29
+ d3sel.attr("transform", `translate(${offset}, ${verticalOffset})`);
30
30
  }
31
31
  });
32
32
  const bounds = ref.current.getBoundingClientRect();
33
33
  setXTransform((prev) => prev - bounds.width / 2);
34
34
  firstRender.current = false;
35
35
  }
36
- }, []);
37
- const render = useMemo(
36
+ }, [innerWidth]);
37
+ const margin = useMemo(() => {
38
+ let counter = 0;
39
+ if (bottomLabelHeight > 0) {
40
+ counter += bottomLabelHeight + 25;
41
+ }
42
+ if (axisBottomHeight > 0) {
43
+ counter += axisBottomHeight;
44
+ }
45
+ return counter;
46
+ }, [bottomLabelHeight, axisBottomHeight]);
47
+ return useMemo(
38
48
  () => /* @__PURE__ */ jsx("g", {
39
49
  ref: setBottomLegend,
40
50
  children: /* @__PURE__ */ jsxs("g", {
41
51
  ref,
42
- transform: `translate(${xTransform + internalMargin.left}, ${height - 30})`,
52
+ transform: `translate(${xTransform + internalMargin.left}, ${innerHeight + internalMargin.top + margin})`,
43
53
  className: "bottom-legend",
44
54
  children: [
45
55
  /* @__PURE__ */ jsx("rect", {
@@ -47,26 +57,14 @@ const BottomLegend = () => {
47
57
  width: 1,
48
58
  fill: "transparent"
49
59
  }),
50
- colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsxs("g", {
51
- className: "cell",
52
- children: [
53
- /* @__PURE__ */ jsx("circle", {
54
- fill: colorScale(domainValue),
55
- r: 4
56
- }),
57
- /* @__PURE__ */ jsx("text", {
58
- x: 10,
59
- dy: ".32em",
60
- children: domainValue
61
- })
62
- ]
63
- }))
60
+ colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsx(LegendItem, {
61
+ domainValue
62
+ }, domainValue))
64
63
  ]
65
64
  })
66
65
  }),
67
- [colorScale, height, setBottomLegend, xTransform]
66
+ [colorScale, innerHeight, internalMargin.left, internalMargin.top, margin, setBottomLegend, xTransform]
68
67
  );
69
- return render;
70
68
  };
71
69
  export {
72
70
  BottomLegend
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Legend/BottomLegend.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\nimport { selectAll, select } from 'd3';\nimport { ChartContext } from '../../ChartContext';\n\nexport const BottomLegend = () => {\n const {\n colorScale,\n innerWidth,\n innerHeight,\n internalMargin,\n setBottomLegend,\n props: { height },\n } = useContext(ChartContext);\n\n const ref = useRef(null);\n const firstRender = useRef(true);\n\n const [xTransform, setXTransform] = useState(innerWidth / 2);\n useEffect(() => {\n if (ref.current && firstRender.current) {\n const cells = selectAll('.cell');\n const padding = 40;\n let offset = 0;\n cells.each((d, i) => {\n if (cells._groups[0][i - 1]) {\n const lastCell = select(cells._groups[0][i - 1]);\n const d3sel = select(cells._groups[0][i]);\n\n const { width } = lastCell.node().getBBox();\n offset += width + padding;\n d3sel.attr('transform', `translate(${offset}, 0)`);\n }\n });\n const bounds = ref.current.getBoundingClientRect();\n setXTransform((prev) => prev - bounds.width / 2);\n firstRender.current = false;\n }\n }, []);\n\n const render = useMemo(\n () => (\n <g ref={setBottomLegend}>\n <g\n ref={ref}\n transform={`translate(${xTransform + internalMargin.left}, ${height - 30})`}\n className=\"bottom-legend\"\n >\n <rect height={40} width={1} fill=\"transparent\" />\n {colorScale.domain().map((domainValue, i) => (\n <g className=\"cell\">\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={10} dy=\".32em\">\n {domainValue}\n </text>\n </g>\n ))}\n </g>\n </g>\n ),\n\n [colorScale, height, setBottomLegend, xTransform],\n );\n\n return render;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,SAAS,WAAW,QAAQ,gBAAgB;AACxE,SAAS,WAAW,cAAc;AAClC,SAAS,oBAAoB;AAEtB,MAAM,eAAe,MAAM;AAChC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,OAAO;AAAA,EAClB,IAAI,WAAW,YAAY;AAE3B,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,cAAc,OAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,aAAa,CAAC;AAC3D,YAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,QAAQ,UAAU,OAAO;AAC/B,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,YAAM,KAAK,CAAC,GAAG,MAAM;AACnB,YAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC3B,gBAAM,WAAW,OAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE;AAExC,gBAAM,EAAE,MAAM,IAAI,SAAS,KAAK,EAAE,QAAQ;AAC1C,oBAAU,QAAQ;AAClB,gBAAM,KAAK,aAAa,aAAa,YAAY;AAAA,QACnD;AAAA,MACF,CAAC;AACD,YAAM,SAAS,IAAI,QAAQ,sBAAsB;AACjD,oBAAc,CAAC,SAAS,OAAO,OAAO,QAAQ,CAAC;AAC/C,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS;AAAA,IACb,MACE,oBAAC;AAAA,MAAE,KAAK;AAAA,MACN,+BAAC;AAAA,QACC;AAAA,QACA,WAAW,aAAa,aAAa,eAAe,SAAS,SAAS;AAAA,QACtE,WAAU;AAAA,QAEV;AAAA,8BAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,qBAAC;AAAA,YAAE,WAAU;AAAA,YACX;AAAA,kCAAC;AAAA,gBAAO,MAAM,WAAW,WAAW;AAAA,gBAAG,GAAG;AAAA,eAAG;AAAA,cAC7C,oBAAC;AAAA,gBAAK,GAAG;AAAA,gBAAI,IAAG;AAAA,gBACb;AAAA,eACH;AAAA;AAAA,WACF,CACD;AAAA;AAAA,OACH;AAAA,KACF;AAAA,IAGF,CAAC,YAAY,QAAQ,iBAAiB,UAAU;AAAA,EAClD;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\nimport { selectAll, select } from 'd3';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const BottomLegend = () => {\n const { colorScale, axisBottomHeight, innerWidth, innerHeight, bottomLabelHeight, internalMargin, setBottomLegend } =\n useContext(ChartContext);\n\n const ref = useRef(null);\n const firstRender = useRef(true);\n\n const [xTransform, setXTransform] = useState(innerWidth / 2);\n useEffect(() => {\n if (ref.current && firstRender.current) {\n const cells = selectAll('.cell');\n const padding = 30;\n let offset = 0;\n let verticalOffset = 0;\n\n cells.each((d, i) => {\n if (cells._groups[0][i - 1]) {\n const lastCell = select(cells._groups[0][i - 1]);\n const d3sel = select(cells._groups[0][i]);\n\n const { width } = lastCell.node().getBBox();\n if (offset + width + padding > innerWidth - innerWidth / 3) {\n offset = 0;\n verticalOffset += 20;\n } else {\n offset += width + padding;\n }\n\n d3sel.attr('transform', `translate(${offset}, ${verticalOffset})`);\n }\n });\n const bounds = ref.current.getBoundingClientRect();\n setXTransform((prev) => prev - bounds.width / 2);\n firstRender.current = false;\n }\n }, [innerWidth]);\n\n const margin = useMemo(() => {\n let counter = 0;\n if (bottomLabelHeight > 0) {\n counter += bottomLabelHeight + 25;\n }\n if (axisBottomHeight > 0) {\n counter += axisBottomHeight;\n }\n return counter;\n }, [bottomLabelHeight, axisBottomHeight]);\n\n return useMemo(\n () => (\n <g ref={setBottomLegend}>\n <g\n ref={ref}\n transform={`translate(${xTransform + internalMargin.left}, ${innerHeight + internalMargin.top + margin})`}\n className=\"bottom-legend\"\n >\n <rect height={40} width={1} fill=\"transparent\" />\n {colorScale.domain().map((domainValue, i) => (\n <LegendItem domainValue={domainValue} key={domainValue} />\n ))}\n </g>\n </g>\n ),\n\n [colorScale, innerHeight, internalMargin.left, internalMargin.top, margin, setBottomLegend, xTransform],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,SAAS,WAAW,QAAQ,gBAAgB;AACxE,SAAS,WAAW,cAAc;AAClC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,MAAM,eAAe,MAAM;AAChC,QAAM,EAAE,YAAY,kBAAkB,YAAY,aAAa,mBAAmB,gBAAgB,gBAAgB,IAChH,WAAW,YAAY;AAEzB,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,cAAc,OAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,aAAa,CAAC;AAC3D,YAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,QAAQ,UAAU,OAAO;AAC/B,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,UAAI,iBAAiB;AAErB,YAAM,KAAK,CAAC,GAAG,MAAM;AACnB,YAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC3B,gBAAM,WAAW,OAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE;AAExC,gBAAM,EAAE,MAAM,IAAI,SAAS,KAAK,EAAE,QAAQ;AAC1C,cAAI,SAAS,QAAQ,UAAU,aAAa,aAAa,GAAG;AAC1D,qBAAS;AACT,8BAAkB;AAAA,UACpB,OAAO;AACL,sBAAU,QAAQ;AAAA,UACpB;AAEA,gBAAM,KAAK,aAAa,aAAa,WAAW,iBAAiB;AAAA,QACnE;AAAA,MACF,CAAC;AACD,YAAM,SAAS,IAAI,QAAQ,sBAAsB;AACjD,oBAAc,CAAC,SAAS,OAAO,OAAO,QAAQ,CAAC;AAC/C,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,SAAS,QAAQ,MAAM;AAC3B,QAAI,UAAU;AACd,QAAI,oBAAoB,GAAG;AACzB,iBAAW,oBAAoB;AAAA,IACjC;AACA,QAAI,mBAAmB,GAAG;AACxB,iBAAW;AAAA,IACb;AACA,WAAO;AAAA,EACT,GAAG,CAAC,mBAAmB,gBAAgB,CAAC;AAExC,SAAO;AAAA,IACL,MACE,oBAAC;AAAA,MAAE,KAAK;AAAA,MACN,+BAAC;AAAA,QACC;AAAA,QACA,WAAW,aAAa,aAAa,eAAe,SAAS,cAAc,eAAe,MAAM;AAAA,QAChG,WAAU;AAAA,QAEV;AAAA,8BAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,oBAAC;AAAA,YAAW;AAAA,aAA+B,WAAa,CACzD;AAAA;AAAA,OACH;AAAA,KACF;AAAA,IAGF,CAAC,YAAY,aAAa,eAAe,MAAM,eAAe,KAAK,QAAQ,iBAAiB,UAAU;AAAA,EACxG;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,32 +1,27 @@
1
1
  import * as React from "react";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useContext } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useContext, useState, useEffect } from "react";
4
4
  import { ChartContext } from "../../ChartContext";
5
+ import { LegendItem } from "./LegendItem";
5
6
  const LeftLegend = () => {
6
7
  const { colorScale, innerHeight, internalMargin, leftLegend, setLeftLegend } = useContext(ChartContext);
8
+ const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);
9
+ useEffect(() => {
10
+ if (leftLegend) {
11
+ const bounds = leftLegend.getBoundingClientRect();
12
+ setYTransform((prev) => prev - bounds.height / 2);
13
+ }
14
+ }, [leftLegend]);
7
15
  return /* @__PURE__ */ jsx("g", {
8
- transform: `translate(8,${innerHeight / 2 - internalMargin.top})`,
16
+ transform: `translate(8,${yTransform})`,
9
17
  ref: setLeftLegend,
10
- children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsxs("g", {
18
+ children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsx("g", {
11
19
  className: "tick",
12
20
  transform: `translate(0,${i * 20})`,
13
- children: [
14
- /* @__PURE__ */ jsx("circle", {
15
- fill: colorScale(domainValue),
16
- r: 4
17
- }),
18
- /* @__PURE__ */ jsx("text", {
19
- x: 10,
20
- dy: ".32em",
21
- children: domainValue
22
- }),
23
- /* @__PURE__ */ jsx("rect", {
24
- width: "180",
25
- height: 1,
26
- fill: "transparent"
27
- })
28
- ]
29
- }))
21
+ children: /* @__PURE__ */ jsx(LegendItem, {
22
+ domainValue
23
+ })
24
+ }, domainValue))
30
25
  });
31
26
  };
32
27
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Legend/LeftLegend.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { ChartContext } from '../../ChartContext';\n\nexport const LeftLegend = () => {\n const { colorScale, innerHeight, internalMargin, leftLegend, setLeftLegend } = useContext(ChartContext);\n\n return (\n <g transform={`translate(8,${innerHeight / 2 - internalMargin.top})`} ref={setLeftLegend}>\n {colorScale.domain().map((domainValue, i) => (\n <g className=\"tick\" transform={`translate(0,${i * 20})`}>\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={10} dy=\".32em\">\n {domainValue}\n </text>\n <rect width=\"180\" height={1} fill=\"transparent\" />\n </g>\n ))}\n </g>\n );\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,kBAAkB;AAClC,SAAS,oBAAoB;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,YAAY,aAAa,gBAAgB,YAAY,cAAc,IAAI,WAAW,YAAY;AAEtG,SACE,oBAAC;AAAA,IAAE,WAAW,eAAe,cAAc,IAAI,eAAe;AAAA,IAAQ,KAAK;AAAA,IACxE,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,qBAAC;AAAA,MAAE,WAAU;AAAA,MAAO,WAAW,eAAe,IAAI;AAAA,MAChD;AAAA,4BAAC;AAAA,UAAO,MAAM,WAAW,WAAW;AAAA,UAAG,GAAG;AAAA,SAAG;AAAA,QAC7C,oBAAC;AAAA,UAAK,GAAG;AAAA,UAAI,IAAG;AAAA,UACb;AAAA,SACH;AAAA,QACA,oBAAC;AAAA,UAAK,OAAM;AAAA,UAAM,QAAQ;AAAA,UAAG,MAAK;AAAA,SAAc;AAAA;AAAA,KAClD,CACD;AAAA,GACH;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const LeftLegend = () => {\n const { colorScale, innerHeight, internalMargin, leftLegend, setLeftLegend } = useContext(ChartContext);\n\n const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);\n\n useEffect(() => {\n if (leftLegend) {\n const bounds = leftLegend.getBoundingClientRect();\n setYTransform((prev) => prev - bounds.height / 2);\n }\n }, [leftLegend]);\n\n return (\n <g transform={`translate(8,${yTransform})`} ref={setLeftLegend}>\n {colorScale.domain().map((domainValue, i) => (\n <g key={domainValue} className=\"tick\" transform={`translate(0,${i * 20})`}>\n <LegendItem domainValue={domainValue} />\n </g>\n ))}\n </g>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,UAAU,iBAAiB;AACvD,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,YAAY,aAAa,gBAAgB,YAAY,cAAc,IAAI,WAAW,YAAY;AAEtG,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,YAAU,MAAM;AACd,QAAI,YAAY;AACd,YAAM,SAAS,WAAW,sBAAsB;AAChD,oBAAc,CAAC,SAAS,OAAO,OAAO,SAAS,CAAC;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,oBAAC;AAAA,IAAE,WAAW,eAAe;AAAA,IAAe,KAAK;AAAA,IAC9C,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,oBAAC;AAAA,MAAoB,WAAU;AAAA,MAAO,WAAW,eAAe,IAAI;AAAA,MAClE,8BAAC;AAAA,QAAW;AAAA,OAA0B;AAAA,OADhC,WAER,CACD;AAAA,GACH;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,74 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useContext, useMemo, useCallback } from "react";
4
+ import { LINE } from "../../../constants";
5
+ import { ChartContext } from "../../ChartContext";
6
+ const LegendItemCircle = (props) => /* @__PURE__ */ jsx("circle", {
7
+ r: 4,
8
+ ...props
9
+ });
10
+ const LegendItemSquare = (props) => /* @__PURE__ */ jsx("rect", {
11
+ x: -4,
12
+ y: -4,
13
+ width: 8,
14
+ height: 8,
15
+ ...props
16
+ });
17
+ const LegendItemDiamond = (props) => /* @__PURE__ */ jsx("g", {
18
+ transform: "rotate(45)",
19
+ children: /* @__PURE__ */ jsx("rect", {
20
+ x: -4,
21
+ y: -4,
22
+ width: 8,
23
+ height: 8,
24
+ ...props
25
+ })
26
+ });
27
+ const LegendItemsMap = {
28
+ [LINE.POINT_STYLE.CIRCLE]: LegendItemCircle,
29
+ [LINE.POINT_STYLE.SQUARE]: LegendItemSquare,
30
+ [LINE.POINT_STYLE.DIAMOND]: LegendItemDiamond
31
+ };
32
+ const LegendItem = ({ domainValue }) => {
33
+ const {
34
+ colorScale,
35
+ setCurrentData,
36
+ props: { data, types }
37
+ } = useContext(ChartContext);
38
+ const serieData = data.find((serie) => serie.name === domainValue);
39
+ const LegendIcon = LegendItemsMap[serieData.pointStyle] ?? (serieData.type === "line" || types === "scatter" ? LegendItemCircle : LegendItemSquare);
40
+ const handleOnClick = useCallback(() => {
41
+ setCurrentData(
42
+ data.map((data2) => {
43
+ if (data2.name === domainValue) {
44
+ return { ...data2, isHidden: !data2.isHidden };
45
+ }
46
+ return data2;
47
+ })
48
+ );
49
+ }, [data, domainValue, setCurrentData]);
50
+ return useMemo(
51
+ () => /* @__PURE__ */ jsxs("g", {
52
+ onClick: handleOnClick,
53
+ className: "cell",
54
+ role: "",
55
+ children: [
56
+ /* @__PURE__ */ jsx(LegendIcon, {
57
+ fill: colorScale(domainValue)
58
+ }),
59
+ /* @__PURE__ */ jsx("text", {
60
+ x: 10,
61
+ dy: ".32em",
62
+ textDecoration: serieData.isHidden ? "line-through" : "",
63
+ fontWeight: "600",
64
+ children: domainValue
65
+ })
66
+ ]
67
+ }, domainValue),
68
+ [LegendIcon, colorScale, domainValue, handleOnClick, serieData.isHidden]
69
+ );
70
+ };
71
+ export {
72
+ LegendItem
73
+ };
74
+ //# sourceMappingURL=LegendItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Legend/LegendItem.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo, useCallback } from 'react';\nimport { LINE } from '../../../constants';\nimport { ChartContext } from '../../ChartContext';\n\nconst LegendItemCircle = (props) => <circle r={4} {...props} />;\nconst LegendItemSquare = (props) => <rect x={-4} y={-4} width={8} height={8} {...props} />;\nconst LegendItemDiamond = (props) => (\n <g transform=\"rotate(45)\">\n <rect x={-4} y={-4} width={8} height={8} {...props} />\n </g>\n);\n\nconst LegendItemsMap = {\n [LINE.POINT_STYLE.CIRCLE]: LegendItemCircle,\n [LINE.POINT_STYLE.SQUARE]: LegendItemSquare,\n [LINE.POINT_STYLE.DIAMOND]: LegendItemDiamond,\n};\n\nexport const LegendItem = ({ domainValue }) => {\n const {\n colorScale,\n setCurrentData,\n props: { data, types },\n } = useContext(ChartContext);\n\n const serieData = data.find((serie) => serie.name === domainValue);\n const LegendIcon =\n LegendItemsMap[serieData.pointStyle] ??\n (serieData.type === 'line' || types === 'scatter' ? LegendItemCircle : LegendItemSquare);\n\n const handleOnClick = useCallback(() => {\n setCurrentData(\n data.map((data) => {\n if (data.name === domainValue) {\n return { ...data, isHidden: !data.isHidden };\n }\n\n return data;\n }),\n );\n }, [data, domainValue, setCurrentData]);\n\n return useMemo(\n () => (\n <g onClick={handleOnClick} key={domainValue} className=\"cell\" role=\"\">\n <LegendIcon fill={colorScale(domainValue)} />\n <text x={10} dy=\".32em\" textDecoration={serieData.isHidden ? 'line-through' : ''} fontWeight=\"600\">\n {domainValue}\n </text>\n </g>\n ),\n\n [LegendIcon, colorScale, domainValue, handleOnClick, serieData.isHidden],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,SAAS,mBAAmB;AACxD,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAE7B,MAAM,mBAAmB,CAAC,UAAU,oBAAC;AAAA,EAAO,GAAG;AAAA,EAAI,GAAG;AAAA,CAAO;AAC7D,MAAM,mBAAmB,CAAC,UAAU,oBAAC;AAAA,EAAK,GAAG;AAAA,EAAI,GAAG;AAAA,EAAI,OAAO;AAAA,EAAG,QAAQ;AAAA,EAAI,GAAG;AAAA,CAAO;AACxF,MAAM,oBAAoB,CAAC,UACzB,oBAAC;AAAA,EAAE,WAAU;AAAA,EACX,8BAAC;AAAA,IAAK,GAAG;AAAA,IAAI,GAAG;AAAA,IAAI,OAAO;AAAA,IAAG,QAAQ;AAAA,IAAI,GAAG;AAAA,GAAO;AAAA,CACtD;AAGF,MAAM,iBAAiB;AAAA,EACrB,CAAC,KAAK,YAAY,SAAS;AAAA,EAC3B,CAAC,KAAK,YAAY,SAAS;AAAA,EAC3B,CAAC,KAAK,YAAY,UAAU;AAC9B;AAEO,MAAM,aAAa,CAAC,EAAE,YAAY,MAAM;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,MAAM,MAAM;AAAA,EACvB,IAAI,WAAW,YAAY;AAE3B,QAAM,YAAY,KAAK,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW;AACjE,QAAM,aACJ,eAAe,UAAU,gBACxB,UAAU,SAAS,UAAU,UAAU,YAAY,mBAAmB;AAEzE,QAAM,gBAAgB,YAAY,MAAM;AACtC;AAAA,MACE,KAAK,IAAI,CAACA,UAAS;AACjB,YAAIA,MAAK,SAAS,aAAa;AAC7B,iBAAO,EAAE,GAAGA,OAAM,UAAU,CAACA,MAAK,SAAS;AAAA,QAC7C;AAEA,eAAOA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,cAAc,CAAC;AAEtC,SAAO;AAAA,IACL,MACE,qBAAC;AAAA,MAAE,SAAS;AAAA,MAAiC,WAAU;AAAA,MAAO,MAAK;AAAA,MACjE;AAAA,4BAAC;AAAA,UAAW,MAAM,WAAW,WAAW;AAAA,SAAG;AAAA,QAC3C,oBAAC;AAAA,UAAK,GAAG;AAAA,UAAI,IAAG;AAAA,UAAQ,gBAAgB,UAAU,WAAW,iBAAiB;AAAA,UAAI,YAAW;AAAA,UAC1F;AAAA,SACH;AAAA;AAAA,OAJ8B,WAKhC;AAAA,IAGF,CAAC,YAAY,YAAY,aAAa,eAAe,UAAU,QAAQ;AAAA,EACzE;AACF;",
6
+ "names": ["data"]
7
+ }
@@ -1,40 +1,46 @@
1
1
  import * as React from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useContext } from "react";
3
+ import { useContext, useState, useEffect } from "react";
4
4
  import { ChartContext } from "../../ChartContext";
5
+ import { LegendItem } from "./LegendItem";
5
6
  const RightLegend = () => {
6
7
  const {
7
8
  colorScale,
8
9
  innerWidth,
9
10
  innerHeight,
10
- setInnerWidth,
11
+ rightLabelWidth,
12
+ rightLegend,
13
+ axisRightWidth,
11
14
  internalMargin,
12
- setRightLegend,
13
- props: { margin }
15
+ setRightLegend
14
16
  } = useContext(ChartContext);
15
- return /* @__PURE__ */ jsx("g", {
17
+ const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);
18
+ useEffect(() => {
19
+ if (rightLegend) {
20
+ const bounds = rightLegend.getBoundingClientRect();
21
+ setYTransform((prev) => prev - bounds.height / 2);
22
+ }
23
+ }, [rightLegend]);
24
+ return /* @__PURE__ */ jsxs("g", {
16
25
  ref: setRightLegend,
17
- transform: `translate(${innerWidth + internalMargin.left},${innerHeight / 2 - internalMargin.top})`,
18
- children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsxs("g", {
19
- className: "tick",
20
- transform: `translate(30,${i * 20})`,
21
- children: [
22
- /* @__PURE__ */ jsx("circle", {
23
- fill: colorScale(domainValue),
24
- r: 4
25
- }),
26
- /* @__PURE__ */ jsx("text", {
27
- x: 10,
28
- dy: ".32em",
29
- children: domainValue
30
- }),
31
- /* @__PURE__ */ jsx("rect", {
32
- width: "180",
33
- height: 1,
34
- fill: "transparent"
35
- })
36
- ]
37
- }))
26
+ transform: `translate(${innerWidth + internalMargin.left + axisRightWidth + rightLabelWidth},${yTransform})`,
27
+ children: [
28
+ /* @__PURE__ */ jsx("rect", {
29
+ width: "20",
30
+ height: 1,
31
+ fill: "transparent"
32
+ }),
33
+ /* @__PURE__ */ jsx("g", {
34
+ transform: `translate(0,0)`,
35
+ children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsx("g", {
36
+ className: "tick",
37
+ transform: `translate(30,${i * 20})`,
38
+ children: /* @__PURE__ */ jsx(LegendItem, {
39
+ domainValue
40
+ })
41
+ }, domainValue))
42
+ })
43
+ ]
38
44
  });
39
45
  };
40
46
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Legend/RightLegend.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useEffect, useRef, useState } from 'react';\nimport { ChartContext } from '../../ChartContext';\n\nexport const RightLegend = () => {\n const {\n colorScale,\n innerWidth,\n innerHeight,\n setInnerWidth,\n internalMargin,\n setRightLegend,\n props: { margin },\n } = useContext(ChartContext);\n\n // const ref = useRef(null);\n\n // const [yTransform, setYTransform] = useState(innerHeight / 2);\n // useEffect(() => {\n // if (ref.current) {\n // const bounds = ref.current.getBoundingClientRect();\n // setYTransform((prev) => prev - bounds.height / 2);\n // setInnerWidth((prev) => prev - (bounds.width + 30));\n // }\n // }, [setInnerWidth]);\n\n return (\n <g\n ref={setRightLegend}\n transform={`translate(${innerWidth + internalMargin.left},${innerHeight / 2 - internalMargin.top})`}\n >\n {colorScale.domain().map((domainValue, i) => (\n <g className=\"tick\" transform={`translate(30,${i * 20})`}>\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={10} dy=\".32em\">\n {domainValue}\n </text>\n <rect width=\"180\" height={1} fill=\"transparent\" />\n </g>\n ))}\n </g>\n );\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,kBAA+C;AAC/D,SAAS,oBAAoB;AAEtB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,OAAO;AAAA,EAClB,IAAI,WAAW,YAAY;AAa3B,SACE,oBAAC;AAAA,IACC,KAAK;AAAA,IACL,WAAW,aAAa,aAAa,eAAe,QAAQ,cAAc,IAAI,eAAe;AAAA,IAE5F,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,qBAAC;AAAA,MAAE,WAAU;AAAA,MAAO,WAAW,gBAAgB,IAAI;AAAA,MACjD;AAAA,4BAAC;AAAA,UAAO,MAAM,WAAW,WAAW;AAAA,UAAG,GAAG;AAAA,SAAG;AAAA,QAC7C,oBAAC;AAAA,UAAK,GAAG;AAAA,UAAI,IAAG;AAAA,UACb;AAAA,SACH;AAAA,QACA,oBAAC;AAAA,UAAK,OAAM;AAAA,UAAM,QAAQ;AAAA,UAAG,MAAK;AAAA,SAAc;AAAA;AAAA,KAClD,CACD;AAAA,GACH;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const RightLegend = () => {\n const {\n colorScale,\n innerWidth,\n innerHeight,\n rightLabelWidth,\n rightLegend,\n axisRightWidth,\n internalMargin,\n setRightLegend,\n } = useContext(ChartContext);\n\n const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);\n\n useEffect(() => {\n if (rightLegend) {\n const bounds = rightLegend.getBoundingClientRect();\n setYTransform((prev) => prev - bounds.height / 2);\n }\n }, [rightLegend]);\n\n return (\n <g\n ref={setRightLegend}\n transform={`translate(${innerWidth + internalMargin.left + axisRightWidth + rightLabelWidth},${yTransform})`}\n >\n <rect width=\"20\" height={1} fill=\"transparent\" />\n <g transform={`translate(0,0)`}>\n {colorScale.domain().map((domainValue, i) => (\n <g className=\"tick\" transform={`translate(30,${i * 20})`} key={domainValue}>\n <LegendItem domainValue={domainValue} />\n </g>\n ))}\n </g>\n </g>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,UAAU,iBAAiB;AACvD,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,WAAW,YAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,YAAU,MAAM;AACd,QAAI,aAAa;AACf,YAAM,SAAS,YAAY,sBAAsB;AACjD,oBAAc,CAAC,SAAS,OAAO,OAAO,SAAS,CAAC;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,SACE,qBAAC;AAAA,IACC,KAAK;AAAA,IACL,WAAW,aAAa,aAAa,eAAe,OAAO,iBAAiB,mBAAmB;AAAA,IAE/F;AAAA,0BAAC;AAAA,QAAK,OAAM;AAAA,QAAK,QAAQ;AAAA,QAAG,MAAK;AAAA,OAAc;AAAA,MAC/C,oBAAC;AAAA,QAAE,WAAW;AAAA,QACX,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,oBAAC;AAAA,UAAE,WAAU;AAAA,UAAO,WAAW,gBAAgB,IAAI;AAAA,UACjD,8BAAC;AAAA,YAAW;AAAA,WAA0B;AAAA,WADuB,WAE/D,CACD;AAAA,OACH;AAAA;AAAA,GACF;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useContext, useMemo, useEffect, useRef, useState } from "react";
4
4
  import { selectAll, select } from "d3";
5
5
  import { ChartContext } from "../../ChartContext";
6
+ import { LegendItem } from "./LegendItem";
6
7
  const TopLegend = () => {
7
8
  const { colorScale, internalMargin, innerWidth, setTopLegend } = useContext(ChartContext);
8
9
  const ref = useRef(null);
@@ -39,19 +40,8 @@ const TopLegend = () => {
39
40
  width: 1,
40
41
  fill: "transparent"
41
42
  }),
42
- colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsxs("g", {
43
- className: "cell",
44
- children: [
45
- /* @__PURE__ */ jsx("circle", {
46
- fill: colorScale(domainValue),
47
- r: 4
48
- }),
49
- /* @__PURE__ */ jsx("text", {
50
- x: 10,
51
- dy: ".32em",
52
- children: domainValue
53
- })
54
- ]
43
+ colorScale.domain().map((domainValue, i) => /* @__PURE__ */ jsx(LegendItem, {
44
+ domainValue
55
45
  }, domainValue))
56
46
  ]
57
47
  })
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/graphs/Chart/parts/Legend/TopLegend.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\n\nimport { selectAll, select } from 'd3';\nimport { ChartContext } from '../../ChartContext';\n\nexport const TopLegend = () => {\n const { colorScale, internalMargin, innerWidth, setTopLegend } = useContext(ChartContext);\n\n const ref = useRef(null);\n const firstRender = useRef(true);\n\n const [xTransform, setXTransform] = useState(innerWidth / 2 + internalMargin.left);\n useEffect(() => {\n if (ref.current && firstRender.current) {\n const cells = selectAll('.cell');\n const padding = 40;\n let offset = 0;\n cells.each((d, i) => {\n if (cells._groups[0][i - 1]) {\n const lastCell = select(cells._groups[0][i - 1]);\n const d3sel = select(cells._groups[0][i]);\n\n const { width } = lastCell.node().getBBox();\n offset += width + padding;\n d3sel.attr('transform', `translate(${offset}, 0)`);\n }\n });\n const bounds = ref.current.getBoundingClientRect();\n setXTransform((prev) => prev - bounds.width / 2);\n firstRender.current = false;\n }\n }, []);\n\n const render = useMemo(\n () => (\n <g ref={ref} transform={`translate(${xTransform},30)`}>\n <g ref={setTopLegend}>\n <rect height={40} width={1} fill=\"transparent\" />\n {colorScale.domain().map((domainValue, i) => (\n <g key={domainValue} className=\"cell\">\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={10} dy=\".32em\">\n {domainValue}\n </text>\n </g>\n ))}\n </g>\n </g>\n ),\n\n [colorScale, setTopLegend, xTransform],\n );\n\n return render;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,SAAS,WAAW,QAAQ,gBAAgB;AAExE,SAAS,WAAW,cAAc;AAClC,SAAS,oBAAoB;AAEtB,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,YAAY,gBAAgB,YAAY,aAAa,IAAI,WAAW,YAAY;AAExF,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,cAAc,OAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,aAAa,IAAI,eAAe,IAAI;AACjF,YAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,QAAQ,UAAU,OAAO;AAC/B,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,YAAM,KAAK,CAAC,GAAG,MAAM;AACnB,YAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC3B,gBAAM,WAAW,OAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE;AAExC,gBAAM,EAAE,MAAM,IAAI,SAAS,KAAK,EAAE,QAAQ;AAC1C,oBAAU,QAAQ;AAClB,gBAAM,KAAK,aAAa,aAAa,YAAY;AAAA,QACnD;AAAA,MACF,CAAC;AACD,YAAM,SAAS,IAAI,QAAQ,sBAAsB;AACjD,oBAAc,CAAC,SAAS,OAAO,OAAO,QAAQ,CAAC;AAC/C,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS;AAAA,IACb,MACE,oBAAC;AAAA,MAAE;AAAA,MAAU,WAAW,aAAa;AAAA,MACnC,+BAAC;AAAA,QAAE,KAAK;AAAA,QACN;AAAA,8BAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,qBAAC;AAAA,YAAoB,WAAU;AAAA,YAC7B;AAAA,kCAAC;AAAA,gBAAO,MAAM,WAAW,WAAW;AAAA,gBAAG,GAAG;AAAA,eAAG;AAAA,cAC7C,oBAAC;AAAA,gBAAK,GAAG;AAAA,gBAAI,IAAG;AAAA,gBACb;AAAA,eACH;AAAA;AAAA,aAJM,WAKR,CACD;AAAA;AAAA,OACH;AAAA,KACF;AAAA,IAGF,CAAC,YAAY,cAAc,UAAU;AAAA,EACvC;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\n\nimport { selectAll, select } from 'd3';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const TopLegend = () => {\n const { colorScale, internalMargin, innerWidth, setTopLegend } = useContext(ChartContext);\n\n const ref = useRef(null);\n const firstRender = useRef(true);\n\n const [xTransform, setXTransform] = useState(innerWidth / 2 + internalMargin.left);\n\n useEffect(() => {\n if (ref.current && firstRender.current) {\n const cells = selectAll('.cell');\n const padding = 40;\n let offset = 0;\n cells.each((d, i) => {\n if (cells._groups[0][i - 1]) {\n const lastCell = select(cells._groups[0][i - 1]);\n const d3sel = select(cells._groups[0][i]);\n\n const { width } = lastCell.node().getBBox();\n offset += width + padding;\n d3sel.attr('transform', `translate(${offset}, 0)`);\n }\n });\n const bounds = ref.current.getBoundingClientRect();\n setXTransform((prev) => prev - bounds.width / 2);\n firstRender.current = false;\n }\n }, []);\n\n const render = useMemo(\n () => (\n <g ref={ref} transform={`translate(${xTransform},30)`}>\n <g ref={setTopLegend}>\n <rect height={40} width={1} fill=\"transparent\" />\n {colorScale.domain().map((domainValue, i) => (\n <LegendItem key={domainValue} domainValue={domainValue} />\n ))}\n </g>\n </g>\n ),\n\n [colorScale, setTopLegend, xTransform],\n );\n\n return render;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAAA,SAAgB,YAAY,SAAS,WAAW,QAAQ,gBAAgB;AAExE,SAAS,WAAW,cAAc;AAClC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,YAAY,gBAAgB,YAAY,aAAa,IAAI,WAAW,YAAY;AAExF,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,cAAc,OAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,aAAa,IAAI,eAAe,IAAI;AAEjF,YAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,QAAQ,UAAU,OAAO;AAC/B,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,YAAM,KAAK,CAAC,GAAG,MAAM;AACnB,YAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC3B,gBAAM,WAAW,OAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,QAAQ,OAAO,MAAM,QAAQ,GAAG,EAAE;AAExC,gBAAM,EAAE,MAAM,IAAI,SAAS,KAAK,EAAE,QAAQ;AAC1C,oBAAU,QAAQ;AAClB,gBAAM,KAAK,aAAa,aAAa,YAAY;AAAA,QACnD;AAAA,MACF,CAAC;AACD,YAAM,SAAS,IAAI,QAAQ,sBAAsB;AACjD,oBAAc,CAAC,SAAS,OAAO,OAAO,QAAQ,CAAC;AAC/C,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS;AAAA,IACb,MACE,oBAAC;AAAA,MAAE;AAAA,MAAU,WAAW,aAAa;AAAA,MACnC,+BAAC;AAAA,QAAE,KAAK;AAAA,QACN;AAAA,8BAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,oBAAC;AAAA,YAA6B;AAAA,aAAb,WAAuC,CACzD;AAAA;AAAA,OACH;AAAA,KACF;AAAA,IAGF,CAAC,YAAY,cAAc,UAAU;AAAA,EACvC;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }