@milaboratories/miplots4 1.0.126 → 1.0.127
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/DataFrame.d.ts +7 -5
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js +67 -60
- package/dist/DataFrame.js.map +1 -1
- package/dist/bubble/components/Chart.d.ts +3 -3
- package/dist/bubble/components/Chart.d.ts.map +1 -1
- package/dist/bubble/components/Chart.js +23 -23
- package/dist/bubble/components/Chart.js.map +1 -1
- package/dist/common/Tooltip.d.ts +1 -1
- package/dist/common/Tooltip.d.ts.map +1 -1
- package/dist/common/Tooltip.js +17 -17
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/discrete/components/layers/BinnedDotsElement.d.ts +2 -2
- package/dist/discrete/components/layers/BinnedDotsElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/BinnedDotsElement.js +9 -9
- package/dist/discrete/components/layers/BinnedDotsElement.js.map +1 -1
- package/dist/discrete/components/layers/BoxElement.d.ts +2 -2
- package/dist/discrete/components/layers/BoxElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/BoxElement.js +19 -19
- package/dist/discrete/components/layers/BoxElement.js.map +1 -1
- package/dist/discrete/components/layers/DotsGroupElement.d.ts +3 -3
- package/dist/discrete/components/layers/DotsGroupElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/DotsGroupElement.js +10 -10
- package/dist/discrete/components/layers/DotsGroupElement.js.map +1 -1
- package/dist/discrete/components/layers/ErrorBarElement.d.ts +2 -2
- package/dist/discrete/components/layers/ErrorBarElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/ErrorBarElement.js +15 -15
- package/dist/discrete/components/layers/ErrorBarElement.js.map +1 -1
- package/dist/discrete/components/layers/LineElement.d.ts +2 -2
- package/dist/discrete/components/layers/LineElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/LineElement.js +12 -12
- package/dist/discrete/components/layers/LineElement.js.map +1 -1
- package/dist/discrete/components/layers/LogoElement.d.ts +2 -2
- package/dist/discrete/components/layers/LogoElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/LogoElement.js +19 -19
- package/dist/discrete/components/layers/LogoElement.js.map +1 -1
- package/dist/discrete/components/layers/PairedPointsElement.d.ts +2 -2
- package/dist/discrete/components/layers/PairedPointsElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/PairedPointsElement.js +37 -37
- package/dist/discrete/components/layers/PairedPointsElement.js.map +1 -1
- package/dist/discrete/components/layers/StackedBarElement.d.ts +3 -3
- package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/StackedBarElement.js +18 -18
- package/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
- package/dist/discrete/components/layers/ViolinElement.d.ts +4 -4
- package/dist/discrete/components/layers/ViolinElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/ViolinElement.js +7 -7
- package/dist/discrete/components/layers/ViolinElement.js.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.d.ts +2 -2
- package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.js +16 -16
- package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +28 -28
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/histogram/components/Chart.d.ts +2 -2
- package/dist/histogram/components/Chart.d.ts.map +1 -1
- package/dist/histogram/components/Chart.js +22 -22
- package/dist/histogram/components/Chart.js.map +1 -1
- package/dist/scatterplot/components/Chart.d.ts +6 -11
- package/dist/scatterplot/components/Chart.d.ts.map +1 -1
- package/dist/scatterplot/components/Chart.js +101 -331
- package/dist/scatterplot/components/Chart.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.d.ts +20 -0
- package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartAxis.js +52 -0
- package/dist/scatterplot/components/ChartAxis.js.map +1 -0
- package/dist/scatterplot/components/ChartAxisTitles.d.ts +15 -0
- package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartAxisTitles.js +56 -0
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -0
- package/dist/scatterplot/components/ChartFacetTitle.d.ts +11 -0
- package/dist/scatterplot/components/ChartFacetTitle.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartFacetTitle.js +37 -0
- package/dist/scatterplot/components/ChartFacetTitle.js.map +1 -0
- package/dist/scatterplot/components/ChartLayersData.d.ts +39 -0
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartLayersData.js +250 -0
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -0
- package/dist/scatterplot/components/ChartTooltip.d.ts +18 -0
- package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartTooltip.js +58 -0
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -0
- package/dist/scatterplot/components/ChartTrendsData.d.ts +11 -0
- package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartTrendsData.js +65 -0
- package/dist/scatterplot/components/ChartTrendsData.js.map +1 -0
- package/dist/scatterplot/components/ChartsGroup.d.ts +3 -3
- package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +81 -73
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +0 -2
- package/dist/scatterplot/dots.d.ts.map +1 -1
- package/dist/scatterplot/dots.js +26 -22
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.js +32 -32
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +18 -18
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +2 -2
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +26 -25
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/utils/hooks/useFunction.d.ts +2 -0
- package/dist/utils/hooks/useFunction.d.ts.map +1 -0
- package/dist/utils/hooks/useFunction.js +9 -0
- package/dist/utils/hooks/useFunction.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,342 +1,112 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { Grid as
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
function Tt(n) {
|
|
39
|
-
if (typeof n.coefficients > "u")
|
|
40
|
-
return null;
|
|
41
|
-
const { slope: r, slopeError: d, intercept: l, interceptError: e } = n.coefficients;
|
|
42
|
-
return /* @__PURE__ */ t.jsx("tspan", { children: /* @__PURE__ */ t.jsx("tspan", { children: `slope = ${m(r)} ± ${m(d)}, intercept = ${m(l)} ± ${m(e)}` }) });
|
|
43
|
-
}
|
|
44
|
-
function At(n) {
|
|
45
|
-
const r = [vt(n), kt(n), Tt(n)].filter(
|
|
46
|
-
(d) => d !== null
|
|
47
|
-
);
|
|
48
|
-
return /* @__PURE__ */ t.jsx(t.Fragment, { children: r.map((d, l) => /* @__PURE__ */ t.jsxs("tspan", { children: [
|
|
49
|
-
d,
|
|
50
|
-
/* @__PURE__ */ t.jsx("tspan", { children: l < r.length - 1 && ", " })
|
|
51
|
-
] }, l)) });
|
|
52
|
-
}
|
|
53
|
-
const Y = 3;
|
|
54
|
-
function Q(n, r, d, l) {
|
|
55
|
-
if (!l)
|
|
56
|
-
return [];
|
|
57
|
-
const e = [];
|
|
58
|
-
for (const c of n) {
|
|
59
|
-
const j = c.label;
|
|
60
|
-
if (!j)
|
|
61
|
-
continue;
|
|
62
|
-
const a = St.getTextMetrics(String(j));
|
|
63
|
-
e.push({
|
|
64
|
-
name: String(j),
|
|
65
|
-
width: (a == null ? void 0 : a.width) ?? 0,
|
|
66
|
-
height: ((a == null ? void 0 : a.actualBoundingBoxAscent) ?? 0) + ((a == null ? void 0 : a.actualBoundingBoxDescent) ?? 0),
|
|
67
|
-
x: r.x(c.x),
|
|
68
|
-
y: r.y(c.y),
|
|
69
|
-
xPosition: "right",
|
|
70
|
-
yPosition: "middle",
|
|
71
|
-
bbox: { minX: 0, maxX: 0, minY: 0, maxY: 0 },
|
|
72
|
-
dot: c,
|
|
73
|
-
padding: d.dotSize(c.data) + Y
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return e;
|
|
77
|
-
}
|
|
78
|
-
function Dt({
|
|
79
|
-
facetKey: n,
|
|
80
|
-
width: r,
|
|
81
|
-
height: d,
|
|
82
|
-
dimensions: l,
|
|
83
|
-
scales: e,
|
|
84
|
-
xAxis: c,
|
|
85
|
-
yAxis: j,
|
|
86
|
-
frameType: a,
|
|
87
|
-
dotsData: G,
|
|
88
|
-
facetSettings: g,
|
|
89
|
-
trendsData: _,
|
|
90
|
-
keyColumn: tt,
|
|
91
|
-
margins: S,
|
|
92
|
-
chartSizes: L,
|
|
93
|
-
tooltips: v,
|
|
94
|
-
tooltipsContainer: et,
|
|
95
|
-
captionsSizes: Ct,
|
|
96
|
-
facetTitle: F,
|
|
97
|
-
onlyPositive: O,
|
|
98
|
-
layersData: k,
|
|
99
|
-
aesGetters: f,
|
|
100
|
-
tooltipsData: p
|
|
101
|
-
}) {
|
|
102
|
-
const [M, nt] = $.useState(), { padding: s } = l, { dots: y } = G, ot = c.showTicks ? K : 0, rt = j.showTicks ? K : 0, it = J(c.title, y), lt = J(j.title, y), dt = l.chartEdgeSides.includes("left") || !(g != null && g.sharedY), ft = l.chartEdgeSides.includes("bottom") || !(g != null && g.sharedX), xt = l.chartEdgeSides.includes("left"), ct = l.chartEdgeSides.includes("bottom"), st = {
|
|
103
|
-
left: S.left + l.left + s.left,
|
|
104
|
-
right: L.totalWidth - (S.left + l.left + s.left),
|
|
105
|
-
top: S.top + l.top + s.top,
|
|
106
|
-
bottom: L.totalHeight - (S.top + l.top + s.top)
|
|
107
|
-
}, E = !1, [z, at] = $.useState(
|
|
108
|
-
() => Q(
|
|
109
|
-
y,
|
|
110
|
-
e,
|
|
111
|
-
f,
|
|
112
|
-
k.find((o) => o.type === "dots")
|
|
113
|
-
)
|
|
114
|
-
), [pt, ut] = $.useState(
|
|
115
|
-
() => U(z, r, d, Y, Y)
|
|
116
|
-
), [h, R] = $.useState(null);
|
|
117
|
-
$.useEffect(() => {
|
|
118
|
-
at(
|
|
119
|
-
Q(
|
|
120
|
-
y,
|
|
121
|
-
e,
|
|
122
|
-
f,
|
|
123
|
-
k.find((o) => o.type === "dots")
|
|
124
|
-
)
|
|
125
|
-
);
|
|
126
|
-
}, [y, e, f, k]), $.useEffect(() => {
|
|
127
|
-
const o = U(z, r, d);
|
|
128
|
-
ut(o);
|
|
129
|
-
}, [z, r, d]);
|
|
130
|
-
const ht = M && p.fixed;
|
|
131
|
-
return /* @__PURE__ */ t.jsxs("g", { transform: `translate(${l.left + s.left},${l.top + s.top})`, children: [
|
|
132
|
-
E,
|
|
133
|
-
F.length && /* @__PURE__ */ t.jsxs("g", { children: [
|
|
134
|
-
a === "full" && /* @__PURE__ */ t.jsx("rect", { x: "0", y: -s.top, height: s.top, width: r, fill: "#F7F8FA", stroke: X }),
|
|
135
|
-
F.map((o, b) => {
|
|
136
|
-
const i = F.length, u = (s.top - I * i) / 2;
|
|
137
|
-
return /* @__PURE__ */ t.jsx(
|
|
138
|
-
"text",
|
|
139
|
-
{
|
|
140
|
-
fontSize: "14px",
|
|
141
|
-
fontWeight: "500",
|
|
142
|
-
fill: X,
|
|
143
|
-
x: r / 2,
|
|
144
|
-
dy: u + I / 2 - s.top,
|
|
145
|
-
y: b * I,
|
|
146
|
-
textAnchor: "middle",
|
|
147
|
-
dominantBaseline: "central",
|
|
148
|
-
children: o
|
|
149
|
-
},
|
|
150
|
-
b
|
|
151
|
-
);
|
|
152
|
-
})
|
|
153
|
-
] }),
|
|
154
|
-
/* @__PURE__ */ t.jsxs("g", { dominantBaseline: "central", textAnchor: "middle", fontWeight: "500", fontSize: "14px", fill: X, children: [
|
|
155
|
-
ct && /* @__PURE__ */ t.jsx("text", { x: r / 2, y: d + s.bottom - N - P / 2, children: it }),
|
|
1
|
+
import { j as r } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { r as q } from "../../_virtual/index.js";
|
|
3
|
+
import { useFunction as s } from "../../utils/hooks/useFunction.js";
|
|
4
|
+
import { ChartAxis as z } from "./ChartAxis.js";
|
|
5
|
+
import { ChartAxisTitles as B } from "./ChartAxisTitles.js";
|
|
6
|
+
import { ChartFacetTitle as E } from "./ChartFacetTitle.js";
|
|
7
|
+
import { ChartLayersData as G } from "./ChartLayersData.js";
|
|
8
|
+
import { ChartTrendsData as H } from "./ChartTrendsData.js";
|
|
9
|
+
import { Grid as I } from "./Grid.js";
|
|
10
|
+
const _ = q.memo(({
|
|
11
|
+
facetKey: c,
|
|
12
|
+
width: t,
|
|
13
|
+
height: p,
|
|
14
|
+
dimensions: m,
|
|
15
|
+
scales: a,
|
|
16
|
+
xAxis: f,
|
|
17
|
+
yAxis: o,
|
|
18
|
+
frameType: C,
|
|
19
|
+
dotsData: b,
|
|
20
|
+
facetSettings: F,
|
|
21
|
+
trendsData: T,
|
|
22
|
+
captionsSizes: X,
|
|
23
|
+
facetTitle: Y,
|
|
24
|
+
onlyPositive: $,
|
|
25
|
+
layersData: R,
|
|
26
|
+
aesGetters: u,
|
|
27
|
+
onMouseEnterDot: x,
|
|
28
|
+
onMouseLeaveDot: j
|
|
29
|
+
}) => {
|
|
30
|
+
const { padding: g } = m, d = s((l) => {
|
|
31
|
+
x == null || x(l, c);
|
|
32
|
+
}), k = s((l) => {
|
|
33
|
+
j == null || j(l, c);
|
|
34
|
+
});
|
|
35
|
+
return /* @__PURE__ */ r.jsxs("g", { transform: `translate(${m.left + g.left},${m.top + g.top})`, children: [
|
|
36
|
+
!1,
|
|
37
|
+
/* @__PURE__ */ r.jsx(
|
|
156
38
|
E,
|
|
157
|
-
xt && /* @__PURE__ */ t.jsx(
|
|
158
|
-
"text",
|
|
159
|
-
{
|
|
160
|
-
x: -s.left + N + P / 2,
|
|
161
|
-
y: d / 2,
|
|
162
|
-
transform: `rotate(-90,${-s.left + N + P / 2},${d / 2})`,
|
|
163
|
-
children: lt
|
|
164
|
-
}
|
|
165
|
-
),
|
|
166
|
-
E
|
|
167
|
-
] }),
|
|
168
|
-
/* @__PURE__ */ t.jsx(
|
|
169
|
-
jt,
|
|
170
39
|
{
|
|
171
|
-
width:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
40
|
+
width: t,
|
|
41
|
+
dimensions: m,
|
|
42
|
+
frameType: C,
|
|
43
|
+
facetTitle: Y
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
/* @__PURE__ */ r.jsx(
|
|
47
|
+
B,
|
|
48
|
+
{
|
|
49
|
+
debug: !1,
|
|
50
|
+
width: t,
|
|
51
|
+
height: p,
|
|
52
|
+
dimensions: m,
|
|
53
|
+
xAxis: f,
|
|
54
|
+
yAxis: o,
|
|
55
|
+
dotsData: b
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ r.jsx(
|
|
59
|
+
I,
|
|
60
|
+
{
|
|
61
|
+
width: t,
|
|
62
|
+
height: p,
|
|
63
|
+
scaleX: a.x,
|
|
64
|
+
scaleY: a.y,
|
|
65
|
+
axisX: f,
|
|
66
|
+
axisY: o,
|
|
67
|
+
frameType: C
|
|
68
|
+
}
|
|
69
|
+
),
|
|
70
|
+
/* @__PURE__ */ r.jsx(
|
|
71
|
+
z,
|
|
72
|
+
{
|
|
73
|
+
debug: !1,
|
|
74
|
+
width: t,
|
|
75
|
+
height: p,
|
|
76
|
+
dimensions: m,
|
|
77
|
+
scales: a,
|
|
78
|
+
xAxis: f,
|
|
79
|
+
yAxis: o,
|
|
80
|
+
facetSettings: F,
|
|
81
|
+
captionsSizes: X,
|
|
82
|
+
onlyPositive: $
|
|
178
83
|
}
|
|
179
84
|
),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
E
|
|
183
|
-
] }),
|
|
184
|
-
dt && /* @__PURE__ */ t.jsxs("g", { children: [
|
|
185
|
-
/* @__PURE__ */ t.jsx(q, { scale: e.y, orient: "left", onlyPositive: O.y, tickSize: rt }),
|
|
186
|
-
E
|
|
187
|
-
] }),
|
|
188
|
-
_ && _.map(({ predict: o, getArea: b, data: i, bounded: u, xBounds: x, stats: T }, A) => {
|
|
189
|
-
const [C, B] = u ? x : e.x.domain(), V = (B - C) / 15, H = o(C), D = o(B);
|
|
190
|
-
if (isNaN(H) || isNaN(D))
|
|
191
|
-
return null;
|
|
192
|
-
const W = f.trendColor(i);
|
|
193
|
-
return /* @__PURE__ */ t.jsxs("g", { children: [
|
|
194
|
-
/* @__PURE__ */ t.jsx("text", { y: A * 20 + 20, fill: W, x: r - 8, textAnchor: "end", children: At(T) }),
|
|
195
|
-
/* @__PURE__ */ t.jsx(
|
|
196
|
-
"path",
|
|
197
|
-
{
|
|
198
|
-
d: b(e.x, e.y, gt.range(C, B + V / 2, V)),
|
|
199
|
-
fill: W,
|
|
200
|
-
opacity: 0.2
|
|
201
|
-
}
|
|
202
|
-
),
|
|
203
|
-
/* @__PURE__ */ t.jsx(
|
|
204
|
-
"line",
|
|
205
|
-
{
|
|
206
|
-
x1: e.x(C),
|
|
207
|
-
x2: e.x(B),
|
|
208
|
-
y1: e.y(H),
|
|
209
|
-
y2: e.y(D),
|
|
210
|
-
stroke: W
|
|
211
|
-
}
|
|
212
|
-
)
|
|
213
|
-
] }, A);
|
|
214
|
-
}),
|
|
215
|
-
k.map((o, b) => {
|
|
216
|
-
if (o.type === "dots")
|
|
217
|
-
return /* @__PURE__ */ t.jsxs("g", { children: [
|
|
218
|
-
y.map((i) => {
|
|
219
|
-
const u = ht && p.selectedData === i, x = /* @__PURE__ */ t.jsx(
|
|
220
|
-
"g",
|
|
221
|
-
{
|
|
222
|
-
transform: `translate(${e.x(i.x)},${e.y(i.y)})`,
|
|
223
|
-
opacity: i.dimmed ? 0.3 : 1,
|
|
224
|
-
onMouseOver: () => p.onMouseOver(i, n),
|
|
225
|
-
onMouseLeave: () => p.onMouseLeave(),
|
|
226
|
-
children: w(
|
|
227
|
-
f.dotShape(i.data),
|
|
228
|
-
f.dotSize(i.data),
|
|
229
|
-
f.dotColor(i.data)
|
|
230
|
-
)
|
|
231
|
-
},
|
|
232
|
-
i.id
|
|
233
|
-
);
|
|
234
|
-
return u ? bt.createPortal(x, M) : x;
|
|
235
|
-
}),
|
|
236
|
-
pt.map((i) => {
|
|
237
|
-
const { name: u, height: x, bbox: T, width: A } = i;
|
|
238
|
-
return /* @__PURE__ */ t.jsx("g", { children: /* @__PURE__ */ t.jsxs("g", { transform: `translate(${T.minX},${T.minY})`, children: [
|
|
239
|
-
/* @__PURE__ */ t.jsx(
|
|
240
|
-
"rect",
|
|
241
|
-
{
|
|
242
|
-
x: "0",
|
|
243
|
-
y: "0",
|
|
244
|
-
width: A,
|
|
245
|
-
height: x,
|
|
246
|
-
fill: "transparent",
|
|
247
|
-
stroke: "none",
|
|
248
|
-
onMouseOver: () => R(i.dot),
|
|
249
|
-
onMouseLeave: () => R(null)
|
|
250
|
-
}
|
|
251
|
-
),
|
|
252
|
-
/* @__PURE__ */ t.jsx(
|
|
253
|
-
"text",
|
|
254
|
-
{
|
|
255
|
-
x: 0,
|
|
256
|
-
y: x / 2,
|
|
257
|
-
stroke: "white",
|
|
258
|
-
strokeWidth: 2,
|
|
259
|
-
paintOrder: "stroke",
|
|
260
|
-
style: { pointerEvents: "none" },
|
|
261
|
-
fontFamily: "Manrope",
|
|
262
|
-
fontSize: "16px",
|
|
263
|
-
dominantBaseline: "middle",
|
|
264
|
-
children: u
|
|
265
|
-
}
|
|
266
|
-
)
|
|
267
|
-
] }) }, i.dot.id);
|
|
268
|
-
}),
|
|
269
|
-
h && /* @__PURE__ */ t.jsxs(
|
|
270
|
-
"g",
|
|
271
|
-
{
|
|
272
|
-
transform: `translate(${e.x(h.x)},${e.y(h.y)})`,
|
|
273
|
-
children: [
|
|
274
|
-
w(
|
|
275
|
-
f.dotShape(h.data),
|
|
276
|
-
f.dotSize(h.data) + 1,
|
|
277
|
-
"white",
|
|
278
|
-
"white"
|
|
279
|
-
),
|
|
280
|
-
w(
|
|
281
|
-
f.dotShape(h.data),
|
|
282
|
-
f.dotSize(h.data),
|
|
283
|
-
f.dotColor(h.data)
|
|
284
|
-
)
|
|
285
|
-
]
|
|
286
|
-
},
|
|
287
|
-
"activeDot"
|
|
288
|
-
)
|
|
289
|
-
] }, b);
|
|
290
|
-
if (o.type === "curve" && !o.info.smoothing)
|
|
291
|
-
return o.geoms.map((i, u) => /* @__PURE__ */ t.jsx("g", { children: /* @__PURE__ */ t.jsx(
|
|
292
|
-
"polyline",
|
|
293
|
-
{
|
|
294
|
-
points: i.dots.map((x) => `${e.x(x.x)},${e.y(x.y)}`).join(" "),
|
|
295
|
-
fill: "none",
|
|
296
|
-
stroke: f.lineColor(i.data),
|
|
297
|
-
strokeWidth: o.info.aes.lineWidth,
|
|
298
|
-
strokeDasharray: Z(o.info.aes.lineShape)
|
|
299
|
-
}
|
|
300
|
-
) }, u));
|
|
301
|
-
if (o.type === "curve" && o.info.smoothing)
|
|
302
|
-
return o.geoms.map((i, u) => /* @__PURE__ */ t.jsx("g", { children: /* @__PURE__ */ t.jsx(
|
|
303
|
-
"path",
|
|
304
|
-
{
|
|
305
|
-
d: $t().curve(Et).x((x) => e.x(x.x)).y((x) => e.y(x.y))(i.dots) ?? "",
|
|
306
|
-
fill: "none",
|
|
307
|
-
stroke: f.lineColor(i.data),
|
|
308
|
-
strokeWidth: o.info.aes.lineWidth,
|
|
309
|
-
strokeDasharray: Z(o.info.aes.lineShape)
|
|
310
|
-
}
|
|
311
|
-
) }, u));
|
|
312
|
-
}),
|
|
313
|
-
v.show && p.selectedData && p.currentFacet === n && /* @__PURE__ */ t.jsx(
|
|
314
|
-
mt,
|
|
85
|
+
/* @__PURE__ */ r.jsx(
|
|
86
|
+
H,
|
|
315
87
|
{
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
sideDistances: st,
|
|
321
|
-
fixed: p.fixed,
|
|
322
|
-
onClose: p.onClose,
|
|
323
|
-
container: et
|
|
88
|
+
width: t,
|
|
89
|
+
scales: a,
|
|
90
|
+
trendsData: T,
|
|
91
|
+
aesGetters: u
|
|
324
92
|
}
|
|
325
93
|
),
|
|
326
|
-
/* @__PURE__ */
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
94
|
+
/* @__PURE__ */ r.jsx(
|
|
95
|
+
G,
|
|
96
|
+
{
|
|
97
|
+
width: t,
|
|
98
|
+
height: p,
|
|
99
|
+
scales: a,
|
|
100
|
+
dotsData: b,
|
|
101
|
+
layersData: R,
|
|
102
|
+
aesGetters: u,
|
|
103
|
+
onMouseEnterDot: d,
|
|
104
|
+
onMouseLeaveDot: k
|
|
105
|
+
}
|
|
106
|
+
)
|
|
337
107
|
] });
|
|
338
|
-
}
|
|
108
|
+
});
|
|
339
109
|
export {
|
|
340
|
-
|
|
110
|
+
_ as Chart
|
|
341
111
|
};
|
|
342
112
|
//# sourceMappingURL=Chart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/scatterplot/components/Chart.tsx"],"sourcesContent":["import type { TooltipsData} from '../../common/Tooltip';\nimport {Tooltip} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {FACET_TITLE_LINE, TITLE_LINE} from '../constants';\nimport type {DotsLayerData, ScatterplotLayerData} from '../getLayersData';\nimport type {Label} from '../utils/getVisibleLabels';\nimport {getFilteredLabels} from '../utils/getVisibleLabels';\nimport {getLineShape} from '../../utils/getLineShape';\nimport {getPointShape} from '../../utils/getPointShape';\nimport {Axis} from './Axis';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins,\n} from './types';\nimport {DEFAULT_TICKS_SIZE, MIN_PADDING, TICK_OFFSET} from '../constants';\nimport type {Dot, GroupedDots} from '../dots';\nimport type {TrendsData} from '../linearRegression';\nimport type {ScatterplotSettingsImpl} from '../ScatterplotSettingsImpl';\nimport type {ColumnName} from '../../types';\nimport type {FrameType} from '../../types';\nimport {Grid} from './Grid';\nimport {numberFormat} from '../../utils/numberFormat';\nimport {curveBasis, line} from 'd3-shape';\nimport lodash from 'lodash';\nimport type {ReactElement} from 'react';\nimport React, {useEffect, useState} from 'react';\nimport {TextMeasurer} from '../../utils/TextMeasurer';\nimport {createPortal} from 'react-dom';\n\nconst textMeasurer = new TextMeasurer('16px Manrope');\n\nfunction getTitle(title: string | ColumnName, dots: Dot[]): string {\n if (typeof title === 'string') {\n return title;\n }\n if (!dots.length) {\n return '';\n }\n return dots[0].data[title.value] as string;\n}\n\nfunction getTooltipContent(dot: Dot, keyColumn: ColumnName, columnsList: ColumnName[] = []) {\n const row = dot.data;\n const lines = [`x: ${numberFormat(dot.x)}`, `y: ${numberFormat(dot.y)}`];\n if (keyColumn.label) {\n lines.unshift(`${keyColumn.label}: ${row[keyColumn.label]}`);\n }\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\n\nfunction formatR2(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.r2 === 'undefined') {\n return null;\n }\n return (\n <>\n <tspan>R</tspan>\n <tspan fontSize=\"10px\" dy=\"-8\">\n 2\n </tspan>\n <tspan dy=\"8\">{` = ${numberFormat(stats.r2)}`}</tspan>\n </>\n );\n}\n\nfunction formatPValue(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.pValue === 'undefined') {\n return null;\n }\n return <tspan>{`p-value = ${numberFormat(stats.pValue)}`}</tspan>;\n}\n\nfunction formatCoefficients(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.coefficients === 'undefined') {\n return null;\n }\n const {slope, slopeError, intercept, interceptError} = stats.coefficients;\n return (\n <tspan>\n <tspan>\n {`slope = ${numberFormat(slope)} ± ${numberFormat(slopeError)}, intercept = ${numberFormat(intercept)} ± ${numberFormat(interceptError)}`}\n </tspan>\n </tspan>\n );\n}\n\nfunction formatStats(stats: TrendsData[keyof TrendsData][number]['stats']) {\n const items = [formatR2(stats), formatPValue(stats), formatCoefficients(stats)].filter(\n value => value !== null\n ) as unknown as ReactElement[];\n return (\n <>\n {items.map((item, idx) => (\n <tspan key={idx}>\n {item}\n <tspan>{idx < items.length - 1 && ', '}</tspan>\n </tspan>\n ))}\n </>\n );\n}\n\nconst LABEL_OFFSET = 3;\n\nfunction getAllPossibleLabels(dots: Dot[], scales: ChartScales, aesGetters: AesGetters, layer?: DotsLayerData) {\n if (!layer) {\n return [];\n }\n const labels: Label[] = [];\n for (const dot of dots) {\n const text = dot.label;\n if (!text) {\n continue;\n }\n const metrics = textMeasurer.getTextMetrics(String(text));\n labels.push({\n name: String(text),\n width: metrics?.width ?? 0,\n height: (metrics?.actualBoundingBoxAscent ?? 0) + (metrics?.actualBoundingBoxDescent ?? 0),\n x: scales.x(dot.x),\n y: scales.y(dot.y),\n xPosition: 'right',\n yPosition: 'middle',\n bbox: {minX: 0, maxX: 0, minY: 0, maxY: 0},\n dot,\n padding: aesGetters.dotSize(dot.data) + LABEL_OFFSET,\n } as Label);\n }\n return labels;\n}\n\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n dotsData: GroupedDots[keyof GroupedDots];\n trendsData: TrendsData[keyof TrendsData] | null;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n tooltipsContainer?: Element;\n facetTitle: string[];\n onlyPositive: {x: boolean; y: boolean};\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n tooltipsData: TooltipsData<Dot>;\n}\n\nexport function Chart({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n dotsData,\n facetSettings,\n trendsData,\n keyColumn,\n margins,\n chartSizes,\n tooltips,\n tooltipsContainer,\n captionsSizes,\n facetTitle,\n onlyPositive,\n layersData,\n aesGetters,\n tooltipsData,\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n const {padding} = dimensions;\n const {dots} = dotsData;\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const xTitle = getTitle(xAxis.title, dots);\n const yTitle = getTitle(yAxis.title, dots);\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n\n const needLeftAxisTitle = dimensions.chartEdgeSides.includes('left');\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const debug = false;\n const [allLabels, setAllLabels] = useState<Label[]>(() =>\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n const [labels, setLabels] = useState<Label[]>(() =>\n getFilteredLabels(allLabels, width, height, LABEL_OFFSET, LABEL_OFFSET)\n );\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n\n useEffect(() => {\n setAllLabels(\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n }, [dots, scales, aesGetters, layersData]);\n useEffect(() => {\n const filteredLabels = getFilteredLabels(allLabels, width, height);\n setLabels(filteredLabels);\n }, [allLabels, width, height]);\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && (\n <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />\n )}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && (\n <text x={width / 2} y={height + padding.bottom - MIN_PADDING - TITLE_LINE / 2}>\n {xTitle}\n </text>\n )}\n {debug && needBottomAxisTitle && (\n <rect\n x=\"0\"\n y={height + padding.bottom - MIN_PADDING - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n {needLeftAxisTitle && (\n <text\n x={-padding.left + MIN_PADDING + TITLE_LINE / 2}\n y={height / 2}\n transform={`rotate(-90,${-padding.left + MIN_PADDING + TITLE_LINE / 2},${height / 2})`}\n >\n {yTitle}\n </text>\n )}\n {debug && needLeftAxisTitle && (\n <rect\n x={-padding.left + MIN_PADDING}\n y=\"0\"\n width={TITLE_LINE}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n <Grid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <Axis scale={scales.x} orient=\"bottom\" onlyPositive={onlyPositive.x} tickSize={tickSizeX} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n <Axis scale={scales.y} orient=\"left\" onlyPositive={onlyPositive.y} tickSize={tickSizeY} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {trendsData &&\n trendsData.map(({predict, getArea, data, bounded, xBounds, stats}, idx) => {\n const [minX, maxX] = bounded ? xBounds : scales.x.domain();\n const step = (maxX - minX) / 15;\n const p1 = predict(minX);\n const p2 = predict(maxX);\n if (isNaN(p1) || isNaN(p2)) {\n return null;\n }\n const fillColor = aesGetters.trendColor(data);\n return (\n <g key={idx}>\n <text y={idx * 20 + 20} fill={fillColor} x={width - 8} textAnchor=\"end\">\n {formatStats(stats)}\n </text>\n <path\n d={getArea(scales.x, scales.y, lodash.range(minX, maxX + step / 2, step))}\n fill={fillColor}\n opacity={0.2}\n />\n <line\n x1={scales.x(minX)}\n x2={scales.x(maxX)}\n y1={scales.y(p1)}\n y2={scales.y(p2)}\n stroke={fillColor}\n />\n </g>\n );\n })}\n {layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return (\n <g key={idx}>\n {dots.map(dot => {\n const highlighted = dimmedBackground && tooltipsData.selectedData === dot;\n const dotElement = (\n <g\n key={dot.id}\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => tooltipsData.onMouseOver(dot, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n >\n {getPointShape(\n aesGetters.dotShape(dot.data),\n aesGetters.dotSize(dot.data),\n aesGetters.dotColor(dot.data)\n )}\n </g>\n );\n return highlighted ? createPortal(dotElement, activeElementContainer) : dotElement;\n })}\n {labels.map(label => {\n const {name, height, bbox, width} = label;\n return (\n <g key={label.dot.id}>\n <g transform={`translate(${bbox.minX},${bbox.minY})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseOver={() => setActiveDot(label.dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n </g>\n );\n })}\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data),\n aesGetters.dotColor(activeDot.data)\n )}\n </g>\n )}\n </g>\n );\n }\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n })}\n {tooltips.show && tooltipsData.selectedData && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, keyColumn, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x)}\n y={scales.y(tooltipsData.selectedData.y)}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n <g>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["textMeasurer","TextMeasurer","getTitle","title","dots","getTooltipContent","dot","keyColumn","columnsList","row","lines","numberFormat","column","formatR2","stats","jsxs","Fragment","jsx","formatPValue","formatCoefficients","slope","slopeError","intercept","interceptError","formatStats","items","value","item","idx","LABEL_OFFSET","getAllPossibleLabels","scales","aesGetters","layer","labels","text","metrics","Chart","facetKey","width","height","dimensions","xAxis","yAxis","frameType","dotsData","facetSettings","trendsData","margins","chartSizes","tooltips","tooltipsContainer","captionsSizes","facetTitle","onlyPositive","layersData","tooltipsData","activeElementContainer","setActiveElementContainer","useState","padding","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","xTitle","yTitle","needLeftAxis","needBottomAxis","needLeftAxisTitle","needBottomAxisTitle","sideDistances","debug","allLabels","setAllLabels","setLabels","getFilteredLabels","activeDot","setActiveDot","useEffect","filteredLabels","dimmedBackground","BLACK","titleLine","linesCount","topOffset","FACET_TITLE_LINE","MIN_PADDING","TITLE_LINE","Grid","Axis","predict","getArea","data","bounded","xBounds","minX","maxX","step","p1","p2","fillColor","lodash","highlighted","dotElement","getPointShape","createPortal","label","name","bbox","curve","d","getLineShape","line","curveBasis","Tooltip","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/scatterplot/components/Chart.tsx"],"sourcesContent":["import { memo } from 'react';\nimport type { FrameType } from '../../types';\nimport { useFunction } from '../../utils/hooks/useFunction';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { TrendsData } from '../linearRegression';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { ChartAxis } from './ChartAxis';\nimport { ChartAxisTitles } from './ChartAxisTitles';\nimport { ChartFacetTitle } from './ChartFacetTitle';\nimport { ChartLayersData } from './ChartLayersData';\nimport { ChartTrendsData } from './ChartTrendsData';\nimport { Grid } from './Grid';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\n\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n dotsData: GroupedDots[keyof GroupedDots];\n trendsData: TrendsData[keyof TrendsData] | null;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n onlyPositive: {x: boolean; y: boolean};\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot, facetKey: string) => void;\n onMouseLeaveDot?: (dot: Dot, facetKey: string) => void;\n}\n\nexport const Chart = memo(({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n dotsData,\n facetSettings,\n trendsData,\n captionsSizes,\n facetTitle,\n onlyPositive,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: ChartProps) => {\n const debug = false;\n\n const {padding} = dimensions;\n \n const handleMouseEnterDot = useFunction((dot: Dot) => {\n onMouseEnterDot?.(dot, facetKey);\n });\n const handleMouseLeaveDot = useFunction((dot: Dot) => {\n onMouseLeaveDot?.(dot, facetKey);\n });\n\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n\n <ChartFacetTitle\n width={width}\n dimensions={dimensions}\n frameType={frameType}\n facetTitle={facetTitle}\n />\n \n <ChartAxisTitles\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n xAxis={xAxis}\n yAxis={yAxis}\n dotsData={dotsData}\n />\n\n <Grid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n\n <ChartAxis\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n scales={scales}\n xAxis={xAxis}\n yAxis={yAxis}\n facetSettings={facetSettings}\n captionsSizes={captionsSizes}\n onlyPositive={onlyPositive}\n />\n\n <ChartTrendsData\n width={width}\n scales={scales}\n trendsData={trendsData}\n aesGetters={aesGetters}\n />\n\n <ChartLayersData\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={handleMouseEnterDot}\n onMouseLeaveDot={handleMouseLeaveDot}\n />\n </g>\n );\n});\n"],"names":["Chart","memo","facetKey","width","height","dimensions","scales","xAxis","yAxis","frameType","dotsData","facetSettings","trendsData","captionsSizes","facetTitle","onlyPositive","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","padding","handleMouseEnterDot","useFunction","dot","handleMouseLeaveDot","jsxs","jsx","ChartFacetTitle","ChartAxisTitles","Grid","ChartAxis","ChartTrendsData","ChartLayersData"],"mappings":";;;;;;;;;AAyCO,MAAMA,IAAQC,EAAAA,KAAK,CAAC;AAAA,EACvB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AACJ,MAAkB;AAGd,QAAM,EAAC,SAAAC,MAAWf,GAEZgB,IAAsBC,EAAY,CAACC,MAAa;AAClD,IAAAL,KAAA,QAAAA,EAAkBK,GAAKrB;AAAA,EAC3B,CAAC,GACKsB,IAAsBF,EAAY,CAACC,MAAa;AAClD,IAAAJ,KAAA,QAAAA,EAAkBI,GAAKrB;AAAA,EAC3B,CAAC;AAED,SACIuB,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAapB,EAAW,OAAOe,EAAQ,IAAI,IAAIf,EAAW,MAAMe,EAAQ,GAAG,KACpF,UAAA;AAAA,IAAA;AAAA,IASDM,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACG,OAAAxB;AAAA,QACA,YAAAE;AAAA,QACA,WAAAI;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJY,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAAzB;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,OAAAE;AAAA,QACA,OAAAC;AAAA,QACA,UAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJgB,gBAAAA,EAAAA;AAAAA,MAACG;AAAA,MAAA;AAAA,QACG,OAAA1B;AAAA,QACA,QAAAC;AAAA,QACA,QAAQE,EAAO;AAAA,QACf,QAAQA,EAAO;AAAA,QACf,OAAOC;AAAA,QACP,OAAOC;AAAA,QACP,WAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJiB,gBAAAA,EAAAA;AAAAA,MAACI;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAA3B;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,QAAAC;AAAA,QACA,OAAAC;AAAA,QACA,OAAAC;AAAA,QACA,eAAAG;AAAA,QACA,eAAAE;AAAA,QACA,cAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJW,gBAAAA,EAAAA;AAAAA,MAACK;AAAA,MAAA;AAAA,QACG,OAAA5B;AAAA,QACA,QAAAG;AAAA,QACA,YAAAM;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJS,gBAAAA,EAAAA;AAAAA,MAACM;AAAA,MAAA;AAAA,QACG,OAAA7B;AAAA,QACA,QAAAC;AAAA,QACA,QAAAE;AAAA,QACA,UAAAI;AAAA,QACA,YAAAM;AAAA,QACA,YAAAC;AAAA,QACA,iBAAiBI;AAAA,QACjB,iBAAiBG;AAAA,MAAA;AAAA,IAAA;AAAA,EACrB,GACJ;AAER,CAAC;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';
|
|
2
|
+
import { CaptionsSizes, ChartDimensionsData, ChartScales } from './types';
|
|
3
|
+
interface Props {
|
|
4
|
+
debug?: boolean;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
dimensions: ChartDimensionsData;
|
|
8
|
+
scales: ChartScales;
|
|
9
|
+
xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];
|
|
10
|
+
yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];
|
|
11
|
+
facetSettings: ScatterplotSettingsImpl['facetSettings'];
|
|
12
|
+
captionsSizes: CaptionsSizes;
|
|
13
|
+
onlyPositive: {
|
|
14
|
+
x: boolean;
|
|
15
|
+
y: boolean;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare const ChartAxis: import('react').MemoExoticComponent<({ debug, width, height, dimensions, scales, xAxis, yAxis, facetSettings, captionsSizes, onlyPositive, }: Props) => import("react/jsx-runtime").JSX.Element>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=ChartAxis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartAxis.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,gJAWnB,KAAK,6CAyCN,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { j as o } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { r as a } from "../../_virtual/index.js";
|
|
3
|
+
import { DEFAULT_TICKS_SIZE as d, TITLE_LINE as y, TICK_OFFSET as n } from "../constants.js";
|
|
4
|
+
import { Axis as h } from "./Axis.js";
|
|
5
|
+
const L = a.memo(({
|
|
6
|
+
debug: s,
|
|
7
|
+
width: k,
|
|
8
|
+
height: i,
|
|
9
|
+
dimensions: x,
|
|
10
|
+
scales: t,
|
|
11
|
+
xAxis: j,
|
|
12
|
+
yAxis: E,
|
|
13
|
+
facetSettings: r,
|
|
14
|
+
captionsSizes: e,
|
|
15
|
+
onlyPositive: l
|
|
16
|
+
}) => {
|
|
17
|
+
const m = j.showTicks ? d : 0, c = E.showTicks ? d : 0, p = x.chartEdgeSides.includes("left") || !(r != null && r.sharedY), T = x.chartEdgeSides.includes("bottom") || !(r != null && r.sharedX);
|
|
18
|
+
return /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
|
|
19
|
+
T && /* @__PURE__ */ o.jsxs("g", { transform: `translate(0,${i})`, children: [
|
|
20
|
+
/* @__PURE__ */ o.jsx(h, { scale: t.x, orient: "bottom", onlyPositive: l.x, tickSize: m }),
|
|
21
|
+
s && /* @__PURE__ */ o.jsx(
|
|
22
|
+
"rect",
|
|
23
|
+
{
|
|
24
|
+
x: "0",
|
|
25
|
+
y: m + n,
|
|
26
|
+
width: k,
|
|
27
|
+
height: y,
|
|
28
|
+
fill: "none",
|
|
29
|
+
stroke: "black"
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
] }),
|
|
33
|
+
p && /* @__PURE__ */ o.jsxs("g", { children: [
|
|
34
|
+
/* @__PURE__ */ o.jsx(h, { scale: t.y, orient: "left", onlyPositive: l.y, tickSize: c }),
|
|
35
|
+
s && /* @__PURE__ */ o.jsx(
|
|
36
|
+
"rect",
|
|
37
|
+
{
|
|
38
|
+
x: -c - n - e.yAxisCaptionsWidth,
|
|
39
|
+
y: "0",
|
|
40
|
+
width: e.yAxisCaptionsWidth,
|
|
41
|
+
height: i,
|
|
42
|
+
fill: "none",
|
|
43
|
+
stroke: "black"
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
] })
|
|
47
|
+
] });
|
|
48
|
+
});
|
|
49
|
+
export {
|
|
50
|
+
L as ChartAxis
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=ChartAxis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartAxis.js","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { DEFAULT_TICKS_SIZE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { Axis } from './Axis';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\n\ninterface Props {\n debug?: boolean;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n captionsSizes: CaptionsSizes;\n onlyPositive: {x: boolean; y: boolean};\n}\n\nexport const ChartAxis = memo(({\n debug,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n facetSettings,\n captionsSizes,\n onlyPositive,\n}: Props) => {\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n\n return (\n <>\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <Axis scale={scales.x} orient=\"bottom\" onlyPositive={onlyPositive.x} tickSize={tickSizeX} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n\n {needLeftAxis && (\n <g>\n <Axis scale={scales.y} orient=\"left\" onlyPositive={onlyPositive.y} tickSize={tickSizeY} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n </>\n );\n});\n"],"names":["ChartAxis","memo","debug","width","height","dimensions","scales","xAxis","yAxis","facetSettings","captionsSizes","onlyPositive","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","jsxs","Fragment","jsx","Axis","TICK_OFFSET","TITLE_LINE"],"mappings":";;;;AAuBO,MAAMA,IAAYC,EAAAA,KAAK,CAAC;AAAA,EAC3B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AACJ,MAAa;AACT,QAAMC,IAAYL,EAAM,YAAYM,IAAqB,GACnDC,IAAYN,EAAM,YAAYK,IAAqB,GACnDE,IAAeV,EAAW,eAAe,SAAS,MAAM,KAAK,EAACI,KAAA,QAAAA,EAAe,UAC7EO,IAAiBX,EAAW,eAAe,SAAS,QAAQ,KAAK,EAACI,KAAA,QAAAA,EAAe;AAEvF,SACIQ,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAF,KACGC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,eAAeb,CAAM,KAC/B,UAAA;AAAA,MAAAe,gBAAAA,EAAAA,IAACC,GAAA,EAAK,OAAOd,EAAO,GAAG,QAAO,UAAS,cAAcK,EAAa,GAAG,UAAUC,EAAA,CAAW;AAAA,MACzFV,KACGiB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAE;AAAA,UACF,GAAGP,IAAYS;AAAA,UACf,OAAAlB;AAAA,UACA,QAAQmB;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,GAER;AAAA,IAGHP,4BACI,KAAA,EACG,UAAA;AAAA,MAAAI,gBAAAA,EAAAA,IAACC,GAAA,EAAK,OAAOd,EAAO,GAAG,QAAO,QAAO,cAAcK,EAAa,GAAG,UAAUG,EAAA,CAAW;AAAA,MACvFZ,KACGiB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAG,CAACL,IAAYO,IAAcX,EAAc;AAAA,UAC5C,GAAE;AAAA,UACF,OAAOA,EAAc;AAAA,UACrB,QAAAN;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,EAAA,CAER;AAAA,EAAA,GAER;AAER,CAAC;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GroupedDots } from '../dots';
|
|
2
|
+
import { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';
|
|
3
|
+
import { ChartDimensionsData } from './types';
|
|
4
|
+
interface Props {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
dimensions: ChartDimensionsData;
|
|
9
|
+
xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];
|
|
10
|
+
yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];
|
|
11
|
+
dotsData: GroupedDots[keyof GroupedDots];
|
|
12
|
+
}
|
|
13
|
+
export declare const ChartAxisTitles: import('react').MemoExoticComponent<({ debug, width, height, dimensions, xAxis, yAxis, dotsData, }: Props) => false | import("react/jsx-runtime").JSX.Element>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=ChartAxisTitles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartAxisTitles.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartAxisTitles.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EACR,mBAAmB,EACtB,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,QAAQ,EAAE,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;CAC5C;AAYD,eAAO,MAAM,eAAe,sGAQzB,KAAK,qDA+CN,CAAC"}
|