@milaboratories/miplots4 1.0.133 → 1.0.135

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.
Files changed (148) hide show
  1. package/dist/{discrete/components → common}/BandAxis.d.ts +2 -2
  2. package/dist/common/BandAxis.d.ts.map +1 -0
  3. package/dist/{discrete/components → common}/BandAxis.js +3 -3
  4. package/dist/common/BandAxis.js.map +1 -0
  5. package/dist/common/ContinuousGrid.d.ts +3 -3
  6. package/dist/common/ContinuousGrid.d.ts.map +1 -1
  7. package/dist/common/ContinuousGrid.js.map +1 -1
  8. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  9. package/dist/discrete/ChartRenderer.js +192 -265
  10. package/dist/discrete/ChartRenderer.js.map +1 -1
  11. package/dist/discrete/DiscreteSettingsImpl.d.ts +17 -2
  12. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  13. package/dist/discrete/DiscreteSettingsImpl.js +93 -67
  14. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  15. package/dist/discrete/components/Chart.d.ts.map +1 -1
  16. package/dist/discrete/components/Chart.js +153 -136
  17. package/dist/discrete/components/Chart.js.map +1 -1
  18. package/dist/discrete/components/Grid.d.ts +3 -3
  19. package/dist/discrete/components/Grid.d.ts.map +1 -1
  20. package/dist/discrete/components/Grid.js.map +1 -1
  21. package/dist/discrete/components/layers/StackedAreaElement.d.ts +24 -0
  22. package/dist/discrete/components/layers/StackedAreaElement.d.ts.map +1 -0
  23. package/dist/discrete/components/layers/StackedAreaElement.js +105 -0
  24. package/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
  25. package/dist/discrete/components/layers/StackedBarElement.d.ts +3 -1
  26. package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -1
  27. package/dist/discrete/components/layers/StackedBarElement.js +67 -60
  28. package/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
  29. package/dist/discrete/components/types.d.ts +5 -3
  30. package/dist/discrete/components/types.d.ts.map +1 -1
  31. package/dist/discrete/index.d.ts.map +1 -1
  32. package/dist/discrete/index.js +58 -55
  33. package/dist/discrete/index.js.map +1 -1
  34. package/dist/discrete/layers/index.d.ts +1 -0
  35. package/dist/discrete/layers/index.d.ts.map +1 -1
  36. package/dist/discrete/layers/stackedArea.d.ts +10 -0
  37. package/dist/discrete/layers/stackedArea.d.ts.map +1 -0
  38. package/dist/discrete/layers/stackedArea.js +17 -0
  39. package/dist/discrete/layers/stackedArea.js.map +1 -0
  40. package/dist/discrete/layers/types.d.ts +12 -1
  41. package/dist/discrete/layers/types.d.ts.map +1 -1
  42. package/dist/discrete/utils/index.d.ts +1 -1
  43. package/dist/discrete/utils/index.d.ts.map +1 -1
  44. package/dist/histogram/ChartRenderer.js +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/node_modules/d3-scale/src/band.js +45 -35
  48. package/dist/node_modules/d3-scale/src/band.js.map +1 -1
  49. package/dist/scatterplot/ChartRenderer.d.ts +10 -5
  50. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  51. package/dist/scatterplot/ChartRenderer.js +276 -197
  52. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  53. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +5 -3
  54. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  55. package/dist/scatterplot/ScatterplotSettingsImpl.js +53 -53
  56. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  57. package/dist/scatterplot/components/Chart.d.ts +3 -1
  58. package/dist/scatterplot/components/Chart.d.ts.map +1 -1
  59. package/dist/scatterplot/components/Chart.js +23 -19
  60. package/dist/scatterplot/components/Chart.js.map +1 -1
  61. package/dist/scatterplot/components/ChartAxis.d.ts +3 -1
  62. package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -1
  63. package/dist/scatterplot/components/ChartAxis.js +31 -27
  64. package/dist/scatterplot/components/ChartAxis.js.map +1 -1
  65. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  66. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  67. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  68. package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -1
  69. package/dist/scatterplot/components/ChartTrendsData.js +20 -17
  70. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  71. package/dist/scatterplot/components/ChartsGroup.d.ts +5 -1
  72. package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
  73. package/dist/scatterplot/components/ChartsGroup.js +49 -46
  74. package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  75. package/dist/scatterplot/components/Grid.d.ts +3 -3
  76. package/dist/scatterplot/components/Grid.d.ts.map +1 -1
  77. package/dist/scatterplot/components/Grid.js +31 -27
  78. package/dist/scatterplot/components/Grid.js.map +1 -1
  79. package/dist/scatterplot/components/types.d.ts +15 -5
  80. package/dist/scatterplot/components/types.d.ts.map +1 -1
  81. package/dist/scatterplot/dots.d.ts +2 -2
  82. package/dist/scatterplot/dots.d.ts.map +1 -1
  83. package/dist/scatterplot/dots.js.map +1 -1
  84. package/dist/scatterplot/getLayersData.d.ts +3 -2
  85. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  86. package/dist/scatterplot/getLayersData.js +29 -18
  87. package/dist/scatterplot/getLayersData.js.map +1 -1
  88. package/dist/scatterplot/index.d.ts +3 -0
  89. package/dist/scatterplot/index.d.ts.map +1 -1
  90. package/dist/scatterplot/index.js +73 -59
  91. package/dist/scatterplot/index.js.map +1 -1
  92. package/dist/scatterplot/linearRegression.d.ts +4 -6
  93. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  94. package/dist/scatterplot/linearRegression.js.map +1 -1
  95. package/dist/scatterplot/utils/isNumericScale.d.ts +6 -0
  96. package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
  97. package/dist/scatterplot/utils/isNumericScale.js +11 -0
  98. package/dist/scatterplot/utils/isNumericScale.js.map +1 -0
  99. package/dist/scatterplot-umap/ChartRenderer.js +1 -1
  100. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  101. package/dist/scatterplot-umap/SettingsImpl.d.ts +7 -4
  102. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  103. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  104. package/dist/scatterplot-umap/components/LowerSVG.js +7 -7
  105. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  106. package/dist/types/bubble.d.ts +12 -12
  107. package/dist/types/common.d.ts +186 -21
  108. package/dist/types/common.d.ts.map +1 -1
  109. package/dist/types/common.js +36 -26
  110. package/dist/types/common.js.map +1 -1
  111. package/dist/types/dendro.d.ts +22 -22
  112. package/dist/types/discrete.d.ts +291 -53
  113. package/dist/types/discrete.d.ts.map +1 -1
  114. package/dist/types/discrete.js +48 -33
  115. package/dist/types/discrete.js.map +1 -1
  116. package/dist/types/heatmap.d.ts +12 -12
  117. package/dist/types/histogram.d.ts +4 -4
  118. package/dist/types/scatterplot-umap.d.ts +4 -34
  119. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  120. package/dist/types/scatterplot-umap.js +1 -1
  121. package/dist/types/scatterplot-umap.js.map +1 -1
  122. package/dist/types/scatterplot.d.ts +186 -32
  123. package/dist/types/scatterplot.d.ts.map +1 -1
  124. package/dist/utils/createMultilineDiscreteLabels.d.ts +4 -0
  125. package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
  126. package/dist/utils/createMultilineDiscreteLabels.js +32 -0
  127. package/dist/utils/createMultilineDiscreteLabels.js.map +1 -0
  128. package/dist/utils/getFacetRowsColumns.d.ts +3 -0
  129. package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
  130. package/dist/utils/getFacetRowsColumns.js +18 -0
  131. package/dist/utils/getFacetRowsColumns.js.map +1 -0
  132. package/dist/utils/measureMultilineDiscreteLabels.d.ts +9 -0
  133. package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
  134. package/dist/utils/measureMultilineDiscreteLabels.js +63 -0
  135. package/dist/utils/measureMultilineDiscreteLabels.js.map +1 -0
  136. package/dist/utils/splitTextByWidth.d.ts.map +1 -0
  137. package/dist/{discrete/utils → utils}/splitTextByWidth.js +1 -1
  138. package/dist/utils/splitTextByWidth.js.map +1 -0
  139. package/package.json +1 -1
  140. package/dist/discrete/components/BandAxis.d.ts.map +0 -1
  141. package/dist/discrete/components/BandAxis.js.map +0 -1
  142. package/dist/discrete/utils/splitTextByWidth.d.ts.map +0 -1
  143. package/dist/discrete/utils/splitTextByWidth.js.map +0 -1
  144. package/dist/scatterplot/components/Axis.d.ts +0 -13
  145. package/dist/scatterplot/components/Axis.d.ts.map +0 -1
  146. package/dist/scatterplot/components/Axis.js +0 -59
  147. package/dist/scatterplot/components/Axis.js.map +0 -1
  148. /package/dist/{discrete/utils → utils}/splitTextByWidth.d.ts +0 -0
@@ -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 './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","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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"}
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,4 +1,4 @@
1
- import { AxisSettings, FrameType, Orientation } from '../../types';
1
+ import { AxisSettingsContinuous, AxisSettingsDiscrete, FrameType, Orientation } from '../../types';
2
2
  import { ScaleBand, ScaleLinear, ScaleLogarithmic } from 'd3-scale';
3
3
  interface GridProps {
4
4
  scaleY: ScaleLinear<number, number> | ScaleLogarithmic<number, number>;
@@ -6,8 +6,8 @@ interface GridProps {
6
6
  width: number;
7
7
  height: number;
8
8
  orientation: Orientation;
9
- axisX: AxisSettings;
10
- axisY: AxisSettings;
9
+ axisX: AxisSettingsDiscrete;
10
+ axisY: AxisSettingsContinuous;
11
11
  frameType: FrameType;
12
12
  }
13
13
  export declare function Grid({ scaleX, scaleY, orientation, width, height, axisX, axisY, frameType }: GridProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/discrete/components/Grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAMvE,UAAU,SAAS;IACf,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,wBAAgB,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE,SAAS,2CA0DpG"}
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/discrete/components/Grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,sBAAsB,EAAE,oBAAoB,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAMvE,UAAU,SAAS;IACf,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;CACxB;AAED,wBAAgB,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE,SAAS,2CA0DpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.js","sources":["../../../src/discrete/components/Grid.tsx"],"sourcesContent":["import {BLACK, GRID_GRAY} from '../../constants';\nimport {MIN_TICK_STEP} from '../constants';\nimport type {AxisSettings, FrameType} from '../../types';\nimport type {Orientation} from '../../types';\nimport type {ScaleBand, ScaleLinear, ScaleLogarithmic} from 'd3-scale';\nimport React from 'react';\nimport {useEffect, useState} from 'react';\n\nconst GRID_FRAME_WIDTH = 1;\n\ninterface GridProps {\n scaleY: ScaleLinear<number, number> | ScaleLogarithmic<number, number>;\n scaleX: ScaleBand<string>;\n width: number;\n height: number;\n orientation: Orientation;\n axisX: AxisSettings;\n axisY: AxisSettings;\n frameType: FrameType;\n}\n\nexport function Grid({scaleX, scaleY, orientation, width, height, axisX, axisY, frameType}: GridProps) {\n const [ticksX, setTicksX] = useState<string[] | number[]>(scaleX.domain());\n\n // set ticks count depending on chart size\n const range = Math.abs(scaleY.range()[0] - scaleY.range()[1]);\n const ticksCount = Math.min(Math.floor(range / MIN_TICK_STEP), 10);\n const [ticksY, setTicksY] = useState<string[] | number[]>(scaleY.ticks(ticksCount));\n const halfXGroup = scaleX.bandwidth() / 2;\n const getXScaleShift = (d: string | number) => (scaleX(d as string) ?? 0) + halfXGroup;\n const getYScaleShift = (d: string | number) => scaleY(d as number);\n const isVertical = orientation === 'vertical';\n\n useEffect(() => {\n const ticksX = scaleX.domain();\n const ticksY = scaleY.ticks(ticksCount);\n\n setTicksX(ticksX);\n setTicksY(ticksY);\n }, [scaleX, scaleY]);\n\n return (\n <g stroke={GRID_GRAY}>\n {axisX.showGrid &&\n ticksX.map(tick => {\n const x = getXScaleShift(tick) + (axisX.linesBetweenCategories ? halfXGroup : 0);\n return (\n <line\n key={`x_${tick}`}\n x1={isVertical ? x : 0}\n x2={isVertical ? x : width}\n y1={isVertical ? 0 : x}\n y2={isVertical ? height : x}\n />\n );\n })}\n {axisY.showGrid &&\n ticksY.map(tick => {\n const y = getYScaleShift(tick);\n return (\n <line\n key={`y_${tick}`}\n x1={isVertical ? 0 : y}\n x2={isVertical ? width : y}\n y1={isVertical ? y : 0}\n y2={isVertical ? y : height}\n />\n );\n })}\n {frameType !== 'empty' && (\n <g strokeWidth={GRID_FRAME_WIDTH}>\n {(axisX.showGrid || frameType !== 'left') && <line stroke={frameType === 'left' ? GRID_GRAY : BLACK} x1=\"0\" x2={width} y1={height} y2={height} />}\n {(axisX.showGrid || frameType !== 'bottom') && <line stroke={frameType === 'bottom' ? GRID_GRAY : BLACK} x1=\"0\" x2=\"0\" y1=\"0\" y2={height} />}\n {(axisX.showGrid || frameType === 'full') && <line stroke={frameType === 'full' ? BLACK : GRID_GRAY} x1={width} x2={width} y1=\"0\" y2={height} />}\n {(axisY.showGrid || frameType === 'full') && <line stroke={frameType === 'full' ? BLACK : GRID_GRAY} x1=\"0\" x2={width} y1=\"0\" y2=\"0\" />}\n </g>\n )}\n </g>\n );\n}\n"],"names":["GRID_FRAME_WIDTH","Grid","scaleX","scaleY","orientation","width","height","axisX","axisY","frameType","ticksX","setTicksX","useState","range","ticksCount","MIN_TICK_STEP","ticksY","setTicksY","halfXGroup","getXScaleShift","d","getYScaleShift","isVertical","useEffect","jsxs","GRID_GRAY","tick","x","jsx","y","BLACK"],"mappings":";;;;AAQA,MAAMA,IAAmB;AAalB,SAASC,EAAK,EAAC,QAAAC,GAAQ,QAAAC,GAAQ,aAAAC,GAAa,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,GAAO,OAAAC,GAAO,WAAAC,KAAuB;AACnG,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAAA,SAA8BV,EAAO,QAAQ,GAGnEW,IAAQ,KAAK,IAAIV,EAAO,MAAA,EAAQ,CAAC,IAAIA,EAAO,MAAA,EAAQ,CAAC,CAAC,GACtDW,IAAa,KAAK,IAAI,KAAK,MAAMD,IAAQE,CAAa,GAAG,EAAE,GAC3D,CAACC,GAAQC,CAAS,IAAIL,EAAAA,SAA8BT,EAAO,MAAMW,CAAU,CAAC,GAC5EI,IAAahB,EAAO,UAAA,IAAc,GAClCiB,IAAiB,CAACC,OAAwBlB,EAAOkB,CAAW,KAAK,KAAKF,GACtEG,IAAiB,CAACD,MAAuBjB,EAAOiB,CAAW,GAC3DE,IAAalB,MAAgB;AAEnCmB,SAAAA,EAAAA,UAAU,MAAM;AACZ,UAAMb,IAASR,EAAO,OAAA,GAChBc,IAASb,EAAO,MAAMW,CAAU;AAEtC,IAAAH,EAAUD,CAAM,GAChBO,EAAUD,CAAM;AAAA,EACpB,GAAG,CAACd,GAAQC,CAAM,CAAC,GAGfqB,gBAAAA,EAAAA,KAAC,KAAA,EAAE,QAAQC,GACN,UAAA;AAAA,IAAAlB,EAAM,YACHG,EAAO,IAAI,CAAAgB,MAAQ;AACf,YAAMC,IAAIR,EAAeO,CAAI,KAAKnB,EAAM,yBAAyBW,IAAa;AAC9E,aACIU,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,IAAIN,IAAaK,IAAI;AAAA,UACrB,IAAIL,IAAaK,IAAItB;AAAA,UACrB,IAAIiB,IAAa,IAAIK;AAAA,UACrB,IAAIL,IAAahB,IAASqB;AAAA,QAAA;AAAA,QAJrB,KAAKD,CAAI;AAAA,MAAA;AAAA,IAO1B,CAAC;AAAA,IACJlB,EAAM,YACHQ,EAAO,IAAI,CAAAU,MAAQ;AACf,YAAMG,IAAIR,EAAeK,CAAI;AAC7B,aACIE,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,IAAIN,IAAa,IAAIO;AAAA,UACrB,IAAIP,IAAajB,IAAQwB;AAAA,UACzB,IAAIP,IAAaO,IAAI;AAAA,UACrB,IAAIP,IAAaO,IAAIvB;AAAA,QAAA;AAAA,QAJhB,KAAKoB,CAAI;AAAA,MAAA;AAAA,IAO1B,CAAC;AAAA,IACJjB,MAAc,WACXe,gBAAAA,OAAC,KAAA,EAAE,aAAaxB,GACV,UAAA;AAAA,OAAAO,EAAM,YAAYE,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASgB,IAAYK,GAAO,IAAG,KAAI,IAAIzB,GAAO,IAAIC,GAAQ,IAAIA,GAAQ;AAAA,OAC7IC,EAAM,YAAYE,MAAc,aAAamB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,WAAWgB,IAAYK,GAAO,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAIxB,GAAQ;AAAA,OACxIC,EAAM,YAAYE,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASqB,IAAQL,GAAW,IAAIpB,GAAO,IAAIA,GAAO,IAAG,KAAI,IAAIC,GAAQ;AAAA,OAC5IE,EAAM,YAAYC,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASqB,IAAQL,GAAW,IAAG,KAAI,IAAIpB,GAAO,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,IAAA,EAAA,CACzI;AAAA,EAAA,GAER;AAER;"}
1
+ {"version":3,"file":"Grid.js","sources":["../../../src/discrete/components/Grid.tsx"],"sourcesContent":["import {BLACK, GRID_GRAY} from '../../constants';\nimport {MIN_TICK_STEP} from '../constants';\nimport type {AxisSettingsContinuous, AxisSettingsDiscrete, FrameType} from '../../types';\nimport type {Orientation} from '../../types';\nimport type {ScaleBand, ScaleLinear, ScaleLogarithmic} from 'd3-scale';\nimport React from 'react';\nimport {useEffect, useState} from 'react';\n\nconst GRID_FRAME_WIDTH = 1;\n\ninterface GridProps {\n scaleY: ScaleLinear<number, number> | ScaleLogarithmic<number, number>;\n scaleX: ScaleBand<string>;\n width: number;\n height: number;\n orientation: Orientation;\n axisX: AxisSettingsDiscrete;\n axisY: AxisSettingsContinuous;\n frameType: FrameType;\n}\n\nexport function Grid({scaleX, scaleY, orientation, width, height, axisX, axisY, frameType}: GridProps) {\n const [ticksX, setTicksX] = useState<string[] | number[]>(scaleX.domain());\n\n // set ticks count depending on chart size\n const range = Math.abs(scaleY.range()[0] - scaleY.range()[1]);\n const ticksCount = Math.min(Math.floor(range / MIN_TICK_STEP), 10);\n const [ticksY, setTicksY] = useState<string[] | number[]>(scaleY.ticks(ticksCount));\n const halfXGroup = scaleX.bandwidth() / 2;\n const getXScaleShift = (d: string | number) => (scaleX(d as string) ?? 0) + halfXGroup;\n const getYScaleShift = (d: string | number) => scaleY(d as number);\n const isVertical = orientation === 'vertical';\n\n useEffect(() => {\n const ticksX = scaleX.domain();\n const ticksY = scaleY.ticks(ticksCount);\n\n setTicksX(ticksX);\n setTicksY(ticksY);\n }, [scaleX, scaleY]);\n\n return (\n <g stroke={GRID_GRAY}>\n {axisX.showGrid &&\n ticksX.map(tick => {\n const x = getXScaleShift(tick) + (axisX.linesBetweenCategories ? halfXGroup : 0);\n return (\n <line\n key={`x_${tick}`}\n x1={isVertical ? x : 0}\n x2={isVertical ? x : width}\n y1={isVertical ? 0 : x}\n y2={isVertical ? height : x}\n />\n );\n })}\n {axisY.showGrid &&\n ticksY.map(tick => {\n const y = getYScaleShift(tick);\n return (\n <line\n key={`y_${tick}`}\n x1={isVertical ? 0 : y}\n x2={isVertical ? width : y}\n y1={isVertical ? y : 0}\n y2={isVertical ? y : height}\n />\n );\n })}\n {frameType !== 'empty' && (\n <g strokeWidth={GRID_FRAME_WIDTH}>\n {(axisX.showGrid || frameType !== 'left') && <line stroke={frameType === 'left' ? GRID_GRAY : BLACK} x1=\"0\" x2={width} y1={height} y2={height} />}\n {(axisX.showGrid || frameType !== 'bottom') && <line stroke={frameType === 'bottom' ? GRID_GRAY : BLACK} x1=\"0\" x2=\"0\" y1=\"0\" y2={height} />}\n {(axisX.showGrid || frameType === 'full') && <line stroke={frameType === 'full' ? BLACK : GRID_GRAY} x1={width} x2={width} y1=\"0\" y2={height} />}\n {(axisY.showGrid || frameType === 'full') && <line stroke={frameType === 'full' ? BLACK : GRID_GRAY} x1=\"0\" x2={width} y1=\"0\" y2=\"0\" />}\n </g>\n )}\n </g>\n );\n}\n"],"names":["GRID_FRAME_WIDTH","Grid","scaleX","scaleY","orientation","width","height","axisX","axisY","frameType","ticksX","setTicksX","useState","range","ticksCount","MIN_TICK_STEP","ticksY","setTicksY","halfXGroup","getXScaleShift","d","getYScaleShift","isVertical","useEffect","jsxs","GRID_GRAY","tick","x","jsx","y","BLACK"],"mappings":";;;;AAQA,MAAMA,IAAmB;AAalB,SAASC,EAAK,EAAC,QAAAC,GAAQ,QAAAC,GAAQ,aAAAC,GAAa,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,GAAO,OAAAC,GAAO,WAAAC,KAAuB;AACnG,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAAA,SAA8BV,EAAO,QAAQ,GAGnEW,IAAQ,KAAK,IAAIV,EAAO,MAAA,EAAQ,CAAC,IAAIA,EAAO,MAAA,EAAQ,CAAC,CAAC,GACtDW,IAAa,KAAK,IAAI,KAAK,MAAMD,IAAQE,CAAa,GAAG,EAAE,GAC3D,CAACC,GAAQC,CAAS,IAAIL,EAAAA,SAA8BT,EAAO,MAAMW,CAAU,CAAC,GAC5EI,IAAahB,EAAO,UAAA,IAAc,GAClCiB,IAAiB,CAACC,OAAwBlB,EAAOkB,CAAW,KAAK,KAAKF,GACtEG,IAAiB,CAACD,MAAuBjB,EAAOiB,CAAW,GAC3DE,IAAalB,MAAgB;AAEnCmB,SAAAA,EAAAA,UAAU,MAAM;AACZ,UAAMb,IAASR,EAAO,OAAA,GAChBc,IAASb,EAAO,MAAMW,CAAU;AAEtC,IAAAH,EAAUD,CAAM,GAChBO,EAAUD,CAAM;AAAA,EACpB,GAAG,CAACd,GAAQC,CAAM,CAAC,GAGfqB,gBAAAA,EAAAA,KAAC,KAAA,EAAE,QAAQC,GACN,UAAA;AAAA,IAAAlB,EAAM,YACHG,EAAO,IAAI,CAAAgB,MAAQ;AACf,YAAMC,IAAIR,EAAeO,CAAI,KAAKnB,EAAM,yBAAyBW,IAAa;AAC9E,aACIU,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,IAAIN,IAAaK,IAAI;AAAA,UACrB,IAAIL,IAAaK,IAAItB;AAAA,UACrB,IAAIiB,IAAa,IAAIK;AAAA,UACrB,IAAIL,IAAahB,IAASqB;AAAA,QAAA;AAAA,QAJrB,KAAKD,CAAI;AAAA,MAAA;AAAA,IAO1B,CAAC;AAAA,IACJlB,EAAM,YACHQ,EAAO,IAAI,CAAAU,MAAQ;AACf,YAAMG,IAAIR,EAAeK,CAAI;AAC7B,aACIE,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,IAAIN,IAAa,IAAIO;AAAA,UACrB,IAAIP,IAAajB,IAAQwB;AAAA,UACzB,IAAIP,IAAaO,IAAI;AAAA,UACrB,IAAIP,IAAaO,IAAIvB;AAAA,QAAA;AAAA,QAJhB,KAAKoB,CAAI;AAAA,MAAA;AAAA,IAO1B,CAAC;AAAA,IACJjB,MAAc,WACXe,gBAAAA,OAAC,KAAA,EAAE,aAAaxB,GACV,UAAA;AAAA,OAAAO,EAAM,YAAYE,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASgB,IAAYK,GAAO,IAAG,KAAI,IAAIzB,GAAO,IAAIC,GAAQ,IAAIA,GAAQ;AAAA,OAC7IC,EAAM,YAAYE,MAAc,aAAamB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,WAAWgB,IAAYK,GAAO,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAIxB,GAAQ;AAAA,OACxIC,EAAM,YAAYE,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASqB,IAAQL,GAAW,IAAIpB,GAAO,IAAIA,GAAO,IAAG,KAAI,IAAIC,GAAQ;AAAA,OAC5IE,EAAM,YAAYC,MAAc,WAAWmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQnB,MAAc,SAASqB,IAAQL,GAAW,IAAG,KAAI,IAAIpB,GAAO,IAAG,KAAI,IAAG,IAAA,CAAI;AAAA,IAAA,EAAA,CACzI;AAAA,EAAA,GAER;AAER;"}
@@ -0,0 +1,24 @@
1
+ import { TooltipsData } from '../../../common/Tooltip';
2
+ import { GroupingData, Orientation } from '../../../types';
3
+ import { StackedAreaData } from '../../layers/types';
4
+ import { ChartScales } from '../types';
5
+ interface StackedAreaProps {
6
+ facetKey: string;
7
+ scales: ChartScales;
8
+ layerData: StackedAreaData;
9
+ orientation: Orientation;
10
+ sideDistances: {
11
+ left: number;
12
+ right: number;
13
+ top: number;
14
+ bottom: number;
15
+ };
16
+ showTooltips: boolean;
17
+ secondaryGrouping: GroupingData;
18
+ tooltipsData: TooltipsData<unknown>;
19
+ activeElementContainer?: Element;
20
+ tooltipsContainer?: Element;
21
+ }
22
+ export declare function StackedAreaElement({ facetKey, scales, orientation, layerData, sideDistances, showTooltips, secondaryGrouping, activeElementContainer, tooltipsContainer, tooltipsData, }: StackedAreaProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=StackedAreaElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedAreaElement.d.ts","sourceRoot":"","sources":["../../../../src/discrete/components/layers/StackedAreaElement.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAU,YAAY,EAAsB,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3F,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAG1C,UAAU,gBAAgB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,YAAY,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAqFD,wBAAgB,kBAAkB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,GACf,EAAE,gBAAgB,2CA6DlB"}
@@ -0,0 +1,105 @@
1
+ import { j as g } from "../../../node_modules/react/jsx-runtime.js";
2
+ import { r as E } from "../../../_virtual/index.js";
3
+ import { StackedBarElement as B } from "./StackedBarElement.js";
4
+ import S from "../../../node_modules/d3-shape/src/area.js";
5
+ import { bumpX as C, bumpY as G } from "../../../node_modules/d3-shape/src/curve/bump.js";
6
+ function M(t) {
7
+ return t && typeof t == "object" && "type" in t && t.type === "secondaryGrouping";
8
+ }
9
+ function P(t, n, e, r, f) {
10
+ if (e && typeof e == "object" && "type" in e) {
11
+ if (e.type === "primaryGrouping")
12
+ return t.xPrimaryAes(r)[n];
13
+ if (e.type === "secondaryGrouping")
14
+ return t.xSecondaryAes(f)[n];
15
+ }
16
+ return e;
17
+ }
18
+ function W(t, n, e, r, f, d, j) {
19
+ const y = (e - n) / 2, l = j.map((m) => {
20
+ const s = {};
21
+ let p = 0;
22
+ return f.forEach((o) => {
23
+ var u;
24
+ const c = ((u = m.valuesMap[o]) == null ? void 0 : u.height) ?? 0;
25
+ s[o] = {
26
+ y1: p,
27
+ y2: p + c
28
+ }, p += c;
29
+ }), s;
30
+ });
31
+ return f.map((m) => {
32
+ const s = l.flatMap((o, c) => {
33
+ const u = r[c], h = t.xPrimary(u) ?? 0, a = t.y(o[m].y1), x = t.y(o[m].y2), A = [h + y, a, x], i = [h + e - y, a, x];
34
+ return d ? [A, i] : [i, A];
35
+ }), p = (d ? S().curve(C).x((o) => o[0]).y0((o) => o[1]).y1((o) => o[2])(s) : S().curve(G).y((o) => o[0]).x0((o) => o[1]).x1((o) => o[2])(s)) ?? "";
36
+ return { secondaryKey: m, pathD: p };
37
+ });
38
+ }
39
+ function k(t, n) {
40
+ return t.meta.showBars ? t.aes.barWidth === "auto" ? n * 0.2 : Math.min(n, t.aes.barWidth) : 0;
41
+ }
42
+ function X({
43
+ facetKey: t,
44
+ scales: n,
45
+ orientation: e,
46
+ layerData: r,
47
+ sideDistances: f,
48
+ showTooltips: d,
49
+ secondaryGrouping: j,
50
+ activeElementContainer: y,
51
+ tooltipsContainer: l,
52
+ tooltipsData: m
53
+ }) {
54
+ const [s, p] = E.useState(null), o = e === "vertical", c = n.xPrimary.bandwidth(), u = k(r, c), h = n.xPrimary.domain(), a = n.xSecondary.domain().reverse(), x = M(r.aes.fillColor) || typeof r.aes.fillColor == "string", A = x ? W(
55
+ n,
56
+ u,
57
+ c,
58
+ h,
59
+ a,
60
+ o,
61
+ r.geoms[t]
62
+ ) : [];
63
+ return /* @__PURE__ */ g.jsxs("g", { children: [
64
+ /* @__PURE__ */ g.jsx("g", { children: x && A.map(({ secondaryKey: i, pathD: b }) => /* @__PURE__ */ g.jsx(
65
+ "path",
66
+ {
67
+ d: b,
68
+ fill: P(n, "fillColor", r.aes.fillColor, h[0], i),
69
+ opacity: r.aes.areaOpacity * (s !== null && i !== s ? 0.5 : 1),
70
+ onMouseEnter: () => p(i),
71
+ onMouseLeave: () => p(null)
72
+ },
73
+ i
74
+ )) }),
75
+ /* @__PURE__ */ g.jsx("g", { children: r.meta.showBars && r.geoms[t].map((i) => /* @__PURE__ */ g.jsx(
76
+ B,
77
+ {
78
+ facetKey: t,
79
+ geom: i,
80
+ elementsAmount: r.geoms[t].length,
81
+ scales: n,
82
+ orientation: e,
83
+ aes: {
84
+ ...r.aes,
85
+ width: u,
86
+ opacity: r.aes.barsOpacity
87
+ },
88
+ normalize: r.meta.normalize,
89
+ sideDistances: f,
90
+ showTooltips: d,
91
+ secondaryGrouping: j,
92
+ tooltipsData: m,
93
+ activeElementContainer: y,
94
+ tooltipsContainer: l,
95
+ activeKey: s,
96
+ onSectionHover: p
97
+ },
98
+ i.key
99
+ )) })
100
+ ] });
101
+ }
102
+ export {
103
+ X as StackedAreaElement
104
+ };
105
+ //# sourceMappingURL=StackedAreaElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedAreaElement.js","sources":["../../../../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","calculateBarWidth","layerData","bandwidth","StackedAreaElement","facetKey","orientation","sideDistances","showTooltips","activeElementContainer","tooltipsContainer","tooltipsData","selectedAreaKey","setSelectedAreaKey","useState","boxOuterWidth","boxWidth","needsAreas","areas","jsx","geom","StackedBarElement"],"mappings":";;;;;AA2BA,SAASA,EAAuBC,GAAoC;AAChE,SAAOA,KAAS,OAAOA,KAAU,YAAY,UAAUA,KAASA,EAAM,SAAS;AACnF;AAEA,SAASC,EACLC,GACAC,GACAH,GACAI,GACAC,GACS;AACT,MAAIL,KAAS,OAAOA,KAAU,YAAY,UAAUA,GAAO;AACvD,QAAIA,EAAM,SAAS;AACf,aAAOE,EAAO,YAAYE,CAAe,EAAED,CAAK;AAEpD,QAAIH,EAAM,SAAS;AACf,aAAOE,EAAO,cAAcG,CAAiB,EAAEF,CAAK;AAAA,EAE5D;AACA,SAAOH;AACX;AAEA,SAASM,EACLJ,GACAK,GACAC,GACAC,GACAC,GACAC,GACAC,GACF;AACE,QAAMC,KAAWL,IAAYD,KAAY,GACnCO,IAAKF,EAAK,IAAI,CAACG,MAAQ;AACzB,UAAMC,IAAmD,CAAA;AACzD,QAAIC,IAAgB;AACpB,WAAAP,EAAc,QAAQ,CAAAQ,MAAgB;;AAClC,YAAMC,MAASC,IAAAL,EAAI,UAAUG,CAAY,MAA1B,gBAAAE,EAA6B,WAAU;AACtD,MAAAJ,EAAQE,CAAY,IAAI;AAAA,QACpB,IAAID;AAAA,QACJ,IAAIA,IAAgBE;AAAA,MAAA,GAExBF,KAAiBE;AAAA,IACrB,CAAC,GACMH;AAAA,EACX,CAAC;AAED,SAAON,EAAc,IAAI,CAACQ,MAAiB;AACvC,UAAMG,IAAoCP,EAAG,QAAQ,CAACQ,GAAMC,MAAQ;AAChE,YAAMC,IAAaf,EAAYc,CAAG,GAC5BE,IAAIvB,EAAO,SAASsB,CAAU,KAAK,GACnCE,IAAKxB,EAAO,EAAEoB,EAAKJ,CAAY,EAAE,EAAE,GACnCS,IAAKzB,EAAO,EAAEoB,EAAKJ,CAAY,EAAE,EAAE,GACnCU,IAA8B,CAACH,IAAIZ,GAASa,GAAIC,CAAE,GAClDE,IAA8B,CAACJ,IAAIjB,IAAYK,GAASa,GAAIC,CAAE;AACpE,aAAOhB,IAAa,CAACiB,GAAIC,CAAE,IAAI,CAACA,GAAID,CAAE;AAAA,IAC1C,CAAC,GAEKE,KAASnB,IACXoB,IACK,MAAMC,CAAU,EAChB,EAAE,CAAAC,MAAKA,EAAE,CAAC,CAAC,EACX,GAAG,CAAAA,MAAKA,EAAE,CAAC,CAAC,EACZ,GAAG,CAAAA,MAAKA,EAAE,CAAC,CAAC,EAAEZ,CAAM,IAEzBU,EAAA,EACK,MAAMG,CAAU,EAChB,EAAE,CAAAD,MAAKA,EAAE,CAAC,CAAC,EACX,GAAG,OAAKA,EAAE,CAAC,CAAC,EACZ,GAAG,CAAAA,MAAKA,EAAE,CAAC,CAAC,EAAEZ,CAAM,MAAM;AACnC,WAAO,EAAC,cAAAH,GAAc,OAAAY,EAAA;AAAA,EAC1B,CAAC;AACL;AAEA,SAASK,EACLC,GACAC,GACF;AACE,SAAKD,EAAU,KAAK,WAGbA,EAAU,IAAI,aAAa,SAASC,IAAY,MAAM,KAAK,IAAIA,GAAWD,EAAU,IAAI,QAAQ,IAF5F;AAGf;AAEO,SAASE,EAAmB;AAAA,EAC/B,UAAAC;AAAA,EACA,QAAArC;AAAA,EACA,aAAAsC;AAAA,EACA,WAAAJ;AAAA,EACA,eAAAK;AAAA,EACA,cAAAC;AAAA,EACA,mBAAArC;AAAA,EACA,wBAAAsC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AACJ,GAAqB;AACjB,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAAAA,SAAwB,IAAI,GACpErC,IAAa6B,MAAgB,YAC7BS,IAAgB/C,EAAO,SAAS,UAAA,GAChCgD,IAAWf,EAAkBC,GAAWa,CAAa,GACrDxC,IAAcP,EAAO,SAAS,OAAA,GAC9BQ,IAAgBR,EAAO,WAAW,OAAA,EAAS,QAAA,GAE3CiD,IAAapD,EAAsBqC,EAAU,IAAI,SAAS,KAAK,OAAOA,EAAU,IAAI,aAAc,UAClGgB,IAAQD,IAAa7C;AAAA,IACvBJ;AAAA,IACAgD;AAAA,IACAD;AAAA,IACAxC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAyB,EAAU,MAAMG,CAAQ;AAAA,EAAA,IACxB,CAAA;AAEJ,gCACK,KAAA,EACG,UAAA;AAAA,IAAAc,gBAAAA,EAAAA,IAAC,KAAA,EACI,eAAcD,EAAM,IAAI,CAAC,EAAC,cAAAlC,GAAc,OAAAY,QACrCuB,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEG,GAAGvB;AAAA,QACH,MAAM7B,EAAYC,GAAQ,aAAakC,EAAU,IAAI,WAAW3B,EAAY,CAAC,GAAGS,CAAY;AAAA,QAC5F,SAASkB,EAAU,IAAI,eAAeU,MAAoB,QAAQ5B,MAAiB4B,IAAkB,MAAM;AAAA,QAC3G,cAAc,MAAMC,EAAmB7B,CAAY;AAAA,QACnD,cAAc,MAAM6B,EAAmB,IAAI;AAAA,MAAA;AAAA,MALtC7B;AAAA,IAAA,CAOZ,GACL;AAAA,IACAmC,gBAAAA,EAAAA,IAAC,KAAA,EACA,UAAAjB,EAAU,KAAK,YAAaA,EAA8B,MAAMG,CAAQ,EAAE,IAAI,CAAAe,MAC3ED,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QAEG,UAAAhB;AAAA,QACA,MAAAe;AAAA,QACA,gBAAgBlB,EAAU,MAAMG,CAAQ,EAAE;AAAA,QAC1C,QAAArC;AAAA,QACA,aAAAsC;AAAA,QACA,KAAK;AAAA,UACD,GAAGJ,EAAU;AAAA,UACb,OAAOc;AAAA,UACP,SAASd,EAAU,IAAI;AAAA,QAAA;AAAA,QAE3B,WAAWA,EAAU,KAAK;AAAA,QAC1B,eAAAK;AAAA,QACA,cAAAC;AAAA,QACA,mBAAArC;AAAA,QACA,cAAAwC;AAAA,QACA,wBAAAF;AAAA,QACA,mBAAAC;AAAA,QACA,WAAWE;AAAA,QACX,gBAAgBC;AAAA,MAAA;AAAA,MAnBXO,EAAK;AAAA,IAAA,CAqBjB,EAAA,CACD;AAAA,EAAA,GACJ;AAER;"}
@@ -22,7 +22,9 @@ interface StackedBarProps {
22
22
  tooltipsData: TooltipsData<unknown>;
23
23
  activeElementContainer?: Element;
24
24
  tooltipsContainer?: Element;
25
+ activeKey?: string | null;
26
+ onSectionHover?: (key: string | null) => void;
25
27
  }
26
- export declare function StackedBarElement({ facetKey, scales, orientation, geom, aes, sideDistances, showTooltips, elementsAmount, normalize, secondaryGrouping, activeElementContainer, tooltipsContainer, tooltipsData, }: StackedBarProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function StackedBarElement({ facetKey, scales, orientation, geom, aes, sideDistances, showTooltips, elementsAmount, normalize, secondaryGrouping, activeElementContainer, tooltipsContainer, tooltipsData, activeKey, onSectionHover }: StackedBarProps): import("react/jsx-runtime").JSX.Element;
27
29
  export {};
28
30
  //# sourceMappingURL=StackedBarElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarElement.d.ts","sourceRoot":"","sources":["../../../../src/discrete/components/layers/StackedBarElement.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAW,YAAY,EAAsB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,eAAe;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,YAAY,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA0BD,wBAAgB,iBAAiB,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,GACf,EAAE,eAAe,2CAuEjB"}
1
+ {"version":3,"file":"StackedBarElement.d.ts","sourceRoot":"","sources":["../../../../src/discrete/components/layers/StackedBarElement.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAW,YAAY,EAAsB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,eAAe;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,YAAY,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AA0BD,wBAAgB,iBAAiB,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACjB,EAAE,eAAe,2CAmFjB"}
@@ -1,84 +1,91 @@
1
- import { j as f } from "../../../node_modules/react/jsx-runtime.js";
2
- import { r as F } from "../../../node_modules/react-dom/index.js";
3
- import { Tooltip as H } from "../../../common/Tooltip.js";
4
- import { numberFormat as O } from "../../../utils/numberFormat.js";
5
- function P(c, r, n, t, o) {
6
- if (n && typeof n == "object" && "type" in n) {
7
- if (n.type === "primaryGrouping")
8
- return c.xPrimaryAes(t)[r];
9
- if (n.type === "secondaryGrouping")
10
- return c.xSecondaryAes(o)[r];
1
+ import { j as m } from "../../../node_modules/react/jsx-runtime.js";
2
+ import { r as $ } from "../../../node_modules/react-dom/index.js";
3
+ import { Tooltip as z } from "../../../common/Tooltip.js";
4
+ import { numberFormat as R } from "../../../utils/numberFormat.js";
5
+ function w(c, t, i, n, o) {
6
+ if (i && typeof i == "object" && "type" in i) {
7
+ if (i.type === "primaryGrouping")
8
+ return c.xPrimaryAes(n)[t];
9
+ if (i.type === "secondaryGrouping")
10
+ return c.xSecondaryAes(o)[t];
11
11
  }
12
- return n;
12
+ return i;
13
13
  }
14
- function T(c, r, n, t) {
15
- const o = c.valueLabels[n], x = O(r.valuesMap[n].height) + (t ? "%" : "");
16
- return o ? [o, x] : [x];
14
+ function X(c, t, i, n) {
15
+ const o = c.valueLabels[i], f = R(t.valuesMap[i].height) + (n ? "%" : "");
16
+ return o ? [o, f] : [f];
17
17
  }
18
- function X({
18
+ function N({
19
19
  facetKey: c,
20
- scales: r,
21
- orientation: n,
22
- geom: t,
20
+ scales: t,
21
+ orientation: i,
22
+ geom: n,
23
23
  aes: o,
24
- sideDistances: x,
25
- showTooltips: G,
26
- elementsAmount: S,
27
- normalize: v,
28
- secondaryGrouping: w,
29
- activeElementContainer: g,
30
- tooltipsContainer: E,
31
- tooltipsData: e
24
+ sideDistances: f,
25
+ showTooltips: L,
26
+ elementsAmount: V,
27
+ normalize: W,
28
+ secondaryGrouping: A,
29
+ activeElementContainer: b,
30
+ tooltipsContainer: B,
31
+ tooltipsData: e,
32
+ activeKey: M,
33
+ onSectionHover: p
32
34
  }) {
33
- const u = n === "vertical", h = r.xPrimary.bandwidth(), a = (r.xPrimary(t.primaryGrouping) ?? 0) + h / 2, d = o.width === "auto" ? h * 0.8 : Math.min(h, o.width), M = r.xSecondary.domain().reverse(), b = {};
34
- let m = 0;
35
- M.forEach((i) => {
36
- if (!t.valuesMap[i])
35
+ const u = i === "vertical", h = t.xPrimary.bandwidth(), a = (t.xPrimary(n.primaryGrouping) ?? 0) + h / 2, s = o.width === "auto" ? h * 0.8 : Math.min(h, o.width), C = (h - s) / 2, j = t.xSecondary.domain().reverse(), P = {};
36
+ let g = 0;
37
+ j.forEach((r) => {
38
+ if (!n.valuesMap[r])
37
39
  return;
38
- const p = t.valuesMap[i].height;
39
- b[i] = {
40
- y1: m,
41
- y2: m + p
42
- }, m += p;
40
+ const d = n.valuesMap[r].height;
41
+ P[r] = {
42
+ y1: g,
43
+ y2: g + d
44
+ }, g += d;
43
45
  });
44
- const L = g && e.fixed;
45
- return /* @__PURE__ */ f.jsx("g", { opacity: o.opacity, strokeWidth: o.lineWidth, children: M.map((i) => {
46
- if (!t.valuesMap[i])
46
+ const F = b && e.fixed;
47
+ return /* @__PURE__ */ m.jsx("g", { opacity: o.opacity, strokeWidth: o.lineWidth, children: j.map((r) => {
48
+ if (!n.valuesMap[r])
47
49
  return null;
48
- const { y1: p, y2: V } = b[i], s = r.y(p), l = r.y(V), C = Math.abs(s - l), W = P(r, "lineColor", o.lineColor, t.primaryGrouping, i), A = P(r, "fillColor", o.fillColor, t.primaryGrouping, i), y = `stackedBar_${String(t.primaryGrouping)}_${String(i)}`, j = /* @__PURE__ */ f.jsx(
50
+ const { y1: d, y2: S } = P[r], l = t.y(d), x = t.y(S), G = Math.abs(l - x), O = w(t, "lineColor", o.lineColor, n.primaryGrouping, r), T = w(t, "fillColor", o.fillColor, n.primaryGrouping, r), y = `stackedBar_${String(n.primaryGrouping)}_${String(r)}`, E = /* @__PURE__ */ m.jsx(
49
51
  "rect",
50
52
  {
51
- width: u ? d : C,
52
- height: u ? C : d,
53
- x: u ? a - d / 2 : Math.min(s, l),
54
- y: u ? Math.min(s, l) : a - d / 2,
55
- fill: A,
56
- stroke: W,
57
- onMouseOver: () => e.onMouseEnter(y, c),
58
- onMouseLeave: () => e.onMouseLeave()
53
+ width: u ? s : G,
54
+ height: u ? G : s,
55
+ x: u ? a - s / 2 : Math.min(l, x),
56
+ y: u ? Math.min(l, x) : a - s / 2,
57
+ fill: T,
58
+ stroke: O,
59
+ onMouseEnter: () => {
60
+ e.onMouseEnter(y, c), p && p(r);
61
+ },
62
+ onMouseLeave: () => {
63
+ e.onMouseLeave(), p && p(null);
64
+ },
65
+ opacity: M && r !== M ? 0.5 : 1
59
66
  }
60
- ), B = e.selectedData === y && c === e.currentFacet && L;
61
- return /* @__PURE__ */ f.jsxs("g", { children: [
62
- B ? F.createPortal(j, g) : j,
63
- G && /* @__PURE__ */ f.jsx(
64
- H,
67
+ ), _ = e.selectedData === y && c === e.currentFacet && F;
68
+ return /* @__PURE__ */ m.jsxs("g", { children: [
69
+ _ ? $.createPortal(E, b) : E,
70
+ L && /* @__PURE__ */ m.jsx(
71
+ z,
65
72
  {
66
- content: T(w, t, i, v),
67
- x: u ? a : (s + l) / 2,
68
- y: u ? (s + l) / 2 : a,
69
- sideDistances: x,
73
+ content: X(A, n, r, W),
74
+ x: u ? a - C + 4 : (l + x) / 2,
75
+ y: u ? (l + x) / 2 : a + C - 4,
76
+ sideDistances: f,
70
77
  horizontal: u,
71
- offset: S > 1 ? h / 2 : h / 4,
78
+ offset: V > 1 ? h / 2 : h / 4,
72
79
  active: y === e.selectedData && c === e.currentFacet,
73
80
  fixed: e.fixed,
74
81
  onClose: e.onClose,
75
- container: E
82
+ container: B
76
83
  }
77
84
  )
78
- ] }, i);
85
+ ] }, r);
79
86
  }) });
80
87
  }
81
88
  export {
82
- X as StackedBarElement
89
+ N as StackedBarElement
83
90
  };
84
91
  //# sourceMappingURL=StackedBarElement.js.map