@milaboratories/graph-maker 1.1.140 → 1.1.142
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 +1 -1
- package/dist/GraphMaker/constantsCommon.d.ts +8 -0
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +94 -83
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts +3 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +90 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js +5 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/index.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/index.vue.js +45 -43
- package/dist/GraphMaker/forms/LayersForm/index.vue.js.map +1 -1
- package/dist/GraphMaker/index.vue.d.ts.map +1 -1
- package/dist/GraphMaker/index.vue.js +24 -24
- package/dist/GraphMaker/index.vue.js.map +1 -1
- package/dist/GraphMaker/store.js +9 -9
- package/dist/GraphMaker/types.d.ts +1 -1
- package/dist/GraphMaker/types.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +16 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +54 -52
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +84 -70
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.js +4 -3
- package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
- package/dist/_virtual/_commonjsHelpers.js +3 -5
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +185 -164
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js +120 -103
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/ChartsGroup.js +4 -4
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js +105 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js +66 -59
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +57 -54
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js +17 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +24 -9
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash.js +8 -0
- package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/lodash.js.map +1 -1
- package/dist/{_virtual/lodash.js → node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js} +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify.js +3 -0
- package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/stringify.js.map +1 -1
- package/dist/{_virtual/stringify.js → node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js} +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +15 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +198 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +342 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +278 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +453 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +203 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +432 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +170 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +315 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +323 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js +11 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +36 -3426
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/{pl-error-like → pf-plots/dist/node_modules/@milaboratories/pl-error-like}/dist/index.js +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +979 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +1599 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js +19 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js +26 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js +3678 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js.map +1 -0
- package/dist/node_modules/{zod → @milaboratories/pf-plots/dist/node_modules/zod}/lib/index.js +1141 -1141
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/zod/lib/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +247 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +62 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +286 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -0
- package/package.json +3 -3
- package/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
- package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -584
- package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
- package/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1559
- package/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
- package/dist/node_modules/json-stringify-safe/stringify.js +0 -20
- package/dist/node_modules/json-stringify-safe/stringify.js.map +0 -1
- package/dist/node_modules/lodash/lodash.js +0 -3678
- package/dist/node_modules/lodash/lodash.js.map +0 -1
- package/dist/node_modules/zod/lib/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from './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 {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,\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 === '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","e","layerData","box","BoxElement","violin","ViolinElement","dotsGroup","DotsGroupElement","line","LineElement","errorBar","ErrorBarElement","bar","BarElement","geom","StackedBarElement","BinnedDotsElement","PairedPointsElement","SinaElement","LogoElement","statsLayer","StatsPValue","node"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"Chart.js","sources":["../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/Chart.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {BLACK} from '../../constants';\nimport {BandAxis} from './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","e","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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","x_google_ignoreList":[0]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { j as a } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
-
import { useTooltip as
|
|
2
|
+
import { useTooltip as F } from "../../common/Tooltip.js";
|
|
3
3
|
import { Chart as b } from "./Chart.js";
|
|
4
4
|
import { ErrorBoundary as B } from "../../common/ErrorBoundary.js";
|
|
5
5
|
import { ChartsTitle as k } from "../../common/ChartsTitle.js";
|
|
@@ -28,7 +28,7 @@ function X({
|
|
|
28
28
|
secondaryGrouping: D,
|
|
29
29
|
onTooltipHintSwitch: C
|
|
30
30
|
}) {
|
|
31
|
-
const [l, T] = I.useState(), $ =
|
|
31
|
+
const [l, T] = I.useState(), $ = F(C), { orientation: v, xAxis: P, yAxis: W, title: m, legend: A, frame: G } = n, h = e[i[0]].padding, H = e[i[y - 1]].padding, L = s.chartsWidth + z, E = h.top;
|
|
32
32
|
return /* @__PURE__ */ a.jsx(B, { dataId: d, children: /* @__PURE__ */ a.jsxs(
|
|
33
33
|
"svg",
|
|
34
34
|
{
|
|
@@ -46,7 +46,7 @@ function X({
|
|
|
46
46
|
show: m.show,
|
|
47
47
|
position: m.position,
|
|
48
48
|
leftPadding: h.left,
|
|
49
|
-
rightPadding:
|
|
49
|
+
rightPadding: H.right,
|
|
50
50
|
chartsWidth: s.chartsWidth
|
|
51
51
|
}
|
|
52
52
|
),
|
|
@@ -81,7 +81,7 @@ function X({
|
|
|
81
81
|
},
|
|
82
82
|
t
|
|
83
83
|
)),
|
|
84
|
-
A.show && /* @__PURE__ */ a.jsx("g", { transform: `translate(${
|
|
84
|
+
A.show && /* @__PURE__ */ a.jsx("g", { transform: `translate(${L},${E})`, children: /* @__PURE__ */ a.jsx(M, { legendData: x }) })
|
|
85
85
|
] }),
|
|
86
86
|
/* @__PURE__ */ a.jsx(
|
|
87
87
|
"g",
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { j as f } from "../../../node_modules/react/jsx-runtime.js";
|
|
2
|
+
import { r as D } from "../../../_virtual/index.js";
|
|
3
|
+
import { StackedBarElement as w } from "./StackedBarElement.js";
|
|
4
|
+
import b from "../../../node_modules/d3-shape/src/area.js";
|
|
5
|
+
import { bumpX as A, bumpY as E } from "../../../node_modules/d3-shape/src/curve/bump.js";
|
|
6
|
+
function M(e) {
|
|
7
|
+
return e && typeof e == "object" && "type" in e && e.type === "secondaryGrouping";
|
|
8
|
+
}
|
|
9
|
+
function S(e, t, r, o, y) {
|
|
10
|
+
if (r && typeof r == "object" && "type" in r) {
|
|
11
|
+
if (r.type === "primaryGrouping")
|
|
12
|
+
return e.xPrimaryAes(o)[t];
|
|
13
|
+
if (r.type === "secondaryGrouping")
|
|
14
|
+
return e.xSecondaryAes(y)[t];
|
|
15
|
+
}
|
|
16
|
+
return r;
|
|
17
|
+
}
|
|
18
|
+
function G(e, t, r, o, y, d, v) {
|
|
19
|
+
const h = (r - t) / 2, C = v.map((l) => {
|
|
20
|
+
const s = {};
|
|
21
|
+
let i = 0;
|
|
22
|
+
return y.forEach((a) => {
|
|
23
|
+
var c;
|
|
24
|
+
const p = ((c = l.valuesMap[a]) == null ? void 0 : c.height) ?? 0;
|
|
25
|
+
s[a] = {
|
|
26
|
+
y1: i,
|
|
27
|
+
y2: i + p
|
|
28
|
+
}, i += p;
|
|
29
|
+
}), s;
|
|
30
|
+
});
|
|
31
|
+
return y.map((l) => {
|
|
32
|
+
const s = C.flatMap((a, c) => {
|
|
33
|
+
const p = o[c], m = e.xPrimary(p) ?? 0, x = e.y(a[l].y1), u = e.y(a[l].y2), g = [m + h, x, u], n = [m + r - h, x, u];
|
|
34
|
+
return d ? [g, n] : [n, g];
|
|
35
|
+
}), i = (d ? b().curve(A).x((a) => a[0]).y0((a) => a[1]).y1((a) => a[2])(s) : b().curve(E).y((a) => a[0]).x0((a) => a[1]).x1((a) => a[2])(s)) ?? "";
|
|
36
|
+
return { secondaryKey: l, pathD: i };
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function K(e, t) {
|
|
40
|
+
return e.meta.showBars ? e.aes.barWidth === "auto" ? t * 0.2 : Math.min(t, e.aes.barWidth) : 0;
|
|
41
|
+
}
|
|
42
|
+
function O({
|
|
43
|
+
facetKey: e,
|
|
44
|
+
scales: t,
|
|
45
|
+
orientation: r,
|
|
46
|
+
layerData: o,
|
|
47
|
+
sideDistances: y,
|
|
48
|
+
showTooltips: d,
|
|
49
|
+
secondaryGrouping: v,
|
|
50
|
+
activeElementContainer: h,
|
|
51
|
+
tooltipsContainer: C,
|
|
52
|
+
tooltipsData: l
|
|
53
|
+
}) {
|
|
54
|
+
const [s, i] = D.useState(null), a = r === "vertical", c = t.xPrimary.bandwidth(), p = K(o, c), m = t.xPrimary.domain(), x = t.xSecondary.domain().reverse(), u = M(o.aes.fillColor) || typeof o.aes.fillColor == "string", g = u ? G(
|
|
55
|
+
t,
|
|
56
|
+
p,
|
|
57
|
+
c,
|
|
58
|
+
m,
|
|
59
|
+
x,
|
|
60
|
+
a,
|
|
61
|
+
o.geoms[e]
|
|
62
|
+
) : [];
|
|
63
|
+
return /* @__PURE__ */ f.jsxs("g", { children: [
|
|
64
|
+
/* @__PURE__ */ f.jsx("g", { children: u && g.map(({ secondaryKey: n, pathD: j }) => /* @__PURE__ */ f.jsx(
|
|
65
|
+
"path",
|
|
66
|
+
{
|
|
67
|
+
d: j,
|
|
68
|
+
fill: S(t, "fillColor", o.aes.fillColor, m[0], n),
|
|
69
|
+
opacity: o.aes.areaOpacity * (s !== null && n !== s ? 0.5 : 1),
|
|
70
|
+
onMouseEnter: () => i(n),
|
|
71
|
+
onMouseLeave: () => i(null)
|
|
72
|
+
},
|
|
73
|
+
n
|
|
74
|
+
)) }),
|
|
75
|
+
/* @__PURE__ */ f.jsx("g", { children: o.meta.showBars && o.geoms[e].map((n) => /* @__PURE__ */ f.jsx(
|
|
76
|
+
w,
|
|
77
|
+
{
|
|
78
|
+
facetKey: e,
|
|
79
|
+
geom: n,
|
|
80
|
+
elementsAmount: o.geoms[e].length,
|
|
81
|
+
scales: t,
|
|
82
|
+
orientation: r,
|
|
83
|
+
aes: {
|
|
84
|
+
...o.aes,
|
|
85
|
+
width: p,
|
|
86
|
+
opacity: o.aes.barsOpacity
|
|
87
|
+
},
|
|
88
|
+
normalize: o.meta.normalize,
|
|
89
|
+
sideDistances: y,
|
|
90
|
+
showTooltips: d,
|
|
91
|
+
secondaryGrouping: v,
|
|
92
|
+
tooltipsData: l,
|
|
93
|
+
activeElementContainer: h,
|
|
94
|
+
tooltipsContainer: C,
|
|
95
|
+
activeKey: s,
|
|
96
|
+
onSectionHover: i
|
|
97
|
+
},
|
|
98
|
+
n.key
|
|
99
|
+
)) })
|
|
100
|
+
] });
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
O as StackedAreaElement
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=StackedAreaElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackedAreaElement.js","sources":["../../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/layers/StackedAreaElement.tsx"],"sourcesContent":["import {area, curveBumpX, curveBumpY} from 'd3-shape';\nimport React, { useState } from 'react';\nimport type {TooltipsData} from '../../../common/Tooltip';\nimport type {AesItem, GroupingData, InheritAesDiscrete, Orientation} from '../../../types';\nimport type {StackedBar} from '../../layers';\nimport type {StackedAreaData} from '../../layers/types';\nimport type {ChartScales} from '../types';\nimport {StackedBarElement} from './StackedBarElement';\n\ninterface StackedAreaProps {\n facetKey: string;\n scales: ChartScales;\n layerData: StackedAreaData;\n orientation: Orientation;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n}\n\nfunction isSecondaryGroupedAes (value: string | InheritAesDiscrete) {\n return value && typeof value === 'object' && 'type' in value && value.type === 'secondaryGrouping';\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n primaryGrouping: string,\n secondaryGrouping: string\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return scales.xPrimaryAes(primaryGrouping)[field] as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return scales.xSecondaryAes(secondaryGrouping)[field] as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getAreas(\n scales: ChartScales,\n barWidth: number,\n bandWidth: number,\n primaryKeys: string[],\n secondaryKeys: string[],\n isVertical: boolean,\n bars: StackedBar[],\n) {\n const offsetX = (bandWidth - barWidth) / 2;\n const ys = bars.map((bar) => {\n const yValues:Record<string, {y1: number, y2: number}> = {};\n let currentHeight = 0;\n secondaryKeys.forEach(secondaryKey => {\n const height = bar.valuesMap[secondaryKey]?.height ?? 0;\n yValues[secondaryKey] = {\n y1: currentHeight,\n y2: currentHeight + height,\n };\n currentHeight += height;\n });\n return yValues;\n });\n\n return secondaryKeys.map((secondaryKey) => {\n const points:[number, number, number][] = ys.flatMap((yMap, idx) => {\n const primaryKey = primaryKeys[idx];\n const x = scales.xPrimary(primaryKey) ?? 0;\n const y1 = scales.y(yMap[secondaryKey].y1);\n const y2 = scales.y(yMap[secondaryKey].y2);\n const p1:[number, number, number] = [x + offsetX, y1, y2];\n const p2:[number, number, number] = [x + bandWidth - offsetX, y1, y2];\n return isVertical ? [p1, p2] : [p2, p1];\n });\n\n const pathD = (isVertical ? (\n area<[number, number, number]>()\n .curve(curveBumpX)\n .x(d => d[0])\n .y0(d => d[1])\n .y1(d => d[2])(points)\n ) :\n area<[number, number, number]>()\n .curve(curveBumpY)\n .y(d => d[0])\n .x0(d => d[1])\n .x1(d => d[2])(points)) ?? '';\n return {secondaryKey, pathD};\n });\n}\n\nfunction calculateBarWidth (\n layerData: StackedAreaData,\n bandwidth: number\n) {\n if (!layerData.meta.showBars) {\n return 0;\n }\n return layerData.aes.barWidth === 'auto' ? bandwidth * 0.2 : Math.min(bandwidth, layerData.aes.barWidth);\n}\n\nexport function StackedAreaElement({\n facetKey,\n scales,\n orientation,\n layerData,\n sideDistances,\n showTooltips,\n secondaryGrouping,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n}: StackedAreaProps) {\n const [selectedAreaKey, setSelectedAreaKey] = useState<string | null>(null);\n const isVertical = orientation === 'vertical';\n const boxOuterWidth = scales.xPrimary.bandwidth();\n const boxWidth = calculateBarWidth(layerData, boxOuterWidth);\n const primaryKeys = scales.xPrimary.domain();\n const secondaryKeys = scales.xSecondary.domain().reverse();\n\n const needsAreas = isSecondaryGroupedAes(layerData.aes.fillColor) || typeof layerData.aes.fillColor === 'string';\n const areas = needsAreas ? getAreas(\n scales,\n boxWidth,\n boxOuterWidth,\n primaryKeys,\n secondaryKeys,\n isVertical,\n layerData.geoms[facetKey]\n ) : [];\n\n return (\n <g>\n <g>\n {needsAreas && areas.map(({secondaryKey, pathD}) => (\n <path\n key={secondaryKey}\n d={pathD}\n fill={getAesValue(scales, 'fillColor', layerData.aes.fillColor, primaryKeys[0], secondaryKey)}\n opacity={layerData.aes.areaOpacity * (selectedAreaKey !== null && secondaryKey !== selectedAreaKey ? 0.5 : 1)}\n onMouseEnter={() => setSelectedAreaKey(secondaryKey)}\n onMouseLeave={() => setSelectedAreaKey(null)}\n />\n ))}\n </g>\n <g>\n {layerData.meta.showBars && (layerData as StackedAreaData).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={{\n ...layerData.aes,\n width: boxWidth,\n opacity: layerData.aes.barsOpacity\n }}\n normalize={layerData.meta.normalize}\n sideDistances={sideDistances}\n showTooltips={showTooltips}\n secondaryGrouping={secondaryGrouping}\n tooltipsData={tooltipsData}\n activeElementContainer={activeElementContainer}\n tooltipsContainer={tooltipsContainer}\n activeKey={selectedAreaKey}\n onSectionHover={setSelectedAreaKey}\n />\n ))}\n </g>\n </g>\n );\n}\n"],"names":["isSecondaryGroupedAes","value","getAesValue","scales","field","primaryGrouping","secondaryGrouping","getAreas","barWidth","bandWidth","primaryKeys","secondaryKeys","isVertical","bars","offsetX","ys","bar","yValues","currentHeight","secondaryKey","height","_a","points","yMap","idx","primaryKey","x","y1","y2","p1","p2","pathD","area","curveBumpX","d","curveBumpY","o","calculateBarWidth","layerData","bandwidth","StackedAreaElement","facetKey","orientation","sideDistances","showTooltips","activeElementContainer","tooltipsContainer","tooltipsData","selectedAreaKey","setSelectedAreaKey","useState","boxOuterWidth","boxWidth","needsAreas","areas","g","jsx","geom","StackedBarElement"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,84 +1,91 @@
|
|
|
1
|
-
import { j as
|
|
1
|
+
import { j as h } from "../../../node_modules/react/jsx-runtime.js";
|
|
2
2
|
import { r as B } from "../../../node_modules/react-dom/index.js";
|
|
3
|
-
import { Tooltip as
|
|
4
|
-
import { numberFormat as
|
|
5
|
-
function
|
|
3
|
+
import { Tooltip as K } from "../../../common/Tooltip.js";
|
|
4
|
+
import { numberFormat as W } from "../../../utils/numberFormat.js";
|
|
5
|
+
function E(n, t, r, o, a) {
|
|
6
6
|
if (r && typeof r == "object" && "type" in r) {
|
|
7
7
|
if (r.type === "primaryGrouping")
|
|
8
|
-
return
|
|
8
|
+
return n.xPrimaryAes(o)[t];
|
|
9
9
|
if (r.type === "secondaryGrouping")
|
|
10
|
-
return
|
|
10
|
+
return n.xSecondaryAes(a)[t];
|
|
11
11
|
}
|
|
12
12
|
return r;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
15
|
-
const
|
|
16
|
-
return
|
|
14
|
+
function H(n, t, r, o) {
|
|
15
|
+
const a = n.valueLabels[r], p = W(t.valuesMap[r].height) + (o ? "%" : "");
|
|
16
|
+
return a ? [a, p] : [p];
|
|
17
17
|
}
|
|
18
|
-
function
|
|
19
|
-
facetKey:
|
|
20
|
-
scales:
|
|
18
|
+
function I({
|
|
19
|
+
facetKey: n,
|
|
20
|
+
scales: t,
|
|
21
21
|
orientation: r,
|
|
22
|
-
geom:
|
|
23
|
-
aes:
|
|
24
|
-
sideDistances:
|
|
25
|
-
showTooltips:
|
|
26
|
-
elementsAmount:
|
|
27
|
-
normalize:
|
|
28
|
-
secondaryGrouping:
|
|
29
|
-
activeElementContainer:
|
|
30
|
-
tooltipsContainer:
|
|
31
|
-
tooltipsData:
|
|
22
|
+
geom: o,
|
|
23
|
+
aes: a,
|
|
24
|
+
sideDistances: p,
|
|
25
|
+
showTooltips: D,
|
|
26
|
+
elementsAmount: P,
|
|
27
|
+
normalize: b,
|
|
28
|
+
secondaryGrouping: k,
|
|
29
|
+
activeElementContainer: v,
|
|
30
|
+
tooltipsContainer: F,
|
|
31
|
+
tooltipsData: i,
|
|
32
|
+
activeKey: M,
|
|
33
|
+
onSectionHover: y
|
|
32
34
|
}) {
|
|
33
|
-
const s = r === "vertical", l =
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
if (!
|
|
35
|
+
const s = r === "vertical", l = t.xPrimary.bandwidth(), d = (t.xPrimary(o.primaryGrouping) ?? 0) + l / 2, c = a.width === "auto" ? l * 0.8 : Math.min(l, a.width), C = (l - c) / 2, G = t.xSecondary.domain().reverse(), j = {};
|
|
36
|
+
let g = 0;
|
|
37
|
+
G.forEach((e) => {
|
|
38
|
+
if (!o.valuesMap[e])
|
|
37
39
|
return;
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
y1:
|
|
41
|
-
y2:
|
|
42
|
-
},
|
|
40
|
+
const f = o.valuesMap[e].height;
|
|
41
|
+
j[e] = {
|
|
42
|
+
y1: g,
|
|
43
|
+
y2: g + f
|
|
44
|
+
}, g += f;
|
|
43
45
|
});
|
|
44
|
-
const
|
|
45
|
-
return /* @__PURE__ */
|
|
46
|
-
if (!
|
|
46
|
+
const A = v && i.fixed;
|
|
47
|
+
return /* @__PURE__ */ h.jsx("g", { opacity: a.opacity, strokeWidth: a.lineWidth, children: G.map((e) => {
|
|
48
|
+
if (!o.valuesMap[e])
|
|
47
49
|
return null;
|
|
48
|
-
const { y1:
|
|
50
|
+
const { y1: f, y2: L } = j[e], u = t.y(f), m = t.y(L), S = Math.abs(u - m), T = E(t, "lineColor", a.lineColor, o.primaryGrouping, e), _ = E(t, "fillColor", a.fillColor, o.primaryGrouping, e), x = `stackedBar_${String(o.primaryGrouping)}_${String(e)}`, w = /* @__PURE__ */ h.jsx(
|
|
49
51
|
"rect",
|
|
50
52
|
{
|
|
51
|
-
width: s ?
|
|
52
|
-
height: s ?
|
|
53
|
-
x: s ?
|
|
54
|
-
y: s ? Math.min(
|
|
55
|
-
fill:
|
|
56
|
-
stroke:
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
width: s ? c : S,
|
|
54
|
+
height: s ? S : c,
|
|
55
|
+
x: s ? d - c / 2 : Math.min(u, m),
|
|
56
|
+
y: s ? Math.min(u, m) : d - c / 2,
|
|
57
|
+
fill: _,
|
|
58
|
+
stroke: T,
|
|
59
|
+
onMouseEnter: () => {
|
|
60
|
+
i.onMouseEnter(x, n), y && y(e);
|
|
61
|
+
},
|
|
62
|
+
onMouseLeave: () => {
|
|
63
|
+
i.onMouseLeave(), y && y(null);
|
|
64
|
+
},
|
|
65
|
+
opacity: M && e !== M ? 0.5 : 1
|
|
59
66
|
}
|
|
60
|
-
),
|
|
61
|
-
return /* @__PURE__ */
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
67
|
+
), z = i.selectedData === x && n === i.currentFacet && A;
|
|
68
|
+
return /* @__PURE__ */ h.jsxs("g", { children: [
|
|
69
|
+
z ? B.createPortal(w, v) : w,
|
|
70
|
+
D && /* @__PURE__ */ h.jsx(
|
|
71
|
+
K,
|
|
65
72
|
{
|
|
66
|
-
content:
|
|
67
|
-
x: s ?
|
|
68
|
-
y: s ? (
|
|
69
|
-
sideDistances:
|
|
73
|
+
content: H(k, o, e, b),
|
|
74
|
+
x: s ? d - C + 4 : (u + m) / 2,
|
|
75
|
+
y: s ? (u + m) / 2 : d + C - 4,
|
|
76
|
+
sideDistances: p,
|
|
70
77
|
horizontal: s,
|
|
71
|
-
offset:
|
|
72
|
-
active: x ===
|
|
73
|
-
fixed:
|
|
74
|
-
onClose:
|
|
75
|
-
container:
|
|
78
|
+
offset: P > 1 ? l / 2 : l / 4,
|
|
79
|
+
active: x === i.selectedData && n === i.currentFacet,
|
|
80
|
+
fixed: i.fixed,
|
|
81
|
+
onClose: i.onClose,
|
|
82
|
+
container: F
|
|
76
83
|
}
|
|
77
84
|
)
|
|
78
|
-
] },
|
|
85
|
+
] }, e);
|
|
79
86
|
}) });
|
|
80
87
|
}
|
|
81
88
|
export {
|
|
82
|
-
|
|
89
|
+
I as StackedBarElement
|
|
83
90
|
};
|
|
84
91
|
//# sourceMappingURL=StackedBarElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedBarElement.js","sources":["../../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/layers/StackedBarElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport type { AesItem, GroupingData, InheritAesDiscrete, Orientation } from '../../../types';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { StackedBarLayer } from '../../DiscreteSettingsImpl';\nimport type { StackedBar } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface StackedBarProps {\n facetKey: string;\n scales: ChartScales;\n geom: StackedBar;\n orientation: Orientation;\n aes: StackedBarLayer['aes'];\n normalize: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n primaryGrouping: string,\n secondaryGrouping: string\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return scales.xPrimaryAes(primaryGrouping)[field] as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return scales.xSecondaryAes(secondaryGrouping)[field] as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(secondaryGrouping:GroupingData, geom:StackedBar, secondaryKey: string, normalize:boolean) {\n const keyLabel = secondaryGrouping.valueLabels[secondaryKey];\n const heightValue = numberFormat(geom.valuesMap[secondaryKey].height) + (normalize ? '%' : '');\n return keyLabel ? [keyLabel, heightValue] : [heightValue];\n}\n\nexport function StackedBarElement({\n facetKey,\n scales,\n orientation,\n geom,\n aes,\n sideDistances,\n showTooltips,\n elementsAmount,\n normalize,\n secondaryGrouping,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n}: StackedBarProps) {\n const isVertical = orientation === 'vertical';\n const boxOuterWidth = scales.xPrimary.bandwidth();\n const boxXPosition = (scales.xPrimary(geom.primaryGrouping) ?? 0) + boxOuterWidth / 2;\n const boxWidth = aes.width === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.width);\n const secondaryKeys = scales.xSecondary.domain().reverse();\n const yValues:Record<string, {y1: number, y2: number}> = {};\n let currentHeight = 0;\n secondaryKeys.forEach(secondaryKey => {\n if (!geom.valuesMap[secondaryKey]) {\n return;\n }\n const height = geom.valuesMap[secondaryKey].height;\n yValues[secondaryKey] = {\n y1: currentHeight,\n y2: currentHeight + height,\n };\n currentHeight += height;\n });\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g opacity={aes.opacity} strokeWidth={aes.lineWidth}>\n {secondaryKeys.map(key => {\n if (!geom.valuesMap[key]) {\n return null;\n }\n const {y1, y2} = yValues[key];\n const y1Px = scales.y(y1);\n const y2Px = scales.y(y2);\n const boxHeight = Math.abs(y1Px - y2Px);\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, geom.primaryGrouping, key);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, geom.primaryGrouping, key);\n const globalKey = `stackedBar_${String(geom.primaryGrouping)}_${String(key)}`;\n\n const section = (\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? boxXPosition - boxWidth / 2 : Math.min(y1Px, y2Px)}\n y={isVertical ? Math.min(y1Px, y2Px) : boxXPosition - boxWidth / 2}\n fill={fillColor}\n stroke={lineColor}\n onMouseOver={() => tooltipsData.onMouseEnter(globalKey, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n const highlightedSection = tooltipsData.selectedData === globalKey && facetKey === tooltipsData.currentFacet && dimmedBackground;\n return (\n <g key={key}>\n {highlightedSection ? createPortal(section, activeElementContainer) : section}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(secondaryGrouping, geom, key, normalize)}\n x={isVertical ? boxXPosition : (y1Px + y2Px) / 2}\n y={isVertical ? (y1Px + y2Px) / 2 : boxXPosition}\n sideDistances={sideDistances}\n horizontal={isVertical}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n active={globalKey === tooltipsData.selectedData && facetKey === tooltipsData.currentFacet}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n })}\n </g>\n );\n}\n"],"names":["getAesValue","scales","field","value","primaryGrouping","secondaryGrouping","getTooltipContent","geom","secondaryKey","normalize","keyLabel","heightValue","numberFormat","StackedBarElement","facetKey","orientation","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","isVertical","boxOuterWidth","boxXPosition","boxWidth","secondaryKeys","yValues","currentHeight","height","dimmedBackground","jsx","key","y1","y2","y1Px","y2Px","boxHeight","lineColor","fillColor","globalKey","section","highlightedSection","f","createPortal","Tooltip"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"StackedBarElement.js","sources":["../../../../../../../../node_modules/@milaboratories/miplots4/src/discrete/components/layers/StackedBarElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport type { AesItem, GroupingData, InheritAesDiscrete, Orientation } from '../../../types';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { StackedBarLayer } from '../../DiscreteSettingsImpl';\nimport type { StackedBar } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface StackedBarProps {\n facetKey: string;\n scales: ChartScales;\n geom: StackedBar;\n orientation: Orientation;\n aes: StackedBarLayer['aes'];\n normalize: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n activeKey?: string | null;\n onSectionHover?: (key: string | null) => void;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n primaryGrouping: string,\n secondaryGrouping: string\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return scales.xPrimaryAes(primaryGrouping)[field] as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return scales.xSecondaryAes(secondaryGrouping)[field] as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(secondaryGrouping:GroupingData, geom:StackedBar, secondaryKey: string, normalize:boolean) {\n const keyLabel = secondaryGrouping.valueLabels[secondaryKey];\n const heightValue = numberFormat(geom.valuesMap[secondaryKey].height) + (normalize ? '%' : '');\n return keyLabel ? [keyLabel, heightValue] : [heightValue];\n}\n\nexport function StackedBarElement({\n facetKey,\n scales,\n orientation,\n geom,\n aes,\n sideDistances,\n showTooltips,\n elementsAmount,\n normalize,\n secondaryGrouping,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n activeKey,\n onSectionHover\n}: StackedBarProps) {\n const isVertical = orientation === 'vertical';\n const boxOuterWidth = scales.xPrimary.bandwidth();\n const boxXPosition = (scales.xPrimary(geom.primaryGrouping) ?? 0) + boxOuterWidth / 2;\n const boxWidth = aes.width === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.width);\n const boxOffset = (boxOuterWidth - boxWidth) / 2;\n const secondaryKeys = scales.xSecondary.domain().reverse();\n const yValues:Record<string, {y1: number, y2: number}> = {};\n let currentHeight = 0;\n secondaryKeys.forEach(secondaryKey => {\n if (!geom.valuesMap[secondaryKey]) {\n return;\n }\n const height = geom.valuesMap[secondaryKey].height;\n yValues[secondaryKey] = {\n y1: currentHeight,\n y2: currentHeight + height,\n };\n currentHeight += height;\n });\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g opacity={aes.opacity} strokeWidth={aes.lineWidth}>\n {secondaryKeys.map(key => {\n if (!geom.valuesMap[key]) {\n return null;\n }\n const {y1, y2} = yValues[key];\n const y1Px = scales.y(y1);\n const y2Px = scales.y(y2);\n const boxHeight = Math.abs(y1Px - y2Px);\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, geom.primaryGrouping, key);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, geom.primaryGrouping, key);\n const globalKey = `stackedBar_${String(geom.primaryGrouping)}_${String(key)}`;\n\n const section = (\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? boxXPosition - boxWidth / 2 : Math.min(y1Px, y2Px)}\n y={isVertical ? Math.min(y1Px, y2Px) : boxXPosition - boxWidth / 2}\n fill={fillColor}\n stroke={lineColor}\n onMouseEnter={() => {\n tooltipsData.onMouseEnter(globalKey, facetKey);\n if (onSectionHover) {\n onSectionHover(key);\n }\n }}\n onMouseLeave={() => {\n tooltipsData.onMouseLeave();\n if (onSectionHover) {\n onSectionHover(null);\n }\n }}\n opacity={activeKey && key !== activeKey ? 0.5 : 1}\n />\n );\n const highlightedSection = tooltipsData.selectedData === globalKey && facetKey === tooltipsData.currentFacet && dimmedBackground;\n return (\n <g key={key}>\n {highlightedSection ? createPortal(section, activeElementContainer) : section}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(secondaryGrouping, geom, key, normalize)}\n x={isVertical ? boxXPosition - boxOffset + 4 : (y1Px + y2Px) / 2}\n y={isVertical ? (y1Px + y2Px) / 2 : boxXPosition + boxOffset - 4}\n sideDistances={sideDistances}\n horizontal={isVertical}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n active={globalKey === tooltipsData.selectedData && facetKey === tooltipsData.currentFacet}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n })}\n </g>\n );\n}\n"],"names":["getAesValue","scales","field","value","primaryGrouping","secondaryGrouping","getTooltipContent","geom","secondaryKey","normalize","keyLabel","heightValue","numberFormat","StackedBarElement","facetKey","orientation","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","activeKey","onSectionHover","isVertical","boxOuterWidth","boxXPosition","boxWidth","boxOffset","secondaryKeys","yValues","currentHeight","height","dimmedBackground","jsx","key","y1","y2","y1Px","y2Px","boxHeight","lineColor","fillColor","globalKey","section","highlightedSection","m","createPortal","Tooltip"],"mappings":"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","x_google_ignoreList":[0]}
|