@milaboratories/miplots4 1.0.128 → 1.0.130
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 +286 -266
- 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/Captions/GroupCaptions.d.ts.map +1 -1
- package/dist/heatmap/components/Captions/GroupCaptions.js +45 -36
- package/dist/heatmap/components/Captions/GroupCaptions.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +104 -101
- 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/Dendrograms.d.ts +3 -1
- package/dist/heatmap/components/Dendrograms.d.ts.map +1 -1
- package/dist/heatmap/components/Dendrograms.js +54 -48
- package/dist/heatmap/components/Dendrograms.js.map +1 -1
- package/dist/heatmap/components/types.d.ts +5 -4
- 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/getDendrograms.d.ts +2 -2
- package/dist/heatmap/getDendrograms.d.ts.map +1 -1
- package/dist/heatmap/getDendrograms.js +36 -36
- package/dist/heatmap/getDendrograms.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 +3 -3
- package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js +89 -54
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/heatmap/utils/calculateChartSideElementSizes.js +19 -19
- package/dist/heatmap/utils/calculateChartSideElementSizes.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 +212 -195
- 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 +8 -8
- 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 +28 -27
- 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/ChartsGroup.js +3 -3
- package/dist/scatterplot/components/ChartsGroup.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 +21 -21
- 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/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 +6 -6
- 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/Lasso.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.js +148 -124
- package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
- 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 +88 -87
- 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 -104
- 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 +12 -12
- package/dist/types/common.d.ts +4 -3
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +10 -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 +14 -14
- 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 +28 -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 +8 -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 +11 -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 +12 -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,103 +1,99 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var Y = Object.defineProperty;
|
|
2
|
+
var q = (t, n, o) => n in t ? Y(t, n, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[n] = o;
|
|
3
|
+
var u = (t, n, o) => q(t, typeof n != "symbol" ? n + "" : n, o);
|
|
4
|
+
import E from "../../node_modules/lodash/lodash.js";
|
|
4
5
|
import { getOutliersBounds as k } from "../utils/getOutliersBounds.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import { quantileSorted as
|
|
11
|
-
import
|
|
12
|
-
const
|
|
13
|
-
function
|
|
14
|
-
return function(
|
|
15
|
-
return n.map(function(
|
|
16
|
-
return
|
|
6
|
+
import "../../utils/TextMeasurer/TextMeasurer.js";
|
|
7
|
+
import { getFacetStringKey as V } from "../utils/getFacetStringKey.js";
|
|
8
|
+
import F from "../../node_modules/d3-random/src/lcg.js";
|
|
9
|
+
import T from "../../node_modules/d3-scale/src/linear.js";
|
|
10
|
+
import _ from "../../node_modules/d3-array/src/max.js";
|
|
11
|
+
import { quantileSorted as G } from "../../node_modules/d3-array/src/quantile.js";
|
|
12
|
+
import D from "../../node_modules/d3-array/src/mean.js";
|
|
13
|
+
const v = 30;
|
|
14
|
+
function B(t, n) {
|
|
15
|
+
return function(o) {
|
|
16
|
+
return n.map(function(l) {
|
|
17
|
+
return D(o, (e) => t(l - e));
|
|
17
18
|
});
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
function
|
|
21
|
+
function C(t) {
|
|
21
22
|
return function(n) {
|
|
22
23
|
return 1 / Math.sqrt(2 * Math.PI) * Math.pow(Math.E, -0.5 * Math.pow(n / t, 2));
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
|
-
function
|
|
26
|
-
const n =
|
|
27
|
-
return
|
|
26
|
+
function I(t) {
|
|
27
|
+
const n = D(t);
|
|
28
|
+
return D(t.map((o) => Math.pow(o - n, 2)));
|
|
28
29
|
}
|
|
29
|
-
function
|
|
30
|
-
return Math.sqrt(
|
|
30
|
+
function O(t) {
|
|
31
|
+
return Math.sqrt(I(t));
|
|
31
32
|
}
|
|
32
|
-
function
|
|
33
|
-
const n =
|
|
34
|
-
return 1.06 * Math.min(c,
|
|
33
|
+
function R(t) {
|
|
34
|
+
const n = G(t, 0.25), e = (G(t, 0.75) - n) / 1.34, c = O(t);
|
|
35
|
+
return 1.06 * Math.min(c, e) * Math.pow(t.length, -1 / 5);
|
|
35
36
|
}
|
|
36
|
-
class
|
|
37
|
-
constructor(n,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
37
|
+
class U {
|
|
38
|
+
constructor(n, o, l, e, c) {
|
|
39
|
+
u(this, "key");
|
|
40
|
+
u(this, "maxDensity");
|
|
41
|
+
u(this, "primaryGrouping");
|
|
42
|
+
u(this, "secondaryGrouping");
|
|
43
|
+
u(this, "points");
|
|
44
|
+
u(this, "boundsY");
|
|
45
|
+
const f = v;
|
|
45
46
|
if (n.length === 0)
|
|
46
47
|
throw Error("Unable to calculate sina on empty data");
|
|
47
|
-
this.primaryGrouping = String(
|
|
48
|
-
const
|
|
48
|
+
this.primaryGrouping = String(l), this.secondaryGrouping = String(e), this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;
|
|
49
|
+
const i = (r) => o === "log" ? Math.log10(r) : r, x = (r) => o === "log" ? Math.pow(10, r) : r, y = n.filter((r) => o === "log" && r === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).sort((r, b) => i(r) - i(b)), s = y.map(i), h = s[0], p = s[y.length - 1], g = (p - h) / f, w = R(s), m = E.range(h + g, p, g);
|
|
49
50
|
this.boundsY = {
|
|
50
|
-
min:
|
|
51
|
-
max:
|
|
51
|
+
min: x(h),
|
|
52
|
+
max: x(p)
|
|
52
53
|
};
|
|
53
|
-
const
|
|
54
|
-
this.maxDensity =
|
|
55
|
-
x: r
|
|
56
|
-
y:
|
|
57
|
-
id: String(
|
|
58
|
-
jitter:
|
|
59
|
-
data: o
|
|
54
|
+
const d = B(C(w), m)(s), S = T().domain(m).range(d).clamp(!0);
|
|
55
|
+
this.maxDensity = _(d), this.points = y.map((r, b) => ({
|
|
56
|
+
x: r,
|
|
57
|
+
y: S(i(r)) / this.maxDensity,
|
|
58
|
+
id: String(b),
|
|
59
|
+
jitter: c()
|
|
60
60
|
}));
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
function
|
|
64
|
-
let c = 0, f = 1 / 0,
|
|
65
|
-
const
|
|
63
|
+
function W(t, n, o, l, e) {
|
|
64
|
+
let c = 0, f = 1 / 0, i = -1 / 0;
|
|
65
|
+
const x = F(1);
|
|
66
66
|
return {
|
|
67
67
|
type: "sina",
|
|
68
|
-
geoms: n.facet.reduce((
|
|
69
|
-
const
|
|
70
|
-
return
|
|
71
|
-
n.secondary.forEach((
|
|
72
|
-
const
|
|
73
|
-
if (!
|
|
68
|
+
geoms: n.facet.reduce((s, h) => {
|
|
69
|
+
const p = V(h);
|
|
70
|
+
return s[p] = [], n.primary.forEach((M) => {
|
|
71
|
+
n.secondary.forEach((g) => {
|
|
72
|
+
const w = o.getRowsByGrouping([...h, M, g]);
|
|
73
|
+
if (!w.length)
|
|
74
74
|
return;
|
|
75
|
-
let
|
|
75
|
+
let m = Array.from(w).map((d) => Number(o.getColumnValue(l.value, d)));
|
|
76
76
|
if (!t.aes.showOutliers) {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
const o = M(b);
|
|
80
|
-
return o >= Y && o <= S;
|
|
81
|
-
});
|
|
77
|
+
const [d, S] = k(m, e.scale);
|
|
78
|
+
m = m.filter((r) => r >= d && r <= S);
|
|
82
79
|
}
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
l
|
|
80
|
+
const a = new U(
|
|
81
|
+
m,
|
|
82
|
+
e.scale,
|
|
83
|
+
M,
|
|
84
|
+
g,
|
|
85
|
+
x
|
|
90
86
|
);
|
|
91
|
-
|
|
87
|
+
a.maxDensity > c && (c = a.maxDensity), a.boundsY.min < f && (f = a.boundsY.min), a.boundsY.max > i && (i = a.boundsY.max), s[p].push(a);
|
|
92
88
|
});
|
|
93
|
-
}),
|
|
89
|
+
}), s;
|
|
94
90
|
}, {}),
|
|
95
|
-
meta: { maxDensity: c, minY: f, maxY:
|
|
91
|
+
meta: { maxDensity: c, minY: f, maxY: i },
|
|
96
92
|
aes: t.aes
|
|
97
93
|
};
|
|
98
94
|
}
|
|
99
95
|
export {
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
U as Sina,
|
|
97
|
+
W as getSinaData
|
|
102
98
|
};
|
|
103
99
|
//# sourceMappingURL=sina.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sina.js","sources":["../../../src/discrete/layers/sina.ts"],"sourcesContent":["import type {GroupKey, NO_GROUPED} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, SinaLayer} from '../DiscreteSettingsImpl';\nimport type {SinaData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, DataValue, Row} from '../../types';\nimport {max, mean, quantileSorted} from 'd3-array';\nimport {randomLcg} from 'd3-random';\nimport {scaleLinear} from 'd3-scale';\nimport lodash from 'lodash';\n\nconst DEFAULT_STEPS_COUNT = 30;\n\nfunction kernelDensityEstimator(kernel: (v: number) => number, thresholds: number[]) {\n return function (arr: number[]) {\n return thresholds.map(function (x):number {\n return mean(arr, v => kernel(x - v)) as number;\n });\n };\n}\n\nfunction kernelGaussian(bandwidth: number) {\n return function (v: number) {\n return (1 / Math.sqrt(2 * Math.PI)) * Math.pow(Math.E, -0.5 * Math.pow(v / bandwidth, 2));\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction nrdBandwidth(arr: number[]) {\n const q1 = quantileSorted(arr, 0.25) as number;\n const q3 = quantileSorted(arr, 0.75) as number;\n const iqr = q3 - q1;\n const h = iqr / 1.34;\n const sigma = getStandardDeviation(arr);\n\n return 1.06 * Math.min(sigma, h) * Math.pow(arr.length, -1 / 5);\n}\n\nexport class Sina {\n key: string;\n maxDensity: number;\n primaryGrouping: string;\n secondaryGrouping: string;\n\n points: {x: number, y: number, jitter: number, id: string, data: Row}[];\n\n boundsY: {\n min: number;\n max: number;\n };\n\n constructor(\n rowValues: Row[],\n y:ColumnName,\n scale: 'linear' | 'log',\n primaryGrouping: DataValue | typeof NO_GROUPED,\n secondaryGrouping: DataValue | typeof NO_GROUPED,\n getJitter: () => number\n ) {\n const stepsCount = DEFAULT_STEPS_COUNT;\n if (rowValues.length === 0) {\n throw Error('Unable to calculate sina on empty data');\n }\n\n this.primaryGrouping = String(primaryGrouping);\n this.secondaryGrouping = String(secondaryGrouping);\n this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;\n\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n const getterY = (r:Row) => Number(r[y.value]);\n\n const sortedGroup = rowValues\n .filter((r:Row) => {\n if (scale === 'log' && getterY(r) === 0) {\n console.warn('Value = 0 on chart with log scale, it was removed from calculation');\n return false;\n }\n return true;\n })\n .sort((a, b) => convertToScale(getterY(a)) - convertToScale(getterY(b)));\n const sortedValues = sortedGroup.map((r) => convertToScale(getterY(r)));\n const minV = sortedValues[0];\n const maxV = sortedValues[sortedGroup.length - 1];\n const xRange = maxV - minV;\n const step = xRange / stepsCount;\n const bandwidth = nrdBandwidth(sortedValues);\n const thresholds = lodash.range(minV + step, maxV, step);\n\n this.boundsY = {\n min: convertFromScale(minV),\n max: convertFromScale(maxV),\n };\n\n const kde = kernelDensityEstimator(kernelGaussian(bandwidth), thresholds);\n const density = kde(sortedValues);\n const scaleY = scaleLinear().domain(thresholds).range(density).clamp(true);\n\n this.maxDensity = max(density) as number;\n\n this.points = sortedGroup.map((row:Row, idx) => {\n return {\n x: getterY(row),\n y: scaleY(convertToScale(getterY(row))) / this.maxDensity,\n id: String(idx),\n jitter: getJitter(),\n data: row\n };\n });\n }\n}\n\nexport function getSinaData(\n layer: SinaLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): SinaData {\n let maxDensity = 0;\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n const geoms = groupingKeys.facet.reduce((res: Record<string, Sina[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const values = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!values.length) {\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n const yGetter = (r:Row) => Number(r[y.value]);\n const [boundsMin, boundMax] = getOutliersBounds(values, yAxis.scale, yGetter);\n valuesFiltered = values.filter((row: Row) => {\n const value = yGetter(row);\n return value >= boundsMin && value <= boundMax;\n });\n }\n const sina = new Sina(\n valuesFiltered,\n y,\n yAxis.scale,\n primaryKey,\n secondaryKey,\n getJitter\n );\n\n if (sina.maxDensity > maxDensity) {\n maxDensity = sina.maxDensity;\n }\n if (sina.boundsY.min < minY) {\n minY = sina.boundsY.min;\n }\n if (sina.boundsY.max > maxY) {\n maxY = sina.boundsY.max;\n }\n res[strFacetKey].push(sina);\n });\n });\n return res;\n }, {});\n\n return {\n type: 'sina',\n geoms,\n meta: {maxDensity, minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["DEFAULT_STEPS_COUNT","kernelDensityEstimator","kernel","thresholds","arr","x","mean","v","kernelGaussian","bandwidth","getVariance","vMean","getStandardDeviation","nrdBandwidth","q1","quantileSorted","h","sigma","Sina","rowValues","y","scale","primaryGrouping","secondaryGrouping","getJitter","__publicField","stepsCount","convertToScale","convertFromScale","getterY","r","sortedGroup","a","b","sortedValues","minV","maxV","step","lodash","density","scaleY","scaleLinear","max","row","idx","getSinaData","layer","groupingKeys","data","yAxis","maxDensity","minY","maxY","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","values","valuesFiltered","yGetter","boundsMin","boundMax","getOutliersBounds","value","sina"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sina.js","sources":["../../../src/discrete/layers/sina.ts"],"sourcesContent":["import { max, mean, quantileSorted } from 'd3-array';\nimport { randomLcg } from 'd3-random';\nimport { scaleLinear } from 'd3-scale';\nimport lodash from 'lodash';\nimport type { DataFrame, GroupKey, NO_GROUPED } from '../../DataFrame';\nimport type { DataValue } from '../../types';\nimport type { DiscreteSettingsImpl, SinaLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { SinaData } from './types';\n\nconst DEFAULT_STEPS_COUNT = 30;\n\nfunction kernelDensityEstimator(kernel: (v: number) => number, thresholds: number[]) {\n return function (arr: number[]) {\n return thresholds.map(function (x):number {\n return mean(arr, v => kernel(x - v)) as number;\n });\n };\n}\n\nfunction kernelGaussian(bandwidth: number) {\n return function (v: number) {\n return (1 / Math.sqrt(2 * Math.PI)) * Math.pow(Math.E, -0.5 * Math.pow(v / bandwidth, 2));\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction nrdBandwidth(arr: number[]) {\n const q1 = quantileSorted(arr, 0.25) as number;\n const q3 = quantileSorted(arr, 0.75) as number;\n const iqr = q3 - q1;\n const h = iqr / 1.34;\n const sigma = getStandardDeviation(arr);\n\n return 1.06 * Math.min(sigma, h) * Math.pow(arr.length, -1 / 5);\n}\n\nexport class Sina {\n key: string;\n maxDensity: number;\n primaryGrouping: string;\n secondaryGrouping: string;\n\n points: {x: number, y: number, jitter: number, id: string}[];\n\n boundsY: {\n min: number;\n max: number;\n };\n\n constructor(\n values: number[],\n scale: 'linear' | 'log',\n primaryGrouping: DataValue | typeof NO_GROUPED,\n secondaryGrouping: DataValue | typeof NO_GROUPED,\n getJitter: () => number\n ) {\n const stepsCount = DEFAULT_STEPS_COUNT;\n if (values.length === 0) {\n throw Error('Unable to calculate sina on empty data');\n }\n\n this.primaryGrouping = String(primaryGrouping);\n this.secondaryGrouping = String(secondaryGrouping);\n this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;\n\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n\n const sortedGroup = values\n .filter((v: number) => {\n if (scale === 'log' && v === 0) {\n console.warn('Value = 0 on chart with log scale, it was removed from calculation');\n return false;\n }\n return true;\n })\n .sort((a, b) => convertToScale(a) - convertToScale(b));\n const sortedValues = sortedGroup.map(convertToScale);\n const minV = sortedValues[0];\n const maxV = sortedValues[sortedGroup.length - 1];\n const xRange = maxV - minV;\n const step = xRange / stepsCount;\n const bandwidth = nrdBandwidth(sortedValues);\n const thresholds = lodash.range(minV + step, maxV, step);\n\n this.boundsY = {\n min: convertFromScale(minV),\n max: convertFromScale(maxV),\n };\n\n const kde = kernelDensityEstimator(kernelGaussian(bandwidth), thresholds);\n const density = kde(sortedValues);\n const scaleY = scaleLinear().domain(thresholds).range(density).clamp(true);\n\n this.maxDensity = max(density) as number;\n\n this.points = sortedGroup.map((y:number, idx) => {\n return {\n x: y,\n y: scaleY(convertToScale(y)) / this.maxDensity,\n id: String(idx),\n jitter: getJitter(),\n };\n });\n }\n}\n\nexport function getSinaData(\n layer: SinaLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): SinaData {\n let maxDensity = 0;\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n const geoms = groupingKeys.facet.reduce((res: Record<string, Sina[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n let valuesFiltered = Array.from(indexes).map(idx => Number(data.getColumnValue(y.value, idx)));\n if (!layer.aes.showOutliers) {\n const [boundsMin, boundMax] = getOutliersBounds(valuesFiltered, yAxis.scale);\n valuesFiltered = valuesFiltered.filter((value: number) => {\n return value >= boundsMin && value <= boundMax;\n });\n }\n const sina = new Sina(\n valuesFiltered,\n yAxis.scale,\n primaryKey,\n secondaryKey,\n getJitter\n );\n\n if (sina.maxDensity > maxDensity) {\n maxDensity = sina.maxDensity;\n }\n if (sina.boundsY.min < minY) {\n minY = sina.boundsY.min;\n }\n if (sina.boundsY.max > maxY) {\n maxY = sina.boundsY.max;\n }\n res[strFacetKey].push(sina);\n });\n });\n return res;\n }, {});\n\n return {\n type: 'sina',\n geoms,\n meta: {maxDensity, minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["DEFAULT_STEPS_COUNT","kernelDensityEstimator","kernel","thresholds","arr","x","mean","v","kernelGaussian","bandwidth","getVariance","vMean","getStandardDeviation","nrdBandwidth","q1","quantileSorted","h","sigma","Sina","values","scale","primaryGrouping","secondaryGrouping","getJitter","__publicField","stepsCount","convertToScale","convertFromScale","sortedGroup","a","sortedValues","minV","maxV","step","lodash","density","scaleY","scaleLinear","max","y","idx","getSinaData","layer","groupingKeys","data","yAxis","maxDensity","minY","maxY","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","indexes","valuesFiltered","boundsMin","boundMax","getOutliersBounds","value","sina"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DataFrame, GroupKey } from '../../DataFrame';
|
|
2
|
+
import { ColumnName } from '../../types';
|
|
2
3
|
import { StackedBarLayer } from '../DiscreteSettingsImpl';
|
|
3
4
|
import { StackedBarsData } from './types';
|
|
4
|
-
import { ColumnName } from '../../types';
|
|
5
5
|
type BarPart = {
|
|
6
6
|
height: number;
|
|
7
7
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackedBar.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/stackedBar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stackedBar.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/stackedBar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,OAAO,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,GACd,eAAe,CAkDjB"}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { NO_GROUPED as
|
|
1
|
+
import { NO_GROUPED as S } from "../../DataFrame.js";
|
|
2
2
|
import { getFacetStringKey as z } from "../utils/getFacetStringKey.js";
|
|
3
3
|
import M from "../../node_modules/d3-array/src/sum.js";
|
|
4
|
-
function E(t,
|
|
5
|
-
let
|
|
4
|
+
function E(t, r, h, k) {
|
|
5
|
+
let o = -1 / 0, m = 1 / 0;
|
|
6
6
|
return {
|
|
7
7
|
type: "stackedBar",
|
|
8
|
-
geoms:
|
|
9
|
-
const
|
|
10
|
-
return c[
|
|
11
|
-
let
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
if (!
|
|
8
|
+
geoms: r.facet.reduce((c, u) => {
|
|
9
|
+
const l = z(u);
|
|
10
|
+
return c[l] = [], r.primary.forEach((s) => {
|
|
11
|
+
let i = 0;
|
|
12
|
+
const a = {};
|
|
13
|
+
r.secondary.forEach((n) => {
|
|
14
|
+
const e = n === S ? "null" : n, x = h.getRowsByGrouping([...u, s, n]);
|
|
15
|
+
if (!x.length)
|
|
16
16
|
return;
|
|
17
|
-
const d = M(
|
|
18
|
-
|
|
17
|
+
const d = M(x, (p) => Number(h.getColumnValue(k.value, p)));
|
|
18
|
+
a[e] = {
|
|
19
19
|
height: d,
|
|
20
|
-
key: String(
|
|
21
|
-
},
|
|
20
|
+
key: String(e)
|
|
21
|
+
}, i += d;
|
|
22
22
|
});
|
|
23
|
-
const f =
|
|
24
|
-
t.normalize &&
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
}),
|
|
28
|
-
const
|
|
29
|
-
c[
|
|
23
|
+
const f = i;
|
|
24
|
+
t.normalize && r.secondary.forEach((n) => {
|
|
25
|
+
const e = n === S ? "null" : n;
|
|
26
|
+
a[e] && (a[e].height = a[e].height / f * 100);
|
|
27
|
+
}), o = Math.max(o, 0, i), m = Math.min(m, 0, i);
|
|
28
|
+
const g = t.normalize ? 100 : f;
|
|
29
|
+
c[l].push({
|
|
30
30
|
key: `stackedBar_${String(s)}`,
|
|
31
|
-
valuesMap:
|
|
31
|
+
valuesMap: a,
|
|
32
32
|
primaryGrouping: s,
|
|
33
|
-
boundsY: { min: Math.min(
|
|
33
|
+
boundsY: { min: Math.min(g, 0), max: Math.max(g, 0) }
|
|
34
34
|
});
|
|
35
35
|
}), c;
|
|
36
36
|
}, {}),
|
|
37
|
-
meta: { minY: t.normalize ? 0 : m, maxY: t.normalize ? 100 :
|
|
37
|
+
meta: { minY: t.normalize ? 0 : m, maxY: t.normalize ? 100 : o, normalize: t.normalize },
|
|
38
38
|
aes: t.aes
|
|
39
39
|
};
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import type {DataFrame, GroupKey} from '../../DataFrame';\nimport {NO_GROUPED} from '../../DataFrame';\nimport type {
|
|
1
|
+
{"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import { sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport { NO_GROUPED } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { StackedBarLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { StackedBarsData } from './types';\n\ntype BarPart = {\n height: number;\n key: string;\n};\n\nexport type StackedBar = {\n key: string;\n valuesMap: Record<string, BarPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getStackedBarsData(\n layer: StackedBarLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): StackedBarsData {\n let maxY = -Infinity;\n let minY = Infinity;\n\n return {\n type: 'stackedBar',\n geoms: groupingKeys.facet.reduce((res: Record<string, StackedBar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const barParts:Record<string, BarPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const height = sum(indexes, (i) => Number(data.getColumnValue(y.value, i)));\n barParts[secondaryKeyStr] = {\n height,\n key: String(secondaryKeyStr),\n };\n currentHeight += height;\n });\n const maxStackHeight = currentHeight;\n if (layer.normalize) { // show in percents of every stack\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n if (!barParts[secondaryKeyStr]) {\n return;\n }\n barParts[secondaryKeyStr].height = barParts[secondaryKeyStr].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, 0, currentHeight);\n minY = Math.min(minY, 0, currentHeight);\n const bound = layer.normalize ? 100 : maxStackHeight;\n res[strFacetKey].push({\n key: `stackedBar_${String(primaryKey)}`,\n valuesMap: barParts,\n primaryGrouping: primaryKey,\n boundsY: {min: Math.min(bound, 0), max: Math.max(bound, 0)},\n } as StackedBar);\n });\n return res;\n }, {}),\n meta: {minY: layer.normalize ? 0 : minY, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getStackedBarsData","layer","groupingKeys","data","y","maxY","minY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","barParts","secondaryKey","secondaryKeyStr","NO_GROUPED","indexes","height","sum","i","maxStackHeight","bound"],"mappings":";;;AAuBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACe;AACf,MAAIC,IAAO,QACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOJ,EAAa,MAAM,OAAO,CAACK,GAAmCC,MAAa;AAC9E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBP,EAAa,QAAQ,QAAQ,CAAAS,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAmC,CAAA;AACzC,QAAAX,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF,GACzDG,IAAUd,EAAK,kBAAkB,CAAC,GAAGK,GAAUG,GAAYG,CAAY,CAAC;AAC9E,cAAI,CAACG,EAAQ;AACT;AAEJ,gBAAMC,IAASC,EAAIF,GAAS,CAACG,MAAM,OAAOjB,EAAK,eAAeC,EAAE,OAAOgB,CAAC,CAAC,CAAC;AAC1E,UAAAP,EAASE,CAAe,IAAI;AAAA,YACxB,QAAAG;AAAA,YACA,KAAK,OAAOH,CAAe;AAAA,UAAA,GAE/BH,KAAiBM;AAAA,QACrB,CAAC;AACD,cAAMG,IAAiBT;AACvB,QAAIX,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF;AAC/D,UAAKD,EAASE,CAAe,MAG7BF,EAASE,CAAe,EAAE,SAASF,EAASE,CAAe,EAAE,SAAUM,IAAiB;AAAA,QAC5F,CAAC,GAELhB,IAAO,KAAK,IAAIA,GAAM,GAAGO,CAAa,GACtCN,IAAO,KAAK,IAAIA,GAAM,GAAGM,CAAa;AACtC,cAAMU,IAAQrB,EAAM,YAAY,MAAMoB;AACtC,QAAAd,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,cAAc,OAAOE,CAAU,CAAC;AAAA,UACrC,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,KAAK,IAAIW,GAAO,CAAC,GAAG,KAAK,KAAK,IAAIA,GAAO,CAAC,EAAA;AAAA,QAAC,CAC/C;AAAA,MACnB,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAMN,EAAM,YAAY,IAAIK,GAAM,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IAC9F,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -6,7 +6,7 @@ import { quantileSorted as Y } from "../../node_modules/d3-array/src/quantile.js
|
|
|
6
6
|
import k from "../../node_modules/d3-scale/src/linear.js";
|
|
7
7
|
import N from "../../node_modules/d3-array/src/max.js";
|
|
8
8
|
import C from "../../node_modules/d3-shape/src/area.js";
|
|
9
|
-
import
|
|
9
|
+
import S from "../../node_modules/d3-shape/src/curve/basis.js";
|
|
10
10
|
import F from "../../node_modules/d3-shape/src/line.js";
|
|
11
11
|
import T from "../../node_modules/d3-array/src/mean.js";
|
|
12
12
|
const U = 40;
|
|
@@ -48,20 +48,20 @@ class z {
|
|
|
48
48
|
if (a !== "auto" && a < 1)
|
|
49
49
|
throw Error(`Unable to calculate violin with ${a} steps`);
|
|
50
50
|
this.primaryGrouping = String(h), this.secondaryGrouping = String(x), this.key = `violin_${this.primaryGrouping}_${this.secondaryGrouping}`;
|
|
51
|
-
const v = (i) => r === "log" ? Math.log10(i) : i, f = (i) => r === "log" ? Math.pow(10, i) : i, e = o.filter((i) => r === "log" && Number(i) === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).map(v).sort((i, s) => i - s),
|
|
51
|
+
const v = (i) => r === "log" ? Math.log10(i) : i, f = (i) => r === "log" ? Math.pow(10, i) : i, e = o.filter((i) => r === "log" && Number(i) === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).map(v).sort((i, s) => i - s), g = e[0], p = e[e.length - 1], y = p - g, q = Y(e, 0.25), G = Y(e, 0.5), c = Y(e, 0.75);
|
|
52
52
|
this.quartiles = { q1: f(q), q2: f(G), q3: f(c) };
|
|
53
|
-
const w = j(e, q, c), _ = a !== "auto" ? a : w / 3 > y / U ? U : y / (w / 3), A = l ?
|
|
53
|
+
const w = j(e, q, c), _ = a !== "auto" ? a : w / 3 > y / U ? U : y / (w / 3), A = l ? g : g - 3 * w, B = l ? p : p + 3 * w, E = k().domain([A, B]).ticks(_);
|
|
54
54
|
this.boundsY = {
|
|
55
|
-
min: f(
|
|
56
|
-
max: f(
|
|
55
|
+
min: f(E[0]),
|
|
56
|
+
max: f(E[E.length - 1])
|
|
57
57
|
};
|
|
58
|
-
const M = P(X(w),
|
|
58
|
+
const M = P(X(w), E)(e).map(([i, s]) => [f(i), s]);
|
|
59
59
|
this.maxDensity = N(M, ([, i]) => i), this.getArea = (i, s, D, V) => {
|
|
60
60
|
const d = i === "vertical", b = V ?? this.maxDensity, m = k().domain([-b, b]).range([-D / 2, D / 2]);
|
|
61
|
-
return d ? C().curve(
|
|
61
|
+
return d ? C().curve(S).x0((t) => m(t[1])).x1((t) => m(-t[1])).y((t) => s(t[0]))(M) : C().curve(S).y0((t) => m(t[1])).y1((t) => m(-t[1])).x((t) => s(t[0]))(M);
|
|
62
62
|
}, this.getLine = (i, s, D, V) => {
|
|
63
63
|
const d = i === "vertical", b = V ?? this.maxDensity, m = k().domain([-b, b]).range([-D / 2, D / 2]);
|
|
64
|
-
return F().curve(
|
|
64
|
+
return F().curve(S).x(d ? (t) => m(t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(t[1]))(M) + " " + F().curve(S).x(d ? (t) => m(-t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(-t[1]))(M);
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -69,11 +69,11 @@ function rt(n, o, r, l, a) {
|
|
|
69
69
|
let h = 0, x = 1 / 0, v = -1 / 0;
|
|
70
70
|
return {
|
|
71
71
|
type: "violin",
|
|
72
|
-
geoms: o.facet.reduce((e,
|
|
73
|
-
const
|
|
74
|
-
return e[
|
|
72
|
+
geoms: o.facet.reduce((e, g) => {
|
|
73
|
+
const p = $(g);
|
|
74
|
+
return e[p] = [], o.primary.forEach((y) => {
|
|
75
75
|
o.secondary.forEach((q) => {
|
|
76
|
-
const G = r.getColumnByGrouping([...
|
|
76
|
+
const G = r.getColumnByGrouping([...g, y, q], l.value);
|
|
77
77
|
if (!G.length)
|
|
78
78
|
return;
|
|
79
79
|
const c = new z(
|
|
@@ -84,7 +84,7 @@ function rt(n, o, r, l, a) {
|
|
|
84
84
|
y,
|
|
85
85
|
q
|
|
86
86
|
);
|
|
87
|
-
c.maxDensity > h && (h = c.maxDensity), c.boundsY.min < x && (x = c.boundsY.min), c.boundsY.max > v && (v = c.boundsY.max), e[
|
|
87
|
+
c.maxDensity > h && (h = c.maxDensity), c.boundsY.min < x && (x = c.boundsY.min), c.boundsY.max > v && (v = c.boundsY.max), e[p].push(c);
|
|
88
88
|
});
|
|
89
89
|
}), e;
|
|
90
90
|
}, {}),
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function getOutliersBounds
|
|
1
|
+
export declare function getOutliersBounds(values: number[], scale: 'linear' | 'log'): number[];
|
|
2
2
|
//# sourceMappingURL=getOutliersBounds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOutliersBounds.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"getOutliersBounds.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,YAa1E"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { quantileSorted as
|
|
2
|
-
function
|
|
3
|
-
const
|
|
4
|
-
return [
|
|
1
|
+
import { quantileSorted as l } from "../../node_modules/d3-array/src/quantile.js";
|
|
2
|
+
function m(u, t) {
|
|
3
|
+
const i = (o) => t === "log" ? Math.log10(o) : o, n = (o) => t === "log" ? Math.pow(10, o) : o, e = u.map(i).sort((o, g) => o - g), r = l(e, 0.25), c = l(e, 0.75), s = c - r, a = 1.5;
|
|
4
|
+
return [n(r - a * s), n(c + a * s)];
|
|
5
5
|
}
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
m as getOutliersBounds
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=getOutliersBounds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOutliersBounds.js","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"sourcesContent":["import {quantileSorted} from 'd3-array';\n\nexport function getOutliersBounds
|
|
1
|
+
{"version":3,"file":"getOutliersBounds.js","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"sourcesContent":["import { quantileSorted } from 'd3-array';\n\nexport function getOutliersBounds(values: number[], scale: 'linear' | 'log') {\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n const valuesSortedConverted = values\n .map(convertToScale)\n .sort((a, b) => a - b);\n\n const q1 = quantileSorted(valuesSortedConverted, 0.25) as number;\n const q3 = quantileSorted(valuesSortedConverted, 0.75) as number;\n const interQuantileRange = q3 - q1;\n\n const k = 1.5;\n return [convertFromScale(q1 - k * interQuantileRange), convertFromScale(q3 + k * interQuantileRange)];\n}\n"],"names":["getOutliersBounds","values","scale","convertToScale","v","convertFromScale","valuesSortedConverted","a","b","q1","quantileSorted","q3","interQuantileRange","k"],"mappings":";AAEO,SAASA,EAAkBC,GAAkBC,GAAyB;AACzE,QAAMC,IAAiB,CAACC,MAAeF,MAAU,QAAQ,KAAK,MAAME,CAAC,IAAIA,GACnEC,IAAmB,CAACD,MAAeF,MAAU,QAAQ,KAAK,IAAI,IAAIE,CAAC,IAAIA,GACvEE,IAAwBL,EACzB,IAAIE,CAAc,EAClB,KAAK,CAACI,GAAGC,MAAMD,IAAIC,CAAC,GAEnBC,IAAKC,EAAeJ,GAAuB,IAAI,GAC/CK,IAAKD,EAAeJ,GAAuB,IAAI,GAC/CM,IAAqBD,IAAKF,GAE1BI,IAAI;AACV,SAAO,CAACR,EAAiBI,IAAKI,IAAID,CAAkB,GAAGP,EAAiBM,IAAKE,IAAID,CAAkB,CAAC;AACxG;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextMeasurer as f } from "../../utils/TextMeasurer.js";
|
|
1
|
+
import { TextMeasurer as f } from "../../utils/TextMeasurer/TextMeasurer.js";
|
|
2
2
|
function x(o, l, h, u = 14) {
|
|
3
3
|
const i = new f(`600 ${u}px Manrope`), n = [];
|
|
4
4
|
o.split(new RegExp("(?=[_-])|(?<=[_-])")).forEach((r) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitTextByWidth.js","sources":["../../../src/discrete/utils/splitTextByWidth.ts"],"sourcesContent":["import {TextMeasurer} from '../../utils/TextMeasurer';\n\nfunction splitWord(word:string, startLineLength:number, maxLength:number, fontSize = 14) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n // \"_\" and \"-\" symbols have priority as separation bounds, if this is not enough split by single symbols\n const parts:string[] = [];\n word\n .split(/(?=[_-])|(?<=[_-])/)\n .forEach((part) => {\n const length = textMeasurer.getTextWidth(part);\n if (length > maxLength) {\n parts.push(...part.split(''));\n } else {\n parts.push(part);\n }\n });\n let currentLine = '';\n let currentLineLength = 0;\n let i = 0;\n let firstPart = '';\n while (currentLineLength <= startLineLength) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < startLineLength) {\n currentLine += parts[i];\n firstPart = currentLine;\n i++;\n }\n currentLineLength = nextLength;\n }\n currentLine = '';\n currentLineLength = 0;\n const lines:string[] = [];\n for (i; i < parts.length; i++) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < maxLength) {\n currentLine += parts[i];\n currentLineLength = nextLength;\n } else {\n lines.push(currentLine);\n currentLine = parts[i];\n currentLineLength = textMeasurer.getTextWidth(parts[i]);\n }\n }\n return {\n firstPart,\n lines,\n lastPart: currentLine,\n lastPartLength: currentLineLength\n };\n}\n\nexport function splitTextByWidth (text:string, maxWidth: number, fontSize: number) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n if (text.trim() === '') {\n return [];\n }\n if (textMeasurer.getTextWidth(text) <= maxWidth) {\n return [text];\n }\n const words = text.split(/\\s+/);\n const result:string[] = [];\n let currentLine = '';\n let currentLineLength = 0;\n for (let i = 0; i < words.length; i++) {\n const tempLine = `${currentLine} ${words[i]}`;\n const tempLineLength = textMeasurer.getTextWidth(tempLine);\n if (tempLineLength <= maxWidth) {\n currentLine = tempLine;\n currentLineLength = tempLineLength;\n } else {\n const wordLength = textMeasurer.getTextWidth(words[i]);\n if (wordLength > maxWidth) {\n const {\n firstPart,\n lines,\n lastPart,\n lastPartLength\n } = splitWord(words[i], maxWidth - currentLineLength, maxWidth, fontSize);\n result.push(`${currentLine} ${firstPart}`);\n result.push(...lines);\n currentLine = lastPart;\n currentLineLength = lastPartLength;\n } else {\n result.push(currentLine);\n currentLine = words[i];\n currentLineLength = wordLength;\n }\n }\n }\n result.push(currentLine);\n return result.filter((line) => {\n return line.length > 0;\n });\n}\n"],"names":["splitWord","word","startLineLength","maxLength","fontSize","textMeasurer","TextMeasurer","parts","part","currentLine","currentLineLength","i","firstPart","nextLength","lines","splitTextByWidth","text","maxWidth","words","result","tempLine","tempLineLength","wordLength","lastPart","lastPartLength","line"],"mappings":";AAEA,SAASA,EAAUC,GAAaC,GAAwBC,GAAkBC,IAAW,IAAI;AACrF,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY,GAE3DG,IAAiB,CAAA;AACvB,EAAAN,EACK,MAAM,WAAA,oBAAoB,GAC1B,QAAQ,CAACO,MAAS;AAEf,IADeH,EAAa,aAAaG,CAAI,IAChCL,IACTI,EAAM,KAAK,GAAGC,EAAK,MAAM,EAAE,CAAC,IAE5BD,EAAM,KAAKC,CAAI;AAAA,EAEvB,CAAC;AACL,MAAIC,IAAc,IACdC,IAAoB,GACpBC,IAAI,GACJC,IAAY;AAChB,SAAOF,KAAqBR,KAAiB;AACzC,UAAMW,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaX,MACbO,KAAeF,EAAMI,CAAC,GACtBC,IAAYH,GACZE,MAEJD,IAAoBG;AAAA,EACxB;AACA,EAAAJ,IAAc,IACdC,IAAoB;AACpB,QAAMI,IAAiB,CAAA;AACvB,OAAKH,GAAGA,IAAIJ,EAAM,QAAQI,KAAK;AAC3B,UAAME,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaV,KACbM,KAAeF,EAAMI,CAAC,GACtBD,IAAoBG,MAEpBC,EAAM,KAAKL,CAAW,GACtBA,IAAcF,EAAMI,CAAC,GACrBD,IAAoBL,EAAa,aAAaE,EAAMI,CAAC,CAAC;AAAA,EAE9D;AACA,SAAO;AAAA,IACH,WAAAC;AAAA,IACA,OAAAE;AAAA,IACA,UAAUL;AAAA,IACV,gBAAgBC;AAAA,EAAA;AAExB;AAEO,SAASK,EAAkBC,GAAaC,GAAkBb,GAAkB;AAC/E,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY;AACjE,MAAIY,EAAK,KAAA,MAAW;AAChB,WAAO,CAAA;AAEX,MAAIX,EAAa,aAAaW,CAAI,KAAKC;AACnC,WAAO,CAACD,CAAI;AAEhB,QAAME,IAAQF,EAAK,MAAM,KAAK,GACxBG,IAAkB,CAAA;AACxB,MAAIV,IAAc,IACdC,IAAoB;AACxB,WAASC,IAAI,GAAGA,IAAIO,EAAM,QAAQP,KAAK;AACnC,UAAMS,IAAW,GAAGX,CAAW,IAAIS,EAAMP,CAAC,CAAC,IACrCU,IAAiBhB,EAAa,aAAae,CAAQ;AACzD,QAAIC,KAAkBJ;AAClB,MAAAR,IAAcW,GACdV,IAAoBW;AAAA,SACjB;AACH,YAAMC,IAAajB,EAAa,aAAaa,EAAMP,CAAC,CAAC;AACrD,UAAIW,IAAaL,GAAU;AACvB,cAAM;AAAA,UACF,WAAAL;AAAA,UACA,OAAAE;AAAA,UACA,UAAAS;AAAA,UACA,gBAAAC;AAAA,QAAA,IACAxB,EAAUkB,EAAMP,CAAC,GAAGM,IAAWP,GAAmBO,GAAUb,CAAQ;AACxE,QAAAe,EAAO,KAAK,GAAGV,CAAW,IAAIG,CAAS,EAAE,GACzCO,EAAO,KAAK,GAAGL,CAAK,GACpBL,IAAcc,GACdb,IAAoBc;AAAA,MACxB;AACI,QAAAL,EAAO,KAAKV,CAAW,GACvBA,IAAcS,EAAMP,CAAC,GACrBD,IAAoBY;AAAA,IAE5B;AAAA,EACJ;AACA,SAAAH,EAAO,KAAKV,CAAW,GAChBU,EAAO,OAAO,CAACM,MACXA,EAAK,SAAS,CACxB;AACL;"}
|
|
1
|
+
{"version":3,"file":"splitTextByWidth.js","sources":["../../../src/discrete/utils/splitTextByWidth.ts"],"sourcesContent":["import { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\n\nfunction splitWord(word:string, startLineLength:number, maxLength:number, fontSize = 14) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n // \"_\" and \"-\" symbols have priority as separation bounds, if this is not enough split by single symbols\n const parts:string[] = [];\n word\n .split(/(?=[_-])|(?<=[_-])/)\n .forEach((part) => {\n const length = textMeasurer.getTextWidth(part);\n if (length > maxLength) {\n parts.push(...part.split(''));\n } else {\n parts.push(part);\n }\n });\n let currentLine = '';\n let currentLineLength = 0;\n let i = 0;\n let firstPart = '';\n while (currentLineLength <= startLineLength) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < startLineLength) {\n currentLine += parts[i];\n firstPart = currentLine;\n i++;\n }\n currentLineLength = nextLength;\n }\n currentLine = '';\n currentLineLength = 0;\n const lines:string[] = [];\n for (i; i < parts.length; i++) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < maxLength) {\n currentLine += parts[i];\n currentLineLength = nextLength;\n } else {\n lines.push(currentLine);\n currentLine = parts[i];\n currentLineLength = textMeasurer.getTextWidth(parts[i]);\n }\n }\n return {\n firstPart,\n lines,\n lastPart: currentLine,\n lastPartLength: currentLineLength\n };\n}\n\nexport function splitTextByWidth (text:string, maxWidth: number, fontSize: number) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n if (text.trim() === '') {\n return [];\n }\n if (textMeasurer.getTextWidth(text) <= maxWidth) {\n return [text];\n }\n const words = text.split(/\\s+/);\n const result:string[] = [];\n let currentLine = '';\n let currentLineLength = 0;\n for (let i = 0; i < words.length; i++) {\n const tempLine = `${currentLine} ${words[i]}`;\n const tempLineLength = textMeasurer.getTextWidth(tempLine);\n if (tempLineLength <= maxWidth) {\n currentLine = tempLine;\n currentLineLength = tempLineLength;\n } else {\n const wordLength = textMeasurer.getTextWidth(words[i]);\n if (wordLength > maxWidth) {\n const {\n firstPart,\n lines,\n lastPart,\n lastPartLength\n } = splitWord(words[i], maxWidth - currentLineLength, maxWidth, fontSize);\n result.push(`${currentLine} ${firstPart}`);\n result.push(...lines);\n currentLine = lastPart;\n currentLineLength = lastPartLength;\n } else {\n result.push(currentLine);\n currentLine = words[i];\n currentLineLength = wordLength;\n }\n }\n }\n result.push(currentLine);\n return result.filter((line) => {\n return line.length > 0;\n });\n}\n"],"names":["splitWord","word","startLineLength","maxLength","fontSize","textMeasurer","TextMeasurer","parts","part","currentLine","currentLineLength","i","firstPart","nextLength","lines","splitTextByWidth","text","maxWidth","words","result","tempLine","tempLineLength","wordLength","lastPart","lastPartLength","line"],"mappings":";AAEA,SAASA,EAAUC,GAAaC,GAAwBC,GAAkBC,IAAW,IAAI;AACrF,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY,GAE3DG,IAAiB,CAAA;AACvB,EAAAN,EACK,MAAM,WAAA,oBAAoB,GAC1B,QAAQ,CAACO,MAAS;AAEf,IADeH,EAAa,aAAaG,CAAI,IAChCL,IACTI,EAAM,KAAK,GAAGC,EAAK,MAAM,EAAE,CAAC,IAE5BD,EAAM,KAAKC,CAAI;AAAA,EAEvB,CAAC;AACL,MAAIC,IAAc,IACdC,IAAoB,GACpBC,IAAI,GACJC,IAAY;AAChB,SAAOF,KAAqBR,KAAiB;AACzC,UAAMW,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaX,MACbO,KAAeF,EAAMI,CAAC,GACtBC,IAAYH,GACZE,MAEJD,IAAoBG;AAAA,EACxB;AACA,EAAAJ,IAAc,IACdC,IAAoB;AACpB,QAAMI,IAAiB,CAAA;AACvB,OAAKH,GAAGA,IAAIJ,EAAM,QAAQI,KAAK;AAC3B,UAAME,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaV,KACbM,KAAeF,EAAMI,CAAC,GACtBD,IAAoBG,MAEpBC,EAAM,KAAKL,CAAW,GACtBA,IAAcF,EAAMI,CAAC,GACrBD,IAAoBL,EAAa,aAAaE,EAAMI,CAAC,CAAC;AAAA,EAE9D;AACA,SAAO;AAAA,IACH,WAAAC;AAAA,IACA,OAAAE;AAAA,IACA,UAAUL;AAAA,IACV,gBAAgBC;AAAA,EAAA;AAExB;AAEO,SAASK,EAAkBC,GAAaC,GAAkBb,GAAkB;AAC/E,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY;AACjE,MAAIY,EAAK,KAAA,MAAW;AAChB,WAAO,CAAA;AAEX,MAAIX,EAAa,aAAaW,CAAI,KAAKC;AACnC,WAAO,CAACD,CAAI;AAEhB,QAAME,IAAQF,EAAK,MAAM,KAAK,GACxBG,IAAkB,CAAA;AACxB,MAAIV,IAAc,IACdC,IAAoB;AACxB,WAASC,IAAI,GAAGA,IAAIO,EAAM,QAAQP,KAAK;AACnC,UAAMS,IAAW,GAAGX,CAAW,IAAIS,EAAMP,CAAC,CAAC,IACrCU,IAAiBhB,EAAa,aAAae,CAAQ;AACzD,QAAIC,KAAkBJ;AAClB,MAAAR,IAAcW,GACdV,IAAoBW;AAAA,SACjB;AACH,YAAMC,IAAajB,EAAa,aAAaa,EAAMP,CAAC,CAAC;AACrD,UAAIW,IAAaL,GAAU;AACvB,cAAM;AAAA,UACF,WAAAL;AAAA,UACA,OAAAE;AAAA,UACA,UAAAS;AAAA,UACA,gBAAAC;AAAA,QAAA,IACAxB,EAAUkB,EAAMP,CAAC,GAAGM,IAAWP,GAAmBO,GAAUb,CAAQ;AACxE,QAAAe,EAAO,KAAK,GAAGV,CAAW,IAAIG,CAAS,EAAE,GACzCO,EAAO,KAAK,GAAGL,CAAK,GACpBL,IAAcc,GACdb,IAAoBc;AAAA,MACxB;AACI,QAAAL,EAAO,KAAKV,CAAW,GACvBA,IAAcS,EAAMP,CAAC,GACrBD,IAAoBY;AAAA,IAE5B;AAAA,EACJ;AACA,SAAAH,EAAO,KAAKV,CAAW,GAChBU,EAAO,OAAO,CAACM,MACXA,EAAK,SAAS,CACxB;AACL;"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { AnnotationColorScales, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartSizes, ChartsScales, DendrogramAesScales, LabelAngles, Margins } from './components/types';
|
|
2
|
-
import { GroupedCellsData } from './getCells';
|
|
3
|
-
import { DendrogramsData } from './getDendrograms';
|
|
4
|
-
import { HeatmapSettingsImpl } from './HeatmapSettingsImpl';
|
|
5
|
-
import { ColumnName, DataValue } from '../types';
|
|
6
1
|
import { ScaleLinear, ScaleOrdinal } from 'd3-scale';
|
|
7
2
|
import { ReactElement } from 'react';
|
|
8
3
|
import { Root } from 'react-dom/client';
|
|
9
4
|
import { LegendData } from '../common/types';
|
|
5
|
+
import { DataFrame } from '../DataFrame';
|
|
6
|
+
import { ColumnName, DataValue } from '../types';
|
|
7
|
+
import { AnnotationColorScales, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartSizes, ChartsScales, DendrogramAesScales, LabelAngles, Margins } from './components/types';
|
|
8
|
+
import { GroupedCellsData } from './getCells';
|
|
9
|
+
import { DendrogramsData } from './getDendrograms';
|
|
10
|
+
import { HeatmapSettingsImpl } from './HeatmapSettingsImpl';
|
|
10
11
|
declare class ChartRenderer {
|
|
11
12
|
reactRoot: Root | null;
|
|
12
13
|
parentNode: HTMLElement | null;
|
|
@@ -40,7 +41,7 @@ declare class ChartRenderer {
|
|
|
40
41
|
updateAesScale(valueType: 'discrete' | 'continuous', valueExtent: [number, number], aes: HeatmapSettingsImpl['aes'], annotations: HeatmapSettingsImpl['annotations'], groupedCellsData: GroupedCellsData, cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization']): void;
|
|
41
42
|
updateDendrogram(facetKeys: string[], xGroupKeys: string[], yGroupKeys: string[], groups: GroupedCellsData['facets'], dendrogramsData: DendrogramsData, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY']): void;
|
|
42
43
|
updateDendrogramAesScales(inheritedAes: HeatmapSettingsImpl['inheritedDendrogramAes']): void;
|
|
43
|
-
render(settingsId: string, chartSettings: HeatmapSettingsImpl['chartSettings'], facetSettings: HeatmapSettingsImpl['facetSettings'], aes: HeatmapSettingsImpl['aes'], groupedCellsData: GroupedCellsData, annotations: HeatmapSettingsImpl['annotations'], valueColumn: ColumnName, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY'], dendrogramsData: DendrogramsData, inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'], cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization'], onTooltipHintSwitch: (v: boolean) => void): void;
|
|
44
|
+
render(dataFrame: DataFrame, settingsId: string, chartSettings: HeatmapSettingsImpl['chartSettings'], facetSettings: HeatmapSettingsImpl['facetSettings'], aes: HeatmapSettingsImpl['aes'], groupedCellsData: GroupedCellsData, annotations: HeatmapSettingsImpl['annotations'], valueColumn: ColumnName, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY'], dendrogramsData: DendrogramsData, inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'], cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization'], onTooltipHintSwitch: (v: boolean) => void): void;
|
|
44
45
|
renderError(message: string): void;
|
|
45
46
|
}
|
|
46
47
|
export default ChartRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"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"}
|