@milaboratories/miplots4 1.0.126 → 1.0.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DataFrame.d.ts +7 -5
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js +67 -60
- package/dist/DataFrame.js.map +1 -1
- package/dist/bubble/components/Chart.d.ts +3 -3
- package/dist/bubble/components/Chart.d.ts.map +1 -1
- package/dist/bubble/components/Chart.js +23 -23
- package/dist/bubble/components/Chart.js.map +1 -1
- package/dist/common/Tooltip.d.ts +1 -1
- package/dist/common/Tooltip.d.ts.map +1 -1
- package/dist/common/Tooltip.js +17 -17
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/discrete/components/layers/BinnedDotsElement.d.ts +2 -2
- package/dist/discrete/components/layers/BinnedDotsElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/BinnedDotsElement.js +9 -9
- package/dist/discrete/components/layers/BinnedDotsElement.js.map +1 -1
- package/dist/discrete/components/layers/BoxElement.d.ts +2 -2
- package/dist/discrete/components/layers/BoxElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/BoxElement.js +19 -19
- package/dist/discrete/components/layers/BoxElement.js.map +1 -1
- package/dist/discrete/components/layers/DotsGroupElement.d.ts +3 -3
- package/dist/discrete/components/layers/DotsGroupElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/DotsGroupElement.js +10 -10
- package/dist/discrete/components/layers/DotsGroupElement.js.map +1 -1
- package/dist/discrete/components/layers/ErrorBarElement.d.ts +2 -2
- package/dist/discrete/components/layers/ErrorBarElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/ErrorBarElement.js +15 -15
- package/dist/discrete/components/layers/ErrorBarElement.js.map +1 -1
- package/dist/discrete/components/layers/LineElement.d.ts +2 -2
- package/dist/discrete/components/layers/LineElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/LineElement.js +12 -12
- package/dist/discrete/components/layers/LineElement.js.map +1 -1
- package/dist/discrete/components/layers/LogoElement.d.ts +2 -2
- package/dist/discrete/components/layers/LogoElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/LogoElement.js +19 -19
- package/dist/discrete/components/layers/LogoElement.js.map +1 -1
- package/dist/discrete/components/layers/PairedPointsElement.d.ts +2 -2
- package/dist/discrete/components/layers/PairedPointsElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/PairedPointsElement.js +37 -37
- package/dist/discrete/components/layers/PairedPointsElement.js.map +1 -1
- package/dist/discrete/components/layers/StackedBarElement.d.ts +3 -3
- package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/StackedBarElement.js +18 -18
- package/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
- package/dist/discrete/components/layers/ViolinElement.d.ts +4 -4
- package/dist/discrete/components/layers/ViolinElement.d.ts.map +1 -1
- package/dist/discrete/components/layers/ViolinElement.js +7 -7
- package/dist/discrete/components/layers/ViolinElement.js.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.d.ts +2 -2
- package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.js +16 -16
- package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +28 -28
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/histogram/components/Chart.d.ts +2 -2
- package/dist/histogram/components/Chart.d.ts.map +1 -1
- package/dist/histogram/components/Chart.js +22 -22
- package/dist/histogram/components/Chart.js.map +1 -1
- package/dist/scatterplot/components/Chart.d.ts +6 -11
- package/dist/scatterplot/components/Chart.d.ts.map +1 -1
- package/dist/scatterplot/components/Chart.js +101 -331
- package/dist/scatterplot/components/Chart.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.d.ts +20 -0
- package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartAxis.js +52 -0
- package/dist/scatterplot/components/ChartAxis.js.map +1 -0
- package/dist/scatterplot/components/ChartAxisTitles.d.ts +15 -0
- package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartAxisTitles.js +56 -0
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -0
- package/dist/scatterplot/components/ChartFacetTitle.d.ts +11 -0
- package/dist/scatterplot/components/ChartFacetTitle.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartFacetTitle.js +37 -0
- package/dist/scatterplot/components/ChartFacetTitle.js.map +1 -0
- package/dist/scatterplot/components/ChartLayersData.d.ts +39 -0
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartLayersData.js +250 -0
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -0
- package/dist/scatterplot/components/ChartTooltip.d.ts +18 -0
- package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartTooltip.js +58 -0
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -0
- package/dist/scatterplot/components/ChartTrendsData.d.ts +11 -0
- package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -0
- package/dist/scatterplot/components/ChartTrendsData.js +65 -0
- package/dist/scatterplot/components/ChartTrendsData.js.map +1 -0
- package/dist/scatterplot/components/ChartsGroup.d.ts +3 -3
- package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +81 -73
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +0 -2
- package/dist/scatterplot/dots.d.ts.map +1 -1
- package/dist/scatterplot/dots.js +26 -22
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +3 -9
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +183 -186
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.js +97 -97
- package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.d.ts +1 -5
- package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +51 -52
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.d.ts +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.js +39 -41
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +18 -18
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +2 -6
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +62 -66
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/scatterplot-umap/types.d.ts +0 -4
- package/dist/scatterplot-umap/types.d.ts.map +1 -1
- package/dist/utils/hooks/useFunction.d.ts +2 -0
- package/dist/utils/hooks/useFunction.d.ts.map +1 -0
- package/dist/utils/hooks/useFunction.js +9 -0
- package/dist/utils/hooks/useFunction.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { j as r } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { r as ee } from "../../_virtual/index.js";
|
|
3
|
+
import { r as te } from "../../node_modules/react-dom/index.js";
|
|
2
4
|
import { Tooltip as S } from "../../common/Tooltip.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { r as fe } from "../../_virtual/index.js";
|
|
9
|
-
import { r as le } from "../../node_modules/react-dom/index.js";
|
|
5
|
+
import { FONT_SIZE as ne, FACET_TITLE_OFFSET as oe } from "../constants.js";
|
|
6
|
+
import { Annotations as re } from "./Annotations/index.js";
|
|
7
|
+
import { Captions as ie } from "./Captions/index.js";
|
|
8
|
+
import { Dendrograms as fe } from "./Dendrograms.js";
|
|
9
|
+
import { Frames as le } from "./Frames.js";
|
|
10
10
|
function v(e) {
|
|
11
11
|
if (e === null)
|
|
12
12
|
return "null";
|
|
@@ -56,23 +56,23 @@ function Ce({
|
|
|
56
56
|
annotations: N,
|
|
57
57
|
annotationColorScales: P,
|
|
58
58
|
dendrogramAesScales: R,
|
|
59
|
-
aes:
|
|
59
|
+
aes: E,
|
|
60
60
|
labelAngles: Z,
|
|
61
61
|
chartSizes: $,
|
|
62
62
|
margins: g,
|
|
63
63
|
tooltipsContainer: w,
|
|
64
64
|
tooltipsData: t
|
|
65
65
|
}) {
|
|
66
|
-
const [b, q] =
|
|
66
|
+
const [b, q] = ee.useState(), { xAxis: J, yAxis: Q, tooltips: y } = h, { width: A, height: F } = n.inner, { padding: l, chartEdgeSides: U, sideElementBBoxes: a } = n, { xGroupLabels: D, yGroupLabels: M, xLabels: Y, yLabels: X } = x, L = i.x.domain(), V = i.y.domain(), _ = {
|
|
67
67
|
left: g.left + n.left + l.left,
|
|
68
68
|
right: $.totalWidth - (g.left + n.left + l.left),
|
|
69
69
|
top: g.top + n.top + l.top,
|
|
70
70
|
bottom: $.totalHeight - (g.top + n.top + l.top)
|
|
71
|
-
},
|
|
72
|
-
return /* @__PURE__ */ r.jsxs("g", { transform: `translate(${n.left},${n.top})`, fontSize:
|
|
71
|
+
}, k = !1, K = b && t.fixed;
|
|
72
|
+
return /* @__PURE__ */ r.jsxs("g", { transform: `translate(${n.left},${n.top})`, fontSize: ne, children: [
|
|
73
73
|
/* @__PURE__ */ r.jsxs("g", { transform: `translate(${l.left},${l.top})`, children: [
|
|
74
74
|
/* @__PURE__ */ r.jsx(
|
|
75
|
-
|
|
75
|
+
re,
|
|
76
76
|
{
|
|
77
77
|
facetKey: o,
|
|
78
78
|
sideElementBBoxes: a,
|
|
@@ -87,7 +87,7 @@ function Ce({
|
|
|
87
87
|
scales: i,
|
|
88
88
|
stepX: c,
|
|
89
89
|
stepY: s,
|
|
90
|
-
aes:
|
|
90
|
+
aes: E,
|
|
91
91
|
frame: h.frame,
|
|
92
92
|
xGroupKeys: u,
|
|
93
93
|
yGroupKeys: j,
|
|
@@ -98,7 +98,7 @@ function Ce({
|
|
|
98
98
|
}
|
|
99
99
|
),
|
|
100
100
|
/* @__PURE__ */ r.jsx(
|
|
101
|
-
|
|
101
|
+
fe,
|
|
102
102
|
{
|
|
103
103
|
dendrograms: e,
|
|
104
104
|
sideElementBBoxes: a,
|
|
@@ -111,35 +111,35 @@ function Ce({
|
|
|
111
111
|
"text",
|
|
112
112
|
{
|
|
113
113
|
x: a.top.facetTitle.x,
|
|
114
|
-
y: a.top.facetTitle.y + a.top.facetTitle.height -
|
|
114
|
+
y: a.top.facetTitle.y + a.top.facetTitle.height - oe,
|
|
115
115
|
fontWeight: "500",
|
|
116
116
|
fontSize: "20px",
|
|
117
117
|
children: x.facetKeyValues[o].join(", ")
|
|
118
118
|
}
|
|
119
119
|
),
|
|
120
|
-
|
|
120
|
+
k,
|
|
121
121
|
L.map(
|
|
122
122
|
(d) => V.map((p) => {
|
|
123
|
-
var
|
|
124
|
-
const f = (
|
|
123
|
+
var O;
|
|
124
|
+
const f = (O = m == null ? void 0 : m[d]) == null ? void 0 : O[p], G = K && W(t.selectedData) && (f == null ? void 0 : f.id) === t.selectedData.id, B = f ? /* @__PURE__ */ r.jsx(
|
|
125
125
|
"rect",
|
|
126
126
|
{
|
|
127
127
|
x: i.x(d),
|
|
128
128
|
y: i.y(p),
|
|
129
129
|
width: c,
|
|
130
130
|
height: s,
|
|
131
|
-
stroke:
|
|
132
|
-
fill: f.value === null ?
|
|
133
|
-
onMouseOver: () => t.
|
|
131
|
+
stroke: E.cellStrokeColor,
|
|
132
|
+
fill: f.value === null ? E.emptyCellColor : z(f.normalizedValue),
|
|
133
|
+
onMouseOver: () => t.onMouseEnter(f, o),
|
|
134
134
|
onMouseLeave: () => t.onMouseLeave()
|
|
135
135
|
},
|
|
136
136
|
f ? f.id : `${d}_${p}`
|
|
137
137
|
) : null;
|
|
138
|
-
return G ?
|
|
138
|
+
return G ? te.createPortal(B, b) : B;
|
|
139
139
|
})
|
|
140
140
|
),
|
|
141
141
|
/* @__PURE__ */ r.jsx(
|
|
142
|
-
|
|
142
|
+
le,
|
|
143
143
|
{
|
|
144
144
|
frame: h.frame,
|
|
145
145
|
xGroupKeys: u,
|
|
@@ -154,14 +154,14 @@ function Ce({
|
|
|
154
154
|
}
|
|
155
155
|
),
|
|
156
156
|
/* @__PURE__ */ r.jsx(
|
|
157
|
-
|
|
157
|
+
ie,
|
|
158
158
|
{
|
|
159
159
|
xAxis: J,
|
|
160
160
|
yAxis: Q,
|
|
161
161
|
scales: i,
|
|
162
162
|
stepX: c,
|
|
163
163
|
stepY: s,
|
|
164
|
-
debug:
|
|
164
|
+
debug: k,
|
|
165
165
|
sideElementBBoxes: a,
|
|
166
166
|
xKeys: L,
|
|
167
167
|
yKeys: V,
|
|
@@ -180,12 +180,12 @@ function Ce({
|
|
|
180
180
|
h.tooltips.show && W(t.selectedData) && t.currentFacet === o && /* @__PURE__ */ r.jsx(
|
|
181
181
|
S,
|
|
182
182
|
{
|
|
183
|
-
content: ue(t.selectedData, x,
|
|
183
|
+
content: ue(t.selectedData, x, y == null ? void 0 : y.content),
|
|
184
184
|
x: i.x(String(t.selectedData.x)) + c / 2,
|
|
185
185
|
y: i.y(String(t.selectedData.y)) + s / 2,
|
|
186
186
|
offset: L.length > 1 ? c / 2 : 0,
|
|
187
187
|
active: !0,
|
|
188
|
-
sideDistances:
|
|
188
|
+
sideDistances: _,
|
|
189
189
|
fixed: t.fixed,
|
|
190
190
|
onClose: t.onClose,
|
|
191
191
|
container: w
|
|
@@ -199,7 +199,7 @@ function Ce({
|
|
|
199
199
|
y: t.selectedData.y,
|
|
200
200
|
offset: 0,
|
|
201
201
|
active: !0,
|
|
202
|
-
sideDistances:
|
|
202
|
+
sideDistances: _,
|
|
203
203
|
fixed: t.fixed,
|
|
204
204
|
onClose: t.onClose,
|
|
205
205
|
container: w
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/heatmap/components/Chart.tsx"],"sourcesContent":["import type { TooltipsData} from '../../common/Tooltip';\nimport {Tooltip} from '../../common/Tooltip';\nimport {Annotations} from './Annotations';\nimport {Captions} from './Captions';\nimport {Dendrograms} from './Dendrograms';\nimport {Frames} from './Frames';\nimport type {AnnotationTooltipData} from './types';\nimport type {ChartDendrograms, ChartSizes, DendrogramAesScales, LabelAngles, Margins} from './types';\nimport type {AnnotationColorScales, CaptionsSizes} from './types';\nimport type {Cell, GroupedCellsData} from '../getCells';\nimport type {ChartDimensionsData, ChartScales} from './types';\nimport {FACET_TITLE_OFFSET, FONT_SIZE} from '../constants';\nimport type {HeatmapSettingsImpl} from '../HeatmapSettingsImpl';\nimport type {ColumnName} from '../../types';\nimport type {DataValue} from '../../types';\nimport React, {useState} from 'react';\nimport {createPortal} from 'react-dom';\n\nfunction formatCellValue (v:DataValue):number|string {\n if (v === null) {\n return 'null';\n }\n if (typeof v === 'number') {\n const whole = v > 0 ? Math.floor(v) : Math.ceil(v);\n const decimal = v - whole;\n return whole + Number(decimal.toPrecision(2));\n }\n return v;\n}\nfunction getTooltipContent(cell: Cell, cellsMeta:GroupedCellsData['meta'], columnsList: ColumnName[] = []) {\n const row = cell.data;\n const lines = [\n `X: ${cellsMeta.xLabels[cell.x as string]}`,\n `Y: ${cellsMeta.yLabels[cell.y as string]}`,\n `Value: ${formatCellValue(cell.value)}${cell.value !== cell.normalizedValue ? ` (${formatCellValue(cell.normalizedValue)})`: ''}`,\n ];\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\nfunction getAnnotationTooltipContent(data:AnnotationTooltipData, cellsMeta:GroupedCellsData['meta']) {\n const lines:string[] = [];\n if (data.xKey) {\n lines.push(`X: ${cellsMeta.xLabels[data.xKey as string]}`);\n }\n if (data.yKey) {\n lines.push(`Y: ${cellsMeta.yLabels[data.yKey as string]}`);\n }\n lines.push(`${data.title}: ${formatCellValue(data.value)}`);\n return lines;\n}\n\nfunction isAnnotationTooltip(d:Cell|AnnotationTooltipData|null):d is AnnotationTooltipData {\n return d !== null && !('data' in d);\n}\nfunction isCellTooltip(d:Cell|AnnotationTooltipData|null):d is Cell {\n return d !== null && 'data' in d;\n}\n\nexport function Chart<ValueType>({\n dendrograms,\n facetKey,\n dimensions,\n scales,\n cells,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n colorScale,\n chartSettings,\n cellsMeta,\n stepX,\n stepY,\n sharedX,\n sharedY,\n annotations,\n annotationColorScales,\n dendrogramAesScales,\n aes,\n labelAngles,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData,\n}: {\n facetKey: string;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n cells: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['cells'];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n colorScale: (value: ValueType) => string;\n chartSettings: HeatmapSettingsImpl['chartSettings'];\n cellsMeta: GroupedCellsData['meta'];\n stepX: number;\n stepY: number;\n annotations: HeatmapSettingsImpl['annotations'];\n annotationColorScales: AnnotationColorScales;\n sharedX: boolean;\n sharedY: boolean;\n aes: HeatmapSettingsImpl['aes'];\n dendrograms: ChartDendrograms;\n dendrogramAesScales: DendrogramAesScales;\n labelAngles: LabelAngles;\n margins: Margins;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<Cell|AnnotationTooltipData>;\n}) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {xAxis, yAxis, tooltips} = chartSettings;\n const {width, height} = dimensions.inner;\n const {padding, chartEdgeSides, sideElementBBoxes} = dimensions;\n const {xGroupLabels, yGroupLabels, xLabels, yLabels} = cellsMeta;\n\n const xKeys = scales.x.domain();\n const yKeys = scales.y.domain();\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const debug = false;\n const isDimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g transform={`translate(${dimensions.left},${dimensions.top})`} fontSize={FONT_SIZE}>\n <g transform={`translate(${padding.left},${padding.top})`}>\n <Annotations\n facetKey={facetKey}\n sideElementBBoxes={sideElementBBoxes}\n annotations={annotations}\n cellsMeta={cellsMeta}\n annotationColorScales={annotationColorScales}\n sharedX={sharedX}\n sharedY={sharedY}\n chartEdgeSides={chartEdgeSides}\n width={width}\n height={height}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n aes={aes}\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n />\n <Dendrograms\n dendrograms={dendrograms}\n sideElementBBoxes={sideElementBBoxes}\n xDataByKeys={cellsMeta.xDataByKeys}\n yDataByKeys={cellsMeta.yDataByKeys}\n aesScales={dendrogramAesScales}\n />\n {/* facet title */}\n {sideElementBBoxes.top.facetTitle.isVisible && (\n <text\n x={sideElementBBoxes.top.facetTitle.x}\n y={\n sideElementBBoxes.top.facetTitle.y +\n sideElementBBoxes.top.facetTitle.height -\n FACET_TITLE_OFFSET\n }\n fontWeight=\"500\"\n fontSize=\"20px\"\n >\n {cellsMeta.facetKeyValues[facetKey].join(', ')}\n </text>\n )}\n {debug && (\n <g fill=\"green\" opacity=\"0.2\">\n <rect\n x={-padding.left}\n y={-padding.top}\n width={dimensions.outer.width}\n height={dimensions.outer.height}\n fill=\"none\"\n stroke=\"red\"\n />\n <rect x={-padding.left} y=\"0\" width={padding.left} height={height} />\n <rect x={width} y=\"0\" width={padding.right} height={height} />\n <rect x=\"0\" y={-padding.top} width={width} height={padding.top} />\n <rect x=\"0\" y={height} width={width} height={padding.bottom} />\n </g>\n )}\n {/* cells */}\n {xKeys.map(xKey =>\n yKeys.map(yKey => {\n const cell = cells?.[xKey]?.[yKey];\n const highlighted = isDimmedBackground && isCellTooltip(tooltipsData.selectedData) && cell?.id === tooltipsData.selectedData.id;\n const cellElement = cell ? (\n <rect\n key={cell ? cell.id : `${xKey}_${yKey}`}\n x={scales.x(xKey)}\n y={scales.y(yKey)}\n width={stepX}\n height={stepY}\n stroke={aes.cellStrokeColor}\n fill={cell.value === null ? aes.emptyCellColor : colorScale(cell.normalizedValue as ValueType)}\n onMouseOver={() => tooltipsData.onMouseOver(cell, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n ) : null;\n return highlighted ? createPortal(cellElement, activeElementContainer) : cellElement;\n })\n )}\n <Frames\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n width={width}\n height={height}\n />\n <Captions\n xAxis={xAxis}\n yAxis={yAxis}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n debug={debug}\n sideElementBBoxes={sideElementBBoxes}\n xKeys={xKeys}\n yKeys={yKeys}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n xGroupLabels={xGroupLabels}\n yGroupLabels={yGroupLabels}\n labelAngles={labelAngles}\n xLabels={xLabels}\n yLabels={yLabels}\n />\n </g>\n {chartSettings.tooltips.show && isCellTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, cellsMeta, tooltips?.content)}\n x={scales.x(String(tooltipsData.selectedData.x)) + stepX / 2}\n y={scales.y(String(tooltipsData.selectedData.y)) + stepY / 2}\n offset={xKeys.length > 1 ? stepX / 2 : 0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n {chartSettings.tooltips.show && isAnnotationTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getAnnotationTooltipContent(tooltipsData.selectedData, cellsMeta)}\n x={tooltipsData.selectedData.x}\n y={tooltipsData.selectedData.y}\n offset={0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n <g transform={`translate(${padding.left},${padding.top})`}>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["formatCellValue","v","whole","decimal","getTooltipContent","cell","cellsMeta","columnsList","row","lines","column","getAnnotationTooltipContent","data","isAnnotationTooltip","d","isCellTooltip","Chart","dendrograms","facetKey","dimensions","scales","cells","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","colorScale","chartSettings","stepX","stepY","sharedX","sharedY","annotations","annotationColorScales","dendrogramAesScales","aes","labelAngles","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","xAxis","yAxis","tooltips","width","height","padding","chartEdgeSides","sideElementBBoxes","xGroupLabels","yGroupLabels","xLabels","yLabels","xKeys","yKeys","sideDistances","debug","isDimmedBackground","jsxs","FONT_SIZE","jsx","Annotations","Dendrograms","FACET_TITLE_OFFSET","xKey","yKey","_a","highlighted","cellElement","createPortal","Frames","Captions","Tooltip","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/heatmap/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport type { ColumnName, DataValue } from '../../types';\nimport { FACET_TITLE_OFFSET, FONT_SIZE } from '../constants';\nimport type { Cell, GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\nimport { Annotations } from './Annotations';\nimport { Captions } from './Captions';\nimport { Dendrograms } from './Dendrograms';\nimport { Frames } from './Frames';\nimport type { AnnotationColorScales, AnnotationTooltipData, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartScales, ChartSizes, DendrogramAesScales, LabelAngles, Margins } from './types';\n\nfunction formatCellValue (v:DataValue):number|string {\n if (v === null) {\n return 'null';\n }\n if (typeof v === 'number') {\n const whole = v > 0 ? Math.floor(v) : Math.ceil(v);\n const decimal = v - whole;\n return whole + Number(decimal.toPrecision(2));\n }\n return v;\n}\nfunction getTooltipContent(cell: Cell, cellsMeta:GroupedCellsData['meta'], columnsList: ColumnName[] = []) {\n const row = cell.data;\n const lines = [\n `X: ${cellsMeta.xLabels[cell.x as string]}`,\n `Y: ${cellsMeta.yLabels[cell.y as string]}`,\n `Value: ${formatCellValue(cell.value)}${cell.value !== cell.normalizedValue ? ` (${formatCellValue(cell.normalizedValue)})`: ''}`,\n ];\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\nfunction getAnnotationTooltipContent(data:AnnotationTooltipData, cellsMeta:GroupedCellsData['meta']) {\n const lines:string[] = [];\n if (data.xKey) {\n lines.push(`X: ${cellsMeta.xLabels[data.xKey as string]}`);\n }\n if (data.yKey) {\n lines.push(`Y: ${cellsMeta.yLabels[data.yKey as string]}`);\n }\n lines.push(`${data.title}: ${formatCellValue(data.value)}`);\n return lines;\n}\n\nfunction isAnnotationTooltip(d:Cell|AnnotationTooltipData|null):d is AnnotationTooltipData {\n return d !== null && !('data' in d);\n}\nfunction isCellTooltip(d:Cell|AnnotationTooltipData|null):d is Cell {\n return d !== null && 'data' in d;\n}\n\nexport function Chart<ValueType>({\n dendrograms,\n facetKey,\n dimensions,\n scales,\n cells,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n colorScale,\n chartSettings,\n cellsMeta,\n stepX,\n stepY,\n sharedX,\n sharedY,\n annotations,\n annotationColorScales,\n dendrogramAesScales,\n aes,\n labelAngles,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData,\n}: {\n facetKey: string;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n cells: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['cells'];\n xKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['xKeysByGroups'];\n yKeysByGroups: GroupedCellsData['facets'][keyof GroupedCellsData['facets']]['yKeysByGroups'];\n xGroupKeys: string[];\n yGroupKeys: string[];\n colorScale: (value: ValueType) => string;\n chartSettings: HeatmapSettingsImpl['chartSettings'];\n cellsMeta: GroupedCellsData['meta'];\n stepX: number;\n stepY: number;\n annotations: HeatmapSettingsImpl['annotations'];\n annotationColorScales: AnnotationColorScales;\n sharedX: boolean;\n sharedY: boolean;\n aes: HeatmapSettingsImpl['aes'];\n dendrograms: ChartDendrograms;\n dendrogramAesScales: DendrogramAesScales;\n labelAngles: LabelAngles;\n margins: Margins;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<Cell|AnnotationTooltipData>;\n}) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {xAxis, yAxis, tooltips} = chartSettings;\n const {width, height} = dimensions.inner;\n const {padding, chartEdgeSides, sideElementBBoxes} = dimensions;\n const {xGroupLabels, yGroupLabels, xLabels, yLabels} = cellsMeta;\n\n const xKeys = scales.x.domain();\n const yKeys = scales.y.domain();\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const debug = false;\n const isDimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g transform={`translate(${dimensions.left},${dimensions.top})`} fontSize={FONT_SIZE}>\n <g transform={`translate(${padding.left},${padding.top})`}>\n <Annotations\n facetKey={facetKey}\n sideElementBBoxes={sideElementBBoxes}\n annotations={annotations}\n cellsMeta={cellsMeta}\n annotationColorScales={annotationColorScales}\n sharedX={sharedX}\n sharedY={sharedY}\n chartEdgeSides={chartEdgeSides}\n width={width}\n height={height}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n aes={aes}\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n />\n <Dendrograms\n dendrograms={dendrograms}\n sideElementBBoxes={sideElementBBoxes}\n xDataByKeys={cellsMeta.xDataByKeys}\n yDataByKeys={cellsMeta.yDataByKeys}\n aesScales={dendrogramAesScales}\n />\n {/* facet title */}\n {sideElementBBoxes.top.facetTitle.isVisible && (\n <text\n x={sideElementBBoxes.top.facetTitle.x}\n y={\n sideElementBBoxes.top.facetTitle.y +\n sideElementBBoxes.top.facetTitle.height -\n FACET_TITLE_OFFSET\n }\n fontWeight=\"500\"\n fontSize=\"20px\"\n >\n {cellsMeta.facetKeyValues[facetKey].join(', ')}\n </text>\n )}\n {debug && (\n <g fill=\"green\" opacity=\"0.2\">\n <rect\n x={-padding.left}\n y={-padding.top}\n width={dimensions.outer.width}\n height={dimensions.outer.height}\n fill=\"none\"\n stroke=\"red\"\n />\n <rect x={-padding.left} y=\"0\" width={padding.left} height={height} />\n <rect x={width} y=\"0\" width={padding.right} height={height} />\n <rect x=\"0\" y={-padding.top} width={width} height={padding.top} />\n <rect x=\"0\" y={height} width={width} height={padding.bottom} />\n </g>\n )}\n {/* cells */}\n {xKeys.map(xKey =>\n yKeys.map(yKey => {\n const cell = cells?.[xKey]?.[yKey];\n const highlighted = isDimmedBackground && isCellTooltip(tooltipsData.selectedData) && cell?.id === tooltipsData.selectedData.id;\n const cellElement = cell ? (\n <rect\n key={cell ? cell.id : `${xKey}_${yKey}`}\n x={scales.x(xKey)}\n y={scales.y(yKey)}\n width={stepX}\n height={stepY}\n stroke={aes.cellStrokeColor}\n fill={cell.value === null ? aes.emptyCellColor : colorScale(cell.normalizedValue as ValueType)}\n onMouseOver={() => tooltipsData.onMouseEnter(cell, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n ) : null;\n return highlighted ? createPortal(cellElement, activeElementContainer) : cellElement;\n })\n )}\n <Frames\n frame={chartSettings.frame}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n width={width}\n height={height}\n />\n <Captions\n xAxis={xAxis}\n yAxis={yAxis}\n scales={scales}\n stepX={stepX}\n stepY={stepY}\n debug={debug}\n sideElementBBoxes={sideElementBBoxes}\n xKeys={xKeys}\n yKeys={yKeys}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={xKeysByGroups}\n yKeysByGroups={yKeysByGroups}\n xGroupLabels={xGroupLabels}\n yGroupLabels={yGroupLabels}\n labelAngles={labelAngles}\n xLabels={xLabels}\n yLabels={yLabels}\n />\n </g>\n {chartSettings.tooltips.show && isCellTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, cellsMeta, tooltips?.content)}\n x={scales.x(String(tooltipsData.selectedData.x)) + stepX / 2}\n y={scales.y(String(tooltipsData.selectedData.y)) + stepY / 2}\n offset={xKeys.length > 1 ? stepX / 2 : 0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n {chartSettings.tooltips.show && isAnnotationTooltip(tooltipsData.selectedData) && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getAnnotationTooltipContent(tooltipsData.selectedData, cellsMeta)}\n x={tooltipsData.selectedData.x}\n y={tooltipsData.selectedData.y}\n offset={0}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n <g transform={`translate(${padding.left},${padding.top})`}>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["formatCellValue","v","whole","decimal","getTooltipContent","cell","cellsMeta","columnsList","row","lines","column","getAnnotationTooltipContent","data","isAnnotationTooltip","d","isCellTooltip","Chart","dendrograms","facetKey","dimensions","scales","cells","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","colorScale","chartSettings","stepX","stepY","sharedX","sharedY","annotations","annotationColorScales","dendrogramAesScales","aes","labelAngles","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","xAxis","yAxis","tooltips","width","height","padding","chartEdgeSides","sideElementBBoxes","xGroupLabels","yGroupLabels","xLabels","yLabels","xKeys","yKeys","sideDistances","debug","isDimmedBackground","jsxs","FONT_SIZE","jsx","Annotations","Dendrograms","FACET_TITLE_OFFSET","xKey","yKey","_a","highlighted","cellElement","createPortal","Frames","Captions","Tooltip","node"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { TooltipsData } from '../../common/Tooltip';
|
|
2
|
-
import {
|
|
2
|
+
import { FrameType } from '../../types';
|
|
3
3
|
import { BinData, GroupedHistogramData } from '../getHistogramData';
|
|
4
4
|
import { HistogramLayer, HistogramSettingsImpl } from '../HistogramSettingsImpl';
|
|
5
|
-
import {
|
|
5
|
+
import { AesGetter, CaptionsSizes, ChartDimensionsData, ChartScales, ChartSizes, Margins } from './types';
|
|
6
6
|
interface ChartProps {
|
|
7
7
|
facetKey: string;
|
|
8
8
|
width: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/histogram/components/Chart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/histogram/components/Chart.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EACR,SAAS,EAAE,aAAa,EACxB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,OAAO,EACV,MAAM,SAAS,CAAC;AA6BjB,UAAU,UAAU;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD,KAAK,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,oBAAoB,CAAC;IACpC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,EAAE,SAAS,CAAC;IAC1B,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,wBAAgB,KAAK,CAAC,EAClB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,YAAY,EACf,EAAE,UAAU,2CA8JZ"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { j as t } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ContinuousAxis as W } from "../../common/ContinuousAxis.js";
|
|
2
|
+
import { r as P } from "../../_virtual/index.js";
|
|
3
|
+
import { r as Q } from "../../node_modules/react-dom/index.js";
|
|
4
|
+
import { ContinuousAxis as $ } from "../../common/ContinuousAxis.js";
|
|
6
5
|
import { ContinuousGrid as V } from "../../common/ContinuousGrid.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
6
|
+
import { Tooltip as S } from "../../common/Tooltip.js";
|
|
7
|
+
import { BLACK as v } from "../../constants.js";
|
|
8
|
+
import { numberFormat as W } from "../../utils/numberFormat.js";
|
|
9
|
+
import { DEFAULT_TICKS_SIZE as k, FACET_TITLE_LINE as T, TITLE_LINE as D } from "../constants.js";
|
|
10
10
|
function ee(e) {
|
|
11
11
|
return typeof e == "string" ? e : e.value;
|
|
12
12
|
}
|
|
13
13
|
function te(e, l) {
|
|
14
14
|
const d = [
|
|
15
15
|
`Amount: ${e.count}`,
|
|
16
|
-
`(from ${
|
|
16
|
+
`(from ${W(e.x)}, to ${W(e.x + e.width)})`
|
|
17
17
|
];
|
|
18
18
|
return e.groupingKey !== "null" && d.push(`${l[e.groupingKey] ?? e.groupingKey}`), d;
|
|
19
19
|
}
|
|
@@ -46,7 +46,7 @@ function he({
|
|
|
46
46
|
tooltipsContainer: Y,
|
|
47
47
|
tooltipsData: n
|
|
48
48
|
}) {
|
|
49
|
-
const [C, G] =
|
|
49
|
+
const [C, G] = P.useState(), { padding: i } = o, H = f.showTicks ? k : 0, N = a.showTicks ? k : 0, O = o.chartEdgeSides.includes("left") || !(s != null && s.sharedY), R = o.chartEdgeSides.includes("bottom") || !(s != null && s.sharedX), U = o.chartEdgeSides.includes("bottom"), L = j.groupingKeys, Z = j.histogramByGroupingKey[L[0]].bins[0], F = r.x(Z.width) - r.x(0), p = h === "vertical" ? F : F / L.length, b = {
|
|
50
50
|
left: m.left + o.left + i.left,
|
|
51
51
|
right: x.totalWidth - (m.left + o.left + i.left),
|
|
52
52
|
top: m.top + o.top + i.top,
|
|
@@ -55,15 +55,15 @@ function he({
|
|
|
55
55
|
return /* @__PURE__ */ t.jsxs("g", { transform: `translate(${o.left + i.left},${o.top + i.top})`, children: [
|
|
56
56
|
g,
|
|
57
57
|
E.length && /* @__PURE__ */ t.jsxs("g", { children: [
|
|
58
|
-
K === "full" && /* @__PURE__ */ t.jsx("rect", { x: "0", y: -i.top, height: i.top, width: l, fill: "#F7F8FA", stroke:
|
|
58
|
+
K === "full" && /* @__PURE__ */ t.jsx("rect", { x: "0", y: -i.top, height: i.top, width: l, fill: "#F7F8FA", stroke: v }),
|
|
59
59
|
E.map((u, y) => {
|
|
60
|
-
const
|
|
60
|
+
const B = E.length, c = (i.top - T * B) / 2;
|
|
61
61
|
return /* @__PURE__ */ t.jsx(
|
|
62
62
|
"text",
|
|
63
63
|
{
|
|
64
64
|
fontSize: "14px",
|
|
65
65
|
fontWeight: "500",
|
|
66
|
-
fill:
|
|
66
|
+
fill: v,
|
|
67
67
|
x: l / 2,
|
|
68
68
|
dy: c + T / 2 - i.top,
|
|
69
69
|
y: y * T,
|
|
@@ -75,8 +75,8 @@ function he({
|
|
|
75
75
|
);
|
|
76
76
|
})
|
|
77
77
|
] }),
|
|
78
|
-
/* @__PURE__ */ t.jsxs("g", { dominantBaseline: "central", textAnchor: "middle", fontWeight: "500", fontSize: "14px", fill:
|
|
79
|
-
U && f.title && /* @__PURE__ */ t.jsx("text", { x: l / 2, y: d + i.bottom -
|
|
78
|
+
/* @__PURE__ */ t.jsxs("g", { dominantBaseline: "central", textAnchor: "middle", fontWeight: "500", fontSize: "14px", fill: v, children: [
|
|
79
|
+
U && f.title && /* @__PURE__ */ t.jsx("text", { x: l / 2, y: d + i.bottom - D / 2, children: ee(f.title) }),
|
|
80
80
|
g
|
|
81
81
|
] }),
|
|
82
82
|
/* @__PURE__ */ t.jsx(
|
|
@@ -92,31 +92,31 @@ function he({
|
|
|
92
92
|
}
|
|
93
93
|
),
|
|
94
94
|
R && /* @__PURE__ */ t.jsxs("g", { transform: `translate(0,${d})`, children: [
|
|
95
|
-
/* @__PURE__ */ t.jsx(
|
|
95
|
+
/* @__PURE__ */ t.jsx($, { scale: r.x, orient: "bottom", tickSize: H, hiddenLabels: f.hiddenLabels }),
|
|
96
96
|
g
|
|
97
97
|
] }),
|
|
98
|
-
|
|
99
|
-
/* @__PURE__ */ t.jsx(
|
|
98
|
+
O && /* @__PURE__ */ t.jsxs("g", { children: [
|
|
99
|
+
/* @__PURE__ */ t.jsx($, { scale: r.y, orient: "left", tickSize: N, hiddenLabels: a.hiddenLabels }),
|
|
100
100
|
g
|
|
101
101
|
] }),
|
|
102
102
|
_.map((u) => L.map(
|
|
103
|
-
(y,
|
|
103
|
+
(y, B) => j.histogramByGroupingKey[y].bins.map((c) => {
|
|
104
104
|
const J = q && n.selectedData === c, I = /* @__PURE__ */ t.jsx(
|
|
105
105
|
"rect",
|
|
106
106
|
{
|
|
107
|
-
x: w(r.x(c.x), h,
|
|
107
|
+
x: w(r.x(c.x), h, B, p),
|
|
108
108
|
y: X(c, r.y, h, A),
|
|
109
109
|
fill: c.rows[0] ? z(u.aes.fillColor, c.rows[0], c.count) : "",
|
|
110
110
|
stroke: u.aes.lineColor,
|
|
111
111
|
width: p,
|
|
112
112
|
height: r.y(0) - r.y(c.count),
|
|
113
113
|
opacity: u.aes.opacity ?? 1,
|
|
114
|
-
onMouseOver: () => n.
|
|
114
|
+
onMouseOver: () => n.onMouseEnter(c, e),
|
|
115
115
|
onMouseLeave: () => n.onMouseLeave()
|
|
116
116
|
},
|
|
117
117
|
c.x
|
|
118
118
|
);
|
|
119
|
-
return J ?
|
|
119
|
+
return J ? Q.createPortal(I, C) : I;
|
|
120
120
|
})
|
|
121
121
|
)),
|
|
122
122
|
n.fixed && /* @__PURE__ */ t.jsx("rect", { width: x.chartWidth, height: x.chartHeight, fill: "rgba(255,255,255,0.8)" }),
|
|
@@ -129,7 +129,7 @@ function he({
|
|
|
129
129
|
}
|
|
130
130
|
),
|
|
131
131
|
n.selectedData && n.currentFacet === e && /* @__PURE__ */ t.jsx(
|
|
132
|
-
|
|
132
|
+
S,
|
|
133
133
|
{
|
|
134
134
|
content: te(n.selectedData, M),
|
|
135
135
|
x: w(r.x(n.selectedData.x), h, n.selectedData.groupingKeyIdx, p) + p,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/histogram/components/Chart.tsx"],"sourcesContent":["import type { TooltipsData} from '../../common/Tooltip';\nimport {Tooltip} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport type {AesGetter} from './types';\nimport {DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, TICK_OFFSET, TITLE_LINE} from '../constants';\nimport type {BinData, GroupedHistogramData} from '../getHistogramData';\nimport type {HistogramLayer} from '../HistogramSettingsImpl';\nimport type {HistogramSettingsImpl} from '../HistogramSettingsImpl';\nimport {ContinuousAxis} from '../../common/ContinuousAxis';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins,\n} from './types';\nimport type {ColumnName} from '../../types';\nimport type {FrameType} from '../../types';\nimport {ContinuousGrid} from '../../common/ContinuousGrid';\nimport {numberFormat} from '../../utils/numberFormat';\nimport React, {useState} from 'react';\nimport {createPortal} from 'react-dom';\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\nfunction getTooltipContent(bin: BinData, groupingLabels:Record<string, string>) {\n const lines = [\n `Amount: ${bin.count}`,\n `(from ${numberFormat(bin.x)}, to ${numberFormat(bin.x + bin.width)})`\n ];\n if (bin.groupingKey !== 'null') {\n lines.push(`${groupingLabels[bin.groupingKey] ?? bin.groupingKey}`);\n }\n return lines;\n}\n\nfunction getBinX(xPx:number, groupingStack: HistogramSettingsImpl['groupingStack'], keyIdx:number, width:number) {\n return groupingStack === 'vertical'\n ? xPx\n : xPx + keyIdx * width;\n}\nfunction getBinY(bin:BinData, scaleY:ChartScales['y'], groupingStack: HistogramSettingsImpl['groupingStack'], groupingDirection: HistogramSettingsImpl['groupingDirection']) {\n return groupingStack === 'vertical'\n ? scaleY(groupingDirection === 'straight' ? bin.y.straight : bin.y.reverse)\n : scaleY(bin.count);\n}\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'];\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: HistogramSettingsImpl['facetSettings'];\n margins: Margins;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n histogramData: GroupedHistogramData;\n layers: HistogramLayer[];\n aesColorGetter: AesGetter;\n groupingDirection: HistogramSettingsImpl['groupingDirection'];\n groupingStack: HistogramSettingsImpl['groupingStack'];\n groupingLabels: Record<string, string>;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<BinData>;\n}\n\nexport function Chart({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n histogramData,\n facetSettings,\n captionsSizes,\n facetTitle,\n layers,\n aesColorGetter,\n groupingDirection,\n groupingStack,\n groupingLabels,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {padding} = dimensions;\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n const groupingKeys = histogramData.groupingKeys;\n\n const firstBin = histogramData.histogramByGroupingKey[groupingKeys[0]].bins[0];\n const binWidth = scales.x(firstBin.width) - scales.x(0);\n const partialBinWidth = groupingStack === 'vertical' ? binWidth : binWidth / groupingKeys.length;\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const debug = false;\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && (\n <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />\n )}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && xAxis.title && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {getAxisTitle(xAxis.title)}\n </text>\n )}\n {debug && needBottomAxisTitle && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n <ContinuousGrid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <ContinuousAxis scale={scales.x} orient=\"bottom\" tickSize={tickSizeX} hiddenLabels={xAxis.hiddenLabels} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n <ContinuousAxis scale={scales.y} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {layers.map(layer => groupingKeys.map((groupingKey, keyIdx) =>\n histogramData.histogramByGroupingKey[groupingKey].bins.map((bin) => {\n const highlighted = dimmedBackground && tooltipsData.selectedData === bin;\n const binElement = (\n <rect\n key={bin.x}\n x={getBinX(scales.x(bin.x), groupingStack, keyIdx, partialBinWidth)}\n y={getBinY(bin, scales.y, groupingStack, groupingDirection)}\n fill={bin.rows[0] ? aesColorGetter(layer.aes.fillColor, bin.rows[0], bin.count) : ''}\n stroke={layer.aes.lineColor}\n width={partialBinWidth}\n height={scales.y(0) - scales.y(bin.count)}\n opacity={layer.aes.opacity ?? 1}\n onMouseOver={() => tooltipsData.onMouseOver(bin, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n return highlighted ? createPortal(binElement, activeElementContainer) : binElement;\n })\n ))}\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255,255,255,0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n {tooltipsData.selectedData && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, groupingLabels)}\n x={getBinX(scales.x(tooltipsData.selectedData.x), groupingStack, tooltipsData.selectedData.groupingKeyIdx, partialBinWidth) + partialBinWidth}\n y={getBinY(tooltipsData.selectedData, scales.y, groupingStack, groupingDirection) + scales.y(0) - scales.y(tooltipsData.selectedData.count / 2)}\n offset={0}\n active\n fixed={tooltipsData.fixed}\n sideDistances={sideDistances}\n container={tooltipsContainer}\n onClose={tooltipsData.onClose}\n />\n )}\n </g>\n );\n}\n"],"names":["getAxisTitle","title","getTooltipContent","bin","groupingLabels","lines","numberFormat","getBinX","xPx","groupingStack","keyIdx","width","getBinY","scaleY","groupingDirection","Chart","facetKey","height","dimensions","scales","xAxis","yAxis","frameType","histogramData","facetSettings","captionsSizes","facetTitle","layers","aesColorGetter","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","padding","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","needBottomAxisTitle","groupingKeys","firstBin","binWidth","partialBinWidth","sideDistances","dimmedBackground","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","ContinuousGrid","ContinuousAxis","layer","groupingKey","highlighted","binElement","createPortal","node","Tooltip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/histogram/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ContinuousAxis } from '../../common/ContinuousAxis';\nimport { ContinuousGrid } from '../../common/ContinuousGrid';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { BLACK } from '../../constants';\nimport type { ColumnName, FrameType } from '../../types';\nimport { numberFormat } from '../../utils/numberFormat';\nimport { DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { BinData, GroupedHistogramData } from '../getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from '../HistogramSettingsImpl';\nimport type {\n AesGetter, CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\nfunction getTooltipContent(bin: BinData, groupingLabels:Record<string, string>) {\n const lines = [\n `Amount: ${bin.count}`,\n `(from ${numberFormat(bin.x)}, to ${numberFormat(bin.x + bin.width)})`\n ];\n if (bin.groupingKey !== 'null') {\n lines.push(`${groupingLabels[bin.groupingKey] ?? bin.groupingKey}`);\n }\n return lines;\n}\n\nfunction getBinX(xPx:number, groupingStack: HistogramSettingsImpl['groupingStack'], keyIdx:number, width:number) {\n return groupingStack === 'vertical'\n ? xPx\n : xPx + keyIdx * width;\n}\nfunction getBinY(bin:BinData, scaleY:ChartScales['y'], groupingStack: HistogramSettingsImpl['groupingStack'], groupingDirection: HistogramSettingsImpl['groupingDirection']) {\n return groupingStack === 'vertical'\n ? scaleY(groupingDirection === 'straight' ? bin.y.straight : bin.y.reverse)\n : scaleY(bin.count);\n}\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'];\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: HistogramSettingsImpl['facetSettings'];\n margins: Margins;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n histogramData: GroupedHistogramData;\n layers: HistogramLayer[];\n aesColorGetter: AesGetter;\n groupingDirection: HistogramSettingsImpl['groupingDirection'];\n groupingStack: HistogramSettingsImpl['groupingStack'];\n groupingLabels: Record<string, string>;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<BinData>;\n}\n\nexport function Chart({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n histogramData,\n facetSettings,\n captionsSizes,\n facetTitle,\n layers,\n aesColorGetter,\n groupingDirection,\n groupingStack,\n groupingLabels,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {padding} = dimensions;\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n const groupingKeys = histogramData.groupingKeys;\n\n const firstBin = histogramData.histogramByGroupingKey[groupingKeys[0]].bins[0];\n const binWidth = scales.x(firstBin.width) - scales.x(0);\n const partialBinWidth = groupingStack === 'vertical' ? binWidth : binWidth / groupingKeys.length;\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const debug = false;\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && (\n <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />\n )}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && xAxis.title && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {getAxisTitle(xAxis.title)}\n </text>\n )}\n {debug && needBottomAxisTitle && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n <ContinuousGrid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <ContinuousAxis scale={scales.x} orient=\"bottom\" tickSize={tickSizeX} hiddenLabels={xAxis.hiddenLabels} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n <ContinuousAxis scale={scales.y} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {layers.map(layer => groupingKeys.map((groupingKey, keyIdx) =>\n histogramData.histogramByGroupingKey[groupingKey].bins.map((bin) => {\n const highlighted = dimmedBackground && tooltipsData.selectedData === bin;\n const binElement = (\n <rect\n key={bin.x}\n x={getBinX(scales.x(bin.x), groupingStack, keyIdx, partialBinWidth)}\n y={getBinY(bin, scales.y, groupingStack, groupingDirection)}\n fill={bin.rows[0] ? aesColorGetter(layer.aes.fillColor, bin.rows[0], bin.count) : ''}\n stroke={layer.aes.lineColor}\n width={partialBinWidth}\n height={scales.y(0) - scales.y(bin.count)}\n opacity={layer.aes.opacity ?? 1}\n onMouseOver={() => tooltipsData.onMouseEnter(bin, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n return highlighted ? createPortal(binElement, activeElementContainer) : binElement;\n })\n ))}\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255,255,255,0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n {tooltipsData.selectedData && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, groupingLabels)}\n x={getBinX(scales.x(tooltipsData.selectedData.x), groupingStack, tooltipsData.selectedData.groupingKeyIdx, partialBinWidth) + partialBinWidth}\n y={getBinY(tooltipsData.selectedData, scales.y, groupingStack, groupingDirection) + scales.y(0) - scales.y(tooltipsData.selectedData.count / 2)}\n offset={0}\n active\n fixed={tooltipsData.fixed}\n sideDistances={sideDistances}\n container={tooltipsContainer}\n onClose={tooltipsData.onClose}\n />\n )}\n </g>\n );\n}\n"],"names":["getAxisTitle","title","getTooltipContent","bin","groupingLabels","lines","numberFormat","getBinX","xPx","groupingStack","keyIdx","width","getBinY","scaleY","groupingDirection","Chart","facetKey","height","dimensions","scales","xAxis","yAxis","frameType","histogramData","facetSettings","captionsSizes","facetTitle","layers","aesColorGetter","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","padding","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","needBottomAxisTitle","groupingKeys","firstBin","binWidth","partialBinWidth","sideDistances","dimmedBackground","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","ContinuousGrid","ContinuousAxis","layer","groupingKey","highlighted","binElement","createPortal","node","Tooltip"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ScatterplotLayerData } from '../getLayersData';
|
|
3
|
-
import { AesGetters, CaptionsSizes, ChartDimensionsData, ChartScales, ChartSizes, Margins } from './types';
|
|
1
|
+
import { FrameType } from '../../types';
|
|
4
2
|
import { Dot, GroupedDots } from '../dots';
|
|
3
|
+
import { ScatterplotLayerData } from '../getLayersData';
|
|
5
4
|
import { TrendsData } from '../linearRegression';
|
|
6
5
|
import { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';
|
|
7
|
-
import {
|
|
6
|
+
import { AesGetters, CaptionsSizes, ChartDimensionsData, ChartScales } from './types';
|
|
8
7
|
interface ChartProps {
|
|
9
8
|
facetKey: string;
|
|
10
9
|
width: number;
|
|
@@ -17,12 +16,7 @@ interface ChartProps {
|
|
|
17
16
|
facetSettings: ScatterplotSettingsImpl['facetSettings'];
|
|
18
17
|
dotsData: GroupedDots[keyof GroupedDots];
|
|
19
18
|
trendsData: TrendsData[keyof TrendsData] | null;
|
|
20
|
-
keyColumn: ColumnName;
|
|
21
|
-
margins: Margins;
|
|
22
|
-
chartSizes: ChartSizes;
|
|
23
19
|
captionsSizes: CaptionsSizes;
|
|
24
|
-
tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];
|
|
25
|
-
tooltipsContainer?: Element;
|
|
26
20
|
facetTitle: string[];
|
|
27
21
|
onlyPositive: {
|
|
28
22
|
x: boolean;
|
|
@@ -30,8 +24,9 @@ interface ChartProps {
|
|
|
30
24
|
};
|
|
31
25
|
layersData: ScatterplotLayerData[];
|
|
32
26
|
aesGetters: AesGetters;
|
|
33
|
-
|
|
27
|
+
onMouseEnterDot?: (dot: Dot, facetKey: string) => void;
|
|
28
|
+
onMouseLeaveDot?: (dot: Dot, facetKey: string) => void;
|
|
34
29
|
}
|
|
35
|
-
export declare
|
|
30
|
+
export declare const Chart: import('react').MemoExoticComponent<({ facetKey, width, height, dimensions, scales, xAxis, yAxis, frameType, dotsData, facetSettings, trendsData, captionsSizes, facetTitle, onlyPositive, layersData, aesGetters, onMouseEnterDot, onMouseLeaveDot, }: ChartProps) => import("react/jsx-runtime").JSX.Element>;
|
|
36
31
|
export {};
|
|
37
32
|
//# sourceMappingURL=Chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/Chart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/Chart.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAO1E,OAAO,KAAK,EACR,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,UAAU,UAAU;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,QAAQ,EAAE,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC;IAChD,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;IACvC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D;AAED,eAAO,MAAM,KAAK,0PAmBf,UAAU,6CAkFX,CAAC"}
|