@milaboratories/miplots4 1.0.164 → 1.0.166
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index10.js +2 -5
- package/dist/_virtual/index10.js.map +1 -1
- package/dist/_virtual/index5.js +5 -2
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +4 -4
- package/dist/_virtual/index7.js +1 -1
- package/dist/_virtual/index8.js +4 -4
- package/dist/_virtual/index9.js +3 -3
- package/dist/bubble/components/ChartsGroup.js +21 -21
- package/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/common/Tooltip.d.ts +2 -1
- package/dist/common/Tooltip.js +147 -143
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +11 -31
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/components/Chart.js +143 -143
- package/dist/discrete/components/Chart.js.map +1 -1
- package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
- package/dist/heatmap/components/ChartsGroup.js +9 -9
- package/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -4
- package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
- package/dist/scatterplot/components/ChartTooltip.js +34 -33
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +31 -31
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +2 -2
- package/dist/scatterplot/dots.js +9 -9
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.js +1 -1
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/utils/sortDotsByGrouping.d.ts +2 -1
- package/dist/scatterplot/utils/sortDotsByGrouping.js +22 -11
- package/dist/scatterplot/utils/sortDotsByGrouping.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +4 -3
- package/dist/scatterplot-umap/ChartRenderer.js +169 -164
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.js +49 -49
- package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.js +49 -49
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +39 -38
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/constants.d.ts +6 -5
- package/dist/scatterplot-umap/constants.js +12 -11
- package/dist/scatterplot-umap/constants.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +1 -0
- package/dist/scatterplot-umap/index.js +103 -83
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/types/bubble.js +32 -37
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +42 -0
- package/dist/types/common.js +39 -35
- package/dist/types/common.js.map +1 -1
- package/dist/types/discrete.d.ts +680 -70
- package/dist/types/discrete.js +141 -141
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.js +54 -59
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/scatterplot-umap.js +19 -24
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.js +41 -46
- package/dist/types/scatterplot.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from '../../common/BandAxis';\nimport {BarElement} from './layers/BarElement';\nimport {BinnedDotsElement} from './layers/BinnedDotsElement';\nimport {BoxElement} from './layers/BoxElement';\nimport {DotsGroupElement} from './layers/DotsGroupElement';\nimport {ErrorBarElement} from './layers/ErrorBarElement';\nimport {LineElement} from './layers/LineElement';\nimport {LogoElement} from './layers/LogoElement';\nimport {PairedPointsElement} from './layers/PairedPointsElement';\nimport {SinaElement} from './layers/SinaElement';\nimport {StackedAreaElement} from './layers/StackedAreaElement';\nimport {StackedBarElement} from './layers/StackedBarElement';\nimport {StatsPValue} from './layers/StatsPValue';\nimport {NumberAxis} from './NumberAxis';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, Margins} from './types';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport {getPairwiseStatLevelsCount} from '../utils/statsPValue';\nimport {ViolinElement} from './layers/ViolinElement';\nimport {DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, P_VALUE_LINE_HEIGHT, TITLE_LINE} from '../constants';\nimport type {\n BarsData,\n BinnedDotsData,\n BoxesData,\n DotsData,\n ErrorBarsData,\n LayerData,\n LinesData, LogoPlotData,\n PairedPointsData,\n SinaData, StackedAreaData,\n StackedBarsData,\n StatsData,\n ViolinsData,\n} from '../layers/types';\nimport type {GroupingData} from '../../types';\nimport type {ColumnName, FrameType, Orientation} from '../../types';\nimport {Grid} from './Grid';\nimport React, {useState} from 'react';\n\ninterface ChartProps {\n facetSettings?: DiscreteSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n dimensions: ChartDimensionsData;\n margins: Margins;\n scales: ChartScales;\n orientation: Orientation;\n facetKey: string;\n facetTitle: string[]; // can be multiline\n layersData: LayerData[];\n statsData: StatsData[];\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'];\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n keyColumn: ColumnName | null;\n tooltips: DiscreteSettingsImpl['chartSettings']['tooltips'];\n tooltipsContainer?: Element;\n xLabels: Record<string, string[]>;\n onlyPositive: boolean;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n}\n\nfunction getYShiftsForStats(statsData: StatsData[], primaryKeys: string[], facetKey: string) {\n if (!statsData.length) {\n return [];\n }\n const yShifts = [0];\n for (let i = 0; i < statsData.length - 1; i++) {\n const stat = statsData[i];\n if (stat.meta.statType === 'pairwise') {\n const lineCount = getPairwiseStatLevelsCount(\n stat.values[facetKey],\n primaryKeys,\n stat.meta.significanceLevels,\n stat.meta.ns\n );\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT * lineCount);\n } else {\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT);\n }\n }\n return yShifts;\n}\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\n\nexport function Chart({\n facetSettings,\n facetTitle,\n dimensions,\n scales,\n orientation,\n layersData,\n statsData,\n facetKey,\n xAxis,\n yAxis,\n frameType,\n tooltips,\n tooltipsContainer,\n keyColumn,\n chartSizes,\n margins,\n xLabels,\n onlyPositive,\n secondaryGrouping,\n tooltipsData,\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n const isVertical = orientation === 'vertical';\n const yShifts = getYShiftsForStats(statsData, scales.xPrimary.domain(), facetKey);\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const xTitle = getAxisTitle(xAxis.title);\n const yTitle = getAxisTitle(yAxis.title);\n const needLeftAxis =\n dimensions.chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needBottomAxis =\n dimensions.chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needLeftAxisTitle = dimensions.chartEdgeSides.includes('left');\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n\n const {width, height} = dimensions.inner;\n const {left, top, padding} = dimensions;\n\n const sideDistances = {\n left: margins.left + left + padding.left,\n right: chartSizes.totalWidth - (margins.left + left + padding.left),\n top: margins.top + top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + top + padding.top),\n };\n\n const chartTransform = `translate(${left + padding.left},${top + padding.top})`;\n\n const debug = false;\n return (\n <g transform={chartTransform}>\n {debug && (\n <g>\n <rect width={width} height={padding.top} x={0} y={-padding.top} fill=\"none\" stroke=\"black\" />\n <rect width={width} height={padding.bottom} x={0} y={height} fill=\"none\" stroke=\"black\" />\n <rect width={padding.left} height={height} x={-padding.left} y={0} fill=\"none\" stroke=\"black\" />\n <rect width={padding.right} height={height} x={width} y={0} fill=\"none\" stroke=\"black\" />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {isVertical ? xTitle : yTitle}\n </text>\n )}\n {needBottomAxisTitle && debug && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n {needLeftAxisTitle && (\n <text\n x={-padding.left + TITLE_LINE / 2}\n y={height / 2}\n transform={`rotate(-90,${-padding.left + TITLE_LINE / 2},${height / 2})`}\n >\n {isVertical ? yTitle : xTitle}\n </text>\n )}\n {needLeftAxisTitle && debug && (\n <rect x={-padding.left} y=\"0\" width={TITLE_LINE} height={height} fill=\"none\" stroke=\"black\" />\n )}\n </g>\n <Grid\n orientation={orientation}\n width={width}\n height={height}\n scaleX={scales.xPrimary}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n {isVertical ? (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"bottom\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n ) : (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"bottom\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n {isVertical ? (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n ) : (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"left\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n )}\n </g>\n )}\n <g>\n {layersData.map(layerData => (\n <g key={layerData.type}>\n {layerData.type === 'box' &&\n (layerData as BoxesData).geoms[facetKey].map(box => (\n <BoxElement\n key={box.key}\n facetKey={facetKey}\n box={box}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BoxesData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.box.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'violin' &&\n (layerData as ViolinsData).geoms[facetKey].map(violin => (\n <ViolinElement\n key={violin.key}\n facetKey={facetKey}\n violin={violin}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n maxViolinDensity={(layerData as ViolinsData).meta.maxDensity}\n aes={(layerData as ViolinsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.violin.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'dot' &&\n (layerData as DotsData).geoms[facetKey].map(dotsGroup => (\n <DotsGroupElement\n key={dotsGroup.key}\n facetKey={facetKey}\n geom={dotsGroup}\n scales={scales}\n orientation={orientation}\n aes={(layerData as DotsData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.dot.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'line' &&\n (layerData as LinesData).geoms[facetKey].map(line => (\n <LineElement\n key={line.key}\n facetKey={facetKey}\n line={line}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as LinesData).aes}\n showTooltips={tooltips.line.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'errorbar' &&\n (layerData as ErrorBarsData).geoms[facetKey].map(errorBar => (\n <ErrorBarElement\n key={errorBar.key}\n facetKey={facetKey}\n errorBar={errorBar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as ErrorBarsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.errorBar.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'bar' &&\n (layerData as BarsData).geoms[facetKey].map(bar => (\n <BarElement\n key={bar.key}\n bar={bar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BarsData).aes}\n />\n ))}\n {layerData.type === 'stackedBar' &&\n (layerData as StackedBarsData).geoms[facetKey].map(geom => (\n <StackedBarElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as StackedBarsData).aes}\n normalize={(layerData as StackedBarsData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'stackedArea' && (\n <StackedAreaElement\n key='stackedArea'\n facetKey={facetKey}\n layerData={layerData as StackedAreaData}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n )}\n {layerData.type === 'binnedDots' &&\n (layerData as BinnedDotsData).geoms[facetKey].map(geom => (\n <BinnedDotsElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BinnedDotsData).aes}\n binsCount={(layerData as BinnedDotsData).meta.binsCount}\n min={(layerData as BinnedDotsData).meta.minY}\n max={(layerData as BinnedDotsData).meta.maxY}\n hasKeyFromColumn={(layerData as BinnedDotsData).meta.hasKeyFromColumn}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'pairedPoints' &&\n (layerData as PairedPointsData).geoms[facetKey].map(geom => (\n <PairedPointsElement\n key={geom.id}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as PairedPointsData).aes}\n showTooltips={tooltips.pairedPoints.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'sina' &&\n (layerData as SinaData).geoms[facetKey].map(geom => (\n <SinaElement\n key={geom.key}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as SinaData).aes}\n hasKeyFromColumn={keyColumn !== null}\n showTooltips={false}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'logo' &&\n (layerData as LogoPlotData).geoms[facetKey].map(geom => (\n <LogoElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as LogoPlotData).aes}\n normalize={(layerData as LogoPlotData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.logo.show}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n </g>\n ))}\n {statsData.map((statsLayer, idx) => (\n <StatsPValue\n yShift={yShifts[idx]}\n scales={scales}\n orientation={orientation}\n statType={statsLayer.meta.statType}\n values={statsLayer.values[facetKey]}\n testMethod={statsLayer.meta.testMethod}\n format={statsLayer.meta.format}\n ns={statsLayer.meta.ns}\n key={`${statsLayer.meta.statType}_${statsLayer.meta.testMethod}`}\n significanceLevels={statsLayer.meta.significanceLevels}\n />\n ))}\n </g>\n <g>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g\n ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["getYShiftsForStats","statsData","primaryKeys","facetKey","yShifts","stat","lineCount","getPairwiseStatLevelsCount","P_VALUE_LINE_HEIGHT","getAxisTitle","title","Chart","facetSettings","facetTitle","dimensions","scales","orientation","layersData","xAxis","yAxis","frameType","tooltips","tooltipsContainer","keyColumn","chartSizes","margins","xLabels","onlyPositive","secondaryGrouping","tooltipsData","activeElementContainer","setActiveElementContainer","useState","isVertical","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","xTitle","yTitle","needLeftAxis","needBottomAxis","needLeftAxisTitle","needBottomAxisTitle","width","height","left","top","padding","sideDistances","chartTransform","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","Grid","BandAxis","NumberAxis","layerData","box","BoxElement","violin","ViolinElement","dotsGroup","DotsGroupElement","line","LineElement","errorBar","ErrorBarElement","bar","BarElement","geom","StackedBarElement","StackedAreaElement","BinnedDotsElement","PairedPointsElement","SinaElement","LogoElement","statsLayer","StatsPValue","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from '../../common/BandAxis';\nimport {BarElement} from './layers/BarElement';\nimport {BinnedDotsElement} from './layers/BinnedDotsElement';\nimport {BoxElement} from './layers/BoxElement';\nimport {DotsGroupElement} from './layers/DotsGroupElement';\nimport {ErrorBarElement} from './layers/ErrorBarElement';\nimport {LineElement} from './layers/LineElement';\nimport {LogoElement} from './layers/LogoElement';\nimport {PairedPointsElement} from './layers/PairedPointsElement';\nimport {SinaElement} from './layers/SinaElement';\nimport {StackedAreaElement} from './layers/StackedAreaElement';\nimport {StackedBarElement} from './layers/StackedBarElement';\nimport {StatsPValue} from './layers/StatsPValue';\nimport {NumberAxis} from './NumberAxis';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, Margins} from './types';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport {getPairwiseStatLevelsCount} from '../utils/statsPValue';\nimport {ViolinElement} from './layers/ViolinElement';\nimport {DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, P_VALUE_LINE_HEIGHT, TITLE_LINE} from '../constants';\nimport type {\n BarsData,\n BinnedDotsData,\n BoxesData,\n DotsData,\n ErrorBarsData,\n LayerData,\n LinesData, LogoPlotData,\n PairedPointsData,\n SinaData, StackedAreaData,\n StackedBarsData,\n StatsData,\n ViolinsData,\n} from '../layers/types';\nimport type {GroupingData} from '../../types';\nimport type {ColumnName, FrameType, Orientation} from '../../types';\nimport {Grid} from './Grid';\nimport React, {useState} from 'react';\n\ninterface ChartProps {\n facetSettings?: DiscreteSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n dimensions: ChartDimensionsData;\n margins: Margins;\n scales: ChartScales;\n orientation: Orientation;\n facetKey: string;\n facetTitle: string[]; // can be multiline\n layersData: LayerData[];\n statsData: StatsData[];\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'];\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n keyColumn: ColumnName | null;\n tooltips: DiscreteSettingsImpl['chartSettings']['tooltips'];\n tooltipsContainer?: Element;\n xLabels: Record<string, string[]>;\n onlyPositive: boolean;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n}\n\nfunction getYShiftsForStats(statsData: StatsData[], primaryKeys: string[], facetKey: string) {\n if (!statsData.length) {\n return [];\n }\n const yShifts = [0];\n for (let i = 0; i < statsData.length - 1; i++) {\n const stat = statsData[i];\n if (stat.meta.statType === 'pairwise') {\n const lineCount = getPairwiseStatLevelsCount(\n stat.values[facetKey],\n primaryKeys,\n stat.meta.significanceLevels,\n stat.meta.ns\n );\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT * lineCount);\n } else {\n yShifts.push(yShifts[yShifts.length - 1] + P_VALUE_LINE_HEIGHT);\n }\n }\n return yShifts;\n}\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\n\nexport function Chart({\n facetSettings,\n facetTitle,\n dimensions,\n scales,\n orientation,\n layersData,\n statsData,\n facetKey,\n xAxis,\n yAxis,\n frameType,\n tooltips,\n tooltipsContainer,\n keyColumn,\n chartSizes,\n margins,\n xLabels,\n onlyPositive,\n secondaryGrouping,\n tooltipsData,\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n const isVertical = orientation === 'vertical';\n const yShifts = getYShiftsForStats(statsData, scales.xPrimary.domain(), facetKey);\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const xTitle = getAxisTitle(xAxis.title);\n const yTitle = getAxisTitle(yAxis.title);\n const needLeftAxis =\n dimensions.chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needBottomAxis =\n dimensions.chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needLeftAxisTitle = dimensions.chartEdgeSides.includes('left');\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n\n const {width, height} = dimensions.inner;\n const {left, top, padding} = dimensions;\n\n const sideDistances = {\n left: margins.left + left + padding.left,\n right: chartSizes.totalWidth - (margins.left + left + padding.left),\n top: margins.top + top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + top + padding.top),\n };\n\n const chartTransform = `translate(${left + padding.left},${top + padding.top})`;\n\n const debug = false;\n return (\n <g transform={chartTransform}>\n {debug && (\n <g>\n <rect width={width} height={padding.top} x={0} y={-padding.top} fill=\"none\" stroke=\"black\" />\n <rect width={width} height={padding.bottom} x={0} y={height} fill=\"none\" stroke=\"black\" />\n <rect width={padding.left} height={height} x={-padding.left} y={0} fill=\"none\" stroke=\"black\" />\n <rect width={padding.right} height={height} x={width} y={0} fill=\"none\" stroke=\"black\" />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {isVertical ? xTitle : yTitle}\n </text>\n )}\n {needBottomAxisTitle && debug && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n {needLeftAxisTitle && (\n <text\n x={-padding.left + TITLE_LINE / 2}\n y={height / 2}\n transform={`rotate(-90,${-padding.left + TITLE_LINE / 2},${height / 2})`}\n >\n {isVertical ? yTitle : xTitle}\n </text>\n )}\n {needLeftAxisTitle && debug && (\n <rect x={-padding.left} y=\"0\" width={TITLE_LINE} height={height} fill=\"none\" stroke=\"black\" />\n )}\n </g>\n <Grid\n orientation={orientation}\n width={width}\n height={height}\n scaleX={scales.xPrimary}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n {isVertical ? (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"bottom\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n ) : (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"bottom\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n {isVertical ? (\n <NumberAxis scale={scales.y} onlyPositive={onlyPositive} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n ) : (\n <BandAxis\n scale={scales.xPrimary}\n orient=\"left\"\n labelsPosition={xAxis.labelsPosition}\n tickSize={tickSizeX}\n labels={xLabels}\n />\n )}\n </g>\n )}\n <g>\n {layersData.map(layerData => (\n <g key={layerData.type}>\n {layerData.type === 'box' &&\n (layerData as BoxesData).geoms[facetKey].map(box => (\n <BoxElement\n key={box.key}\n facetKey={facetKey}\n box={box}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BoxesData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.box.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'violin' &&\n (layerData as ViolinsData).geoms[facetKey].map(violin => (\n <ViolinElement\n key={violin.key}\n facetKey={facetKey}\n violin={violin}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n maxViolinDensity={(layerData as ViolinsData).meta.maxDensity}\n aes={(layerData as ViolinsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.violin.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'dot' &&\n (layerData as DotsData).geoms[facetKey].map(dotsGroup => (\n <DotsGroupElement\n key={dotsGroup.key}\n facetKey={facetKey}\n geom={dotsGroup}\n scales={scales}\n orientation={orientation}\n aes={(layerData as DotsData).aes}\n hasKeyFromColumn={keyColumn !== null}\n sideDistances={sideDistances}\n showTooltips={tooltips.dot.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'line' &&\n (layerData as LinesData).geoms[facetKey].map(line => (\n <LineElement\n key={line.key}\n facetKey={facetKey}\n line={line}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as LinesData).aes}\n showTooltips={tooltips.line.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'errorbar' &&\n (layerData as ErrorBarsData).geoms[facetKey].map(errorBar => (\n <ErrorBarElement\n key={errorBar.key}\n facetKey={facetKey}\n errorBar={errorBar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as ErrorBarsData).aes}\n sideDistances={sideDistances}\n showTooltips={tooltips.errorBar.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'bar' &&\n (layerData as BarsData).geoms[facetKey].map(bar => (\n <BarElement\n key={bar.key}\n bar={bar}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BarsData).aes}\n />\n ))}\n {layerData.type === 'stackedBar' &&\n (layerData as StackedBarsData).geoms[facetKey].map(geom => (\n <StackedBarElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as StackedBarsData).aes}\n normalize={(layerData as StackedBarsData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'stackedArea' && (\n <StackedAreaElement\n key='stackedArea'\n facetKey={facetKey}\n layerData={layerData as StackedAreaData}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n )}\n {layerData.type === 'binnedDots' &&\n (layerData as BinnedDotsData).geoms[facetKey].map(geom => (\n <BinnedDotsElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n aes={(layerData as BinnedDotsData).aes}\n binsCount={(layerData as BinnedDotsData).meta.binsCount}\n min={(layerData as BinnedDotsData).meta.minY}\n max={(layerData as BinnedDotsData).meta.maxY}\n hasKeyFromColumn={(layerData as BinnedDotsData).meta.hasKeyFromColumn}\n sideDistances={sideDistances}\n showTooltips={tooltips.stackedBar.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'pairedPoints' &&\n (layerData as PairedPointsData).geoms[facetKey].map(geom => (\n <PairedPointsElement\n key={geom.id}\n facetKey={facetKey}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as PairedPointsData).aes}\n showTooltips={tooltips.pairedPoints.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'sina' &&\n (layerData as SinaData).geoms[facetKey].map(geom => (\n <SinaElement\n key={geom.key}\n geom={geom}\n scales={scales}\n orientation={orientation}\n sideDistances={sideDistances}\n aes={(layerData as SinaData).aes}\n hasKeyFromColumn={keyColumn !== null}\n showTooltips={false}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n {layerData.type === 'logo' &&\n (layerData as LogoPlotData).geoms[facetKey].map(geom => (\n <LogoElement\n key={geom.key}\n facetKey={facetKey}\n geom={geom}\n elementsAmount={layerData.geoms[facetKey].length}\n scales={scales}\n orientation={orientation}\n aes={(layerData as LogoPlotData).aes}\n normalize={(layerData as LogoPlotData).meta.normalize}\n sideDistances={sideDistances}\n showTooltips={tooltips.logo.show ?? true}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n />\n ))}\n </g>\n ))}\n {statsData.map((statsLayer, idx) => (\n <StatsPValue\n yShift={yShifts[idx]}\n scales={scales}\n orientation={orientation}\n statType={statsLayer.meta.statType}\n values={statsLayer.values[facetKey]}\n testMethod={statsLayer.meta.testMethod}\n format={statsLayer.meta.format}\n ns={statsLayer.meta.ns}\n key={`${statsLayer.meta.statType}_${statsLayer.meta.testMethod}`}\n significanceLevels={statsLayer.meta.significanceLevels}\n />\n ))}\n </g>\n <g>\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>}\n <g\n ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n </g>\n </g>\n );\n}\n"],"names":["getYShiftsForStats","statsData","primaryKeys","facetKey","yShifts","i","stat","lineCount","getPairwiseStatLevelsCount","P_VALUE_LINE_HEIGHT","getAxisTitle","title","Chart","facetSettings","facetTitle","dimensions","scales","orientation","layersData","xAxis","yAxis","frameType","tooltips","tooltipsContainer","keyColumn","chartSizes","margins","xLabels","onlyPositive","secondaryGrouping","tooltipsData","activeElementContainer","setActiveElementContainer","useState","isVertical","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","xTitle","yTitle","needLeftAxis","needBottomAxis","needLeftAxisTitle","needBottomAxisTitle","width","height","left","top","padding","sideDistances","chartTransform","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","Grid","BandAxis","NumberAxis","layerData","box","BoxElement","violin","ViolinElement","dotsGroup","DotsGroupElement","line","LineElement","errorBar","ErrorBarElement","bar","BarElement","geom","StackedBarElement","StackedAreaElement","BinnedDotsElement","PairedPointsElement","SinaElement","LogoElement","statsLayer","StatsPValue","node"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+DA,SAASA,GAAmBC,GAAwBC,GAAuBC,GAAkB;AACzF,MAAI,CAACF,EAAU;AACX,WAAO,CAAA;AAEX,QAAMG,IAAU,CAAC,CAAC;AAClB,WAASC,IAAI,GAAGA,IAAIJ,EAAU,SAAS,GAAGI,KAAK;AAC3C,UAAMC,IAAOL,EAAUI,CAAC;AACxB,QAAIC,EAAK,KAAK,aAAa,YAAY;AACnC,YAAMC,IAAYC;AAAA,QACdF,EAAK,OAAOH,CAAQ;AAAA,QACpBD;AAAA,QACAI,EAAK,KAAK;AAAA,QACVA,EAAK,KAAK;AAAA,MAAA;AAEd,MAAAF,EAAQ,KAAKA,EAAQA,EAAQ,SAAS,CAAC,IAAIK,IAAsBF,CAAS;AAAA,IAC9E;AACI,MAAAH,EAAQ,KAAKA,EAAQA,EAAQ,SAAS,CAAC,IAAIK,CAAmB;AAAA,EAEtE;AACA,SAAOL;AACX;AAEA,SAASM,EAAaC,GAAoC;AACtD,SAAI,OAAOA,KAAU,WACVA,IAEJA,EAAM;AACjB;AAEO,SAASC,GAAM;AAAA,EAClB,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAjB;AAAA,EACA,UAAAE;AAAA,EACA,OAAAgB;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AACJ,GAAe;AACX,QAAM,CAACC,GAAwBC,CAAyB,IAAIC,YAAA,GACtDC,IAAajB,MAAgB,YAC7Bb,IAAUJ,GAAmBC,GAAWe,EAAO,SAAS,OAAA,GAAUb,CAAQ,GAC1EgC,IAAYhB,EAAM,YAAYiB,IAAqB,GACnDC,IAAYjB,EAAM,YAAYgB,IAAqB,GACnDE,IAAS5B,EAAaS,EAAM,KAAK,GACjCoB,IAAS7B,EAAaU,EAAM,KAAK,GACjCoB,IACFzB,EAAW,eAAe,SAAS,MAAM,KACxCmB,KAAc,EAACrB,KAAA,QAAAA,EAAe,YAC9B,CAACqB,KAAc,EAACrB,KAAA,QAAAA,EAAe,UAC9B4B,IACF1B,EAAW,eAAe,SAAS,QAAQ,KAC1CmB,KAAc,EAACrB,KAAA,QAAAA,EAAe,YAC9B,CAACqB,KAAc,EAACrB,KAAA,QAAAA,EAAe,UAC9B6B,IAAoB3B,EAAW,eAAe,SAAS,MAAM,GAC7D4B,IAAsB5B,EAAW,eAAe,SAAS,QAAQ,GAEjE,EAAC,OAAA6B,GAAO,QAAAC,EAAA,IAAU9B,EAAW,OAC7B,EAAC,MAAA+B,GAAM,KAAAC,GAAK,SAAAC,EAAA,IAAWjC,GAEvBkC,IAAgB;AAAA,IAClB,MAAMvB,EAAQ,OAAOoB,IAAOE,EAAQ;AAAA,IACpC,OAAOvB,EAAW,cAAcC,EAAQ,OAAOoB,IAAOE,EAAQ;AAAA,IAC9D,KAAKtB,EAAQ,MAAMqB,IAAMC,EAAQ;AAAA,IACjC,QAAQvB,EAAW,eAAeC,EAAQ,MAAMqB,IAAMC,EAAQ;AAAA,EAAA,GAG5DE,IAAiB,aAAaJ,IAAOE,EAAQ,IAAI,IAAID,IAAMC,EAAQ,GAAG,KAEtEG,IAAQ;AACd,SACIC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAWF,GACT,UAAA;AAAA,IAAAC;AAAA,IAQArC,EAAW,UACRsC,gBAAAA,EAAAA,KAAC,KAAA,EACI,UAAA;AAAA,MAAA/B,MAAc,UAAUgC,gBAAAA,EAAAA,IAAC,QAAA,EAAK,GAAE,KAAI,GAAG,CAACL,EAAQ,KAAK,QAAQA,EAAQ,KAAK,OAAAJ,GAAc,MAAK,WAAU,QAAQU,GAAO;AAAA,MACtHxC,EAAW,IAAI,CAACyC,GAAWC,MAAQ;AAChC,cAAMC,IAAa3C,EAAW,QACxB4C,KAAaV,EAAQ,MAAMW,IAAmBF,KAAc;AAClE,eACIJ,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEG,UAAS;AAAA,YACT,YAAW;AAAA,YACX,MAAMC;AAAA,YACN,GAAGV,IAAQ;AAAA,YACX,IAAIc,IAAYC,IAAmB,IAAIX,EAAQ;AAAA,YAC/C,GAAGQ,IAAMG;AAAA,YACT,YAAW;AAAA,YACX,kBAAiB;AAAA,YAEhB,UAAAJ;AAAA,UAAA;AAAA,UAVIC;AAAA,QAAA;AAAA,MAajB,CAAC;AAAA,IAAA,GACL;AAAA,IAEJJ,gBAAAA,EAAAA,KAAC,KAAA,EAAE,kBAAiB,WAAU,YAAW,UAAS,YAAW,OAAM,UAAS,QAAO,MAAME,GACpF,UAAA;AAAA,MAAAX,KACGU,gBAAAA,EAAAA,IAAC,QAAA,EAAK,GAAGT,IAAQ,GAAG,GAAGC,IAASG,EAAQ,SAASY,IAAa,GACzD,UAAA1B,IAAaI,IAASC,GAC3B;AAAA,MAEHI,KAAuBQ;AAAA,MAUvBT,KACGW,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAG,CAACL,EAAQ,OAAOY,IAAa;AAAA,UAChC,GAAGf,IAAS;AAAA,UACZ,WAAW,cAAc,CAACG,EAAQ,OAAOY,IAAa,CAAC,IAAIf,IAAS,CAAC;AAAA,UAEpE,cAAaN,IAASD;AAAA,QAAA;AAAA,MAAA;AAAA,MAG9BI,KAAqBS;AAAA,IAC0E,GAEpG;AAAA,IACAE,gBAAAA,EAAAA;AAAAA,MAACQ;AAAA,MAAA;AAAA,QACG,aAAA5C;AAAA,QACA,OAAA2B;AAAA,QACA,QAAAC;AAAA,QACA,QAAQ7B,EAAO;AAAA,QACf,QAAQA,EAAO;AAAA,QACf,OAAOG;AAAA,QACP,OAAOC;AAAA,QACP,WAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHoB,KACGY,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW,eAAeR,CAAM,KAC9B,UAAAX,IACGmB,gBAAAA,EAAAA;AAAAA,MAACS;AAAA,MAAA;AAAA,QACG,OAAO9C,EAAO;AAAA,QACd,QAAO;AAAA,QACP,gBAAgBG,EAAM;AAAA,QACtB,UAAUgB;AAAA,QACV,QAAQR;AAAA,MAAA;AAAA,IAAA,IAGZ0B,gBAAAA,EAAAA,IAACU,GAAA,EAAW,OAAO/C,EAAO,GAAG,cAAAY,GAA4B,QAAO,UAAS,UAAUS,GAAW,cAAcjB,EAAM,cAAc,GAExI;AAAA,IAEHoB,KACGa,gBAAAA,EAAAA,IAAC,KAAA,EACI,UAAAnB,IACGmB,gBAAAA,MAACU,KAAW,OAAO/C,EAAO,GAAG,cAAAY,GAA4B,QAAO,QAAO,UAAUS,GAAW,cAAcjB,EAAM,cAAc,IAE9HiC,gBAAAA,EAAAA;AAAAA,MAACS;AAAA,MAAA;AAAA,QACG,OAAO9C,EAAO;AAAA,QACd,QAAO;AAAA,QACP,gBAAgBG,EAAM;AAAA,QACtB,UAAUgB;AAAA,QACV,QAAQR;AAAA,MAAA;AAAA,IAAA,GAGpB;AAAA,2BAEH,KAAA,EACI,UAAA;AAAA,MAAAT,EAAW,IAAI,CAAA8C,MACZZ,gBAAAA,EAAAA,KAAC,KAAA,EACI,UAAA;AAAA,QAAAY,EAAU,SAAS,SACfA,EAAwB,MAAM7D,CAAQ,EAAE,IAAI,CAAA8D,MACzCZ,gBAAAA,EAAAA;AAAAA,UAACa;AAAA,UAAA;AAAA,YAEG,UAAA/D;AAAA,YACA,KAAA8D;AAAA,YACA,gBAAgBD,EAAU,MAAM7D,CAAQ,EAAE;AAAA,YAC1C,QAAAa;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAAwB;AAAA,YAC9B,kBAAkBxC,MAAc;AAAA,YAChC,eAAAyB;AAAA,YACA,cAAc3B,EAAS,IAAI,QAAQ;AAAA,YACnC,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAZK0C,EAAI;AAAA,QAAA,CAchB;AAAA,QACJD,EAAU,SAAS,YACfA,EAA0B,MAAM7D,CAAQ,EAAE,IAAI,CAAAgE,MAC3Cd,gBAAAA,EAAAA;AAAAA,UAACe;AAAA,UAAA;AAAA,YAEG,UAAAjE;AAAA,YACA,QAAAgE;AAAA,YACA,gBAAgBH,EAAU,MAAM7D,CAAQ,EAAE;AAAA,YAC1C,QAAAa;AAAA,YACA,aAAAC;AAAA,YACA,kBAAmB+C,EAA0B,KAAK;AAAA,YAClD,KAAMA,EAA0B;AAAA,YAChC,eAAAf;AAAA,YACA,cAAc3B,EAAS,OAAO,QAAQ;AAAA,YACtC,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAZK4C,EAAO;AAAA,QAAA,CAcnB;AAAA,QACJH,EAAU,SAAS,SACfA,EAAuB,MAAM7D,CAAQ,EAAE,IAAI,CAAAkE,MACxChB,gBAAAA,EAAAA;AAAAA,UAACiB;AAAA,UAAA;AAAA,YAEG,UAAAnE;AAAA,YACA,MAAMkE;AAAA,YACN,QAAArD;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAAuB;AAAA,YAC7B,kBAAkBxC,MAAc;AAAA,YAChC,eAAAyB;AAAA,YACA,cAAc3B,EAAS,IAAI,QAAQ;AAAA,YACnC,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAXK8C,EAAU;AAAA,QAAA,CAatB;AAAA,QACJL,EAAU,SAAS,UACfA,EAAwB,MAAM7D,CAAQ,EAAE,IAAI,CAAAoE,MACzClB,gBAAAA,EAAAA;AAAAA,UAACmB;AAAA,UAAA;AAAA,YAEG,UAAArE;AAAA,YACA,MAAAoE;AAAA,YACA,QAAAvD;AAAA,YACA,aAAAC;AAAA,YACA,eAAAgC;AAAA,YACA,KAAMe,EAAwB;AAAA,YAC9B,cAAc1C,EAAS,KAAK,QAAQ;AAAA,YACpC,mBAAAO;AAAA,YACA,cAAAC;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAXKgD,EAAK;AAAA,QAAA,CAajB;AAAA,QACJP,EAAU,SAAS,cACfA,EAA4B,MAAM7D,CAAQ,EAAE,IAAI,CAAAsE,MAC7CpB,gBAAAA,EAAAA;AAAAA,UAACqB;AAAA,UAAA;AAAA,YAEG,UAAAvE;AAAA,YACA,UAAAsE;AAAA,YACA,QAAAzD;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAA4B;AAAA,YAClC,eAAAf;AAAA,YACA,cAAc3B,EAAS,SAAS,QAAQ;AAAA,YACxC,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAVKkD,EAAS;AAAA,QAAA,CAYrB;AAAA,QACJT,EAAU,SAAS,SACfA,EAAuB,MAAM7D,CAAQ,EAAE,IAAI,CAAAwE,MACxCtB,gBAAAA,EAAAA;AAAAA,UAACuB;AAAA,UAAA;AAAA,YAEG,KAAAD;AAAA,YACA,QAAA3D;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAAuB;AAAA,UAAA;AAAA,UAJxBW,EAAI;AAAA,QAAA,CAMhB;AAAA,QACJX,EAAU,SAAS,gBACfA,EAA8B,MAAM7D,CAAQ,EAAE,IAAI,CAAA0E,MAC/CxB,gBAAAA,EAAAA;AAAAA,UAACyB;AAAA,UAAA;AAAA,YAEG,UAAA3E;AAAA,YACA,MAAA0E;AAAA,YACA,gBAAgBb,EAAU,MAAM7D,CAAQ,EAAE;AAAA,YAC1C,QAAAa;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAA8B;AAAA,YACpC,WAAYA,EAA8B,KAAK;AAAA,YAC/C,eAAAf;AAAA,YACA,cAAc3B,EAAS,WAAW,QAAQ;AAAA,YAC1C,mBAAAO;AAAA,YACA,cAAAC;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAbKsD,EAAK;AAAA,QAAA,CAejB;AAAA,QACJb,EAAU,SAAS,iBAChBX,gBAAAA,EAAAA;AAAAA,UAAC0B;AAAA,UAAA;AAAA,YAEG,UAAA5E;AAAA,YACA,WAAA6D;AAAA,YACA,QAAAhD;AAAA,YACA,aAAAC;AAAA,YACA,eAAAgC;AAAA,YACA,cAAc3B,EAAS,WAAW,QAAQ;AAAA,YAC1C,mBAAAO;AAAA,YACA,cAAAC;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAVI;AAAA,QAAA;AAAA,QAaXyC,EAAU,SAAS,gBACfA,EAA6B,MAAM7D,CAAQ,EAAE,IAAI,CAAA0E,MAC9CxB,gBAAAA,EAAAA;AAAAA,UAAC2B;AAAA,UAAA;AAAA,YAEG,UAAA7E;AAAA,YACA,MAAA0E;AAAA,YACA,QAAA7D;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAA6B;AAAA,YACnC,WAAYA,EAA6B,KAAK;AAAA,YAC9C,KAAMA,EAA6B,KAAK;AAAA,YACxC,KAAMA,EAA6B,KAAK;AAAA,YACxC,kBAAmBA,EAA6B,KAAK;AAAA,YACrD,eAAAf;AAAA,YACA,cAAc3B,EAAS,WAAW,QAAQ;AAAA,YAC1C,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAdKsD,EAAK;AAAA,QAAA,CAgBjB;AAAA,QACJb,EAAU,SAAS,kBACfA,EAA+B,MAAM7D,CAAQ,EAAE,IAAI,CAAA0E,MAChDxB,gBAAAA,EAAAA;AAAAA,UAAC4B;AAAA,UAAA;AAAA,YAEG,UAAA9E;AAAA,YACA,MAAA0E;AAAA,YACA,QAAA7D;AAAA,YACA,aAAAC;AAAA,YACA,eAAAgC;AAAA,YACA,KAAMe,EAA+B;AAAA,YACrC,cAAc1C,EAAS,aAAa,QAAQ;AAAA,YAC5C,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAVKsD,EAAK;AAAA,QAAA,CAYjB;AAAA,QACJb,EAAU,SAAS,UACfA,EAAuB,MAAM7D,CAAQ,EAAE,IAAI,CAAA0E,MACxCxB,gBAAAA,EAAAA;AAAAA,UAAC6B;AAAA,UAAA;AAAA,YAEG,MAAAL;AAAA,YACA,QAAA7D;AAAA,YACA,aAAAC;AAAA,YACA,eAAAgC;AAAA,YACA,KAAMe,EAAuB;AAAA,YAC7B,kBAAkBxC,MAAc;AAAA,YAChC,cAAc;AAAA,YACd,mBAAAD;AAAA,UAAA;AAAA,UARKsD,EAAK;AAAA,QAAA,CAUjB;AAAA,QACJb,EAAU,SAAS,UACfA,EAA2B,MAAM7D,CAAQ,EAAE,IAAI,CAAA0E,MAC5CxB,gBAAAA,EAAAA;AAAAA,UAAC8B;AAAA,UAAA;AAAA,YAEG,UAAAhF;AAAA,YACA,MAAA0E;AAAA,YACA,gBAAgBb,EAAU,MAAM7D,CAAQ,EAAE;AAAA,YAC1C,QAAAa;AAAA,YACA,aAAAC;AAAA,YACA,KAAM+C,EAA2B;AAAA,YACjC,WAAYA,EAA2B,KAAK;AAAA,YAC5C,eAAAf;AAAA,YACA,cAAc3B,EAAS,KAAK,QAAQ;AAAA,YACpC,cAAAQ;AAAA,YACA,wBAAAC;AAAA,YACA,mBAAAR;AAAA,UAAA;AAAA,UAZKsD,EAAK;AAAA,QAAA,CAcjB;AAAA,MAAA,KAtMDb,EAAU,IAuMlB,CACH;AAAA,MACA/D,EAAU,IAAI,CAACmF,GAAY5B,MACxBH,gBAAAA,EAAAA;AAAAA,QAACgC;AAAA,QAAA;AAAA,UACG,QAAQjF,EAAQoD,CAAG;AAAA,UACnB,QAAAxC;AAAA,UACA,aAAAC;AAAA,UACA,UAAUmE,EAAW,KAAK;AAAA,UAC1B,QAAQA,EAAW,OAAOjF,CAAQ;AAAA,UAClC,YAAYiF,EAAW,KAAK;AAAA,UAC5B,QAAQA,EAAW,KAAK;AAAA,UACxB,IAAIA,EAAW,KAAK;AAAA,UAEpB,oBAAoBA,EAAW,KAAK;AAAA,QAAA;AAAA,QAD/B,GAAGA,EAAW,KAAK,QAAQ,IAAIA,EAAW,KAAK,UAAU;AAAA,MAAA,CAGrE;AAAA,IAAA,GACL;AAAA,2BACC,KAAA,EACI,UAAA;AAAA,MAAAtD,EAAa,SAASuB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAO5B,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MAC1H4B,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,KAAK,CAAAiC,MAAQ;AACT,YAAIA,KAAQ,CAACvD,KACTC,EAA0BsD,CAAI;AAAA,UAEtC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import l from "../../../_virtual/
|
|
2
|
-
import s from "../../../_virtual/
|
|
3
|
-
import f from "../../../_virtual/
|
|
4
|
-
import m from "../../../_virtual/
|
|
5
|
-
import h from "../../../_virtual/
|
|
1
|
+
import l from "../../../_virtual/index5.js";
|
|
2
|
+
import s from "../../../_virtual/index6.js";
|
|
3
|
+
import f from "../../../_virtual/index7.js";
|
|
4
|
+
import m from "../../../_virtual/index8.js";
|
|
5
|
+
import h from "../../../_virtual/index9.js";
|
|
6
6
|
import { MannWhitneyU as c } from "./MannWhitneyU.js";
|
|
7
7
|
import n from "../../../_virtual/lodash.js";
|
|
8
8
|
function u(t, a, r) {
|
|
@@ -13,9 +13,9 @@ function to({
|
|
|
13
13
|
settingsId: f,
|
|
14
14
|
chartSettings: d,
|
|
15
15
|
chartSizes: r,
|
|
16
|
-
chartsDimensions:
|
|
16
|
+
chartsDimensions: n,
|
|
17
17
|
facetKeys: i,
|
|
18
|
-
facetSettings:
|
|
18
|
+
facetSettings: p,
|
|
19
19
|
xGroupKeys: g,
|
|
20
20
|
yGroupKeys: j,
|
|
21
21
|
scales: m,
|
|
@@ -34,11 +34,11 @@ function to({
|
|
|
34
34
|
onTooltipHintSwitch: X,
|
|
35
35
|
cellsRenderingMode: Y
|
|
36
36
|
}) {
|
|
37
|
-
const [v, F] = h.useState(), L = A(X), e = h.useRef(null);
|
|
37
|
+
const [v, F] = h.useState(), L = A(X, d.tooltips), e = h.useRef(null);
|
|
38
38
|
h.useEffect(() => {
|
|
39
39
|
e.current && F(e.current);
|
|
40
40
|
}, []);
|
|
41
|
-
const u =
|
|
41
|
+
const u = n[i[0]].padding, R = n[i[W - 1]].padding, H = s.left + r.chartsWidth + J, D = s.top + u.top;
|
|
42
42
|
return /* @__PURE__ */ t.jsx(b, { dataId: f, children: /* @__PURE__ */ t.jsxs(
|
|
43
43
|
"svg",
|
|
44
44
|
{
|
|
@@ -69,13 +69,13 @@ function to({
|
|
|
69
69
|
dendrograms: T[o],
|
|
70
70
|
captionsSizes: a,
|
|
71
71
|
facetKey: o,
|
|
72
|
-
dimensions:
|
|
72
|
+
dimensions: n[o],
|
|
73
73
|
xGroupKeys: g,
|
|
74
74
|
yGroupKeys: j,
|
|
75
|
-
xKeysByGroups:
|
|
76
|
-
yKeysByGroups:
|
|
77
|
-
sharedX:
|
|
78
|
-
sharedY:
|
|
75
|
+
xKeysByGroups: p.sharedX ? l.xKeysByGroups : N,
|
|
76
|
+
yKeysByGroups: p.sharedY ? l.yKeysByGroups : O,
|
|
77
|
+
sharedX: p.sharedX,
|
|
78
|
+
sharedY: p.sharedY,
|
|
79
79
|
scales: { x: m.x[o], y: m.y[o] },
|
|
80
80
|
cells: I,
|
|
81
81
|
cellsMeta: l,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartsGroup.js","sources":["../../../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 { CellHeatmap, GroupedCellsHeatmap } 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 cellsRenderingMode\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: GroupedCellsHeatmap['facets'];\n cellsMeta: GroupedCellsHeatmap['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 cellsRenderingMode: 'svg' | 'canvas'\n}) {\n const [tooltipsContainer, setTooltipsContainer] = useState<SVGGElement>();\n const tooltipsData = useTooltip<CellHeatmap|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 cellsRenderingMode={cellsRenderingMode}\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","cellsRenderingMode","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":";;;;;;;;;AAgBO,SAASA,GAAY;AAAA,EACxB,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,oBAAAC;AACJ,GA6BG;AACC,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,WAAA,GAC5CC,IAAeC,EAA8CN,
|
|
1
|
+
{"version":3,"file":"ChartsGroup.js","sources":["../../../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 { CellHeatmap, GroupedCellsHeatmap } 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 cellsRenderingMode\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: GroupedCellsHeatmap['facets'];\n cellsMeta: GroupedCellsHeatmap['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 cellsRenderingMode: 'svg' | 'canvas'\n}) {\n const [tooltipsContainer, setTooltipsContainer] = useState<SVGGElement>();\n const tooltipsData = useTooltip<CellHeatmap|AnnotationTooltipData>(onTooltipHintSwitch, chartSettings.tooltips);\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 cellsRenderingMode={cellsRenderingMode}\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","cellsRenderingMode","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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { DataByColumns } from './DataFrame';
|
|
|
3
3
|
import { MiPlots } from './MiPlots';
|
|
4
4
|
import { BubbleSettings, DendroSettings, DiscreteSettings, ErrorInfo, ErrorInfoUnknown, HeatmapSettings, HistogramSettings, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsContinuous, AxisSettingsDiscrete } from './types';
|
|
5
5
|
import { LassoControlsState, Polygon } from './scatterplot-umap/types';
|
|
6
|
-
import {
|
|
7
|
-
export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsDiscrete, AxisSettingsContinuous,
|
|
6
|
+
import { SCATTERPLOT_CONTROLS_EVENTS } from './scatterplot-umap/constants';
|
|
7
|
+
export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsDiscrete, AxisSettingsContinuous, SCATTERPLOT_CONTROLS_EVENTS, LassoControlsState, Polygon, ErrorInfo, ErrorInfoUnknown };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { MiPlots as
|
|
2
|
-
import {
|
|
1
|
+
import { MiPlots as r } from "./MiPlots.js";
|
|
2
|
+
import { SCATTERPLOT_CONTROLS_EVENTS as E } from "./scatterplot-umap/constants.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
r as MiPlots,
|
|
5
|
+
E as SCATTERPLOT_CONTROLS_EVENTS
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as e } from "../../../../../_virtual/
|
|
1
|
+
import { __module as e } from "../../../../../_virtual/index10.js";
|
|
2
2
|
import { __require as o } from "./cjs/scheduler.production.min.js";
|
|
3
3
|
import { __require as u } from "./cjs/scheduler.development.js";
|
|
4
4
|
var r;
|
|
@@ -1,43 +1,44 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { r as
|
|
3
|
-
import { Tooltip as
|
|
4
|
-
import { useDataFrame as
|
|
5
|
-
import { formatColumnValue as
|
|
6
|
-
import { ChartDot as
|
|
7
|
-
import { format as
|
|
8
|
-
const
|
|
1
|
+
import { j as c } from "../../_virtual/jsx-runtime.js";
|
|
2
|
+
import { r as u } from "../../_virtual/index.js";
|
|
3
|
+
import { Tooltip as g } from "../../common/Tooltip.js";
|
|
4
|
+
import { useDataFrame as d } from "../../common/useDataFrame.js";
|
|
5
|
+
import { formatColumnValue as C } from "../utils/formatColumnValue.js";
|
|
6
|
+
import { ChartDot as j } from "./ChartLayersData.js";
|
|
7
|
+
import { format as p } from "../../node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js";
|
|
8
|
+
const E = { left: 0, right: 0, top: 0, bottom: 0 }, w = u.memo(({
|
|
9
9
|
tooltipsData: r,
|
|
10
|
-
tooltips:
|
|
10
|
+
tooltips: e,
|
|
11
11
|
keyColumn: m,
|
|
12
12
|
chartSizes: o,
|
|
13
13
|
dimensions: t,
|
|
14
|
-
scales:
|
|
15
|
-
aesGetters:
|
|
14
|
+
scales: a,
|
|
15
|
+
aesGetters: x
|
|
16
16
|
}) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/* @__PURE__ */
|
|
27
|
-
|
|
17
|
+
var n;
|
|
18
|
+
const l = d(), f = t == null ? void 0 : t.padding, h = u.useMemo(() => !t || !a || !f ? E : {
|
|
19
|
+
left: t.left + f.left,
|
|
20
|
+
right: o.totalWidth - (t.left + f.left),
|
|
21
|
+
top: t.top + f.top,
|
|
22
|
+
bottom: o.totalHeight - (t.top + f.top)
|
|
23
|
+
}, [t, f, o]);
|
|
24
|
+
return !t || !a || !f || !r.selectedData || !e.show || !((n = e == null ? void 0 : e.content) != null && n.length) ? null : /* @__PURE__ */ c.jsxs(c.Fragment, { children: [
|
|
25
|
+
r.fixed && /* @__PURE__ */ c.jsxs("g", { transform: `translate(${t.left + f.left}, ${t.top + f.top})`, children: [
|
|
26
|
+
/* @__PURE__ */ c.jsx("rect", { width: o.chartWidth, height: o.chartHeight, fill: "rgba(255, 255, 255, 0.8)" }),
|
|
27
|
+
/* @__PURE__ */ c.jsx(
|
|
28
|
+
j,
|
|
28
29
|
{
|
|
29
30
|
dot: r.selectedData,
|
|
30
|
-
scales:
|
|
31
|
-
aesGetters:
|
|
31
|
+
scales: a,
|
|
32
|
+
aesGetters: x
|
|
32
33
|
}
|
|
33
34
|
)
|
|
34
35
|
] }),
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
|
|
36
|
+
/* @__PURE__ */ c.jsx(
|
|
37
|
+
g,
|
|
37
38
|
{
|
|
38
|
-
content:
|
|
39
|
-
x:
|
|
40
|
-
y:
|
|
39
|
+
content: b(l, r.selectedData, e == null ? void 0 : e.content),
|
|
40
|
+
x: a.x(r.selectedData.x),
|
|
41
|
+
y: a.y(r.selectedData.y),
|
|
41
42
|
active: !0,
|
|
42
43
|
sideDistances: h,
|
|
43
44
|
fixed: r.fixed,
|
|
@@ -47,15 +48,15 @@ const j = { left: 0, right: 0, top: 0, bottom: 0 }, v = c.memo(({
|
|
|
47
48
|
)
|
|
48
49
|
] });
|
|
49
50
|
});
|
|
50
|
-
function
|
|
51
|
+
function b(r, e, m = []) {
|
|
51
52
|
const o = [];
|
|
52
53
|
for (const t of m) {
|
|
53
|
-
const
|
|
54
|
-
o.push(`${t.label}: ${
|
|
54
|
+
const a = t != null && t.format ? p(t.format) : void 0;
|
|
55
|
+
o.push(`${t.label}: ${C(r, e.idx, t, a)}`);
|
|
55
56
|
}
|
|
56
57
|
return o;
|
|
57
58
|
}
|
|
58
59
|
export {
|
|
59
|
-
|
|
60
|
+
w as ChartTooltip
|
|
60
61
|
};
|
|
61
62
|
//# sourceMappingURL=ChartTooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTooltip.js","sources":["../../../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 as unknown as { valueOf(): number; } & string) as number}\n y={scales.y(tooltipsData.selectedData.y as unknown as { valueOf(): number; } & string) as number}\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","_","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;AAAA,EACA,UAAAC;AAAA,EACA,WAAWC;AAAA,EACX,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa
|
|
1
|
+
{"version":3,"file":"ChartTooltip.js","sources":["../../../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 || !tooltips?.content?.length) {\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 as unknown as { valueOf(): number; } & string) as number}\n y={scales.y(tooltipsData.selectedData.y as unknown as { valueOf(): number; } & string) as number}\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","_","chartSizes","dimensions","scales","aesGetters","dataFrame","useDataFrame","padding","sideDistances","useMemo","_a","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;AAAA,EACA,UAAAC;AAAA,EACA,WAAWC;AAAA,EACX,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa;;AACT,QAAMC,IAAYC,EAAA,GACZC,IAAUL,KAAA,gBAAAA,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,QAAQ,GAACW,IAAAX,KAAA,gBAAAA,EAAU,YAAV,QAAAW,EAAmB,UACnG,OAIPC,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAd,EAAa,SACVa,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaT,EAAW,OAAOK,EAAQ,IAAI,KAAKL,EAAW,MAAMK,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAM,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOZ,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MACnGY,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAKhB,EAAa;AAAA,UAClB,QAAAK;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GACJ;AAAA,IAEJS,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,SAASC,EAAkBX,GAAWP,EAAa,cAAcC,KAAA,gBAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAA+C;AAAA,QACrF,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAA+C;AAAA,QACrF,QAAM;AAAA,QACN,eAAAU;AAAA,QACA,OAAOV,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GACJ;AAER,CAAC;AAED,SAASkB,EAAkBX,GAAsBY,GAAUC,IAA4B,CAAA,GAAI;AACvF,QAAMC,IAAkB,CAAA;AACxB,aAAWC,KAAUF,GAAa;AAC9B,UAAMG,IAAkBD,KAAA,QAAAA,EAAQ,SAASE,EAAOF,EAAO,MAAM,IAAI;AACjE,IAAAD,EAAM,KAAK,GAAGC,EAAO,KAAK,KAAKG,EAAkBlB,GAAWY,EAAI,KAAKG,GAAQC,CAAe,CAAC,EAAE;AAAA,EACnG;AACA,SAAOF;AACX;"}
|
|
@@ -9,32 +9,32 @@ import { LEGEND_OFFSET as Y } from "../constants.js";
|
|
|
9
9
|
import { Chart as _ } from "./Chart.js";
|
|
10
10
|
import { ChartTooltip as q } from "./ChartTooltip.js";
|
|
11
11
|
function tt({
|
|
12
|
-
settingsId:
|
|
13
|
-
chartSettings:
|
|
12
|
+
settingsId: x,
|
|
13
|
+
chartSettings: u,
|
|
14
14
|
chartSizes: o,
|
|
15
15
|
chartsDimensions: e,
|
|
16
16
|
facetKeys: i,
|
|
17
|
-
facetSettings:
|
|
17
|
+
facetSettings: j,
|
|
18
18
|
scales: d,
|
|
19
|
-
groupedDots:
|
|
20
|
-
legendData:
|
|
19
|
+
groupedDots: c,
|
|
20
|
+
legendData: w,
|
|
21
21
|
trendsData: s,
|
|
22
|
-
columnsCount:
|
|
22
|
+
columnsCount: E,
|
|
23
23
|
margins: l,
|
|
24
|
-
keyColumn:
|
|
25
|
-
mainTitle:
|
|
26
|
-
facetTitles:
|
|
27
|
-
captionsSizes:
|
|
28
|
-
onlyPositive:
|
|
29
|
-
layersData:
|
|
24
|
+
keyColumn: T,
|
|
25
|
+
mainTitle: v,
|
|
26
|
+
facetTitles: W,
|
|
27
|
+
captionsSizes: C,
|
|
28
|
+
onlyPositive: F,
|
|
29
|
+
layersData: L,
|
|
30
30
|
aesGetters: a,
|
|
31
31
|
discreteAxesLabels: p,
|
|
32
|
-
onTooltipHintSwitch:
|
|
32
|
+
onTooltipHintSwitch: M
|
|
33
33
|
}) {
|
|
34
|
-
const
|
|
34
|
+
const { xAxis: $, yAxis: H, title: h, frame: P, legend: b, tooltips: m } = u, n = X(M, m), f = e[i[0]].padding, B = e[i[E - 1]].padding, D = o.chartsWidth + Y, I = f.top, g = O.useMemo(() => Object.fromEntries(
|
|
35
35
|
i.map((t) => [t, { x: d.x[t], y: d.y[t] }])
|
|
36
36
|
), [d.x, d.y, i]);
|
|
37
|
-
return /* @__PURE__ */ r.jsx(G, { dataId:
|
|
37
|
+
return /* @__PURE__ */ r.jsx(G, { dataId: x, children: /* @__PURE__ */ r.jsx("div", { style: { position: "relative", width: o.totalWidth, height: o.totalHeight }, children: /* @__PURE__ */ r.jsxs(
|
|
38
38
|
"svg",
|
|
39
39
|
{
|
|
40
40
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -48,10 +48,10 @@ function tt({
|
|
|
48
48
|
/* @__PURE__ */ r.jsx(
|
|
49
49
|
A,
|
|
50
50
|
{
|
|
51
|
-
title:
|
|
51
|
+
title: v,
|
|
52
52
|
show: h.show,
|
|
53
53
|
position: h.position,
|
|
54
|
-
leftPadding:
|
|
54
|
+
leftPadding: f.left,
|
|
55
55
|
rightPadding: B.right,
|
|
56
56
|
chartsWidth: o.chartsWidth
|
|
57
57
|
}
|
|
@@ -60,39 +60,39 @@ function tt({
|
|
|
60
60
|
_,
|
|
61
61
|
{
|
|
62
62
|
facetKey: t,
|
|
63
|
-
scales:
|
|
63
|
+
scales: g[t],
|
|
64
64
|
width: o.chartWidth,
|
|
65
65
|
height: o.chartHeight,
|
|
66
66
|
dimensions: e[t],
|
|
67
|
-
facetSettings:
|
|
68
|
-
xAxis:
|
|
69
|
-
yAxis:
|
|
67
|
+
facetSettings: j,
|
|
68
|
+
xAxis: $,
|
|
69
|
+
yAxis: H,
|
|
70
70
|
discreteLabelsX: p.x[t],
|
|
71
71
|
discreteLabelsY: p.y[t],
|
|
72
|
-
frameType:
|
|
73
|
-
dotsData:
|
|
72
|
+
frameType: P.type,
|
|
73
|
+
dotsData: c[t],
|
|
74
74
|
trendsData: s ? s[t] : null,
|
|
75
|
-
facetTitle:
|
|
76
|
-
captionsSizes:
|
|
77
|
-
layersData:
|
|
78
|
-
onlyPositive:
|
|
75
|
+
facetTitle: W[t],
|
|
76
|
+
captionsSizes: C,
|
|
77
|
+
layersData: L[t],
|
|
78
|
+
onlyPositive: F,
|
|
79
79
|
aesGetters: a,
|
|
80
80
|
onMouseEnterDot: n.onMouseEnter,
|
|
81
81
|
onMouseLeaveDot: n.onMouseLeave
|
|
82
82
|
},
|
|
83
83
|
t
|
|
84
84
|
)),
|
|
85
|
-
|
|
85
|
+
b.show && /* @__PURE__ */ r.jsx("g", { transform: `translate(${D},${I})`, children: /* @__PURE__ */ r.jsx(R, { legendData: w }) }),
|
|
86
86
|
/* @__PURE__ */ r.jsx(
|
|
87
87
|
q,
|
|
88
88
|
{
|
|
89
89
|
tooltipsData: n,
|
|
90
90
|
dimensions: e[n.currentFacet],
|
|
91
|
-
scales:
|
|
92
|
-
keyColumn:
|
|
91
|
+
scales: g[n.currentFacet],
|
|
92
|
+
keyColumn: T,
|
|
93
93
|
margins: l,
|
|
94
94
|
chartSizes: o,
|
|
95
|
-
tooltips:
|
|
95
|
+
tooltips: m,
|
|
96
96
|
aesGetters: a
|
|
97
97
|
}
|
|
98
98
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartsGroup.js","sources":["../../../src/scatterplot/components/ChartsGroup.tsx"],"sourcesContent":["import { useMemo } 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 type { ColumnName } from '../../types';\nimport { LEGEND_OFFSET } from '../constants';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { TrendsData } from '../linearRegression';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { Chart } from './Chart';\nimport { ChartTooltip } from './ChartTooltip';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartSizes,\n ChartsScales,\n Margins,\n} from './types';\n\ninterface ChartsGroupProps {\n chartSettings: ScatterplotSettingsImpl['chartSettings'];\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n chartsDimensions: Record<string, ChartDimensionsData>;\n scales: ChartsScales;\n facetKeys: string[];\n settingsId: string;\n groupedDots: GroupedDots;\n legendData: LegendData;\n trendsData: TrendsData | null;\n columnsCount: number;\n margins: Margins;\n keyColumn: ColumnName;\n mainTitle: string[];\n facetTitles: Record<string, string[]>;\n captionsSizes: CaptionsSizes;\n onlyPositive: {x: boolean, y: boolean};\n layersData: Record<string, ScatterplotLayerData[]>;\n aesGetters: AesGetters;\n discreteAxesLabels: {\n x: Record<string, Record<string, string[]>>,\n y: Record<string, Record<string, string[]>>\n };\n onTooltipHintSwitch: (v:boolean) => void;\n}\n\nexport function ChartsGroup({\n settingsId,\n chartSettings,\n chartSizes,\n chartsDimensions,\n facetKeys,\n facetSettings,\n scales,\n groupedDots,\n legendData,\n trendsData,\n columnsCount,\n margins,\n keyColumn,\n mainTitle,\n facetTitles,\n captionsSizes,\n onlyPositive,\n layersData,\n aesGetters,\n discreteAxesLabels,\n onTooltipHintSwitch\n}: ChartsGroupProps) {\n const
|
|
1
|
+
{"version":3,"file":"ChartsGroup.js","sources":["../../../src/scatterplot/components/ChartsGroup.tsx"],"sourcesContent":["import { useMemo } 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 type { ColumnName } from '../../types';\nimport { LEGEND_OFFSET } from '../constants';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { TrendsData } from '../linearRegression';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { Chart } from './Chart';\nimport { ChartTooltip } from './ChartTooltip';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartSizes,\n ChartsScales,\n Margins,\n} from './types';\n\ninterface ChartsGroupProps {\n chartSettings: ScatterplotSettingsImpl['chartSettings'];\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n chartsDimensions: Record<string, ChartDimensionsData>;\n scales: ChartsScales;\n facetKeys: string[];\n settingsId: string;\n groupedDots: GroupedDots;\n legendData: LegendData;\n trendsData: TrendsData | null;\n columnsCount: number;\n margins: Margins;\n keyColumn: ColumnName;\n mainTitle: string[];\n facetTitles: Record<string, string[]>;\n captionsSizes: CaptionsSizes;\n onlyPositive: {x: boolean, y: boolean};\n layersData: Record<string, ScatterplotLayerData[]>;\n aesGetters: AesGetters;\n discreteAxesLabels: {\n x: Record<string, Record<string, string[]>>,\n y: Record<string, Record<string, string[]>>\n };\n onTooltipHintSwitch: (v:boolean) => void;\n}\n\nexport function ChartsGroup({\n settingsId,\n chartSettings,\n chartSizes,\n chartsDimensions,\n facetKeys,\n facetSettings,\n scales,\n groupedDots,\n legendData,\n trendsData,\n columnsCount,\n margins,\n keyColumn,\n mainTitle,\n facetTitles,\n captionsSizes,\n onlyPositive,\n layersData,\n aesGetters,\n discreteAxesLabels,\n onTooltipHintSwitch\n}: ChartsGroupProps) {\n const {xAxis, yAxis, title, frame, legend, tooltips} = chartSettings;\n const tooltipsData = useTooltip<Dot>(onTooltipHintSwitch, tooltips);\n \n const leftTopChartPadding = chartsDimensions[facetKeys[0]].padding;\n const rightTopChartPadding = chartsDimensions[facetKeys[columnsCount - 1]].padding;\n\n const legendLeft = chartSizes.chartsWidth + LEGEND_OFFSET;\n const legendTop = leftTopChartPadding.top;\n\n const scalesByFacet = useMemo(() => {\n return Object.fromEntries(\n facetKeys.map(key => [key, {x: scales.x[key], y: scales.y[key]}])\n );\n }, [scales.x, scales.y, facetKeys]);\n\n return (\n <ErrorBoundary dataId={settingsId}>\n <div style={{ position: 'relative', width: chartSizes.totalWidth, height: chartSizes.totalHeight }}>\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 style={{ position: 'absolute', top: 0, left: 0, zIndex: 0 }}\n >\n <defs>{fonts}</defs>\n <g transform={`translate(${margins.left},${margins.top})`} fontFamily=\"Manrope\">\n <ChartsTitle\n title={mainTitle}\n show={title.show}\n position={title.position}\n leftPadding={leftTopChartPadding.left}\n rightPadding={rightTopChartPadding.right}\n chartsWidth={chartSizes.chartsWidth}\n />\n {facetKeys.map(key => (\n <Chart\n key={key}\n facetKey={key}\n scales={scalesByFacet[key]}\n width={chartSizes.chartWidth}\n height={chartSizes.chartHeight}\n dimensions={chartsDimensions[key]}\n facetSettings={facetSettings}\n xAxis={xAxis}\n yAxis={yAxis}\n discreteLabelsX={discreteAxesLabels.x[key]}\n discreteLabelsY={discreteAxesLabels.y[key]}\n frameType={frame.type}\n dotsData={groupedDots[key]}\n trendsData={trendsData ? trendsData[key] : null}\n facetTitle={facetTitles[key]}\n captionsSizes={captionsSizes}\n layersData={layersData[key]}\n onlyPositive={onlyPositive}\n aesGetters={aesGetters}\n onMouseEnterDot={tooltipsData.onMouseEnter}\n onMouseLeaveDot={tooltipsData.onMouseLeave}\n />\n ))}\n {legend.show && (\n <g transform={`translate(${legendLeft},${legendTop})`}>\n <Legend legendData={legendData} />\n </g>\n )}\n\n <ChartTooltip\n tooltipsData={tooltipsData}\n dimensions={chartsDimensions[tooltipsData.currentFacet]}\n scales={scalesByFacet[tooltipsData.currentFacet]}\n keyColumn={keyColumn}\n margins={margins}\n chartSizes={chartSizes}\n tooltips={tooltips}\n aesGetters={aesGetters}\n />\n </g>\n </svg>\n </div>\n </ErrorBoundary>\n );\n}\n"],"names":["ChartsGroup","settingsId","chartSettings","chartSizes","chartsDimensions","facetKeys","facetSettings","scales","groupedDots","legendData","trendsData","columnsCount","margins","keyColumn","mainTitle","facetTitles","captionsSizes","onlyPositive","layersData","aesGetters","discreteAxesLabels","onTooltipHintSwitch","xAxis","yAxis","title","frame","legend","tooltips","tooltipsData","useTooltip","leftTopChartPadding","rightTopChartPadding","legendLeft","LEGEND_OFFSET","legendTop","scalesByFacet","useMemo","key","ErrorBoundary","jsx","jsxs","fonts","ChartsTitle","Chart","Legend","ChartTooltip"],"mappings":"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"}
|