@elliemae/ds-dataviz 3.36.0-rc.0 → 3.36.1-next.7
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/SingleStackedBar/SingleStackedBar.js +2 -4
- package/dist/cjs/graphs/Chart/SingleStackedBar/SingleStackedBar.js.map +1 -1
- package/dist/cjs/graphs/Chart/SingleStackedBar/index.js +0 -1
- package/dist/cjs/graphs/Chart/SingleStackedBar/index.js.map +1 -1
- package/dist/cjs/graphs/Chart/SingleStackedBar/styles.js.map +1 -1
- package/dist/cjs/graphs/Chart/config/useChart.js.map +1 -1
- package/dist/cjs/graphs/Chart/config/useGetters.js +15 -30
- package/dist/cjs/graphs/Chart/config/useGetters.js.map +1 -1
- package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js +17 -34
- package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js.map +1 -1
- package/dist/cjs/graphs/Chart/config/useScales.js +11 -22
- package/dist/cjs/graphs/Chart/config/useScales.js.map +1 -1
- package/dist/cjs/graphs/Chart/config/useValidateProps.js.map +1 -1
- package/dist/cjs/graphs/Chart/helpers/index.js +5 -10
- package/dist/cjs/graphs/Chart/helpers/index.js.map +1 -1
- package/dist/cjs/graphs/Chart/helpers/useUniqueData.js +3 -6
- package/dist/cjs/graphs/Chart/helpers/useUniqueData.js.map +1 -1
- package/dist/cjs/graphs/Chart/helpers/useVirtualizedSeries.js +2 -4
- package/dist/cjs/graphs/Chart/helpers/useVirtualizedSeries.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/A11yRegion.js +1 -2
- package/dist/cjs/graphs/Chart/parts/A11yRegion.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Axis/Axis.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Axis/Axis.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js +6 -12
- package/dist/cjs/graphs/Chart/parts/Axis/AxisBottom.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js +5 -10
- package/dist/cjs/graphs/Chart/parts/Axis/AxisLeft.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js +5 -10
- package/dist/cjs/graphs/Chart/parts/Axis/AxisRight.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Axis/Tick.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/ChartContainer.js +6 -12
- package/dist/cjs/graphs/Chart/parts/ChartContainer.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/ClipPaths.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Labels/Label.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Legend/BottomLegend.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/LeftLegend.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/Legend.js +4 -8
- package/dist/cjs/graphs/Chart/parts/Legend/Legend.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js +3 -6
- package/dist/cjs/graphs/Chart/parts/Legend/LegendItem.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/RightLegend.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Legend/TopLegend.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/Scrapper.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/BlurMask.js +1 -2
- package/dist/cjs/graphs/Chart/parts/Scroller/BlurMask.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/Controllers.js +2 -4
- package/dist/cjs/graphs/Chart/parts/Scroller/Controllers.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarX.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollBarY.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js +7 -14
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerY.js +2 -4
- package/dist/cjs/graphs/Chart/parts/Scroller/ScrollableContainerY.js.map +1 -1
- package/dist/cjs/graphs/Chart/parts/TrendHighlight.js +1 -2
- package/dist/cjs/graphs/Chart/parts/TrendHighlight.js.map +1 -1
- package/dist/cjs/graphs/Chart/scales/index.js +13 -26
- package/dist/cjs/graphs/Chart/scales/index.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Area.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Bars.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/HorizontalBars.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/HorizontalStackedBars.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Line.js +1 -2
- package/dist/cjs/graphs/Chart/series/Line.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Point.js +2 -4
- package/dist/cjs/graphs/Chart/series/Point.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Points.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/Rect.js +5 -10
- package/dist/cjs/graphs/Chart/series/Rect.js.map +1 -1
- package/dist/cjs/graphs/Chart/series/StackedBar.js.map +1 -1
- package/dist/cjs/graphs/Chart/styles.js.map +1 -1
- package/dist/esm/graphs/Chart/SingleStackedBar/SingleStackedBar.js +2 -4
- package/dist/esm/graphs/Chart/SingleStackedBar/SingleStackedBar.js.map +1 -1
- package/dist/esm/graphs/Chart/SingleStackedBar/index.js +0 -1
- package/dist/esm/graphs/Chart/SingleStackedBar/index.js.map +1 -1
- package/dist/esm/graphs/Chart/SingleStackedBar/styles.js.map +1 -1
- package/dist/esm/graphs/Chart/config/useChart.js.map +1 -1
- package/dist/esm/graphs/Chart/config/useGetters.js +15 -30
- package/dist/esm/graphs/Chart/config/useGetters.js.map +1 -1
- package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js +17 -34
- package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js.map +1 -1
- package/dist/esm/graphs/Chart/config/useScales.js +11 -22
- package/dist/esm/graphs/Chart/config/useScales.js.map +1 -1
- package/dist/esm/graphs/Chart/config/useValidateProps.js.map +1 -1
- package/dist/esm/graphs/Chart/helpers/index.js +5 -10
- package/dist/esm/graphs/Chart/helpers/index.js.map +1 -1
- package/dist/esm/graphs/Chart/helpers/useUniqueData.js +3 -6
- package/dist/esm/graphs/Chart/helpers/useUniqueData.js.map +1 -1
- package/dist/esm/graphs/Chart/helpers/useVirtualizedSeries.js +2 -4
- package/dist/esm/graphs/Chart/helpers/useVirtualizedSeries.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/A11yRegion.js +1 -2
- package/dist/esm/graphs/Chart/parts/A11yRegion.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Axis/Axis.js +1 -2
- package/dist/esm/graphs/Chart/parts/Axis/Axis.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js +6 -12
- package/dist/esm/graphs/Chart/parts/Axis/AxisBottom.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js +5 -10
- package/dist/esm/graphs/Chart/parts/Axis/AxisLeft.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js +5 -10
- package/dist/esm/graphs/Chart/parts/Axis/AxisRight.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Axis/Tick.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/ChartContainer.js +6 -12
- package/dist/esm/graphs/Chart/parts/ChartContainer.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/ClipPaths.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Labels/Label.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js +1 -2
- package/dist/esm/graphs/Chart/parts/Legend/BottomLegend.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/LeftLegend.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/Legend.js +4 -8
- package/dist/esm/graphs/Chart/parts/Legend/Legend.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js +3 -6
- package/dist/esm/graphs/Chart/parts/Legend/LegendItem.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/RightLegend.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Legend/TopLegend.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js +1 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/Scrapper.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js +1 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/ScrapperLine.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js +1 -2
- package/dist/esm/graphs/Chart/parts/Scrapper/VerticalScrapperLine.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/BlurMask.js +1 -2
- package/dist/esm/graphs/Chart/parts/Scroller/BlurMask.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/Controllers.js +2 -4
- package/dist/esm/graphs/Chart/parts/Scroller/Controllers.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarX.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollBarY.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js +7 -14
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerX.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerY.js +2 -4
- package/dist/esm/graphs/Chart/parts/Scroller/ScrollableContainerY.js.map +1 -1
- package/dist/esm/graphs/Chart/parts/TrendHighlight.js +1 -2
- package/dist/esm/graphs/Chart/parts/TrendHighlight.js.map +1 -1
- package/dist/esm/graphs/Chart/scales/index.js +13 -26
- package/dist/esm/graphs/Chart/scales/index.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Area.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Bars.js.map +1 -1
- package/dist/esm/graphs/Chart/series/HorizontalBars.js.map +1 -1
- package/dist/esm/graphs/Chart/series/HorizontalStackedBars.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Line.js +1 -2
- package/dist/esm/graphs/Chart/series/Line.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Point.js +2 -4
- package/dist/esm/graphs/Chart/series/Point.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Points.js.map +1 -1
- package/dist/esm/graphs/Chart/series/Rect.js +5 -10
- package/dist/esm/graphs/Chart/series/Rect.js.map +1 -1
- package/dist/esm/graphs/Chart/series/StackedBar.js.map +1 -1
- package/dist/esm/graphs/Chart/styles.js.map +1 -1
- package/package.json +7 -7
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/LeftLegend.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\nimport { LegendItem } from './LegendItem.js';\n\nexport const LeftLegend = () => {\n const {\n originalSeries: series,\n leftLegendHeight,\n innerHeight,\n internalMargin,\n leftLegend,\n setLeftLegend,\n } = useContext(ChartContext);\n\n const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);\n useEffect(() => {\n setYTransform(innerHeight / 2 + internalMargin.top - leftLegendHeight / 2);\n }, [innerHeight, internalMargin.top, leftLegend, leftLegendHeight]);\n\n return (\n <g transform={`translate(8,${yTransform})`} ref={setLeftLegend}>\n {series.map((serie, i) => (\n <g className=\"tick\" transform={`translate(0,${i * 30})`} key={serie.name}>\n <LegendItem key={serie.name} domainValue={serie.name} />\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;ADuBb;AAvBV,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AACjF,8BAAU,MAAM;AACd,kBAAc,cAAc,IAAI,eAAe,MAAM,mBAAmB,CAAC;AAAA,EAC3E,GAAG,CAAC,aAAa,eAAe,KAAK,YAAY,gBAAgB,CAAC;AAElE,SACE,4CAAC,OAAE,WAAW,eAAe,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuBb;AAvBV,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AACjF,8BAAU,MAAM;AACd,kBAAc,cAAc,IAAI,eAAe,MAAM,mBAAmB,CAAC;AAAA,EAC3E,GAAG,CAAC,aAAa,eAAe,KAAK,YAAY,gBAAgB,CAAC;AAElE,SACE,4CAAC,OAAE,WAAW,eAAe,UAAU,KAAK,KAAK,eAC9C,iBAAO,IAAI,CAAC,OAAO,MAClB,4CAAC,OAAE,WAAU,QAAO,WAAW,eAAe,IAAI,EAAE,KAClD,sDAAC,gCAA4B,aAAa,MAAM,QAA/B,MAAM,IAA+B,KADM,MAAM,IAEpE,CACD,GACH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -44,14 +44,10 @@ const Legend = () => {
|
|
|
44
44
|
props: { legend },
|
|
45
45
|
width
|
|
46
46
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
47
|
-
if (legend?.position === "top" || legend?.position === "left" && width <= 400)
|
|
48
|
-
|
|
49
|
-
if (legend?.position === "
|
|
50
|
-
|
|
51
|
-
if (legend?.position === "right")
|
|
52
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_RightLegend.RightLegend, {});
|
|
53
|
-
if (legend?.position === "left")
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_LeftLegend.LeftLegend, {});
|
|
47
|
+
if (legend?.position === "top" || legend?.position === "left" && width <= 400) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TopLegend.TopLegend, {});
|
|
48
|
+
if (legend?.position === "bottom" || legend?.position === "right" && width <= 400) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_BottomLegend.BottomLegend, {});
|
|
49
|
+
if (legend?.position === "right") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_RightLegend.RightLegend, {});
|
|
50
|
+
if (legend?.position === "left") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_LeftLegend.LeftLegend, {});
|
|
55
51
|
return null;
|
|
56
52
|
};
|
|
57
53
|
//# sourceMappingURL=Legend.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/Legend.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext } from 'react';\nimport { RightLegend } from './RightLegend.js';\nimport { TopLegend } from './TopLegend.js';\nimport { ChartContext } from '../../ChartContext.js';\nimport { BottomLegend } from './BottomLegend.js';\nimport { LeftLegend } from './LeftLegend.js';\nexport const Legend = () => {\n const {\n props: { legend },\n width,\n } = useContext(ChartContext);\n if (legend?.position === 'top' || (legend?.position === 'left' && width <= 400)) return <TopLegend />;\n if (legend?.position === 'bottom' || (legend?.position === 'right' && width <= 400)) return <BottomLegend />;\n if (legend?.position === 'right') return <RightLegend />;\n if (legend?.position === 'left') return <LeftLegend />;\n return null;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADWmE;AAX1F,mBAAkC;AAClC,yBAA4B;AAC5B,uBAA0B;AAC1B,0BAA6B;AAC7B,0BAA6B;AAC7B,wBAA2B;AACpB,MAAM,SAAS,MAAM;AAC1B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO;AAAA,IAChB;AAAA,EACF,QAAI,yBAAW,gCAAY;AAC3B,MAAI,QAAQ,aAAa,SAAU,QAAQ,aAAa,UAAU,SAAS
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADWmE;AAX1F,mBAAkC;AAClC,yBAA4B;AAC5B,uBAA0B;AAC1B,0BAA6B;AAC7B,0BAA6B;AAC7B,wBAA2B;AACpB,MAAM,SAAS,MAAM;AAC1B,QAAM;AAAA,IACJ,OAAO,EAAE,OAAO;AAAA,IAChB;AAAA,EACF,QAAI,yBAAW,gCAAY;AAC3B,MAAI,QAAQ,aAAa,SAAU,QAAQ,aAAa,UAAU,SAAS,IAAM,QAAO,4CAAC,8BAAU;AACnG,MAAI,QAAQ,aAAa,YAAa,QAAQ,aAAa,WAAW,SAAS,IAAM,QAAO,4CAAC,oCAAa;AAC1G,MAAI,QAAQ,aAAa,QAAS,QAAO,4CAAC,kCAAY;AACtD,MAAI,QAAQ,aAAa,OAAQ,QAAO,4CAAC,gCAAW;AACpD,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -56,13 +56,10 @@ const LegendItem = (props) => {
|
|
|
56
56
|
const serieData = series.find((serie) => serie.name === domainValue);
|
|
57
57
|
const LegendIcon = LegendItemsMap[serieData?.pointStyle ?? "circle"] ?? (serieData?.type === "line" || types === "scatter" ? LegendItemCircle : LegendItemSquare);
|
|
58
58
|
const handleOnClick = (0, import_react.useCallback)(() => {
|
|
59
|
-
if (legend?.preventFilterAction)
|
|
60
|
-
return;
|
|
59
|
+
if (legend?.preventFilterAction) return;
|
|
61
60
|
setHiddenSeries((prev) => {
|
|
62
|
-
if (prev.includes(domainValue))
|
|
63
|
-
|
|
64
|
-
if (prev.length + 1 !== series.length)
|
|
65
|
-
return [...prev, domainValue];
|
|
61
|
+
if (prev.includes(domainValue)) return prev.filter((serie) => serie !== domainValue);
|
|
62
|
+
if (prev.length + 1 !== series.length) return [...prev, domainValue];
|
|
66
63
|
return prev;
|
|
67
64
|
});
|
|
68
65
|
}, [domainValue, legend?.preventFilterAction, series.length, setHiddenSeries]);
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/LegendItem.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useMemo, useCallback } from 'react';\nimport { LINE } from '../../../constants.js';\nimport { ChartContext } from '../../ChartContext.js';\n\ninterface LegendItemGraphicProps {\n fill: string;\n}\n\ninterface LegendItemProps {\n domainValue: string;\n}\n\n// const LegendItemLine = (props) => <line x1={-18} x2={18} y1={0} y2={0} {...props} strokeWidth={2} />;\nconst LegendItemCircle = (props: LegendItemGraphicProps) => <circle r={6} {...props} />;\nconst LegendItemSquare = (props: LegendItemGraphicProps) => <rect x={-6} y={-6} width={12} height={12} {...props} />;\nconst LegendItemDiamond = (props: LegendItemGraphicProps) => (\n <g transform=\"rotate(45)\">\n <rect x={-6} y={-6} width={12} height={12} {...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 = (props: LegendItemProps) => {\n const {\n colorScale,\n setHiddenSeries,\n hiddenSeries,\n originalSeries: series,\n props: { types, legend },\n } = useContext(ChartContext);\n\n const { domainValue } = props;\n const serieData = series.find((serie) => serie.name === domainValue);\n const LegendIcon =\n LegendItemsMap[serieData?.pointStyle ?? 'circle'] ??\n (serieData?.type === 'line' || types === 'scatter' ? LegendItemCircle : LegendItemSquare);\n\n const handleOnClick = useCallback(() => {\n if (legend?.preventFilterAction) return;\n setHiddenSeries((prev) => {\n if (prev.includes(domainValue)) return prev.filter((serie) => serie !== domainValue);\n if (prev.length + 1 !== series.length) return [...prev, domainValue];\n return prev;\n });\n }, [domainValue, legend?.preventFilterAction, series.length, setHiddenSeries]);\n\n return useMemo(\n () => (\n <g\n onClick={handleOnClick}\n key={domainValue}\n className=\"cell\"\n style={hiddenSeries.includes(domainValue) ? { opacity: 0.2, cursor: 'pointer' } : { cursor: 'pointer' }}\n >\n <LegendIcon fill={colorScale(domainValue) as string} />\n <text x={24} dy=\".32em\" fontWeight=\"600\">\n {domainValue}\n </text>\n </g>\n ),\n\n [LegendIcon, colorScale, domainValue, handleOnClick, hiddenSeries],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADaqC;AAb5D,mBAAwD;AACxD,uBAAqB;AACrB,0BAA6B;AAW7B,MAAM,mBAAmB,CAAC,UAAkC,4CAAC,YAAO,GAAG,GAAI,GAAG,OAAO;AACrF,MAAM,mBAAmB,CAAC,UAAkC,4CAAC,UAAK,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAK,GAAG,OAAO;AAClH,MAAM,oBAAoB,CAAC,UACzB,4CAAC,OAAE,WAAU,cACX,sDAAC,UAAK,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAK,GAAG,OAAO,GACxD;AAGF,MAAM,iBAAiB;AAAA,EACrB,CAAC,sBAAK,YAAY,MAAM,GAAG;AAAA,EAC3B,CAAC,sBAAK,YAAY,MAAM,GAAG;AAAA,EAC3B,CAAC,sBAAK,YAAY,OAAO,GAAG;AAC9B;AAEO,MAAM,aAAa,CAAC,UAA2B;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,OAAO,EAAE,OAAO,OAAO;AAAA,EACzB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,EAAE,YAAY,IAAI;AACxB,QAAM,YAAY,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW;AACnE,QAAM,aACJ,eAAe,WAAW,cAAc,QAAQ,MAC/C,WAAW,SAAS,UAAU,UAAU,YAAY,mBAAmB;AAE1E,QAAM,oBAAgB,0BAAY,MAAM;AACtC,QAAI,QAAQ;
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADaqC;AAb5D,mBAAwD;AACxD,uBAAqB;AACrB,0BAA6B;AAW7B,MAAM,mBAAmB,CAAC,UAAkC,4CAAC,YAAO,GAAG,GAAI,GAAG,OAAO;AACrF,MAAM,mBAAmB,CAAC,UAAkC,4CAAC,UAAK,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAK,GAAG,OAAO;AAClH,MAAM,oBAAoB,CAAC,UACzB,4CAAC,OAAE,WAAU,cACX,sDAAC,UAAK,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAK,GAAG,OAAO,GACxD;AAGF,MAAM,iBAAiB;AAAA,EACrB,CAAC,sBAAK,YAAY,MAAM,GAAG;AAAA,EAC3B,CAAC,sBAAK,YAAY,MAAM,GAAG;AAAA,EAC3B,CAAC,sBAAK,YAAY,OAAO,GAAG;AAC9B;AAEO,MAAM,aAAa,CAAC,UAA2B;AACpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,OAAO,EAAE,OAAO,OAAO;AAAA,EACzB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,EAAE,YAAY,IAAI;AACxB,QAAM,YAAY,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,WAAW;AACnE,QAAM,aACJ,eAAe,WAAW,cAAc,QAAQ,MAC/C,WAAW,SAAS,UAAU,UAAU,YAAY,mBAAmB;AAE1E,QAAM,oBAAgB,0BAAY,MAAM;AACtC,QAAI,QAAQ,oBAAqB;AACjC,oBAAgB,CAAC,SAAS;AACxB,UAAI,KAAK,SAAS,WAAW,EAAG,QAAO,KAAK,OAAO,CAAC,UAAU,UAAU,WAAW;AACnF,UAAI,KAAK,SAAS,MAAM,OAAO,OAAQ,QAAO,CAAC,GAAG,MAAM,WAAW;AACnE,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,aAAa,QAAQ,qBAAqB,OAAO,QAAQ,eAAe,CAAC;AAE7E,aAAO;AAAA,IACL,MACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QAET,WAAU;AAAA,QACV,OAAO,aAAa,SAAS,WAAW,IAAI,EAAE,SAAS,KAAK,QAAQ,UAAU,IAAI,EAAE,QAAQ,UAAU;AAAA,QAEtG;AAAA,sDAAC,cAAW,MAAM,WAAW,WAAW,GAAa;AAAA,UACrD,4CAAC,UAAK,GAAG,IAAI,IAAG,SAAQ,YAAW,OAChC,uBACH;AAAA;AAAA;AAAA,MAPK;AAAA,IAQP;AAAA,IAGF,CAAC,YAAY,YAAY,aAAa,eAAe,YAAY;AAAA,EACnE;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/RightLegend.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useState, useEffect } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\nimport { LegendItem } from './LegendItem.js';\n\nexport const RightLegend = () => {\n const {\n innerWidth,\n innerHeight,\n rightLabelWidth,\n axisRightWidth,\n internalMargin,\n rightLegendHeight,\n setRightLegend,\n originalSeries: series,\n } = useContext(ChartContext);\n\n const [yTransform, setYTransform] = useState(innerHeight / 2 + internalMargin.top);\n\n useEffect(() => {\n setYTransform(innerHeight / 2 + internalMargin.top - rightLegendHeight / 2);\n }, [innerHeight, internalMargin.top, rightLegendHeight]);\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 {series.map((serie, i) => (\n <g className=\"tick\" transform={`translate(30,${i * 30})`} key={serie.name}>\n <LegendItem domainValue={serie.name} />\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;ADuBnB;AAvBJ,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,8BAAU,MAAM;AACd,kBAAc,cAAc,IAAI,eAAe,MAAM,oBAAoB,CAAC;AAAA,EAC5E,GAAG,CAAC,aAAa,eAAe,KAAK,iBAAiB,CAAC;AAEvD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,aAAa,aAAa,eAAe,OAAO,iBAAiB,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuBnB;AAvBJ,mBAAuD;AACvD,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,QAAI,yBAAW,gCAAY;AAE3B,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,cAAc,IAAI,eAAe,GAAG;AAEjF,8BAAU,MAAM;AACd,kBAAc,cAAc,IAAI,eAAe,MAAM,oBAAoB,CAAC;AAAA,EAC5E,GAAG,CAAC,aAAa,eAAe,KAAK,iBAAiB,CAAC;AAEvD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW,aAAa,aAAa,eAAe,OAAO,iBAAiB,eAAe,IAAI,UAAU;AAAA,MAEzG;AAAA,oDAAC,UAAK,OAAM,MAAK,QAAQ,GAAG,MAAK,eAAc;AAAA,QAC/C,4CAAC,OAAE,WAAW,kBACX,iBAAO,IAAI,CAAC,OAAO,MAClB,4CAAC,OAAE,WAAU,QAAO,WAAW,gBAAgB,IAAI,EAAE,KACnD,sDAAC,gCAAW,aAAa,MAAM,MAAM,KADwB,MAAM,IAErE,CACD,GACH;AAAA;AAAA;AAAA,EACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Legend/TopLegend.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useMemo, useEffect, useRef, useState } from 'react';\nimport { select } from 'd3';\nimport { ChartContext } from '../../ChartContext.js';\nimport { LegendItem } from './LegendItem.js';\n\nexport const TopLegend = () => {\n const {\n colorScale,\n currentData,\n internalMargin,\n innerWidth,\n setTopLegend,\n width: graphWidth,\n } = useContext(ChartContext);\n\n const ref = useRef<SVGGElement>(null);\n\n const [xTransform, setXTransform] = useState(innerWidth / 2 + internalMargin.left);\n\n useEffect(() => {\n if (ref.current) {\n const cells = select(ref.current).selectAll('.cell');\n const padding = 30;\n let offset = 0;\n let verticalOffset = 0;\n\n currentData.forEach((_, i) => {\n if (cells.nodes()[i - 1]) {\n const lastCell = select(cells.nodes()[i - 1] as SVGGElement);\n const d3sel = select(cells.nodes()[i] as SVGGElement);\n const { width: currentCellWidth } = d3sel.node()?.getBBox() || { width: 0 };\n\n const lastCellWidth = lastCell.node()?.getBBox()?.width || 0;\n\n if (offset + lastCellWidth + padding + currentCellWidth + 10 > graphWidth) {\n offset = 0;\n verticalOffset += 20;\n } else {\n offset += lastCellWidth + padding;\n }\n\n d3sel.attr('transform', `translate(${offset}, ${verticalOffset})`);\n }\n });\n const bounds = ref.current.getBoundingClientRect();\n setXTransform(innerWidth / 2 + internalMargin.left - bounds.width / 2);\n }\n }, [currentData, graphWidth, innerWidth, internalMargin.left]);\n return useMemo(\n () => (\n <g ref={ref} transform={`translate(${xTransform},10)`}>\n <g ref={setTopLegend}>\n {colorScale.domain().map((domainValue) => (\n <LegendItem key={domainValue} domainValue={domainValue} />\n ))}\n </g>\n </g>\n ),\n\n [xTransform, setTopLegend, colorScale],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqDX;AArDZ,mBAAwE;AACxE,gBAAuB;AACvB,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAoB,IAAI;AAEpC,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,aAAa,IAAI,eAAe,IAAI;AAEjF,8BAAU,MAAM;AACd,QAAI,IAAI,SAAS;AACf,YAAM,YAAQ,kBAAO,IAAI,OAAO,EAAE,UAAU,OAAO;AACnD,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,UAAI,iBAAiB;AAErB,kBAAY,QAAQ,CAAC,GAAG,MAAM;AAC5B,YAAI,MAAM,MAAM,EAAE,IAAI,CAAC,GAAG;AACxB,gBAAM,eAAW,kBAAO,MAAM,MAAM,EAAE,IAAI,CAAC,CAAgB;AAC3D,gBAAM,YAAQ,kBAAO,MAAM,MAAM,EAAE,CAAC,CAAgB;AACpD,gBAAM,EAAE,OAAO,iBAAiB,IAAI,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,OAAO,EAAE;AAE1E,gBAAM,gBAAgB,SAAS,KAAK,GAAG,QAAQ,GAAG,SAAS;AAE3D,cAAI,SAAS,gBAAgB,UAAU,mBAAmB,KAAK,YAAY;AACzE,qBAAS;AACT,8BAAkB;AAAA,UACpB,OAAO;AACL,sBAAU,gBAAgB;AAAA,UAC5B;AAEA,gBAAM,KAAK,aAAa,aAAa,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqDX;AArDZ,mBAAwE;AACxE,gBAAuB;AACvB,0BAA6B;AAC7B,wBAA2B;AAEpB,MAAM,YAAY,MAAM;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,QAAI,yBAAW,gCAAY;AAE3B,QAAM,UAAM,qBAAoB,IAAI;AAEpC,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAS,aAAa,IAAI,eAAe,IAAI;AAEjF,8BAAU,MAAM;AACd,QAAI,IAAI,SAAS;AACf,YAAM,YAAQ,kBAAO,IAAI,OAAO,EAAE,UAAU,OAAO;AACnD,YAAM,UAAU;AAChB,UAAI,SAAS;AACb,UAAI,iBAAiB;AAErB,kBAAY,QAAQ,CAAC,GAAG,MAAM;AAC5B,YAAI,MAAM,MAAM,EAAE,IAAI,CAAC,GAAG;AACxB,gBAAM,eAAW,kBAAO,MAAM,MAAM,EAAE,IAAI,CAAC,CAAgB;AAC3D,gBAAM,YAAQ,kBAAO,MAAM,MAAM,EAAE,CAAC,CAAgB;AACpD,gBAAM,EAAE,OAAO,iBAAiB,IAAI,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,OAAO,EAAE;AAE1E,gBAAM,gBAAgB,SAAS,KAAK,GAAG,QAAQ,GAAG,SAAS;AAE3D,cAAI,SAAS,gBAAgB,UAAU,mBAAmB,KAAK,YAAY;AACzE,qBAAS;AACT,8BAAkB;AAAA,UACpB,OAAO;AACL,sBAAU,gBAAgB;AAAA,UAC5B;AAEA,gBAAM,KAAK,aAAa,aAAa,MAAM,KAAK,cAAc,GAAG;AAAA,QACnE;AAAA,MACF,CAAC;AACD,YAAM,SAAS,IAAI,QAAQ,sBAAsB;AACjD,oBAAc,aAAa,IAAI,eAAe,OAAO,OAAO,QAAQ,CAAC;AAAA,IACvE;AAAA,EACF,GAAG,CAAC,aAAa,YAAY,YAAY,eAAe,IAAI,CAAC;AAC7D,aAAO;AAAA,IACL,MACE,4CAAC,OAAE,KAAU,WAAW,aAAa,UAAU,QAC7C,sDAAC,OAAE,KAAK,cACL,qBAAW,OAAO,EAAE,IAAI,CAAC,gBACxB,4CAAC,gCAA6B,eAAb,WAAuC,CACzD,GACH,GACF;AAAA,IAGF,CAAC,YAAY,cAAc,UAAU;AAAA,EACvC;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -80,8 +80,7 @@ const Scrapper = () => {
|
|
|
80
80
|
}
|
|
81
81
|
const positionUniqueData = {};
|
|
82
82
|
valueToPositionPerSeries.forEach((set) => {
|
|
83
|
-
if (!set.position)
|
|
84
|
-
return;
|
|
83
|
+
if (!set.position) return;
|
|
85
84
|
if (positionUniqueData[set.position]) {
|
|
86
85
|
positionUniqueData[set.position] = [...positionUniqueData[set.position], { ...set }];
|
|
87
86
|
} else {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/Scrapper.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\nimport { ScrapperLine } from './ScrapperLine.js';\nimport type { DSChartT } from '../../react-desc-prop-types.js';\n\nexport const Scrapper = () => {\n const {\n yScale,\n getXValue,\n getYValue,\n getYScaleValue,\n getXScaleValue,\n getBandwidth,\n currentData: data,\n } = useContext(ChartContext);\n\n const isBandAxis = yScale?.type === 'BAND';\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: getYScaleValue(datum),\n name: serie.name,\n xValue: x,\n yValue: y,\n key: datum.position,\n datum,\n color: serie.color,\n };\n }),\n )\n .flat(1);\n } else {\n valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum) => ({\n position: getXScaleValue(datum),\n name: serie.name,\n xValue: getXValue(datum),\n yValue: getYValue(datum),\n key: datum.position,\n datum,\n color: serie.color,\n })),\n )\n .flat(1);\n }\n const positionUniqueData: Record<string, DSChartT.ScrapperDatum[]> = {};\n\n valueToPositionPerSeries.forEach((set) => {\n if (!set.position) return;\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, getXScaleValue, getXValue, getYScaleValue, getYValue, isBandAxis]);\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;ADyER;AAzEf,mBAA2C;AAC3C,0BAA6B;AAC7B,0BAA6B;AAGtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,EACf,QAAI,yBAAW,gCAAY;AAE3B,QAAM,aAAa,QAAQ,SAAS;AAEpC,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,eAAe,KAAK;AAAA,YAC9B,MAAM,MAAM;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,KAAK,MAAM;AAAA,YACX;AAAA,YACA,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,EACC,KAAK,CAAC;AAAA,IACX,OAAO;AACL,iCAA2B,KACxB;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,WAAW;AAAA,UACzB,UAAU,eAAe,KAAK;AAAA,UAC9B,MAAM,MAAM;AAAA,UACZ,QAAQ,UAAU,KAAK;AAAA,UACvB,QAAQ,UAAU,KAAK;AAAA,UACvB,KAAK,MAAM;AAAA,UACX;AAAA,UACA,OAAO,MAAM;AAAA,QACf,EAAE;AAAA,MACJ,EACC,KAAK,CAAC;AAAA,IACX;AACA,UAAM,qBAA+D,CAAC;AAEtE,6BAAyB,QAAQ,CAAC,QAAQ;AACxC,UAAI,CAAC,IAAI;
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADyER;AAzEf,mBAA2C;AAC3C,0BAA6B;AAC7B,0BAA6B;AAGtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,EACf,QAAI,yBAAW,gCAAY;AAE3B,QAAM,aAAa,QAAQ,SAAS;AAEpC,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,eAAe,KAAK;AAAA,YAC9B,MAAM,MAAM;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,KAAK,MAAM;AAAA,YACX;AAAA,YACA,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,EACC,KAAK,CAAC;AAAA,IACX,OAAO;AACL,iCAA2B,KACxB;AAAA,QAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,WAAW;AAAA,UACzB,UAAU,eAAe,KAAK;AAAA,UAC9B,MAAM,MAAM;AAAA,UACZ,QAAQ,UAAU,KAAK;AAAA,UACvB,QAAQ,UAAU,KAAK;AAAA,UACvB,KAAK,MAAM;AAAA,UACX;AAAA,UACA,OAAO,MAAM;AAAA,QACf,EAAE;AAAA,MACJ,EACC,KAAK,CAAC;AAAA,IACX;AACA,UAAM,qBAA+D,CAAC;AAEtE,6BAAyB,QAAQ,CAAC,QAAQ;AACxC,UAAI,CAAC,IAAI,SAAU;AACnB,UAAI,mBAAmB,IAAI,QAAQ,GAAG;AACpC,2BAAmB,IAAI,QAAQ,IAAI,CAAC,GAAG,mBAAmB,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;AAAA,MACrF,OAAO;AACL,2BAAmB,IAAI,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAAA,MAChD;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,gBAAgB,WAAW,gBAAgB,WAAW,UAAU,CAAC;AAE3E,SACE,4CAAC,OACE,iBAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AACpC,UAAM,YAAY,WAAW,GAAG,KAAK,aAAa,aAAa,IAAI,IAAI;AACvE,UAAM,QAAQ,WAAW,GAAG;AAC5B,WAAO,4CAAC,oCAAuB,WAAsB,SAA3B,GAAyC;AAAA,EACrE,CAAC,GACH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -52,8 +52,7 @@ const ScrapperLine = ({ yPosition, datum }) => {
|
|
|
52
52
|
const [referenceElement, setReferenceElement] = (0, import_react.useState)(null);
|
|
53
53
|
const yPositionString = yPosition;
|
|
54
54
|
const handleOnMouseEnter = (0, import_react.useCallback)(() => {
|
|
55
|
-
if (!isGrabbed)
|
|
56
|
-
setScrapperPosY(yPositionString);
|
|
55
|
+
if (!isGrabbed) setScrapperPosY(yPositionString);
|
|
57
56
|
setActivePoint(null);
|
|
58
57
|
}, [isGrabbed, setScrapperPosY, setActivePoint, yPositionString]);
|
|
59
58
|
const strokeDetectorWidth = yScale?.type === "BAND" ? yScale?.getBandwidth() : "4px";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/ScrapperLine.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
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.js';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../../styles.js';\nimport type { DSChartT } from '../../react-desc-prop-types.js';\ninterface ScrapperLineProps {\n yPosition: number;\n datum: DSChartT.ScrapperDatum[];\n}\n\nexport const ScrapperLine: React.ComponentType<ScrapperLineProps> = ({ yPosition, datum }) => {\n const {\n scrapperPosY,\n setScrapperPosY,\n innerWidth,\n yScale,\n setActivePoint,\n isGrabbed,\n props: { TooltipRenderer, scrapper },\n } = useContext(ChartContext);\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<HTMLOrSVGElement | null>(null);\n\n const yPositionString = yPosition;\n const handleOnMouseEnter = useCallback(() => {\n if (!isGrabbed) setScrapperPosY(yPositionString);\n setActivePoint(null);\n }, [isGrabbed, setScrapperPosY, setActivePoint, yPositionString]);\n\n const strokeDetectorWidth = yScale?.type === 'BAND' ? yScale?.getBandwidth() : '4px';\n\n return (\n <g>\n {scrapperPosY === yPositionString ? (\n <g>\n {TooltipRenderer ? (\n <foreignObject>\n <DSPopperJS\n withoutAnimation\n withoutArrow\n customOffset={[0, 5]}\n referenceElement={referenceElement as HTMLElement}\n showPopover\n zIndex={theme.zIndex.tooltip}\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 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;ADsCT;AAtCd,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,0BAA6B;AAC7B,oBAAoE;AAO7D,MAAM,eAAuD,CAAC,EAAE,WAAW,MAAM,MAAM;AAC5F,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;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,uBAAkC,IAAI;AAEtF,QAAM,kBAAkB;AACxB,QAAM,yBAAqB,0BAAY,MAAM;AAC3C,QAAI,CAAC
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsCT;AAtCd,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,0BAA6B;AAC7B,oBAAoE;AAO7D,MAAM,eAAuD,CAAC,EAAE,WAAW,MAAM,MAAM;AAC5F,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;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,uBAAkC,IAAI;AAEtF,QAAM,kBAAkB;AACxB,QAAM,yBAAqB,0BAAY,MAAM;AAC3C,QAAI,CAAC,UAAW,iBAAgB,eAAe;AAC/C,mBAAe,IAAI;AAAA,EACrB,GAAG,CAAC,WAAW,iBAAiB,gBAAgB,eAAe,CAAC;AAEhE,QAAM,sBAAsB,QAAQ,SAAS,SAAS,QAAQ,aAAa,IAAI;AAE/E,SACE,6CAAC,OACE;AAAA,qBAAiB,kBAChB,6CAAC,OACE;AAAA,wBACC,4CAAC,mBACC;AAAA,QAAC;AAAA;AAAA,UACC,kBAAgB;AAAA,UAChB,cAAY;AAAA,UACZ,cAAc,CAAC,GAAG,CAAC;AAAA,UACnB;AAAA,UACA,aAAW;AAAA,UACX,QAAQ,MAAM,OAAO;AAAA,UACrB,0BAA0B,UAAU;AAAA,UAEpC;AAAA,wDAAC,6CAA4B;AAAA,YAC7B,4CAAC,wCACC,sDAAC,mBAAgB,MAAM,OAAO,GAChC;AAAA;AAAA;AAAA,MACF,GACF,IACE;AAAA,MACJ;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,aAAY;AAAA,UACZ,QAAO;AAAA,UACP,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA;AAAA,MACN;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ,aAAY;AAAA,UACZ,QAAO;AAAA,UACP,iBAAiB;AAAA,UACjB,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA;AAAA,MACN;AAAA,OACF,IACE;AAAA,IACJ;AAAA,MAAC;AAAA;AAAA,QACC,cAAc;AAAA,QACd,IAAI;AAAA,QACJ,aAAa;AAAA,QACb,QAAO;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA;AAAA,IACN;AAAA,KACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -55,8 +55,7 @@ const VerticalScrapperLine = import_react.default.memo(
|
|
|
55
55
|
const [referenceElement, setReferenceElement] = (0, import_react.useState)();
|
|
56
56
|
const isActive = scrapperPosX === xPosition;
|
|
57
57
|
const handleOnMouseEnter = (0, import_react.useCallback)(() => {
|
|
58
|
-
if (!isGrabbed)
|
|
59
|
-
setScrapperPosX(xPosition);
|
|
58
|
+
if (!isGrabbed) setScrapperPosX(xPosition);
|
|
60
59
|
setActivePoint(null);
|
|
61
60
|
}, [isGrabbed, setActivePoint, setScrapperPosX, xPosition]);
|
|
62
61
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { transform: `translate(${xScale?.type === "BAND" ? xScale?.getBandwidth() / 2 : 0}, 0)`, children: [
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scrapper/VerticalScrapperLine.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext, useCallback, useState } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext } from '@elliemae/ds-system';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../../styles.js';\nimport type { DSChartT } from '../../react-desc-prop-types.js';\nimport type { ScaleT } from '../../scales/index.js';\ninterface VerticalScrapperLineProps {\n rectDetector?: { left: number; right: number };\n xPosition: number;\n data: DSChartT.ScrapperDatum[];\n scrapperPosX: number;\n setScrapperPosX: (x: number) => void;\n isGrabbed: boolean;\n xScale: ScaleT | null;\n setActivePoint: React.Dispatch<React.SetStateAction<DSChartT.InternalDatum | null>>;\n innerHeight: number;\n TooltipRenderer?:\n | React.ComponentType<{\n data: {\n name: string;\n xValue: string | number | Date | null;\n yValue: string | number | Date | null;\n datum: DSChartT.InternalDatum;\n }[];\n }>\n | undefined;\n scrapper: DSChartT.ScrapperT;\n}\n\nexport const VerticalScrapperLine: React.ComponentType<VerticalScrapperLineProps> = React.memo(\n ({\n rectDetector,\n xPosition,\n data,\n scrapperPosX,\n setScrapperPosX,\n isGrabbed,\n xScale,\n setActivePoint,\n innerHeight,\n TooltipRenderer,\n scrapper,\n }) => {\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<HTMLOrSVGElement | null>();\n const isActive = scrapperPosX === xPosition;\n const handleOnMouseEnter = useCallback(() => {\n if (!isGrabbed) setScrapperPosX(xPosition);\n setActivePoint(null);\n }, [isGrabbed, setActivePoint, setScrapperPosX, xPosition]);\n return (\n <g transform={`translate(${xScale?.type === 'BAND' ? xScale?.getBandwidth() / 2 : 0}, 0)`}>\n {isActive && !isGrabbed ? (\n <g>\n {TooltipRenderer ? (\n <foreignObject>\n <DSPopperJS\n withoutAnimation\n withoutArrow\n customOffset={[0, 5]}\n referenceElement={referenceElement as HTMLElement}\n showPopover\n zIndex={theme.zIndex.tooltip}\n startPlacementPreference={scrapper.tooltipPreference}\n >\n <StyledMouseOverDetectionBox />\n <StyledTooltipContainer>\n <TooltipRenderer data={data} />\n </StyledTooltipContainer>\n </DSPopperJS>\n </foreignObject>\n ) : null}\n <line\n ref={setReferenceElement}\n x1={xPosition}\n strokeWidth=\"2px\"\n stroke={scrapper.color}\n y1={0}\n x2={xPosition}\n y2={innerHeight}\n strokeDasharray={'4 4'}\n />\n </g>\n ) : null}\n <rect\n onMouseOver={handleOnMouseEnter}\n x={xScale?.type === 'BAND' ? xPosition - xScale?.getBandwidth() / 2 : xPosition - (rectDetector?.left ?? 0)}\n fill=\"transparent\"\n y={0}\n width={\n xScale?.type === 'BAND' ? xScale?.getBandwidth() : (rectDetector?.right ?? 0) + (rectDetector?.left ?? 0)\n }\n height={innerHeight}\n />\n </g>\n );\n },\n);\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADwDP;AAxDhB,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,oBAAoE;AA0B7D,MAAM,uBAAuE,aAAAA,QAAM;AAAA,EACxF,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAAM;AACJ,UAAM,YAAQ,yBAAW,6BAAY;AACrC,UAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAkC;AAClF,UAAM,WAAW,iBAAiB;AAClC,UAAM,yBAAqB,0BAAY,MAAM;AAC3C,UAAI,CAAC
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADwDP;AAxDhB,mBAAyD;AACzD,yBAA2B;AAC3B,uBAA6B;AAC7B,oBAAoE;AA0B7D,MAAM,uBAAuE,aAAAA,QAAM;AAAA,EACxF,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAAM;AACJ,UAAM,YAAQ,yBAAW,6BAAY;AACrC,UAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAkC;AAClF,UAAM,WAAW,iBAAiB;AAClC,UAAM,yBAAqB,0BAAY,MAAM;AAC3C,UAAI,CAAC,UAAW,iBAAgB,SAAS;AACzC,qBAAe,IAAI;AAAA,IACrB,GAAG,CAAC,WAAW,gBAAgB,iBAAiB,SAAS,CAAC;AAC1D,WACE,6CAAC,OAAE,WAAW,aAAa,QAAQ,SAAS,SAAS,QAAQ,aAAa,IAAI,IAAI,CAAC,QAChF;AAAA,kBAAY,CAAC,YACZ,6CAAC,OACE;AAAA,0BACC,4CAAC,mBACC;AAAA,UAAC;AAAA;AAAA,YACC,kBAAgB;AAAA,YAChB,cAAY;AAAA,YACZ,cAAc,CAAC,GAAG,CAAC;AAAA,YACnB;AAAA,YACA,aAAW;AAAA,YACX,QAAQ,MAAM,OAAO;AAAA,YACrB,0BAA0B,SAAS;AAAA,YAEnC;AAAA,0DAAC,6CAA4B;AAAA,cAC7B,4CAAC,wCACC,sDAAC,mBAAgB,MAAY,GAC/B;AAAA;AAAA;AAAA,QACF,GACF,IACE;AAAA,QACJ;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAQ,SAAS;AAAA,YACjB,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,iBAAiB;AAAA;AAAA,QACnB;AAAA,SACF,IACE;AAAA,MACJ;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,GAAG,QAAQ,SAAS,SAAS,YAAY,QAAQ,aAAa,IAAI,IAAI,aAAa,cAAc,QAAQ;AAAA,UACzG,MAAK;AAAA,UACL,GAAG;AAAA,UACH,OACE,QAAQ,SAAS,SAAS,QAAQ,aAAa,KAAK,cAAc,SAAS,MAAM,cAAc,QAAQ;AAAA,UAEzG,QAAQ;AAAA;AAAA,MACV;AAAA,OACF;AAAA,EAEJ;AACF;",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
|
@@ -70,8 +70,7 @@ const BlurMask = () => {
|
|
|
70
70
|
] });
|
|
71
71
|
}, [containerRatio, innerHeight, innerWidth, xScrollbarPosition]);
|
|
72
72
|
return (0, import_react.useMemo)(() => {
|
|
73
|
-
if (containerRatio === 1)
|
|
74
|
-
return null;
|
|
73
|
+
if (containerRatio === 1) return null;
|
|
75
74
|
if (xScroll && !yScroll) {
|
|
76
75
|
const realWidth = xScrollbarPosition === 0 ? innerWidth + internalMargin.left : innerWidth;
|
|
77
76
|
const realX = xScrollbarPosition === 0 ? -internalMargin.left : 0;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/BlurMask.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\n\nexport const BlurMask = () => {\n const {\n props: { xScroll, yScroll },\n xScrollbarPosition,\n innerWidth,\n internalMargin,\n containerRatio,\n innerHeight,\n chartId,\n height,\n width,\n } = useContext(ChartContext);\n\n const gradient = useMemo(() => {\n if (xScrollbarPosition === 0) {\n return (\n <>\n <stop offset=\"93%\" style={{ stopColor: 'white', stopOpacity: 1 }} />\n <stop offset=\"100%\" style={{ stopColor: 'white', stopOpacity: 0 }} />\n </>\n );\n }\n\n const isAtEndXScroll =\n innerWidth * containerRatio === (xScrollbarPosition + innerWidth / containerRatio) * containerRatio;\n const isAtEndYScroll =\n innerHeight * containerRatio === (xScrollbarPosition + innerHeight / containerRatio) * containerRatio;\n if (isAtEndXScroll || isAtEndYScroll) {\n return (\n <>\n <stop offset=\"0%\" style={{ stopColor: 'white', stopOpacity: 0 }} />\n <stop offset=\"7%\" style={{ stopColor: 'white', stopOpacity: 1 }} />\n </>\n );\n }\n\n return (\n <>\n <stop offset=\"0%\" style={{ stopColor: 'white', stopOpacity: 0 }} />\n <stop offset=\"7%\" style={{ stopColor: 'white', stopOpacity: 1 }} />\n <stop offset=\"93%\" style={{ stopColor: 'white', stopOpacity: 1 }} />\n <stop offset=\"100%\" style={{ stopColor: 'white', stopOpacity: 0 }} />\n </>\n );\n }, [containerRatio, innerHeight, innerWidth, xScrollbarPosition]);\n\n return useMemo(() => {\n if (containerRatio === 1) return null;\n if (xScroll && !yScroll) {\n // we do this to not trim the ticks marks when the scrollbar is at the beginning\n const realWidth = xScrollbarPosition === 0 ? innerWidth + internalMargin.left : innerWidth;\n const realX = xScrollbarPosition === 0 ? -internalMargin.left : 0;\n\n return (\n <defs>\n <linearGradient id={`filter-fade-${chartId}`}>{gradient}</linearGradient>\n\n <mask id={`mask-${chartId}`}>\n <rect x={realX} width={realWidth} height={height} fill={`url(#filter-fade-${chartId}`}></rect>\n </mask>\n </defs>\n );\n }\n if (yScroll && !xScroll) {\n return (\n <defs>\n <linearGradient x2=\"0%\" y2=\"100%\" id={`filter-fade-${chartId}`}>\n {gradient}\n </linearGradient>\n\n <mask id={`mask-y-${chartId}`}>\n <rect\n x={-internalMargin.left}\n width={width}\n height={innerHeight}\n fill={`url(#filter-fade-${chartId}`}\n ></rect>\n </mask>\n </defs>\n );\n }\n return null;\n }, [\n chartId,\n containerRatio,\n gradient,\n height,\n innerHeight,\n innerWidth,\n internalMargin.left,\n width,\n xScroll,\n xScrollbarPosition,\n yScroll,\n ]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBf;AAnBR,mBAA2C;AAC3C,0BAA6B;AAEtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS,QAAQ;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,eAAW,sBAAQ,MAAM;AAC7B,QAAI,uBAAuB,GAAG;AAC5B,aACE,4EACE;AAAA,oDAAC,UAAK,QAAO,OAAM,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,QAClE,4CAAC,UAAK,QAAO,QAAO,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,SACrE;AAAA,IAEJ;AAEA,UAAM,iBACJ,aAAa,oBAAoB,qBAAqB,aAAa,kBAAkB;AACvF,UAAM,iBACJ,cAAc,oBAAoB,qBAAqB,cAAc,kBAAkB;AACzF,QAAI,kBAAkB,gBAAgB;AACpC,aACE,4EACE;AAAA,oDAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,QACjE,4CAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,SACnE;AAAA,IAEJ;AAEA,WACE,4EACE;AAAA,kDAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MACjE,4CAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MACjE,4CAAC,UAAK,QAAO,OAAM,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MAClE,4CAAC,UAAK,QAAO,QAAO,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,OACrE;AAAA,EAEJ,GAAG,CAAC,gBAAgB,aAAa,YAAY,kBAAkB,CAAC;AAEhE,aAAO,sBAAQ,MAAM;AACnB,QAAI,mBAAmB
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBf;AAnBR,mBAA2C;AAC3C,0BAA6B;AAEtB,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS,QAAQ;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,eAAW,sBAAQ,MAAM;AAC7B,QAAI,uBAAuB,GAAG;AAC5B,aACE,4EACE;AAAA,oDAAC,UAAK,QAAO,OAAM,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,QAClE,4CAAC,UAAK,QAAO,QAAO,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,SACrE;AAAA,IAEJ;AAEA,UAAM,iBACJ,aAAa,oBAAoB,qBAAqB,aAAa,kBAAkB;AACvF,UAAM,iBACJ,cAAc,oBAAoB,qBAAqB,cAAc,kBAAkB;AACzF,QAAI,kBAAkB,gBAAgB;AACpC,aACE,4EACE;AAAA,oDAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,QACjE,4CAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,SACnE;AAAA,IAEJ;AAEA,WACE,4EACE;AAAA,kDAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MACjE,4CAAC,UAAK,QAAO,MAAK,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MACjE,4CAAC,UAAK,QAAO,OAAM,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,MAClE,4CAAC,UAAK,QAAO,QAAO,OAAO,EAAE,WAAW,SAAS,aAAa,EAAE,GAAG;AAAA,OACrE;AAAA,EAEJ,GAAG,CAAC,gBAAgB,aAAa,YAAY,kBAAkB,CAAC;AAEhE,aAAO,sBAAQ,MAAM;AACnB,QAAI,mBAAmB,EAAG,QAAO;AACjC,QAAI,WAAW,CAAC,SAAS;AAEvB,YAAM,YAAY,uBAAuB,IAAI,aAAa,eAAe,OAAO;AAChF,YAAM,QAAQ,uBAAuB,IAAI,CAAC,eAAe,OAAO;AAEhE,aACE,6CAAC,UACC;AAAA,oDAAC,oBAAe,IAAI,eAAe,OAAO,IAAK,oBAAS;AAAA,QAExD,4CAAC,UAAK,IAAI,QAAQ,OAAO,IACvB,sDAAC,UAAK,GAAG,OAAO,OAAO,WAAW,QAAgB,MAAM,oBAAoB,OAAO,IAAI,GACzF;AAAA,SACF;AAAA,IAEJ;AACA,QAAI,WAAW,CAAC,SAAS;AACvB,aACE,6CAAC,UACC;AAAA,oDAAC,oBAAe,IAAG,MAAK,IAAG,QAAO,IAAI,eAAe,OAAO,IACzD,oBACH;AAAA,QAEA,4CAAC,UAAK,IAAI,UAAU,OAAO,IACzB;AAAA,UAAC;AAAA;AAAA,YACC,GAAG,CAAC,eAAe;AAAA,YACnB;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,oBAAoB,OAAO;AAAA;AAAA,QAClC,GACH;AAAA,SACF;AAAA,IAEJ;AACA,WAAO;AAAA,EACT,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -80,10 +80,8 @@ const Controllers = () => {
|
|
|
80
80
|
},
|
|
81
81
|
[containerRef, lastScrollbarPosition, setContainerRatio, setXScrollbarPosition]
|
|
82
82
|
);
|
|
83
|
-
if (xScale?.type === "BAND" || yScale?.type === "BAND")
|
|
84
|
-
|
|
85
|
-
if (!xScroll)
|
|
86
|
-
return null;
|
|
83
|
+
if (xScale?.type === "BAND" || yScale?.type === "BAND") return null;
|
|
84
|
+
if (!xScroll) return null;
|
|
87
85
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
88
86
|
StyledResetter,
|
|
89
87
|
{
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/Controllers.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useCallback, useMemo } from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { ChartContext } from '../../ChartContext.js';\nimport { TOOLBAR } from '../../../constants.js';\n\nconst StyledResetter = styled('g')<{ isDisabled: boolean }>`\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ isDisabled }) => (isDisabled ? '0.4' : '1')};\n &focus {\n outline: 2px solid blue;\n }\n`;\nexport const Controllers = () => {\n const {\n props: { xScroll },\n width,\n internalMargin,\n xScale,\n yScale,\n containerRef,\n containerRatio,\n setContainerRatio,\n lastScrollbarPosition,\n setToolbarRef,\n setXScrollbarPosition,\n } = useContext(ChartContext);\n\n const isDisabled = useMemo(() => containerRatio === 1, [containerRatio]);\n const handleOnClick = useCallback(() => {\n setContainerRatio(1);\n setXScrollbarPosition(0);\n lastScrollbarPosition.current = 0;\n }, [lastScrollbarPosition, setContainerRatio, setXScrollbarPosition]);\n\n const handleOnKeyDown: React.KeyboardEventHandler = useCallback(\n (e) => {\n e.stopPropagation();\n if (['Space', 'Enter'].includes(e.code)) {\n setContainerRatio(1);\n setXScrollbarPosition(0);\n lastScrollbarPosition.current = 0;\n containerRef?.focus();\n }\n\n if (e.code === 'Tab' && e.shiftKey) {\n e.preventDefault();\n containerRef?.focus();\n }\n },\n [containerRef, lastScrollbarPosition, setContainerRatio, setXScrollbarPosition],\n );\n\n // if is a bar chart we dont give controls\n if (xScale?.type === 'BAND' || yScale?.type === 'BAND') return null;\n\n if (!xScroll) return null;\n return (\n <StyledResetter\n onClick={handleOnClick}\n onKeyDown={handleOnKeyDown}\n transform={`translate(${width - TOOLBAR.RESET.WIDTH * 2},${internalMargin.top / 2 - TOOLBAR.RESET.HEIGHT / 2})`}\n strokeLinecap=\"round\"\n isDisabled={isDisabled}\n innerRef={setToolbarRef}\n role=\"button\"\n aria-label=\"Reset zoom in chart\"\n tabIndex={isDisabled ? -1 : 0}\n >\n <path\n d=\"M 2.875 7.75 A 5.625 5.625 0 1 1 4.5225 11.7275 L 8.2725 10.7275 L 6.5225 14.9775 L 4.5225 11.7275\n M 0 0 H 17 V 17 H 0 V 0 \"\n fill=\"#ffffff\"\n stroke=\"#000000\"\n strokeLinecap=\"round\"\n strokeWidth=\"1\"\n ></path>\n </StyledResetter>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsEjB;AApEN,mBAAwD;AACxD,uBAAuB;AACvB,0BAA6B;AAC7B,uBAAwB;AAExB,MAAM,qBAAiB,yBAAO,GAAG;AAAA,YACrB,CAAC,EAAE,WAAW,MAAO,aAAa,gBAAgB;AAAA,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsEjB;AApEN,mBAAwD;AACxD,uBAAuB;AACvB,0BAA6B;AAC7B,uBAAwB;AAExB,MAAM,qBAAiB,yBAAO,GAAG;AAAA,YACrB,CAAC,EAAE,WAAW,MAAO,aAAa,gBAAgB,SAAU;AAAA,aAC3D,CAAC,EAAE,WAAW,MAAO,aAAa,QAAQ,GAAI;AAAA;AAAA;AAAA;AAAA;AAKpD,MAAM,cAAc,MAAM;AAC/B,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,iBAAa,sBAAQ,MAAM,mBAAmB,GAAG,CAAC,cAAc,CAAC;AACvE,QAAM,oBAAgB,0BAAY,MAAM;AACtC,sBAAkB,CAAC;AACnB,0BAAsB,CAAC;AACvB,0BAAsB,UAAU;AAAA,EAClC,GAAG,CAAC,uBAAuB,mBAAmB,qBAAqB,CAAC;AAEpE,QAAM,sBAA8C;AAAA,IAClD,CAAC,MAAM;AACL,QAAE,gBAAgB;AAClB,UAAI,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG;AACvC,0BAAkB,CAAC;AACnB,8BAAsB,CAAC;AACvB,8BAAsB,UAAU;AAChC,sBAAc,MAAM;AAAA,MACtB;AAEA,UAAI,EAAE,SAAS,SAAS,EAAE,UAAU;AAClC,UAAE,eAAe;AACjB,sBAAc,MAAM;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,cAAc,uBAAuB,mBAAmB,qBAAqB;AAAA,EAChF;AAGA,MAAI,QAAQ,SAAS,UAAU,QAAQ,SAAS,OAAQ,QAAO;AAE/D,MAAI,CAAC,QAAS,QAAO;AACrB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW,aAAa,QAAQ,yBAAQ,MAAM,QAAQ,CAAC,IAAI,eAAe,MAAM,IAAI,yBAAQ,MAAM,SAAS,CAAC;AAAA,MAC5G,eAAc;AAAA,MACd;AAAA,MACA,UAAU;AAAA,MACV,MAAK;AAAA,MACL,cAAW;AAAA,MACX,UAAU,aAAa,KAAK;AAAA,MAE5B;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UAEF,MAAK;AAAA,UACL,QAAO;AAAA,UACP,eAAc;AAAA,UACd,aAAY;AAAA;AAAA,MACb;AAAA;AAAA,EACH;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/ScrollBarX.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useCallback, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\n\nexport const ScrollBarX = () => {\n const {\n setIsGrabbed,\n setStartPosition,\n innerWidth,\n xScrollbarPosition,\n activePoint,\n setXScrollbarPosition,\n innerHeight,\n isGrabbed,\n containerRatio,\n setScrapperPosX,\n isScrollbarVisible,\n lastScrollbarPosition,\n } = useContext(ChartContext);\n\n const barWidth = useMemo(() => innerWidth / containerRatio, [containerRatio, innerWidth]);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setScrapperPosX(-1);\n setIsGrabbed(true);\n setStartPosition(e.clientX);\n e.preventDefault();\n },\n [setIsGrabbed, setScrapperPosX, setStartPosition],\n );\n\n const handleMouseEnter: React.MouseEventHandler = useCallback(() => {\n setScrapperPosX(-1);\n }, [setScrapperPosX]);\n\n const handleClickFullBar: React.MouseEventHandler = useCallback(\n (e) => {\n let newPosition = 0;\n const bar = e.target as SVGGElement;\n const bounds = bar.getBoundingClientRect();\n const left = e.clientX - bounds.left;\n if (left + barWidth / 2 > innerWidth) {\n newPosition = innerWidth - barWidth;\n } else if (left - barWidth / 2 > 0) {\n newPosition = left - barWidth / 2;\n }\n\n setXScrollbarPosition(newPosition);\n lastScrollbarPosition.current = newPosition;\n e.preventDefault();\n },\n [barWidth, innerWidth, lastScrollbarPosition, setXScrollbarPosition],\n );\n\n const isBarVisible = useMemo(\n () => (isScrollbarVisible || activePoint) && containerRatio > 1,\n [activePoint, containerRatio, isScrollbarVisible],\n );\n\n return (\n <g\n className=\"scrollbarx\"\n transform={`translate(0,${innerHeight})`}\n style={{ visibility: isBarVisible ? 'visible' : 'hidden' }}\n onMouseEnter={handleMouseEnter}\n >\n <rect style={{ cursor: 'pointer' }} width={innerWidth} height=\"6\" fill=\"#ebecf0c5\" onClick={handleClickFullBar} />\n <g transform={`translate(${xScrollbarPosition},0)`}>\n <rect\n style={{ cursor: isGrabbed ? 'grabbing' : 'grab' }}\n width={barWidth}\n height=\"6\"\n fill=\"grey\"\n onMouseDown={handleMouseDown}\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;AD+DnB;AA7DJ,mBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,eAAW,sBAAQ,MAAM,aAAa,gBAAgB,CAAC,gBAAgB,UAAU,CAAC;AAExF,QAAM,sBAAkB;AAAA,IACtB,CAAC,MAAwB;AACvB,QAAE,gBAAgB;AAClB,sBAAgB,EAAE;AAClB,mBAAa,IAAI;AACjB,uBAAiB,EAAE,OAAO;AAC1B,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,iBAAiB,gBAAgB;AAAA,EAClD;AAEA,QAAM,uBAA4C,0BAAY,MAAM;AAClE,oBAAgB,EAAE;AAAA,EACpB,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,yBAA8C;AAAA,IAClD,CAAC,MAAM;AACL,UAAI,cAAc;AAClB,YAAM,MAAM,EAAE;AACd,YAAM,SAAS,IAAI,sBAAsB;AACzC,YAAM,OAAO,EAAE,UAAU,OAAO;AAChC,UAAI,OAAO,WAAW,IAAI,YAAY;AACpC,sBAAc,aAAa;AAAA,MAC7B,WAAW,OAAO,WAAW,IAAI,GAAG;AAClC,sBAAc,OAAO,WAAW;AAAA,MAClC;AAEA,4BAAsB,WAAW;AACjC,4BAAsB,UAAU;AAChC,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,UAAU,YAAY,uBAAuB,qBAAqB;AAAA,EACrE;AAEA,QAAM,mBAAe;AAAA,IACnB,OAAO,sBAAsB,gBAAgB,iBAAiB;AAAA,IAC9D,CAAC,aAAa,gBAAgB,kBAAkB;AAAA,EAClD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAW,eAAe;AAAA,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+DnB;AA7DJ,mBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,eAAW,sBAAQ,MAAM,aAAa,gBAAgB,CAAC,gBAAgB,UAAU,CAAC;AAExF,QAAM,sBAAkB;AAAA,IACtB,CAAC,MAAwB;AACvB,QAAE,gBAAgB;AAClB,sBAAgB,EAAE;AAClB,mBAAa,IAAI;AACjB,uBAAiB,EAAE,OAAO;AAC1B,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,iBAAiB,gBAAgB;AAAA,EAClD;AAEA,QAAM,uBAA4C,0BAAY,MAAM;AAClE,oBAAgB,EAAE;AAAA,EACpB,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,yBAA8C;AAAA,IAClD,CAAC,MAAM;AACL,UAAI,cAAc;AAClB,YAAM,MAAM,EAAE;AACd,YAAM,SAAS,IAAI,sBAAsB;AACzC,YAAM,OAAO,EAAE,UAAU,OAAO;AAChC,UAAI,OAAO,WAAW,IAAI,YAAY;AACpC,sBAAc,aAAa;AAAA,MAC7B,WAAW,OAAO,WAAW,IAAI,GAAG;AAClC,sBAAc,OAAO,WAAW;AAAA,MAClC;AAEA,4BAAsB,WAAW;AACjC,4BAAsB,UAAU;AAChC,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,UAAU,YAAY,uBAAuB,qBAAqB;AAAA,EACrE;AAEA,QAAM,mBAAe;AAAA,IACnB,OAAO,sBAAsB,gBAAgB,iBAAiB;AAAA,IAC9D,CAAC,aAAa,gBAAgB,kBAAkB;AAAA,EAClD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAW,eAAe,WAAW;AAAA,MACrC,OAAO,EAAE,YAAY,eAAe,YAAY,SAAS;AAAA,MACzD,cAAc;AAAA,MAEd;AAAA,oDAAC,UAAK,OAAO,EAAE,QAAQ,UAAU,GAAG,OAAO,YAAY,QAAO,KAAI,MAAK,aAAY,SAAS,oBAAoB;AAAA,QAChH,4CAAC,OAAE,WAAW,aAAa,kBAAkB,OAC3C;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,QAAQ,YAAY,aAAa,OAAO;AAAA,YACjD,OAAO;AAAA,YACP,QAAO;AAAA,YACP,MAAK;AAAA,YACL,aAAa;AAAA;AAAA,QACf,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/ScrollBarY.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useCallback, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\n\nexport const ScrollBarY = () => {\n const {\n setIsGrabbed,\n setStartPosition,\n xScrollbarPosition,\n activePoint,\n setXScrollbarPosition,\n innerHeight,\n isGrabbed,\n containerRatio,\n setScrapperPosX,\n setScrapperPosY,\n isScrollbarVisible,\n lastScrollbarPosition,\n } = useContext(ChartContext);\n\n const barHeight = useMemo(() => Math.round(innerHeight / containerRatio), [containerRatio, innerHeight]);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n setScrapperPosX(-1);\n setScrapperPosY(-1);\n setIsGrabbed(true);\n setStartPosition(e.clientY);\n e.preventDefault();\n },\n [setIsGrabbed, setScrapperPosY, setScrapperPosX, setStartPosition],\n );\n\n const handleMouseEnter = useCallback(() => {\n setScrapperPosX(-1);\n }, [setScrapperPosX]);\n\n const handleClickFullBar = useCallback(\n (e: React.MouseEvent) => {\n let newPosition = 0;\n const bar = e.target as HTMLElement;\n const bounds = bar.getBoundingClientRect();\n const top = e.clientY - bounds.top;\n if (top + barHeight / 2 > innerHeight) {\n newPosition = innerHeight - barHeight;\n } else if (top - barHeight / 2 > 0) {\n newPosition = top - barHeight / 2;\n }\n\n setXScrollbarPosition(newPosition);\n lastScrollbarPosition.current = newPosition;\n e.preventDefault();\n },\n [barHeight, innerHeight, lastScrollbarPosition, setXScrollbarPosition],\n );\n\n const isBarVisible = useMemo(\n () => (isScrollbarVisible || activePoint) && containerRatio > 1,\n [activePoint, containerRatio, isScrollbarVisible],\n );\n\n return (\n <g\n className=\"scrollbary\"\n transform=\"translate(-6,0)\"\n style={{ visibility: isBarVisible ? 'visible' : 'hidden' }}\n onMouseEnter={handleMouseEnter}\n >\n <rect\n style={{ cursor: 'pointer' }}\n width=\"6\"\n height={innerHeight}\n fill=\"#ebecf0c5\"\n onClick={handleClickFullBar}\n />\n <g transform={`translate(0,${xScrollbarPosition})`}>\n <rect\n style={{ cursor: isGrabbed ? 'grabbing' : 'grab' }}\n width=\"6\"\n height={barHeight}\n fill=\"grey\"\n onMouseDown={handleMouseDown}\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;AD+DnB;AA7DJ,mBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,gBAAY,sBAAQ,MAAM,KAAK,MAAM,cAAc,cAAc,GAAG,CAAC,gBAAgB,WAAW,CAAC;AAEvG,QAAM,sBAAkB;AAAA,IACtB,CAAC,MAAwB;AACvB,sBAAgB,EAAE;AAClB,sBAAgB,EAAE;AAClB,mBAAa,IAAI;AACjB,uBAAiB,EAAE,OAAO;AAC1B,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,iBAAiB,iBAAiB,gBAAgB;AAAA,EACnE;AAEA,QAAM,uBAAmB,0BAAY,MAAM;AACzC,oBAAgB,EAAE;AAAA,EACpB,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,yBAAqB;AAAA,IACzB,CAAC,MAAwB;AACvB,UAAI,cAAc;AAClB,YAAM,MAAM,EAAE;AACd,YAAM,SAAS,IAAI,sBAAsB;AACzC,YAAM,MAAM,EAAE,UAAU,OAAO;AAC/B,UAAI,MAAM,YAAY,IAAI,aAAa;AACrC,sBAAc,cAAc;AAAA,MAC9B,WAAW,MAAM,YAAY,IAAI,GAAG;AAClC,sBAAc,MAAM,YAAY;AAAA,MAClC;AAEA,4BAAsB,WAAW;AACjC,4BAAsB,UAAU;AAChC,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,WAAW,aAAa,uBAAuB,qBAAqB;AAAA,EACvE;AAEA,QAAM,mBAAe;AAAA,IACnB,OAAO,sBAAsB,gBAAgB,iBAAiB;AAAA,IAC9D,CAAC,aAAa,gBAAgB,kBAAkB;AAAA,EAClD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAU;AAAA,MACV,OAAO,EAAE,YAAY,eAAe,YAAY,SAAS;AAAA,MACzD,cAAc;AAAA,MAEd;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,QAAQ,UAAU;AAAA,YAC3B,OAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA;AAAA,QACX;AAAA,QACA,4CAAC,OAAE,WAAW,eAAe,
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+DnB;AA7DJ,mBAAwD;AACxD,0BAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,gBAAY,sBAAQ,MAAM,KAAK,MAAM,cAAc,cAAc,GAAG,CAAC,gBAAgB,WAAW,CAAC;AAEvG,QAAM,sBAAkB;AAAA,IACtB,CAAC,MAAwB;AACvB,sBAAgB,EAAE;AAClB,sBAAgB,EAAE;AAClB,mBAAa,IAAI;AACjB,uBAAiB,EAAE,OAAO;AAC1B,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,cAAc,iBAAiB,iBAAiB,gBAAgB;AAAA,EACnE;AAEA,QAAM,uBAAmB,0BAAY,MAAM;AACzC,oBAAgB,EAAE;AAAA,EACpB,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,yBAAqB;AAAA,IACzB,CAAC,MAAwB;AACvB,UAAI,cAAc;AAClB,YAAM,MAAM,EAAE;AACd,YAAM,SAAS,IAAI,sBAAsB;AACzC,YAAM,MAAM,EAAE,UAAU,OAAO;AAC/B,UAAI,MAAM,YAAY,IAAI,aAAa;AACrC,sBAAc,cAAc;AAAA,MAC9B,WAAW,MAAM,YAAY,IAAI,GAAG;AAClC,sBAAc,MAAM,YAAY;AAAA,MAClC;AAEA,4BAAsB,WAAW;AACjC,4BAAsB,UAAU;AAChC,QAAE,eAAe;AAAA,IACnB;AAAA,IACA,CAAC,WAAW,aAAa,uBAAuB,qBAAqB;AAAA,EACvE;AAEA,QAAM,mBAAe;AAAA,IACnB,OAAO,sBAAsB,gBAAgB,iBAAiB;AAAA,IAC9D,CAAC,aAAa,gBAAgB,kBAAkB;AAAA,EAClD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAU;AAAA,MACV,OAAO,EAAE,YAAY,eAAe,YAAY,SAAS;AAAA,MACzD,cAAc;AAAA,MAEd;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,QAAQ,UAAU;AAAA,YAC3B,OAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA;AAAA,QACX;AAAA,QACA,4CAAC,OAAE,WAAW,eAAe,kBAAkB,KAC7C;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,EAAE,QAAQ,YAAY,aAAa,OAAO;AAAA,YACjD,OAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAK;AAAA,YACL,aAAa;AAAA;AAAA,QACf,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -67,10 +67,8 @@ const ScrollableContainerX = () => {
|
|
|
67
67
|
[containerRef, internalMargin.left]
|
|
68
68
|
);
|
|
69
69
|
const Scrappers = (0, import_react.useMemo)(() => {
|
|
70
|
-
if (scrapper && scrapper?.type === "horizontal")
|
|
71
|
-
|
|
72
|
-
if (scrapper && scrapper?.type === "vertical")
|
|
73
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {});
|
|
70
|
+
if (scrapper && scrapper?.type === "horizontal") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Scrapper.Scrapper, {});
|
|
71
|
+
if (scrapper && scrapper?.type === "vertical") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {});
|
|
74
72
|
return null;
|
|
75
73
|
}, [scrapper]);
|
|
76
74
|
const handleOnMouseDown = (0, import_react.useCallback)(
|
|
@@ -85,27 +83,22 @@ const ScrollableContainerX = () => {
|
|
|
85
83
|
);
|
|
86
84
|
const handleOnMouseMove = (0, import_react.useCallback)(
|
|
87
85
|
({ clientX }) => {
|
|
88
|
-
if (isZooming)
|
|
89
|
-
setMovingPosition(getRealClientX(clientX));
|
|
86
|
+
if (isZooming) setMovingPosition(getRealClientX(clientX));
|
|
90
87
|
},
|
|
91
88
|
[getRealClientX, isZooming, setMovingPosition]
|
|
92
89
|
);
|
|
93
90
|
const handleOnMouseUp = (0, import_react.useCallback)(
|
|
94
91
|
(e) => {
|
|
95
|
-
if (!isZooming)
|
|
96
|
-
return;
|
|
92
|
+
if (!isZooming) return;
|
|
97
93
|
setIsZooming(false);
|
|
98
94
|
setMovingPosition(0);
|
|
99
95
|
const endingPosition = getRealClientX(e.clientX);
|
|
100
96
|
const diff = Math.abs(zoomStartingPosition - endingPosition);
|
|
101
|
-
if (diff <= 0)
|
|
102
|
-
return;
|
|
97
|
+
if (diff <= 0) return;
|
|
103
98
|
const newRatio = innerWidth / (innerWidth * containerRatio / diff) < 40 ? innerWidth / 40 : innerWidth * containerRatio / diff;
|
|
104
99
|
const newPosition = lastScrollbarPosition?.current + (zoomStartingPosition > endingPosition ? endingPosition : zoomStartingPosition) / containerRatio;
|
|
105
|
-
if (newPosition > innerWidth - innerWidth / newRatio)
|
|
106
|
-
|
|
107
|
-
else
|
|
108
|
-
setXScrollbarPosition(newPosition);
|
|
100
|
+
if (newPosition > innerWidth - innerWidth / newRatio) setXScrollbarPosition(innerWidth - innerWidth / newRatio);
|
|
101
|
+
else setXScrollbarPosition(newPosition);
|
|
109
102
|
setContainerRatio(newRatio);
|
|
110
103
|
lastScrollbarPosition.current = newPosition;
|
|
111
104
|
e.stopPropagation();
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/ScrollableContainerX.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useCallback, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\nimport { AxisBottom } from '../Axis/AxisBottom.js';\nimport { SeriesFactory } from '../SeriesFactory.js';\nimport { ScrollBarX } from './ScrollBarX.js';\nimport { Scrapper } from '../Scrapper/Scrapper.js';\nimport { VerticalScrapper } from '../Scrapper/VerticalScrapper.js';\nexport const ScrollableContainerX = () => {\n const {\n props: { scrapper },\n xScrollbarPosition,\n xScale,\n containerRatio,\n innerWidth,\n isGrabbed,\n containerRef,\n setXScrollbarPosition,\n setContainerRatio,\n lastScrollbarPosition,\n innerHeight,\n internalMargin,\n chartId,\n isZooming,\n setIsZooming,\n zoomStartingPosition,\n setZoomStartingPosition,\n movingPosition,\n setMovingPosition,\n } = useContext(ChartContext);\n\n const getRealClientX = useCallback(\n (clientX: number) => clientX - internalMargin.left - (containerRef?.getBoundingClientRect().left || 0),\n [containerRef, internalMargin.left],\n );\n\n const Scrappers = useMemo(() => {\n if (scrapper && scrapper?.type === 'horizontal') return <Scrapper />;\n if (scrapper && scrapper?.type === 'vertical') return <VerticalScrapper />;\n return null;\n }, [scrapper]);\n\n const handleOnMouseDown: React.MouseEventHandler = useCallback(\n ({ clientX }) => {\n if (!isGrabbed && xScale?.type !== 'BAND') {\n setIsZooming(true);\n setZoomStartingPosition(getRealClientX(clientX));\n setMovingPosition(0);\n }\n },\n [getRealClientX, isGrabbed, setIsZooming, setMovingPosition, setZoomStartingPosition, xScale?.type],\n );\n\n const handleOnMouseMove: React.MouseEventHandler = useCallback(\n ({ clientX }) => {\n if (isZooming) setMovingPosition(getRealClientX(clientX));\n },\n [getRealClientX, isZooming, setMovingPosition],\n );\n const handleOnMouseUp: React.MouseEventHandler = useCallback(\n (e) => {\n if (!isZooming) return;\n setIsZooming(false);\n setMovingPosition(0);\n const endingPosition = getRealClientX(e.clientX);\n\n const diff = Math.abs(zoomStartingPosition - endingPosition);\n if (diff <= 0) return;\n const newRatio =\n innerWidth / ((innerWidth * containerRatio) / diff) < 40\n ? innerWidth / 40\n : (innerWidth * containerRatio) / diff;\n const newPosition =\n lastScrollbarPosition?.current +\n (zoomStartingPosition > endingPosition ? endingPosition : zoomStartingPosition) / containerRatio;\n\n // if (newPosition < 0) setXScrollbarPosition(0);\n // if is bigger thant innerwidth possible we force the end\n if (newPosition > innerWidth - innerWidth / newRatio) setXScrollbarPosition(innerWidth - innerWidth / newRatio);\n else setXScrollbarPosition(newPosition);\n\n setContainerRatio(newRatio);\n lastScrollbarPosition.current = newPosition;\n e.stopPropagation();\n },\n [\n isZooming,\n setIsZooming,\n setMovingPosition,\n getRealClientX,\n zoomStartingPosition,\n innerWidth,\n containerRatio,\n lastScrollbarPosition,\n setXScrollbarPosition,\n setContainerRatio,\n ],\n );\n return (\n <g\n className=\"scrollable-container-x\"\n onMouseDown={handleOnMouseDown}\n onMouseMove={handleOnMouseMove}\n onMouseUp={handleOnMouseUp}\n >\n <g mask={`url(#mask-${chartId})`}>\n <g transform={`translate(${-xScrollbarPosition * containerRatio},0)`}>\n <AxisBottom />\n <SeriesFactory />\n {Scrappers}\n </g>\n {isZooming && movingPosition !== 0 ? (\n <rect\n x={movingPosition < zoomStartingPosition ? movingPosition : zoomStartingPosition}\n width={Math.abs(movingPosition - zoomStartingPosition)}\n height={innerHeight}\n fill=\"orange\"\n style={{ opacity: 0.2 }}\n />\n ) : null}\n </g>\n <ScrollBarX />\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsCqC;AApC5D,mBAAwD;AACxD,0BAA6B;AAC7B,wBAA2B;AAC3B,2BAA8B;AAC9B,wBAA2B;AAC3B,sBAAyB;AACzB,8BAAiC;AAC1B,MAAM,uBAAuB,MAAM;AACxC,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,qBAAiB;AAAA,IACrB,CAAC,YAAoB,UAAU,eAAe,QAAQ,cAAc,sBAAsB,EAAE,QAAQ;AAAA,IACpG,CAAC,cAAc,eAAe,IAAI;AAAA,EACpC;AAEA,QAAM,gBAAY,sBAAQ,MAAM;AAC9B,QAAI,YAAY,UAAU,SAAS
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsCqC;AApC5D,mBAAwD;AACxD,0BAA6B;AAC7B,wBAA2B;AAC3B,2BAA8B;AAC9B,wBAA2B;AAC3B,sBAAyB;AACzB,8BAAiC;AAC1B,MAAM,uBAAuB,MAAM;AACxC,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,qBAAiB;AAAA,IACrB,CAAC,YAAoB,UAAU,eAAe,QAAQ,cAAc,sBAAsB,EAAE,QAAQ;AAAA,IACpG,CAAC,cAAc,eAAe,IAAI;AAAA,EACpC;AAEA,QAAM,gBAAY,sBAAQ,MAAM;AAC9B,QAAI,YAAY,UAAU,SAAS,aAAc,QAAO,4CAAC,4BAAS;AAClE,QAAI,YAAY,UAAU,SAAS,WAAY,QAAO,4CAAC,4CAAiB;AACxE,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,wBAA6C;AAAA,IACjD,CAAC,EAAE,QAAQ,MAAM;AACf,UAAI,CAAC,aAAa,QAAQ,SAAS,QAAQ;AACzC,qBAAa,IAAI;AACjB,gCAAwB,eAAe,OAAO,CAAC;AAC/C,0BAAkB,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,WAAW,cAAc,mBAAmB,yBAAyB,QAAQ,IAAI;AAAA,EACpG;AAEA,QAAM,wBAA6C;AAAA,IACjD,CAAC,EAAE,QAAQ,MAAM;AACf,UAAI,UAAW,mBAAkB,eAAe,OAAO,CAAC;AAAA,IAC1D;AAAA,IACA,CAAC,gBAAgB,WAAW,iBAAiB;AAAA,EAC/C;AACA,QAAM,sBAA2C;AAAA,IAC/C,CAAC,MAAM;AACL,UAAI,CAAC,UAAW;AAChB,mBAAa,KAAK;AAClB,wBAAkB,CAAC;AACnB,YAAM,iBAAiB,eAAe,EAAE,OAAO;AAE/C,YAAM,OAAO,KAAK,IAAI,uBAAuB,cAAc;AAC3D,UAAI,QAAQ,EAAG;AACf,YAAM,WACJ,cAAe,aAAa,iBAAkB,QAAQ,KAClD,aAAa,KACZ,aAAa,iBAAkB;AACtC,YAAM,cACJ,uBAAuB,WACtB,uBAAuB,iBAAiB,iBAAiB,wBAAwB;AAIpF,UAAI,cAAc,aAAa,aAAa,SAAU,uBAAsB,aAAa,aAAa,QAAQ;AAAA,UACzG,uBAAsB,WAAW;AAEtC,wBAAkB,QAAQ;AAC1B,4BAAsB,UAAU;AAChC,QAAE,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,WAAW;AAAA,MAEX;AAAA,qDAAC,OAAE,MAAM,aAAa,OAAO,KAC3B;AAAA,uDAAC,OAAE,WAAW,aAAa,CAAC,qBAAqB,cAAc,OAC7D;AAAA,wDAAC,gCAAW;AAAA,YACZ,4CAAC,sCAAc;AAAA,YACd;AAAA,aACH;AAAA,UACC,aAAa,mBAAmB,IAC/B;AAAA,YAAC;AAAA;AAAA,cACC,GAAG,iBAAiB,uBAAuB,iBAAiB;AAAA,cAC5D,OAAO,KAAK,IAAI,iBAAiB,oBAAoB;AAAA,cACrD,QAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAO,EAAE,SAAS,IAAI;AAAA;AAAA,UACxB,IACE;AAAA,WACN;AAAA,QACA,4CAAC,gCAAW;AAAA;AAAA;AAAA,EACd;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -48,10 +48,8 @@ const ScrollableContainerY = () => {
|
|
|
48
48
|
chartId
|
|
49
49
|
} = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
50
50
|
const Scrappers = (0, import_react.useMemo)(() => {
|
|
51
|
-
if (scrapper?.type === "horizontal")
|
|
52
|
-
|
|
53
|
-
else if (scrapper?.type === "vertical")
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {});
|
|
51
|
+
if (scrapper?.type === "horizontal") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Scrapper.Scrapper, {});
|
|
52
|
+
else if (scrapper?.type === "vertical") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_VerticalScrapper.VerticalScrapper, {});
|
|
55
53
|
return null;
|
|
56
54
|
}, [scrapper?.type]);
|
|
57
55
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { className: "scrollable-container-y", children: [
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/graphs/Chart/parts/Scroller/ScrollableContainerY.tsx", "../../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../../ChartContext.js';\nimport { SeriesFactory } from '../SeriesFactory.js';\nimport { ScrollBarY } from './ScrollBarY.js';\nimport { Scrapper } from '../Scrapper/Scrapper.js';\nimport { VerticalScrapper } from '../Scrapper/VerticalScrapper.js';\nimport { AxisLeft } from '../Axis/AxisLeft.js';\nexport const ScrollableContainerY = () => {\n const {\n props: { scrapper },\n xScrollbarPosition,\n containerRatio,\n chartId,\n } = useContext(ChartContext);\n\n const Scrappers = useMemo(() => {\n if (scrapper?.type === 'horizontal') return <Scrapper />;\n else if (scrapper?.type === 'vertical') return <VerticalScrapper />;\n return null;\n }, [scrapper?.type]);\n\n return (\n <g className=\"scrollable-container-y\">\n <g mask={`url(#mask-y-${chartId})`}>\n <g transform={`translate(0,${-xScrollbarPosition * containerRatio})`}>\n <SeriesFactory />\n {Scrappers}\n <AxisLeft />\n </g>\n </g>\n <ScrollBarY />\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkByB;AAhBhD,mBAA2C;AAC3C,0BAA6B;AAC7B,2BAA8B;AAC9B,wBAA2B;AAC3B,sBAAyB;AACzB,8BAAiC;AACjC,sBAAyB;AAClB,MAAM,uBAAuB,MAAM;AACxC,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,gBAAY,sBAAQ,MAAM;AAC9B,QAAI,UAAU,SAAS
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkByB;AAhBhD,mBAA2C;AAC3C,0BAA6B;AAC7B,2BAA8B;AAC9B,wBAA2B;AAC3B,sBAAyB;AACzB,8BAAiC;AACjC,sBAAyB;AAClB,MAAM,uBAAuB,MAAM;AACxC,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,yBAAW,gCAAY;AAE3B,QAAM,gBAAY,sBAAQ,MAAM;AAC9B,QAAI,UAAU,SAAS,aAAc,QAAO,4CAAC,4BAAS;AAAA,aAC7C,UAAU,SAAS,WAAY,QAAO,4CAAC,4CAAiB;AACjE,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,SACE,6CAAC,OAAE,WAAU,0BACX;AAAA,gDAAC,OAAE,MAAM,eAAe,OAAO,KAC7B,uDAAC,OAAE,WAAW,eAAe,CAAC,qBAAqB,cAAc,KAC/D;AAAA,kDAAC,sCAAc;AAAA,MACd;AAAA,MACD,4CAAC,4BAAS;AAAA,OACZ,GACF;AAAA,IACA,4CAAC,gCAAW;AAAA,KACd;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -39,8 +39,7 @@ const TrendHighlight = ({ currentDatum }) => {
|
|
|
39
39
|
const { currentData, getXScaleValue, getY2ScaleValue, getYScaleValue } = (0, import_react.useContext)(import_ChartContext.ChartContext);
|
|
40
40
|
const prevPoint = currentData?.find((serie) => serie.name === currentDatum.serie && serie.type === "line")?.data?.find((datum) => datum.position === currentDatum.position - 1);
|
|
41
41
|
const currentYScale = prevPoint?.scale === "y2" ? getY2ScaleValue : getYScaleValue;
|
|
42
|
-
if (!prevPoint)
|
|
43
|
-
return null;
|
|
42
|
+
if (!prevPoint) return null;
|
|
44
43
|
const xCurrentPosition = getXScaleValue(currentDatum);
|
|
45
44
|
const yCurrentPosition = currentYScale(currentDatum);
|
|
46
45
|
const xPreviousPosition = getXScaleValue(prevPoint);
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/graphs/Chart/parts/TrendHighlight.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
4
|
"sourcesContent": ["import React, { useContext } from 'react';\nimport { ChartContext } from '../ChartContext.js';\nimport { type DSChartT } from '../react-desc-prop-types.js';\ninterface TrendHighlightProps {\n currentDatum: DSChartT.InternalDatum;\n}\n\nexport const TrendHighlight: React.ComponentType<TrendHighlightProps> = ({ currentDatum }) => {\n const { currentData, getXScaleValue, getY2ScaleValue, getYScaleValue } = useContext(ChartContext);\n\n const prevPoint = currentData\n ?.find((serie) => serie.name === currentDatum.serie && serie.type === 'line')\n ?.data?.find((datum) => datum.position === currentDatum.position - 1);\n\n const currentYScale = prevPoint?.scale === 'y2' ? getY2ScaleValue : getYScaleValue;\n if (!prevPoint) return null;\n const xCurrentPosition = getXScaleValue(currentDatum);\n const yCurrentPosition = currentYScale(currentDatum);\n const xPreviousPosition = getXScaleValue(prevPoint);\n const yPreviousPosition = currentYScale(prevPoint);\n return (\n <line\n strokeWidth=\"4\"\n stroke={(yPreviousPosition ?? 0) > (yCurrentPosition ?? 0) ? 'green' : 'red'}\n x1={xPreviousPosition}\n x2={xCurrentPosition}\n y1={yPreviousPosition}\n y2={yCurrentPosition}\n />\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBnB;AArBJ,mBAAkC;AAClC,0BAA6B;AAMtB,MAAM,iBAA2D,CAAC,EAAE,aAAa,MAAM;AAC5F,QAAM,EAAE,aAAa,gBAAgB,iBAAiB,eAAe,QAAI,yBAAW,gCAAY;AAEhG,QAAM,YAAY,aACd,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa,SAAS,MAAM,SAAS,MAAM,GAC1E,MAAM,KAAK,CAAC,UAAU,MAAM,aAAa,aAAa,WAAW,CAAC;AAEtE,QAAM,gBAAgB,WAAW,UAAU,OAAO,kBAAkB;AACpE,MAAI,CAAC
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBnB;AArBJ,mBAAkC;AAClC,0BAA6B;AAMtB,MAAM,iBAA2D,CAAC,EAAE,aAAa,MAAM;AAC5F,QAAM,EAAE,aAAa,gBAAgB,iBAAiB,eAAe,QAAI,yBAAW,gCAAY;AAEhG,QAAM,YAAY,aACd,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa,SAAS,MAAM,SAAS,MAAM,GAC1E,MAAM,KAAK,CAAC,UAAU,MAAM,aAAa,aAAa,WAAW,CAAC;AAEtE,QAAM,gBAAgB,WAAW,UAAU,OAAO,kBAAkB;AACpE,MAAI,CAAC,UAAW,QAAO;AACvB,QAAM,mBAAmB,eAAe,YAAY;AACpD,QAAM,mBAAmB,cAAc,YAAY;AACnD,QAAM,oBAAoB,eAAe,SAAS;AAClD,QAAM,oBAAoB,cAAc,SAAS;AACjD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAY;AAAA,MACZ,SAAS,qBAAqB,MAAM,oBAAoB,KAAK,UAAU;AAAA,MACvE,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA;AAAA,EACN;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -75,16 +75,14 @@ class BandScale extends Scale {
|
|
|
75
75
|
this.axisProps = axisProps;
|
|
76
76
|
}
|
|
77
77
|
get(value) {
|
|
78
|
-
if (typeof value !== "string")
|
|
79
|
-
return 0;
|
|
78
|
+
if (typeof value !== "string") return 0;
|
|
80
79
|
return this.scale(value);
|
|
81
80
|
}
|
|
82
81
|
getTicks() {
|
|
83
82
|
return this.scale.domain();
|
|
84
83
|
}
|
|
85
84
|
getTickFormatted(t) {
|
|
86
|
-
if (typeof t !== "string")
|
|
87
|
-
return t;
|
|
85
|
+
if (typeof t !== "string") return t;
|
|
88
86
|
if (typeof this.axisProps?.tick?.tickFormat === "function") {
|
|
89
87
|
return this.axisProps?.tick?.tickFormat(t);
|
|
90
88
|
}
|
|
@@ -105,13 +103,11 @@ class LinearScale extends Scale {
|
|
|
105
103
|
this.axisProps = axisProps;
|
|
106
104
|
}
|
|
107
105
|
get(value) {
|
|
108
|
-
if (typeof value !== "number")
|
|
109
|
-
return 0;
|
|
106
|
+
if (typeof value !== "number") return 0;
|
|
110
107
|
return this.scale(value);
|
|
111
108
|
}
|
|
112
109
|
getTickFormatted(t) {
|
|
113
|
-
if (typeof t !== "number")
|
|
114
|
-
return t.toString();
|
|
110
|
+
if (typeof t !== "number") return t.toString();
|
|
115
111
|
if (typeof this.axisProps?.tick?.tickFormat === "function") {
|
|
116
112
|
return this.axisProps?.tick?.tickFormat(t);
|
|
117
113
|
}
|
|
@@ -123,14 +119,11 @@ class LinearScale extends Scale {
|
|
|
123
119
|
getTicks(dimension) {
|
|
124
120
|
const ticks = this.scale.ticks?.(this.axisProps?.tick?.tickCount ?? Math.ceil(dimension / 80));
|
|
125
121
|
if (this.axisProps?.tick?.tickValues) {
|
|
126
|
-
if (this.axisProps?.tick?.overwriteTicks)
|
|
127
|
-
return this.axisProps?.tick?.tickValues;
|
|
122
|
+
if (this.axisProps?.tick?.overwriteTicks) return this.axisProps?.tick?.tickValues;
|
|
128
123
|
this.axisProps?.tick?.tickValues.forEach((t) => {
|
|
129
|
-
if (typeof t !== "number")
|
|
130
|
-
return;
|
|
124
|
+
if (typeof t !== "number") return;
|
|
131
125
|
const isTickAlreadyPresent = ticks.find((tick) => tick === t);
|
|
132
|
-
if (isTickAlreadyPresent)
|
|
133
|
-
return;
|
|
126
|
+
if (isTickAlreadyPresent) return;
|
|
134
127
|
ticks.push(t);
|
|
135
128
|
});
|
|
136
129
|
}
|
|
@@ -149,8 +142,7 @@ class LogScale extends LinearScale {
|
|
|
149
142
|
this.axisProps = axisProps;
|
|
150
143
|
}
|
|
151
144
|
getTickFormatted(t) {
|
|
152
|
-
if (typeof t !== "number")
|
|
153
|
-
return t.toString();
|
|
145
|
+
if (typeof t !== "number") return t.toString();
|
|
154
146
|
if (typeof this.axisProps?.tick?.tickFormat === "function") {
|
|
155
147
|
return this.axisProps?.tick?.tickFormat(t);
|
|
156
148
|
}
|
|
@@ -168,13 +160,11 @@ class TimeLinearScale extends Scale {
|
|
|
168
160
|
this.axisProps = axisProps;
|
|
169
161
|
}
|
|
170
162
|
get(value) {
|
|
171
|
-
if (typeof value !== "object")
|
|
172
|
-
return 0;
|
|
163
|
+
if (typeof value !== "object") return 0;
|
|
173
164
|
return this.scale(value);
|
|
174
165
|
}
|
|
175
166
|
getTickFormatted(t) {
|
|
176
|
-
if (typeof t !== "object")
|
|
177
|
-
return t.toString();
|
|
167
|
+
if (typeof t !== "object") return t.toString();
|
|
178
168
|
if (typeof this.axisProps?.tick?.tickFormat === "function") {
|
|
179
169
|
return this.axisProps?.tick?.tickFormat(t);
|
|
180
170
|
}
|
|
@@ -189,17 +179,14 @@ class TimeLinearScale extends Scale {
|
|
|
189
179
|
const ticks = this.scale.ticks?.(finalTickConfig);
|
|
190
180
|
const ticksValues = this.axisProps?.tick?.tickValues;
|
|
191
181
|
if (ticksValues) {
|
|
192
|
-
if (this.axisProps?.tick?.overwriteTicks)
|
|
193
|
-
return ticksValues;
|
|
182
|
+
if (this.axisProps?.tick?.overwriteTicks) return ticksValues;
|
|
194
183
|
const newTicks = [];
|
|
195
184
|
ticks.forEach((t) => {
|
|
196
|
-
if (typeof t !== "object")
|
|
197
|
-
return;
|
|
185
|
+
if (typeof t !== "object") return;
|
|
198
186
|
const exists = ticksValues.some(
|
|
199
187
|
(tickValue) => typeof tickValue === "object" && tickValue.getTime() === t.getTime()
|
|
200
188
|
);
|
|
201
|
-
if (!exists)
|
|
202
|
-
newTicks.push(t);
|
|
189
|
+
if (!exists) newTicks.push(t);
|
|
203
190
|
});
|
|
204
191
|
return [...newTicks, ...ticksValues];
|
|
205
192
|
}
|