@milaboratories/miplots4 1.0.128 → 1.0.129
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/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +251 -233
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/components/Captions/GroupCaptions.d.ts.map +1 -1
- package/dist/heatmap/components/Captions/GroupCaptions.js +45 -36
- package/dist/heatmap/components/Captions/GroupCaptions.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +71 -69
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/heatmap/components/Dendrograms.d.ts +3 -1
- package/dist/heatmap/components/Dendrograms.d.ts.map +1 -1
- package/dist/heatmap/components/Dendrograms.js +54 -48
- package/dist/heatmap/components/Dendrograms.js.map +1 -1
- package/dist/heatmap/components/types.d.ts +2 -2
- package/dist/heatmap/components/types.d.ts.map +1 -1
- package/dist/heatmap/getDendrograms.d.ts +2 -2
- package/dist/heatmap/getDendrograms.d.ts.map +1 -1
- package/dist/heatmap/getDendrograms.js +36 -36
- package/dist/heatmap/getDendrograms.js.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.d.ts +2 -2
- package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js +89 -54
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/heatmap/utils/calculateChartSideElementSizes.js +19 -19
- package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
- package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot/ChartRenderer.js +191 -178
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +3 -3
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.js +148 -124
- package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +12 -12
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +60 -60
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ import { FONT_SIZE as ne, FACET_TITLE_OFFSET as oe } from "../constants.js";
|
|
|
6
6
|
import { Annotations as re } from "./Annotations/index.js";
|
|
7
7
|
import { Captions as ie } from "./Captions/index.js";
|
|
8
8
|
import { Dendrograms as fe } from "./Dendrograms.js";
|
|
9
|
-
import { Frames as
|
|
9
|
+
import { Frames as ue } from "./Frames.js";
|
|
10
10
|
function v(e) {
|
|
11
11
|
if (e === null)
|
|
12
12
|
return "null";
|
|
@@ -16,39 +16,39 @@ function v(e) {
|
|
|
16
16
|
}
|
|
17
17
|
return e;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
const i = e.data,
|
|
19
|
+
function xe(e, o, n = []) {
|
|
20
|
+
const i = e.data, a = [
|
|
21
21
|
`X: ${o.xLabels[e.x]}`,
|
|
22
22
|
`Y: ${o.yLabels[e.y]}`,
|
|
23
23
|
`Value: ${v(e.value)}${e.value !== e.normalizedValue ? ` (${v(e.normalizedValue)})` : ""}`
|
|
24
24
|
];
|
|
25
|
-
for (const
|
|
26
|
-
|
|
27
|
-
return
|
|
25
|
+
for (const l of n)
|
|
26
|
+
a.push(`${l.label}: ${i[l.valueLabels ?? l.value]}`);
|
|
27
|
+
return a;
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function le(e, o) {
|
|
30
30
|
const n = [];
|
|
31
31
|
return e.xKey && n.push(`X: ${o.xLabels[e.xKey]}`), e.yKey && n.push(`Y: ${o.yLabels[e.yKey]}`), n.push(`${e.title}: ${v(e.value)}`), n;
|
|
32
32
|
}
|
|
33
|
-
function
|
|
33
|
+
function me(e) {
|
|
34
34
|
return e !== null && !("data" in e);
|
|
35
35
|
}
|
|
36
36
|
function W(e) {
|
|
37
37
|
return e !== null && "data" in e;
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function je({
|
|
40
40
|
dendrograms: e,
|
|
41
41
|
facetKey: o,
|
|
42
42
|
dimensions: n,
|
|
43
43
|
scales: i,
|
|
44
|
-
cells:
|
|
45
|
-
xGroupKeys:
|
|
46
|
-
yGroupKeys:
|
|
47
|
-
xKeysByGroups:
|
|
48
|
-
yKeysByGroups:
|
|
44
|
+
cells: a,
|
|
45
|
+
xGroupKeys: l,
|
|
46
|
+
yGroupKeys: b,
|
|
47
|
+
xKeysByGroups: j,
|
|
48
|
+
yKeysByGroups: C,
|
|
49
49
|
colorScale: z,
|
|
50
50
|
chartSettings: h,
|
|
51
|
-
cellsMeta:
|
|
51
|
+
cellsMeta: f,
|
|
52
52
|
stepX: c,
|
|
53
53
|
stepY: s,
|
|
54
54
|
sharedX: H,
|
|
@@ -56,28 +56,28 @@ function Ce({
|
|
|
56
56
|
annotations: N,
|
|
57
57
|
annotationColorScales: P,
|
|
58
58
|
dendrogramAesScales: R,
|
|
59
|
-
aes:
|
|
59
|
+
aes: T,
|
|
60
60
|
labelAngles: Z,
|
|
61
61
|
chartSizes: $,
|
|
62
62
|
margins: g,
|
|
63
63
|
tooltipsContainer: w,
|
|
64
64
|
tooltipsData: t
|
|
65
65
|
}) {
|
|
66
|
-
const [
|
|
67
|
-
left: g.left + n.left +
|
|
68
|
-
right: $.totalWidth - (g.left + n.left +
|
|
69
|
-
top: g.top + n.top +
|
|
70
|
-
bottom: $.totalHeight - (g.top + n.top +
|
|
71
|
-
}, k = !1,
|
|
66
|
+
const [y, q] = ee.useState(), { xAxis: J, yAxis: Q, tooltips: E } = h, { width: A, height: F } = n.inner, { padding: x, chartEdgeSides: U, sideElementBBoxes: m } = n, { xGroupLabels: K, yGroupLabels: D, xLabels: G, yLabels: Y } = f, p = i.x.domain(), V = i.y.domain(), _ = {
|
|
67
|
+
left: g.left + n.left + x.left,
|
|
68
|
+
right: $.totalWidth - (g.left + n.left + x.left),
|
|
69
|
+
top: g.top + n.top + x.top,
|
|
70
|
+
bottom: $.totalHeight - (g.top + n.top + x.top)
|
|
71
|
+
}, k = !1, X = y && t.fixed;
|
|
72
72
|
return /* @__PURE__ */ r.jsxs("g", { transform: `translate(${n.left},${n.top})`, fontSize: ne, children: [
|
|
73
|
-
/* @__PURE__ */ r.jsxs("g", { transform: `translate(${
|
|
73
|
+
/* @__PURE__ */ r.jsxs("g", { transform: `translate(${x.left},${x.top})`, children: [
|
|
74
74
|
/* @__PURE__ */ r.jsx(
|
|
75
75
|
re,
|
|
76
76
|
{
|
|
77
77
|
facetKey: o,
|
|
78
|
-
sideElementBBoxes:
|
|
78
|
+
sideElementBBoxes: m,
|
|
79
79
|
annotations: N,
|
|
80
|
-
cellsMeta:
|
|
80
|
+
cellsMeta: f,
|
|
81
81
|
annotationColorScales: P,
|
|
82
82
|
sharedX: H,
|
|
83
83
|
sharedY: I,
|
|
@@ -87,65 +87,67 @@ function Ce({
|
|
|
87
87
|
scales: i,
|
|
88
88
|
stepX: c,
|
|
89
89
|
stepY: s,
|
|
90
|
-
aes:
|
|
90
|
+
aes: T,
|
|
91
91
|
frame: h.frame,
|
|
92
|
-
xGroupKeys:
|
|
93
|
-
yGroupKeys:
|
|
94
|
-
xKeysByGroups:
|
|
95
|
-
yKeysByGroups:
|
|
92
|
+
xGroupKeys: l,
|
|
93
|
+
yGroupKeys: b,
|
|
94
|
+
xKeysByGroups: j,
|
|
95
|
+
yKeysByGroups: C,
|
|
96
96
|
tooltipsData: t,
|
|
97
|
-
activeElementContainer:
|
|
97
|
+
activeElementContainer: y
|
|
98
98
|
}
|
|
99
99
|
),
|
|
100
100
|
/* @__PURE__ */ r.jsx(
|
|
101
101
|
fe,
|
|
102
102
|
{
|
|
103
103
|
dendrograms: e,
|
|
104
|
-
sideElementBBoxes:
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
sideElementBBoxes: m,
|
|
105
|
+
xGroupKeys: f.xGroupKeys,
|
|
106
|
+
yGroupKeys: f.yGroupKeys,
|
|
107
|
+
xDataByKeys: f.xDataByKeys,
|
|
108
|
+
yDataByKeys: f.yDataByKeys,
|
|
107
109
|
aesScales: R
|
|
108
110
|
}
|
|
109
111
|
),
|
|
110
|
-
|
|
112
|
+
m.top.facetTitle.isVisible && /* @__PURE__ */ r.jsx(
|
|
111
113
|
"text",
|
|
112
114
|
{
|
|
113
|
-
x:
|
|
114
|
-
y:
|
|
115
|
+
x: m.top.facetTitle.x,
|
|
116
|
+
y: m.top.facetTitle.y + m.top.facetTitle.height - oe,
|
|
115
117
|
fontWeight: "500",
|
|
116
118
|
fontSize: "20px",
|
|
117
|
-
children:
|
|
119
|
+
children: f.facetKeyValues[o].join(", ")
|
|
118
120
|
}
|
|
119
121
|
),
|
|
120
122
|
k,
|
|
121
|
-
|
|
122
|
-
(d) => V.map((
|
|
123
|
+
p.map(
|
|
124
|
+
(d) => V.map((L) => {
|
|
123
125
|
var O;
|
|
124
|
-
const
|
|
126
|
+
const u = (O = a == null ? void 0 : a[d]) == null ? void 0 : O[L], M = X && W(t.selectedData) && (u == null ? void 0 : u.id) === t.selectedData.id, B = u ? /* @__PURE__ */ r.jsx(
|
|
125
127
|
"rect",
|
|
126
128
|
{
|
|
127
129
|
x: i.x(d),
|
|
128
|
-
y: i.y(
|
|
130
|
+
y: i.y(L),
|
|
129
131
|
width: c,
|
|
130
132
|
height: s,
|
|
131
|
-
stroke:
|
|
132
|
-
fill:
|
|
133
|
-
onMouseOver: () => t.onMouseEnter(
|
|
133
|
+
stroke: T.cellStrokeColor,
|
|
134
|
+
fill: u.value === null ? T.emptyCellColor : z(u.normalizedValue),
|
|
135
|
+
onMouseOver: () => t.onMouseEnter(u, o),
|
|
134
136
|
onMouseLeave: () => t.onMouseLeave()
|
|
135
137
|
},
|
|
136
|
-
|
|
138
|
+
u ? u.id : `${d}_${L}`
|
|
137
139
|
) : null;
|
|
138
|
-
return
|
|
140
|
+
return M ? te.createPortal(B, y) : B;
|
|
139
141
|
})
|
|
140
142
|
),
|
|
141
143
|
/* @__PURE__ */ r.jsx(
|
|
142
|
-
|
|
144
|
+
ue,
|
|
143
145
|
{
|
|
144
146
|
frame: h.frame,
|
|
145
|
-
xGroupKeys:
|
|
146
|
-
yGroupKeys:
|
|
147
|
-
xKeysByGroups:
|
|
148
|
-
yKeysByGroups:
|
|
147
|
+
xGroupKeys: l,
|
|
148
|
+
yGroupKeys: b,
|
|
149
|
+
xKeysByGroups: j,
|
|
150
|
+
yKeysByGroups: C,
|
|
149
151
|
scales: i,
|
|
150
152
|
stepX: c,
|
|
151
153
|
stepY: s,
|
|
@@ -162,28 +164,28 @@ function Ce({
|
|
|
162
164
|
stepX: c,
|
|
163
165
|
stepY: s,
|
|
164
166
|
debug: k,
|
|
165
|
-
sideElementBBoxes:
|
|
166
|
-
xKeys:
|
|
167
|
+
sideElementBBoxes: m,
|
|
168
|
+
xKeys: p,
|
|
167
169
|
yKeys: V,
|
|
168
|
-
xGroupKeys:
|
|
169
|
-
yGroupKeys:
|
|
170
|
-
xKeysByGroups:
|
|
171
|
-
yKeysByGroups:
|
|
172
|
-
xGroupLabels:
|
|
173
|
-
yGroupLabels:
|
|
170
|
+
xGroupKeys: l,
|
|
171
|
+
yGroupKeys: b,
|
|
172
|
+
xKeysByGroups: j,
|
|
173
|
+
yKeysByGroups: C,
|
|
174
|
+
xGroupLabels: K,
|
|
175
|
+
yGroupLabels: D,
|
|
174
176
|
labelAngles: Z,
|
|
175
|
-
xLabels:
|
|
176
|
-
yLabels:
|
|
177
|
+
xLabels: G,
|
|
178
|
+
yLabels: Y
|
|
177
179
|
}
|
|
178
180
|
)
|
|
179
181
|
] }),
|
|
180
182
|
h.tooltips.show && W(t.selectedData) && t.currentFacet === o && /* @__PURE__ */ r.jsx(
|
|
181
183
|
S,
|
|
182
184
|
{
|
|
183
|
-
content:
|
|
185
|
+
content: xe(t.selectedData, f, E == null ? void 0 : E.content),
|
|
184
186
|
x: i.x(String(t.selectedData.x)) + c / 2,
|
|
185
187
|
y: i.y(String(t.selectedData.y)) + s / 2,
|
|
186
|
-
offset:
|
|
188
|
+
offset: p.length > 1 ? c / 2 : 0,
|
|
187
189
|
active: !0,
|
|
188
190
|
sideDistances: _,
|
|
189
191
|
fixed: t.fixed,
|
|
@@ -191,10 +193,10 @@ function Ce({
|
|
|
191
193
|
container: w
|
|
192
194
|
}
|
|
193
195
|
),
|
|
194
|
-
h.tooltips.show &&
|
|
196
|
+
h.tooltips.show && me(t.selectedData) && t.currentFacet === o && /* @__PURE__ */ r.jsx(
|
|
195
197
|
S,
|
|
196
198
|
{
|
|
197
|
-
content:
|
|
199
|
+
content: le(t.selectedData, f),
|
|
198
200
|
x: t.selectedData.x,
|
|
199
201
|
y: t.selectedData.y,
|
|
200
202
|
offset: 0,
|
|
@@ -205,13 +207,13 @@ function Ce({
|
|
|
205
207
|
container: w
|
|
206
208
|
}
|
|
207
209
|
),
|
|
208
|
-
/* @__PURE__ */ r.jsxs("g", { transform: `translate(${
|
|
210
|
+
/* @__PURE__ */ r.jsxs("g", { transform: `translate(${x.left},${x.top})`, children: [
|
|
209
211
|
t.fixed && /* @__PURE__ */ r.jsx("rect", { width: $.chartWidth, height: $.chartHeight, fill: "rgba(255, 255, 255, 0.8)" }),
|
|
210
212
|
/* @__PURE__ */ r.jsx(
|
|
211
213
|
"g",
|
|
212
214
|
{
|
|
213
215
|
ref: (d) => {
|
|
214
|
-
d && !
|
|
216
|
+
d && !y && q(d);
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
)
|
|
@@ -219,6 +221,6 @@ function Ce({
|
|
|
219
221
|
] });
|
|
220
222
|
}
|
|
221
223
|
export {
|
|
222
|
-
|
|
224
|
+
je as Chart
|
|
223
225
|
};
|
|
224
226
|
//# sourceMappingURL=Chart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/heatmap/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport type { ColumnName, DataValue } from '../../types';\nimport { FACET_TITLE_OFFSET, FONT_SIZE } from '../constants';\nimport type { Cell, GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\nimport { Annotations } from './Annotations';\nimport { Captions } from './Captions';\nimport { Dendrograms } from './Dendrograms';\nimport { Frames } from './Frames';\nimport type { AnnotationColorScales, AnnotationTooltipData, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartScales, ChartSizes, DendrogramAesScales, LabelAngles, Margins } from './types';\n\nfunction formatCellValue (v:DataValue):number|string {\n if (v === null) {\n return 'null';\n }\n if (typeof v === 'number') {\n const whole = v > 0 ? Math.floor(v) : Math.ceil(v);\n const decimal = v - whole;\n return whole + Number(decimal.toPrecision(2));\n }\n return v;\n}\nfunction getTooltipContent(cell: Cell, cellsMeta:GroupedCellsData['meta'], columnsList: ColumnName[] = []) {\n const row = cell.data;\n const lines = [\n `X: ${cellsMeta.xLabels[cell.x as string]}`,\n `Y: ${cellsMeta.yLabels[cell.y as string]}`,\n `Value: ${formatCellValue(cell.value)}${cell.value !== cell.normalizedValue ? ` (${formatCellValue(cell.normalizedValue)})`: ''}`,\n ];\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\nfunction getAnnotationTooltipContent(data:AnnotationTooltipData, cellsMeta:GroupedCellsData['meta']) {\n const lines:string[] = [];\n if (data.xKey) {\n lines.push(`X: ${cellsMeta.xLabels[data.xKey as string]}`);\n }\n if (data.yKey) {\n lines.push(`Y: ${cellsMeta.yLabels[data.yKey as string]}`);\n }\n lines.push(`${data.title}: ${formatCellValue(data.value)}`);\n return lines;\n}\n\nfunction isAnnotationTooltip(d:Cell|AnnotationTooltipData|null):d is AnnotationTooltipData {\n return d !== null && !('data' in d);\n}\nfunction isCellTooltip(d:Cell|AnnotationTooltipData|null):d is Cell {\n return d !== null && 'data' in d;\n}\n\nexport function Chart<ValueType>({\n dendrograms,\n facetKey,\n dimensions,\n scales,\n cells,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n colorScale,\n chartSettings,\n cellsMeta,\n stepX,\n stepY,\n sharedX,\n sharedY,\n annotations,\n annotationColorScales,\n dendrogramAesScales,\n aes,\n labelAngles,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData,\n}: {\n facetKey: string;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n cells: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['cells'];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n colorScale: (value: ValueType) => string;\n chartSettings: HeatmapSettingsImpl['chartSettings'];\n cellsMeta: GroupedCellsData['meta'];\n stepX: number;\n stepY: number;\n annotations: HeatmapSettingsImpl['annotations'];\n annotationColorScales: AnnotationColorScales;\n sharedX: boolean;\n sharedY: boolean;\n aes: HeatmapSettingsImpl['aes'];\n dendrograms: ChartDendrograms;\n dendrogramAesScales: DendrogramAesScales;\n labelAngles: LabelAngles;\n margins: Margins;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<Cell|AnnotationTooltipData>;\n}) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {xAxis, yAxis, tooltips} = chartSettings;\n const {width, height} = dimensions.inner;\n const {padding, chartEdgeSides, sideElementBBoxes} = dimensions;\n const {xGroupLabels, yGroupLabels, xLabels, yLabels} = cellsMeta;\n\n const xKeys = scales.x.domain();\n const yKeys = scales.y.domain();\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 isDimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g transform={`translate(${dimensions.left},${dimensions.top})`} fontSize={FONT_SIZE}>\n <g transform={`translate(${padding.left},${padding.top})`}>\n <Annotations\n facetKey={facetKey}\n sideElementBBoxes={sideElementBBoxes}\n annotations={annotations}\n cellsMeta={cellsMeta}\n annotationColorScales={annotationColorScales}\n sharedX={sharedX}\n sharedY={sharedY}\n chartEdgeSides={chartEdgeSides}\n width={width}\n height={height}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n aes={aes}\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n />\n <Dendrograms\n dendrograms={dendrograms}\n sideElementBBoxes={sideElementBBoxes}\n xDataByKeys={cellsMeta.xDataByKeys}\n yDataByKeys={cellsMeta.yDataByKeys}\n aesScales={dendrogramAesScales}\n />\n {/* facet title */}\n {sideElementBBoxes.top.facetTitle.isVisible && (\n <text\n x={sideElementBBoxes.top.facetTitle.x}\n y={\n sideElementBBoxes.top.facetTitle.y +\n sideElementBBoxes.top.facetTitle.height -\n FACET_TITLE_OFFSET\n }\n fontWeight=\"500\"\n fontSize=\"20px\"\n >\n {cellsMeta.facetKeyValues[facetKey].join(', ')}\n </text>\n )}\n {debug && (\n <g fill=\"green\" opacity=\"0.2\">\n <rect\n x={-padding.left}\n y={-padding.top}\n width={dimensions.outer.width}\n height={dimensions.outer.height}\n fill=\"none\"\n stroke=\"red\"\n />\n <rect x={-padding.left} y=\"0\" width={padding.left} height={height} />\n <rect x={width} y=\"0\" width={padding.right} height={height} />\n <rect x=\"0\" y={-padding.top} width={width} height={padding.top} />\n <rect x=\"0\" y={height} width={width} height={padding.bottom} />\n </g>\n )}\n {/* cells */}\n {xKeys.map(xKey =>\n yKeys.map(yKey => {\n const cell = cells?.[xKey]?.[yKey];\n const highlighted = isDimmedBackground && isCellTooltip(tooltipsData.selectedData) && cell?.id === tooltipsData.selectedData.id;\n const cellElement = cell ? (\n <rect\n key={cell ? cell.id : `${xKey}_${yKey}`}\n x={scales.x(xKey)}\n y={scales.y(yKey)}\n width={stepX}\n height={stepY}\n stroke={aes.cellStrokeColor}\n fill={cell.value === null ? aes.emptyCellColor : colorScale(cell.normalizedValue as ValueType)}\n onMouseOver={() => tooltipsData.onMouseEnter(cell, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n ) : null;\n return highlighted ? createPortal(cellElement, activeElementContainer) : cellElement;\n })\n )}\n <Frames\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n width={width}\n height={height}\n />\n <Captions\n xAxis={xAxis}\n yAxis={yAxis}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n debug={debug}\n sideElementBBoxes={sideElementBBoxes}\n xKeys={xKeys}\n yKeys={yKeys}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n xGroupLabels={xGroupLabels}\n yGroupLabels={yGroupLabels}\n labelAngles={labelAngles}\n xLabels={xLabels}\n yLabels={yLabels}\n />\n </g>\n {chartSettings.tooltips.show && isCellTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, cellsMeta, tooltips?.content)}\n x={scales.x(String(tooltipsData.selectedData.x)) + stepX / 2}\n y={scales.y(String(tooltipsData.selectedData.y)) + stepY / 2}\n offset={xKeys.length > 1 ? stepX / 2 : 0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n {chartSettings.tooltips.show && isAnnotationTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getAnnotationTooltipContent(tooltipsData.selectedData, cellsMeta)}\n x={tooltipsData.selectedData.x}\n y={tooltipsData.selectedData.y}\n offset={0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n <g transform={`translate(${padding.left},${padding.top})`}>\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":["formatCellValue","v","whole","decimal","getTooltipContent","cell","cellsMeta","columnsList","row","lines","column","getAnnotationTooltipContent","data","isAnnotationTooltip","d","isCellTooltip","Chart","dendrograms","facetKey","dimensions","scales","cells","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","colorScale","chartSettings","stepX","stepY","sharedX","sharedY","annotations","annotationColorScales","dendrogramAesScales","aes","labelAngles","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","xAxis","yAxis","tooltips","width","height","padding","chartEdgeSides","sideElementBBoxes","xGroupLabels","yGroupLabels","xLabels","yLabels","xKeys","yKeys","sideDistances","debug","isDimmedBackground","jsxs","FONT_SIZE","jsx","Annotations","Dendrograms","FACET_TITLE_OFFSET","xKey","yKey","_a","highlighted","cellElement","createPortal","Frames","Captions","Tooltip","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/heatmap/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport type { ColumnName, DataValue } from '../../types';\nimport { FACET_TITLE_OFFSET, FONT_SIZE } from '../constants';\nimport type { Cell, GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\nimport { Annotations } from './Annotations';\nimport { Captions } from './Captions';\nimport { Dendrograms } from './Dendrograms';\nimport { Frames } from './Frames';\nimport type { AnnotationColorScales, AnnotationTooltipData, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartScales, ChartSizes, DendrogramAesScales, LabelAngles, Margins } from './types';\n\nfunction formatCellValue (v:DataValue):number|string {\n if (v === null) {\n return 'null';\n }\n if (typeof v === 'number') {\n const whole = v > 0 ? Math.floor(v) : Math.ceil(v);\n const decimal = v - whole;\n return whole + Number(decimal.toPrecision(2));\n }\n return v;\n}\nfunction getTooltipContent(cell: Cell, cellsMeta:GroupedCellsData['meta'], columnsList: ColumnName[] = []) {\n const row = cell.data;\n const lines = [\n `X: ${cellsMeta.xLabels[cell.x as string]}`,\n `Y: ${cellsMeta.yLabels[cell.y as string]}`,\n `Value: ${formatCellValue(cell.value)}${cell.value !== cell.normalizedValue ? ` (${formatCellValue(cell.normalizedValue)})`: ''}`,\n ];\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\nfunction getAnnotationTooltipContent(data:AnnotationTooltipData, cellsMeta:GroupedCellsData['meta']) {\n const lines:string[] = [];\n if (data.xKey) {\n lines.push(`X: ${cellsMeta.xLabels[data.xKey as string]}`);\n }\n if (data.yKey) {\n lines.push(`Y: ${cellsMeta.yLabels[data.yKey as string]}`);\n }\n lines.push(`${data.title}: ${formatCellValue(data.value)}`);\n return lines;\n}\n\nfunction isAnnotationTooltip(d:Cell|AnnotationTooltipData|null):d is AnnotationTooltipData {\n return d !== null && !('data' in d);\n}\nfunction isCellTooltip(d:Cell|AnnotationTooltipData|null):d is Cell {\n return d !== null && 'data' in d;\n}\n\nexport function Chart<ValueType>({\n dendrograms,\n facetKey,\n dimensions,\n scales,\n cells,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n colorScale,\n chartSettings,\n cellsMeta,\n stepX,\n stepY,\n sharedX,\n sharedY,\n annotations,\n annotationColorScales,\n dendrogramAesScales,\n aes,\n labelAngles,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData,\n}: {\n facetKey: string;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n cells: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['cells'];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n colorScale: (value: ValueType) => string;\n chartSettings: HeatmapSettingsImpl['chartSettings'];\n cellsMeta: GroupedCellsData['meta'];\n stepX: number;\n stepY: number;\n annotations: HeatmapSettingsImpl['annotations'];\n annotationColorScales: AnnotationColorScales;\n sharedX: boolean;\n sharedY: boolean;\n aes: HeatmapSettingsImpl['aes'];\n dendrograms: ChartDendrograms;\n dendrogramAesScales: DendrogramAesScales;\n labelAngles: LabelAngles;\n margins: Margins;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<Cell|AnnotationTooltipData>;\n}) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {xAxis, yAxis, tooltips} = chartSettings;\n const {width, height} = dimensions.inner;\n const {padding, chartEdgeSides, sideElementBBoxes} = dimensions;\n const {xGroupLabels, yGroupLabels, xLabels, yLabels} = cellsMeta;\n\n const xKeys = scales.x.domain();\n const yKeys = scales.y.domain();\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 isDimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g transform={`translate(${dimensions.left},${dimensions.top})`} fontSize={FONT_SIZE}>\n <g transform={`translate(${padding.left},${padding.top})`}>\n <Annotations\n facetKey={facetKey}\n sideElementBBoxes={sideElementBBoxes}\n annotations={annotations}\n cellsMeta={cellsMeta}\n annotationColorScales={annotationColorScales}\n sharedX={sharedX}\n sharedY={sharedY}\n chartEdgeSides={chartEdgeSides}\n width={width}\n height={height}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n aes={aes}\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n />\n <Dendrograms\n dendrograms={dendrograms}\n sideElementBBoxes={sideElementBBoxes}\n xGroupKeys={cellsMeta.xGroupKeys}\n yGroupKeys={cellsMeta.yGroupKeys}\n xDataByKeys={cellsMeta.xDataByKeys}\n yDataByKeys={cellsMeta.yDataByKeys}\n aesScales={dendrogramAesScales}\n />\n {/* facet title */}\n {sideElementBBoxes.top.facetTitle.isVisible && (\n <text\n x={sideElementBBoxes.top.facetTitle.x}\n y={\n sideElementBBoxes.top.facetTitle.y +\n sideElementBBoxes.top.facetTitle.height -\n FACET_TITLE_OFFSET\n }\n fontWeight=\"500\"\n fontSize=\"20px\"\n >\n {cellsMeta.facetKeyValues[facetKey].join(', ')}\n </text>\n )}\n {debug && (\n <g fill=\"green\" opacity=\"0.2\">\n <rect\n x={-padding.left}\n y={-padding.top}\n width={dimensions.outer.width}\n height={dimensions.outer.height}\n fill=\"none\"\n stroke=\"red\"\n />\n <rect x={-padding.left} y=\"0\" width={padding.left} height={height} />\n <rect x={width} y=\"0\" width={padding.right} height={height} />\n <rect x=\"0\" y={-padding.top} width={width} height={padding.top} />\n <rect x=\"0\" y={height} width={width} height={padding.bottom} />\n </g>\n )}\n {/* cells */}\n {xKeys.map(xKey =>\n yKeys.map(yKey => {\n const cell = cells?.[xKey]?.[yKey];\n const highlighted = isDimmedBackground && isCellTooltip(tooltipsData.selectedData) && cell?.id === tooltipsData.selectedData.id;\n const cellElement = cell ? (\n <rect\n key={cell ? cell.id : `${xKey}_${yKey}`}\n x={scales.x(xKey)}\n y={scales.y(yKey)}\n width={stepX}\n height={stepY}\n stroke={aes.cellStrokeColor}\n fill={cell.value === null ? aes.emptyCellColor : colorScale(cell.normalizedValue as ValueType)}\n onMouseOver={() => tooltipsData.onMouseEnter(cell, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n ) : null;\n return highlighted ? createPortal(cellElement, activeElementContainer) : cellElement;\n })\n )}\n <Frames\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n width={width}\n height={height}\n />\n <Captions\n xAxis={xAxis}\n yAxis={yAxis}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n debug={debug}\n sideElementBBoxes={sideElementBBoxes}\n xKeys={xKeys}\n yKeys={yKeys}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n xGroupLabels={xGroupLabels}\n yGroupLabels={yGroupLabels}\n labelAngles={labelAngles}\n xLabels={xLabels}\n yLabels={yLabels}\n />\n </g>\n {chartSettings.tooltips.show && isCellTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, cellsMeta, tooltips?.content)}\n x={scales.x(String(tooltipsData.selectedData.x)) + stepX / 2}\n y={scales.y(String(tooltipsData.selectedData.y)) + stepY / 2}\n offset={xKeys.length > 1 ? stepX / 2 : 0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n {chartSettings.tooltips.show && isAnnotationTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getAnnotationTooltipContent(tooltipsData.selectedData, cellsMeta)}\n x={tooltipsData.selectedData.x}\n y={tooltipsData.selectedData.y}\n offset={0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n <g transform={`translate(${padding.left},${padding.top})`}>\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":["formatCellValue","v","whole","decimal","getTooltipContent","cell","cellsMeta","columnsList","row","lines","column","getAnnotationTooltipContent","data","isAnnotationTooltip","d","isCellTooltip","Chart","dendrograms","facetKey","dimensions","scales","cells","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","colorScale","chartSettings","stepX","stepY","sharedX","sharedY","annotations","annotationColorScales","dendrogramAesScales","aes","labelAngles","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","xAxis","yAxis","tooltips","width","height","padding","chartEdgeSides","sideElementBBoxes","xGroupLabels","yGroupLabels","xLabels","yLabels","xKeys","yKeys","sideDistances","debug","isDimmedBackground","jsxs","FONT_SIZE","jsx","Annotations","Dendrograms","FACET_TITLE_OFFSET","xKey","yKey","_a","highlighted","cellElement","createPortal","Frames","Captions","Tooltip","node"],"mappings":"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"}
|
|
@@ -5,8 +5,10 @@ interface DendrogramProps {
|
|
|
5
5
|
sideElementBBoxes: ChartDimensionsData['sideElementBBoxes'];
|
|
6
6
|
xDataByKeys: Record<string, Record<string, DataValue>>;
|
|
7
7
|
yDataByKeys: Record<string, Record<string, DataValue>>;
|
|
8
|
+
xGroupKeys: string[];
|
|
9
|
+
yGroupKeys: string[];
|
|
8
10
|
aesScales: DendrogramAesScales;
|
|
9
11
|
}
|
|
10
|
-
export declare function Dendrograms({ dendrograms, sideElementBBoxes, xDataByKeys, yDataByKeys, aesScales }: DendrogramProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function Dendrograms({ dendrograms, sideElementBBoxes, xDataByKeys, yDataByKeys, xGroupKeys, yGroupKeys, aesScales }: DendrogramProps): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
export {};
|
|
12
14
|
//# sourceMappingURL=Dendrograms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dendrograms.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/Dendrograms.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,mBAAmB,EAAW,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAEjG,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AA0C3C,UAAU,eAAe;IACrB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,mBAAmB,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,EAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAC,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"Dendrograms.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/Dendrograms.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,mBAAmB,EAAW,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAEjG,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AA0C3C,UAAU,eAAe;IACrB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;CAClC;AAED,wBAAgB,WAAW,CAAC,EAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC,EAAE,eAAe,2CA0FzI"}
|
|
@@ -1,81 +1,87 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { isColumnName as
|
|
3
|
-
import { getLineShape as
|
|
4
|
-
import { getPointShape as
|
|
5
|
-
function
|
|
6
|
-
const { source:
|
|
7
|
-
return
|
|
1
|
+
import { j as a } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { isColumnName as N } from "../../utils/index.js";
|
|
3
|
+
import { getLineShape as S } from "../../utils/getLineShape.js";
|
|
4
|
+
import { getPointShape as B } from "../../utils/getPointShape.js";
|
|
5
|
+
function L(n, i = "top") {
|
|
6
|
+
const { source: e, target: r } = n;
|
|
7
|
+
return i === "top" || i === "bottom" ? `M ${e.x},${e.y} L ${r.x},${e.y} L${r.x},${r.y}` : `M ${e.x},${e.y} L ${e.x},${r.y} L${r.x},${r.y}`;
|
|
8
8
|
}
|
|
9
|
-
function
|
|
10
|
-
if (!
|
|
9
|
+
function v(n, i, e, r, m) {
|
|
10
|
+
if (!e)
|
|
11
11
|
return "";
|
|
12
|
-
const
|
|
13
|
-
if (!
|
|
14
|
-
return
|
|
15
|
-
const
|
|
16
|
-
return
|
|
12
|
+
const l = e.aes[n];
|
|
13
|
+
if (!N(l))
|
|
14
|
+
return l;
|
|
15
|
+
const y = l.value, o = m[y], s = r[y][i.data.keys[0]];
|
|
16
|
+
return i.data.keys.every((d) => s === r[y][d]) ? o(String(s))[n] : o.unknown()[n];
|
|
17
17
|
}
|
|
18
|
-
const
|
|
19
|
-
function
|
|
20
|
-
const
|
|
21
|
-
function
|
|
22
|
-
return
|
|
18
|
+
const G = { x: 0, y: 0 };
|
|
19
|
+
function C({ dendrograms: n, sideElementBBoxes: i, xDataByKeys: e, yDataByKeys: r, xGroupKeys: m, yGroupKeys: l, aesScales: y }) {
|
|
20
|
+
const o = n.x.data, s = n.y.data, d = o ? i[o.position].dendro : G, j = s ? i[s.position].dendro : G;
|
|
21
|
+
function p(c, u) {
|
|
22
|
+
return v(c, u, o, e, y);
|
|
23
23
|
}
|
|
24
|
-
function h(
|
|
25
|
-
return
|
|
24
|
+
function h(c, u) {
|
|
25
|
+
return v(c, u, s, r, y);
|
|
26
26
|
}
|
|
27
|
-
return /* @__PURE__ */
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
return /* @__PURE__ */ a.jsxs("g", { children: [
|
|
28
|
+
/* @__PURE__ */ a.jsx("g", { transform: `translate(${d.x},${d.y})`, children: o && !o.hidden && m.map((c, u) => {
|
|
29
|
+
const x = n.x.treesByGroupKey[c];
|
|
30
|
+
if (!x)
|
|
31
|
+
return null;
|
|
32
|
+
const f = x.links(), g = x.descendants();
|
|
33
|
+
return /* @__PURE__ */ a.jsxs("g", { children: [
|
|
34
|
+
f.map((t) => {
|
|
35
|
+
const $ = o.edgeInheritance === "up" ? t.source : t.target;
|
|
36
|
+
return /* @__PURE__ */ a.jsx(
|
|
34
37
|
"path",
|
|
35
38
|
{
|
|
36
|
-
d:
|
|
37
|
-
stroke:
|
|
38
|
-
strokeWidth:
|
|
39
|
-
strokeDasharray:
|
|
39
|
+
d: L(t, o.position),
|
|
40
|
+
stroke: p("lineColor", $),
|
|
41
|
+
strokeWidth: p("lineWidth", $),
|
|
42
|
+
strokeDasharray: S(p("lineShape", $)),
|
|
40
43
|
fill: "none"
|
|
41
44
|
},
|
|
42
45
|
`${t.source.x},${t.source.y},${t.target.x},${t.target.y}`
|
|
43
46
|
);
|
|
44
47
|
}),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
o.showNodes && g.map((t) => /* @__PURE__ */ a.jsx("g", { transform: `translate(${t.x},${t.y})`, children: B(
|
|
49
|
+
p("dotShape", t),
|
|
50
|
+
p("dotSize", t),
|
|
51
|
+
p("dotFill", t)
|
|
49
52
|
) }, `${t.x},${t.y}`))
|
|
50
|
-
] },
|
|
53
|
+
] }, u);
|
|
51
54
|
}) }),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
/* @__PURE__ */ a.jsx("g", { transform: `translate(${j.x},${j.y})`, children: s && !s.hidden && l.map((c, u) => {
|
|
56
|
+
const x = n.y.treesByGroupKey[c];
|
|
57
|
+
if (!x)
|
|
58
|
+
return null;
|
|
59
|
+
const f = x.links(), g = x.descendants();
|
|
60
|
+
return /* @__PURE__ */ a.jsxs("g", { children: [
|
|
61
|
+
f.map((t) => {
|
|
62
|
+
const $ = s.edgeInheritance === "up" ? t.source : t.target;
|
|
63
|
+
return /* @__PURE__ */ a.jsx(
|
|
58
64
|
"path",
|
|
59
65
|
{
|
|
60
|
-
d:
|
|
66
|
+
d: L(t, s.position),
|
|
61
67
|
stroke: h("lineColor", $),
|
|
62
68
|
strokeWidth: h("lineWidth", $),
|
|
63
|
-
strokeDasharray:
|
|
69
|
+
strokeDasharray: S(h("lineShape", $)),
|
|
64
70
|
fill: "none"
|
|
65
71
|
},
|
|
66
72
|
`${t.source.x},${t.source.y},${t.target.x},${t.target.y}`
|
|
67
73
|
);
|
|
68
74
|
}),
|
|
69
|
-
|
|
75
|
+
s.showNodes && g.map((t) => /* @__PURE__ */ a.jsx("g", { transform: `translate(${t.x},${t.y})`, children: B(
|
|
70
76
|
h("dotShape", t),
|
|
71
77
|
h("dotSize", t),
|
|
72
78
|
h("dotFill", t)
|
|
73
79
|
) }, `${t.x},${t.y}`))
|
|
74
|
-
] },
|
|
80
|
+
] }, u);
|
|
75
81
|
}) })
|
|
76
82
|
] });
|
|
77
83
|
}
|
|
78
84
|
export {
|
|
79
|
-
|
|
85
|
+
C as Dendrograms
|
|
80
86
|
};
|
|
81
87
|
//# sourceMappingURL=Dendrograms.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dendrograms.js","sources":["../../../src/heatmap/components/Dendrograms.tsx"],"sourcesContent":["import type {ChartDendrograms, ChartDimensionsData, Cluster, DendrogramAesScales} from './types';\nimport type {HeatmapDendrogramSettings, HeatmapSettingsImpl} from '../HeatmapSettingsImpl';\nimport type {DataValue} from '../../types';\nimport type {LineShape, PointShape} from '../../types';\nimport {isColumnName} from '../../utils';\nimport {getLineShape} from '../../utils/getLineShape';\nimport {getPointShape} from '../../utils/getPointShape';\nimport type {HierarchyPointLink, HierarchyPointNode} from 'd3-hierarchy';\nimport React from 'react';\n\nfunction getLinkPath(link: HierarchyPointLink<Cluster>, position = 'top'): string {\n const {source, target} = link;\n if (position === 'top' || position === 'bottom') {\n return `M ${source.x},${source.y} L ${target.x},${source.y} L${target.x},${target.y}`;\n }\n return `M ${source.x},${source.y} L ${source.x},${target.y} L${target.x},${target.y}`;\n}\n\nfunction getAes<ValueType>(\n field: keyof HeatmapDendrogramSettings['aes'],\n node: HierarchyPointNode<Cluster>,\n dendrogram: HeatmapSettingsImpl['dendrogramX' | 'dendrogramY'],\n data: Record<string, Record<string, DataValue>>,\n aesScales: DendrogramAesScales\n): ValueType {\n if (!dendrogram) {\n return '' as ValueType;\n }\n const value = dendrogram.aes[field];\n if (!isColumnName(value)) {\n return value as ValueType;\n }\n const columnName = value.value;\n const scale = aesScales[columnName];\n const valueByFirstKey = data[columnName][node.data.keys[0]];\n if (node.data.keys.every(key => valueByFirstKey === data[columnName][key])) {\n return scale(String(valueByFirstKey))[field] as ValueType;\n } else {\n return scale.unknown()[field] as ValueType;\n }\n}\n\nconst EMPTY_BBOX = {x: 0, y: 0, width: 0, height: 0};\n\ninterface DendrogramProps {\n dendrograms: ChartDendrograms;\n sideElementBBoxes: ChartDimensionsData['sideElementBBoxes'];\n xDataByKeys: Record<string, Record<string, DataValue>>;\n yDataByKeys: Record<string, Record<string, DataValue>>;\n aesScales: DendrogramAesScales;\n}\n\nexport function Dendrograms({dendrograms, sideElementBBoxes, xDataByKeys, yDataByKeys, aesScales}: DendrogramProps) {\n const dataX = dendrograms.x.data;\n const dataY = dendrograms.y.data;\n const dendroXBBox = dataX ? sideElementBBoxes[dataX.position].dendro : EMPTY_BBOX;\n const dendroYBBox = dataY ? sideElementBBoxes[dataY.position].dendro : EMPTY_BBOX;\n\n function aesGetterX<ValueType>(field: keyof HeatmapDendrogramSettings['aes'], node: HierarchyPointNode<Cluster>) {\n return getAes<ValueType>(field, node, dataX, xDataByKeys, aesScales);\n }\n function aesGetterY<ValueType>(field: keyof HeatmapDendrogramSettings['aes'], node: HierarchyPointNode<Cluster>) {\n return getAes<ValueType>(field, node, dataY, yDataByKeys, aesScales);\n }\n return (\n <g>\n <g transform={`translate(${dendroXBBox.x},${dendroXBBox.y})`}>\n {dataX && !dataX.hidden &&\n dendrograms.x.trees.map((root, idx) => {\n const links = root.links();\n const nodes = root.descendants();\n return (\n <g key={idx}>\n {links.map(link => {\n const node = dataX.edgeInheritance === 'up' ? link.source : link.target;\n return (\n <path\n key={`${link.source.x},${link.source.y},${link.target.x},${link.target.y}`}\n d={getLinkPath(link, dataX.position)}\n stroke={aesGetterX<string>('lineColor', node)}\n strokeWidth={aesGetterX<number>('lineWidth', node)}\n strokeDasharray={getLineShape(aesGetterX<LineShape>('lineShape', node))}\n fill=\"none\"\n />\n );\n })}\n {dataX.showNodes &&\n nodes.map(node => (\n <g key={`${node.x},${node.y}`} transform={`translate(${node.x},${node.y})`}>\n {getPointShape(\n aesGetterX<PointShape>('dotShape', node),\n aesGetterX<number>('dotSize', node),\n aesGetterX<string>('dotFill', node)\n )}\n </g>\n ))}\n </g>\n );\n })}\n </g>\n <g transform={`translate(${dendroYBBox.x},${dendroYBBox.y})`}>\n {dataY && !dataY.hidden &&\n dendrograms.y.trees.map((root, idx) => {\n const links = root.links();\n const nodes = root.descendants();\n return (\n <g key={idx}>\n {links.map(link => {\n const node = dataY.edgeInheritance === 'up' ? link.source : link.target;\n return (\n <path\n key={`${link.source.x},${link.source.y},${link.target.x},${link.target.y}`}\n d={getLinkPath(link, dataY.position)}\n stroke={aesGetterY<string>('lineColor', node)}\n strokeWidth={aesGetterY<number>('lineWidth', node)}\n strokeDasharray={getLineShape(aesGetterY<LineShape>('lineShape', node))}\n fill=\"none\"\n />\n );\n })}\n {dataY.showNodes &&\n nodes.map(node => (\n <g key={`${node.x},${node.y}`} transform={`translate(${node.x},${node.y})`}>\n {getPointShape(\n aesGetterY<PointShape>('dotShape', node),\n aesGetterY<number>('dotSize', node),\n aesGetterY<string>('dotFill', node)\n )}\n </g>\n ))}\n </g>\n );\n })}\n </g>\n </g>\n );\n}\n"],"names":["getLinkPath","link","position","source","target","getAes","field","node","dendrogram","data","aesScales","value","isColumnName","columnName","scale","valueByFirstKey","key","EMPTY_BBOX","Dendrograms","dendrograms","sideElementBBoxes","xDataByKeys","yDataByKeys","dataX","dataY","dendroXBBox","dendroYBBox","aesGetterX","aesGetterY","jsx","root","idx","links","nodes","getLineShape","getPointShape"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dendrograms.js","sources":["../../../src/heatmap/components/Dendrograms.tsx"],"sourcesContent":["import type {ChartDendrograms, ChartDimensionsData, Cluster, DendrogramAesScales} from './types';\nimport type {HeatmapDendrogramSettings, HeatmapSettingsImpl} from '../HeatmapSettingsImpl';\nimport type {DataValue} from '../../types';\nimport type {LineShape, PointShape} from '../../types';\nimport {isColumnName} from '../../utils';\nimport {getLineShape} from '../../utils/getLineShape';\nimport {getPointShape} from '../../utils/getPointShape';\nimport type {HierarchyPointLink, HierarchyPointNode} from 'd3-hierarchy';\nimport React from 'react';\n\nfunction getLinkPath(link: HierarchyPointLink<Cluster>, position = 'top'): string {\n const {source, target} = link;\n if (position === 'top' || position === 'bottom') {\n return `M ${source.x},${source.y} L ${target.x},${source.y} L${target.x},${target.y}`;\n }\n return `M ${source.x},${source.y} L ${source.x},${target.y} L${target.x},${target.y}`;\n}\n\nfunction getAes<ValueType>(\n field: keyof HeatmapDendrogramSettings['aes'],\n node: HierarchyPointNode<Cluster>,\n dendrogram: HeatmapSettingsImpl['dendrogramX' | 'dendrogramY'],\n data: Record<string, Record<string, DataValue>>,\n aesScales: DendrogramAesScales\n): ValueType {\n if (!dendrogram) {\n return '' as ValueType;\n }\n const value = dendrogram.aes[field];\n if (!isColumnName(value)) {\n return value as ValueType;\n }\n const columnName = value.value;\n const scale = aesScales[columnName];\n const valueByFirstKey = data[columnName][node.data.keys[0]];\n if (node.data.keys.every(key => valueByFirstKey === data[columnName][key])) {\n return scale(String(valueByFirstKey))[field] as ValueType;\n } else {\n return scale.unknown()[field] as ValueType;\n }\n}\n\nconst EMPTY_BBOX = {x: 0, y: 0, width: 0, height: 0};\n\ninterface DendrogramProps {\n dendrograms: ChartDendrograms;\n sideElementBBoxes: ChartDimensionsData['sideElementBBoxes'];\n xDataByKeys: Record<string, Record<string, DataValue>>;\n yDataByKeys: Record<string, Record<string, DataValue>>;\n xGroupKeys: string[];\n yGroupKeys: string[];\n aesScales: DendrogramAesScales;\n}\n\nexport function Dendrograms({dendrograms, sideElementBBoxes, xDataByKeys, yDataByKeys, xGroupKeys, yGroupKeys, aesScales}: DendrogramProps) {\n const dataX = dendrograms.x.data;\n const dataY = dendrograms.y.data;\n const dendroXBBox = dataX ? sideElementBBoxes[dataX.position].dendro : EMPTY_BBOX;\n const dendroYBBox = dataY ? sideElementBBoxes[dataY.position].dendro : EMPTY_BBOX;\n\n function aesGetterX<ValueType>(field: keyof HeatmapDendrogramSettings['aes'], node: HierarchyPointNode<Cluster>) {\n return getAes<ValueType>(field, node, dataX, xDataByKeys, aesScales);\n }\n function aesGetterY<ValueType>(field: keyof HeatmapDendrogramSettings['aes'], node: HierarchyPointNode<Cluster>) {\n return getAes<ValueType>(field, node, dataY, yDataByKeys, aesScales);\n }\n return (\n <g>\n <g transform={`translate(${dendroXBBox.x},${dendroXBBox.y})`}>\n {dataX && !dataX.hidden && xGroupKeys.map((xKey, idx) => {\n const root = dendrograms.x.treesByGroupKey[xKey];\n if (!root) {\n return null;\n }\n const links = root.links();\n const nodes = root.descendants();\n return (\n <g key={idx}>\n {links.map(link => {\n const node = dataX.edgeInheritance === 'up' ? link.source : link.target;\n return (\n <path\n key={`${link.source.x},${link.source.y},${link.target.x},${link.target.y}`}\n d={getLinkPath(link, dataX.position)}\n stroke={aesGetterX<string>('lineColor', node)}\n strokeWidth={aesGetterX<number>('lineWidth', node)}\n strokeDasharray={getLineShape(aesGetterX<LineShape>('lineShape', node))}\n fill=\"none\"\n />\n );\n })}\n {dataX.showNodes &&\n nodes.map(node => (\n <g key={`${node.x},${node.y}`} transform={`translate(${node.x},${node.y})`}>\n {getPointShape(\n aesGetterX<PointShape>('dotShape', node),\n aesGetterX<number>('dotSize', node),\n aesGetterX<string>('dotFill', node)\n )}\n </g>\n ))}\n </g>\n );\n })}\n </g>\n <g transform={`translate(${dendroYBBox.x},${dendroYBBox.y})`}>\n {dataY && !dataY.hidden && yGroupKeys.map((yKey, idx) => {\n const root = dendrograms.y.treesByGroupKey[yKey];\n if (!root) {\n return null;\n }\n const links = root.links();\n const nodes = root.descendants();\n return (\n <g key={idx}>\n {links.map(link => {\n const node = dataY.edgeInheritance === 'up' ? link.source : link.target;\n return (\n <path\n key={`${link.source.x},${link.source.y},${link.target.x},${link.target.y}`}\n d={getLinkPath(link, dataY.position)}\n stroke={aesGetterY<string>('lineColor', node)}\n strokeWidth={aesGetterY<number>('lineWidth', node)}\n strokeDasharray={getLineShape(aesGetterY<LineShape>('lineShape', node))}\n fill=\"none\"\n />\n );\n })}\n {dataY.showNodes &&\n nodes.map(node => (\n <g key={`${node.x},${node.y}`} transform={`translate(${node.x},${node.y})`}>\n {getPointShape(\n aesGetterY<PointShape>('dotShape', node),\n aesGetterY<number>('dotSize', node),\n aesGetterY<string>('dotFill', node)\n )}\n </g>\n ))}\n </g>\n );\n })}\n </g>\n </g>\n );\n}\n"],"names":["getLinkPath","link","position","source","target","getAes","field","node","dendrogram","data","aesScales","value","isColumnName","columnName","scale","valueByFirstKey","key","EMPTY_BBOX","Dendrograms","dendrograms","sideElementBBoxes","xDataByKeys","yDataByKeys","xGroupKeys","yGroupKeys","dataX","dataY","dendroXBBox","dendroYBBox","aesGetterX","aesGetterY","jsx","xKey","idx","root","links","nodes","getLineShape","getPointShape","yKey"],"mappings":"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"}
|
|
@@ -74,11 +74,11 @@ export type Cluster = {
|
|
|
74
74
|
};
|
|
75
75
|
export type ChartDendrograms = {
|
|
76
76
|
x: {
|
|
77
|
-
|
|
77
|
+
treesByGroupKey: Record<string, HierarchyPointNode<Cluster>>;
|
|
78
78
|
data: HeatmapSettingsImpl['dendrogramX'];
|
|
79
79
|
};
|
|
80
80
|
y: {
|
|
81
|
-
|
|
81
|
+
treesByGroupKey: Record<string, HierarchyPointNode<Cluster>>;
|
|
82
82
|
data: HeatmapSettingsImpl['dendrogramY'];
|
|
83
83
|
};
|
|
84
84
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/types.ts"],"names":[],"mappings":"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"}
|