@milaboratories/graph-maker 1.1.138 → 1.1.139
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/LassoControls/index.vue.js +15 -13
- package/dist/GraphMaker/components/LassoControls/index.vue.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +9 -3
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts +17 -2
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +13 -4
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +28 -7
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +6 -2
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +16 -2
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +14 -2
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.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 +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 +42 -38
- 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/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 +200 -199
- 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 +45 -44
- 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 +107 -106
- 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 +18 -18
- 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 +30 -29
- 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 +59 -55
- 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 +26 -26
- 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 -22
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/dots.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js +11 -14
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/index.js +57 -58
- 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 +44 -37
- 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-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 +22 -22
- 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 +89 -114
- 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 +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/scatterplot.js +4 -4
- 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/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 +1031 -1023
- 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/scatterplot/components/ChartLayersData.js
CHANGED
|
@@ -1,208 +1,193 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { r as
|
|
3
|
-
import { getLineShape as
|
|
4
|
-
import { getPointShape as
|
|
5
|
-
import { TextMeasurer as
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
const
|
|
1
|
+
import { j as n } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { r as x } from "../../_virtual/index.js";
|
|
3
|
+
import { getLineShape as j } from "../../utils/getLineShape.js";
|
|
4
|
+
import { getPointShape as f } from "../../utils/getPointShape.js";
|
|
5
|
+
import { TextMeasurer as v } from "../../utils/TextMeasurer/TextMeasurer.js";
|
|
6
|
+
import { getLabelMinX as L, getLabelMinY as S, createLabelPositioner as w } from "../utils/getVisibleLabels.js";
|
|
7
|
+
import E from "../../node_modules/d3-shape/src/line.js";
|
|
8
|
+
import C from "../../node_modules/d3-shape/src/curve/basis.js";
|
|
9
|
+
const k = 3, Y = x.memo(({
|
|
10
10
|
width: e,
|
|
11
11
|
height: a,
|
|
12
|
-
scales:
|
|
13
|
-
dotsData:
|
|
14
|
-
layersData:
|
|
12
|
+
scales: s,
|
|
13
|
+
dotsData: o,
|
|
14
|
+
layersData: r,
|
|
15
15
|
aesGetters: t,
|
|
16
|
-
onMouseEnterDot:
|
|
17
|
-
onMouseLeaveDot:
|
|
18
|
-
}) =>
|
|
19
|
-
if (
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
|
|
16
|
+
onMouseEnterDot: l,
|
|
17
|
+
onMouseLeaveDot: h
|
|
18
|
+
}) => r.map((d, i) => {
|
|
19
|
+
if (d.type === "dots")
|
|
20
|
+
return /* @__PURE__ */ n.jsx(
|
|
21
|
+
b,
|
|
22
22
|
{
|
|
23
23
|
width: e,
|
|
24
24
|
height: a,
|
|
25
|
-
scales:
|
|
26
|
-
dotsData:
|
|
27
|
-
layersData:
|
|
25
|
+
scales: s,
|
|
26
|
+
dotsData: o,
|
|
27
|
+
layersData: r,
|
|
28
28
|
aesGetters: t,
|
|
29
|
-
onMouseEnterDot:
|
|
30
|
-
onMouseLeaveDot:
|
|
29
|
+
onMouseEnterDot: l,
|
|
30
|
+
onMouseLeaveDot: h
|
|
31
31
|
},
|
|
32
|
-
|
|
32
|
+
d.type + i
|
|
33
33
|
);
|
|
34
|
-
if (
|
|
35
|
-
return /* @__PURE__ */
|
|
36
|
-
|
|
34
|
+
if (d.type === "curve")
|
|
35
|
+
return /* @__PURE__ */ n.jsx(
|
|
36
|
+
G,
|
|
37
37
|
{
|
|
38
|
-
layer:
|
|
39
|
-
scales:
|
|
38
|
+
layer: d,
|
|
39
|
+
scales: s,
|
|
40
40
|
aesGetters: t
|
|
41
41
|
},
|
|
42
|
-
|
|
42
|
+
d.type + i
|
|
43
43
|
);
|
|
44
|
-
})),
|
|
44
|
+
})), b = x.memo(({
|
|
45
45
|
width: e,
|
|
46
46
|
height: a,
|
|
47
|
-
scales:
|
|
48
|
-
dotsData:
|
|
49
|
-
layersData:
|
|
47
|
+
scales: s,
|
|
48
|
+
dotsData: o,
|
|
49
|
+
layersData: r,
|
|
50
50
|
aesGetters: t,
|
|
51
|
-
onMouseEnterDot:
|
|
52
|
-
onMouseLeaveDot:
|
|
51
|
+
onMouseEnterDot: l,
|
|
52
|
+
onMouseLeaveDot: h
|
|
53
53
|
}) => {
|
|
54
|
-
const { dots:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return u.useEffect(() => {
|
|
65
|
-
v(
|
|
66
|
-
M(
|
|
67
|
-
l,
|
|
68
|
-
o,
|
|
69
|
-
t,
|
|
70
|
-
n.find((m) => m.type === "dots")
|
|
71
|
-
)
|
|
72
|
-
);
|
|
73
|
-
}, [l, o, t, n]), u.useEffect(() => {
|
|
74
|
-
const m = g(c, e, a);
|
|
75
|
-
j(m);
|
|
76
|
-
}, [c, e, a]), /* @__PURE__ */ r.jsxs("g", { children: [
|
|
77
|
-
/* @__PURE__ */ r.jsx(
|
|
78
|
-
b,
|
|
54
|
+
const { dots: d } = o, [i, p] = x.useState(null), u = x.useMemo(() => r.findIndex((m) => m.type === "dots") !== -1, [r]), c = x.useMemo(() => u ? W(
|
|
55
|
+
d,
|
|
56
|
+
s,
|
|
57
|
+
e,
|
|
58
|
+
a,
|
|
59
|
+
t
|
|
60
|
+
) : [], [d, s.x, s.y, e, a, t, u]);
|
|
61
|
+
return /* @__PURE__ */ n.jsxs("g", { children: [
|
|
62
|
+
/* @__PURE__ */ n.jsx(
|
|
63
|
+
$,
|
|
79
64
|
{
|
|
80
|
-
scales:
|
|
81
|
-
dotsData:
|
|
65
|
+
scales: s,
|
|
66
|
+
dotsData: o,
|
|
82
67
|
aesGetters: t,
|
|
83
|
-
onMouseEnter:
|
|
84
|
-
onMouseLeave:
|
|
68
|
+
onMouseEnter: l,
|
|
69
|
+
onMouseLeave: h
|
|
85
70
|
}
|
|
86
71
|
),
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
|
|
72
|
+
/* @__PURE__ */ n.jsx(
|
|
73
|
+
B,
|
|
89
74
|
{
|
|
90
|
-
labels:
|
|
91
|
-
onMouseEnter: (m) =>
|
|
92
|
-
onMouseLeave: () =>
|
|
75
|
+
labels: c,
|
|
76
|
+
onMouseEnter: (m) => p(m),
|
|
77
|
+
onMouseLeave: () => p(null)
|
|
93
78
|
}
|
|
94
79
|
),
|
|
95
|
-
|
|
80
|
+
i && /* @__PURE__ */ n.jsxs(
|
|
96
81
|
"g",
|
|
97
82
|
{
|
|
98
|
-
transform: `translate(${
|
|
83
|
+
transform: `translate(${s.x(i.x)},${s.y(i.y)})`,
|
|
99
84
|
children: [
|
|
100
|
-
|
|
101
|
-
t.dotShape(
|
|
102
|
-
t.dotSize(
|
|
85
|
+
f(
|
|
86
|
+
t.dotShape(i.idx),
|
|
87
|
+
t.dotSize(i.idx) + 1,
|
|
103
88
|
"white",
|
|
104
89
|
"white"
|
|
105
90
|
),
|
|
106
|
-
|
|
107
|
-
t.dotShape(
|
|
108
|
-
t.dotSize(
|
|
109
|
-
t.dotColor(
|
|
91
|
+
f(
|
|
92
|
+
t.dotShape(i.idx),
|
|
93
|
+
t.dotSize(i.idx),
|
|
94
|
+
t.dotColor(i.idx)
|
|
110
95
|
)
|
|
111
96
|
]
|
|
112
97
|
},
|
|
113
98
|
"activeDot"
|
|
114
99
|
)
|
|
115
100
|
] });
|
|
116
|
-
}),
|
|
101
|
+
}), G = x.memo(({
|
|
117
102
|
layer: e,
|
|
118
103
|
scales: a,
|
|
119
|
-
aesGetters:
|
|
104
|
+
aesGetters: s
|
|
120
105
|
}) => {
|
|
121
106
|
if (e.type === "curve" && !e.info.smoothing)
|
|
122
|
-
return e.geoms.map((
|
|
107
|
+
return e.geoms.map((o, r) => /* @__PURE__ */ n.jsx("g", { children: /* @__PURE__ */ n.jsx(
|
|
123
108
|
"polyline",
|
|
124
109
|
{
|
|
125
|
-
points:
|
|
110
|
+
points: o.dots.map((t) => `${a.x(t.x)},${a.y(t.y)}`).join(" "),
|
|
126
111
|
fill: "none",
|
|
127
|
-
stroke:
|
|
112
|
+
stroke: s.lineColor(o.dots[0].idx),
|
|
128
113
|
strokeWidth: e.info.aes.lineWidth,
|
|
129
|
-
strokeDasharray:
|
|
114
|
+
strokeDasharray: j(e.info.aes.lineShape)
|
|
130
115
|
}
|
|
131
|
-
) },
|
|
116
|
+
) }, r));
|
|
132
117
|
if (e.type === "curve" && e.info.smoothing)
|
|
133
|
-
return e.geoms.map((
|
|
118
|
+
return e.geoms.map((o, r) => /* @__PURE__ */ n.jsx("g", { children: /* @__PURE__ */ n.jsx(
|
|
134
119
|
"path",
|
|
135
120
|
{
|
|
136
|
-
d:
|
|
121
|
+
d: E().curve(C).x((t) => a.x(t.x)).y((t) => a.y(t.y))(o.dots) ?? "",
|
|
137
122
|
fill: "none",
|
|
138
|
-
stroke:
|
|
123
|
+
stroke: s.lineColor(o.dots[0].idx),
|
|
139
124
|
strokeWidth: e.info.aes.lineWidth,
|
|
140
|
-
strokeDasharray:
|
|
125
|
+
strokeDasharray: j(e.info.aes.lineShape)
|
|
141
126
|
}
|
|
142
|
-
) },
|
|
143
|
-
}),
|
|
127
|
+
) }, r));
|
|
128
|
+
}), $ = x.memo(({
|
|
144
129
|
scales: e,
|
|
145
130
|
dotsData: a,
|
|
146
|
-
aesGetters:
|
|
147
|
-
onMouseEnter:
|
|
148
|
-
onMouseLeave:
|
|
131
|
+
aesGetters: s,
|
|
132
|
+
onMouseEnter: o,
|
|
133
|
+
onMouseLeave: r
|
|
149
134
|
}) => {
|
|
150
135
|
const { dots: t } = a;
|
|
151
|
-
return /* @__PURE__ */
|
|
152
|
-
|
|
136
|
+
return /* @__PURE__ */ n.jsx(n.Fragment, { children: t.map((l, h) => /* @__PURE__ */ n.jsx(
|
|
137
|
+
z,
|
|
153
138
|
{
|
|
154
|
-
dot:
|
|
139
|
+
dot: l,
|
|
155
140
|
scales: e,
|
|
156
|
-
aesGetters:
|
|
157
|
-
onMouseEnter:
|
|
158
|
-
onMouseLeave:
|
|
141
|
+
aesGetters: s,
|
|
142
|
+
onMouseEnter: o,
|
|
143
|
+
onMouseLeave: r
|
|
159
144
|
},
|
|
160
|
-
|
|
145
|
+
h
|
|
161
146
|
)) });
|
|
162
|
-
}),
|
|
147
|
+
}), z = ({
|
|
163
148
|
dot: e,
|
|
164
149
|
scales: a,
|
|
165
|
-
aesGetters:
|
|
166
|
-
onMouseEnter:
|
|
167
|
-
onMouseLeave:
|
|
168
|
-
}) => /* @__PURE__ */
|
|
150
|
+
aesGetters: s,
|
|
151
|
+
onMouseEnter: o,
|
|
152
|
+
onMouseLeave: r
|
|
153
|
+
}) => /* @__PURE__ */ n.jsx(
|
|
169
154
|
"g",
|
|
170
155
|
{
|
|
171
156
|
transform: `translate(${a.x(e.x)},${a.y(e.y)})`,
|
|
172
157
|
opacity: e.dimmed ? 0.3 : 1,
|
|
173
|
-
onMouseOver: () =>
|
|
174
|
-
onMouseLeave: () =>
|
|
175
|
-
children:
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
158
|
+
onMouseOver: () => o == null ? void 0 : o(e),
|
|
159
|
+
onMouseLeave: () => r == null ? void 0 : r(e),
|
|
160
|
+
children: f(
|
|
161
|
+
s.dotShape(e.idx),
|
|
162
|
+
s.dotSize(e.idx),
|
|
163
|
+
s.dotColor(e.idx)
|
|
179
164
|
)
|
|
180
165
|
}
|
|
181
|
-
),
|
|
166
|
+
), B = x.memo(({
|
|
182
167
|
labels: e,
|
|
183
168
|
onMouseEnter: a,
|
|
184
|
-
onMouseLeave:
|
|
185
|
-
}) => /* @__PURE__ */
|
|
186
|
-
const { name: t, height:
|
|
187
|
-
return /* @__PURE__ */
|
|
188
|
-
/* @__PURE__ */
|
|
169
|
+
onMouseLeave: s
|
|
170
|
+
}) => /* @__PURE__ */ n.jsx(n.Fragment, { children: e.map((o, r) => {
|
|
171
|
+
const { name: t, height: l, width: h } = o;
|
|
172
|
+
return /* @__PURE__ */ n.jsxs("g", { transform: `translate(${L(o)},${S(o)})`, children: [
|
|
173
|
+
/* @__PURE__ */ n.jsx(
|
|
189
174
|
"rect",
|
|
190
175
|
{
|
|
191
176
|
x: "0",
|
|
192
177
|
y: "0",
|
|
193
|
-
width:
|
|
194
|
-
height:
|
|
178
|
+
width: h,
|
|
179
|
+
height: l,
|
|
195
180
|
fill: "transparent",
|
|
196
181
|
stroke: "none",
|
|
197
|
-
onMouseEnter: () => a(
|
|
198
|
-
onMouseLeave: () => o
|
|
182
|
+
onMouseEnter: () => a(o.dot),
|
|
183
|
+
onMouseLeave: () => s(o.dot)
|
|
199
184
|
}
|
|
200
185
|
),
|
|
201
|
-
/* @__PURE__ */
|
|
186
|
+
/* @__PURE__ */ n.jsx(
|
|
202
187
|
"text",
|
|
203
188
|
{
|
|
204
189
|
x: 0,
|
|
205
|
-
y:
|
|
190
|
+
y: l / 2,
|
|
206
191
|
stroke: "white",
|
|
207
192
|
strokeWidth: 2,
|
|
208
193
|
paintOrder: "stroke",
|
|
@@ -213,38 +198,35 @@ const p = 3, T = u.memo(({
|
|
|
213
198
|
children: t
|
|
214
199
|
}
|
|
215
200
|
)
|
|
216
|
-
] },
|
|
217
|
-
}) }))
|
|
218
|
-
function
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
const d = t.label;
|
|
224
|
-
if (!d)
|
|
201
|
+
] }, r);
|
|
202
|
+
}) }));
|
|
203
|
+
function W(e, a, s, o, r) {
|
|
204
|
+
const t = new v("16px Manrope"), l = w(s, o), h = [];
|
|
205
|
+
for (let d = 0; d < e.length; d++) {
|
|
206
|
+
const i = e[d];
|
|
207
|
+
if (i.label == null)
|
|
225
208
|
continue;
|
|
226
|
-
const i =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
padding: o.dotSize(t.data) + p
|
|
209
|
+
const p = String(i.label), u = t.getTextMetrics(p), c = a.x(i.x), m = a.y(i.y), M = u.width, g = u.actualBoundingBoxAscent + u.actualBoundingBoxDescent, D = r.dotSize(i.idx) + k, y = l(c, m, M, g, D);
|
|
210
|
+
y && h.push({
|
|
211
|
+
x: c,
|
|
212
|
+
y: m,
|
|
213
|
+
dot: i,
|
|
214
|
+
name: p,
|
|
215
|
+
width: M,
|
|
216
|
+
height: g,
|
|
217
|
+
padding: D,
|
|
218
|
+
xPosition: y[0],
|
|
219
|
+
yPosition: y[1]
|
|
238
220
|
});
|
|
239
221
|
}
|
|
240
|
-
return
|
|
222
|
+
return h;
|
|
241
223
|
}
|
|
242
224
|
export {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
225
|
+
G as ChartCurveLayer,
|
|
226
|
+
z as ChartDot,
|
|
227
|
+
$ as ChartDots,
|
|
228
|
+
B as ChartLabels,
|
|
229
|
+
b as ChartLayerDots,
|
|
230
|
+
Y as ChartLayersData
|
|
249
231
|
};
|
|
250
232
|
//# sourceMappingURL=ChartLayersData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartLayersData.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useEffect, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { DotsLayerData, ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { getFilteredLabels } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n\n const [allLabels, setAllLabels] = useState<Label[]>(() =>\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n const [labels, setLabels] = useState<Label[]>(() =>\n getFilteredLabels(allLabels, width, height, LABEL_OFFSET, LABEL_OFFSET)\n );\n\n useEffect(() => {\n setAllLabels(\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n }, [dots, scales, aesGetters, layersData]);\n\n useEffect(() => {\n const filteredLabels = getFilteredLabels(allLabels, width, height);\n setLabels(filteredLabels);\n }, [allLabels, width, height]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data),\n aesGetters.dotColor(activeDot.data)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.data),\n aesGetters.dotSize(dot.data),\n aesGetters.dotColor(dot.data)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, bbox, width} = label;\n return (\n <g key={idx} transform={`translate(${bbox.minX},${bbox.minY})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nconst textMeasurer = new TextMeasurer('16px Manrope');\nfunction getAllPossibleLabels(dots: Dot[], scales: ChartScales, aesGetters: AesGetters, layer?: DotsLayerData) {\n if (!layer) {\n return [];\n }\n const labels: Label[] = [];\n for (const dot of dots) {\n const text = dot.label;\n if (!text) {\n continue;\n }\n const metrics = textMeasurer.getTextMetrics(String(text));\n labels.push({\n name: String(text),\n width: metrics?.width ?? 0,\n height: (metrics?.actualBoundingBoxAscent ?? 0) + (metrics?.actualBoundingBoxDescent ?? 0),\n x: scales.x(dot.x),\n y: scales.y(dot.y),\n xPosition: 'right',\n yPosition: 'middle',\n bbox: {minX: 0, maxX: 0, minY: 0, maxY: 0},\n dot,\n padding: aesGetters.dotSize(dot.data) + LABEL_OFFSET,\n } as Label);\n }\n return labels;\n}"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","allLabels","setAllLabels","getAllPossibleLabels","labels","setLabels","getFilteredLabels","useEffect","filteredLabels","a","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","bbox","textMeasurer","TextMeasurer","text","metrics"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ChartLayersData.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useMemo, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { createLabelPositioner, getLabelMinX, getLabelMinY } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n const hasLayerDots = useMemo(() => layersData.findIndex(layer => layer.type === 'dots') !== -1, [layersData]);\n \n const labels = useMemo<Label[]>(() =>{\n if (!hasLayerDots) return [];\n return computeLabels(\n dots,\n scales,\n width,\n height,\n aesGetters,\n );\n }, [dots, scales.x, scales.y, width, height, aesGetters, hasLayerDots]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx),\n aesGetters.dotColor(activeDot.idx)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.idx),\n aesGetters.dotSize(dot.idx),\n aesGetters.dotColor(dot.idx)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, width} = label;\n return (\n <g key={idx} transform={`translate(${getLabelMinX(label)},${getLabelMinY(label)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nfunction computeLabels(dots: Dot[], scales: ChartScales, chartWidth: number, chartHeight: number, aesGetters: AesGetters): Label[] {\n const textMeasurer = new TextMeasurer('16px Manrope');\n const getPosition = createLabelPositioner(chartWidth, chartHeight);\n const labels: Label[] = [];\n\n for (let i = 0; i < dots.length; i++) {\n const dot = dots[i];\n if (dot.label == null) {\n continue;\n }\n const name = String(dot.label);\n const metrics = textMeasurer.getTextMetrics(name);\n const x = scales.x(dot.x);\n const y = scales.y(dot.y);\n const w = metrics.width;\n const h = (metrics.actualBoundingBoxAscent) + (metrics.actualBoundingBoxDescent);\n const p = aesGetters.dotSize(dot.idx) + LABEL_OFFSET;\n const position = getPosition(x, y, w, h, p);\n if (!position) {\n continue;\n }\n\n labels.push({\n x,\n y,\n dot,\n name,\n width: w,\n height: h,\n padding: p,\n xPosition: position[0],\n yPosition: position[1],\n } satisfies Label);\n }\n\n return labels;\n}\n"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","hasLayerDots","useMemo","labels","computeLabels","s","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","getLabelMinX","getLabelMinY","chartWidth","chartHeight","textMeasurer","TextMeasurer","getPosition","createLabelPositioner","i","metrics","x","y","w","h","p","position"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTooltip.js
CHANGED
|
@@ -1,43 +1,45 @@
|
|
|
1
|
-
import { j as
|
|
1
|
+
import { j as l } from "../../node_modules/react/jsx-runtime.js";
|
|
2
2
|
import { r as n } from "../../_virtual/index.js";
|
|
3
3
|
import { Tooltip as d } from "../../common/Tooltip.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
4
|
+
import { useDataFrame as p } from "../../common/useDataFrame.js";
|
|
5
|
+
import { formatColumnValue as h } from "../utils/formatColumnValue.js";
|
|
6
|
+
import { ChartDot as u } from "./ChartLayersData.js";
|
|
7
|
+
import { format as x } from "../../node_modules/d3-format/src/defaultLocale.js";
|
|
8
|
+
const g = { left: 0, right: 0, top: 0, bottom: 0 }, F = n.memo(({
|
|
7
9
|
tooltipsData: e,
|
|
8
|
-
tooltips:
|
|
10
|
+
tooltips: i,
|
|
9
11
|
keyColumn: r,
|
|
10
12
|
chartSizes: s,
|
|
11
13
|
dimensions: t,
|
|
12
|
-
scales:
|
|
13
|
-
aesGetters:
|
|
14
|
+
scales: a,
|
|
15
|
+
aesGetters: m
|
|
14
16
|
}) => {
|
|
15
|
-
const
|
|
16
|
-
left: t.left +
|
|
17
|
-
right: s.totalWidth - (t.left +
|
|
18
|
-
top: t.top +
|
|
19
|
-
bottom: s.totalHeight - (t.top +
|
|
20
|
-
}, [t,
|
|
21
|
-
return !t || !
|
|
22
|
-
e.fixed && /* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
17
|
+
const c = p(), o = t == null ? void 0 : t.padding, f = n.useMemo(() => !t || !a || !o ? g : {
|
|
18
|
+
left: t.left + o.left,
|
|
19
|
+
right: s.totalWidth - (t.left + o.left),
|
|
20
|
+
top: t.top + o.top,
|
|
21
|
+
bottom: s.totalHeight - (t.top + o.top)
|
|
22
|
+
}, [t, o, s]);
|
|
23
|
+
return !t || !a || !o || !e.selectedData || !i.show ? null : /* @__PURE__ */ l.jsxs(l.Fragment, { children: [
|
|
24
|
+
e.fixed && /* @__PURE__ */ l.jsxs("g", { transform: `translate(${t.left + o.left}, ${t.top + o.top})`, children: [
|
|
25
|
+
/* @__PURE__ */ l.jsx("rect", { width: s.chartWidth, height: s.chartHeight, fill: "rgba(255, 255, 255, 0.8)" }),
|
|
26
|
+
/* @__PURE__ */ l.jsx(
|
|
27
|
+
u,
|
|
26
28
|
{
|
|
27
29
|
dot: e.selectedData,
|
|
28
|
-
scales:
|
|
29
|
-
aesGetters:
|
|
30
|
+
scales: a,
|
|
31
|
+
aesGetters: m
|
|
30
32
|
}
|
|
31
33
|
)
|
|
32
34
|
] }),
|
|
33
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ l.jsx(
|
|
34
36
|
d,
|
|
35
37
|
{
|
|
36
|
-
content:
|
|
37
|
-
x:
|
|
38
|
-
y:
|
|
38
|
+
content: D(c, e.selectedData, i == null ? void 0 : i.content),
|
|
39
|
+
x: a.x(e.selectedData.x),
|
|
40
|
+
y: a.y(e.selectedData.y),
|
|
39
41
|
active: !0,
|
|
40
|
-
sideDistances:
|
|
42
|
+
sideDistances: f,
|
|
41
43
|
fixed: e.fixed,
|
|
42
44
|
onClose: e.onClose,
|
|
43
45
|
container: null
|
|
@@ -45,14 +47,15 @@ const h = { left: 0, right: 0, top: 0, bottom: 0 }, y = n.memo(({
|
|
|
45
47
|
)
|
|
46
48
|
] });
|
|
47
49
|
});
|
|
48
|
-
function
|
|
49
|
-
const s =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
function D(e, i, r = []) {
|
|
51
|
+
const s = [];
|
|
52
|
+
for (const t of r) {
|
|
53
|
+
const a = t != null && t.format ? x(t.format) : void 0;
|
|
54
|
+
s.push(`${t.label}: ${h(e, i.idx, t, a)}`);
|
|
55
|
+
}
|
|
56
|
+
return s;
|
|
54
57
|
}
|
|
55
58
|
export {
|
|
56
|
-
|
|
59
|
+
F as ChartTooltip
|
|
57
60
|
};
|
|
58
61
|
//# sourceMappingURL=ChartTooltip.js.map
|
package/dist/node_modules/@milaboratories/miplots4/dist/scatterplot/components/ChartTooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTooltip.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport type {
|
|
1
|
+
{"version":3,"file":"ChartTooltip.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import {format} from 'd3-format';\nimport { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { useDataFrame } from '../../common/useDataFrame';\nimport type { DataFrame } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { Dot } from '../dots';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport {formatColumnValue} from '../utils/formatColumnValue';\nimport { ChartDot } from './ChartLayersData';\nimport type {\n AesGetters,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\ninterface Props {\n tooltipsData: TooltipsData<Dot>;\n dimensions: undefined | ChartDimensionsData;\n scales: undefined | ChartScales;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n aesGetters: AesGetters;\n}\n\nconst ZERO_SIDE_DISTANCES = { left: 0, right: 0, top: 0, bottom: 0 };\n\nexport const ChartTooltip = memo(({\n tooltipsData,\n tooltips,\n keyColumn,\n chartSizes,\n dimensions,\n scales,\n aesGetters,\n}: Props) => {\n const dataFrame = useDataFrame();\n const padding = dimensions?.padding;\n\n const sideDistances = useMemo(() => {\n if (!dimensions || !scales || !padding) {\n return ZERO_SIDE_DISTANCES;\n }\n\n return ({\n left: dimensions.left + padding.left,\n right: chartSizes.totalWidth - (dimensions.left + padding.left),\n top: dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (dimensions.top + padding.top),\n });\n }, [dimensions, padding, chartSizes]);\n\n if (!dimensions || !scales || !padding || !tooltipsData.selectedData || !tooltips.show) {\n return null;\n }\n\n return (\n <>\n {tooltipsData.fixed && \n <g transform={`translate(${dimensions.left + padding.left}, ${dimensions.top + padding.top})`}>\n <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>\n <ChartDot\n dot={tooltipsData.selectedData}\n scales={scales}\n aesGetters={aesGetters}\n />\n </g>\n }\n <Tooltip\n content={getTooltipContent(dataFrame, tooltipsData.selectedData, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x)}\n y={scales.y(tooltipsData.selectedData.y)}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={null}\n />\n </>\n );\n});\n\nfunction getTooltipContent(dataFrame: DataFrame, dot: Dot, columnsList: ColumnName[] = []) {\n const lines: string[] = [];\n for (const column of columnsList) {\n const columnFormatter = column?.format ? format(column.format) : undefined;\n lines.push(`${column.label}: ${formatColumnValue(dataFrame, dot.idx, column, columnFormatter)}`);\n }\n return lines;\n}\n"],"names":["ZERO_SIDE_DISTANCES","ChartTooltip","memo","tooltipsData","tooltips","keyColumn","chartSizes","dimensions","scales","aesGetters","dataFrame","useDataFrame","padding","sideDistances","useMemo","jsxs","Fragment","jsx","ChartDot","Tooltip","getTooltipContent","dot","columnsList","lines","column","columnFormatter","format","formatColumnValue"],"mappings":";;;;;;;AA8BA,MAAMA,IAAsB,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA,GAEpDC,IAAeC,EAAAA,KAAK,CAAC;AAAA,EAC9B,cAAAC;AAAAA,EACA,UAAAC;AAAAA,EACA,WAAAC;AAAAA,EACA,YAAAC;AAAAA,EACA,YAAAC;AAAAA,EACA,QAAAC;AAAAA,EACA,YAAAC;AACJ,MAAa;AACT,QAAMC,IAAYC,KACZC,IAAUL,KAAA,OAAA,SAAAA,EAAY,SAEtBM,IAAgBC,EAAAA,QAAQ,MACtB,CAACP,KAAc,CAACC,KAAU,CAACI,IACpBZ,IAGH;AAAA,IACJ,MAAMO,EAAW,OAAOK,EAAQ;AAAA,IAChC,OAAON,EAAW,cAAcC,EAAW,OAAOK,EAAQ;AAAA,IAC1D,KAAKL,EAAW,MAAMK,EAAQ;AAAA,IAC9B,QAAQN,EAAW,eAAeC,EAAW,MAAMK,EAAQ;AAAA,EAAA,GAEhE,CAACL,GAAYK,GAASN,CAAU,CAAC;AAEpC,SAAI,CAACC,KAAc,CAACC,KAAU,CAACI,KAAW,CAACT,EAAa,gBAAgB,CAACC,EAAS,OACvE,OAIPW,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACK,UAAA;AAAA,IAAAb,EAAa,SACVY,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaR,EAAW,OAAOK,EAAQ,IAAI,KAAKL,EAAW,MAAMK,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOX,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,4BAA0B;AAAA,MACnGW,gBAAAA,EAAAA;AAAAA,QAACC;AAAAA,QAAA;AAAA,UACG,KAAKf,EAAa;AAAA,UAClB,QAAAK;AAAAA,UACA,YAAAC;AAAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IAEJQ,gBAAAA,EAAAA;AAAAA,MAACE;AAAAA,MAAA;AAAA,QACG,SAASC,EAAkBV,GAAWP,EAAa,cAAcC,KAAA,OAAA,SAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,QAAM;AAAA,QACN,eAAAU;AAAAA,QACA,OAAOV,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEnB;AAER,CAAC;AAED,SAASiB,EAAkBV,GAAsBW,GAAUC,IAA4B,CAAA,GAAI;AACvF,QAAMC,IAAkB,CAAA;AACxB,aAAWC,KAAUF,GAAa;AAC9B,UAAMG,IAAkBD,KAAA,QAAAA,EAAQ,SAASE,EAAOF,EAAO,MAAM,IAAI;AACjED,IAAAA,EAAM,KAAK,GAAGC,EAAO,KAAK,KAAKG,EAAkBjB,GAAWW,EAAI,KAAKG,GAAQC,CAAe,CAAC,EAAE;AAAA,EACnG;AACA,SAAOF;AACX;","x_google_ignoreList":[0]}
|