@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.
Files changed (63) hide show
  1. package/dist/heatmap/ChartRenderer.d.ts +2 -2
  2. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  3. package/dist/heatmap/ChartRenderer.js +224 -223
  4. package/dist/heatmap/ChartRenderer.js.map +1 -1
  5. package/dist/heatmap/HeatmapSettingsImpl.d.ts +1 -0
  6. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  7. package/dist/heatmap/HeatmapSettingsImpl.js +33 -32
  8. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  9. package/dist/heatmap/components/Annotations/Annotation.d.ts +2 -2
  10. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  11. package/dist/heatmap/components/Annotations/Annotation.js +106 -98
  12. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  13. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts +23 -0
  14. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts.map +1 -0
  15. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js +99 -0
  16. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.js.map +1 -0
  17. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts +23 -0
  18. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts.map +1 -0
  19. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.js +57 -0
  20. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.js.map +1 -0
  21. package/dist/heatmap/components/Annotations/index.d.ts +2 -2
  22. package/dist/heatmap/components/Annotations/index.d.ts.map +1 -1
  23. package/dist/heatmap/components/Annotations/index.js +2 -2
  24. package/dist/heatmap/components/Annotations/index.js.map +1 -1
  25. package/dist/heatmap/components/CanvasCells.d.ts +21 -0
  26. package/dist/heatmap/components/CanvasCells.d.ts.map +1 -0
  27. package/dist/heatmap/components/CanvasCells.js +85 -0
  28. package/dist/heatmap/components/CanvasCells.js.map +1 -0
  29. package/dist/heatmap/components/Chart.d.ts +2 -1
  30. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  31. package/dist/heatmap/components/Chart.js +180 -186
  32. package/dist/heatmap/components/Chart.js.map +1 -1
  33. package/dist/heatmap/components/ChartsGroup.d.ts +2 -1
  34. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
  35. package/dist/heatmap/components/ChartsGroup.js +27 -25
  36. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  37. package/dist/heatmap/components/SvgCells.d.ts +19 -0
  38. package/dist/heatmap/components/SvgCells.d.ts.map +1 -0
  39. package/dist/heatmap/components/SvgCells.js +38 -0
  40. package/dist/heatmap/components/SvgCells.js.map +1 -0
  41. package/dist/heatmap/components/tooltipUtils.d.ts +10 -0
  42. package/dist/heatmap/components/tooltipUtils.d.ts.map +1 -0
  43. package/dist/heatmap/components/tooltipUtils.js +44 -0
  44. package/dist/heatmap/components/tooltipUtils.js.map +1 -0
  45. package/dist/heatmap/components/types.d.ts +8 -0
  46. package/dist/heatmap/components/types.d.ts.map +1 -1
  47. package/dist/heatmap/constants.d.ts +1 -0
  48. package/dist/heatmap/constants.d.ts.map +1 -1
  49. package/dist/heatmap/constants.js +13 -12
  50. package/dist/heatmap/constants.js.map +1 -1
  51. package/dist/heatmap/getCells.d.ts.map +1 -1
  52. package/dist/heatmap/getCells.js +65 -68
  53. package/dist/heatmap/getCells.js.map +1 -1
  54. package/dist/heatmap/index.d.ts.map +1 -1
  55. package/dist/heatmap/index.js +89 -87
  56. package/dist/heatmap/index.js.map +1 -1
  57. package/dist/heatmap/utils/calculateCaptionTails.js +60 -60
  58. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  59. package/dist/types/heatmap.d.ts +3 -0
  60. package/dist/types/heatmap.d.ts.map +1 -1
  61. package/dist/types/heatmap.js +5 -4
  62. package/dist/types/heatmap.js.map +1 -1
  63. package/package.json +1 -1
@@ -1,138 +1,146 @@
1
1
  import { j as h } from "../../../node_modules/react/jsx-runtime.js";
2
- import { r as S } from "../../../node_modules/react-dom/index.js";
3
- import { BLACK as O } from "../../../constants.js";
4
- import { ANNOTATION_WIDTH as s } from "../../constants.js";
5
- function q(g, f, r, m, x) {
6
- if (g) {
7
- const k = s / 2, v = r === "top" ? -5 : x + 5;
8
- return { x: k, y: v, rotate: f === "left" ? -90 : 90, anchor: f === "left" && r === "top" ? "start" : "end" };
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 c = r === "right" ? m + 5 : -5, i = s / 2;
11
- return { x: c, y: i, rotate: 0, anchor: r === "right" ? "start" : "end" };
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(g) {
14
- return g !== null && "isAnnotation" in g;
15
- }
16
- function Z({
17
- facetKey: g,
18
- data: f,
19
- scales: r,
20
- stepX: m,
21
- stepY: x,
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: v,
27
- height: w,
28
- colorScale: d,
29
- aes: X,
30
- frame: b,
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: l,
36
- activeElementContainer: E
32
+ yKeysByGroups: d,
33
+ tooltipsData: j,
34
+ cellsRenderingMode: b
37
35
  }) {
38
- const { position: p, titlePosition: Y, valueColumn: j } = C, o = p === "left" || p === "right", z = (o ? r.y : r.x).domain(), A = q(o, p, Y, v, w), F = l.fixed && E;
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
- z.map((n) => {
41
- const t = f == null ? void 0 : f[n], u = d.type === "continuous" ? d.scale(Number(t)) : d.scale(String(t)), e = c + (o ? 0 : r.x(n)), I = i + (o ? r.y(n) : 0), M = o ? s : m, N = o ? x : s, W = o ? null : n, H = o ? n : null, R = F && J(l.selectedData) && l.selectedData.xKey === W && l.selectedData.yKey === H && g === l.currentFacet, L = /* @__PURE__ */ h.jsx(
42
- "rect",
43
- {
44
- x: e,
45
- y: I,
46
- width: M,
47
- height: N,
48
- fill: u,
49
- stroke: X.cellStrokeColor,
50
- onMouseEnter: () => l.onMouseEnter({
51
- isAnnotation: !0,
52
- x: e + M,
53
- y: I + N / 2,
54
- xKey: W,
55
- yKey: H,
56
- value: t,
57
- title: j.label ?? j.value,
58
- column: C.valueColumn
59
- }, g),
60
- onMouseLeave: () => l.onMouseLeave()
61
- },
62
- n
63
- );
64
- return R ? S.createPortal(L, E) : L;
65
- }),
66
- l.fixed && !o && T.map((n) => {
67
- const t = a[n].length;
68
- if (t === 0)
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 u = t * m, e = r.x(a[n][0]);
78
+ const g = e * l, i = t.x(a[o][0]);
71
79
  return /* @__PURE__ */ h.jsx(
72
80
  "rect",
73
81
  {
74
- x: e + c,
75
- y: i,
76
- width: u,
77
- height: s,
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
- `${e}_${i}`
89
+ `${i}_${r}`
82
90
  );
83
91
  }),
84
- l.fixed && o && _.map((n) => {
85
- const t = $[n].length;
86
- if (t === 0)
92
+ j.fixed && c && W.map((o) => {
93
+ const e = d[o].length;
94
+ if (e === 0)
87
95
  return null;
88
- const u = t * x, e = r.y($[n][0]);
96
+ const g = e * u, i = t.y(d[o][0]);
89
97
  return /* @__PURE__ */ h.jsx(
90
98
  "rect",
91
99
  {
92
- x: c,
93
- y: e + i,
94
- width: s,
95
- height: u,
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
- `${c}_${e}`
107
+ `${n}_${i}`
100
108
  );
101
109
  }),
102
- b.type === "groups" && !o && T.map((n) => {
103
- const t = a[n].length;
104
- if (t === 0)
110
+ w.type === "groups" && !c && T.map((o) => {
111
+ const e = a[o].length;
112
+ if (e === 0)
105
113
  return null;
106
- const u = t * m, e = r.x(a[n][0]);
114
+ const g = e * l, i = t.x(a[o][0]);
107
115
  return /* @__PURE__ */ h.jsx(
108
116
  "rect",
109
117
  {
110
- x: e + c,
111
- y: i,
112
- width: u,
113
- height: s,
114
- stroke: O,
118
+ x: i + n,
119
+ y: r,
120
+ width: g,
121
+ height: f,
122
+ stroke: I,
115
123
  fill: "none"
116
124
  },
117
- `${e}_${i}`
125
+ `${i}_${r}`
118
126
  );
119
127
  }),
120
- b.type === "groups" && o && _.map((n) => {
121
- const t = $[n].length;
122
- if (t === 0)
128
+ w.type === "groups" && c && W.map((o) => {
129
+ const e = d[o].length;
130
+ if (e === 0)
123
131
  return null;
124
- const u = t * x, e = r.y($[n][0]);
132
+ const g = e * u, i = t.y(d[o][0]);
125
133
  return /* @__PURE__ */ h.jsx(
126
134
  "rect",
127
135
  {
128
- x: c,
129
- y: e + i,
130
- width: s,
131
- height: u,
132
- stroke: O,
136
+ x: n,
137
+ y: i + r,
138
+ width: f,
139
+ height: g,
140
+ stroke: I,
133
141
  fill: "none"
134
142
  },
135
- `${c}_${e}`
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(${c + A.x},${i + A.y}) rotate(${A.rotate})`,
144
- children: /* @__PURE__ */ h.jsx("text", { textAnchor: A.anchor, dominantBaseline: "central", children: j.label ?? j.value })
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
- Z as Annotation
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":";;;;;AAUA,SAASA,EACLC,GACAC,GACAC,GACAC,GACAC,GACF;AACE,MAAIJ,GAAU;AACV,UAAMK,IAAIC,IAAmB,GACvBC,IAAIL,MAAkB,QAAQ,KAAKE,IAAS;AAGlD,WAAO,EAAE,GAAAC,GAAG,GAAAE,GAAG,QAFAN,MAAuB,SAAS,MAAM,IAE9B,QADRA,MAAuB,UAAUC,MAAkB,QAAQ,UAAU,MAC7DM;AAAAA,EAC3B;AACA,QAAMH,IAAIH,MAAkB,UAAUC,IAAQ,IAAI,IAC5CI,IAAID,IAAmB;AAE7B,SAAO,EAAE,GAAAD,GAAG,GAAAE,GAAG,QAAQ,GAAG,QADXL,MAAkB,UAAU,UAAU,MAC3B;AAC9B;AAyBO,SAASO,EAAW;AAAA,EACvB,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAAT;AAAA,EACA,GAAAE;AAAA,EACA,YAAAQ;AAAA,EACA,WAAAC;AAAA,EACA,OAAAb;AAAA,EACA,QAAAC;AAAA,EACA,YAAAa;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,oBAAAC;AACJ,GAAoB;AAChB,QAAM,EAAE,UAAAC,GAAU,eAAAxB,GAAe,aAAAyB,EAAA,IAAgBZ,GAC3Cf,IAAW0B,MAAa,UAAUA,MAAa,SAC/CE,KAAQ5B,IAAWY,EAAO,IAAIA,EAAO,GAAG,OAAA,GACxCiB,IAAe9B,EAAgBC,GAAU0B,GAAUxB,GAAeC,GAAOC,CAAM;AAErF,gCACK,KAAA,EACI,UAAA;AAAA,IAAAqB,MAAuB,SACpBK,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACG,UAAArB;AAAA,QACA,QAAAE;AAAA,QACA,MAAAgB;AAAA,QACA,GAAAvB;AAAA,QACA,GAAAE;AAAA,QACA,OAAAM;AAAA,QACA,OAAAC;AAAA,QACA,UAAAd;AAAA,QACA,KAAAkB;AAAA,QACA,YAAAD;AAAA,QACA,MAAAN;AAAA,QACA,YAAAI;AAAA,QACA,cAAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAGPC,MAAuB,YACpBK,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,UAAAtB;AAAA,QACA,QAAAE;AAAA,QACA,MAAAgB;AAAA,QACA,GAAAvB;AAAA,QACA,GAAAE;AAAA,QACA,OAAAM;AAAA,QACA,OAAAC;AAAA,QACA,UAAAd;AAAA,QACA,KAAAkB;AAAA,QACA,YAAAD;AAAA,QACA,MAAAN;AAAA,QACA,YAAAI;AAAA,QACA,cAAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAGPA,EAAa,SAAS,CAACxB,KAAYoB,EAAW,IAAI,CAAAa,MAAa;AAC5D,YAAMC,IAAaZ,EAAcW,CAAS,EAAE;AAC5C,UAAIC,MAAe;AACf,eAAO;AAEX,YAAMC,IAAaD,IAAarB,GAC1BuB,IAASxB,EAAO,EAAEU,EAAcW,CAAS,EAAE,CAAC,CAAC;AACnD,aACIH,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,GAAGM,IAAS/B;AAAA,UACZ,GAAAE;AAAA,UACA,OAAO4B;AAAA,UACP,QAAQ7B;AAAA,UACR,QAAO;AAAA,UACP,MAAK;AAAA,QAAA;AAAA,QANA,GAAG8B,CAAM,IAAI7B,CAAC;AAAA,MAAA;AAAA,IAS/B,CAAC;AAAA,IACAiB,EAAa,SAASxB,KAAYqB,EAAW,IAAI,CAAAgB,MAAa;AAC3D,YAAMC,IAAaf,EAAcc,CAAS,EAAE;AAC5C,UAAIC,MAAe;AACf,eAAO;AAEX,YAAMC,IAAcD,IAAaxB,GAC3B0B,IAAS5B,EAAO,EAAEW,EAAcc,CAAS,EAAE,CAAC,CAAC;AACnD,aACIP,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,GAAAzB;AAAA,UACA,GAAGmC,IAASjC;AAAA,UACZ,OAAOD;AAAA,UACP,QAAQiC;AAAA,UACR,QAAO;AAAA,UACP,MAAK;AAAA,QAAA;AAAA,QANA,GAAGlC,CAAC,IAAImC,CAAM;AAAA,MAAA;AAAA,IAS/B,CAAC;AAAA,IACArB,EAAM,SAAS,YACZ,CAACnB,KACDoB,EAAW,IAAI,CAAAa,MAAa;AACxB,YAAMC,IAAaZ,EAAcW,CAAS,EAAE;AAC5C,UAAIC,MAAe;AACf,eAAO;AAEX,YAAMC,IAAaD,IAAarB,GAC1BuB,IAASxB,EAAO,EAAEU,EAAcW,CAAS,EAAE,CAAC,CAAC;AACnD,aACIH,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,GAAGM,IAAS/B;AAAA,UACZ,GAAAE;AAAA,UACA,OAAO4B;AAAA,UACP,QAAQ7B;AAAA,UACR,QAAQmC;AAAA,UACR,MAAK;AAAA,QAAA;AAAA,QANA,GAAGL,CAAM,IAAI7B,CAAC;AAAA,MAAA;AAAA,IAS/B,CAAC;AAAA,IACJY,EAAM,SAAS,YACZnB,KACAqB,EAAW,IAAI,CAAAgB,MAAa;AACxB,YAAMC,IAAaf,EAAcc,CAAS,EAAE;AAC5C,UAAIC,MAAe;AACf,eAAO;AAEX,YAAMC,IAAcD,IAAaxB,GAC3B0B,IAAS5B,EAAO,EAAEW,EAAcc,CAAS,EAAE,CAAC,CAAC;AACnD,aACIP,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,GAAAzB;AAAA,UACA,GAAGmC,IAASjC;AAAA,UACZ,OAAOD;AAAA,UACP,QAAQiC;AAAA,UACR,QAAQE;AAAA,UACR,MAAK;AAAA,QAAA;AAAA,QANA,GAAGpC,CAAC,IAAImC,CAAM;AAAA,MAAA;AAAA,IAS/B,CAAC;AAAA,IACJxB,KACGc,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,YAAW;AAAA,QACX,UAAS;AAAA,QACT,WAAW,aAAazB,IAAIwB,EAAa,CAAC,IAAItB,IAAIsB,EAAa,CAAC,YAAYA,EAAa,MAAM;AAAA,QAE/F,UAAAC,gBAAAA,EAAAA,IAAC,QAAA,EAAK,YAAYD,EAAa,QAAQ,kBAAiB,WACnD,UAAAF,EAAY,SAASA,EAAY,MAAA,CACtC;AAAA,MAAA;AAAA,IAAA;AAAA,EACJ,GAER;AAER;"}
@@ -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
- activeElementContainer?: Element;
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, activeElementContainer }: AnnotationProps): import("react/jsx-runtime").JSX.Element;
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,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;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,sBAAsB,EACzB,EAAE,eAAe,2CA0FjB"}
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
- activeElementContainer: C
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
- activeElementContainer: C
44
+ cellsRenderingMode: C
45
45
  };
46
46
  return /* @__PURE__ */ i.jsxs("g", { children: [
47
47
  H.map((o, t) => /* @__PURE__ */ i.jsx(