@elliemae/ds-dataviz 3.6.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/cjs/graphs/Chart/Chart.js +61 -0
  2. package/dist/cjs/graphs/Chart/Chart.js.map +7 -0
  3. package/dist/cjs/graphs/Chart/ChartContext.js +67 -0
  4. package/dist/cjs/graphs/Chart/ChartContext.js.map +7 -0
  5. package/dist/cjs/graphs/Chart/Pie.js +49 -0
  6. package/dist/cjs/graphs/Chart/Pie.js.map +7 -0
  7. package/dist/cjs/graphs/Chart/config/useChart.js +109 -0
  8. package/dist/cjs/graphs/Chart/config/useChart.js.map +7 -0
  9. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js +119 -0
  10. package/dist/cjs/graphs/Chart/config/useKeyboardNavigation.js.map +7 -0
  11. package/dist/cjs/graphs/Chart/config/useScales.js +107 -0
  12. package/dist/cjs/graphs/Chart/config/useScales.js.map +7 -0
  13. package/dist/cjs/graphs/Chart/helpers/index.js +83 -0
  14. package/dist/cjs/graphs/Chart/helpers/index.js.map +7 -0
  15. package/dist/cjs/graphs/Chart/index.js +26 -0
  16. package/dist/cjs/graphs/Chart/index.js.map +7 -0
  17. package/dist/cjs/graphs/Chart/parts/ActivePoint.js +83 -0
  18. package/dist/cjs/graphs/Chart/parts/ActivePoint.js.map +7 -0
  19. package/dist/cjs/graphs/Chart/parts/AxisBottom.js +86 -0
  20. package/dist/cjs/graphs/Chart/parts/AxisBottom.js.map +7 -0
  21. package/dist/cjs/graphs/Chart/parts/AxisLeft.js +79 -0
  22. package/dist/cjs/graphs/Chart/parts/AxisLeft.js.map +7 -0
  23. package/dist/cjs/graphs/Chart/parts/AxisRight.js +63 -0
  24. package/dist/cjs/graphs/Chart/parts/AxisRight.js.map +7 -0
  25. package/dist/cjs/graphs/Chart/parts/ChartContainer.js +78 -0
  26. package/dist/cjs/graphs/Chart/parts/ChartContainer.js.map +7 -0
  27. package/dist/cjs/graphs/Chart/parts/ColorLegend.js +70 -0
  28. package/dist/cjs/graphs/Chart/parts/ColorLegend.js.map +7 -0
  29. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js +116 -0
  30. package/dist/cjs/graphs/Chart/parts/FocusableRegion.js.map +7 -0
  31. package/dist/cjs/graphs/Chart/parts/Scrapper.js +130 -0
  32. package/dist/cjs/graphs/Chart/parts/Scrapper.js.map +7 -0
  33. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js +82 -0
  34. package/dist/cjs/graphs/Chart/parts/SeriesFactory.js.map +7 -0
  35. package/dist/cjs/graphs/Chart/parts/VerticalScrapper.js +138 -0
  36. package/dist/cjs/graphs/Chart/parts/VerticalScrapper.js.map +7 -0
  37. package/dist/cjs/graphs/Chart/react-desc-prop-types.js +57 -0
  38. package/dist/cjs/graphs/Chart/react-desc-prop-types.js.map +7 -0
  39. package/dist/cjs/graphs/Chart/series/Area.js +73 -0
  40. package/dist/cjs/graphs/Chart/series/Area.js.map +7 -0
  41. package/dist/cjs/graphs/Chart/series/Bars.js +68 -0
  42. package/dist/cjs/graphs/Chart/series/Bars.js.map +7 -0
  43. package/dist/cjs/graphs/Chart/series/Line.js +70 -0
  44. package/dist/cjs/graphs/Chart/series/Line.js.map +7 -0
  45. package/dist/cjs/graphs/Chart/series/Pie.js +46 -0
  46. package/dist/cjs/graphs/Chart/series/Pie.js.map +7 -0
  47. package/dist/cjs/graphs/Chart/series/Point.js +67 -0
  48. package/dist/cjs/graphs/Chart/series/Point.js.map +7 -0
  49. package/dist/cjs/graphs/Chart/series/Points.js +84 -0
  50. package/dist/cjs/graphs/Chart/series/Points.js.map +7 -0
  51. package/dist/cjs/graphs/Chart/series/Rect.js +78 -0
  52. package/dist/cjs/graphs/Chart/series/Rect.js.map +7 -0
  53. package/dist/cjs/graphs/Chart/series/StackedBar.js +66 -0
  54. package/dist/cjs/graphs/Chart/series/StackedBar.js.map +7 -0
  55. package/dist/cjs/graphs/Chart/series/index.js +32 -0
  56. package/dist/cjs/graphs/Chart/series/index.js.map +7 -0
  57. package/dist/cjs/graphs/Chart/styles.js +123 -0
  58. package/dist/cjs/graphs/Chart/styles.js.map +7 -0
  59. package/dist/cjs/graphs/constants.js +37 -0
  60. package/dist/cjs/graphs/constants.js.map +7 -0
  61. package/dist/cjs/graphs/index.js +27 -0
  62. package/dist/cjs/graphs/index.js.map +7 -0
  63. package/dist/cjs/index.js +33 -0
  64. package/dist/cjs/index.js.map +7 -0
  65. package/dist/esm/graphs/Chart/Chart.js +35 -0
  66. package/dist/esm/graphs/Chart/Chart.js.map +7 -0
  67. package/dist/esm/graphs/Chart/ChartContext.js +41 -0
  68. package/dist/esm/graphs/Chart/ChartContext.js.map +7 -0
  69. package/dist/esm/graphs/Chart/Pie.js +23 -0
  70. package/dist/esm/graphs/Chart/Pie.js.map +7 -0
  71. package/dist/esm/graphs/Chart/config/useChart.js +83 -0
  72. package/dist/esm/graphs/Chart/config/useChart.js.map +7 -0
  73. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js +93 -0
  74. package/dist/esm/graphs/Chart/config/useKeyboardNavigation.js.map +7 -0
  75. package/dist/esm/graphs/Chart/config/useScales.js +81 -0
  76. package/dist/esm/graphs/Chart/config/useScales.js.map +7 -0
  77. package/dist/esm/graphs/Chart/helpers/index.js +57 -0
  78. package/dist/esm/graphs/Chart/helpers/index.js.map +7 -0
  79. package/dist/esm/graphs/Chart/index.js +3 -0
  80. package/dist/esm/graphs/Chart/index.js.map +7 -0
  81. package/dist/esm/graphs/Chart/parts/ActivePoint.js +57 -0
  82. package/dist/esm/graphs/Chart/parts/ActivePoint.js.map +7 -0
  83. package/dist/esm/graphs/Chart/parts/AxisBottom.js +60 -0
  84. package/dist/esm/graphs/Chart/parts/AxisBottom.js.map +7 -0
  85. package/dist/esm/graphs/Chart/parts/AxisLeft.js +53 -0
  86. package/dist/esm/graphs/Chart/parts/AxisLeft.js.map +7 -0
  87. package/dist/esm/graphs/Chart/parts/AxisRight.js +37 -0
  88. package/dist/esm/graphs/Chart/parts/AxisRight.js.map +7 -0
  89. package/dist/esm/graphs/Chart/parts/ChartContainer.js +52 -0
  90. package/dist/esm/graphs/Chart/parts/ChartContainer.js.map +7 -0
  91. package/dist/esm/graphs/Chart/parts/ColorLegend.js +44 -0
  92. package/dist/esm/graphs/Chart/parts/ColorLegend.js.map +7 -0
  93. package/dist/esm/graphs/Chart/parts/FocusableRegion.js +90 -0
  94. package/dist/esm/graphs/Chart/parts/FocusableRegion.js.map +7 -0
  95. package/dist/esm/graphs/Chart/parts/Scrapper.js +104 -0
  96. package/dist/esm/graphs/Chart/parts/Scrapper.js.map +7 -0
  97. package/dist/esm/graphs/Chart/parts/SeriesFactory.js +56 -0
  98. package/dist/esm/graphs/Chart/parts/SeriesFactory.js.map +7 -0
  99. package/dist/esm/graphs/Chart/parts/VerticalScrapper.js +112 -0
  100. package/dist/esm/graphs/Chart/parts/VerticalScrapper.js.map +7 -0
  101. package/dist/esm/graphs/Chart/react-desc-prop-types.js +31 -0
  102. package/dist/esm/graphs/Chart/react-desc-prop-types.js.map +7 -0
  103. package/dist/esm/graphs/Chart/series/Area.js +47 -0
  104. package/dist/esm/graphs/Chart/series/Area.js.map +7 -0
  105. package/dist/esm/graphs/Chart/series/Bars.js +42 -0
  106. package/dist/esm/graphs/Chart/series/Bars.js.map +7 -0
  107. package/dist/esm/graphs/Chart/series/Line.js +44 -0
  108. package/dist/esm/graphs/Chart/series/Line.js.map +7 -0
  109. package/dist/esm/graphs/Chart/series/Pie.js +20 -0
  110. package/dist/esm/graphs/Chart/series/Pie.js.map +7 -0
  111. package/dist/esm/graphs/Chart/series/Point.js +41 -0
  112. package/dist/esm/graphs/Chart/series/Point.js.map +7 -0
  113. package/dist/esm/graphs/Chart/series/Points.js +58 -0
  114. package/dist/esm/graphs/Chart/series/Points.js.map +7 -0
  115. package/dist/esm/graphs/Chart/series/Rect.js +52 -0
  116. package/dist/esm/graphs/Chart/series/Rect.js.map +7 -0
  117. package/dist/esm/graphs/Chart/series/StackedBar.js +40 -0
  118. package/dist/esm/graphs/Chart/series/StackedBar.js.map +7 -0
  119. package/dist/esm/graphs/Chart/series/index.js +9 -0
  120. package/dist/esm/graphs/Chart/series/index.js.map +7 -0
  121. package/dist/esm/graphs/Chart/styles.js +97 -0
  122. package/dist/esm/graphs/Chart/styles.js.map +7 -0
  123. package/dist/esm/graphs/constants.js +11 -0
  124. package/dist/esm/graphs/constants.js.map +7 -0
  125. package/dist/esm/graphs/index.js +4 -0
  126. package/dist/esm/graphs/index.js.map +7 -0
  127. package/dist/esm/index.js +7 -0
  128. package/dist/esm/index.js.map +7 -0
  129. package/package.json +76 -0
@@ -0,0 +1,70 @@
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 ColorLegend_exports = {};
26
+ __export(ColorLegend_exports, {
27
+ ColorLegend: () => ColorLegend
28
+ });
29
+ module.exports = __toCommonJS(ColorLegend_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 ColorLegend = ({ tickSpacing = 20, tickSize = 5, tickTextOffset = 20 }) => {
35
+ const {
36
+ colorScale,
37
+ innerWidth,
38
+ props: { colorLegend }
39
+ } = (0, import_react.useContext)(import_ChartContext.ChartContext);
40
+ if (!colorLegend)
41
+ return null;
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
43
+ transform: `translate(${innerWidth + 30},30)`,
44
+ children: [
45
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("text", {
46
+ x: 35,
47
+ y: -25,
48
+ className: "axis-label",
49
+ textAnchor: "middle",
50
+ children: colorLegend.label
51
+ }),
52
+ colorScale.domain().map((domainValue, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
53
+ className: "tick",
54
+ transform: `translate(0,${i * tickSpacing})`,
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: tickTextOffset,
62
+ dy: ".32em",
63
+ children: domainValue
64
+ })
65
+ ]
66
+ }))
67
+ ]
68
+ });
69
+ };
70
+ //# sourceMappingURL=ColorLegend.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/graphs/Chart/parts/ColorLegend.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useContext } from 'react';\nimport { ChartContext } from '../ChartContext';\n\nexport const ColorLegend = ({ tickSpacing = 20, tickSize = 5, tickTextOffset = 20 }) => {\n const {\n colorScale,\n innerWidth,\n props: { colorLegend },\n } = useContext(ChartContext);\n\n if (!colorLegend) return null;\n return (\n <g transform={`translate(${innerWidth + 30},30)`}>\n <text x={35} y={-25} className=\"axis-label\" textAnchor=\"middle\">\n {colorLegend.label}\n </text>\n {colorScale.domain().map((domainValue, i) => (\n <g className=\"tick\" transform={`translate(0,${i * tickSpacing})`}>\n <circle fill={colorScale(domainValue)} r={4} />\n <text x={tickTextOffset} dy=\".32em\">\n {domainValue}\n </text>\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,mBAAkC;AAClC,0BAA6B;AAEtB,MAAM,cAAc,CAAC,EAAE,cAAc,IAAI,WAAW,GAAG,iBAAiB,GAAG,MAAM;AACtF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,YAAY;AAAA,EACvB,QAAI,yBAAW,gCAAY;AAE3B,MAAI,CAAC;AAAa,WAAO;AACzB,SACE,6CAAC;AAAA,IAAE,WAAW,aAAa,aAAa;AAAA,IACtC;AAAA,kDAAC;AAAA,QAAK,GAAG;AAAA,QAAI,GAAG;AAAA,QAAK,WAAU;AAAA,QAAa,YAAW;AAAA,QACpD,sBAAY;AAAA,OACf;AAAA,MACC,WAAW,OAAO,EAAE,IAAI,CAAC,aAAa,MACrC,6CAAC;AAAA,QAAE,WAAU;AAAA,QAAO,WAAW,eAAe,IAAI;AAAA,QAChD;AAAA,sDAAC;AAAA,YAAO,MAAM,WAAW,WAAW;AAAA,YAAG,GAAG;AAAA,WAAG;AAAA,UAC7C,4CAAC;AAAA,YAAK,GAAG;AAAA,YAAgB,IAAG;AAAA,YACzB;AAAA,WACH;AAAA;AAAA,OACF,CACD;AAAA;AAAA,GACH;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,116 @@
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 FocusableRegion_exports = {};
26
+ __export(FocusableRegion_exports, {
27
+ FocusableRegion: () => FocusableRegion
28
+ });
29
+ module.exports = __toCommonJS(FocusableRegion_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_ds_popperjs = require("@elliemae/ds-popperjs");
34
+ var import_ds_system = require("@elliemae/ds-system");
35
+ var import_ChartContext = require("../ChartContext");
36
+ var import_styles = require("../styles");
37
+ const StyledTooltipContainer = import_ds_system.styled.div`
38
+ text-align: center;
39
+ min-width: ${({ theme }) => theme.space.l};
40
+ max-width: 250px;
41
+ min-height: 30px;
42
+ display: grid;
43
+ align-items: center;
44
+ padding: ${({ theme }) => `${theme.space.xxxs} ${theme.space.xs}`};
45
+ position: relative;
46
+ background-color: white;
47
+ border-radius: 2px;
48
+ font-size: 13px;
49
+ color: ${({ theme }) => theme.colors.neutral[600]};
50
+ `;
51
+ const StyledMouseOverDetectionBox = import_ds_system.styled.div`
52
+ position: absolute;
53
+ top: -15px;
54
+ right: -15px;
55
+ width: calc(100% + 30px);
56
+ height: calc(100% + 30px);
57
+ z-index: -1;
58
+ `;
59
+ const FocusableRegion = (props) => {
60
+ const { activePoint } = (0, import_react.useContext)(import_ChartContext.ChartContext);
61
+ const [referenceElement, setReferenceElement] = (0, import_react.useState)();
62
+ const theme = (0, import_react.useContext)(import_ds_system.ThemeContext);
63
+ const [showPopover, setShowPopover] = (0, import_react.useState)(false);
64
+ const { id, pointRadius, content, ...rest } = props;
65
+ const isFocused = activePoint === id;
66
+ const focusableElement = (0, import_react.useRef)(null);
67
+ const handleRef = (0, import_react.useCallback)(
68
+ (newRef) => {
69
+ if (focusableElement.current)
70
+ focusableElement.current = newRef;
71
+ if (isFocused)
72
+ newRef?.focus();
73
+ },
74
+ [isFocused]
75
+ );
76
+ const onMouseEnter = () => {
77
+ setShowPopover(true);
78
+ };
79
+ const onMouseLeave = () => {
80
+ setShowPopover(false);
81
+ };
82
+ const onFocus = () => {
83
+ setShowPopover(true);
84
+ };
85
+ const onBlur = () => {
86
+ setShowPopover(false);
87
+ };
88
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("foreignObject", {
89
+ ...rest,
90
+ onFocus,
91
+ onBlur,
92
+ ref: setReferenceElement,
93
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
94
+ children: [
95
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyleFocusableRegion, {
96
+ s: pointRadius,
97
+ tabIndex: -1,
98
+ ref: handleRef
99
+ }),
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_popperjs.DSPopperJS, {
101
+ withoutAnimation: true,
102
+ referenceElement,
103
+ showPopover,
104
+ zIndex: theme.zIndex.tooltip,
105
+ children: [
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledMouseOverDetectionBox, {}),
107
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledTooltipContainer, {
108
+ children: content
109
+ })
110
+ ]
111
+ })
112
+ ]
113
+ })
114
+ });
115
+ };
116
+ //# sourceMappingURL=FocusableRegion.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/graphs/Chart/parts/FocusableRegion.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-lines */\nimport React, { useState, useRef, useCallback, useContext } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext, styled } from '@elliemae/ds-system';\nimport { ChartContext } from '../ChartContext';\n\nimport { StyleFocusableRegion } from '../styles';\n\nconst StyledTooltipContainer = styled.div`\n text-align: center;\n min-width: ${({ theme }) => theme.space.l};\n max-width: 250px;\n min-height: 30px;\n display: grid;\n align-items: center;\n padding: ${({ theme }) => `${theme.space.xxxs} ${theme.space.xs}`};\n position: relative;\n background-color: white;\n border-radius: 2px;\n font-size: 13px;\n color: ${({ theme }) => theme.colors.neutral[600]};\n`;\n\nconst StyledMouseOverDetectionBox = styled.div`\n position: absolute;\n top: -15px;\n right: -15px;\n width: calc(100% + 30px);\n height: calc(100% + 30px);\n z-index: -1;\n`;\n\nexport const FocusableRegion: React.ComponentType<any> = (props) => {\n const { activePoint } = useContext(ChartContext);\n\n const [referenceElement, setReferenceElement] = useState<HTMLSpanElement | null>();\n const theme = useContext(ThemeContext);\n\n const [showPopover, setShowPopover] = useState(false);\n const { id, pointRadius, content, ...rest } = props;\n const isFocused = activePoint === id;\n\n const focusableElement = useRef(null);\n const handleRef = useCallback(\n (newRef: HTMLDivElement) => {\n if (focusableElement.current) focusableElement.current = newRef;\n if (isFocused) newRef?.focus();\n },\n [isFocused],\n );\n\n const onMouseEnter = () => {\n setShowPopover(true);\n };\n\n const onMouseLeave = () => {\n setShowPopover(false);\n };\n\n const onFocus = () => {\n setShowPopover(true);\n };\n\n const onBlur = () => {\n setShowPopover(false);\n };\n\n return (\n <foreignObject\n {...rest}\n // onMouseEnter={onMouseEnter}\n // onMouseLeave={onMouseLeave}\n // onPointerEnter={onMouseEnter}\n // onPointerLeave={onMouseLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n ref={setReferenceElement}\n >\n <div>\n <StyleFocusableRegion\n s={pointRadius}\n // aria-label={`${xValue} ${d[yValue]}`}\n tabIndex={-1}\n ref={handleRef}\n ></StyleFocusableRegion>\n\n <DSPopperJS\n withoutAnimation\n referenceElement={referenceElement}\n showPopover={showPopover}\n zIndex={theme.zIndex.tooltip}\n >\n <StyledMouseOverDetectionBox />\n <StyledTooltipContainer>{content}</StyledTooltipContainer>\n </DSPopperJS>\n </div>\n </foreignObject>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AACA,mBAAiE;AACjE,yBAA2B;AAC3B,uBAAqC;AACrC,0BAA6B;AAE7B,oBAAqC;AAErC,MAAM,yBAAyB,wBAAO;AAAA;AAAA,eAEvB,CAAC,EAAE,MAAM,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,aAK7B,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,WAKpD,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,QAAQ;AAAA;AAG/C,MAAM,8BAA8B,wBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASpC,MAAM,kBAA4C,CAAC,UAAU;AAClE,QAAM,EAAE,YAAY,QAAI,yBAAW,gCAAY;AAE/C,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAiC;AACjF,QAAM,YAAQ,yBAAW,6BAAY;AAErC,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,KAAK;AACpD,QAAM,EAAE,IAAI,aAAa,YAAY,KAAK,IAAI;AAC9C,QAAM,YAAY,gBAAgB;AAElC,QAAM,uBAAmB,qBAAO,IAAI;AACpC,QAAM,gBAAY;AAAA,IAChB,CAAC,WAA2B;AAC1B,UAAI,iBAAiB;AAAS,yBAAiB,UAAU;AACzD,UAAI;AAAW,gBAAQ,MAAM;AAAA,IAC/B;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,eAAe,MAAM;AACzB,mBAAe,IAAI;AAAA,EACrB;AAEA,QAAM,eAAe,MAAM;AACzB,mBAAe,KAAK;AAAA,EACtB;AAEA,QAAM,UAAU,MAAM;AACpB,mBAAe,IAAI;AAAA,EACrB;AAEA,QAAM,SAAS,MAAM;AACnB,mBAAe,KAAK;AAAA,EACtB;AAEA,SACE,4CAAC;AAAA,IACE,GAAG;AAAA,IAKJ;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IAEL,uDAAC;AAAA,MACC;AAAA,oDAAC;AAAA,UACC,GAAG;AAAA,UAEH,UAAU;AAAA,UACV,KAAK;AAAA,SACN;AAAA,QAED,6CAAC;AAAA,UACC,kBAAgB;AAAA,UAChB;AAAA,UACA;AAAA,UACA,QAAQ,MAAM,OAAO;AAAA,UAErB;AAAA,wDAAC,+BAA4B;AAAA,YAC7B,4CAAC;AAAA,cAAwB;AAAA,aAAQ;AAAA;AAAA,SACnC;AAAA;AAAA,KACF;AAAA,GACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,130 @@
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 Scrapper_exports = {};
26
+ __export(Scrapper_exports, {
27
+ Scrapper: () => Scrapper
28
+ });
29
+ module.exports = __toCommonJS(Scrapper_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_ds_popperjs = require("@elliemae/ds-popperjs");
34
+ var import_ds_system = require("@elliemae/ds-system");
35
+ var import_ChartContext = require("../ChartContext");
36
+ var import_styles = require("../styles");
37
+ const Scrapper = () => {
38
+ const {
39
+ yScale,
40
+ y2Scale,
41
+ scrapperPosY,
42
+ setScrapperPosY,
43
+ xScale,
44
+ innerHeight,
45
+ innerWidth,
46
+ props: { TooltipRenderer, xAxis, data, scrapper }
47
+ } = (0, import_react.useContext)(import_ChartContext.ChartContext);
48
+ const theme = (0, import_react.useContext)(import_ds_system.ThemeContext);
49
+ const [referenceElement, setReferenceElement] = (0, import_react.useState)();
50
+ const uniqueData = (0, import_react.useMemo)(() => {
51
+ const valueToPositionPerSeries = data.map(
52
+ (serie) => serie.data.map((datum, i) => ({
53
+ position: serie.scale === "y" || !serie.scale ? yScale(datum.value) : y2Scale(datum.value),
54
+ name: serie.name,
55
+ xValue: xAxis.cols[i],
56
+ yValue: datum.value
57
+ }))
58
+ ).flat(1);
59
+ const postionUniqueData = {};
60
+ valueToPositionPerSeries.forEach((set) => {
61
+ if (postionUniqueData[[set.position]]) {
62
+ postionUniqueData[[set.position]] = [...postionUniqueData[[set.position]], { ...set }];
63
+ } else {
64
+ postionUniqueData[[set.position]] = [{ ...set }];
65
+ }
66
+ });
67
+ return postionUniqueData;
68
+ }, [data, xAxis.cols, y2Scale, yScale]);
69
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
70
+ children: Object.keys(uniqueData).map((key) => {
71
+ const yPosition = parseFloat(key);
72
+ const datum = uniqueData[key];
73
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
74
+ children: [
75
+ scrapperPosY === yPosition ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
76
+ children: [
77
+ TooltipRenderer ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("foreignObject", {
78
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_popperjs.DSPopperJS, {
79
+ withoutAnimation: true,
80
+ withoutArrow: true,
81
+ customOffset: [0, 5],
82
+ referenceElement,
83
+ showPopover: true,
84
+ zIndex: theme.zIndex.tooltip,
85
+ startPlacementPreference: scrapper.tooltipPreference,
86
+ children: [
87
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledMouseOverDetectionBox, {}),
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledTooltipContainer, {
89
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipRenderer, {
90
+ data: datum
91
+ })
92
+ })
93
+ ]
94
+ })
95
+ }) : null,
96
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
97
+ ref: setReferenceElement,
98
+ x1: innerWidth,
99
+ strokeWidth: "2px",
100
+ stroke: "transparent",
101
+ y1: yPosition,
102
+ x2: innerWidth,
103
+ y2: yPosition
104
+ }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
106
+ x1: 0,
107
+ strokeWidth: "2px",
108
+ stroke: "grey",
109
+ strokeDasharray: (4, 4),
110
+ y1: yPosition,
111
+ x2: innerWidth,
112
+ y2: yPosition
113
+ })
114
+ ]
115
+ }) : null,
116
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
117
+ onMouseEnter: () => setScrapperPosY(yPosition),
118
+ x1: 0,
119
+ strokeWidth: "4px",
120
+ stroke: "transparent",
121
+ y1: yPosition,
122
+ x2: innerWidth,
123
+ y2: yPosition
124
+ })
125
+ ]
126
+ }, key);
127
+ })
128
+ });
129
+ };
130
+ //# sourceMappingURL=Scrapper.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/graphs/Chart/parts/Scrapper.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useContext, useMemo, useState } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext, styled } from '@elliemae/ds-system';\nimport { ChartContext } from '../ChartContext';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../styles';\n\nexport const Scrapper = () => {\n const {\n yScale,\n y2Scale,\n scrapperPosY,\n setScrapperPosY,\n xScale,\n innerHeight,\n innerWidth,\n props: { TooltipRenderer, xAxis, data, scrapper },\n } = useContext(ChartContext);\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<React.SVGProps<SVGLineElement> | null>();\n\n const uniqueData = useMemo(() => {\n const valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum, i) => ({\n position: serie.scale === 'y' || !serie.scale ? yScale(datum.value) : y2Scale(datum.value),\n name: serie.name,\n xValue: xAxis.cols[i],\n yValue: datum.value,\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 }, [data, xAxis.cols, y2Scale, yScale]);\n\n return (\n <g>\n {Object.keys(uniqueData).map((key) => {\n const yPosition = parseFloat(key);\n const datum = uniqueData[key];\n return (\n <g key={key}>\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={() => setScrapperPosY(yPosition)}\n // onMouseLeave={() => setScrapperPosY('')}\n // id=\"horizontal-scrapper-zone\"\n x1={0}\n strokeWidth=\"4px\"\n stroke=\"transparent\"\n y1={yPosition}\n x2={innerWidth}\n y2={yPosition}\n />\n </g>\n );\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,mBAAqD;AACrD,yBAA2B;AAC3B,uBAAqC;AACrC,0BAA6B;AAC7B,oBAAoE;AAE7D,MAAM,WAAW,MAAM;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,iBAAiB,OAAO,MAAM,SAAS;AAAA,EAClD,QAAI,yBAAW,gCAAY;AAC3B,QAAM,YAAQ,yBAAW,6BAAY;AACrC,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAgD;AAEhG,QAAM,iBAAa,sBAAQ,MAAM;AAC/B,UAAM,2BAA2B,KAC9B;AAAA,MAAI,CAAC,UACJ,MAAM,KAAK,IAAI,CAAC,OAAO,OAAO;AAAA,QAC5B,UAAU,MAAM,UAAU,OAAO,CAAC,MAAM,QAAQ,OAAO,MAAM,KAAK,IAAI,QAAQ,MAAM,KAAK;AAAA,QACzF,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM,KAAK;AAAA,QACnB,QAAQ,MAAM;AAAA,MAChB,EAAE;AAAA,IACJ,EACC,KAAK,CAAC;AAET,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,MAAM,MAAM,MAAM,SAAS,MAAM,CAAC;AAEtC,SACE,4CAAC;AAAA,IACE,iBAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ;AACpC,YAAM,YAAY,WAAW,GAAG;AAChC,YAAM,QAAQ,WAAW;AACzB,aACE,6CAAC;AAAA,QACE;AAAA,2BAAiB,YAChB,6CAAC;AAAA,YACE;AAAA,gCACC,4CAAC;AAAA,gBACC,uDAAC;AAAA,kBACC,kBAAgB;AAAA,kBAChB,cAAY;AAAA,kBACZ,cAAc,CAAC,GAAG,CAAC;AAAA,kBACnB;AAAA,kBACA,aAAW;AAAA,kBACX,QAAQ,MAAM,OAAO;AAAA,kBAErB,0BAA0B,SAAS;AAAA,kBAEnC;AAAA,gEAAC,6CAA4B;AAAA,oBAC7B,4CAAC;AAAA,sBACC,sDAAC;AAAA,wBAAgB,MAAM;AAAA,uBAAO;AAAA,qBAChC;AAAA;AAAA,iBACF;AAAA,eACF,IACE;AAAA,cACJ,4CAAC;AAAA,gBACC,KAAK;AAAA,gBACL,IAAI;AAAA,gBACJ,aAAY;AAAA,gBACZ,QAAO;AAAA,gBACP,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,eACN;AAAA,cACA,4CAAC;AAAA,gBAEC,IAAI;AAAA,gBACJ,aAAY;AAAA,gBACZ,QAAO;AAAA,gBACP,kBAAkB,GAAG;AAAA,gBACrB,IAAI;AAAA,gBACJ,IAAI;AAAA,gBACJ,IAAI;AAAA,eACN;AAAA;AAAA,WACF,IACE;AAAA,UACJ,4CAAC;AAAA,YACC,cAAc,MAAM,gBAAgB,SAAS;AAAA,YAG7C,IAAI;AAAA,YACJ,aAAY;AAAA,YACZ,QAAO;AAAA,YACP,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,WACN;AAAA;AAAA,SArDM,GAsDR;AAAA,IAEJ,CAAC;AAAA,GACH;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,82 @@
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 SeriesFactory_exports = {};
26
+ __export(SeriesFactory_exports, {
27
+ SeriesFactory: () => SeriesFactory
28
+ });
29
+ module.exports = __toCommonJS(SeriesFactory_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
+ var import_series = require("../series");
35
+ var import_helpers = require("../helpers");
36
+ const SeriesFactory = () => {
37
+ const {
38
+ props: { data, groups, types }
39
+ } = (0, import_react.useContext)(import_ChartContext.ChartContext);
40
+ const render = (0, import_react.useMemo)(() => {
41
+ if (types === "pie") {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.Pie, {});
43
+ }
44
+ return data.map((serie) => {
45
+ const serieProps = {
46
+ key: serie.key,
47
+ serie
48
+ };
49
+ if (serie.type === "bar" && groups && (0, import_helpers.getStackedIndex)(groups, serie.name) > -1) {
50
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.StackedBar, {
51
+ ...serieProps
52
+ });
53
+ }
54
+ if (serie.type === "bar") {
55
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.Bars, {
56
+ ...serieProps
57
+ });
58
+ }
59
+ if (types === "scatter" && !serie.type || serie.type === "point") {
60
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.Points, {
61
+ ...serieProps
62
+ });
63
+ }
64
+ if (serie.type === "line") {
65
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.Line, {
66
+ ...serieProps
67
+ });
68
+ }
69
+ if (serie.type === "area") {
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_series.Area, {
71
+ ...serieProps
72
+ });
73
+ }
74
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
75
+ });
76
+ }, [data, groups, types]);
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
78
+ className: "content",
79
+ children: render
80
+ });
81
+ };
82
+ //# sourceMappingURL=SeriesFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/graphs/Chart/parts/SeriesFactory.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable arrow-body-style */\n/* eslint-disable indent */\nimport React, { useContext, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { Line, Points, Bars, StackedBar, Area, Pie } from '../series';\nimport { getStackedIndex } from '../helpers';\nexport const SeriesFactory = () => {\n const {\n props: { data, groups, types },\n } = useContext(ChartContext);\n\n const render: JSX.Element | JSX.Element[] = useMemo(() => {\n if (types === 'pie') {\n return <Pie />;\n }\n return data.map((serie) => {\n const serieProps = {\n key: serie.key,\n serie,\n };\n if (serie.type === 'bar' && groups && getStackedIndex(groups, serie.name) > -1) {\n return <StackedBar {...serieProps} />;\n }\n if (serie.type === 'bar') {\n return <Bars {...serieProps} />;\n }\n if ((types === 'scatter' && !serie.type) || serie.type === 'point') {\n return <Points {...serieProps} />;\n }\n if (serie.type === 'line') {\n return <Line {...serieProps} />;\n }\n if (serie.type === 'area') {\n return <Area {...serieProps} />;\n }\n return <></>;\n }) as JSX.Element[];\n }, [data, groups, types]);\n return <g className=\"content\">{render}</g>;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB;AAEA,mBAA2C;AAC3C,0BAA6B;AAC7B,oBAA0D;AAC1D,qBAAgC;AACzB,MAAM,gBAAgB,MAAM;AACjC,QAAM;AAAA,IACJ,OAAO,EAAE,MAAM,QAAQ,MAAM;AAAA,EAC/B,QAAI,yBAAW,gCAAY;AAE3B,QAAM,aAAsC,sBAAQ,MAAM;AACxD,QAAI,UAAU,OAAO;AACnB,aAAO,4CAAC,qBAAI;AAAA,IACd;AACA,WAAO,KAAK,IAAI,CAAC,UAAU;AACzB,YAAM,aAAa;AAAA,QACjB,KAAK,MAAM;AAAA,QACX;AAAA,MACF;AACA,UAAI,MAAM,SAAS,SAAS,cAAU,gCAAgB,QAAQ,MAAM,IAAI,IAAI,IAAI;AAC9E,eAAO,4CAAC;AAAA,UAAY,GAAG;AAAA,SAAY;AAAA,MACrC;AACA,UAAI,MAAM,SAAS,OAAO;AACxB,eAAO,4CAAC;AAAA,UAAM,GAAG;AAAA,SAAY;AAAA,MAC/B;AACA,UAAK,UAAU,aAAa,CAAC,MAAM,QAAS,MAAM,SAAS,SAAS;AAClE,eAAO,4CAAC;AAAA,UAAQ,GAAG;AAAA,SAAY;AAAA,MACjC;AACA,UAAI,MAAM,SAAS,QAAQ;AACzB,eAAO,4CAAC;AAAA,UAAM,GAAG;AAAA,SAAY;AAAA,MAC/B;AACA,UAAI,MAAM,SAAS,QAAQ;AACzB,eAAO,4CAAC;AAAA,UAAM,GAAG;AAAA,SAAY;AAAA,MAC/B;AACA,aAAO,2EAAE;AAAA,IACX,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,QAAQ,KAAK,CAAC;AACxB,SAAO,4CAAC;AAAA,IAAE,WAAU;AAAA,IAAW;AAAA,GAAO;AACxC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,138 @@
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 VerticalScrapper_exports = {};
26
+ __export(VerticalScrapper_exports, {
27
+ VerticalScrapper: () => VerticalScrapper
28
+ });
29
+ module.exports = __toCommonJS(VerticalScrapper_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_ds_popperjs = require("@elliemae/ds-popperjs");
34
+ var import_ds_system = require("@elliemae/ds-system");
35
+ var import_ChartContext = require("../ChartContext");
36
+ var import_styles = require("../styles");
37
+ const VerticalScrapper = () => {
38
+ const {
39
+ xScale,
40
+ scrapperPosX,
41
+ setScrapperPosX,
42
+ innerHeight,
43
+ innerWidth,
44
+ getBandwidth,
45
+ props: { TooltipRenderer, xAxis, data, scrapper }
46
+ } = (0, import_react.useContext)(import_ChartContext.ChartContext);
47
+ const theme = (0, import_react.useContext)(import_ds_system.ThemeContext);
48
+ const [referenceElement, setReferenceElement] = (0, import_react.useState)();
49
+ const isBandAxis = !!(!xAxis.type || xAxis.cols);
50
+ const uniqueData = (0, import_react.useMemo)(() => {
51
+ let valueToPositionPerSeries;
52
+ if (isBandAxis) {
53
+ valueToPositionPerSeries = data.map(
54
+ (serie) => serie.data.map((datum) => {
55
+ const x = xAxis.cols ? xAxis.cols[datum.position] : datum.value.x;
56
+ const y = typeof datum.value === "number" ? datum.value : datum.value.y;
57
+ return {
58
+ position: xScale(x),
59
+ name: serie.name,
60
+ xValue: x,
61
+ yValue: y
62
+ };
63
+ })
64
+ ).flat(1);
65
+ } else {
66
+ valueToPositionPerSeries = data.map(
67
+ (serie) => serie.data.map((datum) => ({
68
+ position: xScale(datum.value.x),
69
+ name: serie.name,
70
+ xValue: datum.value.x,
71
+ yValue: datum.value.y
72
+ }))
73
+ ).flat(1);
74
+ }
75
+ const postionUniqueData = {};
76
+ valueToPositionPerSeries.forEach((set) => {
77
+ if (postionUniqueData[[set.position]]) {
78
+ postionUniqueData[[set.position]] = [...postionUniqueData[[set.position]], { ...set }];
79
+ } else {
80
+ postionUniqueData[[set.position]] = [{ ...set }];
81
+ }
82
+ });
83
+ return postionUniqueData;
84
+ }, [isBandAxis, data, xScale, xAxis.cols]);
85
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {
86
+ children: Object.keys(uniqueData).map((key) => {
87
+ const xPosition = parseFloat(key) + (isBandAxis ? getBandwidth() / 2 : 0);
88
+ const datum = uniqueData[key];
89
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
90
+ children: [
91
+ scrapperPosX === xPosition ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
92
+ children: [
93
+ TooltipRenderer ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("foreignObject", {
94
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_popperjs.DSPopperJS, {
95
+ withoutAnimation: true,
96
+ withoutArrow: true,
97
+ customOffset: [0, 5],
98
+ referenceElement,
99
+ showPopover: true,
100
+ zIndex: theme.zIndex.tooltip,
101
+ startPlacementPreference: scrapper.tooltipPreference,
102
+ children: [
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledMouseOverDetectionBox, {}),
104
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.StyledTooltipContainer, {
105
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipRenderer, {
106
+ data: datum
107
+ })
108
+ })
109
+ ]
110
+ })
111
+ }) : null,
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
113
+ ref: setReferenceElement,
114
+ x1: xPosition,
115
+ strokeWidth: "2px",
116
+ stroke: scrapper.color,
117
+ y1: 0,
118
+ x2: xPosition,
119
+ y2: innerHeight,
120
+ strokeDasharray: (4, 4)
121
+ })
122
+ ]
123
+ }) : null,
124
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
125
+ onMouseEnter: () => setScrapperPosX(xPosition),
126
+ x1: xPosition,
127
+ strokeWidth: `${isBandAxis ? getBandwidth() : "2"}px`,
128
+ stroke: "transparent",
129
+ y1: 0,
130
+ x2: xPosition,
131
+ y2: innerHeight
132
+ })
133
+ ]
134
+ }, key);
135
+ })
136
+ });
137
+ };
138
+ //# sourceMappingURL=VerticalScrapper.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/graphs/Chart/parts/VerticalScrapper.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useContext, useMemo, useState } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { ThemeContext, styled } from '@elliemae/ds-system';\nimport { ChartContext } from '../ChartContext';\nimport { StyledMouseOverDetectionBox, StyledTooltipContainer } from '../styles';\n\nexport const VerticalScrapper = () => {\n const {\n xScale,\n scrapperPosX,\n setScrapperPosX,\n innerHeight,\n innerWidth,\n getBandwidth,\n props: { TooltipRenderer, xAxis, data, scrapper },\n } = useContext(ChartContext);\n const theme = useContext(ThemeContext);\n const [referenceElement, setReferenceElement] = useState<React.SVGProps<SVGLineElement> | null>();\n\n const isBandAxis = !!(!xAxis.type || xAxis.cols);\n\n const uniqueData = useMemo(() => {\n let valueToPositionPerSeries;\n if (isBandAxis) {\n valueToPositionPerSeries = data\n .map((serie) =>\n serie.data.map((datum) => {\n const x = xAxis.cols ? xAxis.cols[datum.position] : datum.value.x;\n const y = typeof datum.value === 'number' ? datum.value : datum.value.y;\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 .map((serie) =>\n serie.data.map((datum) => ({\n position: xScale(datum.value.x),\n name: serie.name,\n xValue: datum.value.x,\n yValue: datum.value.y,\n })),\n )\n .flat(1);\n }\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, xScale, xAxis.cols]);\n\n return (\n <g>\n {Object.keys(uniqueData).map((key) => {\n const xPosition = parseFloat(key) + (isBandAxis ? getBandwidth() / 2 : 0);\n const datum = uniqueData[key];\n return (\n <g key={key}>\n {scrapperPosX === xPosition ? (\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 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={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 <line\n onMouseEnter={() => setScrapperPosX(xPosition)}\n // onMouseLeave={() => setScrapperPosY('')}\n // id=\"horizontal-scrapper-zone\"\n x1={xPosition}\n strokeWidth={`${isBandAxis ? getBandwidth() : '2'}px`}\n stroke=\"transparent\"\n y1={0}\n x2={xPosition}\n y2={innerHeight}\n />\n </g>\n );\n })}\n </g>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }