@milaboratories/miplots4 1.0.161 → 1.0.163
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/_virtual/index10.js +2 -5
- package/dist/_virtual/index10.js.map +1 -1
- package/dist/_virtual/index5.js +5 -2
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +4 -4
- package/dist/_virtual/index7.js +1 -1
- package/dist/_virtual/index8.js +4 -4
- package/dist/_virtual/index9.js +3 -3
- package/dist/common/BandAxis.d.ts +2 -1
- package/dist/common/BandAxis.js +19 -18
- package/dist/common/BandAxis.js.map +1 -1
- package/dist/common/ContinuousAxis.js +20 -20
- package/dist/common/ContinuousAxis.js.map +1 -1
- package/dist/common/Legend.js +3 -3
- package/dist/common/Legend.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +6 -4
- package/dist/discrete/DiscreteSettingsImpl.js +9 -9
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/constants.d.ts +1 -1
- package/dist/discrete/constants.js +1 -1
- package/dist/discrete/constants.js.map +1 -1
- package/dist/discrete/index.js +107 -106
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/bar.js +25 -22
- package/dist/discrete/layers/bar.js.map +1 -1
- package/dist/discrete/layers/errorbars.js +57 -48
- package/dist/discrete/layers/errorbars.js.map +1 -1
- package/dist/discrete/layers/lines.js +40 -31
- package/dist/discrete/layers/lines.js.map +1 -1
- package/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
- package/dist/heatmap/components/Captions/AxisCaptions.js +34 -34
- package/dist/heatmap/components/Captions/AxisCaptions.js.map +1 -1
- package/dist/heatmap/fillCellsData.js +49 -46
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/utils/calculateChartSideElementSizes.js +23 -23
- package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
- package/dist/histogram/ChartRenderer.js +57 -54
- package/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/histogram/constants.d.ts +1 -1
- package/dist/histogram/constants.js.map +1 -1
- package/dist/histogram/index.js +58 -51
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
- package/dist/scatterplot/ChartRenderer.js +89 -89
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.js +30 -30
- package/dist/scatterplot/components/ChartAxis.js.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.js +22 -22
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/scatterplot/constants.d.ts +1 -1
- package/dist/scatterplot/constants.js +1 -1
- package/dist/scatterplot/constants.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +1 -1
- package/dist/scatterplot/dots.js +14 -14
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.js +94 -79
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +14 -14
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +38 -38
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/types/bubble.d.ts +5 -5
- package/dist/types/bubble.js +40 -40
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +25 -2
- package/dist/types/common.js +16 -15
- package/dist/types/common.js.map +1 -1
- package/dist/types/discrete.d.ts +66 -56
- package/dist/types/discrete.js +40 -38
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +5 -6
- package/dist/types/heatmap.js +29 -29
- package/dist/types/heatmap.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { DEFAULT_TICKS_SIZE as
|
|
2
|
-
function J(
|
|
3
|
-
const U = H.length > 1 && (!
|
|
1
|
+
import { DEFAULT_TICKS_SIZE as G, TITLE_LINE as S, MIN_STEP_FOR_VISIBLE_LABELS as z, TICK_OFFSET as h, FACET_TITLE_LINE as q, ANNOTATION_WIDTH as T, ANNOTATIONS_OFFSET as c } from "../constants.js";
|
|
2
|
+
function J(t, o, l, B, i, s, p, f, b, D, K, H, M, R) {
|
|
3
|
+
const U = H.length > 1 && (!b || p.includes(o.groupingPosition)), L = !b || p.includes(o.position), V = K.length > 1 && (!f || p.includes(t.groupingPosition)), C = !f || p.includes(t.position), W = D.length > 1, u = B.filter((n) => p.includes(n.position) || !f && ["left", "right"].includes(n.position) || !b && ["top", "bottom"].includes(n.position)), E = u.filter((n) => n.position === "left").length, I = u.filter((n) => n.position === "right").length, e = u.filter((n) => n.position === "top").length, w = u.filter((n) => n.position === "bottom").length, Z = t.showTicks ? G : 0, j = o.showTicks ? G : 0, _ = C && t.showTitle ? S : 0, N = L && o.showTitle ? S : 0, F = C && (t.showAxisLabels || t.showTicks) && M > z ? (t.showAxisLabels ? l.xAxisCaptions : 0) + Z + h : 0, O = L && (o.showAxisLabels || o.showTicks) && R > z ? (o.showAxisLabels ? l.yAxisCaptions : 0) + j + h : 0, P = V && t.showGroupLabels ? l.xGroupCaptions + h : 0, k = U && o.showGroupLabels ? l.yGroupCaptions + h : 0;
|
|
4
4
|
return {
|
|
5
5
|
left: {
|
|
6
|
-
dendro: !(
|
|
7
|
-
axisTitle:
|
|
8
|
-
groups:
|
|
9
|
-
axis:
|
|
10
|
-
annotations:
|
|
6
|
+
dendro: !(s != null && s.hidden) && (s == null ? void 0 : s.position) === "left" ? s.size : 0,
|
|
7
|
+
axisTitle: o.position === "left" ? N : 0,
|
|
8
|
+
groups: o.groupingPosition === "left" ? k : 0,
|
|
9
|
+
axis: o.position === "left" ? O : 0,
|
|
10
|
+
annotations: E * T + (E && c)
|
|
11
11
|
},
|
|
12
12
|
right: {
|
|
13
|
-
dendro: !(
|
|
14
|
-
axisTitle:
|
|
15
|
-
groups:
|
|
16
|
-
axis:
|
|
17
|
-
annotations:
|
|
13
|
+
dendro: !(s != null && s.hidden) && (s == null ? void 0 : s.position) === "right" ? s.size : 0,
|
|
14
|
+
axisTitle: o.position === "right" ? N : 0,
|
|
15
|
+
groups: o.groupingPosition === "right" ? k : 0,
|
|
16
|
+
axis: o.position === "right" ? O : 0,
|
|
17
|
+
annotations: I * T + (I && c)
|
|
18
18
|
},
|
|
19
19
|
top: {
|
|
20
20
|
facetTitle: W ? q : 0,
|
|
21
|
-
dendro: !(
|
|
22
|
-
axisTitle:
|
|
23
|
-
groups:
|
|
24
|
-
axis:
|
|
25
|
-
annotations:
|
|
21
|
+
dendro: !(i != null && i.hidden) && (i == null ? void 0 : i.position) === "top" ? i.size : 0,
|
|
22
|
+
axisTitle: t.position === "top" ? _ : 0,
|
|
23
|
+
groups: t.groupingPosition === "top" ? P : 0,
|
|
24
|
+
axis: t.position === "top" ? F : 0,
|
|
25
|
+
annotations: e * T + (e && c)
|
|
26
26
|
},
|
|
27
27
|
bottom: {
|
|
28
|
-
dendro: !(
|
|
29
|
-
axisTitle:
|
|
30
|
-
groups:
|
|
31
|
-
axis:
|
|
32
|
-
annotations:
|
|
28
|
+
dendro: !(i != null && i.hidden) && (i == null ? void 0 : i.position) === "bottom" ? i.size : 0,
|
|
29
|
+
axisTitle: t.position === "bottom" ? _ : 0,
|
|
30
|
+
groups: t.groupingPosition === "bottom" ? P : 0,
|
|
31
|
+
axis: t.position === "bottom" ? F : 0,
|
|
32
|
+
annotations: w * T + (w && c)
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateChartSideElementSizes.js","sources":["../../../src/heatmap/utils/calculateChartSideElementSizes.ts"],"sourcesContent":["import {\n ANNOTATION_WIDTH,\n ANNOTATIONS_OFFSET,\n DEFAULT_TICKS_SIZE,\n FACET_TITLE_LINE,\n MIN_STEP_FOR_VISIBLE_LABELS,\n TICK_OFFSET,\n TITLE_LINE,\n} from '../constants';\nimport type {CaptionsSizes} from '../components/types';\nimport type {HeatmapSettingsImpl} from '../HeatmapSettingsImpl';\n\nexport function calculateChartSideElementSizes(\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n chartSides: ('left' | 'right' | 'top' | 'bottom')[],\n sharedX: boolean,\n sharedY: boolean,\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n stepX: number,\n stepY: number\n): Record<string, Record<string, number>> {\n const hasGroupingY = yGroupKeys.length > 1 && (!sharedY || chartSides.includes(yAxis.groupingPosition));\n const hasAxisY = !sharedY || chartSides.includes(yAxis.position);\n const hasGroupingX = xGroupKeys.length > 1 && (!sharedX || chartSides.includes(xAxis.groupingPosition));\n const hasAxisX = !sharedX || chartSides.includes(xAxis.position);\n const hasChartTitle = facetKeys.length > 1;\n const usedAnnotations = annotations.filter(item => {\n return (\n chartSides.includes(item.position) ||\n (!sharedX && ['left', 'right'].includes(item.position)) ||\n (!sharedY && ['top', 'bottom'].includes(item.position))\n );\n });\n const leftAnnotationsCount = usedAnnotations.filter(item => item.position === 'left').length;\n const rightAnnotationsCount = usedAnnotations.filter(item => item.position === 'right').length;\n const topAnnotationsCount = usedAnnotations.filter(item => item.position === 'top').length;\n const bottomAnnotationsCount = usedAnnotations.filter(item => item.position === 'bottom').length;\n\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const axisTitleX = hasAxisX && xAxis.showTitle ? TITLE_LINE : 0;\n const axisTitleY = hasAxisY && yAxis.showTitle ? TITLE_LINE : 0;\n\n const axisX =\n hasAxisX && xAxis.showAxisLabels && stepX > MIN_STEP_FOR_VISIBLE_LABELS\n ? captionsSizes.xAxisCaptions + tickSizeX + TICK_OFFSET\n : 0;\n const axisY =\n hasAxisY && yAxis.showAxisLabels && stepY > MIN_STEP_FOR_VISIBLE_LABELS\n ? captionsSizes.yAxisCaptions + tickSizeY + TICK_OFFSET\n : 0;\n // can be rotated, then labels max width\n const groupX = hasGroupingX && xAxis.showGroupLabels ? captionsSizes.xGroupCaptions + TICK_OFFSET : 0;\n const groupY = hasGroupingY && yAxis.showGroupLabels ? captionsSizes.yGroupCaptions + TICK_OFFSET : 0;\n\n return {\n left: {\n dendro: !dendrogramY?.hidden && dendrogramY?.position === 'left' ? dendrogramY.size : 0,\n axisTitle: yAxis.position === 'left' ? axisTitleY : 0,\n groups: yAxis.groupingPosition === 'left' ? groupY : 0,\n axis: yAxis.position === 'left' ? axisY : 0,\n annotations: leftAnnotationsCount * ANNOTATION_WIDTH + (leftAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n right: {\n dendro: !dendrogramY?.hidden && dendrogramY?.position === 'right' ? dendrogramY.size : 0,\n axisTitle: yAxis.position === 'right' ? axisTitleY : 0,\n groups: yAxis.groupingPosition === 'right' ? groupY : 0,\n axis: yAxis.position === 'right' ? axisY : 0,\n annotations: rightAnnotationsCount * ANNOTATION_WIDTH + (rightAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n top: {\n facetTitle: hasChartTitle ? FACET_TITLE_LINE : 0,\n dendro: !dendrogramX?.hidden && dendrogramX?.position === 'top' ? dendrogramX.size : 0,\n axisTitle: xAxis.position === 'top' ? axisTitleX : 0,\n groups: xAxis.groupingPosition === 'top' ? groupX : 0,\n axis: xAxis.position === 'top' ? axisX : 0,\n annotations: topAnnotationsCount * ANNOTATION_WIDTH + (topAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n bottom: {\n dendro: !dendrogramX?.hidden && dendrogramX?.position === 'bottom' ? dendrogramX.size : 0,\n axisTitle: xAxis.position === 'bottom' ? axisTitleX : 0,\n groups: xAxis.groupingPosition === 'bottom' ? groupX : 0,\n axis: xAxis.position === 'bottom' ? axisX : 0,\n annotations: bottomAnnotationsCount * ANNOTATION_WIDTH + (bottomAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n };\n}\n"],"names":["calculateChartSideElementSizes","xAxis","yAxis","captionsSizes","annotations","dendrogramX","dendrogramY","chartSides","sharedX","sharedY","facetKeys","xGroupKeys","yGroupKeys","stepX","stepY","hasGroupingY","hasAxisY","hasGroupingX","hasAxisX","hasChartTitle","usedAnnotations","item","leftAnnotationsCount","rightAnnotationsCount","topAnnotationsCount","bottomAnnotationsCount","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","axisTitleX","TITLE_LINE","axisTitleY","axisX","MIN_STEP_FOR_VISIBLE_LABELS","TICK_OFFSET","axisY","groupX","groupY","ANNOTATION_WIDTH","ANNOTATIONS_OFFSET","FACET_TITLE_LINE"],"mappings":";AAYO,SAASA,EACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACsC;AACtC,QAAMC,IAAeH,EAAW,SAAS,MAAM,CAACH,KAAWF,EAAW,SAASL,EAAM,gBAAgB,IAC/Fc,IAAW,CAACP,KAAWF,EAAW,SAASL,EAAM,QAAQ,GACzDe,IAAeN,EAAW,SAAS,MAAM,CAACH,KAAWD,EAAW,SAASN,EAAM,gBAAgB,IAC/FiB,IAAW,CAACV,KAAWD,EAAW,SAASN,EAAM,QAAQ,GACzDkB,IAAgBT,EAAU,SAAS,GACnCU,IAAkBhB,EAAY,OAAO,CAAAiB,MAEnCd,EAAW,SAASc,EAAK,QAAQ,KAChC,CAACb,KAAW,CAAC,QAAQ,OAAO,EAAE,SAASa,EAAK,QAAQ,KACpD,CAACZ,KAAW,CAAC,OAAO,QAAQ,EAAE,SAASY,EAAK,QAAQ,CAE5D,GACKC,IAAuBF,EAAgB,OAAO,OAAQC,EAAK,aAAa,MAAM,EAAE,QAChFE,IAAwBH,EAAgB,OAAO,OAAQC,EAAK,aAAa,OAAO,EAAE,QAClFG,IAAsBJ,EAAgB,OAAO,OAAQC,EAAK,aAAa,KAAK,EAAE,QAC9EI,IAAyBL,EAAgB,OAAO,OAAQC,EAAK,aAAa,QAAQ,EAAE,QAEpFK,IAAYzB,EAAM,YAAY0B,IAAqB,GACnDC,IAAY1B,EAAM,YAAYyB,IAAqB,GACnDE,IAAaX,KAAYjB,EAAM,YAAY6B,IAAa,GACxDC,IAAaf,KAAYd,EAAM,YAAY4B,IAAa,GAExDE,IACFd,
|
|
1
|
+
{"version":3,"file":"calculateChartSideElementSizes.js","sources":["../../../src/heatmap/utils/calculateChartSideElementSizes.ts"],"sourcesContent":["import {\n ANNOTATION_WIDTH,\n ANNOTATIONS_OFFSET,\n DEFAULT_TICKS_SIZE,\n FACET_TITLE_LINE,\n MIN_STEP_FOR_VISIBLE_LABELS,\n TICK_OFFSET,\n TITLE_LINE,\n} from '../constants';\nimport type {CaptionsSizes} from '../components/types';\nimport type {HeatmapSettingsImpl} from '../HeatmapSettingsImpl';\n\nexport function calculateChartSideElementSizes(\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n chartSides: ('left' | 'right' | 'top' | 'bottom')[],\n sharedX: boolean,\n sharedY: boolean,\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n stepX: number,\n stepY: number\n): Record<string, Record<string, number>> {\n const hasGroupingY = yGroupKeys.length > 1 && (!sharedY || chartSides.includes(yAxis.groupingPosition));\n const hasAxisY = !sharedY || chartSides.includes(yAxis.position);\n const hasGroupingX = xGroupKeys.length > 1 && (!sharedX || chartSides.includes(xAxis.groupingPosition));\n const hasAxisX = !sharedX || chartSides.includes(xAxis.position);\n const hasChartTitle = facetKeys.length > 1;\n const usedAnnotations = annotations.filter(item => {\n return (\n chartSides.includes(item.position) ||\n (!sharedX && ['left', 'right'].includes(item.position)) ||\n (!sharedY && ['top', 'bottom'].includes(item.position))\n );\n });\n const leftAnnotationsCount = usedAnnotations.filter(item => item.position === 'left').length;\n const rightAnnotationsCount = usedAnnotations.filter(item => item.position === 'right').length;\n const topAnnotationsCount = usedAnnotations.filter(item => item.position === 'top').length;\n const bottomAnnotationsCount = usedAnnotations.filter(item => item.position === 'bottom').length;\n\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const axisTitleX = hasAxisX && xAxis.showTitle ? TITLE_LINE : 0;\n const axisTitleY = hasAxisY && yAxis.showTitle ? TITLE_LINE : 0;\n\n const axisX =\n hasAxisX && (xAxis.showAxisLabels || xAxis.showTicks) && stepX > MIN_STEP_FOR_VISIBLE_LABELS\n ? (xAxis.showAxisLabels ? captionsSizes.xAxisCaptions : 0) + tickSizeX + TICK_OFFSET\n : 0;\n const axisY =\n hasAxisY && (yAxis.showAxisLabels || yAxis.showTicks) && stepY > MIN_STEP_FOR_VISIBLE_LABELS\n ? (yAxis.showAxisLabels ? captionsSizes.yAxisCaptions : 0) + tickSizeY + TICK_OFFSET\n : 0;\n // can be rotated, then labels max width\n const groupX = hasGroupingX && xAxis.showGroupLabels ? captionsSizes.xGroupCaptions + TICK_OFFSET : 0;\n const groupY = hasGroupingY && yAxis.showGroupLabels ? captionsSizes.yGroupCaptions + TICK_OFFSET : 0;\n\n return {\n left: {\n dendro: !dendrogramY?.hidden && dendrogramY?.position === 'left' ? dendrogramY.size : 0,\n axisTitle: yAxis.position === 'left' ? axisTitleY : 0,\n groups: yAxis.groupingPosition === 'left' ? groupY : 0,\n axis: yAxis.position === 'left' ? axisY : 0,\n annotations: leftAnnotationsCount * ANNOTATION_WIDTH + (leftAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n right: {\n dendro: !dendrogramY?.hidden && dendrogramY?.position === 'right' ? dendrogramY.size : 0,\n axisTitle: yAxis.position === 'right' ? axisTitleY : 0,\n groups: yAxis.groupingPosition === 'right' ? groupY : 0,\n axis: yAxis.position === 'right' ? axisY : 0,\n annotations: rightAnnotationsCount * ANNOTATION_WIDTH + (rightAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n top: {\n facetTitle: hasChartTitle ? FACET_TITLE_LINE : 0,\n dendro: !dendrogramX?.hidden && dendrogramX?.position === 'top' ? dendrogramX.size : 0,\n axisTitle: xAxis.position === 'top' ? axisTitleX : 0,\n groups: xAxis.groupingPosition === 'top' ? groupX : 0,\n axis: xAxis.position === 'top' ? axisX : 0,\n annotations: topAnnotationsCount * ANNOTATION_WIDTH + (topAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n bottom: {\n dendro: !dendrogramX?.hidden && dendrogramX?.position === 'bottom' ? dendrogramX.size : 0,\n axisTitle: xAxis.position === 'bottom' ? axisTitleX : 0,\n groups: xAxis.groupingPosition === 'bottom' ? groupX : 0,\n axis: xAxis.position === 'bottom' ? axisX : 0,\n annotations: bottomAnnotationsCount * ANNOTATION_WIDTH + (bottomAnnotationsCount && ANNOTATIONS_OFFSET),\n },\n };\n}\n"],"names":["calculateChartSideElementSizes","xAxis","yAxis","captionsSizes","annotations","dendrogramX","dendrogramY","chartSides","sharedX","sharedY","facetKeys","xGroupKeys","yGroupKeys","stepX","stepY","hasGroupingY","hasAxisY","hasGroupingX","hasAxisX","hasChartTitle","usedAnnotations","item","leftAnnotationsCount","rightAnnotationsCount","topAnnotationsCount","bottomAnnotationsCount","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","axisTitleX","TITLE_LINE","axisTitleY","axisX","MIN_STEP_FOR_VISIBLE_LABELS","TICK_OFFSET","axisY","groupX","groupY","ANNOTATION_WIDTH","ANNOTATIONS_OFFSET","FACET_TITLE_LINE"],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var g = (e, t, i) =>
|
|
1
|
+
var j = Object.defineProperty;
|
|
2
|
+
var G = (e, t, i) => t in e ? j(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
|
|
3
|
+
var g = (e, t, i) => G(e, typeof t != "symbol" ? t + "" : t, i);
|
|
4
4
|
import { j as A } from "../_virtual/jsx-runtime.js";
|
|
5
|
-
import { c as
|
|
6
|
-
import { Error as
|
|
7
|
-
import { DataFrameProvider as
|
|
8
|
-
import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as
|
|
9
|
-
import { splitTextByWidth as
|
|
10
|
-
import {
|
|
5
|
+
import { c as Y } from "../_virtual/client.js";
|
|
6
|
+
import { Error as O } from "../common/Error.js";
|
|
7
|
+
import { DataFrameProvider as P } from "../common/useDataFrame.js";
|
|
8
|
+
import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as U, TITLE_MARGIN as V } from "../constants.js";
|
|
9
|
+
import { splitTextByWidth as _ } from "../utils/splitTextByWidth.js";
|
|
10
|
+
import { DEFAULT_COMMON_AES as X, LEGEND_OFFSET as B } from "../scatterplot/constants.js";
|
|
11
11
|
import { getTicksAndFormat as Z } from "../scatterplot/utils/getTicksAndFormat.js";
|
|
12
12
|
import { arrangeLegendParts as k } from "../utils/arrangeLegendParts.js";
|
|
13
13
|
import { getContinuousColorScale as q } from "../utils/getContinuousColorScale.js";
|
|
14
14
|
import { TextMeasurer as J } from "../utils/TextMeasurer/TextMeasurer.js";
|
|
15
15
|
import { ChartsGroup as Q } from "./components/ChartsGroup.js";
|
|
16
|
-
import { MIN_MARGIN as H,
|
|
17
|
-
import
|
|
16
|
+
import { MIN_MARGIN as H, TICK_OFFSET as I, DEFAULT_TICKS_SIZE as R, MIN_PADDING as b, FACET_TITLE_OFFSET as $, FACET_TITLE_LINE as y, TITLE_LINE as K } from "./constants.js";
|
|
17
|
+
import W from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js";
|
|
18
18
|
import F from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js";
|
|
19
19
|
import tt from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js";
|
|
20
20
|
function it(e, t, i, o) {
|
|
@@ -22,12 +22,12 @@ function it(e, t, i, o) {
|
|
|
22
22
|
return e % i === i - 1 && s.push("right"), e % i === 0 && s.push("left"), e < i && s.push("top"), (Math.ceil((e + 1) / i) === o || Math.ceil((e + 1) / i) === o - 1 && e % i > (t - 1) % i) && s.push("bottom"), s;
|
|
23
23
|
}
|
|
24
24
|
function st(e, t, i, o, s, h, d, n) {
|
|
25
|
-
const r = h.includes("left") || !(n != null && n.sharedY), u = h.includes("bottom") || !(n != null && n.sharedX), C = h.includes("bottom") && e.title !== "", a = i.yAxisCaptionsWidth, x = (t.showTicks ?
|
|
25
|
+
const r = h.includes("left") || !(n != null && n.sharedY), u = h.includes("bottom") || !(n != null && n.sharedX), C = h.includes("bottom") && e.title !== "", a = i.yAxisCaptionsWidth + 2 * I, x = (t.showTicks ? R : 0) + (t.hiddenLabels ? 0 : I), p = i.xAxisCaptionsWidth + 2 * I, E = (e.showTicks ? R : 0) + (e.hiddenLabels ? 0 : I), m = C ? K : 0, c = a + x, l = E + p + m, f = Math.max(...o.map((T) => s[T].length));
|
|
26
26
|
return {
|
|
27
|
-
left: r ?
|
|
28
|
-
top:
|
|
29
|
-
bottom: u ?
|
|
30
|
-
right: d ? 0 :
|
|
27
|
+
left: r ? c : b,
|
|
28
|
+
top: f === 0 ? 0 : $ * 2 + f * y,
|
|
29
|
+
bottom: u ? l + 8 : b,
|
|
30
|
+
right: d ? 0 : b
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
function et(e, t, i) {
|
|
@@ -40,7 +40,7 @@ function ot(e, t) {
|
|
|
40
40
|
const i = Math.floor(e / t), o = e - i * t;
|
|
41
41
|
return [i, o];
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
function v(e) {
|
|
44
44
|
return typeof e == "object" && e !== null && "type" in e && "value" in e && e.type === "grouping";
|
|
45
45
|
}
|
|
46
46
|
function nt(e) {
|
|
@@ -53,9 +53,9 @@ function ht(e, t, i, o) {
|
|
|
53
53
|
const { domain: r = o, range: u, type: C = "linear" } = s, a = q(u, r, C);
|
|
54
54
|
return a.clamp(!0), a(d);
|
|
55
55
|
}
|
|
56
|
-
if (
|
|
56
|
+
if (v(s)) {
|
|
57
57
|
const r = s.value, u = t[r];
|
|
58
|
-
return (n = (u == null ? void 0 : u[String(e.getColumnValue(r, h))]) ??
|
|
58
|
+
return (n = (u == null ? void 0 : u[String(e.getColumnValue(r, h))]) ?? X) == null ? void 0 : n[i];
|
|
59
59
|
}
|
|
60
60
|
return s;
|
|
61
61
|
};
|
|
@@ -90,8 +90,8 @@ class wt {
|
|
|
90
90
|
g(this, "columnsCount", 1);
|
|
91
91
|
g(this, "rowsCount", 1);
|
|
92
92
|
g(this, "scales", {
|
|
93
|
-
x: { null:
|
|
94
|
-
y: { null:
|
|
93
|
+
x: { null: W().domain([0, 10]).range([0, N]) },
|
|
94
|
+
y: { null: W().domain([0, 10]).range([w, 0]) }
|
|
95
95
|
});
|
|
96
96
|
g(this, "captionsSizes", {
|
|
97
97
|
xAxisCaptionsWidth: 30,
|
|
@@ -115,7 +115,7 @@ class wt {
|
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
init(t) {
|
|
118
|
-
this.parentNode === null && (this.parentNode = t, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot =
|
|
118
|
+
this.parentNode === null && (this.parentNode = t, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = Y.createRoot(this.rootNode));
|
|
119
119
|
}
|
|
120
120
|
updateChartSizes(t) {
|
|
121
121
|
this.chartSizes.chartWidth = t.width, this.chartSizes.chartHeight = t.height;
|
|
@@ -124,24 +124,24 @@ class wt {
|
|
|
124
124
|
const { chartWidth: h, chartHeight: d } = this.chartSizes;
|
|
125
125
|
let n = 0, r = 0;
|
|
126
126
|
this.chartsDimensions = t.reduce((a, x, p) => {
|
|
127
|
-
const [E,
|
|
127
|
+
const [E, m] = ot(p, this.columnsCount), c = it(p, t.length, this.columnsCount, this.rowsCount), l = st(
|
|
128
128
|
o,
|
|
129
129
|
s,
|
|
130
130
|
this.captionsSizes,
|
|
131
131
|
et(t, this.rowsCount, this.columnsCount)[E],
|
|
132
132
|
this.facetTitles,
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
c,
|
|
134
|
+
m === this.columnsCount - 1,
|
|
135
135
|
i
|
|
136
|
-
),
|
|
136
|
+
), f = h + l.left + l.right, T = d + l.top + l.bottom;
|
|
137
137
|
return a[x] = {
|
|
138
138
|
left: n,
|
|
139
139
|
top: r,
|
|
140
|
-
chartEdgeSides:
|
|
141
|
-
padding:
|
|
140
|
+
chartEdgeSides: c,
|
|
141
|
+
padding: l,
|
|
142
142
|
inner: { width: h, height: d },
|
|
143
|
-
outer: { width:
|
|
144
|
-
}, n +=
|
|
143
|
+
outer: { width: f, height: T }
|
|
144
|
+
}, n += f, m === this.columnsCount - 1 && (n = 0, r += T), a;
|
|
145
145
|
}, {});
|
|
146
146
|
const u = Math.max(
|
|
147
147
|
...t.map((a) => this.chartsDimensions[a].outer.width + this.chartsDimensions[a].left)
|
|
@@ -154,21 +154,21 @@ class wt {
|
|
|
154
154
|
const r = t.length, u = Math.min(i.nRows ?? r, r), C = Math.min(i.nCols ?? r, r);
|
|
155
155
|
this.columnsCount = i.nRows ? Math.ceil(r / u) : C, this.rowsCount = Math.ceil(r / this.columnsCount);
|
|
156
156
|
let [a, x] = [1 / 0, -1 / 0], p = -1 / 0;
|
|
157
|
-
const E = t.reduce((
|
|
158
|
-
const
|
|
159
|
-
return a = Math.min(a,
|
|
157
|
+
const E = t.reduce((m, c) => {
|
|
158
|
+
const l = h[c], { minX: f, maxX: T, maxCount: z, maxCountFromGroups: M } = l;
|
|
159
|
+
return a = Math.min(a, f), x = Math.max(x, T), p = Math.max(p, n === "vertical" ? z : M), m[c] = { minX: f, maxX: T, maxY: n === "vertical" ? z : M }, m;
|
|
160
160
|
}, {});
|
|
161
|
-
t.forEach((
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
}), t.forEach((
|
|
165
|
-
const
|
|
161
|
+
t.forEach((m) => {
|
|
162
|
+
const c = o.scale === "log" ? F() : W(), l = E[m], f = i.sharedX ? a : l.minX, T = i.sharedX ? x : l.maxX;
|
|
163
|
+
c.domain([f, T]).range([0, this.chartSizes.chartWidth]), this.scales.x[m] = c;
|
|
164
|
+
}), t.forEach((m) => {
|
|
165
|
+
const c = s.scale === "log" ? F() : W(), l = E[m], f = 0, T = i.sharedY ? p : l.maxY, z = [this.chartSizes.chartHeight, 0], M = c.copy().domain([f, T]).range([
|
|
166
166
|
this.chartSizes.chartHeight,
|
|
167
167
|
d.innerOffset
|
|
168
168
|
]);
|
|
169
|
-
|
|
169
|
+
c.domain([M.invert(this.chartSizes.chartHeight), M.invert(0)]).range(
|
|
170
170
|
z
|
|
171
|
-
), this.scales.y[
|
|
171
|
+
), this.scales.y[m] = c;
|
|
172
172
|
});
|
|
173
173
|
}
|
|
174
174
|
updateCaptionsSize(t, i) {
|
|
@@ -187,14 +187,14 @@ class wt {
|
|
|
187
187
|
}
|
|
188
188
|
createMainTitle(t, i) {
|
|
189
189
|
const o = this.chartsDimensions[t[0]], s = this.chartsDimensions[t[t.length - 1]];
|
|
190
|
-
this.mainTitle =
|
|
190
|
+
this.mainTitle = _(
|
|
191
191
|
i.name,
|
|
192
192
|
this.chartSizes.chartsWidth - o.padding.left - s.padding.right,
|
|
193
193
|
20
|
|
194
194
|
);
|
|
195
195
|
}
|
|
196
196
|
createFacetTitles(t, i) {
|
|
197
|
-
this.facetTitles = t.reduce((o, s, h) => (i[h].length === 1 && i[h][0] === "null" ? o[s] = [] : o[s] =
|
|
197
|
+
this.facetTitles = t.reduce((o, s, h) => (i[h].length === 1 && i[h][0] === "null" ? o[s] = [] : o[s] = _(i[h].join(", "), this.chartSizes.chartWidth, 14), o), {});
|
|
198
198
|
}
|
|
199
199
|
updateLegendSize(t, i, o, s) {
|
|
200
200
|
if (!t.show) {
|
|
@@ -203,15 +203,18 @@ class wt {
|
|
|
203
203
|
}
|
|
204
204
|
const h = [], d = { width: 0, height: 0, left: 0, top: 0 };
|
|
205
205
|
if (s.forEach((a) => {
|
|
206
|
-
if (
|
|
207
|
-
const x = a.aes.fillColor.value, p = i[o.value], E = o.label ?? o.value,
|
|
208
|
-
|
|
206
|
+
if (v(a.aes.fillColor) && o) {
|
|
207
|
+
const x = a.aes.fillColor.value, p = i[o.value], E = o.label ?? o.value, m = tt().domain(p.values).range(p.values.map((c) => {
|
|
208
|
+
var l;
|
|
209
|
+
return ((l = p.aesMap[c]) == null ? void 0 : l.fillColor) ?? X.fillColor;
|
|
210
|
+
}));
|
|
211
|
+
h.push({ ...d, id: x, type: "discreteColor", title: E, scale: m, values: p.values, labels: p.labels });
|
|
209
212
|
}
|
|
210
213
|
}), !h.length) {
|
|
211
214
|
this.legend = { width: 0, height: 0, items: [] };
|
|
212
215
|
return;
|
|
213
216
|
}
|
|
214
|
-
const n = k(h, this.chartSizes.chartHeight), r = n[n.length - 1], u = r.left + r.width +
|
|
217
|
+
const n = k(h, this.chartSizes.chartHeight), r = n[n.length - 1], u = r.left + r.width + B, C = this.chartSizes.chartHeight;
|
|
215
218
|
this.legend = {
|
|
216
219
|
width: u,
|
|
217
220
|
height: C,
|
|
@@ -219,7 +222,7 @@ class wt {
|
|
|
219
222
|
};
|
|
220
223
|
}
|
|
221
224
|
updateMargins(t) {
|
|
222
|
-
const i =
|
|
225
|
+
const i = U * this.mainTitle.length, o = i > 0 ? i + V * 2 : 0, s = t.outerOffset;
|
|
223
226
|
this.margins = {
|
|
224
227
|
top: Math.max(o, s),
|
|
225
228
|
bottom: s,
|
|
@@ -228,10 +231,10 @@ class wt {
|
|
|
228
231
|
}, this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right, this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;
|
|
229
232
|
}
|
|
230
233
|
render(t, i, o, s, h, d, n, r, u, C, a, x, p, E) {
|
|
231
|
-
var
|
|
232
|
-
const { xAxis:
|
|
233
|
-
this.updateChartSizes(
|
|
234
|
-
const
|
|
234
|
+
var D;
|
|
235
|
+
const { xAxis: m, yAxis: c, size: l, title: f } = o;
|
|
236
|
+
this.updateChartSizes(l), this.updateViewport(h, s, m, c, n, l, x), this.updateCaptionsSize(m, c), this.createFacetTitles(h, d), this.updateChartDimensions(h, s, m, c), this.createMainTitle(h, f), this.updateLegendSize(o.legend, r, a, u), this.updateMargins(l);
|
|
237
|
+
const T = h.reduce((L, S) => Math.min(L, n[S].minX), 1 / 0), z = h.reduce((L, S) => Math.max(L, n[S].maxX), -1 / 0), M = /* @__PURE__ */ A.jsx(P, { dataFrame: t, children: /* @__PURE__ */ A.jsx(
|
|
235
238
|
Q,
|
|
236
239
|
{
|
|
237
240
|
settingsId: i,
|
|
@@ -248,7 +251,7 @@ class wt {
|
|
|
248
251
|
captionsSizes: this.captionsSizes,
|
|
249
252
|
histogramDataByFacets: n,
|
|
250
253
|
layers: u,
|
|
251
|
-
aesColorGetter: ht(t, C, "fillColor", [
|
|
254
|
+
aesColorGetter: ht(t, C, "fillColor", [T, z]),
|
|
252
255
|
groupingDirection: p,
|
|
253
256
|
groupingStack: x,
|
|
254
257
|
groupingLabels: a ? r[a.value].labels : {},
|
|
@@ -256,11 +259,11 @@ class wt {
|
|
|
256
259
|
onTooltipHintSwitch: E
|
|
257
260
|
}
|
|
258
261
|
) });
|
|
259
|
-
this.component = M, (
|
|
262
|
+
this.component = M, (D = this.reactRoot) == null || D.render(M);
|
|
260
263
|
}
|
|
261
264
|
renderError(t) {
|
|
262
265
|
var i;
|
|
263
|
-
(i = this.reactRoot) == null || i.render(/* @__PURE__ */ A.jsx(
|
|
266
|
+
(i = this.reactRoot) == null || i.render(/* @__PURE__ */ A.jsx(O, { message: t }));
|
|
264
267
|
}
|
|
265
268
|
}
|
|
266
269
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.js","sources":["../../src/histogram/ChartRenderer.tsx"],"sourcesContent":["import type { ScaleLogarithmic, ScaleOrdinal } from 'd3-scale';\nimport { scaleLinear, scaleOrdinal, scaleSymlog } from 'd3-scale';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame, RowIndex } from '../DataFrame';\nimport { splitTextByWidth } from '../discrete/utils';\nimport { DEFAULT_COMMON_AES, LEGEND_OFFSET } from '../scatterplot/constants';\nimport { getTicksAndFormat } from '../scatterplot/utils/getTicksAndFormat';\nimport type { AesItem, ColumnName, ContinuousAesHistogram, InheritAesHistogram } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { getContinuousColorScale } from '../utils/getContinuousColorScale';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type { CaptionsSizes, ChartDimensionsData, ChartScales, ChartSizes, ChartsScales, HistogramLegendInfo, Margins } from './components/types';\nimport {\n DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, FACET_TITLE_OFFSET,\n MIN_MARGIN,\n MIN_PADDING,\n TICK_OFFSET,\n TITLE_LINE\n} from './constants';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from './HistogramSettingsImpl';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n lastInRow: boolean,\n facetSettings?: HistogramSettingsImpl['facetSettings']\n) {\n const needLeftAxis = chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n\n const xCaptions = captionsSizes.xAxisCaptionsWidth;\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = yCaptions + yTicks;\n const bottomAxisElements = xTicks + xCaptions + xAxisTitle;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritedAes(v: InheritAesHistogram | unknown): v is InheritAesHistogram {\n return typeof v === 'object' && v !== null && 'type' in v && 'value' in v && v.type === 'grouping';\n}\nfunction isContinuousAes(v: ContinuousAesHistogram | unknown): v is ContinuousAesHistogram {\n return typeof v === 'object' && v !== null && 'range' in v;\n}\nfunction createAesGetter(dataFrame: DataFrame, aesData: HistogramSettingsImpl['inheritedAes'], field: keyof AesItem, defaultDomain:number[]) {\n return function (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, idx: RowIndex, height:number) {\n if (isContinuousAes(aesItem)) {\n const {domain = defaultDomain, range, type = 'linear'} = aesItem;\n const scale = getContinuousColorScale(range as string[], domain, type);\n scale.clamp(true);\n return scale(height);\n }\n if (isInheritedAes(aesItem)) {\n const columnId = aesItem.value;\n const mapping = aesData[columnId];\n return (mapping?.[String(dataFrame.getColumnValue(columnId, idx))] ?? DEFAULT_COMMON_AES)?.[field] as string;\n }\n return aesItem;\n };\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n x: {null: scaleLinear().domain([0, 10]).range([0, DEFAULT_WIDTH])},\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0])},\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidth: 30,\n yAxisCaptionsWidth: 100,\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSizes(size: HistogramSettingsImpl['chartSettings']['size']) {\n this.chartSizes.chartWidth = size.width;\n this.chartSizes.chartHeight = size.height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n currentColumn === this.columnsCount - 1,\n facetSettings\n );\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n size: HistogramSettingsImpl['chartSettings']['size'],\n groupingStack: HistogramSettingsImpl['groupingStack'],\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let [minXAll, maxXAll] = [Infinity, -Infinity];\n let maxYAll = -Infinity;\n const histogramExtentsByKeys = facetKeys.reduce((res: Record<string, Record<string, number>>, key) => {\n const histogramData = histogramDataByFacets[key];\n const {minX, maxX, maxCount, maxCountFromGroups} = histogramData;\n minXAll = Math.min(minXAll, minX);\n maxXAll = Math.max(maxXAll, maxX);\n maxYAll = Math.max(maxYAll, groupingStack === 'vertical' ? maxCount : maxCountFromGroups);\n res[key] = {minX, maxX, maxY: groupingStack === 'vertical' ? maxCount : maxCountFromGroups};\n return res;\n }, {});\n\n facetKeys.forEach(key => {\n const scaleX: ChartScales['x'] = xAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n\n const extents = histogramExtentsByKeys[key];\n const minX = facetSettings.sharedX ? minXAll : extents.minX;\n const maxX = facetSettings.sharedX ? maxXAll : extents.maxX;\n\n (scaleX.domain([minX, maxX]) as ChartScales['x']).range([0, this.chartSizes.chartWidth]);\n this.scales.x[key] = scaleX;\n });\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n const extents = histogramExtentsByKeys[key];\n\n const minY = 0;\n const maxY = facetSettings.sharedY ? maxYAll : extents.maxY;\n\n const rangeV = [this.chartSizes.chartHeight, 0];\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY: ChartScales['y'] = (scaleY.copy().domain([minY, maxY]) as ChartScales['y']).range([\n this.chartSizes.chartHeight,\n size.innerOffset,\n ]) as ChartScales['y'];\n (scaleY.domain([tempY.invert(this.chartSizes.chartHeight), tempY.invert(0)]) as ChartScales['y']).range(\n rangeV\n );\n this.scales.y[key] = scaleY;\n });\n }\n\n updateCaptionsSize(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n\n let maxYTick = 0;\n\n function getMaxTickWidth(ticks: string[]) {\n return Math.max(...ticks.map(key => textMeasurer.getTextWidth(key)));\n }\n\n if (!yAxis.hiddenLabels) {\n Object.values(this.scales.y).forEach(scale => {\n const {ticks, format} = getTicksAndFormat(scale as ScaleLogarithmic<number, number>, false);\n maxYTick = Math.max(maxYTick, getMaxTickWidth(ticks.map(format)));\n });\n }\n this.captionsSizes = {\n xAxisCaptionsWidth: xAxis.hiddenLabels ? 0 : 20,\n yAxisCaptionsWidth: maxYTick,\n };\n }\n\n createMainTitle(facetKeys: string[], title: HistogramSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n updateLegendSize(\n legend: HistogramSettingsImpl['chartSettings']['legend'],\n legendInfo: HistogramLegendInfo,\n grouping: ColumnName | null,\n layers: HistogramLayer[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n layers.forEach(layer => {\n if (isInheritedAes(layer.aes.fillColor) && grouping) {\n const columnId = layer.aes.fillColor.value;\n const info = legendInfo[grouping.value];\n const title = grouping.label ?? grouping.value;\n const scale:ScaleOrdinal<string, string> = scaleOrdinal<string, string>()\n .domain(info.values)\n .range(info.values.map(value => info.aesMap[value].fillColor as string));\n legendItems.push({...emptySizes, id: columnId, type: 'discreteColor', title, scale, values: info.values, labels: info.labels});\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n const legendHeight = this.chartSizes.chartHeight;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items,\n };\n }\n\n updateMargins(size:HistogramSettingsImpl['chartSettings']['size']) {\n const titleTextHeight = TITLE_LINE_HEIGHT * this.mainTitle.length;\n const titleHeight = titleTextHeight > 0 ? titleTextHeight + TITLE_MARGIN * 2 : 0;\n\n const minMargin = size.outerOffset;\n\n this.margins = {\n top: Math.max(titleHeight, minMargin),\n bottom: minMargin,\n left: minMargin,\n right: this.legend.width + minMargin,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: HistogramSettingsImpl['chartSettings'],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n legendInfo: HistogramLegendInfo,\n layers: HistogramLayer[],\n inheritedAes: HistogramSettingsImpl['inheritedAes'],\n grouping: ColumnName | null,\n groupingStack: HistogramSettingsImpl['groupingStack'],\n groupingDirection: HistogramSettingsImpl['groupingDirection'],\n onTooltipHintSwitch: (v:boolean) => void,\n ) {\n const {xAxis, yAxis, size, title} = chartSettings;\n this.updateChartSizes(size);\n this.updateViewport(facetKeys, facetSettings, xAxis, yAxis, histogramDataByFacets, size, groupingStack);\n this.updateCaptionsSize(xAxis, yAxis);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.createMainTitle(facetKeys, title);\n this.updateLegendSize(chartSettings.legend, legendInfo, grouping, layers);\n this.updateMargins(size);\n const minHeight = facetKeys.reduce((v, key) => {\n return Math.min(v, histogramDataByFacets[key].minX);\n }, Infinity);\n const maxHeight = facetKeys.reduce((v, key) => {\n return Math.max(v, histogramDataByFacets[key].maxX);\n }, -Infinity);\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n columnsCount={this.columnsCount}\n margins={this.margins}\n mainTitle={this.mainTitle}\n facetTitles={this.facetTitles}\n captionsSizes={this.captionsSizes}\n histogramDataByFacets={histogramDataByFacets}\n layers={layers}\n aesColorGetter={createAesGetter(dataFrame, inheritedAes, 'fillColor', [minHeight, maxHeight])}\n groupingDirection={groupingDirection}\n groupingStack={groupingStack}\n groupingLabels={grouping ? legendInfo[grouping.value].labels : {}}\n legend={this.legend}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","lastInRow","facetSettings","needLeftAxis","needBottomAxis","needBottomAxisTitle","yCaptions","yTicks","DEFAULT_TICKS_SIZE","TICK_OFFSET","xCaptions","xTicks","xAxisTitle","TITLE_LINE","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetRows","facetKeys","nRows","nColumns","result","i","getRowColumn","idx","row","column","isInheritedAes","v","isContinuousAes","createAesGetter","dataFrame","aesData","field","defaultDomain","aesItem","height","domain","range","type","scale","getContinuousColorScale","columnId","mapping","_a","DEFAULT_COMMON_AES","ChartRenderer","__publicField","jsx","Fragment","MIN_MARGIN","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleLinear","node","createRoot","size","chartWidth","chartHeight","currentLeft","currentTop","res","currentRow","currentColumn","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","histogramDataByFacets","groupingStack","facetCount","maxNRows","maxNCols","minXAll","maxXAll","maxYAll","histogramExtentsByKeys","histogramData","minX","maxX","maxCount","maxCountFromGroups","scaleX","scaleSymlog","extents","scaleY","minY","maxY","rangeV","tempY","textMeasurer","TextMeasurer","maxYTick","getMaxTickWidth","ticks","format","getTicksAndFormat","title","firstChart","lastChart","splitTextByWidth","facetLabels","legend","legendInfo","grouping","layers","legendItems","emptySizes","layer","info","scaleOrdinal","value","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","legendHeight","titleTextHeight","TITLE_LINE_HEIGHT","titleHeight","TITLE_MARGIN","minMargin","settingsId","chartSettings","inheritedAes","groupingDirection","onTooltipHintSwitch","minHeight","maxHeight","component","DataFrameProvider","ChartsGroup","message","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChartRenderer.js","sources":["../../src/histogram/ChartRenderer.tsx"],"sourcesContent":["import type { ScaleLogarithmic, ScaleOrdinal } from 'd3-scale';\nimport { scaleLinear, scaleOrdinal, scaleSymlog } from 'd3-scale';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame, RowIndex } from '../DataFrame';\nimport { splitTextByWidth } from '../discrete/utils';\nimport { DEFAULT_COMMON_AES, LEGEND_OFFSET } from '../scatterplot/constants';\nimport { getTicksAndFormat } from '../scatterplot/utils/getTicksAndFormat';\nimport type { AesItem, ColumnName, ContinuousAesHistogram, InheritAesHistogram } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { getContinuousColorScale } from '../utils/getContinuousColorScale';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type { CaptionsSizes, ChartDimensionsData, ChartScales, ChartSizes, ChartsScales, HistogramLegendInfo, Margins } from './components/types';\nimport {\n DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, FACET_TITLE_OFFSET,\n MIN_MARGIN,\n MIN_PADDING,\n TICK_OFFSET,\n TITLE_LINE\n} from './constants';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from './HistogramSettingsImpl';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n lastInRow: boolean,\n facetSettings?: HistogramSettingsImpl['facetSettings']\n) {\n const needLeftAxis = chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth + 2 * TICK_OFFSET;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n\n const xCaptions = captionsSizes.xAxisCaptionsWidth + 2 * TICK_OFFSET;\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = yCaptions + yTicks;\n const bottomAxisElements = xTicks + xCaptions + xAxisTitle;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements + 8 : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritedAes(v: InheritAesHistogram | unknown): v is InheritAesHistogram {\n return typeof v === 'object' && v !== null && 'type' in v && 'value' in v && v.type === 'grouping';\n}\nfunction isContinuousAes(v: ContinuousAesHistogram | unknown): v is ContinuousAesHistogram {\n return typeof v === 'object' && v !== null && 'range' in v;\n}\nfunction createAesGetter(dataFrame: DataFrame, aesData: HistogramSettingsImpl['inheritedAes'], field: keyof AesItem, defaultDomain:number[]) {\n return function (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, idx: RowIndex, height:number) {\n if (isContinuousAes(aesItem)) {\n const {domain = defaultDomain, range, type = 'linear'} = aesItem;\n const scale = getContinuousColorScale(range as string[], domain, type);\n scale.clamp(true);\n return scale(height);\n }\n if (isInheritedAes(aesItem)) {\n const columnId = aesItem.value;\n const mapping = aesData[columnId];\n return (mapping?.[String(dataFrame.getColumnValue(columnId, idx))] ?? DEFAULT_COMMON_AES)?.[field] as string;\n }\n return aesItem;\n };\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n x: {null: scaleLinear().domain([0, 10]).range([0, DEFAULT_WIDTH])},\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0])},\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidth: 30,\n yAxisCaptionsWidth: 100,\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSizes(size: HistogramSettingsImpl['chartSettings']['size']) {\n this.chartSizes.chartWidth = size.width;\n this.chartSizes.chartHeight = size.height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n currentColumn === this.columnsCount - 1,\n facetSettings\n );\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n size: HistogramSettingsImpl['chartSettings']['size'],\n groupingStack: HistogramSettingsImpl['groupingStack'],\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let [minXAll, maxXAll] = [Infinity, -Infinity];\n let maxYAll = -Infinity;\n const histogramExtentsByKeys = facetKeys.reduce((res: Record<string, Record<string, number>>, key) => {\n const histogramData = histogramDataByFacets[key];\n const {minX, maxX, maxCount, maxCountFromGroups} = histogramData;\n minXAll = Math.min(minXAll, minX);\n maxXAll = Math.max(maxXAll, maxX);\n maxYAll = Math.max(maxYAll, groupingStack === 'vertical' ? maxCount : maxCountFromGroups);\n res[key] = {minX, maxX, maxY: groupingStack === 'vertical' ? maxCount : maxCountFromGroups};\n return res;\n }, {});\n\n facetKeys.forEach(key => {\n const scaleX: ChartScales['x'] = xAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n\n const extents = histogramExtentsByKeys[key];\n const minX = facetSettings.sharedX ? minXAll : extents.minX;\n const maxX = facetSettings.sharedX ? maxXAll : extents.maxX;\n\n (scaleX.domain([minX, maxX]) as ChartScales['x']).range([0, this.chartSizes.chartWidth]);\n this.scales.x[key] = scaleX;\n });\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n const extents = histogramExtentsByKeys[key];\n\n const minY = 0;\n const maxY = facetSettings.sharedY ? maxYAll : extents.maxY;\n\n const rangeV = [this.chartSizes.chartHeight, 0];\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY: ChartScales['y'] = (scaleY.copy().domain([minY, maxY]) as ChartScales['y']).range([\n this.chartSizes.chartHeight,\n size.innerOffset,\n ]) as ChartScales['y'];\n (scaleY.domain([tempY.invert(this.chartSizes.chartHeight), tempY.invert(0)]) as ChartScales['y']).range(\n rangeV\n );\n this.scales.y[key] = scaleY;\n });\n }\n\n updateCaptionsSize(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n\n let maxYTick = 0;\n\n function getMaxTickWidth(ticks: string[]) {\n return Math.max(...ticks.map(key => textMeasurer.getTextWidth(key)));\n }\n\n if (!yAxis.hiddenLabels) {\n Object.values(this.scales.y).forEach(scale => {\n const {ticks, format} = getTicksAndFormat(scale as ScaleLogarithmic<number, number>, false);\n maxYTick = Math.max(maxYTick, getMaxTickWidth(ticks.map(format)));\n });\n }\n this.captionsSizes = {\n xAxisCaptionsWidth: xAxis.hiddenLabels ? 0 : 20,\n yAxisCaptionsWidth: maxYTick,\n };\n }\n\n createMainTitle(facetKeys: string[], title: HistogramSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n updateLegendSize(\n legend: HistogramSettingsImpl['chartSettings']['legend'],\n legendInfo: HistogramLegendInfo,\n grouping: ColumnName | null,\n layers: HistogramLayer[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n layers.forEach(layer => {\n if (isInheritedAes(layer.aes.fillColor) && grouping) {\n const columnId = layer.aes.fillColor.value;\n const info = legendInfo[grouping.value];\n const title = grouping.label ?? grouping.value;\n const scale:ScaleOrdinal<string, string> = scaleOrdinal<string, string>()\n .domain(info.values)\n .range(info.values.map(value => info.aesMap[value]?.fillColor ?? DEFAULT_COMMON_AES.fillColor));\n legendItems.push({...emptySizes, id: columnId, type: 'discreteColor', title, scale, values: info.values, labels: info.labels});\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n const legendHeight = this.chartSizes.chartHeight;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items,\n };\n }\n\n updateMargins(size:HistogramSettingsImpl['chartSettings']['size']) {\n const titleTextHeight = TITLE_LINE_HEIGHT * this.mainTitle.length;\n const titleHeight = titleTextHeight > 0 ? titleTextHeight + TITLE_MARGIN * 2 : 0;\n\n const minMargin = size.outerOffset;\n\n this.margins = {\n top: Math.max(titleHeight, minMargin),\n bottom: minMargin,\n left: minMargin,\n right: this.legend.width + minMargin,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: HistogramSettingsImpl['chartSettings'],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n legendInfo: HistogramLegendInfo,\n layers: HistogramLayer[],\n inheritedAes: HistogramSettingsImpl['inheritedAes'],\n grouping: ColumnName | null,\n groupingStack: HistogramSettingsImpl['groupingStack'],\n groupingDirection: HistogramSettingsImpl['groupingDirection'],\n onTooltipHintSwitch: (v:boolean) => void,\n ) {\n const {xAxis, yAxis, size, title} = chartSettings;\n this.updateChartSizes(size);\n this.updateViewport(facetKeys, facetSettings, xAxis, yAxis, histogramDataByFacets, size, groupingStack);\n this.updateCaptionsSize(xAxis, yAxis);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.createMainTitle(facetKeys, title);\n this.updateLegendSize(chartSettings.legend, legendInfo, grouping, layers);\n this.updateMargins(size);\n const minHeight = facetKeys.reduce((v, key) => {\n return Math.min(v, histogramDataByFacets[key].minX);\n }, Infinity);\n const maxHeight = facetKeys.reduce((v, key) => {\n return Math.max(v, histogramDataByFacets[key].maxX);\n }, -Infinity);\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n columnsCount={this.columnsCount}\n margins={this.margins}\n mainTitle={this.mainTitle}\n facetTitles={this.facetTitles}\n captionsSizes={this.captionsSizes}\n histogramDataByFacets={histogramDataByFacets}\n layers={layers}\n aesColorGetter={createAesGetter(dataFrame, inheritedAes, 'fillColor', [minHeight, maxHeight])}\n groupingDirection={groupingDirection}\n groupingStack={groupingStack}\n groupingLabels={grouping ? legendInfo[grouping.value].labels : {}}\n legend={this.legend}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","lastInRow","facetSettings","needLeftAxis","needBottomAxis","needBottomAxisTitle","yCaptions","TICK_OFFSET","yTicks","DEFAULT_TICKS_SIZE","xCaptions","xTicks","xAxisTitle","TITLE_LINE","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetRows","facetKeys","nRows","nColumns","result","i","getRowColumn","idx","row","column","isInheritedAes","v","isContinuousAes","createAesGetter","dataFrame","aesData","field","defaultDomain","aesItem","height","domain","range","type","scale","getContinuousColorScale","columnId","mapping","_a","DEFAULT_COMMON_AES","ChartRenderer","__publicField","jsx","Fragment","MIN_MARGIN","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleLinear","node","createRoot","size","chartWidth","chartHeight","currentLeft","currentTop","res","currentRow","currentColumn","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","histogramDataByFacets","groupingStack","facetCount","maxNRows","maxNCols","minXAll","maxXAll","maxYAll","histogramExtentsByKeys","histogramData","minX","maxX","maxCount","maxCountFromGroups","scaleX","scaleSymlog","extents","scaleY","minY","maxY","rangeV","tempY","textMeasurer","TextMeasurer","maxYTick","getMaxTickWidth","ticks","format","getTicksAndFormat","title","firstChart","lastChart","splitTextByWidth","facetLabels","legend","legendInfo","grouping","layers","legendItems","emptySizes","layer","info","scaleOrdinal","value","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","legendHeight","titleTextHeight","TITLE_LINE_HEIGHT","titleHeight","TITLE_MARGIN","minMargin","settingsId","chartSettings","inheritedAes","groupingDirection","onTooltipHintSwitch","minHeight","maxHeight","component","DataFrameProvider","ChartsGroup","message","Error"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare const MIN_PADDING = 12;
|
|
|
6
6
|
export declare const TITLE_LINE = 20;
|
|
7
7
|
export declare const DEFAULT_TICKS_SIZE = 4;
|
|
8
8
|
export declare const TICK_OFFSET = 6;
|
|
9
|
-
export declare const LEGEND_OFFSET =
|
|
9
|
+
export declare const LEGEND_OFFSET = 20;
|
|
10
10
|
export declare const PADDINGS: {
|
|
11
11
|
TOP: number;
|
|
12
12
|
BOTTOM: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/histogram/constants.ts"],"sourcesContent":["export const FACET_TITLE_LINE = 20;\nexport const FACET_TITLE_OFFSET = 6;\nexport const FACET_AXIS_OFFSET = 8;\nexport const MIN_MARGIN = 24;\nexport const MIN_PADDING = 12;\n\nexport const TITLE_LINE = 20;\nexport const DEFAULT_TICKS_SIZE = 4;\nexport const TICK_OFFSET = 6;\n\nexport const LEGEND_OFFSET =
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/histogram/constants.ts"],"sourcesContent":["export const FACET_TITLE_LINE = 20;\nexport const FACET_TITLE_OFFSET = 6;\nexport const FACET_AXIS_OFFSET = 8;\nexport const MIN_MARGIN = 24;\nexport const MIN_PADDING = 12;\n\nexport const TITLE_LINE = 20;\nexport const DEFAULT_TICKS_SIZE = 4;\nexport const TICK_OFFSET = 6;\n\nexport const LEGEND_OFFSET = 20;\n\n// inner paddings in chart area\nexport const PADDINGS = {\n TOP: 30,\n BOTTOM: 0,\n LEFT: 10,\n RIGHT: 10\n};\n"],"names":["FACET_TITLE_LINE","FACET_TITLE_OFFSET","MIN_MARGIN","MIN_PADDING","TITLE_LINE","DEFAULT_TICKS_SIZE","TICK_OFFSET","PADDINGS"],"mappings":"AAAO,MAAMA,IAAmB,IACnBC,IAAqB,GAErBC,IAAa,IACbC,IAAc,IAEdC,IAAa,IACbC,IAAqB,GACrBC,IAAc,GAKdC,IAAW;AAAA,EACpB,KAAK;AAIT;"}
|