@milaboratories/miplots4 1.0.144 → 1.0.146
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 +2 -2
- package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +224 -223
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +1 -0
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +33 -32
- package/dist/heatmap/HeatmapSettingsImpl.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 +106 -98
- package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts +23 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts.map +1 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js +99 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js.map +1 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts +23 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts.map +1 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsSvg.js +57 -0
- package/dist/heatmap/components/Annotations/AnnotationCellsSvg.js.map +1 -0
- package/dist/heatmap/components/Annotations/index.d.ts +2 -2
- package/dist/heatmap/components/Annotations/index.d.ts.map +1 -1
- package/dist/heatmap/components/Annotations/index.js +2 -2
- package/dist/heatmap/components/Annotations/index.js.map +1 -1
- package/dist/heatmap/components/CanvasCells.d.ts +21 -0
- package/dist/heatmap/components/CanvasCells.d.ts.map +1 -0
- package/dist/heatmap/components/CanvasCells.js +85 -0
- package/dist/heatmap/components/CanvasCells.js.map +1 -0
- package/dist/heatmap/components/Chart.d.ts +2 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +180 -186
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/heatmap/components/ChartsGroup.d.ts +2 -1
- package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
- package/dist/heatmap/components/ChartsGroup.js +27 -25
- package/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/heatmap/components/SvgCells.d.ts +19 -0
- package/dist/heatmap/components/SvgCells.d.ts.map +1 -0
- package/dist/heatmap/components/SvgCells.js +38 -0
- package/dist/heatmap/components/SvgCells.js.map +1 -0
- package/dist/heatmap/components/tooltipUtils.d.ts +10 -0
- package/dist/heatmap/components/tooltipUtils.d.ts.map +1 -0
- package/dist/heatmap/components/tooltipUtils.js +44 -0
- package/dist/heatmap/components/tooltipUtils.js.map +1 -0
- package/dist/heatmap/components/types.d.ts +8 -0
- package/dist/heatmap/components/types.d.ts.map +1 -1
- package/dist/heatmap/constants.d.ts +1 -0
- package/dist/heatmap/constants.d.ts.map +1 -1
- package/dist/heatmap/constants.js +13 -12
- package/dist/heatmap/constants.js.map +1 -1
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +65 -68
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +89 -87
- package/dist/heatmap/index.js.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js +60 -60
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/types/heatmap.d.ts +3 -0
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +5 -4
- package/dist/types/heatmap.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,138 +1,146 @@
|
|
|
1
1
|
import { j as h } from "../../../node_modules/react/jsx-runtime.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { BLACK as I } from "../../../constants.js";
|
|
3
|
+
import { ANNOTATION_WIDTH as f } from "../../constants.js";
|
|
4
|
+
import { AnnotationCellsCanvas as z } from "./AnnotationCellsCanvas.js";
|
|
5
|
+
import { AnnotationCellsSvg as E } from "./AnnotationCellsSvg.js";
|
|
6
|
+
function L(s, m, t, l, u) {
|
|
7
|
+
if (s) {
|
|
8
|
+
const k = f / 2, C = t === "top" ? -5 : u + 5;
|
|
9
|
+
return { x: k, y: C, rotate: m === "left" ? -90 : 90, anchor: m === "left" && t === "top" ? "start" : "end" };
|
|
9
10
|
}
|
|
10
|
-
const
|
|
11
|
-
return { x:
|
|
11
|
+
const n = t === "right" ? l + 5 : -5, r = f / 2;
|
|
12
|
+
return { x: n, y: r, rotate: 0, anchor: t === "right" ? "start" : "end" };
|
|
12
13
|
}
|
|
13
|
-
function J(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
x: c,
|
|
23
|
-
y: i,
|
|
24
|
-
annotation: C,
|
|
14
|
+
function J({
|
|
15
|
+
facetKey: s,
|
|
16
|
+
data: m,
|
|
17
|
+
scales: t,
|
|
18
|
+
stepX: l,
|
|
19
|
+
stepY: u,
|
|
20
|
+
x: n,
|
|
21
|
+
y: r,
|
|
22
|
+
annotation: x,
|
|
25
23
|
showTitle: k,
|
|
26
|
-
width:
|
|
27
|
-
height:
|
|
28
|
-
colorScale:
|
|
29
|
-
aes:
|
|
30
|
-
frame:
|
|
24
|
+
width: C,
|
|
25
|
+
height: p,
|
|
26
|
+
colorScale: v,
|
|
27
|
+
aes: _,
|
|
28
|
+
frame: w,
|
|
31
29
|
xGroupKeys: T,
|
|
32
|
-
yGroupKeys:
|
|
30
|
+
yGroupKeys: W,
|
|
33
31
|
xKeysByGroups: a,
|
|
34
|
-
yKeysByGroups:
|
|
35
|
-
tooltipsData:
|
|
36
|
-
|
|
32
|
+
yKeysByGroups: d,
|
|
33
|
+
tooltipsData: j,
|
|
34
|
+
cellsRenderingMode: b
|
|
37
35
|
}) {
|
|
38
|
-
const { position:
|
|
36
|
+
const { position: A, titlePosition: O, valueColumn: H } = x, c = A === "left" || A === "right", N = (c ? t.y : t.x).domain(), $ = L(c, A, O, C, p);
|
|
39
37
|
return /* @__PURE__ */ h.jsxs("g", { children: [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
38
|
+
b === "svg" && /* @__PURE__ */ h.jsx(
|
|
39
|
+
E,
|
|
40
|
+
{
|
|
41
|
+
facetKey: s,
|
|
42
|
+
scales: t,
|
|
43
|
+
keys: N,
|
|
44
|
+
x: n,
|
|
45
|
+
y: r,
|
|
46
|
+
stepX: l,
|
|
47
|
+
stepY: u,
|
|
48
|
+
vertical: c,
|
|
49
|
+
aes: _,
|
|
50
|
+
colorScale: v,
|
|
51
|
+
data: m,
|
|
52
|
+
annotation: x,
|
|
53
|
+
tooltipsData: j
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
b === "canvas" && /* @__PURE__ */ h.jsx(
|
|
57
|
+
z,
|
|
58
|
+
{
|
|
59
|
+
facetKey: s,
|
|
60
|
+
scales: t,
|
|
61
|
+
keys: N,
|
|
62
|
+
x: n,
|
|
63
|
+
y: r,
|
|
64
|
+
stepX: l,
|
|
65
|
+
stepY: u,
|
|
66
|
+
vertical: c,
|
|
67
|
+
aes: _,
|
|
68
|
+
colorScale: v,
|
|
69
|
+
data: m,
|
|
70
|
+
annotation: x,
|
|
71
|
+
tooltipsData: j
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
j.fixed && !c && T.map((o) => {
|
|
75
|
+
const e = a[o].length;
|
|
76
|
+
if (e === 0)
|
|
69
77
|
return null;
|
|
70
|
-
const
|
|
78
|
+
const g = e * l, i = t.x(a[o][0]);
|
|
71
79
|
return /* @__PURE__ */ h.jsx(
|
|
72
80
|
"rect",
|
|
73
81
|
{
|
|
74
|
-
x:
|
|
75
|
-
y:
|
|
76
|
-
width:
|
|
77
|
-
height:
|
|
82
|
+
x: i + n,
|
|
83
|
+
y: r,
|
|
84
|
+
width: g,
|
|
85
|
+
height: f,
|
|
78
86
|
stroke: "none",
|
|
79
87
|
fill: "rgba(255, 255, 255, 0.8)"
|
|
80
88
|
},
|
|
81
|
-
`${
|
|
89
|
+
`${i}_${r}`
|
|
82
90
|
);
|
|
83
91
|
}),
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
92
|
+
j.fixed && c && W.map((o) => {
|
|
93
|
+
const e = d[o].length;
|
|
94
|
+
if (e === 0)
|
|
87
95
|
return null;
|
|
88
|
-
const
|
|
96
|
+
const g = e * u, i = t.y(d[o][0]);
|
|
89
97
|
return /* @__PURE__ */ h.jsx(
|
|
90
98
|
"rect",
|
|
91
99
|
{
|
|
92
|
-
x:
|
|
93
|
-
y:
|
|
94
|
-
width:
|
|
95
|
-
height:
|
|
100
|
+
x: n,
|
|
101
|
+
y: i + r,
|
|
102
|
+
width: f,
|
|
103
|
+
height: g,
|
|
96
104
|
stroke: "none",
|
|
97
105
|
fill: "rgba(255, 255, 255, 0.8)"
|
|
98
106
|
},
|
|
99
|
-
`${
|
|
107
|
+
`${n}_${i}`
|
|
100
108
|
);
|
|
101
109
|
}),
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
if (
|
|
110
|
+
w.type === "groups" && !c && T.map((o) => {
|
|
111
|
+
const e = a[o].length;
|
|
112
|
+
if (e === 0)
|
|
105
113
|
return null;
|
|
106
|
-
const
|
|
114
|
+
const g = e * l, i = t.x(a[o][0]);
|
|
107
115
|
return /* @__PURE__ */ h.jsx(
|
|
108
116
|
"rect",
|
|
109
117
|
{
|
|
110
|
-
x:
|
|
111
|
-
y:
|
|
112
|
-
width:
|
|
113
|
-
height:
|
|
114
|
-
stroke:
|
|
118
|
+
x: i + n,
|
|
119
|
+
y: r,
|
|
120
|
+
width: g,
|
|
121
|
+
height: f,
|
|
122
|
+
stroke: I,
|
|
115
123
|
fill: "none"
|
|
116
124
|
},
|
|
117
|
-
`${
|
|
125
|
+
`${i}_${r}`
|
|
118
126
|
);
|
|
119
127
|
}),
|
|
120
|
-
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
128
|
+
w.type === "groups" && c && W.map((o) => {
|
|
129
|
+
const e = d[o].length;
|
|
130
|
+
if (e === 0)
|
|
123
131
|
return null;
|
|
124
|
-
const
|
|
132
|
+
const g = e * u, i = t.y(d[o][0]);
|
|
125
133
|
return /* @__PURE__ */ h.jsx(
|
|
126
134
|
"rect",
|
|
127
135
|
{
|
|
128
|
-
x:
|
|
129
|
-
y:
|
|
130
|
-
width:
|
|
131
|
-
height:
|
|
132
|
-
stroke:
|
|
136
|
+
x: n,
|
|
137
|
+
y: i + r,
|
|
138
|
+
width: f,
|
|
139
|
+
height: g,
|
|
140
|
+
stroke: I,
|
|
133
141
|
fill: "none"
|
|
134
142
|
},
|
|
135
|
-
`${
|
|
143
|
+
`${n}_${i}`
|
|
136
144
|
);
|
|
137
145
|
}),
|
|
138
146
|
k && /* @__PURE__ */ h.jsx(
|
|
@@ -140,13 +148,13 @@ function Z({
|
|
|
140
148
|
{
|
|
141
149
|
fontWeight: "500",
|
|
142
150
|
fontSize: "14px",
|
|
143
|
-
transform: `translate(${
|
|
144
|
-
children: /* @__PURE__ */ h.jsx("text", { textAnchor:
|
|
151
|
+
transform: `translate(${n + $.x},${r + $.y}) rotate(${$.rotate})`,
|
|
152
|
+
children: /* @__PURE__ */ h.jsx("text", { textAnchor: $.anchor, dominantBaseline: "central", children: H.label ?? H.value })
|
|
145
153
|
}
|
|
146
154
|
)
|
|
147
155
|
] });
|
|
148
156
|
}
|
|
149
157
|
export {
|
|
150
|
-
|
|
158
|
+
J as Annotation
|
|
151
159
|
};
|
|
152
160
|
//# sourceMappingURL=Annotation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Annotation.js","sources":["../../../../src/heatmap/components/Annotations/Annotation.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { BLACK } from '../../../constants';\nimport type { DataValue } from '../../../types';\nimport { ANNOTATION_WIDTH } from '../../constants';\nimport type { Cell, GroupedCellsData } from '../../getCells';\nimport type { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';\nimport type { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';\n\nfunction getTextPosition(\n vertical: boolean,\n annotationPosition: string,\n titlePosition: string,\n width: number,\n height: number\n) {\n if (vertical) {\n const x = ANNOTATION_WIDTH / 2;\n const y = titlePosition === 'top' ? -5 : height + 5;\n const rotate = annotationPosition === 'left' ? -90 : 90;\n const anchor = annotationPosition === 'left' && titlePosition === 'top' ? 'start' : 'end';\n return {x, y, rotate, anchor};\n }\n const x = titlePosition === 'right' ? width + 5 : -5;\n const y = ANNOTATION_WIDTH / 2;\n const anchor = titlePosition === 'right' ? 'start' : 'end';\n return {x, y, rotate: 0, anchor};\n}\ninterface AnnotationProps {\n facetKey: string;\n scales: ChartScales;\n data: Record<string, DataValue>;\n annotation: HeatmapSettingsImpl['annotations'][0];\n stepX: number;\n stepY: number;\n vertical?: boolean;\n x: number;\n y: number;\n width: number;\n height: number;\n showTitle: boolean;\n colorScale: AnnotationColorScales[string];\n aes: HeatmapSettingsImpl['aes'];\n frame: HeatmapSettingsImpl['chartSettings']['frame'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;\n activeElementContainer?: Element;\n}\n\nfunction isAnnotationTooltip(d:Cell|AnnotationTooltipData|null):d is AnnotationTooltipData {\n return d !== null && ('isAnnotation' in d);\n}\n\nexport function Annotation({\n facetKey,\n data,\n scales,\n stepX,\n stepY,\n x,\n y,\n annotation,\n showTitle,\n width,\n height,\n colorScale,\n aes,\n frame,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n tooltipsData,\n activeElementContainer\n}: AnnotationProps) {\n const {position, titlePosition, valueColumn} = annotation;\n const vertical = position === 'left' || position === 'right';\n const keys = (vertical ? scales.y : scales.x).domain();\n const textPosition = getTextPosition(vertical, position, titlePosition, width, height);\n const isDimmedBackground = tooltipsData.fixed && activeElementContainer;\n\n return (\n <g>\n {keys.map(key => {\n const value = data?.[key];\n const fillColor = colorScale.type === 'continuous'\n ? colorScale.scale(Number(value))\n : colorScale.scale(String(value));\n const xInner= x + (vertical ? 0 : scales.x(key));\n const yInner= y + (vertical ? scales.y(key) : 0);\n const width = vertical ? ANNOTATION_WIDTH : stepX;\n const height = vertical ? stepY : ANNOTATION_WIDTH;\n const xKey = vertical ? null : key;\n const yKey = vertical ? key : null;\n const highlighted = isDimmedBackground\n && isAnnotationTooltip(tooltipsData.selectedData)\n && tooltipsData.selectedData.xKey === xKey\n && tooltipsData.selectedData.yKey === yKey\n && facetKey === tooltipsData.currentFacet;\n const cellElement = (\n <rect\n key={key}\n x={xInner}\n y={yInner}\n width={width}\n height={height}\n fill={fillColor}\n stroke={aes.cellStrokeColor}\n onMouseEnter={() => tooltipsData.onMouseEnter({\n isAnnotation: true,\n x: xInner + width,\n y: yInner + height / 2,\n xKey,\n yKey,\n value,\n title: valueColumn.label ?? valueColumn.value,\n column: annotation.valueColumn\n } satisfies AnnotationTooltipData, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n return highlighted ? createPortal(cellElement, activeElementContainer) : cellElement;\n })}\n {tooltipsData.fixed && !vertical && xGroupKeys.map(xGroupKey => {\n const keysCountX = xKeysByGroups[xGroupKey].length;\n if (keysCountX === 0) {\n return null;\n }\n const groupWidth = keysCountX * stepX;\n const groupX = scales.x(xKeysByGroups[xGroupKey][0]);\n return (\n <rect\n key={`${groupX}_${y}`}\n x={groupX + x}\n y={y}\n width={groupWidth}\n height={ANNOTATION_WIDTH}\n stroke=\"none\"\n fill=\"rgba(255, 255, 255, 0.8)\"\n />\n );\n })}\n {tooltipsData.fixed && vertical && yGroupKeys.map(yGroupKey => {\n const keysCountY = yKeysByGroups[yGroupKey].length;\n if (keysCountY === 0) {\n return null;\n }\n const groupHeight = keysCountY * stepY;\n const groupY = scales.y(yKeysByGroups[yGroupKey][0]);\n return (\n <rect\n key={`${x}_${groupY}`}\n x={x}\n y={groupY + y}\n width={ANNOTATION_WIDTH}\n height={groupHeight}\n stroke=\"none\"\n fill=\"rgba(255, 255, 255, 0.8)\"\n />\n );\n })}\n {frame.type === 'groups' &&\n !vertical &&\n xGroupKeys.map(xGroupKey => {\n const keysCountX = xKeysByGroups[xGroupKey].length;\n if (keysCountX === 0) {\n return null;\n }\n const groupWidth = keysCountX * stepX;\n const groupX = scales.x(xKeysByGroups[xGroupKey][0]);\n return (\n <rect\n key={`${groupX}_${y}`}\n x={groupX + x}\n y={y}\n width={groupWidth}\n height={ANNOTATION_WIDTH}\n stroke={BLACK}\n fill=\"none\"\n />\n );\n })}\n {frame.type === 'groups' &&\n vertical &&\n yGroupKeys.map(yGroupKey => {\n const keysCountY = yKeysByGroups[yGroupKey].length;\n if (keysCountY === 0) {\n return null;\n }\n const groupHeight = keysCountY * stepY;\n const groupY = scales.y(yKeysByGroups[yGroupKey][0]);\n return (\n <rect\n key={`${x}_${groupY}`}\n x={x}\n y={groupY + y}\n width={ANNOTATION_WIDTH}\n height={groupHeight}\n stroke={BLACK}\n fill=\"none\"\n />\n );\n })}\n {showTitle && (\n <g\n fontWeight=\"500\"\n fontSize=\"14px\"\n transform={`translate(${x + textPosition.x},${y + textPosition.y}) rotate(${textPosition.rotate})`}\n >\n <text textAnchor={textPosition.anchor} dominantBaseline=\"central\">\n {valueColumn.label ?? valueColumn.value}\n </text>\n </g>\n )}\n </g>\n );\n}\n"],"names":["getTextPosition","vertical","annotationPosition","titlePosition","width","height","x","ANNOTATION_WIDTH","y","anchor","isAnnotationTooltip","d","Annotation","facetKey","data","scales","stepX","stepY","annotation","showTitle","colorScale","aes","frame","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","tooltipsData","activeElementContainer","position","valueColumn","keys","textPosition","isDimmedBackground","key","value","fillColor","xInner","yInner","xKey","yKey","highlighted","cellElement","jsx","createPortal","xGroupKey","keysCountX","groupWidth","groupX","yGroupKey","keysCountY","groupHeight","groupY","BLACK"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Annotation.js","sources":["../../../../src/heatmap/components/Annotations/Annotation.tsx"],"sourcesContent":["import type { TooltipsData } from '../../../common/Tooltip';\nimport { BLACK } from '../../../constants';\nimport type { DataValue } from '../../../types';\nimport { ANNOTATION_WIDTH } from '../../constants';\nimport type { Cell, GroupedCellsData } from '../../getCells';\nimport type { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';\nimport type { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';\nimport { AnnotationCellsCanvas } from './AnnotationCellsCanvas';\nimport { AnnotationCellsSvg } from './AnnotationCellsSvg';\n\nfunction getTextPosition(\n vertical: boolean,\n annotationPosition: string,\n titlePosition: string,\n width: number,\n height: number\n) {\n if (vertical) {\n const x = ANNOTATION_WIDTH / 2;\n const y = titlePosition === 'top' ? -5 : height + 5;\n const rotate = annotationPosition === 'left' ? -90 : 90;\n const anchor = annotationPosition === 'left' && titlePosition === 'top' ? 'start' : 'end';\n return { x, y, rotate, anchor };\n }\n const x = titlePosition === 'right' ? width + 5 : -5;\n const y = ANNOTATION_WIDTH / 2;\n const anchor = titlePosition === 'right' ? 'start' : 'end';\n return { x, y, rotate: 0, anchor };\n}\ninterface AnnotationProps {\n facetKey: string;\n scales: ChartScales;\n data: Record<string, DataValue>;\n annotation: HeatmapSettingsImpl['annotations'][0];\n stepX: number;\n stepY: number;\n vertical?: boolean;\n x: number;\n y: number;\n width: number;\n height: number;\n showTitle: boolean;\n colorScale: AnnotationColorScales[string];\n aes: HeatmapSettingsImpl['aes'];\n frame: HeatmapSettingsImpl['chartSettings']['frame'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;\n cellsRenderingMode: 'canvas' | 'svg'\n}\n\nexport function Annotation({\n facetKey,\n data,\n scales,\n stepX,\n stepY,\n x,\n y,\n annotation,\n showTitle,\n width,\n height,\n colorScale,\n aes,\n frame,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n tooltipsData,\n cellsRenderingMode,\n}: AnnotationProps) {\n const { position, titlePosition, valueColumn } = annotation;\n const vertical = position === 'left' || position === 'right';\n const keys = (vertical ? scales.y : scales.x).domain();\n const textPosition = getTextPosition(vertical, position, titlePosition, width, height);\n\n return (\n <g>\n {cellsRenderingMode === 'svg' && (\n <AnnotationCellsSvg\n facetKey={facetKey}\n scales={scales}\n keys={keys}\n x={x}\n y={y}\n stepX={stepX}\n stepY={stepY}\n vertical={vertical}\n aes={aes}\n colorScale={colorScale}\n data={data}\n annotation={annotation}\n tooltipsData={tooltipsData}\n />\n )}\n {cellsRenderingMode === 'canvas' && (\n <AnnotationCellsCanvas\n facetKey={facetKey}\n scales={scales}\n keys={keys}\n x={x}\n y={y}\n stepX={stepX}\n stepY={stepY}\n vertical={vertical}\n aes={aes}\n colorScale={colorScale}\n data={data}\n annotation={annotation}\n tooltipsData={tooltipsData}\n />\n )}\n {tooltipsData.fixed && !vertical && xGroupKeys.map(xGroupKey => {\n const keysCountX = xKeysByGroups[xGroupKey].length;\n if (keysCountX === 0) {\n return null;\n }\n const groupWidth = keysCountX * stepX;\n const groupX = scales.x(xKeysByGroups[xGroupKey][0]);\n return (\n <rect\n key={`${groupX}_${y}`}\n x={groupX + x}\n y={y}\n width={groupWidth}\n height={ANNOTATION_WIDTH}\n stroke=\"none\"\n fill=\"rgba(255, 255, 255, 0.8)\"\n />\n );\n })}\n {tooltipsData.fixed && vertical && yGroupKeys.map(yGroupKey => {\n const keysCountY = yKeysByGroups[yGroupKey].length;\n if (keysCountY === 0) {\n return null;\n }\n const groupHeight = keysCountY * stepY;\n const groupY = scales.y(yKeysByGroups[yGroupKey][0]);\n return (\n <rect\n key={`${x}_${groupY}`}\n x={x}\n y={groupY + y}\n width={ANNOTATION_WIDTH}\n height={groupHeight}\n stroke=\"none\"\n fill=\"rgba(255, 255, 255, 0.8)\"\n />\n );\n })}\n {frame.type === 'groups' &&\n !vertical &&\n xGroupKeys.map(xGroupKey => {\n const keysCountX = xKeysByGroups[xGroupKey].length;\n if (keysCountX === 0) {\n return null;\n }\n const groupWidth = keysCountX * stepX;\n const groupX = scales.x(xKeysByGroups[xGroupKey][0]);\n return (\n <rect\n key={`${groupX}_${y}`}\n x={groupX + x}\n y={y}\n width={groupWidth}\n height={ANNOTATION_WIDTH}\n stroke={BLACK}\n fill=\"none\"\n />\n );\n })}\n {frame.type === 'groups' &&\n vertical &&\n yGroupKeys.map(yGroupKey => {\n const keysCountY = yKeysByGroups[yGroupKey].length;\n if (keysCountY === 0) {\n return null;\n }\n const groupHeight = keysCountY * stepY;\n const groupY = scales.y(yKeysByGroups[yGroupKey][0]);\n return (\n <rect\n key={`${x}_${groupY}`}\n x={x}\n y={groupY + y}\n width={ANNOTATION_WIDTH}\n height={groupHeight}\n stroke={BLACK}\n fill=\"none\"\n />\n );\n })}\n {showTitle && (\n <g\n fontWeight=\"500\"\n fontSize=\"14px\"\n transform={`translate(${x + textPosition.x},${y + textPosition.y}) rotate(${textPosition.rotate})`}\n >\n <text textAnchor={textPosition.anchor} dominantBaseline=\"central\">\n {valueColumn.label ?? valueColumn.value}\n </text>\n </g>\n )}\n </g>\n );\n}\n"],"names":["getTextPosition","vertical","annotationPosition","titlePosition","width","height","x","ANNOTATION_WIDTH","y","anchor","Annotation","facetKey","data","scales","stepX","stepY","annotation","showTitle","colorScale","aes","frame","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","tooltipsData","cellsRenderingMode","position","valueColumn","keys","textPosition","jsx","AnnotationCellsSvg","AnnotationCellsCanvas","xGroupKey","keysCountX","groupWidth","groupX","yGroupKey","keysCountY","groupHeight","groupY","BLACK"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';
|
|
2
|
+
import { DataValue } from '../../../types/common';
|
|
3
|
+
import { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';
|
|
4
|
+
import { Cell } from '../../getCells';
|
|
5
|
+
import { TooltipsData } from '../../../common/Tooltip';
|
|
6
|
+
interface AnnotationCellsCanvasProps {
|
|
7
|
+
facetKey: string;
|
|
8
|
+
scales: ChartScales;
|
|
9
|
+
keys: string[];
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
stepX: number;
|
|
13
|
+
stepY: number;
|
|
14
|
+
vertical: boolean;
|
|
15
|
+
aes: HeatmapSettingsImpl['aes'];
|
|
16
|
+
colorScale: AnnotationColorScales[keyof AnnotationColorScales];
|
|
17
|
+
data: Record<string, DataValue>;
|
|
18
|
+
annotation: HeatmapSettingsImpl['annotations'][0];
|
|
19
|
+
tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;
|
|
20
|
+
}
|
|
21
|
+
export declare function AnnotationCellsCanvas({ facetKey, scales, data, keys, vertical, annotation, x, y, stepX, stepY, aes, colorScale, tooltipsData, }: AnnotationCellsCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=AnnotationCellsCanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnnotationCellsCanvas.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Annotations/AnnotationCellsCanvas.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,UAAU,0BAA0B;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,UAAU,EAAE,qBAAqB,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,YAAY,EAAE,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC;CAC5D;AAyDD,wBAAgB,qBAAqB,CAAC,EAClC,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAClB,GAAG,EACH,UAAU,EACV,YAAY,GACf,EAAE,0BAA0B,2CAkF5B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { j as k } from "../../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { ANNOTATION_WIDTH as A } from "../../constants.js";
|
|
3
|
+
import { r as w } from "../../../_virtual/index.js";
|
|
4
|
+
import { useFunction as W } from "../../../utils/hooks/useFunction.js";
|
|
5
|
+
function I(t, e, u, o, n, r, i, l, m) {
|
|
6
|
+
if (t) {
|
|
7
|
+
t.beginPath(), t.clearRect(0, 0, l, m);
|
|
8
|
+
for (const f of o) {
|
|
9
|
+
const g = u == null ? void 0 : u[f], c = i.type === "continuous" ? i.scale(Number(g)) : i.scale(String(g)), y = n ? 0 : e.x(f), p = n ? e.y(f) : 0;
|
|
10
|
+
t.fillStyle = c, t.fillRect(y, p, l, m);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function P(t, e, u) {
|
|
15
|
+
let o = 0, n = t.length - 1;
|
|
16
|
+
for (; o <= n; ) {
|
|
17
|
+
const r = Math.floor((o + n) / 2);
|
|
18
|
+
if (Math.abs(t[r] - e) < u)
|
|
19
|
+
return t[r] >= e ? r - 1 : r;
|
|
20
|
+
e < t[r] ? n = r - 1 : o = r + 1;
|
|
21
|
+
}
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
function O(t, e, u, o) {
|
|
25
|
+
const n = P(e, t, o);
|
|
26
|
+
return n === -1 ? -1 : u[n];
|
|
27
|
+
}
|
|
28
|
+
function _({
|
|
29
|
+
facetKey: t,
|
|
30
|
+
scales: e,
|
|
31
|
+
data: u,
|
|
32
|
+
keys: o,
|
|
33
|
+
vertical: n,
|
|
34
|
+
annotation: r,
|
|
35
|
+
x: i,
|
|
36
|
+
y: l,
|
|
37
|
+
stepX: m,
|
|
38
|
+
stepY: f,
|
|
39
|
+
aes: g,
|
|
40
|
+
colorScale: c,
|
|
41
|
+
tooltipsData: y
|
|
42
|
+
}) {
|
|
43
|
+
const { valueColumn: p } = r, x = n ? A : m, C = n ? f : A, M = n ? x : x * o.length, R = n ? C * o.length : C, j = w.useRef(null), b = window.devicePixelRatio || 1, d = w.useRef(null), E = () => {
|
|
44
|
+
I(
|
|
45
|
+
d.current,
|
|
46
|
+
e,
|
|
47
|
+
u,
|
|
48
|
+
o,
|
|
49
|
+
n,
|
|
50
|
+
g.cellStrokeColor,
|
|
51
|
+
c,
|
|
52
|
+
x,
|
|
53
|
+
C
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
w.useEffect(() => {
|
|
57
|
+
const s = j.current;
|
|
58
|
+
d.current || (d.current = (s == null ? void 0 : s.getContext("2d")) ?? null), s && d.current && (s.style.width = M + "px", s.style.height = R + "px", d.current.scale(b, b)), E();
|
|
59
|
+
}, [M, R]), E();
|
|
60
|
+
const H = W((s) => {
|
|
61
|
+
const K = s.nativeEvent.offsetX, L = s.nativeEvent.offsetY, h = n ? O(L, e.y.range(), e.y.domain(), f) : O(K, e.x.range(), e.x.domain(), m);
|
|
62
|
+
if (h !== -1) {
|
|
63
|
+
const N = n ? 0 : e.x(h), a = n ? e.y(h) : 0, v = u[h], T = c.type === "continuous" ? c.scale(Number(v)) : c.scale(String(v));
|
|
64
|
+
y.onMouseEnter({
|
|
65
|
+
isAnnotation: !0,
|
|
66
|
+
x: i + N + x,
|
|
67
|
+
y: l + a + C / 2,
|
|
68
|
+
cell: {
|
|
69
|
+
x: i + N,
|
|
70
|
+
y: l + a,
|
|
71
|
+
width: x,
|
|
72
|
+
height: C,
|
|
73
|
+
fill: T,
|
|
74
|
+
stroke: g.cellStrokeColor
|
|
75
|
+
},
|
|
76
|
+
xKey: n ? null : h,
|
|
77
|
+
yKey: n ? h : null,
|
|
78
|
+
value: v,
|
|
79
|
+
title: p.label ?? p.value,
|
|
80
|
+
column: r.valueColumn
|
|
81
|
+
}, t);
|
|
82
|
+
} else
|
|
83
|
+
y.onMouseLeave();
|
|
84
|
+
});
|
|
85
|
+
return /* @__PURE__ */ k.jsx("foreignObject", { x: i, y: l, width: M, height: R, children: /* @__PURE__ */ k.jsx(
|
|
86
|
+
"canvas",
|
|
87
|
+
{
|
|
88
|
+
ref: j,
|
|
89
|
+
width: b * M,
|
|
90
|
+
height: b * R,
|
|
91
|
+
onMouseMove: H,
|
|
92
|
+
onMouseLeave: () => y.onMouseLeave()
|
|
93
|
+
}
|
|
94
|
+
) });
|
|
95
|
+
}
|
|
96
|
+
export {
|
|
97
|
+
_ as AnnotationCellsCanvas
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=AnnotationCellsCanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnnotationCellsCanvas.js","sources":["../../../../src/heatmap/components/Annotations/AnnotationCellsCanvas.tsx"],"sourcesContent":["\nimport type { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';\nimport { ANNOTATION_WIDTH } from '../../constants';\nimport type { DataValue } from '../../../types/common';\nimport type { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';\nimport type { Cell } from '../../getCells';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport type { MouseEventHandler } from 'react';\nimport { useEffect, useRef } from 'react';\nimport { useFunction } from '../../../utils/hooks/useFunction';\n\ninterface AnnotationCellsCanvasProps {\n facetKey: string,\n scales: ChartScales,\n keys: string[],\n x: number,\n y: number,\n stepX: number,\n stepY: number,\n vertical: boolean,\n aes: HeatmapSettingsImpl['aes'];\n colorScale: AnnotationColorScales[keyof AnnotationColorScales],\n data: Record<string, DataValue>;\n annotation: HeatmapSettingsImpl['annotations'][0];\n tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;\n}\n\nfunction renderCells(\n ctx: CanvasRenderingContext2D | null,\n scales: ChartScales,\n data: Record<string, DataValue>,\n keys: string[],\n vertical: boolean,\n strokeColor: string,\n colorScale: AnnotationColorScales[keyof AnnotationColorScales],\n width: number,\n height: number\n) {\n if (!ctx) {\n return;\n }\n ctx.beginPath(); // Start a new path\n ctx.clearRect(0, 0, width, height);\n for (const key of keys) {\n const value = data?.[key];\n const fillColor = colorScale.type === 'continuous'\n ? colorScale.scale(Number(value))\n : colorScale.scale(String(value));\n const x = (vertical ? 0 : scales.x(key));\n const y = (vertical ? scales.y(key) : 0);\n\n ctx.fillStyle = fillColor;\n ctx.fillRect(x, y, width, height); // Add a rectangle to the current path\n }\n}\n\nfunction binarySearch(arr: number[], val: number, step: number) {\n let start = 0;\n let end = arr.length - 1;\n\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n if (Math.abs(arr[mid] - val) < step) {\n return arr[mid] >= val ? mid - 1 : mid;\n }\n\n if (val < arr[mid]) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n return -1;\n}\nfunction searchKey(px: number, positions: number[], keys: string[], step: number) {\n const pos = binarySearch(positions, px, step);\n if (pos === -1) {\n return -1;\n }\n return keys[pos];\n}\n\nexport function AnnotationCellsCanvas({\n facetKey,\n scales,\n data,\n keys,\n vertical,\n annotation,\n x, y, stepX, stepY,\n aes,\n colorScale,\n tooltipsData,\n}: AnnotationCellsCanvasProps) {\n const { valueColumn } = annotation;\n const cellWidth = vertical ? ANNOTATION_WIDTH : stepX;\n const cellHeight = vertical ? stepY : ANNOTATION_WIDTH;\n const annotationWidth = vertical ? cellWidth : cellWidth * keys.length;\n const annotationHeight = vertical ? cellHeight * keys.length : cellHeight;\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const canvasRatio = window.devicePixelRatio || 1;\n const ctx = useRef<CanvasRenderingContext2D | null>(null);\n const render = () => {\n renderCells(\n ctx.current,\n scales,\n data,\n keys,\n vertical,\n aes.cellStrokeColor,\n colorScale,\n cellWidth,\n cellHeight\n );\n };\n useEffect(() => {\n const canvasEl = canvasRef.current;\n if (!ctx.current) {\n ctx.current = canvasEl?.getContext('2d') ?? null;\n }\n if (canvasEl && ctx.current) {\n canvasEl.style.width = annotationWidth + 'px';\n canvasEl.style.height = annotationHeight + 'px';\n ctx.current.scale(canvasRatio, canvasRatio);\n }\n render();\n }, [annotationWidth, annotationHeight]);\n render();\n\n const moveOnCanvas: MouseEventHandler<HTMLCanvasElement> = useFunction((e: React.MouseEvent) => {\n const mouseX = e.nativeEvent.offsetX;\n const mouseY = e.nativeEvent.offsetY;\n const key = vertical\n ? searchKey(mouseY, scales.y.range(), scales.y.domain(), stepY)\n : searchKey(mouseX, scales.x.range(), scales.x.domain(), stepX);\n if (key !== -1) {\n const innerX = (vertical ? 0 : scales.x(key));\n const innerY = (vertical ? scales.y(key) : 0);\n const value = data[key];\n const fillColor = colorScale.type === 'continuous'\n ? colorScale.scale(Number(value))\n : colorScale.scale(String(value));\n tooltipsData.onMouseEnter({\n isAnnotation: true,\n x: x + innerX + cellWidth,\n y: y + innerY + cellHeight / 2,\n cell: {\n x: x + innerX,\n y: y + innerY,\n width: cellWidth,\n height: cellHeight,\n fill: fillColor,\n stroke: aes.cellStrokeColor\n },\n xKey: vertical ? null : key,\n yKey: vertical ? key : null,\n value,\n title: valueColumn.label ?? valueColumn.value,\n column: annotation.valueColumn\n } satisfies AnnotationTooltipData, facetKey);\n } else {\n tooltipsData.onMouseLeave();\n }\n });\n return (\n <foreignObject x={x} y={y} width={annotationWidth} height={annotationHeight}>\n <canvas\n ref={canvasRef}\n width={canvasRatio * annotationWidth}\n height={canvasRatio * annotationHeight}\n onMouseMove={moveOnCanvas}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n </foreignObject>\n );\n}"],"names":["renderCells","ctx","scales","data","keys","vertical","strokeColor","colorScale","width","height","key","value","fillColor","x","y","binarySearch","arr","val","step","start","end","mid","searchKey","px","positions","pos","AnnotationCellsCanvas","facetKey","annotation","stepX","stepY","aes","tooltipsData","valueColumn","cellWidth","ANNOTATION_WIDTH","cellHeight","annotationWidth","annotationHeight","canvasRef","useRef","canvasRatio","render","useEffect","canvasEl","moveOnCanvas","useFunction","e","mouseX","mouseY","innerX","innerY","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';
|
|
2
|
+
import { DataValue } from '../../../types/common';
|
|
3
|
+
import { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';
|
|
4
|
+
import { Cell } from '../../getCells';
|
|
5
|
+
import { TooltipsData } from '../../../common/Tooltip';
|
|
6
|
+
interface AnnotationCellsSvgProps {
|
|
7
|
+
facetKey: string;
|
|
8
|
+
scales: ChartScales;
|
|
9
|
+
keys: string[];
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
stepX: number;
|
|
13
|
+
stepY: number;
|
|
14
|
+
vertical: boolean;
|
|
15
|
+
aes: HeatmapSettingsImpl['aes'];
|
|
16
|
+
colorScale: AnnotationColorScales[keyof AnnotationColorScales];
|
|
17
|
+
data: Record<string, DataValue>;
|
|
18
|
+
annotation: HeatmapSettingsImpl['annotations'][0];
|
|
19
|
+
tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;
|
|
20
|
+
}
|
|
21
|
+
export declare function AnnotationCellsSvg({ facetKey, scales, data, keys, vertical, annotation, x, y, stepX, stepY, aes, colorScale, tooltipsData, }: AnnotationCellsSvgProps): import("react/jsx-runtime").JSX.Element[];
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=AnnotationCellsSvg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnnotationCellsSvg.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Annotations/AnnotationCellsSvg.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,UAAU,uBAAuB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,UAAU,EAAE,qBAAqB,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,YAAY,EAAE,YAAY,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAClB,GAAG,EACH,UAAU,EACV,YAAY,GACf,EAAE,uBAAuB,6CA4CzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { j as T } from "../../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { ANNOTATION_WIDTH as y } from "../../constants.js";
|
|
3
|
+
function K({
|
|
4
|
+
facetKey: A,
|
|
5
|
+
scales: x,
|
|
6
|
+
data: e,
|
|
7
|
+
keys: I,
|
|
8
|
+
vertical: n,
|
|
9
|
+
annotation: c,
|
|
10
|
+
x: M,
|
|
11
|
+
y: N,
|
|
12
|
+
stepX: g,
|
|
13
|
+
stepY: h,
|
|
14
|
+
aes: i,
|
|
15
|
+
colorScale: l,
|
|
16
|
+
tooltipsData: f
|
|
17
|
+
}) {
|
|
18
|
+
const { valueColumn: C } = c;
|
|
19
|
+
return I.map((o) => {
|
|
20
|
+
const t = e == null ? void 0 : e[o], p = l.type === "continuous" ? l.scale(Number(t)) : l.scale(String(t)), u = M + (n ? 0 : x.x(o)), s = N + (n ? x.y(o) : 0), r = n ? y : g, m = n ? h : y, j = n ? null : o, E = n ? o : null;
|
|
21
|
+
return /* @__PURE__ */ T.jsx(
|
|
22
|
+
"rect",
|
|
23
|
+
{
|
|
24
|
+
x: u,
|
|
25
|
+
y: s,
|
|
26
|
+
width: r,
|
|
27
|
+
height: m,
|
|
28
|
+
fill: p,
|
|
29
|
+
stroke: i.cellStrokeColor,
|
|
30
|
+
onMouseEnter: () => f.onMouseEnter({
|
|
31
|
+
isAnnotation: !0,
|
|
32
|
+
x: u + r,
|
|
33
|
+
y: s + m / 2,
|
|
34
|
+
cell: {
|
|
35
|
+
x: u,
|
|
36
|
+
y: s,
|
|
37
|
+
width: r,
|
|
38
|
+
height: m,
|
|
39
|
+
fill: p,
|
|
40
|
+
stroke: i.cellStrokeColor
|
|
41
|
+
},
|
|
42
|
+
xKey: j,
|
|
43
|
+
yKey: E,
|
|
44
|
+
value: t,
|
|
45
|
+
title: C.label ?? C.value,
|
|
46
|
+
column: c.valueColumn
|
|
47
|
+
}, A),
|
|
48
|
+
onMouseLeave: () => f.onMouseLeave()
|
|
49
|
+
},
|
|
50
|
+
o
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
K as AnnotationCellsSvg
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=AnnotationCellsSvg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnnotationCellsSvg.js","sources":["../../../../src/heatmap/components/Annotations/AnnotationCellsSvg.tsx"],"sourcesContent":["\nimport type { AnnotationColorScales, AnnotationTooltipData, ChartScales } from '../types';\nimport { ANNOTATION_WIDTH } from '../../constants';\nimport type { DataValue } from '../../../types/common';\nimport type { HeatmapSettingsImpl } from '../../HeatmapSettingsImpl';\nimport type { Cell } from '../../getCells';\nimport type { TooltipsData } from '../../../common/Tooltip';\n\ninterface AnnotationCellsSvgProps {\n facetKey: string,\n scales: ChartScales,\n keys: string[],\n x: number,\n y: number,\n stepX: number,\n stepY: number,\n vertical: boolean,\n aes: HeatmapSettingsImpl['aes'];\n colorScale: AnnotationColorScales[keyof AnnotationColorScales],\n data: Record<string, DataValue>;\n annotation: HeatmapSettingsImpl['annotations'][0];\n tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;\n}\n\nexport function AnnotationCellsSvg({\n facetKey,\n scales,\n data,\n keys,\n vertical,\n annotation,\n x, y, stepX, stepY,\n aes,\n colorScale,\n tooltipsData,\n}: AnnotationCellsSvgProps) {\n const { valueColumn } = annotation;\n return keys.map(key => {\n const value = data?.[key];\n const fillColor = colorScale.type === 'continuous'\n ? colorScale.scale(Number(value))\n : colorScale.scale(String(value));\n const xInner = x + (vertical ? 0 : scales.x(key));\n const yInner = y + (vertical ? scales.y(key) : 0);\n const width = vertical ? ANNOTATION_WIDTH : stepX;\n const height = vertical ? stepY : ANNOTATION_WIDTH;\n const xKey = vertical ? null : key;\n const yKey = vertical ? key : null;\n return (\n <rect\n key={key}\n x={xInner}\n y={yInner}\n width={width}\n height={height}\n fill={fillColor}\n stroke={aes.cellStrokeColor}\n onMouseEnter={() => tooltipsData.onMouseEnter({\n isAnnotation: true,\n x: xInner + width,\n y: yInner + height / 2,\n cell: {\n x: xInner,\n y: yInner,\n width,\n height,\n fill: fillColor,\n stroke: aes.cellStrokeColor\n },\n xKey,\n yKey,\n value,\n title: valueColumn.label ?? valueColumn.value,\n column: annotation.valueColumn\n } satisfies AnnotationTooltipData, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n });\n}"],"names":["AnnotationCellsSvg","facetKey","scales","data","keys","vertical","annotation","x","y","stepX","stepY","aes","colorScale","tooltipsData","valueColumn","key","value","fillColor","xInner","yInner","width","ANNOTATION_WIDTH","height","xKey","yKey","jsx"],"mappings":";;AAwBO,SAASA,EAAmB;AAAA,EAC/B,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,GAAAC;AAAA,EAAG,GAAAC;AAAA,EAAG,OAAAC;AAAA,EAAO,OAAAC;AAAA,EACb,KAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AACJ,GAA4B;AACxB,QAAM,EAAE,aAAAC,MAAgBR;AACxB,SAAOF,EAAK,IAAI,CAAAW,MAAO;AACnB,UAAMC,IAAQb,KAAA,gBAAAA,EAAOY,IACfE,IAAYL,EAAW,SAAS,eAChCA,EAAW,MAAM,OAAOI,CAAK,CAAC,IAC9BJ,EAAW,MAAM,OAAOI,CAAK,CAAC,GAC9BE,IAASX,KAAKF,IAAW,IAAIH,EAAO,EAAEa,CAAG,IACzCI,IAASX,KAAKH,IAAWH,EAAO,EAAEa,CAAG,IAAI,IACzCK,IAAQf,IAAWgB,IAAmBZ,GACtCa,IAASjB,IAAWK,IAAQW,GAC5BE,IAAOlB,IAAW,OAAOU,GACzBS,IAAOnB,IAAWU,IAAM;AAC9B,WACIU,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEG,GAAGP;AAAA,QACH,GAAGC;AAAA,QACH,OAAAC;AAAA,QACA,QAAAE;AAAA,QACA,MAAML;AAAA,QACN,QAAQN,EAAI;AAAA,QACZ,cAAc,MAAME,EAAa,aAAa;AAAA,UAC1C,cAAc;AAAA,UACd,GAAGK,IAASE;AAAA,UACZ,GAAGD,IAASG,IAAS;AAAA,UACrB,MAAM;AAAA,YACF,GAAGJ;AAAA,YACH,GAAGC;AAAA,YACH,OAAAC;AAAA,YACA,QAAAE;AAAA,YACA,MAAML;AAAA,YACN,QAAQN,EAAI;AAAA,UAAA;AAAA,UAEhB,MAAAY;AAAA,UACA,MAAAC;AAAA,UACA,OAAAR;AAAA,UACA,OAAOF,EAAY,SAASA,EAAY;AAAA,UACxC,QAAQR,EAAW;AAAA,QAAA,GACYL,CAAQ;AAAA,QAC3C,cAAc,MAAMY,EAAa,aAAA;AAAA,MAAa;AAAA,MAzBzCE;AAAA,IAAA;AAAA,EA4BjB,CAAC;AACL;"}
|
|
@@ -23,8 +23,8 @@ interface AnnotationProps {
|
|
|
23
23
|
xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];
|
|
24
24
|
yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];
|
|
25
25
|
tooltipsData: TooltipsData<Cell | AnnotationTooltipData>;
|
|
26
|
-
|
|
26
|
+
cellsRenderingMode: 'canvas' | 'svg';
|
|
27
27
|
}
|
|
28
|
-
export declare function Annotations({ facetKey, sideElementBBoxes, annotations, annotationColorScales, cellsMeta, chartEdgeSides, sharedX, sharedY, width, height, scales, stepX, stepY, aes, frame, xGroupKeys, yGroupKeys, xKeysByGroups, yKeysByGroups, tooltipsData,
|
|
28
|
+
export declare function Annotations({ facetKey, sideElementBBoxes, annotations, annotationColorScales, cellsMeta, chartEdgeSides, sharedX, sharedY, width, height, scales, stepX, stepY, aes, frame, xGroupKeys, yGroupKeys, xKeysByGroups, yKeysByGroups, tooltipsData, cellsRenderingMode, }: AnnotationProps): import("react/jsx-runtime").JSX.Element;
|
|
29
29
|
export {};
|
|
30
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Annotations/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EACR,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAOnE,UAAU,eAAe;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,YAAY,EAAE,YAAY,CAAC,IAAI,GAAC,qBAAqB,CAAC,CAAC;IACvD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Annotations/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EACR,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAOnE,UAAU,eAAe;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,YAAY,EAAE,YAAY,CAAC,IAAI,GAAC,qBAAqB,CAAC,CAAC;IACvD,kBAAkB,EAAE,QAAQ,GAAG,KAAK,CAAC;CACxC;AAED,wBAAgB,WAAW,CAAC,EACxB,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACrB,EAAE,eAAe,2CA0FjB"}
|
|
@@ -25,7 +25,7 @@ function J({
|
|
|
25
25
|
xKeysByGroups: K,
|
|
26
26
|
yKeysByGroups: P,
|
|
27
27
|
tooltipsData: _,
|
|
28
|
-
|
|
28
|
+
cellsRenderingMode: C
|
|
29
29
|
}) {
|
|
30
30
|
const l = x.filter((o) => a.includes(o.position) || !v && ["left", "right"].includes(o.position) || !j && ["top", "bottom"].includes(o.position)), H = l.filter((o) => o.position === "left"), R = l.filter((o) => o.position === "right"), W = l.filter((o) => o.position === "top"), k = l.filter((o) => o.position === "bottom"), { xDataByKeys: y, yDataByKeys: T } = h, u = {
|
|
31
31
|
facetKey: r,
|
|
@@ -41,7 +41,7 @@ function J({
|
|
|
41
41
|
xKeysByGroups: K,
|
|
42
42
|
yKeysByGroups: P,
|
|
43
43
|
tooltipsData: _,
|
|
44
|
-
|
|
44
|
+
cellsRenderingMode: C
|
|
45
45
|
};
|
|
46
46
|
return /* @__PURE__ */ i.jsxs("g", { children: [
|
|
47
47
|
H.map((o, t) => /* @__PURE__ */ i.jsx(
|