@elliemae/ds-dataviz 3.8.0 → 3.9.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/graphs/Chart/config/useChart.js +67 -13
- package/dist/cjs/graphs/Chart/config/useChart.js.map +2 -2
- package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js +14 -8
- package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
- package/dist/cjs/graphs/Chart/config/useScales.js +24 -11
- package/dist/cjs/graphs/Chart/config/useScales.js.map +2 -2
- package/dist/cjs/graphs/Chart/helpers/index.js +2 -2
- package/dist/cjs/graphs/Chart/helpers/index.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js +23 -20
- package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js.map +3 -3
- package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js +20 -30
- package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js +4 -9
- package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/ChartContainer.js +28 -14
- package/dist/cjs/graphs/Chart/parts/ChartContainer.js.map +2 -2
- package/dist/cjs/graphs/Chart/{series/Pie.js → parts/Labels/BottomLabel.js} +20 -12
- package/dist/cjs/graphs/Chart/parts/Labels/BottomLabel.js.map +7 -0
- package/dist/cjs/graphs/Chart/parts/Labels/Label.js +52 -0
- package/dist/cjs/graphs/Chart/parts/Labels/Label.js.map +7 -0
- package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js +65 -0
- package/dist/cjs/graphs/Chart/parts/Labels/LeftLabel.js.map +7 -0
- package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js +67 -0
- package/dist/cjs/graphs/Chart/parts/Labels/RightLabel.js.map +7 -0
- package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js +28 -30
- package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js +15 -20
- package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js +71 -0
- package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js.map +7 -0
- package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js +32 -25
- package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js +3 -13
- package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js +50 -16
- package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js +3 -1
- package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js +7 -5
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +19 -18
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarX.js.map +2 -2
- package/dist/cjs/graphs/Chart/parts/SeriesFactory.js +2 -2
- package/dist/cjs/graphs/Chart/parts/SeriesFactory.js.map +2 -2
- package/dist/cjs/graphs/Chart/series/Bars.js +12 -8
- package/dist/cjs/graphs/Chart/series/Bars.js.map +2 -2
- package/dist/cjs/graphs/Chart/series/Line.js +5 -3
- package/dist/cjs/graphs/Chart/series/Line.js.map +2 -2
- package/dist/cjs/graphs/Chart/series/Points.js +9 -4
- package/dist/cjs/graphs/Chart/series/Points.js.map +2 -2
- package/dist/cjs/graphs/Chart/series/index.js +0 -1
- package/dist/cjs/graphs/Chart/series/index.js.map +2 -2
- package/dist/esm/graphs/Chart/config/useChart.js +68 -14
- package/dist/esm/graphs/Chart/config/useChart.js.map +2 -2
- package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js +14 -8
- package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js.map +2 -2
- package/dist/esm/graphs/Chart/config/useScales.js +25 -12
- package/dist/esm/graphs/Chart/config/useScales.js.map +2 -2
- package/dist/esm/graphs/Chart/helpers/index.js +2 -2
- package/dist/esm/graphs/Chart/helpers/index.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js +24 -21
- package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js.map +3 -3
- package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js +21 -31
- package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js +4 -9
- package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/ChartContainer.js +29 -15
- package/dist/esm/graphs/Chart/parts/ChartContainer.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js +28 -0
- package/dist/esm/graphs/Chart/parts/Labels/BottomLabel.js.map +7 -0
- package/dist/esm/graphs/Chart/parts/Labels/Label.js +26 -0
- package/dist/esm/graphs/Chart/parts/Labels/Label.js.map +7 -0
- package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js +39 -0
- package/dist/esm/graphs/Chart/parts/Labels/LeftLabel.js.map +7 -0
- package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js +41 -0
- package/dist/esm/graphs/Chart/parts/Labels/RightLabel.js.map +7 -0
- package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js +28 -30
- package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js +17 -22
- package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js +45 -0
- package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js.map +7 -0
- package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js +33 -26
- package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js +3 -13
- package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js +51 -17
- package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js +3 -1
- package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js +7 -5
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapper.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +19 -18
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarX.js.map +2 -2
- package/dist/esm/graphs/Chart/parts/SeriesFactory.js +2 -2
- package/dist/esm/graphs/Chart/parts/SeriesFactory.js.map +2 -2
- package/dist/esm/graphs/Chart/series/Bars.js +12 -8
- package/dist/esm/graphs/Chart/series/Bars.js.map +2 -2
- package/dist/esm/graphs/Chart/series/Line.js +5 -3
- package/dist/esm/graphs/Chart/series/Line.js.map +2 -2
- package/dist/esm/graphs/Chart/series/Points.js +9 -4
- package/dist/esm/graphs/Chart/series/Points.js.map +2 -2
- package/dist/esm/graphs/Chart/series/index.js +0 -1
- package/dist/esm/graphs/Chart/series/index.js.map +2 -2
- package/package.json +8 -8
- package/dist/cjs/graphs/Chart/series/Pie.js.map +0 -7
- package/dist/esm/graphs/Chart/series/Pie.js +0 -20
- package/dist/esm/graphs/Chart/series/Pie.js.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/BottomLegend.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\nimport { selectAll, select } from 'd3';\nimport { ChartContext } from '../../ChartContext';\n\nexport const BottomLegend = () => {\n const {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwE;AACxE,gBAAkC;AAClC,0BAA6B;
|
|
4
|
+
"sourcesContent": ["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, bottomLabel, 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 (bottomLabel) {\n counter += bottomLabel?.getBoundingClientRect().height + 25;\n }\n if (axisBottomHeight) {\n counter += axisBottomHeight?.getBoundingClientRect().height;\n }\n return counter;\n }, [bottomLabel, 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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwE;AACxE,gBAAkC;AAClC,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,eAAe,MAAM;AAChC,QAAM,EAAE,YAAY,kBAAkB,YAAY,aAAa,aAAa,gBAAgB,gBAAgB,QAC1G,yBAAW,gCAAY;AAEzB,QAAM,UAAM,qBAAO,IAAI;AACvB,QAAM,kBAAc,qBAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,aAAa,CAAC;AAC3D,8BAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,YAAQ,qBAAU,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,eAAW,kBAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,YAAQ,kBAAO,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,aAAS,sBAAQ,MAAM;AAC3B,QAAI,UAAU;AACd,QAAI,aAAa;AACf,iBAAW,aAAa,sBAAsB,EAAE,SAAS;AAAA,IAC3D;AACA,QAAI,kBAAkB;AACpB,iBAAW,kBAAkB,sBAAsB,EAAE;AAAA,IACvD;AACA,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,gBAAgB,CAAC;AAElC,aAAO;AAAA,IACL,MACE,4CAAC;AAAA,MAAE,KAAK;AAAA,MACN,uDAAC;AAAA,QACC;AAAA,QACA,WAAW,aAAa,aAAa,eAAe,SAAS,cAAc,eAAe,MAAM;AAAA,QAChG,WAAU;AAAA,QAEV;AAAA,sDAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,4CAAC;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
|
}
|
|
@@ -31,31 +31,26 @@ var React = __toESM(require("react"));
|
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
32
|
var import_react = require("react");
|
|
33
33
|
var import_ChartContext = require("../../ChartContext");
|
|
34
|
+
var import_LegendItem = require("./LegendItem");
|
|
34
35
|
const LeftLegend = () => {
|
|
35
|
-
const { colorScale, innerHeight, internalMargin,
|
|
36
|
+
const { colorScale, innerHeight, internalMargin, setLeftLegend } = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
37
|
+
const [yTransform, setYTransform] = (0, import_react.useState)(innerHeight / 2 + internalMargin.top);
|
|
38
|
+
(0, import_react.useEffect)(() => {
|
|
39
|
+
if (leftLegend) {
|
|
40
|
+
const bounds = leftLegend.getBoundingClientRect();
|
|
41
|
+
setYTransform((prev) => prev - bounds.height / 2);
|
|
42
|
+
}
|
|
43
|
+
}, [leftLegend]);
|
|
36
44
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
37
|
-
transform: `translate(8,${
|
|
45
|
+
transform: `translate(8,${yTransform})`,
|
|
38
46
|
ref: setLeftLegend,
|
|
39
|
-
children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.
|
|
47
|
+
children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
40
48
|
className: "tick",
|
|
41
49
|
transform: `translate(0,${i * 20})`,
|
|
42
|
-
children:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}),
|
|
47
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", {
|
|
48
|
-
x: 10,
|
|
49
|
-
dy: ".32em",
|
|
50
|
-
children: domainValue
|
|
51
|
-
}),
|
|
52
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", {
|
|
53
|
-
width: "180",
|
|
54
|
-
height: 1,
|
|
55
|
-
fill: "transparent"
|
|
56
|
-
})
|
|
57
|
-
]
|
|
58
|
-
}))
|
|
50
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_LegendItem.LegendItem, {
|
|
51
|
+
domainValue
|
|
52
|
+
})
|
|
53
|
+
}, domainValue))
|
|
59
54
|
});
|
|
60
55
|
};
|
|
61
56
|
//# sourceMappingURL=LeftLegend.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/LeftLegend.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext } from 'react';\nimport { ChartContext } from '../../ChartContext';\n\nexport const LeftLegend = () => {\n const { colorScale, innerHeight, internalMargin,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const LeftLegend = () => {\n const { colorScale, innerHeight, internalMargin, 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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,YAAY,aAAa,gBAAgB,cAAc,QAAI,yBAAW,gCAAY;AAE1F,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,8BAAU,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,4CAAC;AAAA,IAAE,WAAW,eAAe;AAAA,IAAe,KAAK;AAAA,IAC9C,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,4CAAC;AAAA,MAAoB,WAAU;AAAA,MAAO,WAAW,eAAe,IAAI;AAAA,MAClE,sDAAC;AAAA,QAAW;AAAA,OAA0B;AAAA,OADhC,WAER,CACD;AAAA,GACH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var LegendItem_exports = {};
|
|
26
|
+
__export(LegendItem_exports, {
|
|
27
|
+
LegendItem: () => LegendItem
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(LegendItem_exports);
|
|
30
|
+
var React = __toESM(require("react"));
|
|
31
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
|
+
var import_react = require("react");
|
|
33
|
+
var import_ChartContext = require("../../ChartContext");
|
|
34
|
+
const LegendItem = ({ domainValue }) => {
|
|
35
|
+
const {
|
|
36
|
+
colorScale,
|
|
37
|
+
setCurrentData,
|
|
38
|
+
props: { data }
|
|
39
|
+
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
40
|
+
const serieData = data.find((serie) => serie.name === domainValue);
|
|
41
|
+
const handleOnClick = (0, import_react.useCallback)(() => {
|
|
42
|
+
setCurrentData(
|
|
43
|
+
data.map((data2) => {
|
|
44
|
+
if (data2.name === domainValue) {
|
|
45
|
+
return { ...data2, isHidden: !data2.isHidden };
|
|
46
|
+
}
|
|
47
|
+
return data2;
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
}, [data, domainValue, setCurrentData]);
|
|
51
|
+
return (0, import_react.useMemo)(
|
|
52
|
+
() => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
53
|
+
onClick: handleOnClick,
|
|
54
|
+
className: "cell",
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
57
|
+
fill: colorScale(domainValue),
|
|
58
|
+
r: 4
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", {
|
|
61
|
+
x: 10,
|
|
62
|
+
dy: ".32em",
|
|
63
|
+
textDecoration: serieData.isHidden ? "line-through" : "",
|
|
64
|
+
children: domainValue
|
|
65
|
+
})
|
|
66
|
+
]
|
|
67
|
+
}, domainValue),
|
|
68
|
+
[colorScale, domainValue, handleOnClick, serieData.isHidden]
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=LegendItem.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/LegendItem.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useMemo, useCallback } from 'react';\n\nimport { ChartContext } from '../../ChartContext';\n\nexport const LegendItem = ({ domainValue }) => {\n const {\n colorScale,\n setCurrentData,\n props: { data },\n } = useContext(ChartContext);\n\n const serieData = data.find((serie) => serie.name === domainValue);\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\">\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={10} dy=\".32em\" textDecoration={serieData.isHidden ? 'line-through' : ''}>\n {domainValue}\n </text>\n </g>\n ),\n\n [colorScale, domainValue, handleOnClick, serieData.isHidden],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwD;AAExD,0BAA6B;AAEtB,MAAM,aAAa,CAAC,EAAE,YAAY,MAAM;AAC7C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,KAAK;AAAA,EAChB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,YAAY,KAAK,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW;AACjE,QAAM,oBAAgB,0BAAY,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,aAAO;AAAA,IACL,MACE,6CAAC;AAAA,MAAE,SAAS;AAAA,MAAiC,WAAU;AAAA,MACrD;AAAA,oDAAC;AAAA,UAAO,MAAM,WAAW,WAAW;AAAA,UAAG,GAAG;AAAA,SAAG;AAAA,QAC7C,4CAAC;AAAA,UAAK,GAAG;AAAA,UAAI,IAAG;AAAA,UAAQ,gBAAgB,UAAU,WAAW,iBAAiB;AAAA,UAC3E;AAAA,SACH;AAAA;AAAA,OAJ8B,WAKhC;AAAA,IAGF,CAAC,YAAY,aAAa,eAAe,UAAU,QAAQ;AAAA,EAC7D;AACF;",
|
|
6
|
+
"names": ["data"]
|
|
7
|
+
}
|
|
@@ -31,39 +31,46 @@ var React = __toESM(require("react"));
|
|
|
31
31
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
32
32
|
var import_react = require("react");
|
|
33
33
|
var import_ChartContext = require("../../ChartContext");
|
|
34
|
+
var import_LegendItem = require("./LegendItem");
|
|
34
35
|
const RightLegend = () => {
|
|
35
36
|
const {
|
|
37
|
+
props: { y2Axis },
|
|
36
38
|
colorScale,
|
|
37
39
|
innerWidth,
|
|
38
40
|
innerHeight,
|
|
39
|
-
|
|
41
|
+
rightLabel,
|
|
42
|
+
rightLegend,
|
|
43
|
+
axisRightWidth,
|
|
40
44
|
internalMargin,
|
|
41
|
-
setRightLegend
|
|
42
|
-
props: { margin }
|
|
45
|
+
setRightLegend
|
|
43
46
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
44
|
-
|
|
47
|
+
const [yTransform, setYTransform] = (0, import_react.useState)(innerHeight / 2 + internalMargin.top);
|
|
48
|
+
(0, import_react.useEffect)(() => {
|
|
49
|
+
if (rightLegend) {
|
|
50
|
+
const bounds = rightLegend.getBoundingClientRect();
|
|
51
|
+
setYTransform((prev) => prev - bounds.height / 2);
|
|
52
|
+
}
|
|
53
|
+
}, [rightLegend]);
|
|
54
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
45
55
|
ref: setRightLegend,
|
|
46
|
-
transform: `translate(${innerWidth + internalMargin.left
|
|
47
|
-
children:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
children:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
})
|
|
65
|
-
]
|
|
66
|
-
}))
|
|
56
|
+
transform: `translate(${innerWidth + internalMargin.left + (y2Axis ? axisRightWidth?.getBoundingClientRect().width : 0) + (y2Axis?.label ? rightLabel?.getBoundingClientRect().width : 0)},${yTransform})`,
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", {
|
|
59
|
+
width: "20",
|
|
60
|
+
height: 1,
|
|
61
|
+
fill: "transparent"
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
64
|
+
transform: `translate(0,0)`,
|
|
65
|
+
children: colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
66
|
+
className: "tick",
|
|
67
|
+
transform: `translate(30,${i * 20})`,
|
|
68
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_LegendItem.LegendItem, {
|
|
69
|
+
domainValue
|
|
70
|
+
})
|
|
71
|
+
}, domainValue))
|
|
72
|
+
})
|
|
73
|
+
]
|
|
67
74
|
});
|
|
68
75
|
};
|
|
69
76
|
//# sourceMappingURL=RightLegend.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/RightLegend.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { LegendItem } from './LegendItem';\n\nexport const RightLegend = () => {\n const {\n props: { y2Axis },\n colorScale,\n innerWidth,\n innerHeight,\n rightLabel,\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(${\n innerWidth +\n internalMargin.left +\n (y2Axis ? axisRightWidth?.getBoundingClientRect().width : 0) +\n (y2Axis?.label ? rightLabel?.getBoundingClientRect().width : 0)\n },${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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,8BAAU,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,6CAAC;AAAA,IACC,KAAK;AAAA,IACL,WAAW,aACT,aACA,eAAe,QACd,SAAS,gBAAgB,sBAAsB,EAAE,QAAQ,MACzD,QAAQ,QAAQ,YAAY,sBAAsB,EAAE,QAAQ,MAC3D;AAAA,IAEJ;AAAA,kDAAC;AAAA,QAAK,OAAM;AAAA,QAAK,QAAQ;AAAA,QAAG,MAAK;AAAA,OAAc;AAAA,MAC/C,4CAAC;AAAA,QAAE,WAAW;AAAA,QACX,qBAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,4CAAC;AAAA,UAAE,WAAU;AAAA,UAAO,WAAW,gBAAgB,IAAI;AAAA,UACjD,sDAAC;AAAA,YAAW;AAAA,WAA0B;AAAA,WADuB,WAE/D,CACD;AAAA,OACH;AAAA;AAAA,GACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -32,6 +32,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
32
32
|
var import_react = require("react");
|
|
33
33
|
var import_d3 = require("d3");
|
|
34
34
|
var import_ChartContext = require("../../ChartContext");
|
|
35
|
+
var import_LegendItem = require("./LegendItem");
|
|
35
36
|
const TopLegend = () => {
|
|
36
37
|
const { colorScale, internalMargin, innerWidth, setTopLegend } = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
37
38
|
const ref = (0, import_react.useRef)(null);
|
|
@@ -68,19 +69,8 @@ const TopLegend = () => {
|
|
|
68
69
|
width: 1,
|
|
69
70
|
fill: "transparent"
|
|
70
71
|
}),
|
|
71
|
-
colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.
|
|
72
|
-
|
|
73
|
-
children: [
|
|
74
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
75
|
-
fill: colorScale(domainValue),
|
|
76
|
-
r: 4
|
|
77
|
-
}),
|
|
78
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", {
|
|
79
|
-
x: 10,
|
|
80
|
-
dy: ".32em",
|
|
81
|
-
children: domainValue
|
|
82
|
-
})
|
|
83
|
-
]
|
|
72
|
+
colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_LegendItem.LegendItem, {
|
|
73
|
+
domainValue
|
|
84
74
|
}, domainValue))
|
|
85
75
|
]
|
|
86
76
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/TopLegend.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["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 <
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwE;AAExE,gBAAkC;AAClC,0BAA6B;
|
|
4
|
+
"sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwE;AAExE,gBAAkC;AAClC,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,YAAY,MAAM;AAC7B,QAAM,EAAE,YAAY,gBAAgB,YAAY,aAAa,QAAI,yBAAW,gCAAY;AAExF,QAAM,UAAM,qBAAO,IAAI;AACvB,QAAM,kBAAc,qBAAO,IAAI;AAE/B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,aAAa,IAAI,eAAe,IAAI;AAEjF,8BAAU,MAAM;AACd,QAAI,IAAI,WAAW,YAAY,SAAS;AACtC,YAAM,YAAQ,qBAAU,OAAO;AAC/B,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,YAAM,KAAK,CAAC,GAAG,MAAM;AACnB,YAAI,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC3B,gBAAM,eAAW,kBAAO,MAAM,QAAQ,GAAG,IAAI,EAAE;AAC/C,gBAAM,YAAQ,kBAAO,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,aAAS;AAAA,IACb,MACE,4CAAC;AAAA,MAAE;AAAA,MAAU,WAAW,aAAa;AAAA,MACnC,uDAAC;AAAA,QAAE,KAAK;AAAA,QACN;AAAA,sDAAC;AAAA,YAAK,QAAQ;AAAA,YAAI,OAAO;AAAA,YAAG,MAAK;AAAA,WAAc;AAAA,UAC9C,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,4CAAC;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
|
}
|
|
@@ -36,30 +36,64 @@ const Scrapper = () => {
|
|
|
36
36
|
const {
|
|
37
37
|
yScale,
|
|
38
38
|
y2Scale,
|
|
39
|
-
|
|
39
|
+
xScale,
|
|
40
|
+
getXValue,
|
|
41
|
+
getYValue,
|
|
42
|
+
isHorizontal,
|
|
43
|
+
getBandwidth,
|
|
44
|
+
props: { data }
|
|
40
45
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
46
|
+
const getPosition = (0, import_react.useCallback)(
|
|
47
|
+
(datum, scale) => {
|
|
48
|
+
if (isHorizontal) {
|
|
49
|
+
return xScale(getXValue(datum));
|
|
50
|
+
}
|
|
51
|
+
if (scale === "y" || !scale) {
|
|
52
|
+
return yScale(getYValue(datum));
|
|
53
|
+
}
|
|
54
|
+
return y2Scale(getYValue(datum));
|
|
55
|
+
},
|
|
56
|
+
[getXValue, getYValue, isHorizontal, xScale, y2Scale, yScale]
|
|
57
|
+
);
|
|
58
|
+
const isBandAxis = !!yScale.bandwidth;
|
|
41
59
|
const uniqueData = (0, import_react.useMemo)(() => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
60
|
+
let valueToPositionPerSeries;
|
|
61
|
+
if (isBandAxis) {
|
|
62
|
+
valueToPositionPerSeries = data.map(
|
|
63
|
+
(serie) => serie.data.map((datum) => {
|
|
64
|
+
const x = getXValue(datum);
|
|
65
|
+
const y = getYValue(datum);
|
|
66
|
+
return {
|
|
67
|
+
position: yScale(y),
|
|
68
|
+
name: serie.name,
|
|
69
|
+
xValue: x,
|
|
70
|
+
yValue: y
|
|
71
|
+
};
|
|
72
|
+
})
|
|
73
|
+
).flat(1);
|
|
74
|
+
} else {
|
|
75
|
+
valueToPositionPerSeries = data.map(
|
|
76
|
+
(serie) => serie.data.map((datum, i) => ({
|
|
77
|
+
position: getPosition(datum, serie.scale),
|
|
78
|
+
name: serie.name,
|
|
79
|
+
xValue: getXValue(datum),
|
|
80
|
+
yValue: getYValue(datum)
|
|
81
|
+
}))
|
|
82
|
+
).flat(1);
|
|
83
|
+
}
|
|
84
|
+
const positionUniqueData = {};
|
|
51
85
|
valueToPositionPerSeries.forEach((set) => {
|
|
52
|
-
if (
|
|
53
|
-
|
|
86
|
+
if (positionUniqueData[[set.position]]) {
|
|
87
|
+
positionUniqueData[[set.position]] = [...positionUniqueData[[set.position]], { ...set }];
|
|
54
88
|
} else {
|
|
55
|
-
|
|
89
|
+
positionUniqueData[[set.position]] = [{ ...set }];
|
|
56
90
|
}
|
|
57
91
|
});
|
|
58
|
-
return
|
|
59
|
-
}, [data,
|
|
92
|
+
return positionUniqueData;
|
|
93
|
+
}, [data, getXValue, getYValue, y2Scale, yScale]);
|
|
60
94
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
61
95
|
children: Object.keys(uniqueData).map((key) => {
|
|
62
|
-
const yPosition = parseFloat(key);
|
|
96
|
+
const yPosition = parseFloat(key) + (isBandAxis ? getBandwidth() / 2 : 0);
|
|
63
97
|
const datum = uniqueData[key];
|
|
64
98
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ScrapperLine.ScrapperLine, {
|
|
65
99
|
yPosition,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/Scrapper.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { ScrapperLine } from './ScrapperLine';\nexport const Scrapper = () => {\n const {\n yScale,\n y2Scale,\n props: {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useCallback, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { ScrapperLine } from './ScrapperLine';\nexport const Scrapper = () => {\n const {\n yScale,\n y2Scale,\n xScale,\n getXValue,\n getYValue,\n isHorizontal,\n getBandwidth,\n props: { data },\n } = useContext(ChartContext);\n\n const getPosition = useCallback(\n (datum, scale) => {\n if (isHorizontal) {\n return xScale(getXValue(datum));\n }\n if (scale === 'y' || !scale) {\n return yScale(getYValue(datum));\n }\n return y2Scale(getYValue(datum));\n },\n [getXValue, getYValue, isHorizontal, xScale, y2Scale, yScale],\n );\n const isBandAxis = !!yScale.bandwidth;\n\n const uniqueData = useMemo(() => {\n let valueToPositionPerSeries;\n\n if (isBandAxis) {\n valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum) => {\n const x = getXValue(datum);\n const y = getYValue(datum);\n return {\n position: yScale(y),\n name: serie.name,\n xValue: x,\n yValue: y,\n };\n }),\n )\n .flat(1);\n } else {\n valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum, i) => ({\n position: getPosition(datum, serie.scale),\n name: serie.name,\n xValue: getXValue(datum),\n yValue: getYValue(datum),\n })),\n )\n .flat(1);\n }\n const positionUniqueData = {};\n\n valueToPositionPerSeries.forEach((set) => {\n if (positionUniqueData[[set.position]]) {\n positionUniqueData[[set.position]] = [...positionUniqueData[[set.position]], { ...set }];\n } else {\n positionUniqueData[[set.position]] = [{ ...set }];\n }\n });\n\n return positionUniqueData;\n }, [data, getXValue, getYValue, y2Scale, yScale]);\n\n return (\n <g>\n {Object.keys(uniqueData).map((key) => {\n const yPosition = parseFloat(key) + (isBandAxis ? getBandwidth() / 2 : 0);\n const datum = uniqueData[key];\n return <ScrapperLine key={key} yPosition={yPosition} datum={datum} />;\n })}\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAwD;AACxD,0BAA6B;AAC7B,0BAA6B;AACtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,KAAK;AAAA,EAChB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,kBAAc;AAAA,IAClB,CAAC,OAAO,UAAU;AAChB,UAAI,cAAc;AAChB,eAAO,OAAO,UAAU,KAAK,CAAC;AAAA,MAChC;AACA,UAAI,UAAU,OAAO,CAAC,OAAO;AAC3B,eAAO,OAAO,UAAU,KAAK,CAAC;AAAA,MAChC;AACA,aAAO,QAAQ,UAAU,KAAK,CAAC;AAAA,IACjC;AAAA,IACA,CAAC,WAAW,WAAW,cAAc,QAAQ,SAAS,MAAM;AAAA,EAC9D;AACA,QAAM,aAAa,CAAC,CAAC,OAAO;AAE5B,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,QAAI;AAEJ,QAAI,YAAY;AACd,iCAA2B,KACxB;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,UAAU;AACxB,gBAAM,IAAI,UAAU,KAAK;AACzB,gBAAM,IAAI,UAAU,KAAK;AACzB,iBAAO;AAAA,YACL,UAAU,OAAO,CAAC;AAAA,YAClB,MAAM,MAAM;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH,EACC,KAAK,CAAC;AAAA,IACX,OAAO;AACL,iCAA2B,KACxB;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,OAAO,OAAO;AAAA,UAC5B,UAAU,YAAY,OAAO,MAAM,KAAK;AAAA,UACxC,MAAM,MAAM;AAAA,UACZ,QAAQ,UAAU,KAAK;AAAA,UACvB,QAAQ,UAAU,KAAK;AAAA,QACzB,EAAE;AAAA,MACJ,EACC,KAAK,CAAC;AAAA,IACX;AACA,UAAM,qBAAqB,CAAC;AAE5B,6BAAyB,QAAQ,CAAC,QAAQ;AACxC,UAAI,mBAAmB,CAAC,IAAI,QAAQ,IAAI;AACtC,2BAAmB,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC;AAAA,MACzF,OAAO;AACL,2BAAmB,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;AAAA,MAClD;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,WAAW,WAAW,SAAS,MAAM,CAAC;AAEhD,SACE,4CAAC;AAAA,IACE,iBAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AACpC,YAAM,YAAY,WAAW,GAAG,KAAK,aAAa,aAAa,IAAI,IAAI;AACvE,YAAM,QAAQ,WAAW;AACzB,aAAO,4CAAC;AAAA,QAAuB;AAAA,QAAsB;AAAA,SAA3B,GAAyC;AAAA,IACrE,CAAC;AAAA,GACH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -39,6 +39,7 @@ const ScrapperLine = ({ yPosition, datum }) => {
|
|
|
39
39
|
scrapperPosY,
|
|
40
40
|
setScrapperPosY,
|
|
41
41
|
innerWidth,
|
|
42
|
+
yScale,
|
|
42
43
|
props: { TooltipRenderer, scrapper }
|
|
43
44
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
44
45
|
const theme = (0, import_react.useContext)(import_ds_system.ThemeContext);
|
|
@@ -46,6 +47,7 @@ const ScrapperLine = ({ yPosition, datum }) => {
|
|
|
46
47
|
const handleOnMouseEnter = (0, import_react.useCallback)(() => {
|
|
47
48
|
setScrapperPosY(yPosition);
|
|
48
49
|
}, [setScrapperPosY, yPosition]);
|
|
50
|
+
const strokeDetectorWidth = yScale.bandwidth ? yScale.bandwidth() : "4px";
|
|
49
51
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
50
52
|
children: [
|
|
51
53
|
scrapperPosY === yPosition ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
@@ -92,7 +94,7 @@ const ScrapperLine = ({ yPosition, datum }) => {
|
|
|
92
94
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
|
|
93
95
|
onMouseEnter: handleOnMouseEnter,
|
|
94
96
|
x1: 0,
|
|
95
|
-
strokeWidth:
|
|
97
|
+
strokeWidth: strokeDetectorWidth,
|
|
96
98
|
stroke: "transparent",
|
|
97
99
|
y1: yPosition,
|
|
98
100
|
x2: innerWidth,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/ScrapperLine.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useCallback, useState } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext } from '@elliemae/ds-system';\nimport { ChartContext } from '../../ChartContext';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../../styles';\n\nexport const ScrapperLine = ({ yPosition, datum }) => {\n const {\n scrapperPosY,\n setScrapperPosY,\n innerWidth,\n props: { TooltipRenderer, scrapper },\n } = useContext(ChartContext);\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<React.SVGProps<SVGLineElement> | null>();\n\n const handleOnMouseEnter = useCallback(() => {\n setScrapperPosY(yPosition);\n }, [setScrapperPosY, yPosition]);\n\n return (\n <g>\n {scrapperPosY === yPosition ? (\n <g>\n {TooltipRenderer ? (\n <foreignObject>\n <DSPopperJS\n withoutAnimation\n withoutArrow\n customOffset={[0, 5]}\n referenceElement={referenceElement}\n showPopover\n zIndex={theme.zIndex.tooltip}\n // placementOrderPreference=\"\"\n startPlacementPreference={scrapper.tooltipPreference}\n >\n <StyledMouseOverDetectionBox />\n <StyledTooltipContainer>\n <TooltipRenderer data={datum} />\n </StyledTooltipContainer>\n </DSPopperJS>\n </foreignObject>\n ) : null}\n <line\n ref={setReferenceElement}\n x1={innerWidth}\n strokeWidth=\"2px\"\n stroke=\"transparent\"\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n <line\n // ref={setReferenceElement}\n x1={0}\n strokeWidth=\"2px\"\n stroke=\"grey\"\n strokeDasharray={(4, 4)}\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n </g>\n ) : null}\n <line\n onMouseEnter={handleOnMouseEnter}\n x1={0}\n strokeWidth
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,0BAA6B;AAC7B,oBAAoE;AAE7D,MAAM,eAAe,CAAC,EAAE,WAAW,MAAM,MAAM;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,iBAAiB,SAAS;AAAA,EACrC,QAAI,yBAAW,gCAAY;AAC3B,QAAM,YAAQ,yBAAW,6BAAY;AACrC,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAgD;AAEhG,QAAM,yBAAqB,0BAAY,MAAM;AAC3C,oBAAgB,SAAS;AAAA,EAC3B,GAAG,CAAC,iBAAiB,SAAS,CAAC;AAE/B,SACE,6CAAC;AAAA,IACE;AAAA,uBAAiB,YAChB,6CAAC;AAAA,QACE;AAAA,4BACC,4CAAC;AAAA,YACC,uDAAC;AAAA,cACC,kBAAgB;AAAA,cAChB,cAAY;AAAA,cACZ,cAAc,CAAC,GAAG,CAAC;AAAA,cACnB;AAAA,cACA,aAAW;AAAA,cACX,QAAQ,MAAM,OAAO;AAAA,cAErB,0BAA0B,SAAS;AAAA,cAEnC;AAAA,4DAAC,6CAA4B;AAAA,gBAC7B,4CAAC;AAAA,kBACC,sDAAC;AAAA,oBAAgB,MAAM;AAAA,mBAAO;AAAA,iBAChC;AAAA;AAAA,aACF;AAAA,WACF,IACE;AAAA,UACJ,4CAAC;AAAA,YACC,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAO;AAAA,YACP,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,WACN;AAAA,UACA,4CAAC;AAAA,YAEC,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAO;AAAA,YACP,kBAAkB,GAAG;AAAA,YACrB,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,WACN;AAAA;AAAA,OACF,IACE;AAAA,MACJ,4CAAC;AAAA,QACC,cAAc;AAAA,QACd,IAAI;AAAA,QACJ,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useCallback, useState } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext } from '@elliemae/ds-system';\nimport { ChartContext } from '../../ChartContext';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../../styles';\n\nexport const ScrapperLine = ({ yPosition, datum }) => {\n const {\n scrapperPosY,\n setScrapperPosY,\n innerWidth,\n yScale,\n props: { TooltipRenderer, scrapper },\n } = useContext(ChartContext);\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<React.SVGProps<SVGLineElement> | null>();\n\n const handleOnMouseEnter = useCallback(() => {\n setScrapperPosY(yPosition);\n }, [setScrapperPosY, yPosition]);\n\n const strokeDetectorWidth = yScale.bandwidth ? yScale.bandwidth() : '4px';\n\n return (\n <g>\n {scrapperPosY === yPosition ? (\n <g>\n {TooltipRenderer ? (\n <foreignObject>\n <DSPopperJS\n withoutAnimation\n withoutArrow\n customOffset={[0, 5]}\n referenceElement={referenceElement}\n showPopover\n zIndex={theme.zIndex.tooltip}\n // placementOrderPreference=\"\"\n startPlacementPreference={scrapper.tooltipPreference}\n >\n <StyledMouseOverDetectionBox />\n <StyledTooltipContainer>\n <TooltipRenderer data={datum} />\n </StyledTooltipContainer>\n </DSPopperJS>\n </foreignObject>\n ) : null}\n <line\n ref={setReferenceElement}\n x1={innerWidth}\n strokeWidth=\"2px\"\n stroke=\"transparent\"\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n <line\n // ref={setReferenceElement}\n x1={0}\n strokeWidth=\"2px\"\n stroke=\"grey\"\n strokeDasharray={(4, 4)}\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n </g>\n ) : null}\n <line\n onMouseEnter={handleOnMouseEnter}\n x1={0}\n strokeWidth={strokeDetectorWidth}\n stroke=\"transparent\"\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,0BAA6B;AAC7B,oBAAoE;AAE7D,MAAM,eAAe,CAAC,EAAE,WAAW,MAAM,MAAM;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,iBAAiB,SAAS;AAAA,EACrC,QAAI,yBAAW,gCAAY;AAC3B,QAAM,YAAQ,yBAAW,6BAAY;AACrC,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAgD;AAEhG,QAAM,yBAAqB,0BAAY,MAAM;AAC3C,oBAAgB,SAAS;AAAA,EAC3B,GAAG,CAAC,iBAAiB,SAAS,CAAC;AAE/B,QAAM,sBAAsB,OAAO,YAAY,OAAO,UAAU,IAAI;AAEpE,SACE,6CAAC;AAAA,IACE;AAAA,uBAAiB,YAChB,6CAAC;AAAA,QACE;AAAA,4BACC,4CAAC;AAAA,YACC,uDAAC;AAAA,cACC,kBAAgB;AAAA,cAChB,cAAY;AAAA,cACZ,cAAc,CAAC,GAAG,CAAC;AAAA,cACnB;AAAA,cACA,aAAW;AAAA,cACX,QAAQ,MAAM,OAAO;AAAA,cAErB,0BAA0B,SAAS;AAAA,cAEnC;AAAA,4DAAC,6CAA4B;AAAA,gBAC7B,4CAAC;AAAA,kBACC,sDAAC;AAAA,oBAAgB,MAAM;AAAA,mBAAO;AAAA,iBAChC;AAAA;AAAA,aACF;AAAA,WACF,IACE;AAAA,UACJ,4CAAC;AAAA,YACC,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAO;AAAA,YACP,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,WACN;AAAA,UACA,4CAAC;AAAA,YAEC,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAO;AAAA,YACP,kBAAkB,GAAG;AAAA,YACrB,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,WACN;AAAA;AAAA,OACF,IACE;AAAA,MACJ,4CAAC;AAAA,QACC,cAAc;AAAA,QACd,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,OACN;AAAA;AAAA,GACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -38,16 +38,18 @@ const VerticalScrapper = () => {
|
|
|
38
38
|
getBandwidth,
|
|
39
39
|
xScrollbarPosition,
|
|
40
40
|
containerRatio,
|
|
41
|
+
getXValue,
|
|
42
|
+
getYValue,
|
|
41
43
|
props: { xAxis, data }
|
|
42
44
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
43
45
|
const isBandAxis = !!xScale.bandwidth;
|
|
44
46
|
const uniqueData = (0, import_react.useMemo)(() => {
|
|
45
47
|
let valueToPositionPerSeries;
|
|
46
48
|
if (isBandAxis) {
|
|
47
|
-
valueToPositionPerSeries = data.map(
|
|
49
|
+
valueToPositionPerSeries = data.filter((serie) => !serie.isHidden).map(
|
|
48
50
|
(serie) => serie.data.map((datum) => {
|
|
49
|
-
const x =
|
|
50
|
-
const y =
|
|
51
|
+
const x = getXValue(datum);
|
|
52
|
+
const y = getYValue(datum);
|
|
51
53
|
return {
|
|
52
54
|
position: xScale(x),
|
|
53
55
|
name: serie.name,
|
|
@@ -57,7 +59,7 @@ const VerticalScrapper = () => {
|
|
|
57
59
|
})
|
|
58
60
|
).flat(1);
|
|
59
61
|
} else {
|
|
60
|
-
valueToPositionPerSeries = data.map(
|
|
62
|
+
valueToPositionPerSeries = data.filter((serie) => !serie.isHidden).map(
|
|
61
63
|
(serie) => serie.data.filter((datum) => {
|
|
62
64
|
const xScaleValue = xScale(xAxis.cols ? xAxis.cols[datum.position] : datum.value.x);
|
|
63
65
|
return xScaleValue >= xScrollbarPosition * (containerRatio ?? 1) && xScaleValue < xScrollbarPosition * (containerRatio ?? 1) + innerWidth;
|
|
@@ -80,7 +82,7 @@ const VerticalScrapper = () => {
|
|
|
80
82
|
}
|
|
81
83
|
});
|
|
82
84
|
return postionUniqueData;
|
|
83
|
-
}, [isBandAxis, data, xAxis.cols,
|
|
85
|
+
}, [isBandAxis, data, getXValue, getYValue, xScale, xAxis.cols, xScrollbarPosition, containerRatio]);
|
|
84
86
|
const lineWidth = parseFloat(innerWidth / Object.keys(uniqueData).length, 10);
|
|
85
87
|
const render = (0, import_react.useMemo)(
|
|
86
88
|
() => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/VerticalScrapper.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { VerticalScrapperLine } from './VerticalScrapperLine';\n\nexport const VerticalScrapper = () => {\n const {\n xScale,\n getBandwidth,\n xScrollbarPosition,\n containerRatio,\n props: { xAxis, data },\n } = useContext(ChartContext);\n\n const isBandAxis = !!xScale.bandwidth;\n const uniqueData = useMemo(() => {\n let valueToPositionPerSeries;\n if (isBandAxis) {\n valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum) => {\n const x =
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAA2C;AAC3C,0BAA6B;AAC7B,kCAAqC;AAE9B,MAAM,mBAAmB,MAAM;AACpC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,OAAO,KAAK;AAAA,EACvB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,aAAa,CAAC,CAAC,OAAO;AAC5B,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,QAAI;AACJ,QAAI,YAAY;AACd,iCAA2B,KACxB;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,UAAU;AACxB,gBAAM,IAAI,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext';\nimport { VerticalScrapperLine } from './VerticalScrapperLine';\n\nexport const VerticalScrapper = () => {\n const {\n xScale,\n getBandwidth,\n xScrollbarPosition,\n containerRatio,\n getXValue,\n getYValue,\n props: { xAxis, data },\n } = useContext(ChartContext);\n\n const isBandAxis = !!xScale.bandwidth;\n const uniqueData = useMemo(() => {\n let valueToPositionPerSeries;\n if (isBandAxis) {\n valueToPositionPerSeries = data\n .filter((serie) => !serie.isHidden)\n .map((serie) =>\n serie.data.map((datum) => {\n const x = getXValue(datum);\n const y = getYValue(datum);\n return {\n position: xScale(x),\n name: serie.name,\n xValue: x,\n yValue: y,\n };\n }),\n )\n .flat(1);\n } else {\n valueToPositionPerSeries = data\n .filter((serie) => !serie.isHidden)\n .map((serie) =>\n serie.data\n .filter((datum) => {\n const xScaleValue = xScale(xAxis.cols ? xAxis.cols[datum.position] : datum.value.x);\n return (\n xScaleValue >= xScrollbarPosition * (containerRatio ?? 1) &&\n xScaleValue < xScrollbarPosition * (containerRatio ?? 1) + innerWidth\n );\n })\n .map((datum) => {\n return {\n position: xScale(xAxis.cols ? xAxis.cols[datum.position] : datum.value.x),\n name: serie.name,\n xValue: xAxis.cols ? xAxis.cols[datum.position] : datum.value.x,\n yValue: typeof datum.value === 'number' ? datum.value : datum.value.y,\n };\n }),\n )\n .flat(1);\n }\n const postionUniqueData = {};\n\n valueToPositionPerSeries.forEach((set) => {\n if (postionUniqueData[[set.position]]) {\n postionUniqueData[[set.position]] = [...postionUniqueData[[set.position]], { ...set }];\n } else {\n postionUniqueData[[set.position]] = [{ ...set }];\n }\n });\n\n return postionUniqueData;\n }, [isBandAxis, data, getXValue, getYValue, xScale, xAxis.cols, xScrollbarPosition, containerRatio]);\n\n const lineWidth = parseFloat(innerWidth / Object.keys(uniqueData).length, 10);\n\n const render = useMemo(\n () => (\n <g className=\"vertical-scrapper\">\n {Object.keys(uniqueData).map((key, i) => {\n const xPosition = parseFloat(key) + (isBandAxis ? getBandwidth() / 2 : 0);\n const datum = uniqueData[key];\n\n return <VerticalScrapperLine lineWidth={lineWidth} xPosition={xPosition} key={key} datum={datum} />;\n })}\n </g>\n ),\n\n [getBandwidth, isBandAxis, lineWidth, uniqueData],\n );\n\n return render;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAAA,mBAA2C;AAC3C,0BAA6B;AAC7B,kCAAqC;AAE9B,MAAM,mBAAmB,MAAM;AACpC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,OAAO,KAAK;AAAA,EACvB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,aAAa,CAAC,CAAC,OAAO;AAC5B,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,QAAI;AACJ,QAAI,YAAY;AACd,iCAA2B,KACxB,OAAO,CAAC,UAAU,CAAC,MAAM,QAAQ,EACjC;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,UAAU;AACxB,gBAAM,IAAI,UAAU,KAAK;AACzB,gBAAM,IAAI,UAAU,KAAK;AACzB,iBAAO;AAAA,YACL,UAAU,OAAO,CAAC;AAAA,YAClB,MAAM,MAAM;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH,EACC,KAAK,CAAC;AAAA,IACX,OAAO;AACL,iCAA2B,KACxB,OAAO,CAAC,UAAU,CAAC,MAAM,QAAQ,EACjC;AAAA,QAAI,CAAC,UACJ,MAAM,KACH,OAAO,CAAC,UAAU;AACjB,gBAAM,cAAc,OAAO,MAAM,OAAO,MAAM,KAAK,MAAM,YAAY,MAAM,MAAM,CAAC;AAClF,iBACE,eAAe,sBAAsB,kBAAkB,MACvD,cAAc,sBAAsB,kBAAkB,KAAK;AAAA,QAE/D,CAAC,EACA,IAAI,CAAC,UAAU;AACd,iBAAO;AAAA,YACL,UAAU,OAAO,MAAM,OAAO,MAAM,KAAK,MAAM,YAAY,MAAM,MAAM,CAAC;AAAA,YACxE,MAAM,MAAM;AAAA,YACZ,QAAQ,MAAM,OAAO,MAAM,KAAK,MAAM,YAAY,MAAM,MAAM;AAAA,YAC9D,QAAQ,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,MAAM,MAAM;AAAA,UACtE;AAAA,QACF,CAAC;AAAA,MACL,EACC,KAAK,CAAC;AAAA,IACX;AACA,UAAM,oBAAoB,CAAC;AAE3B,6BAAyB,QAAQ,CAAC,QAAQ;AACxC,UAAI,kBAAkB,CAAC,IAAI,QAAQ,IAAI;AACrC,0BAAkB,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,kBAAkB,CAAC,IAAI,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC;AAAA,MACvF,OAAO;AACL,0BAAkB,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;AAAA,MACjD;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,YAAY,MAAM,WAAW,WAAW,QAAQ,MAAM,MAAM,oBAAoB,cAAc,CAAC;AAEnG,QAAM,YAAY,WAAW,aAAa,OAAO,KAAK,UAAU,EAAE,QAAQ,EAAE;AAE5E,QAAM,aAAS;AAAA,IACb,MACE,4CAAC;AAAA,MAAE,WAAU;AAAA,MACV,iBAAO,KAAK,UAAU,EAAE,IAAI,CAAC,KAAK,MAAM;AACvC,cAAM,YAAY,WAAW,GAAG,KAAK,aAAa,aAAa,IAAI,IAAI;AACvE,cAAM,QAAQ,WAAW;AAEzB,eAAO,4CAAC;AAAA,UAAqB;AAAA,UAAsB;AAAA,UAAgC;AAAA,WAAL,GAAmB;AAAA,MACnG,CAAC;AAAA,KACH;AAAA,IAGF,CAAC,cAAc,YAAY,WAAW,UAAU;AAAA,EAClD;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -51,9 +51,9 @@ const VerticalScrapperLine = ({ lineWidth, xPosition, datum }) => {
|
|
|
51
51
|
if (!isGrabbed)
|
|
52
52
|
setScrapperPosX(xPosition);
|
|
53
53
|
}, [isGrabbed, setScrapperPosX, xPosition]);
|
|
54
|
-
const strokeDetectorWidth = xScale.bandwidth ? xScale.bandwidth() :
|
|
55
|
-
const render = (0, import_react.useMemo)(
|
|
56
|
-
|
|
54
|
+
const strokeDetectorWidth = xScale.bandwidth ? xScale.bandwidth() : "4px";
|
|
55
|
+
const render = (0, import_react.useMemo)(
|
|
56
|
+
() => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
57
57
|
children: [
|
|
58
58
|
isActive && !isGrabbed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
59
59
|
children: [
|
|
@@ -98,21 +98,22 @@ const VerticalScrapperLine = ({ lineWidth, xPosition, datum }) => {
|
|
|
98
98
|
y2: innerHeight
|
|
99
99
|
})
|
|
100
100
|
]
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
}),
|
|
102
|
+
[
|
|
103
|
+
isActive,
|
|
104
|
+
isGrabbed,
|
|
105
|
+
TooltipRenderer,
|
|
106
|
+
referenceElement,
|
|
107
|
+
theme.zIndex.tooltip,
|
|
108
|
+
scrapper.tooltipPreference,
|
|
109
|
+
scrapper.color,
|
|
110
|
+
datum,
|
|
111
|
+
xPosition,
|
|
112
|
+
innerHeight,
|
|
113
|
+
handleOnMouseEnter,
|
|
114
|
+
strokeDetectorWidth
|
|
115
|
+
]
|
|
116
|
+
);
|
|
116
117
|
return render;
|
|
117
118
|
};
|
|
118
119
|
//# sourceMappingURL=VerticalScrapperLine.js.map
|