@milaboratories/miplots4 1.0.129 → 1.0.131
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 +15 -9
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js +105 -81
- package/dist/DataFrame.js.map +1 -1
- package/dist/bubble/ChartRenderer.d.ts +6 -5
- package/dist/bubble/ChartRenderer.d.ts.map +1 -1
- package/dist/bubble/ChartRenderer.js +123 -121
- package/dist/bubble/ChartRenderer.js.map +1 -1
- package/dist/bubble/components/Chart.d.ts +3 -2
- package/dist/bubble/components/Chart.d.ts.map +1 -1
- package/dist/bubble/components/Chart.js +78 -97
- package/dist/bubble/components/Chart.js.map +1 -1
- package/dist/bubble/components/ChartsGroup.d.ts +6 -5
- package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
- package/dist/bubble/components/ChartsGroup.js +39 -37
- package/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/bubble/getCellTooltip.d.ts +5 -0
- package/dist/bubble/getCellTooltip.d.ts.map +1 -0
- package/dist/bubble/getCellTooltip.js +28 -0
- package/dist/bubble/getCellTooltip.js.map +1 -0
- package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
- package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
- package/dist/bubble/getGroupedCellsData.js +94 -0
- package/dist/bubble/getGroupedCellsData.js.map +1 -0
- package/dist/bubble/index.d.ts +4 -4
- package/dist/bubble/index.d.ts.map +1 -1
- package/dist/bubble/index.js +47 -42
- package/dist/bubble/index.js.map +1 -1
- package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
- package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
- package/dist/common/Legend.d.ts.map +1 -1
- package/dist/common/Legend.js.map +1 -1
- package/dist/common/Tooltip.js +1 -1
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/common/types.d.ts +1 -1
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/useDataFrame.d.ts +11 -0
- package/dist/common/useDataFrame.d.ts.map +1 -0
- package/dist/common/useDataFrame.js +20 -0
- package/dist/common/useDataFrame.js.map +1 -0
- package/dist/dendro/ChartRenderer.d.ts +9 -8
- package/dist/dendro/ChartRenderer.d.ts.map +1 -1
- package/dist/dendro/ChartRenderer.js +187 -187
- package/dist/dendro/ChartRenderer.js.map +1 -1
- package/dist/dendro/components/Chart.d.ts +8 -8
- package/dist/dendro/components/Chart.d.ts.map +1 -1
- package/dist/dendro/components/Chart.js +35 -35
- package/dist/dendro/components/Chart.js.map +1 -1
- package/dist/dendro/components/Heatmap.d.ts +3 -3
- package/dist/dendro/components/Heatmap.d.ts.map +1 -1
- package/dist/dendro/components/Heatmap.js +23 -23
- package/dist/dendro/components/Heatmap.js.map +1 -1
- package/dist/dendro/components/Legend.d.ts.map +1 -1
- package/dist/dendro/components/Legend.js.map +1 -1
- package/dist/dendro/components/LinksGroup.d.ts +6 -6
- package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
- package/dist/dendro/components/LinksGroup.js +17 -17
- package/dist/dendro/components/LinksGroup.js.map +1 -1
- package/dist/dendro/components/NodesGroup.d.ts +7 -7
- package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
- package/dist/dendro/components/NodesGroup.js +29 -29
- package/dist/dendro/components/NodesGroup.js.map +1 -1
- package/dist/dendro/components/types.d.ts +2 -2
- package/dist/dendro/components/types.d.ts.map +1 -1
- package/dist/dendro/getHeatmapData.d.ts +2 -2
- package/dist/dendro/getHeatmapData.d.ts.map +1 -1
- package/dist/dendro/getHeatmapData.js +48 -44
- package/dist/dendro/getHeatmapData.js.map +1 -1
- package/dist/dendro/getHierarchyData.d.ts +3 -3
- package/dist/dendro/getHierarchyData.d.ts.map +1 -1
- package/dist/dendro/getHierarchyData.js +31 -31
- package/dist/dendro/getHierarchyData.js.map +1 -1
- package/dist/dendro/index.d.ts +5 -5
- package/dist/dendro/index.d.ts.map +1 -1
- package/dist/dendro/index.js +86 -89
- package/dist/dendro/index.js.map +1 -1
- package/dist/discrete/ChartRenderer.d.ts +6 -6
- package/dist/discrete/ChartRenderer.d.ts.map +1 -1
- package/dist/discrete/ChartRenderer.js +197 -196
- package/dist/discrete/ChartRenderer.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
- package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.js +8 -8
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/components/layers/BoxElement.js.map +1 -1
- package/dist/discrete/index.d.ts +1 -1
- package/dist/discrete/index.d.ts.map +1 -1
- package/dist/discrete/index.js +109 -106
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/bar.d.ts +2 -2
- package/dist/discrete/layers/bar.d.ts.map +1 -1
- package/dist/discrete/layers/bar.js +32 -37
- package/dist/discrete/layers/bar.js.map +1 -1
- package/dist/discrete/layers/binnedDots.d.ts +3 -3
- package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
- package/dist/discrete/layers/binnedDots.js +66 -78
- package/dist/discrete/layers/binnedDots.js.map +1 -1
- package/dist/discrete/layers/boxes.d.ts +3 -4
- package/dist/discrete/layers/boxes.d.ts.map +1 -1
- package/dist/discrete/layers/boxes.js +59 -60
- package/dist/discrete/layers/boxes.js.map +1 -1
- package/dist/discrete/layers/dots.d.ts +2 -3
- package/dist/discrete/layers/dots.d.ts.map +1 -1
- package/dist/discrete/layers/dots.js +30 -30
- package/dist/discrete/layers/dots.js.map +1 -1
- package/dist/discrete/layers/lines.js +11 -10
- package/dist/discrete/layers/lines.js.map +1 -1
- package/dist/discrete/layers/logo.d.ts +2 -2
- package/dist/discrete/layers/logo.d.ts.map +1 -1
- package/dist/discrete/layers/logo.js +21 -21
- package/dist/discrete/layers/logo.js.map +1 -1
- package/dist/discrete/layers/pairedPoints.d.ts +2 -2
- package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
- package/dist/discrete/layers/pairedPoints.js +62 -62
- package/dist/discrete/layers/pairedPoints.js.map +1 -1
- package/dist/discrete/layers/sina.d.ts +3 -4
- package/dist/discrete/layers/sina.d.ts.map +1 -1
- package/dist/discrete/layers/sina.js +67 -71
- package/dist/discrete/layers/sina.js.map +1 -1
- package/dist/discrete/layers/stackedBar.d.ts +1 -1
- package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
- package/dist/discrete/layers/stackedBar.js +25 -25
- package/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/discrete/layers/violins.js +13 -13
- package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
- package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
- package/dist/discrete/utils/getOutliersBounds.js +5 -5
- package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
- package/dist/discrete/utils/splitTextByWidth.js +1 -1
- package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
- package/dist/heatmap/ChartRenderer.d.ts +7 -6
- package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +232 -230
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.js +40 -39
- package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +90 -89
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
- package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
- package/dist/heatmap/components/ChartsGroup.js +14 -14
- package/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/heatmap/components/types.d.ts +3 -2
- package/dist/heatmap/components/types.d.ts.map +1 -1
- package/dist/heatmap/getCells.d.ts +3 -2
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +97 -93
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/index.d.ts +3 -3
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +13 -12
- package/dist/heatmap/index.js.map +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/histogram/ChartRenderer.d.ts +6 -5
- package/dist/histogram/ChartRenderer.d.ts.map +1 -1
- package/dist/histogram/ChartRenderer.js +154 -153
- package/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
- package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
- package/dist/histogram/components/Chart.js +48 -48
- package/dist/histogram/components/Chart.js.map +1 -1
- package/dist/histogram/components/types.d.ts +4 -3
- package/dist/histogram/components/types.d.ts.map +1 -1
- package/dist/histogram/getHistogramData.d.ts +7 -7
- package/dist/histogram/getHistogramData.d.ts.map +1 -1
- package/dist/histogram/getHistogramData.js +52 -53
- package/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/histogram/index.d.ts +3 -3
- package/dist/histogram/index.d.ts.map +1 -1
- package/dist/histogram/index.js +49 -45
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
- package/dist/node_modules/d3-array/src/min.js +5 -11
- package/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/d3-shape/src/area.js +30 -30
- package/dist/node_modules/d3-shape/src/line.js +6 -6
- package/dist/node_modules/d3-shape/src/line.js.map +1 -1
- package/dist/node_modules/kdbush/index.js +148 -0
- package/dist/node_modules/kdbush/index.js.map +1 -0
- package/dist/scatterplot/ChartRenderer.d.ts +7 -6
- package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot/ChartRenderer.js +213 -209
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
- package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.js +138 -156
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.js +41 -38
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/scatterplot/components/ChartTrendsData.js +21 -21
- package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
- package/dist/scatterplot/components/types.d.ts +7 -7
- package/dist/scatterplot/components/types.d.ts.map +1 -1
- package/dist/scatterplot/constants.d.ts +1 -1
- package/dist/scatterplot/constants.d.ts.map +1 -1
- package/dist/scatterplot/constants.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +2 -2
- package/dist/scatterplot/dots.d.ts.map +1 -1
- package/dist/scatterplot/dots.js +27 -25
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/getLayersData.d.ts +3 -3
- package/dist/scatterplot/getLayersData.d.ts.map +1 -1
- package/dist/scatterplot/getLayersData.js +12 -15
- package/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/scatterplot/index.d.ts +4 -4
- package/dist/scatterplot/index.d.ts.map +1 -1
- package/dist/scatterplot/index.js +71 -72
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/linearRegression.d.ts +5 -4
- package/dist/scatterplot/linearRegression.d.ts.map +1 -1
- package/dist/scatterplot/linearRegression.js +88 -86
- package/dist/scatterplot/linearRegression.js.map +1 -1
- package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
- package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
- package/dist/scatterplot/utils/createAesGetter.js +21 -21
- package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
- package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.js +44 -37
- package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
- package/dist/scatterplot/utils/formatColumnValue.d.ts +5 -0
- package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
- package/dist/scatterplot/utils/formatColumnValue.js +11 -0
- package/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
- package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
- package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
- package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
- package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +231 -214
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
- package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.js +25 -25
- package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/scatterplot-umap/colors.d.ts +6 -0
- package/dist/scatterplot-umap/colors.d.ts.map +1 -0
- package/dist/scatterplot-umap/colors.js +42 -0
- package/dist/scatterplot-umap/colors.js.map +1 -0
- package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
- package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +97 -94
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +0 -2
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +77 -102
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/scatterplot-umap/types.d.ts +7 -10
- package/dist/scatterplot-umap/types.d.ts.map +1 -1
- package/dist/types/bubble.d.ts +44 -12
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/common.d.ts +22 -3
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +3 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +113 -10
- package/dist/types/dendro.d.ts.map +1 -1
- package/dist/types/dendro.js +1 -1
- package/dist/types/dendro.js.map +1 -1
- package/dist/types/discrete.d.ts +99 -22
- package/dist/types/discrete.d.ts.map +1 -1
- package/dist/types/discrete.js +3 -3
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +187 -28
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +1 -1
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/histogram.d.ts +30 -8
- package/dist/types/histogram.d.ts.map +1 -1
- package/dist/types/histogram.js +1 -1
- package/dist/types/histogram.js.map +1 -1
- package/dist/types/scatterplot-umap.d.ts +149 -15
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot-umap.js +9 -9
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.d.ts +164 -12
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/types/scatterplot.js +1 -1
- package/dist/types/scatterplot.js.map +1 -1
- package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
- package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
- package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
- package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
- package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
- package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
- package/dist/utils/arrangeLegendParts.js +1 -1
- package/dist/utils/arrangeLegendParts.js.map +1 -1
- package/dist/utils/getChartEdgeSides.d.ts +1 -1
- package/dist/utils/getLegendWidth.d.ts.map +1 -1
- package/dist/utils/getLegendWidth.js +1 -1
- package/dist/utils/getLegendWidth.js.map +1 -1
- package/package.json +5 -3
- package/dist/bubble/getCells.d.ts.map +0 -1
- package/dist/bubble/getCells.js +0 -91
- package/dist/bubble/getCells.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/add.js +0 -30
- package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
- package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/data.js +0 -12
- package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
- package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/find.js +0 -26
- package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
- package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
- package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
- package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/root.js +0 -7
- package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/size.js +0 -12
- package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
- package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
- package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/x.js +0 -11
- package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/y.js +0 -11
- package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
- package/dist/utils/TextMeasurer.d.ts +0 -8
- package/dist/utils/TextMeasurer.d.ts.map +0 -1
- package/dist/utils/TextMeasurer.js +0 -27
- package/dist/utils/TextMeasurer.js.map +0 -1
|
@@ -1,78 +1,79 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var v = Object.defineProperty;
|
|
2
|
+
var j = (e, t, i) => t in e ? v(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
|
|
3
|
+
var g = (e, t, i) => j(e, typeof t != "symbol" ? t + "" : t, i);
|
|
4
4
|
import { j as A } from "../node_modules/react/jsx-runtime.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { createRoot as G } from "../node_modules/react-dom/client.js";
|
|
6
|
+
import { Error as Y } from "../common/Error.js";
|
|
7
|
+
import { DataFrameProvider as O } from "../common/useDataFrame.js";
|
|
8
|
+
import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as P, TITLE_MARGIN as U } from "../constants.js";
|
|
9
|
+
import { splitTextByWidth as D } from "../discrete/utils/splitTextByWidth.js";
|
|
9
10
|
import { LEGEND_OFFSET as V, DEFAULT_COMMON_AES as B } from "../scatterplot/constants.js";
|
|
10
11
|
import { getTicksAndFormat as Z } from "../scatterplot/utils/getTicksAndFormat.js";
|
|
11
12
|
import { arrangeLegendParts as k } from "../utils/arrangeLegendParts.js";
|
|
12
13
|
import { getContinuousColorScale as q } from "../utils/getContinuousColorScale.js";
|
|
13
|
-
import { TextMeasurer as J } from "../utils/TextMeasurer.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { TextMeasurer as J } from "../utils/TextMeasurer/TextMeasurer.js";
|
|
15
|
+
import { ChartsGroup as Q } from "./components/ChartsGroup.js";
|
|
16
|
+
import { MIN_MARGIN as H, DEFAULT_TICKS_SIZE as _, TICK_OFFSET as R, MIN_PADDING as S, FACET_TITLE_OFFSET as $, FACET_TITLE_LINE as y, TITLE_LINE as K } from "./constants.js";
|
|
16
17
|
import I from "../node_modules/d3-scale/src/linear.js";
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
function
|
|
18
|
+
import F from "../node_modules/d3-scale/src/symlog.js";
|
|
19
|
+
import tt from "../node_modules/d3-scale/src/ordinal.js";
|
|
20
|
+
function it(e, t, i, o) {
|
|
20
21
|
const s = [];
|
|
21
|
-
return
|
|
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;
|
|
22
23
|
}
|
|
23
|
-
function
|
|
24
|
-
const
|
|
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 ? _ : 0) + (t.hiddenLabels ? 0 : R), p = i.xAxisCaptionsWidth, E = (e.showTicks ? _ : 0) + (e.hiddenLabels ? 0 : R), c = C ? K : 0, l = a + x, m = E + p + c, T = Math.max(...o.map((f) => s[f].length));
|
|
25
26
|
return {
|
|
26
|
-
left:
|
|
27
|
-
top: T === 0 ? 0 :
|
|
28
|
-
bottom:
|
|
29
|
-
right:
|
|
27
|
+
left: r ? l : S,
|
|
28
|
+
top: T === 0 ? 0 : $ * 2 + T * y,
|
|
29
|
+
bottom: u ? m : S,
|
|
30
|
+
right: d ? 0 : S
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
for (let s = 0; s <
|
|
35
|
-
|
|
36
|
-
return
|
|
33
|
+
function et(e, t, i) {
|
|
34
|
+
const o = [];
|
|
35
|
+
for (let s = 0; s < t; s++)
|
|
36
|
+
o.push(e.slice(s * i, s * i + i));
|
|
37
|
+
return o;
|
|
37
38
|
}
|
|
38
|
-
function
|
|
39
|
-
const
|
|
40
|
-
return [
|
|
39
|
+
function ot(e, t) {
|
|
40
|
+
const i = Math.floor(e / t), o = e - i * t;
|
|
41
|
+
return [i, o];
|
|
41
42
|
}
|
|
42
|
-
function
|
|
43
|
-
return typeof
|
|
43
|
+
function X(e) {
|
|
44
|
+
return typeof e == "object" && e !== null && "type" in e && "value" in e && e.type === "grouping";
|
|
44
45
|
}
|
|
45
|
-
function
|
|
46
|
-
return typeof
|
|
46
|
+
function nt(e) {
|
|
47
|
+
return typeof e == "object" && e !== null && "range" in e;
|
|
47
48
|
}
|
|
48
|
-
function
|
|
49
|
-
return function(
|
|
50
|
-
var
|
|
51
|
-
if (
|
|
52
|
-
const { domain:
|
|
53
|
-
return
|
|
49
|
+
function ht(e, t, i, o) {
|
|
50
|
+
return function(s, h, d) {
|
|
51
|
+
var n;
|
|
52
|
+
if (nt(s)) {
|
|
53
|
+
const { domain: r = o, range: u, type: C = "linear" } = s, a = q(u, r, C);
|
|
54
|
+
return a.clamp(!0), a(d);
|
|
54
55
|
}
|
|
55
|
-
if (
|
|
56
|
-
const
|
|
57
|
-
return (
|
|
56
|
+
if (X(s)) {
|
|
57
|
+
const r = s.value, u = t[r];
|
|
58
|
+
return (n = (u == null ? void 0 : u[String(e.getColumnValue(r, h))]) ?? B) == null ? void 0 : n[i];
|
|
58
59
|
}
|
|
59
|
-
return
|
|
60
|
+
return s;
|
|
60
61
|
};
|
|
61
62
|
}
|
|
62
|
-
class
|
|
63
|
+
class wt {
|
|
63
64
|
constructor() {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
g(this, "reactRoot", null);
|
|
66
|
+
g(this, "parentNode", null);
|
|
67
|
+
g(this, "rootNode", null);
|
|
68
|
+
g(this, "component", /* @__PURE__ */ A.jsx(A.Fragment, {}));
|
|
69
|
+
g(this, "margins", {
|
|
69
70
|
top: H,
|
|
70
71
|
bottom: H,
|
|
71
72
|
left: H,
|
|
72
73
|
right: H
|
|
73
74
|
});
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
g(this, "chartsDimensions", {});
|
|
76
|
+
g(this, "chartSizes", {
|
|
76
77
|
chartWidth: N,
|
|
77
78
|
// width of single chart
|
|
78
79
|
chartHeight: w,
|
|
@@ -86,157 +87,157 @@ class Mt {
|
|
|
86
87
|
totalHeight: w
|
|
87
88
|
// width of all charts in charts height, plus bottom axis, plus top title
|
|
88
89
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
g(this, "columnsCount", 1);
|
|
91
|
+
g(this, "rowsCount", 1);
|
|
92
|
+
g(this, "scales", {
|
|
92
93
|
x: { null: I().domain([0, 10]).range([0, N]) },
|
|
93
94
|
y: { null: I().domain([0, 10]).range([w, 0]) }
|
|
94
95
|
});
|
|
95
|
-
|
|
96
|
+
g(this, "captionsSizes", {
|
|
96
97
|
xAxisCaptionsWidth: 30,
|
|
97
98
|
yAxisCaptionsWidth: 100
|
|
98
99
|
});
|
|
99
|
-
|
|
100
|
+
g(this, "facetTitles", {});
|
|
100
101
|
// can be multiline
|
|
101
|
-
|
|
102
|
+
g(this, "mainTitle", []);
|
|
102
103
|
// can be multiline
|
|
103
|
-
|
|
104
|
+
g(this, "legend", {
|
|
104
105
|
width: 0,
|
|
105
106
|
height: 0,
|
|
106
107
|
items: []
|
|
107
108
|
});
|
|
108
109
|
}
|
|
109
110
|
clear() {
|
|
110
|
-
var
|
|
111
|
-
this.parentNode && this.rootNode && ((
|
|
112
|
-
var
|
|
113
|
-
(
|
|
111
|
+
var t;
|
|
112
|
+
this.parentNode && this.rootNode && ((t = this.parentNode) == null || t.removeChild(this.rootNode), this.parentNode = null, this.rootNode = null), setTimeout(() => {
|
|
113
|
+
var i;
|
|
114
|
+
(i = this.reactRoot) == null || i.unmount(), this.reactRoot = null;
|
|
114
115
|
});
|
|
115
116
|
}
|
|
116
|
-
init(
|
|
117
|
-
this.parentNode === null && (this.parentNode =
|
|
117
|
+
init(t) {
|
|
118
|
+
this.parentNode === null && (this.parentNode = t, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = G(this.rootNode));
|
|
118
119
|
}
|
|
119
|
-
updateChartSizes(
|
|
120
|
-
this.chartSizes.chartWidth =
|
|
120
|
+
updateChartSizes(t) {
|
|
121
|
+
this.chartSizes.chartWidth = t.width, this.chartSizes.chartHeight = t.height;
|
|
121
122
|
}
|
|
122
|
-
updateChartDimensions(
|
|
123
|
-
const { chartWidth:
|
|
124
|
-
let n = 0,
|
|
125
|
-
this.chartsDimensions =
|
|
126
|
-
const [
|
|
127
|
-
|
|
123
|
+
updateChartDimensions(t, i, o, s) {
|
|
124
|
+
const { chartWidth: h, chartHeight: d } = this.chartSizes;
|
|
125
|
+
let n = 0, r = 0;
|
|
126
|
+
this.chartsDimensions = t.reduce((a, x, p) => {
|
|
127
|
+
const [E, c] = ot(p, this.columnsCount), l = it(p, t.length, this.columnsCount, this.rowsCount), m = st(
|
|
128
|
+
o,
|
|
128
129
|
s,
|
|
129
130
|
this.captionsSizes,
|
|
130
|
-
|
|
131
|
+
et(t, this.rowsCount, this.columnsCount)[E],
|
|
131
132
|
this.facetTitles,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
), T =
|
|
136
|
-
return
|
|
133
|
+
l,
|
|
134
|
+
c === this.columnsCount - 1,
|
|
135
|
+
i
|
|
136
|
+
), T = h + m.left + m.right, f = d + m.top + m.bottom;
|
|
137
|
+
return a[x] = {
|
|
137
138
|
left: n,
|
|
138
|
-
top:
|
|
139
|
-
chartEdgeSides:
|
|
140
|
-
padding:
|
|
141
|
-
inner: { width:
|
|
139
|
+
top: r,
|
|
140
|
+
chartEdgeSides: l,
|
|
141
|
+
padding: m,
|
|
142
|
+
inner: { width: h, height: d },
|
|
142
143
|
outer: { width: T, height: f }
|
|
143
|
-
}, n += T,
|
|
144
|
+
}, n += T, c === this.columnsCount - 1 && (n = 0, r += f), a;
|
|
144
145
|
}, {});
|
|
145
|
-
const
|
|
146
|
-
...
|
|
147
|
-
),
|
|
148
|
-
...
|
|
146
|
+
const u = Math.max(
|
|
147
|
+
...t.map((a) => this.chartsDimensions[a].outer.width + this.chartsDimensions[a].left)
|
|
148
|
+
), C = Math.max(
|
|
149
|
+
...t.map((a) => this.chartsDimensions[a].outer.height + this.chartsDimensions[a].top)
|
|
149
150
|
);
|
|
150
|
-
this.chartSizes.chartsWidth =
|
|
151
|
+
this.chartSizes.chartsWidth = u, this.chartSizes.chartsHeight = C;
|
|
151
152
|
}
|
|
152
|
-
updateViewport(
|
|
153
|
-
const
|
|
154
|
-
this.columnsCount =
|
|
155
|
-
let [
|
|
156
|
-
const
|
|
157
|
-
const
|
|
158
|
-
return
|
|
153
|
+
updateViewport(t, i, o, s, h, d, n) {
|
|
154
|
+
const r = t.length, u = Math.min(i.nRows ?? r, r), C = Math.min(i.nCols ?? r, r);
|
|
155
|
+
this.columnsCount = i.nRows ? Math.ceil(r / u) : C, this.rowsCount = Math.ceil(r / this.columnsCount);
|
|
156
|
+
let [a, x] = [1 / 0, -1 / 0], p = -1 / 0;
|
|
157
|
+
const E = t.reduce((c, l) => {
|
|
158
|
+
const m = h[l], { minX: T, maxX: f, maxCount: z, maxCountFromGroups: M } = m;
|
|
159
|
+
return a = Math.min(a, T), x = Math.max(x, f), p = Math.max(p, n === "vertical" ? z : M), c[l] = { minX: T, maxX: f, maxY: n === "vertical" ? z : M }, c;
|
|
159
160
|
}, {});
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
}),
|
|
164
|
-
const
|
|
161
|
+
t.forEach((c) => {
|
|
162
|
+
const l = o.scale === "log" ? F() : I(), m = E[c], T = i.sharedX ? a : m.minX, f = i.sharedX ? x : m.maxX;
|
|
163
|
+
l.domain([T, f]).range([0, this.chartSizes.chartWidth]), this.scales.x[c] = l;
|
|
164
|
+
}), t.forEach((c) => {
|
|
165
|
+
const l = s.scale === "log" ? F() : I(), m = E[c], T = 0, f = i.sharedY ? p : m.maxY, z = [this.chartSizes.chartHeight, 0], M = l.copy().domain([T, f]).range([
|
|
165
166
|
this.chartSizes.chartHeight,
|
|
166
|
-
|
|
167
|
+
d.innerOffset
|
|
167
168
|
]);
|
|
168
|
-
|
|
169
|
+
l.domain([M.invert(this.chartSizes.chartHeight), M.invert(0)]).range(
|
|
169
170
|
z
|
|
170
|
-
), this.scales.y[
|
|
171
|
+
), this.scales.y[c] = l;
|
|
171
172
|
});
|
|
172
173
|
}
|
|
173
|
-
updateCaptionsSize(
|
|
174
|
-
const
|
|
174
|
+
updateCaptionsSize(t, i) {
|
|
175
|
+
const o = new J("600 14px Arial");
|
|
175
176
|
let s = 0;
|
|
176
|
-
function
|
|
177
|
-
return Math.max(...
|
|
177
|
+
function h(d) {
|
|
178
|
+
return Math.max(...d.map((n) => o.getTextWidth(n)));
|
|
178
179
|
}
|
|
179
|
-
|
|
180
|
-
const { ticks: n, format:
|
|
181
|
-
s = Math.max(s,
|
|
180
|
+
i.hiddenLabels || Object.values(this.scales.y).forEach((d) => {
|
|
181
|
+
const { ticks: n, format: r } = Z(d, !1);
|
|
182
|
+
s = Math.max(s, h(n.map(r)));
|
|
182
183
|
}), this.captionsSizes = {
|
|
183
|
-
xAxisCaptionsWidth:
|
|
184
|
+
xAxisCaptionsWidth: t.hiddenLabels ? 0 : 20,
|
|
184
185
|
yAxisCaptionsWidth: s
|
|
185
186
|
};
|
|
186
187
|
}
|
|
187
|
-
createMainTitle(
|
|
188
|
-
const
|
|
189
|
-
this.mainTitle =
|
|
190
|
-
|
|
191
|
-
this.chartSizes.chartsWidth -
|
|
188
|
+
createMainTitle(t, i) {
|
|
189
|
+
const o = this.chartsDimensions[t[0]], s = this.chartsDimensions[t[t.length - 1]];
|
|
190
|
+
this.mainTitle = D(
|
|
191
|
+
i.name,
|
|
192
|
+
this.chartSizes.chartsWidth - o.padding.left - s.padding.right,
|
|
192
193
|
20
|
|
193
194
|
);
|
|
194
195
|
}
|
|
195
|
-
createFacetTitles(
|
|
196
|
-
this.facetTitles =
|
|
196
|
+
createFacetTitles(t, i) {
|
|
197
|
+
this.facetTitles = t.reduce((o, s, h) => (i[h].length === 1 && i[h][0] === "null" ? o[s] = [] : o[s] = D(i[h].join(", "), this.chartSizes.chartWidth, 14), o), {});
|
|
197
198
|
}
|
|
198
|
-
updateLegendSize(
|
|
199
|
-
if (!
|
|
199
|
+
updateLegendSize(t, i, o, s) {
|
|
200
|
+
if (!t.show) {
|
|
200
201
|
this.legend = { width: 0, height: 0, items: [] };
|
|
201
202
|
return;
|
|
202
203
|
}
|
|
203
|
-
const
|
|
204
|
-
if (s.forEach((
|
|
205
|
-
if (
|
|
206
|
-
const
|
|
207
|
-
|
|
204
|
+
const h = [], d = { width: 0, height: 0, left: 0, top: 0 };
|
|
205
|
+
if (s.forEach((a) => {
|
|
206
|
+
if (X(a.aes.fillColor) && o) {
|
|
207
|
+
const x = a.aes.fillColor.value, p = i[o.value], E = o.label ?? o.value, c = tt().domain(p.values).range(p.values.map((l) => p.aesMap[l].fillColor));
|
|
208
|
+
h.push({ ...d, id: x, type: "discreteColor", title: E, scale: c, values: p.values, labels: p.labels });
|
|
208
209
|
}
|
|
209
|
-
}), !
|
|
210
|
+
}), !h.length) {
|
|
210
211
|
this.legend = { width: 0, height: 0, items: [] };
|
|
211
212
|
return;
|
|
212
213
|
}
|
|
213
|
-
const n = k(
|
|
214
|
+
const n = k(h, this.chartSizes.chartHeight), r = n[n.length - 1], u = r.left + r.width + V, C = this.chartSizes.chartHeight;
|
|
214
215
|
this.legend = {
|
|
215
|
-
width:
|
|
216
|
-
height:
|
|
216
|
+
width: u,
|
|
217
|
+
height: C,
|
|
217
218
|
items: n
|
|
218
219
|
};
|
|
219
220
|
}
|
|
220
|
-
updateMargins(
|
|
221
|
-
const
|
|
221
|
+
updateMargins(t) {
|
|
222
|
+
const i = P * this.mainTitle.length, o = i > 0 ? i + U * 2 : 0, s = t.outerOffset;
|
|
222
223
|
this.margins = {
|
|
223
|
-
top: Math.max(
|
|
224
|
+
top: Math.max(o, s),
|
|
224
225
|
bottom: s,
|
|
225
226
|
left: s,
|
|
226
227
|
right: this.legend.width + s
|
|
227
228
|
}, this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right, this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;
|
|
228
229
|
}
|
|
229
|
-
render(
|
|
230
|
-
var
|
|
231
|
-
const { xAxis:
|
|
232
|
-
this.updateChartSizes(
|
|
233
|
-
const
|
|
234
|
-
|
|
230
|
+
render(t, i, o, s, h, d, n, r, u, C, a, x, p, E) {
|
|
231
|
+
var b;
|
|
232
|
+
const { xAxis: c, yAxis: l, size: m, title: T } = o;
|
|
233
|
+
this.updateChartSizes(m), this.updateViewport(h, s, c, l, n, m, x), this.updateCaptionsSize(c, l), this.createFacetTitles(h, d), this.updateChartDimensions(h, s, c, l), this.createMainTitle(h, T), this.updateLegendSize(o.legend, r, a, u), this.updateMargins(m);
|
|
234
|
+
const f = h.reduce((W, L) => Math.min(W, n[L].minX), 1 / 0), z = h.reduce((W, L) => Math.max(W, n[L].maxX), -1 / 0), M = /* @__PURE__ */ A.jsx(O, { dataFrame: t, children: /* @__PURE__ */ A.jsx(
|
|
235
|
+
Q,
|
|
235
236
|
{
|
|
236
237
|
settingsId: i,
|
|
237
|
-
chartSettings:
|
|
238
|
-
facetKeys:
|
|
239
|
-
facetSettings:
|
|
238
|
+
chartSettings: o,
|
|
239
|
+
facetKeys: h,
|
|
240
|
+
facetSettings: s,
|
|
240
241
|
chartSizes: this.chartSizes,
|
|
241
242
|
chartsDimensions: this.chartsDimensions,
|
|
242
243
|
scales: this.scales,
|
|
@@ -245,24 +246,24 @@ class Mt {
|
|
|
245
246
|
mainTitle: this.mainTitle,
|
|
246
247
|
facetTitles: this.facetTitles,
|
|
247
248
|
captionsSizes: this.captionsSizes,
|
|
248
|
-
histogramDataByFacets:
|
|
249
|
-
layers:
|
|
250
|
-
aesColorGetter:
|
|
251
|
-
groupingDirection:
|
|
252
|
-
groupingStack:
|
|
253
|
-
groupingLabels:
|
|
249
|
+
histogramDataByFacets: n,
|
|
250
|
+
layers: u,
|
|
251
|
+
aesColorGetter: ht(t, C, "fillColor", [f, z]),
|
|
252
|
+
groupingDirection: p,
|
|
253
|
+
groupingStack: x,
|
|
254
|
+
groupingLabels: a ? r[a.value].labels : {},
|
|
254
255
|
legend: this.legend,
|
|
255
|
-
onTooltipHintSwitch:
|
|
256
|
+
onTooltipHintSwitch: E
|
|
256
257
|
}
|
|
257
|
-
);
|
|
258
|
-
this.component =
|
|
258
|
+
) });
|
|
259
|
+
this.component = M, (b = this.reactRoot) == null || b.render(M);
|
|
259
260
|
}
|
|
260
|
-
renderError(
|
|
261
|
-
var
|
|
262
|
-
(
|
|
261
|
+
renderError(t) {
|
|
262
|
+
var i;
|
|
263
|
+
(i = this.reactRoot) == null || i.render(/* @__PURE__ */ A.jsx(Y, { message: t }));
|
|
263
264
|
}
|
|
264
265
|
}
|
|
265
266
|
export {
|
|
266
|
-
|
|
267
|
+
wt as default
|
|
267
268
|
};
|
|
268
269
|
//# sourceMappingURL=ChartRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.js","sources":["../../src/histogram/ChartRenderer.tsx"],"sourcesContent":["import {Error} from '../common/Error';\nimport type {LegendData, LegendItem} from '../common/types';\nimport {DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN} from '../constants';\nimport {FACET_TITLE_LINE} from './constants';\nimport {splitTextByWidth} from '../discrete/utils';\nimport type {HistogramLegendInfo, Margins} from './components/types';\nimport type {CaptionsSizes} from './components/types';\nimport {\n 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';\nimport {DEFAULT_COMMON_AES, LEGEND_OFFSET} from '../scatterplot/constants';\nimport {getTicksAndFormat} from '../scatterplot/utils/getTicksAndFormat';\nimport type {ColumnName, ContinuousAesHistogram} from '../types';\nimport type {AesItem, InheritAesHistogram, Row} from '../types';\nimport {arrangeLegendParts} from '../utils/arrangeLegendParts';\nimport {getContinuousColorScale} from '../utils/getContinuousColorScale';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport type {ScaleLogarithmic, ScaleOrdinal} from 'd3-scale';\nimport {scaleLinear, scaleOrdinal, scaleSymlog} from 'd3-scale';\nimport {DEFAULT_TICKS_SIZE} from './constants';\nimport type {ReactElement} from 'react';\nimport React from 'react';\nimport type {Root} from 'react-dom/client';\nimport {createRoot} from 'react-dom/client';\nimport {ChartsGroup} from './components/ChartsGroup';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, ChartsScales} from './components/types';\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(aesData: HistogramSettingsImpl['inheritedAes'], field: keyof AesItem, defaultDomain:number[]) {\n return function (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, row: Row, 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(row[columnId])] ?? 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 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 <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(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 );\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","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","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;\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,4 +1,4 @@
|
|
|
1
|
-
import { ColumnName, FrameType, HistogramSettings, InheritAesHistogram, LegendPosition, BinsLayer as OuterBinsLayer, BinsLineLayer as OuterLineLayer, SettingsInterface, TitlePosition,
|
|
1
|
+
import { ColumnName, FrameType, HistogramSettings, InheritAesHistogram, LegendPosition, BinsLayer as OuterBinsLayer, BinsLineLayer as OuterLineLayer, SettingsInterface, TitlePosition, AesRecord, ContinuousAesHistogram } from '../types';
|
|
2
2
|
export declare class BinsLayer {
|
|
3
3
|
readonly type = "bins";
|
|
4
4
|
readonly aes: {
|
|
@@ -66,7 +66,7 @@ export declare class HistogramSettingsImpl implements SettingsInterface {
|
|
|
66
66
|
position: LegendPosition;
|
|
67
67
|
};
|
|
68
68
|
};
|
|
69
|
-
readonly inheritedAes: Record<string,
|
|
69
|
+
readonly inheritedAes: Record<string, AesRecord>;
|
|
70
70
|
readonly layers: HistogramLayer[];
|
|
71
71
|
constructor(settings: HistogramSettings);
|
|
72
72
|
}
|