@milaboratories/graph-maker 1.1.138 → 1.1.140
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/GraphMaker/components/Chart.vue.d.ts.map +1 -1
- package/dist/GraphMaker/components/Chart.vue.js +1 -0
- package/dist/GraphMaker/components/Chart.vue.js.map +1 -1
- package/dist/GraphMaker/components/LassoControls/index.vue.js +15 -13
- package/dist/GraphMaker/components/LassoControls/index.vue.js.map +1 -1
- package/dist/GraphMaker/dataBindAes.d.ts +5 -5
- package/dist/GraphMaker/dataBindAes.d.ts.map +1 -1
- package/dist/GraphMaker/dataBindAes.js +52 -49
- package/dist/GraphMaker/dataBindAes.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/AesSelector.vue.js +14 -14
- package/dist/GraphMaker/forms/LayersForm/AesSelector.vue.js.map +1 -1
- package/dist/GraphMaker/index.vue.d.ts.map +1 -1
- package/dist/GraphMaker/index.vue.js +125 -124
- package/dist/GraphMaker/index.vue.js.map +1 -1
- package/dist/GraphMaker/types.d.ts +1 -1
- package/dist/GraphMaker/types.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +6 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.d.ts +4 -8
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts +15 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +12 -3
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +21 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +10 -6
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +31 -13
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +56 -62
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +29 -13
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +20 -19
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.d.ts.map +1 -1
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.js +57 -54
- package/dist/GraphMaker/utils/loadUniqueValuesToSave.js.map +1 -1
- package/dist/lib.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/AbstractChart.js +5 -5
- package/dist/node_modules/@milaboratories/miplots4/dist/AbstractChart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/DataFrame.js +95 -72
- package/dist/node_modules/@milaboratories/miplots4/dist/DataFrame.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +8 -5
- package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js +124 -122
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js +72 -91
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/ChartsGroup.js +43 -41
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js +28 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCellTooltip.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js +94 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getGroupedCellsData.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js +38 -34
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/common/Error.js +4 -22
- package/dist/node_modules/@milaboratories/miplots4/dist/common/Error.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/common/Legend.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/common/Tooltip.js +11 -11
- package/dist/node_modules/@milaboratories/miplots4/dist/common/Tooltip.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/common/useDataFrame.js +20 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/common/useDataFrame.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/ChartRenderer.js +181 -181
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/DendroSettingsImpl.js +2 -2
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/DendroSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Chart.js +45 -45
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Heatmap.js +27 -27
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Heatmap.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/Legend.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/LinksGroup.js +18 -18
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/LinksGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/NodesGroup.js +36 -36
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/components/NodesGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHeatmapData.js +45 -41
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHeatmapData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHierarchyData.js +33 -33
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/getHierarchyData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/index.js +90 -93
- package/dist/node_modules/@milaboratories/miplots4/dist/dendro/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/ChartRenderer.js +199 -198
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +17 -17
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/BoxElement.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +102 -99
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/bar.js +31 -36
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/bar.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/binnedDots.js +62 -74
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/binnedDots.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/boxes.js +52 -53
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/boxes.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/dots.js +32 -32
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/dots.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/lines.js +7 -6
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/lines.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/logo.js +23 -23
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/logo.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/pairedPoints.js +63 -63
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/pairedPoints.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/sina.js +60 -64
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/sina.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js +23 -23
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/utils/getOutliersBounds.js +5 -5
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/utils/getOutliersBounds.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/utils/splitTextByWidth.js +13 -13
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/utils/splitTextByWidth.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js +258 -256
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/HeatmapSettingsImpl.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/Annotation.js +81 -79
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js +140 -134
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js +17 -17
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js +99 -95
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/getCells.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js +32 -31
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/ChartRenderer.js +143 -142
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/HistogramSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/components/Chart.js +30 -30
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/components/ChartsGroup.js +7 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/getHistogramData.js +53 -54
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/index.js +62 -58
- package/dist/node_modules/@milaboratories/miplots4/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +7 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js +6 -12
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-shape/src/line.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/kdbush/index.js +148 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/kdbush/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ChartRenderer.js +172 -168
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/Chart.js +11 -11
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartAxisTitles.js +30 -29
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartLayersData.js +135 -153
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartLayersData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTooltip.js +35 -32
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTrendsData.js +27 -27
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartsGroup.js +14 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/constants.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/dots.js +24 -25
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/dots.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js +13 -13
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/index.js +69 -76
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/linearRegression.js +85 -83
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/linearRegression.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/createAesGetter.js +20 -20
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/createAesGetter.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/createLegendInfo.js +50 -38
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/formatColumnValue.js +11 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/getVisibleLabels.js +46 -56
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/sortDotsByGrouping.js +18 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/utils/sortDotsByGrouping.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js +223 -205
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/SettingsImpl.js +26 -26
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/colors.js +42 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/colors.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js +84 -81
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/SVGLayer.js +11 -11
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/UpperSVG.js +15 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/index.js +97 -118
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js +3 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/common.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/dendro.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/dendro.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/heatmap.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/heatmap.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/histogram.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/histogram.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot-umap.js +23 -17
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot.js +25 -19
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer/TextMeasurer.js +39 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer/charToWidth.json.js +101 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/arrangeLegendParts.js +4 -4
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/arrangeLegendParts.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/arraysAreDifferent.js +7 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/arraysAreDifferent.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/getLegendWidth.js +3 -3
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/getLegendWidth.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +1111 -1097
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCells.js +0 -91
- package/dist/node_modules/@milaboratories/miplots4/dist/bubble/getCells.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/add.js +0 -30
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/cover.js +0 -29
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/data.js +0 -12
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/extent.js +0 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/find.js +0 -26
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/quad.js +0 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/remove.js +0 -21
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/root.js +0 -7
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/size.js +0 -12
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/visit.js +0 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/x.js +0 -11
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/y.js +0 -11
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer.js +0 -24
- package/dist/node_modules/@milaboratories/miplots4/dist/utils/TextMeasurer.js.map +0 -1
package/dist/node_modules/@milaboratories/miplots4/dist/heatmap/components/ChartsGroup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartsGroup.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/components/ChartsGroup.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"ChartsGroup.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/components/ChartsGroup.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { ChartsTitle } from '../../common/ChartsTitle';\nimport { ErrorBoundary } from '../../common/ErrorBoundary';\nimport fonts from '../../common/fonts';\nimport { Legend } from '../../common/Legend';\nimport { useTooltip } from '../../common/Tooltip';\nimport type { LegendData } from '../../common/types';\nimport { LEGEND_OFFSET } from '../constants';\nimport type { Cell, GroupedCellsData } from '../getCells';\nimport type { HeatmapSettingsImpl } from '../HeatmapSettingsImpl';\nimport { Chart } from './Chart';\nimport type {\n AnnotationColorScales, AnnotationTooltipData, CaptionsSizes,\n ChartDendrograms, ChartDimensionsData, ChartSizes, ChartsScales, DendrogramAesScales, LabelAngles, Margins\n} from './types';\n\nexport function ChartsGroup({\n margins,\n captionsSizes,\n settingsId,\n chartSettings,\n chartSizes,\n chartsDimensions,\n facetKeys,\n facetSettings,\n xGroupKeys,\n yGroupKeys,\n scales,\n colorScale,\n groupedCells,\n cellsMeta,\n step,\n annotations,\n annotationColorScales,\n legend,\n aes,\n dendrograms,\n dendrogramAesScales,\n columnsCount,\n labelAngles,\n onTooltipHintSwitch\n}: {\n margins: Margins;\n captionsSizes: CaptionsSizes;\n chartSettings: HeatmapSettingsImpl['chartSettings'];\n facetSettings: HeatmapSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n chartsDimensions: Record<string, ChartDimensionsData>;\n scales: ChartsScales;\n facetKeys: string[];\n xGroupKeys: string[];\n yGroupKeys: string[];\n settingsId: string;\n colorScale: (value:unknown) => string;\n annotationColorScales: AnnotationColorScales;\n groupedCells: GroupedCellsData['facets'];\n cellsMeta: GroupedCellsData['meta'];\n annotations: HeatmapSettingsImpl['annotations'];\n step: {\n x: Record<string, number>;\n y: Record<string, number>;\n };\n legend: LegendData;\n aes: HeatmapSettingsImpl['aes'];\n dendrograms: Record<string, ChartDendrograms>;\n dendrogramAesScales: DendrogramAesScales;\n columnsCount: number;\n labelAngles: LabelAngles;\n onTooltipHintSwitch: (v:boolean) => void;\n}) {\n const [tooltipsContainer, setTooltipsContainer] = useState<SVGGElement>();\n const tooltipsData = useTooltip<Cell|AnnotationTooltipData>(onTooltipHintSwitch);\n const tooltipsRef = useRef<SVGGElement>(null);\n useEffect(() => {\n if (tooltipsRef.current) {\n setTooltipsContainer(tooltipsRef.current);\n }\n }, []);\n\n const leftTopChartPadding = chartsDimensions[facetKeys[0]].padding;\n const rightTopChartPadding = chartsDimensions[facetKeys[columnsCount - 1]].padding;\n\n const legendLeft = margins.left + chartSizes.chartsWidth + LEGEND_OFFSET;\n const legendTop = margins.top + leftTopChartPadding.top;\n\n return (\n <ErrorBoundary dataId={settingsId}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${chartSizes.totalWidth} ${chartSizes.totalHeight}`}\n width={chartSizes.totalWidth}\n height={chartSizes.totalHeight}\n fontFamily=\"Manrope\"\n >\n <defs>{fonts}</defs>\n <g transform={`translate(${margins.left},${margins.top})`}>\n <ChartsTitle\n title={[chartSettings.title.name]}\n show={chartSettings.title.show}\n position={chartSettings.title.position}\n leftPadding={leftTopChartPadding.left}\n rightPadding={rightTopChartPadding.right}\n chartsWidth={chartSizes.chartsWidth}\n />\n {facetKeys.map(facetKey => {\n const {cells, xKeysByGroups, yKeysByGroups} = groupedCells[facetKey];\n return (\n <Chart\n dendrograms={dendrograms[facetKey]}\n captionsSizes={captionsSizes}\n key={facetKey}\n facetKey={facetKey}\n dimensions={chartsDimensions[facetKey]}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n xKeysByGroups={facetSettings.sharedX ? cellsMeta.xKeysByGroups : xKeysByGroups}\n yKeysByGroups={facetSettings.sharedY ? cellsMeta.yKeysByGroups : yKeysByGroups}\n sharedX={facetSettings.sharedX}\n sharedY={facetSettings.sharedY}\n scales={{x: scales.x[facetKey], y: scales.y[facetKey]}}\n cells={cells}\n cellsMeta={cellsMeta}\n stepX={step.x[facetKey]}\n stepY={step.y[facetKey]}\n colorScale={colorScale}\n chartSettings={chartSettings}\n aes={aes}\n annotations={annotations}\n annotationColorScales={annotationColorScales}\n dendrogramAesScales={dendrogramAesScales}\n labelAngles={labelAngles}\n margins={margins}\n chartSizes={chartSizes}\n tooltipsContainer={tooltipsContainer}\n tooltipsData={tooltipsData}\n />\n );\n })}\n </g>\n <g transform={`translate(${legendLeft},${legendTop})`}>\n <Legend legendData={legend} />\n </g>\n <g ref={tooltipsRef} style={{outline: 'none'}} />\n </svg>\n </ErrorBoundary>\n );\n}\n"],"names":["ChartsGroup","margins","captionsSizes","settingsId","chartSettings","chartSizes","chartsDimensions","facetKeys","facetSettings","xGroupKeys","yGroupKeys","scales","colorScale","groupedCells","cellsMeta","step","annotations","annotationColorScales","legend","aes","dendrograms","dendrogramAesScales","columnsCount","labelAngles","onTooltipHintSwitch","tooltipsContainer","setTooltipsContainer","useState","tooltipsData","useTooltip","tooltipsRef","useRef","useEffect","leftTopChartPadding","rightTopChartPadding","legendLeft","LEGEND_OFFSET","legendTop","jsx","ErrorBoundary","jsxs","fonts","ChartsTitle","facetKey","cells","xKeysByGroups","yKeysByGroups","Chart","Legend"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
const
|
|
6
|
-
function I(
|
|
7
|
-
const n =
|
|
8
|
-
return n === void 0 || y === void 0 || n === 0 ? (
|
|
1
|
+
import v from "../node_modules/lodash/lodash.js";
|
|
2
|
+
import X from "../node_modules/d3-array/src/deviation.js";
|
|
3
|
+
import _ from "../node_modules/d3-array/src/mean.js";
|
|
4
|
+
import Y from "../node_modules/d3-array/src/extent.js";
|
|
5
|
+
const Z = 5e5;
|
|
6
|
+
function I(t) {
|
|
7
|
+
const n = X(t), y = _(t);
|
|
8
|
+
return n === void 0 || y === void 0 || n === 0 ? (c) => c : (c) => (c - y) / n;
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
const n =
|
|
12
|
-
return n === void 0 || y === void 0 ||
|
|
10
|
+
function J(t) {
|
|
11
|
+
const n = _(t), [y, c] = Y(t);
|
|
12
|
+
return n === void 0 || y === void 0 || c === void 0 || c === y ? (f) => f : (f) => (f - n) / (c - y);
|
|
13
13
|
}
|
|
14
|
-
function
|
|
15
|
-
return
|
|
14
|
+
function P(t, n) {
|
|
15
|
+
return t === "standardScaling" ? I(n) : t === "meanNormalization" ? J(n) : (y) => y;
|
|
16
16
|
}
|
|
17
|
-
function
|
|
18
|
-
if (!
|
|
17
|
+
function b(t) {
|
|
18
|
+
if (!t.length)
|
|
19
19
|
return [];
|
|
20
20
|
let n = [[]];
|
|
21
|
-
return
|
|
22
|
-
const
|
|
23
|
-
y.forEach((
|
|
24
|
-
|
|
25
|
-
}), n =
|
|
21
|
+
return t.forEach((y) => {
|
|
22
|
+
const c = [];
|
|
23
|
+
y.forEach((f) => {
|
|
24
|
+
c.push(...n.map((h) => [...h, f]));
|
|
25
|
+
}), n = c;
|
|
26
26
|
}), n;
|
|
27
27
|
}
|
|
28
|
-
function
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const T =
|
|
28
|
+
function ue(t, n, y, c, f, h, g, L, z, N, B, O) {
|
|
29
|
+
const D = t.columnNames.length ? t.getColumn(t.columnNames[0]).length : 0;
|
|
30
|
+
D > Z && console.error(`Too many cells for graph rendering (${D})`);
|
|
31
|
+
const T = f.length ? f.map((e) => t.getColumnCategories(e.value)) : [["null"]], k = h.length ? h.map((e) => t.getColumnCategories(e.value)) : [["null"]], A = g.length ? g.map((e) => t.getColumnCategories(e.value)) : [["null"]], $ = b(T), j = b(k), w = b(A), M = $.map((e) => e.join("_")), E = j.map((e) => e.join("_")), G = w.map((e) => e.join("_")), a = {
|
|
32
32
|
meta: {
|
|
33
|
-
facetKeys:
|
|
34
|
-
xGroupKeys:
|
|
35
|
-
yGroupKeys:
|
|
33
|
+
facetKeys: M,
|
|
34
|
+
xGroupKeys: E,
|
|
35
|
+
yGroupKeys: G,
|
|
36
36
|
xKeysByGroups: {},
|
|
37
37
|
yKeysByGroups: {},
|
|
38
38
|
xLabels: {},
|
|
@@ -41,92 +41,96 @@ function oe(l, n, y, m, i, v, h, j, z, N, B, O) {
|
|
|
41
41
|
yGroupLabels: {},
|
|
42
42
|
xDataByKeys: {},
|
|
43
43
|
yDataByKeys: {},
|
|
44
|
-
facetKeyValues:
|
|
45
|
-
xGroupKeyValues:
|
|
46
|
-
yGroupKeyValues:
|
|
44
|
+
facetKeyValues: M.reduce((e, l, o) => (e[l] = $[o], e), {}),
|
|
45
|
+
xGroupKeyValues: E.reduce((e, l, o) => (e[l] = j[o], e), {}),
|
|
46
|
+
yGroupKeyValues: G.reduce((e, l, o) => (e[l] = w[o], e), {}),
|
|
47
47
|
valueExtent: [1 / 0, -1 / 0]
|
|
48
48
|
},
|
|
49
49
|
facets: {}
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
a.meta.xGroupLabels[o] =
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}), a.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
50
|
+
}, q = n.valueLabels ?? n.value, S = y.valueLabels ?? y.value, F = L.filter((e) => e.axis === "x").map((e) => e.valueColumn.value), H = L.filter((e) => e.axis === "y").map((e) => e.valueColumn.value), Q = Object.values(z ?? {}).map((e) => e.value), R = Object.values(N ?? {}).map((e) => e.value), U = v.uniq([...F, ...Q, q]), W = v.uniq([...H, ...R, S]);
|
|
51
|
+
for (let e = 0; e < t.rowsCount; e++) {
|
|
52
|
+
const l = f.length ? f.map((u) => t.getColumnValue(u.value, e)).join("_") : "null", o = h.length ? h.map((u) => t.getColumnValue(u.value, e)).join("_") : "null", d = g.length ? g.map((u) => t.getColumnValue(u.value, e)).join("_") : "null", V = h.length ? h.map((u) => t.getColumnValue(u.valueLabels ?? u.value, e)).join(", ") : "", C = g.length ? g.map((u) => t.getColumnValue(u.valueLabels ?? u.value, e)).join(", ") : "";
|
|
53
|
+
a.meta.xGroupLabels[o] = V, a.meta.yGroupLabels[o] = C;
|
|
54
|
+
const s = String(t.getColumnValue(n.value, e)), r = String(t.getColumnValue(y.value, e)), i = t.getColumnValue(c.value, e) ?? O;
|
|
55
|
+
if (s === "null" || r === "null" || i === null)
|
|
56
|
+
continue;
|
|
57
|
+
if (a.facets[l] || (a.facets[l] = {
|
|
58
|
+
xKeys: [],
|
|
59
|
+
yKeys: [],
|
|
60
|
+
xKeysByGroups: {},
|
|
61
|
+
yKeysByGroups: {},
|
|
62
|
+
cells: {}
|
|
63
|
+
}), a.facets[l].xKeysByGroups[o] || (a.facets[l].xKeysByGroups[o] = []), a.facets[l].yKeysByGroups[d] || (a.facets[l].yKeysByGroups[d] = []), a.facets[l].xKeys.push(s), a.facets[l].yKeys.push(r), a.facets[l].xKeysByGroups[o].push(s), a.facets[l].yKeysByGroups[d].push(r), a.facets[l].cells[s] || (a.facets[l].cells[s] = {}), a.meta.valueExtent[0] = Math.min(i, a.meta.valueExtent[0]), a.meta.valueExtent[1] = Math.max(i, a.meta.valueExtent[1]), a.facets[l].cells[s][r])
|
|
64
|
+
throw Error(`More than 1 value for x=${s}, y=${r}`);
|
|
65
|
+
const x = t.getColumnValue(q, e);
|
|
66
|
+
if (a.meta.xLabels[s] && String(x) !== a.meta.xLabels[s])
|
|
67
|
+
throw Error(`More than 1 x-label value for x=${s}`);
|
|
68
|
+
const p = t.getColumnValue(S, e);
|
|
69
|
+
if (a.meta.yLabels[r] && String(p) !== a.meta.yLabels[r])
|
|
70
|
+
throw Error(`More than 1 y-label value for y=${r}`);
|
|
71
|
+
a.meta.xLabels[s] = String(x), a.meta.yLabels[r] = String(p), U.forEach((u) => {
|
|
72
|
+
const m = typeof a.meta.xDataByKeys[u] < "u", K = m && typeof a.meta.xDataByKeys[u][s] < "u";
|
|
73
|
+
if (m || (a.meta.xDataByKeys[u] = {}), K && a.meta.xDataByKeys[u][s] !== t.getColumnValue(u, e))
|
|
74
|
+
throw Error(`More than 1 value for x = ${s} and column = ${u}`);
|
|
75
|
+
K || (a.meta.xDataByKeys[u][s] = t.getColumnValue(u, e));
|
|
76
|
+
}), W.forEach((u) => {
|
|
77
|
+
const m = typeof a.meta.yDataByKeys[u] < "u", K = m && typeof a.meta.yDataByKeys[u][r] < "u";
|
|
78
|
+
if (m || (a.meta.yDataByKeys[u] = {}), K && a.meta.yDataByKeys[u][r] !== t.getColumnValue(u, e))
|
|
79
|
+
throw Error(`More than 1 value for y = ${r} and column = ${u}`);
|
|
80
|
+
K || (a.meta.yDataByKeys[u][r] = t.getColumnValue(u, e));
|
|
81
|
+
}), a.facets[l].cells[s][r] = {
|
|
82
|
+
isCell: !0,
|
|
83
|
+
idx: e,
|
|
84
|
+
id: `${s}_${r}`,
|
|
85
|
+
x: s,
|
|
86
|
+
y: r,
|
|
87
|
+
value: i,
|
|
88
|
+
normalizedValue: i
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (a.meta.facetKeys = a.meta.facetKeys.filter((e) => a.facets[e]), a.meta.facetKeys.forEach((e) => {
|
|
92
|
+
const l = a.facets[e];
|
|
93
|
+
l.xKeys = v.uniq(l.xKeys), l.yKeys = v.uniq(l.yKeys), E.forEach((o) => {
|
|
94
|
+
a.facets[e].xKeysByGroups[o] = v.uniq(
|
|
91
95
|
a.facets[e].xKeysByGroups[o]
|
|
92
96
|
);
|
|
93
|
-
}),
|
|
94
|
-
a.facets[e].yKeysByGroups[o] =
|
|
97
|
+
}), G.forEach((o) => {
|
|
98
|
+
a.facets[e].yKeysByGroups[o] = v.uniq(
|
|
95
99
|
a.facets[e].yKeysByGroups[o]
|
|
96
100
|
);
|
|
97
101
|
});
|
|
98
102
|
}), B) {
|
|
99
103
|
const e = [1 / 0, -1 / 0];
|
|
100
|
-
a.meta.facetKeys.forEach((
|
|
101
|
-
const { xKeys: o, yKeys: d, cells:
|
|
102
|
-
var
|
|
103
|
-
return (
|
|
104
|
-
} : (
|
|
105
|
-
var
|
|
106
|
-
return (
|
|
104
|
+
a.meta.facetKeys.forEach((l) => {
|
|
105
|
+
const { xKeys: o, yKeys: d, cells: V } = a.facets[l], C = B.direction === "row" ? o : d, s = B.direction === "row" ? d : o, r = B.direction === "row" ? (i, x) => {
|
|
106
|
+
var p;
|
|
107
|
+
return (p = V[i]) == null ? void 0 : p[x];
|
|
108
|
+
} : (i, x) => {
|
|
109
|
+
var p;
|
|
110
|
+
return (p = V[x]) == null ? void 0 : p[i];
|
|
107
111
|
};
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
var
|
|
112
|
-
const
|
|
113
|
-
|
|
112
|
+
s.forEach((i) => {
|
|
113
|
+
const x = [];
|
|
114
|
+
C.forEach((u) => {
|
|
115
|
+
var m;
|
|
116
|
+
const K = (m = r(u, i)) == null ? void 0 : m.value;
|
|
117
|
+
K !== void 0 && x.push(K);
|
|
114
118
|
});
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
+
const p = P(B.method, x);
|
|
120
|
+
C.forEach((u) => {
|
|
121
|
+
const m = r(u, i);
|
|
122
|
+
m !== void 0 && (m.normalizedValue = p(m.value), e[0] = Math.min(m.normalizedValue, e[0]), e[1] = Math.max(m.normalizedValue, e[1]));
|
|
119
123
|
});
|
|
120
124
|
});
|
|
121
125
|
}), a.meta.valueExtent = e;
|
|
122
126
|
}
|
|
123
|
-
return a.meta.xKeysByGroups =
|
|
124
|
-
|
|
125
|
-
), e), {}), a.meta.yKeysByGroups =
|
|
126
|
-
|
|
127
|
+
return a.meta.xKeysByGroups = E.reduce((e, l) => (e[l] = v.uniq(
|
|
128
|
+
v.flatten(a.meta.facetKeys.map((o) => a.facets[o].xKeysByGroups[l]))
|
|
129
|
+
), e), {}), a.meta.yKeysByGroups = G.reduce((e, l) => (e[l] = v.uniq(
|
|
130
|
+
v.flatten(a.meta.facetKeys.map((o) => a.facets[o].yKeysByGroups[l]))
|
|
127
131
|
), e), {}), a.meta.valueExtent[0] === 1 / 0 && (a.meta.valueExtent[0] = 0), a.meta.valueExtent[1] === -1 / 0 && (a.meta.valueExtent[1] = 0), a;
|
|
128
132
|
}
|
|
129
133
|
export {
|
|
130
|
-
|
|
134
|
+
ue as getCells
|
|
131
135
|
};
|
|
132
136
|
//# sourceMappingURL=getCells.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCells.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/getCells.ts"],"sourcesContent":["import type {DataFrame} from '../DataFrame';\nimport type {HeatmapSettingsImpl} from './HeatmapSettingsImpl';\nimport type {ColumnName, DataValue, NormalizationMethod} from '../types';\nimport {deviation, extent, mean} from 'd3-array';\nimport lodash from 'lodash';\n\nconst MAX_RENDERED_CELLS_COUNT = 500000;\nfunction normalizeByStd(values:number[]) {\n const stdValue = deviation(values);\n const meanValue = mean(values);\n\n if (stdValue === undefined || meanValue === undefined || stdValue === 0) {\n return (v:number) => v;\n }\n return (v:number) => (v - meanValue) / stdValue;\n}\nfunction normalizeByMinMax(values:number[]) {\n const meanValue = mean(values);\n const [min, max] = extent(values);\n if (meanValue === undefined || min === undefined || max === undefined || max === min) {\n return (v:number) => v;\n }\n return (v:number) => (v - meanValue) / (max - min);\n}\n\nfunction getNormalizationFn(method:NormalizationMethod, values:number[]) {\n if (method === 'standardScaling') {\n return normalizeByStd(values);\n }\n if (method === 'meanNormalization') {\n return normalizeByMinMax(values);\n }\n return (v:number) => v;\n}\n\nexport type Cell = {\n id: string;\n value: DataValue;\n normalizedValue: DataValue;\n x: DataValue;\n y: DataValue;\n data: Record<string, DataValue>;\n};\n\nexport type GroupedCellsData = {\n meta: {\n facetKeys: string[];\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n // for titles, if facet by more 1 columns title has several values separated by commas\n facetKeyValues: Record<string, string[]>;\n xGroupKeyValues: Record<string, string[]>;\n yGroupKeyValues: Record<string, string[]>;\n xLabels: Record<string, string>;\n yLabels: Record<string, string>;\n xGroupLabels: Record<string, string>;\n yGroupLabels: Record<string, string>;\n valueExtent: [number, number]; // for color scales\n // data for labels, annotations and dendrograms\n xDataByKeys: Record<string, Record<string, DataValue>>;\n yDataByKeys: Record<string, Record<string, DataValue>>;\n };\n //facet groups\n facets: Record<\n string,\n {\n // axis keys\n xKeys: string[];\n yKeys: string[];\n // axis keys grouped by group keys from meta\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n // cells grouped by X, then by Y\n cells: Record<string, Record<string, Cell>>;\n }\n >;\n};\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nexport function getCells(\n data: DataFrame,\n xColumn: ColumnName,\n yColumn: ColumnName,\n valueColumn: ColumnName,\n facetBy: ColumnName[],\n xGroupBy: ColumnName[],\n yGroupBy: ColumnName[],\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n normalization: HeatmapSettingsImpl['normalization'],\n NAValueAs: HeatmapSettingsImpl['NAValueAs'],\n): GroupedCellsData {\n const dataSize = data.columnNames.length ? data.getColumn(data.columnNames[0]).length : 0;\n if (dataSize > MAX_RENDERED_CELLS_COUNT) {\n console.error(`Too many cells for graph rendering (${dataSize})`);\n }\n const facetKeysLists = facetBy.length\n ? facetBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const xGroupKeysLists = xGroupBy.length\n ? xGroupBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const yGroupKeysLists = yGroupBy.length\n ? yGroupBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const facetKeysCombinations = getKeysCombinations(facetKeysLists);\n const xGroupKeysCombinations = getKeysCombinations(xGroupKeysLists);\n const yGroupKeysCombinations = getKeysCombinations(yGroupKeysLists);\n\n const facetKeys = facetKeysCombinations.map(keys => keys.join('_'));\n const xGroupKeys = xGroupKeysCombinations.map(keys => keys.join('_'));\n const yGroupKeys = yGroupKeysCombinations.map(keys => keys.join('_'));\n\n const result: GroupedCellsData = {\n meta: {\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups: {},\n yKeysByGroups: {},\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n xDataByKeys: {},\n yDataByKeys: {},\n facetKeyValues: facetKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = facetKeysCombinations[index];\n return res;\n }, {}),\n xGroupKeyValues: xGroupKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = xGroupKeysCombinations[index];\n return res;\n }, {}),\n yGroupKeyValues: yGroupKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = yGroupKeysCombinations[index];\n return res;\n }, {}),\n valueExtent: [Infinity, -Infinity],\n },\n facets: {},\n };\n\n const xLabelsSource = xColumn.valueLabels ?? xColumn.value;\n const yLabelsSource = yColumn.valueLabels ?? yColumn.value;\n const annotationColumnsX = annotations.filter(item => item.axis === 'x').map(item => item.valueColumn.value);\n const annotationColumnsY = annotations.filter(item => item.axis === 'y').map(item => item.valueColumn.value);\n const dendrogramXColumns = Object.values(dendrogramX ?? {}).map(column => column.value);\n const dendrogramYColumns = Object.values(dendrogramY ?? {}).map(column => column.value);\n const additionalDataColumnsX = lodash.uniq([...annotationColumnsX, ...dendrogramXColumns, xLabelsSource]);\n const additionalDataColumnsY = lodash.uniq([...annotationColumnsY, ...dendrogramYColumns, yLabelsSource]);\n data.rows.forEach(row => {\n const facetKey = facetBy.length ? facetBy.map(column => row[column.value]).join('_') : 'null';\n const xGroupKey = xGroupBy.length ? xGroupBy.map(column => row[column.value]).join('_') : 'null';\n const yGroupKey = yGroupBy.length ? yGroupBy.map(column => row[column.value]).join('_') : 'null';\n const xGroupLabel = xGroupBy.length ? xGroupBy.map(column => row[column.valueLabels ?? column.value]).join(', ') : '';\n const yGroupLabel = yGroupBy.length ? yGroupBy.map(column => row[column.valueLabels ?? column.value]).join(', ') : '';\n result.meta.xGroupLabels[xGroupKey] = xGroupLabel;\n result.meta.yGroupLabels[xGroupKey] = yGroupLabel;\n const x = row[xColumn.value] as string;\n const y = row[yColumn.value] as string;\n const value = (row[valueColumn.value] ?? NAValueAs) as number | null;\n if (x === null || y === null || value === null) {\n return;\n }\n if (!result.facets[facetKey]) {\n result.facets[facetKey] = {\n xKeys: [],\n yKeys: [],\n xKeysByGroups: {},\n yKeysByGroups: {},\n cells: {},\n };\n }\n if (!result.facets[facetKey].xKeysByGroups[xGroupKey]) {\n result.facets[facetKey].xKeysByGroups[xGroupKey] = [];\n }\n if (!result.facets[facetKey].yKeysByGroups[yGroupKey]) {\n result.facets[facetKey].yKeysByGroups[yGroupKey] = [];\n }\n result.facets[facetKey].xKeys.push(x);\n result.facets[facetKey].yKeys.push(y);\n result.facets[facetKey].xKeysByGroups[xGroupKey].push(x);\n result.facets[facetKey].yKeysByGroups[yGroupKey].push(y);\n\n if (!result.facets[facetKey].cells[x]) {\n result.facets[facetKey].cells[x] = {};\n }\n result.meta.valueExtent[0] = Math.min(value, result.meta.valueExtent[0]);\n result.meta.valueExtent[1] = Math.max(value, result.meta.valueExtent[1]);\n if (result.facets[facetKey].cells[x][y]) {\n throw Error(`More than 1 value for x=${x}, y=${y}`);\n }\n if (result.meta.xLabels[x] && String(row[xLabelsSource]) !== result.meta.xLabels[x]) {\n throw Error(`More than 1 x-label value for x=${x}`);\n }\n if (result.meta.yLabels[y] && String(row[yLabelsSource]) !== result.meta.yLabels[y]) {\n throw Error(`More than 1 y-label value for y=${y}`);\n }\n result.meta.xLabels[x] = String(row[xLabelsSource]);\n result.meta.yLabels[y] = String(row[yLabelsSource]);\n // data for labels, annotations and dendrograms by X\n additionalDataColumnsX.forEach(columnKey => {\n const isAddedColumn = typeof result.meta.xDataByKeys[columnKey] !== 'undefined';\n const isAddedValue = isAddedColumn && typeof result.meta.xDataByKeys[columnKey][x] !== 'undefined';\n if (!isAddedColumn) {\n result.meta.xDataByKeys[columnKey] = {};\n }\n if (isAddedValue && result.meta.xDataByKeys[columnKey][x] !== row[columnKey]) {\n throw Error(`More than 1 value for x = ${x} and column = ${columnKey}`);\n }\n if (!isAddedValue) {\n result.meta.xDataByKeys[columnKey][x] = row[columnKey];\n }\n });\n // data for labels, annotations and dendrograms by Y\n additionalDataColumnsY.forEach(columnKey => {\n const isAddedColumn = typeof result.meta.yDataByKeys[columnKey] !== 'undefined';\n const isAddedValue = isAddedColumn && typeof result.meta.yDataByKeys[columnKey][y] !== 'undefined';\n if (!isAddedColumn) {\n result.meta.yDataByKeys[columnKey] = {};\n }\n if (isAddedValue && result.meta.yDataByKeys[columnKey][y] !== row[columnKey]) {\n throw Error(`More than 1 value for y = ${y} and column = ${columnKey}`);\n }\n if (!isAddedValue) {\n result.meta.yDataByKeys[columnKey][y] = row[columnKey];\n }\n });\n result.facets[facetKey].cells[x][y] = {\n id: `${x}_${y}`,\n x,\n y,\n value,\n normalizedValue: value,\n data: row,\n };\n });\n result.meta.facetKeys = result.meta.facetKeys.filter((key) => result.facets[key]); // filter only used;\n\n // make uniq x, y, x-group and y-group keys\n result.meta.facetKeys.forEach(facetKey => {\n const facet = result.facets[facetKey];\n facet.xKeys = lodash.uniq(facet.xKeys);\n facet.yKeys = lodash.uniq(facet.yKeys);\n xGroupKeys.forEach(xGroupKey => {\n result.facets[facetKey].xKeysByGroups[xGroupKey] = lodash.uniq(\n result.facets[facetKey].xKeysByGroups[xGroupKey]\n );\n });\n yGroupKeys.forEach(yGroupKey => {\n result.facets[facetKey].yKeysByGroups[yGroupKey] = lodash.uniq(\n result.facets[facetKey].yKeysByGroups[yGroupKey]\n );\n });\n });\n\n if (normalization) {\n const valueExtent = [Infinity, -Infinity] as [number, number];\n result.meta.facetKeys.forEach(facetKey => {\n const {xKeys, yKeys, cells} = result.facets[facetKey];\n const cellKeys = normalization.direction === 'row' ? xKeys : yKeys;\n const groupKeys = normalization.direction === 'row' ? yKeys : xKeys;\n const cellGetter = normalization.direction === 'row'\n ? (cellKey:string, groupKey:string) => cells[cellKey]?.[groupKey]\n : (cellKey:string, groupKey:string) => cells[groupKey]?.[cellKey];\n groupKeys.forEach((groupKey) => {\n const values:number[] = [];\n cellKeys.forEach((cellKey) => {\n const v = cellGetter(cellKey, groupKey)?.value;\n if (v !== undefined) {\n values.push(v as number);\n }\n });\n const normalize = getNormalizationFn(normalization.method, values);\n cellKeys.forEach((cellKey) => {\n const cell = cellGetter(cellKey, groupKey);\n if (cell !== undefined) {\n cell.normalizedValue = normalize(cell.value as number);\n valueExtent[0] = Math.min(cell.normalizedValue, valueExtent[0]);\n valueExtent[1] = Math.max(cell.normalizedValue, valueExtent[1]);\n }\n });\n });\n });\n result.meta.valueExtent = valueExtent;\n }\n\n // every facet may contain not all of available keys, but for shared axes it is necessary to have all of them\n result.meta.xKeysByGroups = xGroupKeys.reduce((res: Record<string, string[]>, xGroupKey) => {\n res[xGroupKey] = lodash.uniq(\n lodash.flatten(result.meta.facetKeys.map(facetKey => result.facets[facetKey].xKeysByGroups[xGroupKey]))\n );\n return res;\n }, {});\n result.meta.yKeysByGroups = yGroupKeys.reduce((res: Record<string, string[]>, yGroupKey) => {\n res[yGroupKey] = lodash.uniq(\n lodash.flatten(result.meta.facetKeys.map(facetKey => result.facets[facetKey].yKeysByGroups[yGroupKey]))\n );\n return res;\n }, {});\n\n // avoid render errors on empty data\n if (result.meta.valueExtent[0] === Infinity) {\n result.meta.valueExtent[0] = 0;\n }\n if (result.meta.valueExtent[1] === -Infinity) {\n result.meta.valueExtent[1] = 0;\n }\n\n return result;\n}\n"],"names":["MAX_RENDERED_CELLS_COUNT","normalizeByStd","values","stdValue","deviation","meanValue","mean","v","normalizeByMinMax","min","max","extent","getNormalizationFn","method","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getCells","data","xColumn","yColumn","valueColumn","facetBy","xGroupBy","yGroupBy","annotations","dendrogramX","dendrogramY","normalization","NAValueAs","dataSize","facetKeysLists","column","xGroupKeysLists","yGroupKeysLists","facetKeysCombinations","xGroupKeysCombinations","yGroupKeysCombinations","facetKeys","xGroupKeys","yGroupKeys","res","index","xLabelsSource","yLabelsSource","annotationColumnsX","item","annotationColumnsY","dendrogramXColumns","dendrogramYColumns","additionalDataColumnsX","lodash","additionalDataColumnsY","row","facetKey","xGroupKey","yGroupKey","xGroupLabel","yGroupLabel","x","y","value","columnKey","isAddedColumn","isAddedValue","facet","valueExtent","xKeys","yKeys","cells","cellKeys","groupKeys","cellGetter","cellKey","groupKey","_a","normalize","cell"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"getCells.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/heatmap/getCells.ts"],"sourcesContent":["import { deviation, extent, mean } from 'd3-array';\nimport lodash from 'lodash';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, NormalizationMethod } from '../types';\nimport type { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\n\nconst MAX_RENDERED_CELLS_COUNT = 500000;\nfunction normalizeByStd(values:number[]) {\n const stdValue = deviation(values);\n const meanValue = mean(values);\n\n if (stdValue === undefined || meanValue === undefined || stdValue === 0) {\n return (v:number) => v;\n }\n return (v:number) => (v - meanValue) / stdValue;\n}\nfunction normalizeByMinMax(values:number[]) {\n const meanValue = mean(values);\n const [min, max] = extent(values);\n if (meanValue === undefined || min === undefined || max === undefined || max === min) {\n return (v:number) => v;\n }\n return (v:number) => (v - meanValue) / (max - min);\n}\n\nfunction getNormalizationFn(method:NormalizationMethod, values:number[]) {\n if (method === 'standardScaling') {\n return normalizeByStd(values);\n }\n if (method === 'meanNormalization') {\n return normalizeByMinMax(values);\n }\n return (v:number) => v;\n}\n\nexport type Cell = {\n isCell: true;\n idx: number;\n id: string;\n value: DataValue;\n normalizedValue: DataValue;\n x: DataValue;\n y: DataValue;\n};\n\nexport type GroupedCellsData = {\n meta: {\n facetKeys: string[];\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n // for titles, if facet by more 1 columns title has several values separated by commas\n facetKeyValues: Record<string, string[]>;\n xGroupKeyValues: Record<string, string[]>;\n yGroupKeyValues: Record<string, string[]>;\n xLabels: Record<string, string>;\n yLabels: Record<string, string>;\n xGroupLabels: Record<string, string>;\n yGroupLabels: Record<string, string>;\n valueExtent: [number, number]; // for color scales\n // data for labels, annotations and dendrograms\n xDataByKeys: Record<string, Record<string, DataValue>>;\n yDataByKeys: Record<string, Record<string, DataValue>>;\n };\n //facet groups\n facets: Record<\n string,\n {\n // axis keys\n xKeys: string[];\n yKeys: string[];\n // axis keys grouped by group keys from meta\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n // cells grouped by X, then by Y\n cells: Record<string, Record<string, Cell>>;\n }\n >;\n};\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nexport function getCells(\n data: DataFrame,\n xColumn: ColumnName,\n yColumn: ColumnName,\n valueColumn: ColumnName,\n facetBy: ColumnName[],\n xGroupBy: ColumnName[],\n yGroupBy: ColumnName[],\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n normalization: HeatmapSettingsImpl['normalization'],\n NAValueAs: HeatmapSettingsImpl['NAValueAs'],\n): GroupedCellsData {\n const dataSize = data.columnNames.length ? data.getColumn(data.columnNames[0]).length : 0;\n if (dataSize > MAX_RENDERED_CELLS_COUNT) {\n console.error(`Too many cells for graph rendering (${dataSize})`);\n }\n const facetKeysLists = facetBy.length\n ? facetBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const xGroupKeysLists = xGroupBy.length\n ? xGroupBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const yGroupKeysLists = yGroupBy.length\n ? yGroupBy.map(column => data.getColumnCategories(column.value))\n : [['null']];\n const facetKeysCombinations = getKeysCombinations(facetKeysLists);\n const xGroupKeysCombinations = getKeysCombinations(xGroupKeysLists);\n const yGroupKeysCombinations = getKeysCombinations(yGroupKeysLists);\n\n const facetKeys = facetKeysCombinations.map(keys => keys.join('_'));\n const xGroupKeys = xGroupKeysCombinations.map(keys => keys.join('_'));\n const yGroupKeys = yGroupKeysCombinations.map(keys => keys.join('_'));\n\n const result: GroupedCellsData = {\n meta: {\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups: {},\n yKeysByGroups: {},\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n xDataByKeys: {},\n yDataByKeys: {},\n facetKeyValues: facetKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = facetKeysCombinations[index];\n return res;\n }, {}),\n xGroupKeyValues: xGroupKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = xGroupKeysCombinations[index];\n return res;\n }, {}),\n yGroupKeyValues: yGroupKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = yGroupKeysCombinations[index];\n return res;\n }, {}),\n valueExtent: [Infinity, -Infinity],\n },\n facets: {},\n };\n\n const xLabelsSource = xColumn.valueLabels ?? xColumn.value;\n const yLabelsSource = yColumn.valueLabels ?? yColumn.value;\n const annotationColumnsX = annotations.filter(item => item.axis === 'x').map(item => item.valueColumn.value);\n const annotationColumnsY = annotations.filter(item => item.axis === 'y').map(item => item.valueColumn.value);\n const dendrogramXColumns = Object.values(dendrogramX ?? {}).map(column => column.value);\n const dendrogramYColumns = Object.values(dendrogramY ?? {}).map(column => column.value);\n const additionalDataColumnsX = lodash.uniq([...annotationColumnsX, ...dendrogramXColumns, xLabelsSource]);\n const additionalDataColumnsY = lodash.uniq([...annotationColumnsY, ...dendrogramYColumns, yLabelsSource]);\n\n for (let i = 0; i < data.rowsCount; i++) {\n const facetKey = facetBy.length ? facetBy.map(column => data.getColumnValue(column.value, i)).join('_') : 'null';\n const xGroupKey = xGroupBy.length ? xGroupBy.map(column => data.getColumnValue(column.value, i)).join('_') : 'null';\n const yGroupKey = yGroupBy.length ? yGroupBy.map(column => data.getColumnValue(column.value, i)).join('_') : 'null';\n const xGroupLabel = xGroupBy.length ? xGroupBy.map(column => data.getColumnValue(column.valueLabels ?? column.value, i)).join(', ') : '';\n const yGroupLabel = yGroupBy.length ? yGroupBy.map(column => data.getColumnValue(column.valueLabels ?? column.value, i)).join(', ') : '';\n result.meta.xGroupLabels[xGroupKey] = xGroupLabel;\n result.meta.yGroupLabels[xGroupKey] = yGroupLabel;\n const x = String(data.getColumnValue(xColumn.value, i));\n const y = String(data.getColumnValue(yColumn.value, i));\n const value = (data.getColumnValue(valueColumn.value, i) ?? NAValueAs) as number | null;\n \n if (x === 'null' || y === 'null' || value === null) {\n continue;\n }\n\n if (!result.facets[facetKey]) {\n result.facets[facetKey] = {\n xKeys: [],\n yKeys: [],\n xKeysByGroups: {},\n yKeysByGroups: {},\n cells: {},\n };\n }\n if (!result.facets[facetKey].xKeysByGroups[xGroupKey]) {\n result.facets[facetKey].xKeysByGroups[xGroupKey] = [];\n }\n if (!result.facets[facetKey].yKeysByGroups[yGroupKey]) {\n result.facets[facetKey].yKeysByGroups[yGroupKey] = [];\n }\n result.facets[facetKey].xKeys.push(x);\n result.facets[facetKey].yKeys.push(y);\n result.facets[facetKey].xKeysByGroups[xGroupKey].push(x);\n result.facets[facetKey].yKeysByGroups[yGroupKey].push(y);\n\n if (!result.facets[facetKey].cells[x]) {\n result.facets[facetKey].cells[x] = {};\n }\n result.meta.valueExtent[0] = Math.min(value, result.meta.valueExtent[0]);\n result.meta.valueExtent[1] = Math.max(value, result.meta.valueExtent[1]);\n if (result.facets[facetKey].cells[x][y]) {\n throw Error(`More than 1 value for x=${x}, y=${y}`);\n }\n const xLabelsSourceValue = data.getColumnValue(xLabelsSource, i);\n if (result.meta.xLabels[x] && String(xLabelsSourceValue) !== result.meta.xLabels[x]) {\n throw Error(`More than 1 x-label value for x=${x}`);\n }\n const yLabelsSourceValue = data.getColumnValue(yLabelsSource, i);\n if (result.meta.yLabels[y] && String(yLabelsSourceValue) !== result.meta.yLabels[y]) {\n throw Error(`More than 1 y-label value for y=${y}`);\n }\n result.meta.xLabels[x] = String(xLabelsSourceValue);\n result.meta.yLabels[y] = String(yLabelsSourceValue);\n // data for labels, annotations and dendrograms by X\n additionalDataColumnsX.forEach(columnKey => {\n const isAddedColumn = typeof result.meta.xDataByKeys[columnKey] !== 'undefined';\n const isAddedValue = isAddedColumn && typeof result.meta.xDataByKeys[columnKey][x] !== 'undefined';\n if (!isAddedColumn) {\n result.meta.xDataByKeys[columnKey] = {};\n }\n if (isAddedValue && result.meta.xDataByKeys[columnKey][x] !== data.getColumnValue(columnKey, i)) {\n throw Error(`More than 1 value for x = ${x} and column = ${columnKey}`);\n }\n if (!isAddedValue) {\n result.meta.xDataByKeys[columnKey][x] = data.getColumnValue(columnKey, i);\n }\n });\n // data for labels, annotations and dendrograms by Y\n additionalDataColumnsY.forEach(columnKey => {\n const isAddedColumn = typeof result.meta.yDataByKeys[columnKey] !== 'undefined';\n const isAddedValue = isAddedColumn && typeof result.meta.yDataByKeys[columnKey][y] !== 'undefined';\n if (!isAddedColumn) {\n result.meta.yDataByKeys[columnKey] = {};\n }\n if (isAddedValue && result.meta.yDataByKeys[columnKey][y] !== data.getColumnValue(columnKey, i)) {\n throw Error(`More than 1 value for y = ${y} and column = ${columnKey}`);\n }\n if (!isAddedValue) {\n result.meta.yDataByKeys[columnKey][y] = data.getColumnValue(columnKey, i);\n }\n });\n result.facets[facetKey].cells[x][y] = {\n isCell: true,\n idx: i,\n id: `${x}_${y}`,\n x,\n y,\n value,\n normalizedValue: value,\n };\n }\n\n result.meta.facetKeys = result.meta.facetKeys.filter((key) => result.facets[key]); // filter only used;\n\n // make uniq x, y, x-group and y-group keys\n result.meta.facetKeys.forEach(facetKey => {\n const facet = result.facets[facetKey];\n facet.xKeys = lodash.uniq(facet.xKeys);\n facet.yKeys = lodash.uniq(facet.yKeys);\n xGroupKeys.forEach(xGroupKey => {\n result.facets[facetKey].xKeysByGroups[xGroupKey] = lodash.uniq(\n result.facets[facetKey].xKeysByGroups[xGroupKey]\n );\n });\n yGroupKeys.forEach(yGroupKey => {\n result.facets[facetKey].yKeysByGroups[yGroupKey] = lodash.uniq(\n result.facets[facetKey].yKeysByGroups[yGroupKey]\n );\n });\n });\n\n if (normalization) {\n const valueExtent = [Infinity, -Infinity] as [number, number];\n result.meta.facetKeys.forEach(facetKey => {\n const {xKeys, yKeys, cells} = result.facets[facetKey];\n const cellKeys = normalization.direction === 'row' ? xKeys : yKeys;\n const groupKeys = normalization.direction === 'row' ? yKeys : xKeys;\n const cellGetter = normalization.direction === 'row'\n ? (cellKey:string, groupKey:string) => cells[cellKey]?.[groupKey]\n : (cellKey:string, groupKey:string) => cells[groupKey]?.[cellKey];\n groupKeys.forEach((groupKey) => {\n const values:number[] = [];\n cellKeys.forEach((cellKey) => {\n const v = cellGetter(cellKey, groupKey)?.value;\n if (v !== undefined) {\n values.push(v as number);\n }\n });\n const normalize = getNormalizationFn(normalization.method, values);\n cellKeys.forEach((cellKey) => {\n const cell = cellGetter(cellKey, groupKey);\n if (cell !== undefined) {\n cell.normalizedValue = normalize(cell.value as number);\n valueExtent[0] = Math.min(cell.normalizedValue, valueExtent[0]);\n valueExtent[1] = Math.max(cell.normalizedValue, valueExtent[1]);\n }\n });\n });\n });\n result.meta.valueExtent = valueExtent;\n }\n\n // every facet may contain not all of available keys, but for shared axes it is necessary to have all of them\n result.meta.xKeysByGroups = xGroupKeys.reduce((res: Record<string, string[]>, xGroupKey) => {\n res[xGroupKey] = lodash.uniq(\n lodash.flatten(result.meta.facetKeys.map(facetKey => result.facets[facetKey].xKeysByGroups[xGroupKey]))\n );\n return res;\n }, {});\n result.meta.yKeysByGroups = yGroupKeys.reduce((res: Record<string, string[]>, yGroupKey) => {\n res[yGroupKey] = lodash.uniq(\n lodash.flatten(result.meta.facetKeys.map(facetKey => result.facets[facetKey].yKeysByGroups[yGroupKey]))\n );\n return res;\n }, {});\n\n // avoid render errors on empty data\n if (result.meta.valueExtent[0] === Infinity) {\n result.meta.valueExtent[0] = 0;\n }\n if (result.meta.valueExtent[1] === -Infinity) {\n result.meta.valueExtent[1] = 0;\n }\n\n return result;\n}\n"],"names":["MAX_RENDERED_CELLS_COUNT","normalizeByStd","values","stdValue","deviation","meanValue","mean","v","normalizeByMinMax","min","max","extent","getNormalizationFn","method","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getCells","data","xColumn","yColumn","valueColumn","facetBy","xGroupBy","yGroupBy","annotations","dendrogramX","dendrogramY","normalization","NAValueAs","dataSize","facetKeysLists","column","xGroupKeysLists","yGroupKeysLists","facetKeysCombinations","xGroupKeysCombinations","yGroupKeysCombinations","facetKeys","xGroupKeys","yGroupKeys","res","index","xLabelsSource","yLabelsSource","annotationColumnsX","item","annotationColumnsY","dendrogramXColumns","dendrogramYColumns","additionalDataColumnsX","lodash","additionalDataColumnsY","i","facetKey","xGroupKey","yGroupKey","xGroupLabel","yGroupLabel","n","x","y","value","xLabelsSourceValue","yLabelsSourceValue","columnKey","isAddedColumn","isAddedValue","facet","valueExtent","xKeys","yKeys","cells","cellKeys","groupKeys","cellGetter","cellKey","groupKey","_a","normalize","cell"],"mappings":";;;;AAMA,MAAMA,IAA2B;AACjC,SAASC,EAAeC,GAAiB;AACrC,QAAMC,IAAWC,EAAUF,CAAM,GAC3BG,IAAYC,EAAKJ,CAAM;AAE7B,SAAIC,MAAa,UAAaE,MAAc,UAAaF,MAAa,IAC3D,CAACI,MAAaA,IAElB,CAACA,OAAcA,IAAIF,KAAaF;AAC3C;AACA,SAASK,EAAkBN,GAAiB;AACxC,QAAMG,IAAYC,EAAKJ,CAAM,GACvB,CAACO,GAAKC,CAAG,IAAIC,EAAOT,CAAM;AAChC,SAAIG,MAAc,UAAaI,MAAQ,UAAaC,MAAQ,UAAaA,MAAQD,IACtE,CAACF,MAAaA,IAElB,CAACA,OAAcA,IAAIF,MAAcK,IAAMD;AAClD;AAEA,SAASG,EAAmBC,GAA4BX,GAAiB;AACrE,SAAIW,MAAW,oBACJZ,EAAeC,CAAM,IAE5BW,MAAW,sBACJL,EAAkBN,CAAM,IAE5B,CAACK,MAAaA;AACzB;AAiDA,SAASO,EAAoBC,GAAuB;AAChD,MAAI,CAACA,EAAU;AACX,WAAO,CAAA;AAEX,MAAIC,IAAqB,CAAC,EAAE;AAC5B,SAAAD,EAAU,QAAQ,CAAAE,MAAQ;AACtB,UAAMC,IAAyB,CAAA;AAC/BD,IAAAA,EAAK,QAAQ,CAAAE,MAAO;AAChBD,MAAAA,EAAW,KAAK,GAAGF,EAAO,IAAI,CAAAI,MAAc,CAAC,GAAGA,GAAYD,CAAG,CAAC,CAAC;AAAA,IACrE,CAAC,GACDH,IAASE;AAAAA,EACb,CAAC,GACMF;AACX;AAEO,SAASK,GACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACgB;AAChB,QAAMC,IAAWZ,EAAK,YAAY,SAASA,EAAK,UAAUA,EAAK,YAAY,CAAC,CAAC,EAAE,SAAS;AACpFY,MAAWlC,KACX,QAAQ,MAAM,uCAAuCkC,CAAQ,GAAG;AAEpE,QAAMC,IAAiBT,EAAQ,SACzBA,EAAQ,IAAI,CAAAU,MAAUd,EAAK,oBAAoBc,EAAO,KAAK,CAAC,IAC5D,CAAC,CAAC,MAAM,CAAC,GACTC,IAAkBV,EAAS,SAC3BA,EAAS,IAAI,CAAAS,MAAUd,EAAK,oBAAoBc,EAAO,KAAK,CAAC,IAC7D,CAAC,CAAC,MAAM,CAAC,GACTE,IAAkBV,EAAS,SAC3BA,EAAS,IAAI,CAAAQ,MAAUd,EAAK,oBAAoBc,EAAO,KAAK,CAAC,IAC7D,CAAC,CAAC,MAAM,CAAC,GACTG,IAAwBzB,EAAoBqB,CAAc,GAC1DK,IAAyB1B,EAAoBuB,CAAe,GAC5DI,IAAyB3B,EAAoBwB,CAAe,GAE5DI,IAAYH,EAAsB,IAAI,CAAA,MAAQtB,EAAK,KAAK,GAAG,CAAC,GAC5D0B,IAAaH,EAAuB,IAAI,CAAA,MAAQvB,EAAK,KAAK,GAAG,CAAC,GAC9D2B,IAAaH,EAAuB,IAAI,CAAA,MAAQxB,EAAK,KAAK,GAAG,CAAC,GAE9DD,IAA2B;AAAA,IAC7B,MAAM;AAAA,MACF,WAAA0B;AAAAA,MACA,YAAAC;AAAAA,MACA,YAAAC;AAAAA,MACA,eAAe,CAAA;AAAA,MACf,eAAe,CAAA;AAAA,MACf,SAAS,CAAA;AAAA,MACT,SAAS,CAAA;AAAA,MACT,cAAc,CAAA;AAAA,MACd,cAAc,CAAA;AAAA,MACd,aAAa,CAAA;AAAA,MACb,aAAa,CAAA;AAAA,MACb,gBAAgBF,EAAU,OAAO,CAACG,GAA+B1B,GAAK2B,OAClED,EAAI1B,CAAG,IAAIoB,EAAsBO,CAAK,GAC/BD,IACR,CAAA,CAAE;AAAA,MACL,iBAAiBF,EAAW,OAAO,CAACE,GAA+B1B,GAAK2B,OACpED,EAAI1B,CAAG,IAAIqB,EAAuBM,CAAK,GAChCD,IACR,CAAA,CAAE;AAAA,MACL,iBAAiBD,EAAW,OAAO,CAACC,GAA+B1B,GAAK2B,OACpED,EAAI1B,CAAG,IAAIsB,EAAuBK,CAAK,GAChCD,IACR,CAAA,CAAE;AAAA,MACL,aAAa,CAAC,OAAU,MAAS;AAAA,IAAA;AAAA,IAErC,QAAQ,CAAA;AAAA,EAAA,GAGNE,IAAgBxB,EAAQ,eAAeA,EAAQ,OAC/CyB,IAAgBxB,EAAQ,eAAeA,EAAQ,OAC/CyB,IAAqBpB,EAAY,OAAO,CAAAqB,MAAQA,EAAK,SAAS,GAAG,EAAE,IAAI,CAAAA,MAAQA,EAAK,YAAY,KAAK,GACrGC,IAAqBtB,EAAY,OAAO,CAAAqB,MAAQA,EAAK,SAAS,GAAG,EAAE,IAAI,CAAAA,MAAQA,EAAK,YAAY,KAAK,GACrGE,IAAqB,OAAO,OAAOtB,KAAe,CAAA,CAAE,EAAE,IAAI,CAAAM,MAAUA,EAAO,KAAK,GAChFiB,IAAqB,OAAO,OAAOtB,KAAe,EAAE,EAAE,IAAI,CAAAK,MAAUA,EAAO,KAAK,GAChFkB,IAAyBC,EAAO,KAAK,CAAC,GAAGN,GAAoB,GAAGG,GAAoBL,CAAa,CAAC,GAClGS,IAAyBD,EAAO,KAAK,CAAC,GAAGJ,GAAoB,GAAGE,GAAoBL,CAAa,CAAC;AAExG,WAASS,IAAI,GAAGA,IAAInC,EAAK,WAAWmC,KAAK;AACrC,UAAMC,IAAWhC,EAAQ,SAASA,EAAQ,IAAI,CAAAU,MAAUd,EAAK,eAAec,EAAO,OAAOqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,QACpGE,IAAYhC,EAAS,SAASA,EAAS,IAAI,CAAAS,MAAUd,EAAK,eAAec,EAAO,OAAOqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,QACvGG,IAAYhC,EAAS,SAASA,EAAS,IAAI,CAAAQ,MAAUd,EAAK,eAAec,EAAO,OAAOqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,QACvGI,IAAclC,EAAS,SAASA,EAAS,IAAI,OAAUL,EAAK,eAAec,EAAO,eAAeA,EAAO,OAAOqB,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,IAChIK,IAAclC,EAAS,SAASA,EAAS,IAAI,CAAAmC,MAAUzC,EAAK,eAAec,EAAO,eAAeA,EAAO,OAAOqB,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI;AACtIzC,IAAAA,EAAO,KAAK,aAAa2C,CAAS,IAAIE,GACtC7C,EAAO,KAAK,aAAa2C,CAAS,IAAIG;AACtC,UAAME,IAAI,OAAO1C,EAAK,eAAeC,EAAQ,OAAOkC,CAAC,CAAC,GAChDQ,IAAI,OAAO3C,EAAK,eAAeE,EAAQ,OAAOiC,CAAC,CAAC,GAChDS,IAAS5C,EAAK,eAAeG,EAAY,OAAOgC,CAAC,KAAKxB;AAE5D,QAAI+B,MAAM,UAAUC,MAAM,UAAUC,MAAU;AAC1C;AA4BJ,QAzBKlD,EAAO,OAAO0C,CAAQ,MACvB1C,EAAO,OAAO0C,CAAQ,IAAI;AAAA,MACtB,OAAO,CAAA;AAAA,MACP,OAAO,CAAA;AAAA,MACP,eAAe,CAAA;AAAA,MACf,eAAe,CAAA;AAAA,MACf,OAAO,CAAA;AAAA,IAAA,IAGV1C,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS,MAChD3C,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS,IAAI,CAAA,IAElD3C,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS,MAChD5C,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS,IAAI,CAAA,IAEvD5C,EAAO,OAAO0C,CAAQ,EAAE,MAAM,KAAKM,CAAC,GACpChD,EAAO,OAAO0C,CAAQ,EAAE,MAAM,KAAKO,CAAC,GACpCjD,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS,EAAE,KAAKK,CAAC,GACvDhD,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS,EAAE,KAAKK,CAAC,GAElDjD,EAAO,OAAO0C,CAAQ,EAAE,MAAMM,CAAC,MAChChD,EAAO,OAAO0C,CAAQ,EAAE,MAAMM,CAAC,IAAI,CAAA,IAEvChD,EAAO,KAAK,YAAY,CAAC,IAAI,KAAK,IAAIkD,GAAOlD,EAAO,KAAK,YAAY,CAAC,CAAC,GACvEA,EAAO,KAAK,YAAY,CAAC,IAAI,KAAK,IAAIkD,GAAOlD,EAAO,KAAK,YAAY,CAAC,CAAC,GACnEA,EAAO,OAAO0C,CAAQ,EAAE,MAAMM,CAAC,EAAEC,CAAC;AAClC,YAAM,MAAM,2BAA2BD,CAAC,OAAOC,CAAC,EAAE;AAEtD,UAAME,IAAqB7C,EAAK,eAAeyB,GAAeU,CAAC;AAC/D,QAAIzC,EAAO,KAAK,QAAQgD,CAAC,KAAK,OAAOG,CAAkB,MAAMnD,EAAO,KAAK,QAAQgD,CAAC;AAC9E,YAAM,MAAM,mCAAmCA,CAAC,EAAE;AAEtD,UAAMI,IAAqB9C,EAAK,eAAe0B,GAAeS,CAAC;AAC/D,QAAIzC,EAAO,KAAK,QAAQiD,CAAC,KAAK,OAAOG,CAAkB,MAAMpD,EAAO,KAAK,QAAQiD,CAAC;AAC9E,YAAM,MAAM,mCAAmCA,CAAC,EAAE;AAEtDjD,IAAAA,EAAO,KAAK,QAAQgD,CAAC,IAAI,OAAOG,CAAkB,GAClDnD,EAAO,KAAK,QAAQiD,CAAC,IAAI,OAAOG,CAAkB,GAElDd,EAAuB,QAAQ,CAAAe,MAAa;AACxC,YAAMC,IAAgB,OAAOtD,EAAO,KAAK,YAAYqD,CAAS,IAAM,KAC9DE,IAAeD,KAAiB,OAAOtD,EAAO,KAAK,YAAYqD,CAAS,EAAEL,CAAC,IAAM;AAIvF,UAHKM,MACDtD,EAAO,KAAK,YAAYqD,CAAS,IAAI,CAAA,IAErCE,KAAgBvD,EAAO,KAAK,YAAYqD,CAAS,EAAEL,CAAC,MAAM1C,EAAK,eAAe+C,GAAWZ,CAAC;AAC1F,cAAM,MAAM,6BAA6BO,CAAC,iBAAiBK,CAAS,EAAE;AAErEE,MAAAA,MACDvD,EAAO,KAAK,YAAYqD,CAAS,EAAEL,CAAC,IAAI1C,EAAK,eAAe+C,GAAWZ,CAAC;AAAA,IAEhF,CAAC,GAEDD,EAAuB,QAAQ,CAAAa,MAAa;AACxC,YAAMC,IAAgB,OAAOtD,EAAO,KAAK,YAAYqD,CAAS,IAAM,KAC9DE,IAAeD,KAAiB,OAAOtD,EAAO,KAAK,YAAYqD,CAAS,EAAEJ,CAAC,IAAM;AAIvF,UAHKK,MACDtD,EAAO,KAAK,YAAYqD,CAAS,IAAI,CAAA,IAErCE,KAAgBvD,EAAO,KAAK,YAAYqD,CAAS,EAAEJ,CAAC,MAAM3C,EAAK,eAAe+C,GAAWZ,CAAC;AAC1F,cAAM,MAAM,6BAA6BQ,CAAC,iBAAiBI,CAAS,EAAE;AAErEE,MAAAA,MACDvD,EAAO,KAAK,YAAYqD,CAAS,EAAEJ,CAAC,IAAI3C,EAAK,eAAe+C,GAAWZ,CAAC;AAAA,IAEhF,CAAC,GACDzC,EAAO,OAAO0C,CAAQ,EAAE,MAAMM,CAAC,EAAEC,CAAC,IAAI;AAAA,MAClC,QAAQ;AAAA,MACR,KAAKR;AAAAA,MACL,IAAI,GAAGO,CAAC,IAAIC,CAAC;AAAA,MACb,GAAAD;AAAAA,MACA,GAAAC;AAAAA,MACA,OAAAC;AAAAA,MACA,iBAAiBA;AAAAA,IAAA;AAAA,EAEzB;AAqBA,MAnBAlD,EAAO,KAAK,YAAYA,EAAO,KAAK,UAAU,OAAO,CAACG,MAAQH,EAAO,OAAOG,CAAG,CAAC,GAGhFH,EAAO,KAAK,UAAU,QAAQ,CAAA0C,MAAY;AACtC,UAAMc,IAAQxD,EAAO,OAAO0C,CAAQ;AACpCc,IAAAA,EAAM,QAAQjB,EAAO,KAAKiB,EAAM,KAAK,GACrCA,EAAM,QAAQjB,EAAO,KAAKiB,EAAM,KAAK,GACrC7B,EAAW,QAAQ,CAAAgB,MAAa;AAC5B3C,MAAAA,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS,IAAIJ,EAAO;AAAA,QACtDvC,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS;AAAA,MAAA;AAAA,IAEvD,CAAC,GACDf,EAAW,QAAQ,CAAAgB,MAAa;AAC5B5C,MAAAA,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS,IAAIL,EAAO;AAAA,QACtDvC,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS;AAAA,MAAA;AAAA,IAEvD,CAAC;AAAA,EACL,CAAC,GAEG5B,GAAe;AACf,UAAMyC,IAAc,CAAC,OAAU,MAAS;AACxCzD,IAAAA,EAAO,KAAK,UAAU,QAAQ,CAAA0C,MAAY;AACtC,YAAM,EAAC,OAAAgB,GAAO,OAAAC,GAAO,OAAAC,EAAAA,IAAS5D,EAAO,OAAO0C,CAAQ,GAC9CmB,IAAW7C,EAAc,cAAc,QAAQ0C,IAAQC,GACvDG,IAAY9C,EAAc,cAAc,QAAQ2C,IAAQD,GACxDK,IAAa/C,EAAc,cAAc,QACzC,CAACgD,GAAgBC,MAAAA;;AAAoB,gBAAAC,IAAAN,EAAMI,CAAO,MAAb,gBAAAE,EAAiBD,CAAAA;AAAAA,MAAA,IACtD,CAACD,GAAgBC,MAAAA;;AAAoB,gBAAAC,IAAAN,EAAMK,CAAQ,MAAd,gBAAAC,EAAkBF,CAAAA;AAAAA,MAAA;AAC7DF,MAAAA,EAAU,QAAQ,CAACG,MAAa;AAC5B,cAAM/E,IAAkB,CAAA;AACxB2E,QAAAA,EAAS,QAAQ,CAACG,MAAY;;AAC1B,gBAAMzE,KAAI2E,IAAAH,EAAWC,GAASC,CAAQ,MAA5B,gBAAAC,EAA+B;AACrC3E,UAAAA,MAAM,UACNL,EAAO,KAAKK,CAAW;AAAA,QAE/B,CAAC;AACD,cAAM4E,IAAYvE,EAAmBoB,EAAc,QAAQ9B,CAAM;AACjE2E,QAAAA,EAAS,QAAQ,CAACG,MAAY;AAC1B,gBAAMI,IAAOL,EAAWC,GAASC,CAAQ;AACrCG,UAAAA,MAAS,WACTA,EAAK,kBAAkBD,EAAUC,EAAK,KAAe,GACrDX,EAAY,CAAC,IAAI,KAAK,IAAIW,EAAK,iBAAiBX,EAAY,CAAC,CAAC,GAC9DA,EAAY,CAAC,IAAI,KAAK,IAAIW,EAAK,iBAAiBX,EAAY,CAAC,CAAC;AAAA,QAEtE,CAAC;AAAA,MACL,CAAC;AAAA,IACL,CAAC,GACDzD,EAAO,KAAK,cAAcyD;AAAAA,EAC9B;AAGA,SAAAzD,EAAO,KAAK,gBAAgB2B,EAAW,OAAO,CAACE,GAA+Bc,OAC1Ed,EAAIc,CAAS,IAAIJ,EAAO;AAAA,IACpBA,EAAO,QAAQvC,EAAO,KAAK,UAAU,IAAI,CAAA0C,MAAY1C,EAAO,OAAO0C,CAAQ,EAAE,cAAcC,CAAS,CAAC,CAAC;AAAA,EAAA,GAEnGd,IACR,CAAA,CAAE,GACL7B,EAAO,KAAK,gBAAgB4B,EAAW,OAAO,CAACC,GAA+Be,OAC1Ef,EAAIe,CAAS,IAAIL,EAAO;AAAA,IACpBA,EAAO,QAAQvC,EAAO,KAAK,UAAU,IAAI,CAAA0C,MAAY1C,EAAO,OAAO0C,CAAQ,EAAE,cAAcE,CAAS,CAAC,CAAC;AAAA,EAAA,GAEnGf,IACR,CAAA,CAAE,GAGD7B,EAAO,KAAK,YAAY,CAAC,MAAM,UAC/BA,EAAO,KAAK,YAAY,CAAC,IAAI,IAE7BA,EAAO,KAAK,YAAY,CAAC,MAAM,WAC/BA,EAAO,KAAK,YAAY,CAAC,IAAI,IAG1BA;AACX;","x_google_ignoreList":[0]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { getDendrograms as q } from "./getDendrograms.js";
|
|
1
|
+
import { renderToString as E } from "../node_modules/react-dom/server.browser.js";
|
|
2
|
+
import { AbstractChart as q } from "../AbstractChart.js";
|
|
4
3
|
import { isColumnName as y } from "../utils/index.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
import N from "./ChartRenderer.js";
|
|
5
|
+
import { getCells as I } from "./getCells.js";
|
|
6
|
+
import { getDendrograms as P } from "./getDendrograms.js";
|
|
7
|
+
import { HeatmapSettingsImpl as X } from "./HeatmapSettingsImpl.js";
|
|
8
|
+
var $ = Object.defineProperty, F = (s, t, e) => t in s ? $(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, f = (s, t, e) => F(s, typeof t != "symbol" ? t + "" : t, e);
|
|
9
|
+
class tt extends q {
|
|
10
10
|
constructor(t, e, a) {
|
|
11
|
-
super(t, e), f(this, "settings"), f(this, "chartRenderer", new
|
|
12
|
-
}), f(this, "calculatedData", null), this.settings = new
|
|
11
|
+
super(t, e), f(this, "settings"), f(this, "chartRenderer", new N()), f(this, "onTooltipHintSwitch", () => {
|
|
12
|
+
}), f(this, "calculatedData", null), this.settings = new X(e), a && (this.onTooltipHintSwitch = a[0]);
|
|
13
13
|
}
|
|
14
14
|
mount(t) {
|
|
15
15
|
try {
|
|
16
|
-
this.chartRenderer.init(t), this._updateData(), this._updateChart();
|
|
16
|
+
this.chartRenderer.init(t), this._updateData(), this._updateChart(), this.hasError = !1;
|
|
17
17
|
} catch (e) {
|
|
18
|
-
e instanceof Error && this.chartRenderer.renderError(e.message);
|
|
18
|
+
this.hasError = !0, e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
unmount() {
|
|
@@ -24,19 +24,19 @@ class tt extends E {
|
|
|
24
24
|
updateSettingsAndData(t, e) {
|
|
25
25
|
try {
|
|
26
26
|
const a = this.settings, r = this.data;
|
|
27
|
-
this.settings = new
|
|
27
|
+
this.settings = new X(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
|
|
28
28
|
} catch (a) {
|
|
29
|
-
a instanceof Error && this.chartRenderer.renderError(a.message);
|
|
29
|
+
a instanceof Error && (this.chartRenderer.renderError(a.message), console.error(a));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
updateChartState(t, e) {
|
|
33
33
|
console.warn("no chart state for heatmap");
|
|
34
34
|
}
|
|
35
35
|
export() {
|
|
36
|
-
return this._updateChart(),
|
|
36
|
+
return this._updateChart(), E(this.chartRenderer.component);
|
|
37
37
|
}
|
|
38
38
|
_needUpdateCalculatedDataBySettings(t, e) {
|
|
39
|
-
var a, r, n, i, l,
|
|
39
|
+
var a, r, n, i, l, d, u, o, c, p, v, g;
|
|
40
40
|
const {
|
|
41
41
|
xColumn: D,
|
|
42
42
|
yColumn: S,
|
|
@@ -48,21 +48,21 @@ class tt extends E {
|
|
|
48
48
|
chartSettings: T,
|
|
49
49
|
facetSettings: B,
|
|
50
50
|
dendrogramX: _,
|
|
51
|
-
dendrogramY:
|
|
51
|
+
dendrogramY: Y,
|
|
52
52
|
normalization: C,
|
|
53
53
|
NAValueAs: k
|
|
54
54
|
} = e, G = Object.values(((a = t.dendrogramX) == null ? void 0 : a.aes) || {}).filter(
|
|
55
55
|
y
|
|
56
|
-
),
|
|
56
|
+
), O = Object.values((_ == null ? void 0 : _.aes) || {}).filter(y), U = Object.values(((r = t.dendrogramY) == null ? void 0 : r.aes) || {}).filter(
|
|
57
57
|
y
|
|
58
|
-
),
|
|
59
|
-
function h(m,
|
|
60
|
-
return m.length !==
|
|
58
|
+
), z = Object.values((Y == null ? void 0 : Y.aes) || {}).filter(y);
|
|
59
|
+
function h(m, b) {
|
|
60
|
+
return m.length !== b.length || m.some((H, V) => H.value !== b[V].value);
|
|
61
61
|
}
|
|
62
62
|
return t.xColumn.value !== D.value || t.yColumn.value !== S.value || t.valueColumn.value !== A.value || h(t.xGroupBy, w) || h(t.yGroupBy, x) || h(t.facetBy, j) || h(
|
|
63
63
|
t.annotations.map((m) => m.valueColumn),
|
|
64
64
|
R.map((m) => m.valueColumn)
|
|
65
|
-
) || h(G,
|
|
65
|
+
) || h(G, O) || h(U, z) || (e.dendrogramX || t.dendrogramX) && (((n = t.dendrogramX) == null ? void 0 : n.distance) !== ((i = e.dendrogramX) == null ? void 0 : i.distance) || ((l = t.dendrogramX) == null ? void 0 : l.linkage) !== ((d = e.dendrogramX) == null ? void 0 : d.linkage)) || (e.dendrogramY || t.dendrogramY) && (((u = t.dendrogramY) == null ? void 0 : u.distance) !== ((o = e.dendrogramY) == null ? void 0 : o.distance) || ((c = t.dendrogramY) == null ? void 0 : c.linkage) !== ((p = e.dendrogramY) == null ? void 0 : p.linkage)) || t.chartSettings.valueType !== T.valueType || t.facetSettings.sharedX !== B.sharedX || t.facetSettings.sharedY !== B.sharedY || ((v = t.normalization) == null ? void 0 : v.method) !== (C == null ? void 0 : C.method) || ((g = t.normalization) == null ? void 0 : g.direction) !== (C == null ? void 0 : C.direction) || t.NAValueAs !== k;
|
|
66
66
|
}
|
|
67
67
|
_needUpdateCalculatedDataByData(t, e) {
|
|
68
68
|
const a = Object.keys(t.data), r = Object.keys(e.data);
|
|
@@ -80,13 +80,13 @@ class tt extends E {
|
|
|
80
80
|
yGroupBy: n,
|
|
81
81
|
facetBy: i,
|
|
82
82
|
chartSettings: l,
|
|
83
|
-
facetSettings:
|
|
83
|
+
facetSettings: d,
|
|
84
84
|
annotations: u,
|
|
85
|
-
dendrogramX:
|
|
85
|
+
dendrogramX: o,
|
|
86
86
|
dendrogramY: c,
|
|
87
87
|
normalization: p,
|
|
88
88
|
NAValueAs: v
|
|
89
|
-
} = this.settings, g =
|
|
89
|
+
} = this.settings, g = I(
|
|
90
90
|
this.data,
|
|
91
91
|
t,
|
|
92
92
|
e,
|
|
@@ -95,11 +95,11 @@ class tt extends E {
|
|
|
95
95
|
r,
|
|
96
96
|
n,
|
|
97
97
|
u,
|
|
98
|
-
|
|
98
|
+
o,
|
|
99
99
|
c,
|
|
100
100
|
p,
|
|
101
101
|
v
|
|
102
|
-
), D =
|
|
102
|
+
), D = P(g, o, c, d), S = l.valueType === "discrete" ? this.data.getColumnCategories(a.value) : [];
|
|
103
103
|
this.calculatedData = {
|
|
104
104
|
groupedCellsData: g,
|
|
105
105
|
dendrogramsData: D,
|
|
@@ -119,11 +119,12 @@ class tt extends E {
|
|
|
119
119
|
aes: n,
|
|
120
120
|
annotations: i,
|
|
121
121
|
dendrogramX: l,
|
|
122
|
-
dendrogramY:
|
|
122
|
+
dendrogramY: d,
|
|
123
123
|
inheritedDendrogramAes: u,
|
|
124
|
-
normalization:
|
|
124
|
+
normalization: o
|
|
125
125
|
} = this.settings;
|
|
126
126
|
this.chartRenderer.render(
|
|
127
|
+
this.data,
|
|
127
128
|
t,
|
|
128
129
|
a,
|
|
129
130
|
r,
|
|
@@ -132,11 +133,11 @@ class tt extends E {
|
|
|
132
133
|
i,
|
|
133
134
|
e,
|
|
134
135
|
l,
|
|
135
|
-
|
|
136
|
+
d,
|
|
136
137
|
this.calculatedData.dendrogramsData,
|
|
137
138
|
u,
|
|
138
139
|
this.calculatedData.cellUniqValues,
|
|
139
|
-
|
|
140
|
+
o,
|
|
140
141
|
this.onTooltipHintSwitch
|
|
141
142
|
);
|
|
142
143
|
}
|