@semcore/d3-chart 17.2.0-prerelease.7 → 17.3.0-prerelease.0
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/CHANGELOG.md +12 -0
- package/lib/cjs/Area.js +11 -11
- package/lib/cjs/Axis.js +16 -16
- package/lib/cjs/Bar.js +16 -16
- package/lib/cjs/Bubble.js +14 -14
- package/lib/cjs/CompactHorizontalBar.js +16 -16
- package/lib/cjs/Donut.js +9 -9
- package/lib/cjs/Dots.js +8 -8
- package/lib/cjs/HorizontalBar.js +16 -16
- package/lib/cjs/Hover.js +3 -3
- package/lib/cjs/Line.js +9 -9
- package/lib/cjs/Plot.js +2 -2
- package/lib/cjs/Radar.js +20 -20
- package/lib/cjs/Radar.js.map +1 -1
- package/lib/cjs/RadialTree.js +12 -12
- package/lib/cjs/Reference.js +12 -12
- package/lib/cjs/ScatterPlot.js +9 -9
- package/lib/cjs/Tooltip.js +9 -9
- package/lib/cjs/Venn.js +9 -9
- package/lib/cjs/a11y/PlotA11yModule.js +2 -2
- package/lib/cjs/a11y/PlotA11yView.js +2 -2
- package/lib/cjs/a11y/serialize.js +6 -1
- package/lib/cjs/a11y/serialize.js.map +1 -1
- package/lib/cjs/component/Chart/AbstractChart.js +85 -11
- package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
- package/lib/cjs/component/Chart/AbstractChart.type.js.map +1 -1
- package/lib/cjs/component/Chart/AreaChart.js +6 -2
- package/lib/cjs/component/Chart/AreaChart.js.map +1 -1
- package/lib/cjs/component/Chart/BarChart.js +8 -4
- package/lib/cjs/component/Chart/BarChart.js.map +1 -1
- package/lib/cjs/component/Chart/BubbleChart.js +6 -2
- package/lib/cjs/component/Chart/BubbleChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.js +22 -12
- package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/cjs/component/Chart/CompactHorizontalBarChart.js +7 -3
- package/lib/cjs/component/Chart/CompactHorizontalBarChart.js.map +1 -1
- package/lib/cjs/component/Chart/HistogramChart.js +8 -4
- package/lib/cjs/component/Chart/HistogramChart.js.map +1 -1
- package/lib/cjs/component/Chart/LineChart.js +7 -3
- package/lib/cjs/component/Chart/LineChart.js.map +1 -1
- package/lib/cjs/component/Chart/ScatterPlotChart.js +6 -2
- package/lib/cjs/component/Chart/ScatterPlotChart.js.map +1 -1
- package/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/lib/cjs/style/abstract-chart.shadow.css +7 -0
- package/lib/es6/Area.js +11 -11
- package/lib/es6/Axis.js +16 -16
- package/lib/es6/Bar.js +16 -16
- package/lib/es6/Bubble.js +14 -14
- package/lib/es6/CompactHorizontalBar.js +16 -16
- package/lib/es6/Donut.js +9 -9
- package/lib/es6/Dots.js +8 -8
- package/lib/es6/HorizontalBar.js +16 -16
- package/lib/es6/Hover.js +3 -3
- package/lib/es6/Line.js +9 -9
- package/lib/es6/Plot.js +2 -2
- package/lib/es6/Radar.js +20 -20
- package/lib/es6/Radar.js.map +1 -1
- package/lib/es6/RadialTree.js +12 -12
- package/lib/es6/Reference.js +12 -12
- package/lib/es6/ScatterPlot.js +9 -9
- package/lib/es6/Tooltip.js +9 -9
- package/lib/es6/Venn.js +9 -9
- package/lib/es6/a11y/PlotA11yModule.js +2 -2
- package/lib/es6/a11y/PlotA11yView.js +2 -2
- package/lib/es6/a11y/serialize.js +6 -1
- package/lib/es6/a11y/serialize.js.map +1 -1
- package/lib/es6/component/Chart/AbstractChart.js +85 -11
- package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
- package/lib/es6/component/Chart/AbstractChart.type.js.map +1 -1
- package/lib/es6/component/Chart/AreaChart.js +6 -2
- package/lib/es6/component/Chart/AreaChart.js.map +1 -1
- package/lib/es6/component/Chart/BarChart.js +8 -4
- package/lib/es6/component/Chart/BarChart.js.map +1 -1
- package/lib/es6/component/Chart/BubbleChart.js +6 -2
- package/lib/es6/component/Chart/BubbleChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.js +22 -12
- package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/es6/component/Chart/CompactHorizontalBarChart.js +7 -3
- package/lib/es6/component/Chart/CompactHorizontalBarChart.js.map +1 -1
- package/lib/es6/component/Chart/HistogramChart.js +8 -4
- package/lib/es6/component/Chart/HistogramChart.js.map +1 -1
- package/lib/es6/component/Chart/LineChart.js +7 -3
- package/lib/es6/component/Chart/LineChart.js.map +1 -1
- package/lib/es6/component/Chart/ScatterPlotChart.js +6 -2
- package/lib/es6/component/Chart/ScatterPlotChart.js.map +1 -1
- package/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
- package/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
- package/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
- package/lib/es6/style/abstract-chart.shadow.css +7 -0
- package/lib/esm/Area.mjs +12 -12
- package/lib/esm/Axis.mjs +17 -17
- package/lib/esm/Bar.mjs +17 -17
- package/lib/esm/Bubble.mjs +15 -15
- package/lib/esm/CompactHorizontalBar.mjs +17 -17
- package/lib/esm/Donut.mjs +10 -10
- package/lib/esm/Dots.mjs +9 -9
- package/lib/esm/HorizontalBar.mjs +17 -17
- package/lib/esm/Hover.mjs +4 -4
- package/lib/esm/Line.mjs +10 -10
- package/lib/esm/Plot.mjs +3 -3
- package/lib/esm/Radar.mjs +21 -21
- package/lib/esm/RadialTree.mjs +13 -13
- package/lib/esm/Reference.mjs +13 -13
- package/lib/esm/ScatterPlot.mjs +10 -10
- package/lib/esm/Tooltip.mjs +10 -10
- package/lib/esm/Venn.mjs +10 -10
- package/lib/esm/a11y/PlotA11yModule.mjs +3 -3
- package/lib/esm/a11y/PlotA11yView.mjs +3 -3
- package/lib/esm/a11y/serialize.mjs +6 -1
- package/lib/esm/component/Chart/AbstractChart.mjs +86 -12
- package/lib/esm/component/Chart/AreaChart.mjs +6 -2
- package/lib/esm/component/Chart/BarChart.mjs +8 -4
- package/lib/esm/component/Chart/BubbleChart.mjs +6 -2
- package/lib/esm/component/Chart/CigaretteChart.mjs +22 -12
- package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +7 -3
- package/lib/esm/component/Chart/HistogramChart.mjs +8 -4
- package/lib/esm/component/Chart/LineChart.mjs +7 -3
- package/lib/esm/component/Chart/ScatterPlotChart.mjs +6 -2
- package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +5 -5
- package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +18 -18
- package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +7 -7
- package/lib/esm/style/abstract-chart.shadow.css +7 -0
- package/lib/types/component/Chart/AbstractChart.d.ts +14 -0
- package/lib/types/component/Chart/AbstractChart.type.d.ts +11 -2
- package/package.json +16 -16
- package/vitest.config.mts +17 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_d3Scale","_react","_","_AbstractChart","_intergalacticDynamicLocales","AreaChartComponent","AbstractChart","xScale","marginY","
|
|
1
|
+
{"version":3,"file":"AreaChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_d3Scale","_react","_","_AbstractChart","_intergalacticDynamicLocales","AreaChartComponent","AbstractChart","xScale","marginY","data","groupKey","asProps","plotWidth","testItem","range","plotPadding","domain","minMax","Date","Number","isNaN","getMilliseconds","scaleTime","scaleLinear","yScale","marginX","stacked","plotHeight","flatValues","min","Math","max","maxStackedValue","renderChart","curve","showDots","onClickArea","dataDefinitions","highlightedLine","state","default","createElement","StackedArea","x","map","item","index","checked","Area","y","id","key","color","transparent","onClick","Dots","display","renderTooltip","HoverLine","Tooltip","wMin","xIndex","dataItem","children","getTooltipChildren","getLegendAriaLabel","getI18nText","chartType","_defineProperty2","i18nEnhance","localizedMessages","direction","showXAxis","showYAxis","showTooltip","AreaChart","exports","createComponent"],"sources":["../../../../src/component/Chart/AreaChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { type ScaleLinear, scaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { Area, minMax, HoverLine, StackedArea } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { AreaChartData, AreaChartProps, AreaChartType, AreaChartDefaultProps } from './AreaChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass AreaChartComponent extends AbstractChart<\n AreaChartData,\n AreaChartProps,\n typeof AreaChartComponent.enhance,\n {},\n ChartState,\n AreaChartDefaultProps\n> {\n static displayName = 'Chart.Area';\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n } as const;\n\n get xScale() {\n const { xScale, marginY = 40, data, groupKey } = this.asProps;\n const { plotWidth } = this;\n\n if (xScale) {\n return xScale;\n }\n\n const testItem = data[0][groupKey];\n const range = [marginY, plotWidth - this.plotPadding];\n const domain = minMax(data, groupKey);\n\n if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {\n return scaleTime(domain, range);\n }\n\n return scaleLinear(domain, range);\n }\n\n get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 24, stacked } = this.asProps;\n const { plotHeight } = this;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = super.flatValues;\n const min = Math.min(...flatValues);\n const max = stacked ? super.maxStackedValue : Math.max(...flatValues);\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min, max]);\n }\n\n renderChart() {\n const { groupKey, curve, showDots, stacked, onClickArea } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n if (stacked) {\n return (\n <StackedArea x={groupKey}>\n {dataDefinitions.map((item, index) => {\n return (\n item.checked && (\n <StackedArea.Area\n x={groupKey}\n y={item.id}\n key={item.id}\n color={item.color}\n transparent={highlightedLine !== -1 && highlightedLine !== index}\n curve={curve}\n onClick={onClickArea}\n >\n {showDots && <StackedArea.Area.Dots display />}\n </StackedArea.Area>\n )\n );\n })}\n </StackedArea>\n );\n }\n\n return dataDefinitions.map((item, index) => {\n return (\n item.checked && (\n <Area\n x={groupKey}\n y={item.id}\n key={item.id}\n color={item.color}\n transparent={highlightedLine !== -1 && highlightedLine !== index}\n curve={curve}\n onClick={onClickArea}\n >\n {showDots && <Area.Dots display />}\n </Area>\n )\n );\n });\n }\n\n renderTooltip() {\n const { data, groupKey } = this.asProps;\n\n return (\n <HoverLine.Tooltip x={groupKey} wMin={100}>\n {({ xIndex }: any) => {\n const dataItem = data[xIndex];\n\n return {\n children: this.getTooltipChildren({\n Tooltip: HoverLine.Tooltip,\n dataItem,\n }),\n };\n }}\n </HoverLine.Tooltip>\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Area' });\n }\n}\n\n/**\n * AreaChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/area-chart/area-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/area-chart/area-chart-code/|Examples}\n */\nexport const AreaChart = createComponent<\n AreaChartType,\n typeof AreaChartComponent\n>(AreaChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -228,12 +228,14 @@ class BarChartComponent extends _AbstractChart.AbstractChart {
|
|
|
228
228
|
const {
|
|
229
229
|
marginY = 40,
|
|
230
230
|
marginX = 24,
|
|
231
|
-
plotWidth,
|
|
232
|
-
plotHeight,
|
|
233
231
|
invertAxis,
|
|
234
232
|
data,
|
|
235
233
|
groupKey
|
|
236
234
|
} = this.asProps;
|
|
235
|
+
const {
|
|
236
|
+
plotWidth,
|
|
237
|
+
plotHeight
|
|
238
|
+
} = this;
|
|
237
239
|
const testItem = data[0][groupKey];
|
|
238
240
|
const range = invertAxis ? [plotHeight - marginX, this.plotPadding] : [marginY, plotWidth - this.plotPadding];
|
|
239
241
|
if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {
|
|
@@ -247,11 +249,13 @@ class BarChartComponent extends _AbstractChart.AbstractChart {
|
|
|
247
249
|
const {
|
|
248
250
|
marginY = 40,
|
|
249
251
|
marginX = 24,
|
|
250
|
-
plotWidth,
|
|
251
|
-
plotHeight,
|
|
252
252
|
invertAxis,
|
|
253
253
|
type
|
|
254
254
|
} = this.asProps;
|
|
255
|
+
const {
|
|
256
|
+
plotWidth,
|
|
257
|
+
plotHeight
|
|
258
|
+
} = this;
|
|
255
259
|
const max = type === 'stack' ? super.maxStackedValue : Math.max(...super.flatValues);
|
|
256
260
|
return (0, _d3Scale.scaleLinear)().range(invertAxis ? [marginY, plotWidth - this.plotPadding] : [plotHeight - marginX, this.plotPadding]).domain([0, max]);
|
|
257
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_d3Scale","_react","_AbstractChart","_","_intergalacticDynamicLocales","BarChartComponent","AbstractChart","constructor","args","_defineProperty2","default","_data","e","barIndex","barKey","onClickBar","asProps","xScale","invertAxis","valueScale","categoryScale","yScale","defaultLegendProps","props","trend","undefined","withTrend","renderTrend","key","groupKey","state","trendItem","createElement","Line","data","x","y","color","style","strokeWidth","strokeDasharray","Dots","display","renderChart","type","dataDefinitions","highlightedLine","length","item","BarComponent","GroupBar","HorizontalBar","Bar","checked","Fragment","id","onClick","handleClickBar","map","index","commonBarComponentProps","transparent","_extends2","StackBar","renderTooltip","onClickHoverRect","HoverRect","Tooltip","wMin","xIndex","yIndex","dataItem","children","getTooltipChildren","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","Array","isArray","xTicks","yTicks","childrenX","value","childrenY","YAxis","Ticks","primaryText","multiline","ticks","Grid","XAxis","getLegendAriaLabel","getI18nText","chartType","marginY","marginX","plotWidth","plotHeight","testItem","range","plotPadding","Date","Number","isNaN","getMilliseconds","domain","minMax","scaleTime","scaleBand","paddingInner","paddingOuter","max","maxStackedValue","Math","flatValues","scaleLinear","i18nEnhance","localizedMessages","direction","showTooltip","BarChart","exports","createComponent"],"sources":["../../../../src/component/Chart/BarChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { BaseLegendProps } from './AbstractChart.type';\nimport type { BarChartData, BarChartProps, BarChartType, BarChartDefaultProps } from './BarChart.type';\n// @ts-ignore\nimport { minMax, GroupBar, HoverRect, StackBar, Line, YAxis, XAxis } from '../..';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport type { BarProps } from '../../types';\nimport type { LegendItemKey } from '../ChartLegend/LegendItem/LegendItem.type';\n\nclass BarChartComponent extends AbstractChart<\n BarChartData,\n BarChartProps,\n typeof BarChartComponent.enhance,\n {},\n ChartState,\n BarChartDefaultProps\n> {\n static displayName = 'Chart.Bar';\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n } as const;\n\n get xScale() {\n const { xScale, invertAxis } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n return invertAxis ? this.valueScale : this.categoryScale;\n }\n\n get yScale() {\n const { yScale, invertAxis } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n return invertAxis ? this.categoryScale : this.valueScale;\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n if (this.props.trend !== undefined) {\n return { withTrend: true };\n }\n\n return {};\n }\n\n renderTrend(key: LegendItemKey) {\n const { groupKey, invertAxis, trend } = this.asProps;\n const { withTrend } = this.state;\n const trendItem = trend?.[key];\n\n if (withTrend && trendItem) {\n return (\n <Line\n data={trendItem}\n key={`${key}_${groupKey}`}\n x={invertAxis ? 'y' : 'x'}\n y={invertAxis ? 'x' : 'y'}\n color='wall'\n style={{ strokeWidth: 3, strokeDasharray: 5 }}\n >\n <Line.Dots data={trendItem} display />\n </Line>\n );\n }\n\n return null;\n }\n\n renderChart() {\n const { groupKey, type = 'group', invertAxis } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n if (dataDefinitions.length === 1) {\n const item = dataDefinitions[0];\n const BarComponent = invertAxis ? GroupBar.HorizontalBar : GroupBar.Bar;\n\n return (\n item.checked && (\n <>\n <BarComponent\n x={invertAxis ? item.id : groupKey}\n y={invertAxis ? groupKey : item.id}\n key={item.id}\n color={item.color}\n onClick={this.handleClickBar}\n />\n {this.renderTrend(item.id)}\n </>\n )\n );\n }\n\n if (type === 'group') {\n return (\n <>\n <GroupBar x={invertAxis ? undefined : groupKey} y={invertAxis ? groupKey : undefined}>\n {dataDefinitions.map((item, index) => {\n const BarComponent = invertAxis ? GroupBar.HorizontalBar : GroupBar.Bar;\n\n const commonBarComponentProps: BarProps = {\n color: item.color,\n transparent: highlightedLine !== -1 && highlightedLine !== index,\n onClick: this.handleClickBar,\n };\n\n if (invertAxis) {\n commonBarComponentProps.x = item.id;\n } else {\n commonBarComponentProps.y = item.id;\n }\n\n return item.checked && <BarComponent key={item.id} {...commonBarComponentProps} />;\n })}\n </GroupBar>\n {dataDefinitions.map((item) => item.checked && this.renderTrend(item.id))}\n </>\n );\n }\n\n if (type === 'stack') {\n return (\n <>\n <StackBar x={invertAxis ? undefined : groupKey} y={invertAxis ? groupKey : undefined}>\n {dataDefinitions.map((item, index) => {\n const BarComponent = invertAxis ? StackBar.HorizontalBar : StackBar.Bar;\n\n const commonBarComponentProps: BarProps = {\n color: item.color,\n transparent: highlightedLine !== -1 && highlightedLine !== index,\n onClick: this.handleClickBar,\n };\n\n if (invertAxis) {\n commonBarComponentProps.x = item.id;\n } else {\n commonBarComponentProps.y = item.id;\n }\n\n return item.checked && <BarComponent key={item.id} {...commonBarComponentProps} />;\n })}\n </StackBar>\n {dataDefinitions.map((item) => item.checked && this.renderTrend(item.id))}\n </>\n );\n }\n\n return null;\n }\n\n renderTooltip(): React.ReactNode {\n const { data, groupKey, invertAxis, onClickHoverRect } = this.asProps;\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? undefined : groupKey}\n y={invertAxis ? groupKey : undefined}\n wMin={100}\n onClick={onClickHoverRect}\n >\n {({ xIndex, yIndex }: any) => {\n const index = invertAxis ? yIndex : xIndex;\n const dataItem = data[index];\n\n return {\n children: this.getTooltipChildren({\n Tooltip: HoverRect.Tooltip,\n dataItem,\n }),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected override renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks primaryText={invertAxis} multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks primaryText={invertAxis} multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Bar' });\n }\n\n private handleClickBar = (\n _data: BarChartData[0],\n e: React.SyntheticEvent,\n barIndex: number,\n barKey: string,\n ) => {\n const { onClickBar } = this.asProps;\n\n if (onClickBar) {\n onClickBar(barIndex, barKey, e);\n }\n };\n\n private get categoryScale() {\n const {\n marginY = 40,\n marginX = 24,\n plotWidth,\n plotHeight,\n invertAxis,\n data,\n groupKey,\n } = this.asProps;\n\n const testItem = data[0][groupKey];\n const range = invertAxis\n ? [plotHeight - marginX, this.plotPadding]\n : [marginY, plotWidth - this.plotPadding];\n\n if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {\n const domain = minMax(data, groupKey);\n\n return scaleTime(domain, range);\n }\n\n const domain = data.map((item) => item[groupKey]);\n\n return scaleBand(domain, range).paddingInner(0.4).paddingOuter(0.2);\n }\n\n private get valueScale() {\n const { marginY = 40, marginX = 24, plotWidth, plotHeight, invertAxis, type } = this.asProps;\n\n const max = type === 'stack' ? super.maxStackedValue : Math.max(...super.flatValues);\n\n return scaleLinear()\n .range(\n invertAxis\n ? [marginY, plotWidth - this.plotPadding]\n : [plotHeight - marginX, this.plotPadding],\n )\n .domain([0, max]);\n }\n}\n\n/**\n * BarChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/bar-chart/bar-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/bar-chart/bar-chart-code/|Examples}\n */\nexport const BarChart = createComponent<\n BarChartType,\n typeof BarChartComponent\n>(BarChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BarChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_d3Scale","_react","_AbstractChart","_","_intergalacticDynamicLocales","BarChartComponent","AbstractChart","constructor","args","_defineProperty2","default","_data","e","barIndex","barKey","onClickBar","asProps","xScale","invertAxis","valueScale","categoryScale","yScale","defaultLegendProps","props","trend","undefined","withTrend","renderTrend","key","groupKey","state","trendItem","createElement","Line","data","x","y","color","style","strokeWidth","strokeDasharray","Dots","display","renderChart","type","dataDefinitions","highlightedLine","length","item","BarComponent","GroupBar","HorizontalBar","Bar","checked","Fragment","id","onClick","handleClickBar","map","index","commonBarComponentProps","transparent","_extends2","StackBar","renderTooltip","onClickHoverRect","HoverRect","Tooltip","wMin","xIndex","yIndex","dataItem","children","getTooltipChildren","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","Array","isArray","xTicks","yTicks","childrenX","value","childrenY","YAxis","Ticks","primaryText","multiline","ticks","Grid","XAxis","getLegendAriaLabel","getI18nText","chartType","marginY","marginX","plotWidth","plotHeight","testItem","range","plotPadding","Date","Number","isNaN","getMilliseconds","domain","minMax","scaleTime","scaleBand","paddingInner","paddingOuter","max","maxStackedValue","Math","flatValues","scaleLinear","i18nEnhance","localizedMessages","direction","showTooltip","BarChart","exports","createComponent"],"sources":["../../../../src/component/Chart/BarChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { BaseLegendProps } from './AbstractChart.type';\nimport type { BarChartData, BarChartProps, BarChartType, BarChartDefaultProps } from './BarChart.type';\n// @ts-ignore\nimport { minMax, GroupBar, HoverRect, StackBar, Line, YAxis, XAxis } from '../..';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport type { BarProps } from '../../types';\nimport type { LegendItemKey } from '../ChartLegend/LegendItem/LegendItem.type';\n\nclass BarChartComponent extends AbstractChart<\n BarChartData,\n BarChartProps,\n typeof BarChartComponent.enhance,\n {},\n ChartState,\n BarChartDefaultProps\n> {\n static displayName = 'Chart.Bar';\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n } as const;\n\n get xScale() {\n const { xScale, invertAxis } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n return invertAxis ? this.valueScale : this.categoryScale;\n }\n\n get yScale() {\n const { yScale, invertAxis } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n return invertAxis ? this.categoryScale : this.valueScale;\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n if (this.props.trend !== undefined) {\n return { withTrend: true };\n }\n\n return {};\n }\n\n renderTrend(key: LegendItemKey) {\n const { groupKey, invertAxis, trend } = this.asProps;\n const { withTrend } = this.state;\n const trendItem = trend?.[key];\n\n if (withTrend && trendItem) {\n return (\n <Line\n data={trendItem}\n key={`${key}_${groupKey}`}\n x={invertAxis ? 'y' : 'x'}\n y={invertAxis ? 'x' : 'y'}\n color='wall'\n style={{ strokeWidth: 3, strokeDasharray: 5 }}\n >\n <Line.Dots data={trendItem} display />\n </Line>\n );\n }\n\n return null;\n }\n\n renderChart() {\n const { groupKey, type = 'group', invertAxis } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n if (dataDefinitions.length === 1) {\n const item = dataDefinitions[0];\n const BarComponent = invertAxis ? GroupBar.HorizontalBar : GroupBar.Bar;\n\n return (\n item.checked && (\n <>\n <BarComponent\n x={invertAxis ? item.id : groupKey}\n y={invertAxis ? groupKey : item.id}\n key={item.id}\n color={item.color}\n onClick={this.handleClickBar}\n />\n {this.renderTrend(item.id)}\n </>\n )\n );\n }\n\n if (type === 'group') {\n return (\n <>\n <GroupBar x={invertAxis ? undefined : groupKey} y={invertAxis ? groupKey : undefined}>\n {dataDefinitions.map((item, index) => {\n const BarComponent = invertAxis ? GroupBar.HorizontalBar : GroupBar.Bar;\n\n const commonBarComponentProps: BarProps = {\n color: item.color,\n transparent: highlightedLine !== -1 && highlightedLine !== index,\n onClick: this.handleClickBar,\n };\n\n if (invertAxis) {\n commonBarComponentProps.x = item.id;\n } else {\n commonBarComponentProps.y = item.id;\n }\n\n return item.checked && <BarComponent key={item.id} {...commonBarComponentProps} />;\n })}\n </GroupBar>\n {dataDefinitions.map((item) => item.checked && this.renderTrend(item.id))}\n </>\n );\n }\n\n if (type === 'stack') {\n return (\n <>\n <StackBar x={invertAxis ? undefined : groupKey} y={invertAxis ? groupKey : undefined}>\n {dataDefinitions.map((item, index) => {\n const BarComponent = invertAxis ? StackBar.HorizontalBar : StackBar.Bar;\n\n const commonBarComponentProps: BarProps = {\n color: item.color,\n transparent: highlightedLine !== -1 && highlightedLine !== index,\n onClick: this.handleClickBar,\n };\n\n if (invertAxis) {\n commonBarComponentProps.x = item.id;\n } else {\n commonBarComponentProps.y = item.id;\n }\n\n return item.checked && <BarComponent key={item.id} {...commonBarComponentProps} />;\n })}\n </StackBar>\n {dataDefinitions.map((item) => item.checked && this.renderTrend(item.id))}\n </>\n );\n }\n\n return null;\n }\n\n renderTooltip(): React.ReactNode {\n const { data, groupKey, invertAxis, onClickHoverRect } = this.asProps;\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? undefined : groupKey}\n y={invertAxis ? groupKey : undefined}\n wMin={100}\n onClick={onClickHoverRect}\n >\n {({ xIndex, yIndex }: any) => {\n const index = invertAxis ? yIndex : xIndex;\n const dataItem = data[index];\n\n return {\n children: this.getTooltipChildren({\n Tooltip: HoverRect.Tooltip,\n dataItem,\n }),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected override renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks primaryText={invertAxis} multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks primaryText={invertAxis} multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Bar' });\n }\n\n private handleClickBar = (\n _data: BarChartData[0],\n e: React.SyntheticEvent,\n barIndex: number,\n barKey: string,\n ) => {\n const { onClickBar } = this.asProps;\n\n if (onClickBar) {\n onClickBar(barIndex, barKey, e);\n }\n };\n\n private get categoryScale() {\n const {\n marginY = 40,\n marginX = 24,\n invertAxis,\n data,\n groupKey,\n } = this.asProps;\n const { plotWidth, plotHeight } = this;\n\n const testItem = data[0][groupKey];\n const range = invertAxis\n ? [plotHeight - marginX, this.plotPadding]\n : [marginY, plotWidth - this.plotPadding];\n\n if (testItem instanceof Date && !Number.isNaN(testItem.getMilliseconds())) {\n const domain = minMax(data, groupKey);\n\n return scaleTime(domain, range);\n }\n\n const domain = data.map((item) => item[groupKey]);\n\n return scaleBand(domain, range).paddingInner(0.4).paddingOuter(0.2);\n }\n\n private get valueScale() {\n const { marginY = 40, marginX = 24, invertAxis, type } = this.asProps;\n const { plotWidth, plotHeight } = this;\n\n const max = type === 'stack' ? super.maxStackedValue : Math.max(...super.flatValues);\n\n return scaleLinear()\n .range(\n invertAxis\n ? [marginY, plotWidth - this.plotPadding]\n : [plotHeight - marginX, this.plotPadding],\n )\n .domain([0, max]);\n }\n}\n\n/**\n * BarChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/bar-chart/bar-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/bar-chart/bar-chart-code/|Examples}\n */\nexport const BarChart = createComponent<\n BarChartType,\n typeof BarChartComponent\n>(BarChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -56,9 +56,11 @@ class BubbleChartComponent extends _AbstractChart.AbstractChart {
|
|
|
56
56
|
const {
|
|
57
57
|
xScale,
|
|
58
58
|
marginY = 30,
|
|
59
|
-
plotWidth,
|
|
60
59
|
data
|
|
61
60
|
} = this.asProps;
|
|
61
|
+
const {
|
|
62
|
+
plotWidth
|
|
63
|
+
} = this;
|
|
62
64
|
if (xScale) {
|
|
63
65
|
return xScale;
|
|
64
66
|
}
|
|
@@ -70,9 +72,11 @@ class BubbleChartComponent extends _AbstractChart.AbstractChart {
|
|
|
70
72
|
const {
|
|
71
73
|
yScale,
|
|
72
74
|
marginX = 30,
|
|
73
|
-
plotHeight,
|
|
74
75
|
data
|
|
75
76
|
} = this.asProps;
|
|
77
|
+
const {
|
|
78
|
+
plotHeight
|
|
79
|
+
} = this;
|
|
76
80
|
if (yScale) {
|
|
77
81
|
return yScale;
|
|
78
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BubbleChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_typography","_d3Scale","_react","_2","_AbstractChart","_intergalacticDynamicLocales","BubbleChartComponent","AbstractChart","dataKeys","data","props","map","_","index","toString","getDefaultDataDefinitions","legendProps","item","key","legendData","legendMap","color","undefined","resolveColor","dataDefinition","id","label","icon","checked","defaultChecked","columns","additionalInfo","count","xScale","marginY","plotWidth","asProps","range","plotPadding","domain","calculateBubbleDomain","scaleLinear","yScale","marginX","plotHeight","defaultLegendProps","shape","renderChart","onClickBubble","dataDefinitions","state","default","createElement","Bubble","onClick","x","y","value","Circle","visible","renderTooltip","Tooltip","children","Fragment","Title","Text","tag","getLegendAriaLabel","getI18nText","chartType","_defineProperty2","i18nEnhance","localizedMessages","direction","showXAxis","showYAxis","showTooltip","BubbleChart","exports","createComponent"],"sources":["../../../../src/component/Chart/BubbleChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport { scaleLinear, type ScaleLinear } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { Bubble, calculateBubbleDomain } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { BubbleChartData, BubbleChartProps, BubbleChartType, BubbleChartDefaultProps } from './BubbleChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\n\nclass BubbleChartComponent extends AbstractChart<\n BubbleChartData,\n BubbleChartProps,\n typeof BubbleChartComponent.enhance,\n {},\n ChartState,\n BubbleChartDefaultProps\n> {\n static displayName = 'Chart.Bubble';\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n } as const;\n\n protected get dataKeys(): string[] {\n const { data } = this.props;\n\n return data.map((_, index) => index.toString());\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const { legendProps, data } = this.props;\n\n return data.map((item, index) => {\n const key = index.toString();\n const legendData = legendProps?.legendMap?.[key];\n\n if (item.color === undefined) {\n item.color = this.resolveColor(key, index);\n }\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? item.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: item.color,\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n return dataDefinition;\n });\n }\n\n get xScale() {\n const { xScale, marginY = 30, plotWidth, data } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n const range = [marginY, plotWidth - this.plotPadding];\n const domain = calculateBubbleDomain(data, 'x', range);\n\n return scaleLinear().domain(domain).range(range);\n }\n\n get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, plotHeight, data } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n const range = [plotHeight - marginX, this.plotPadding];\n const domain = calculateBubbleDomain(data, 'y', range);\n\n return scaleLinear().domain(domain).range(range);\n }\n\n defaultLegendProps() {\n return {\n shape: 'Circle' as const,\n };\n }\n\n renderChart() {\n const { onClickBubble } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return (\n <Bubble onClick={onClickBubble} x='x' y='y' value='value' color='color' label='label'>\n {dataDefinitions.map(({ checked, id }, index) => (\n <Bubble.Circle visible={checked} key={id} index={index} />\n ))}\n </Bubble>\n );\n }\n\n renderTooltip() {\n return (\n <Bubble.Tooltip>\n {({ index, data }: any) => {\n return {\n children: (\n <>\n <Bubble.Tooltip.Title>Data</Bubble.Tooltip.Title>\n <Text tag='div'>\n X axis\n {' '}\n {data[index].x}\n </Text>\n <Text tag='div'>\n Y axis\n {' '}\n {data[index].y}\n </Text>\n <Text tag='div'>\n Value\n {' '}\n {data[index].value}\n </Text>\n </>\n ),\n };\n }}\n </Bubble.Tooltip>\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Bubble' });\n }\n}\n\n/**\n * BubbleChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/bubble-chart/bubble-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/bubble-chart/bubble-chart-code/|Examples}\n */\nexport const BubbleChart = createComponent<\n BubbleChartType,\n typeof BubbleChartComponent\n>(BubbleChartComponent);\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAH,sBAAA,CAAAF,OAAA;AAGA,IAAAM,EAAA,GAAAN,OAAA;AAEA,IAAAO,cAAA,GAAAP,OAAA;AAEA,IAAAQ,4BAAA,GAAAR,OAAA;AALA;;AAQA,MAAMS,oBAAoB,SAASC,4BAAa,CAO9C;EAYA,IAAcC,QAAQA,CAAA,EAAa;IACjC,MAAM;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAE3B,OAAOD,IAAI,CAACE,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAKA,KAAK,CAACC,QAAQ,CAAC,CAAC,CAAC;EACjD;EAEmBC,yBAAyBA,CAAA,EAE1C;IACA,MAAM;MAAEC,WAAW;MAAEP;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAExC,OAAOD,IAAI,CAACE,GAAG,CAAC,CAACM,IAAI,EAAEJ,KAAK,KAAK;MAC/B,MAAMK,GAAG,GAAGL,KAAK,CAACC,QAAQ,CAAC,CAAC;MAC5B,MAAMK,UAAU,GAAGH,WAAW,EAAEI,SAAS,GAAGF,GAAG,CAAC;MAEhD,IAAID,IAAI,CAACI,KAAK,KAAKC,SAAS,EAAE;QAC5BL,IAAI,CAACI,KAAK,GAAG,IAAI,CAACE,YAAY,CAACL,GAAG,EAAEL,KAAK,CAAC;MAC5C;MAEA,MAAMW,cAA2D,GAAG;QAClEC,EAAE,EAAEP,GAAG;QACPQ,KAAK,EAAEP,UAAU,EAAEO,KAAK,IAAIT,IAAI,CAACS,KAAK,IAAIR,GAAG;QAC7CS,IAAI,EAAER,UAAU,EAAEQ,IAAI,IAAIL,SAAS;QACnCM,OAAO,EAAET,UAAU,EAAEU,cAAc,IAAI,IAAI;QAC3CR,KAAK,EAAEJ,IAAI,CAACI,KAAK;QACjBS,OAAO,EAAE;MACX,CAAC;MAED,IAAIX,UAAU,EAAEY,cAAc,IAAIZ,UAAU,EAAEa,KAAK,EAAE;QACnDR,cAAc,CAACO,cAAc,GAAGZ,UAAU,CAACY,cAAc,GACrD;UAAEL,KAAK,EAAEP,UAAU,CAACY;QAAe,CAAC,GACpCZ,UAAU,CAACa,KAAK,GACd;UAAEA,KAAK,EAAEb,UAAU,CAACa;QAAM,CAAC,GAC3BV,SAAS;MACjB;MAEA,OAAOE,cAAc;IACvB,CAAC,CAAC;EACJ;EAEA,IAAIS,MAAMA,CAAA,EAAG;IACX,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAEC,SAAS;MAAE1B;IAAK,CAAC,GAAG,IAAI,CAAC2B,OAAO;IAE9D,IAAIH,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAMI,KAAK,GAAG,CAACH,OAAO,EAAEC,SAAS,GAAG,IAAI,CAACG,WAAW,CAAC;IACrD,MAAMC,MAAM,GAAG,IAAAC,wBAAqB,EAAC/B,IAAI,EAAE,GAAG,EAAE4B,KAAK,CAAC;IAEtD,OAAO,IAAAI,oBAAW,EAAC,CAAC,CAACF,MAAM,CAACA,MAAM,CAAC,CAACF,KAAK,CAACA,KAAK,CAAC;EAClD;EAEA,IAAIK,MAAMA,CAAA,EAA0B;IAClC,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAEC,UAAU;MAAEnC;IAAK,CAAC,GAAG,IAAI,CAAC2B,OAAO;IAE/D,IAAIM,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAML,KAAK,GAAG,CAACO,UAAU,GAAGD,OAAO,EAAE,IAAI,CAACL,WAAW,CAAC;IACtD,MAAMC,MAAM,GAAG,IAAAC,wBAAqB,EAAC/B,IAAI,EAAE,GAAG,EAAE4B,KAAK,CAAC;IAEtD,OAAO,IAAAI,oBAAW,EAAC,CAAC,CAACF,MAAM,CAACA,MAAM,CAAC,CAACF,KAAK,CAACA,KAAK,CAAC;EAClD;EAEAQ,kBAAkBA,CAAA,EAAG;IACnB,OAAO;MACLC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACZ,OAAO;IACtC,MAAM;MAAEa;IAAgB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtC,oBACEhD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM;MAACC,OAAO,EAAEN,aAAc;MAACO,CAAC,EAAC,GAAG;MAACC,CAAC,EAAC,GAAG;MAACC,KAAK,EAAC,OAAO;MAACpC,KAAK,EAAC,OAAO;MAACK,KAAK,EAAC;IAAO,GAClFuB,eAAe,CAACtC,GAAG,CAAC,CAAC;MAAEiB,OAAO;MAAEH;IAAG,CAAC,EAAEZ,KAAK,kBAC1CX,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACK,MAAM;MAACC,OAAO,EAAE/B,OAAQ;MAACV,GAAG,EAAEO,EAAG;MAACZ,KAAK,EAAEA;IAAM,CAAE,CAC1D,CACK,CAAC;EAEb;EAEA+C,aAAaA,CAAA,EAAG;IACd,oBACE1D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACQ,OAAO,QACZ,CAAC;MAAEhD,KAAK;MAAEJ;IAAU,CAAC,KAAK;MACzB,OAAO;QACLqD,QAAQ,eACN5D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAAAlD,MAAA,CAAAiD,OAAA,CAAAY,QAAA,qBACE7D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACQ,OAAO,CAACG,KAAK,QAAC,MAA0B,CAAC,eACjD9D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,QAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC0C,CACT,CAAC,eACPrD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,QAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC2C,CACT,CAAC,eACPtD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,OAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC4C,KACT,CACN;MAEN,CAAC;IACH,CACc,CAAC;EAErB;EAEUU,kBAAkBA,CAAA,EAAW;IACrC,OAAO,IAAI,CAAC/B,OAAO,CAACgC,WAAW,CAAC,gBAAgB,EAAE;MAAEC,SAAS,EAAE;IAAS,CAAC,CAAC;EAC5E;AACF;;AAEA;AACA;AACA;AACA;AACA;AAJA,IAAAC,gBAAA,CAAAnB,OAAA,EA5IM7C,oBAAoB,iBAQH,cAAc;AAAA,IAAAgE,gBAAA,CAAAnB,OAAA,EAR/B7C,oBAAoB,aAUP,CAAC,IAAAiE,oBAAW,EAACC,8CAAiB,CAAC,CAAC;AAAA,IAAAF,gBAAA,CAAAnB,OAAA,EAV7C7C,oBAAoB,kBAYF;EACpBmE,SAAS,EAAE,QAAQ;EACnBC,SAAS,EAAE,IAAI;EACfC,SAAS,EAAE,IAAI;EACfC,WAAW,EAAE;AACf,CAAC;AAgII,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,qBAAe,EAGxCzE,oBAAoB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BubbleChart.js","names":["_core","require","_i18nEnhance","_interopRequireDefault","_typography","_d3Scale","_react","_2","_AbstractChart","_intergalacticDynamicLocales","BubbleChartComponent","AbstractChart","dataKeys","data","props","map","_","index","toString","getDefaultDataDefinitions","legendProps","item","key","legendData","legendMap","color","undefined","resolveColor","dataDefinition","id","label","icon","checked","defaultChecked","columns","additionalInfo","count","xScale","marginY","asProps","plotWidth","range","plotPadding","domain","calculateBubbleDomain","scaleLinear","yScale","marginX","plotHeight","defaultLegendProps","shape","renderChart","onClickBubble","dataDefinitions","state","default","createElement","Bubble","onClick","x","y","value","Circle","visible","renderTooltip","Tooltip","children","Fragment","Title","Text","tag","getLegendAriaLabel","getI18nText","chartType","_defineProperty2","i18nEnhance","localizedMessages","direction","showXAxis","showYAxis","showTooltip","BubbleChart","exports","createComponent"],"sources":["../../../../src/component/Chart/BubbleChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport { scaleLinear, type ScaleLinear } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { Bubble, calculateBubbleDomain } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { BubbleChartData, BubbleChartProps, BubbleChartType, BubbleChartDefaultProps } from './BubbleChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\n\nclass BubbleChartComponent extends AbstractChart<\n BubbleChartData,\n BubbleChartProps,\n typeof BubbleChartComponent.enhance,\n {},\n ChartState,\n BubbleChartDefaultProps\n> {\n static displayName = 'Chart.Bubble';\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n } as const;\n\n protected get dataKeys(): string[] {\n const { data } = this.props;\n\n return data.map((_, index) => index.toString());\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const { legendProps, data } = this.props;\n\n return data.map((item, index) => {\n const key = index.toString();\n const legendData = legendProps?.legendMap?.[key];\n\n if (item.color === undefined) {\n item.color = this.resolveColor(key, index);\n }\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? item.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: item.color,\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n return dataDefinition;\n });\n }\n\n get xScale() {\n const { xScale, marginY = 30, data } = this.asProps;\n const { plotWidth } = this;\n\n if (xScale) {\n return xScale;\n }\n\n const range = [marginY, plotWidth - this.plotPadding];\n const domain = calculateBubbleDomain(data, 'x', range);\n\n return scaleLinear().domain(domain).range(range);\n }\n\n get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, data } = this.asProps;\n const { plotHeight } = this;\n\n if (yScale) {\n return yScale;\n }\n\n const range = [plotHeight - marginX, this.plotPadding];\n const domain = calculateBubbleDomain(data, 'y', range);\n\n return scaleLinear().domain(domain).range(range);\n }\n\n defaultLegendProps() {\n return {\n shape: 'Circle' as const,\n };\n }\n\n renderChart() {\n const { onClickBubble } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return (\n <Bubble onClick={onClickBubble} x='x' y='y' value='value' color='color' label='label'>\n {dataDefinitions.map(({ checked, id }, index) => (\n <Bubble.Circle visible={checked} key={id} index={index} />\n ))}\n </Bubble>\n );\n }\n\n renderTooltip() {\n return (\n <Bubble.Tooltip>\n {({ index, data }: any) => {\n return {\n children: (\n <>\n <Bubble.Tooltip.Title>Data</Bubble.Tooltip.Title>\n <Text tag='div'>\n X axis\n {' '}\n {data[index].x}\n </Text>\n <Text tag='div'>\n Y axis\n {' '}\n {data[index].y}\n </Text>\n <Text tag='div'>\n Value\n {' '}\n {data[index].value}\n </Text>\n </>\n ),\n };\n }}\n </Bubble.Tooltip>\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Bubble' });\n }\n}\n\n/**\n * BubbleChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/bubble-chart/bubble-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/bubble-chart/bubble-chart-code/|Examples}\n */\nexport const BubbleChart = createComponent<\n BubbleChartType,\n typeof BubbleChartComponent\n>(BubbleChartComponent);\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAH,sBAAA,CAAAF,OAAA;AAGA,IAAAM,EAAA,GAAAN,OAAA;AAEA,IAAAO,cAAA,GAAAP,OAAA;AAEA,IAAAQ,4BAAA,GAAAR,OAAA;AALA;;AAQA,MAAMS,oBAAoB,SAASC,4BAAa,CAO9C;EAYA,IAAcC,QAAQA,CAAA,EAAa;IACjC,MAAM;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAE3B,OAAOD,IAAI,CAACE,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAKA,KAAK,CAACC,QAAQ,CAAC,CAAC,CAAC;EACjD;EAEmBC,yBAAyBA,CAAA,EAE1C;IACA,MAAM;MAAEC,WAAW;MAAEP;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAExC,OAAOD,IAAI,CAACE,GAAG,CAAC,CAACM,IAAI,EAAEJ,KAAK,KAAK;MAC/B,MAAMK,GAAG,GAAGL,KAAK,CAACC,QAAQ,CAAC,CAAC;MAC5B,MAAMK,UAAU,GAAGH,WAAW,EAAEI,SAAS,GAAGF,GAAG,CAAC;MAEhD,IAAID,IAAI,CAACI,KAAK,KAAKC,SAAS,EAAE;QAC5BL,IAAI,CAACI,KAAK,GAAG,IAAI,CAACE,YAAY,CAACL,GAAG,EAAEL,KAAK,CAAC;MAC5C;MAEA,MAAMW,cAA2D,GAAG;QAClEC,EAAE,EAAEP,GAAG;QACPQ,KAAK,EAAEP,UAAU,EAAEO,KAAK,IAAIT,IAAI,CAACS,KAAK,IAAIR,GAAG;QAC7CS,IAAI,EAAER,UAAU,EAAEQ,IAAI,IAAIL,SAAS;QACnCM,OAAO,EAAET,UAAU,EAAEU,cAAc,IAAI,IAAI;QAC3CR,KAAK,EAAEJ,IAAI,CAACI,KAAK;QACjBS,OAAO,EAAE;MACX,CAAC;MAED,IAAIX,UAAU,EAAEY,cAAc,IAAIZ,UAAU,EAAEa,KAAK,EAAE;QACnDR,cAAc,CAACO,cAAc,GAAGZ,UAAU,CAACY,cAAc,GACrD;UAAEL,KAAK,EAAEP,UAAU,CAACY;QAAe,CAAC,GACpCZ,UAAU,CAACa,KAAK,GACd;UAAEA,KAAK,EAAEb,UAAU,CAACa;QAAM,CAAC,GAC3BV,SAAS;MACjB;MAEA,OAAOE,cAAc;IACvB,CAAC,CAAC;EACJ;EAEA,IAAIS,MAAMA,CAAA,EAAG;IACX,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAEzB;IAAK,CAAC,GAAG,IAAI,CAAC0B,OAAO;IACnD,MAAM;MAAEC;IAAU,CAAC,GAAG,IAAI;IAE1B,IAAIH,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAMI,KAAK,GAAG,CAACH,OAAO,EAAEE,SAAS,GAAG,IAAI,CAACE,WAAW,CAAC;IACrD,MAAMC,MAAM,GAAG,IAAAC,wBAAqB,EAAC/B,IAAI,EAAE,GAAG,EAAE4B,KAAK,CAAC;IAEtD,OAAO,IAAAI,oBAAW,EAAC,CAAC,CAACF,MAAM,CAACA,MAAM,CAAC,CAACF,KAAK,CAACA,KAAK,CAAC;EAClD;EAEA,IAAIK,MAAMA,CAAA,EAA0B;IAClC,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAElC;IAAK,CAAC,GAAG,IAAI,CAAC0B,OAAO;IACnD,MAAM;MAAES;IAAW,CAAC,GAAG,IAAI;IAE3B,IAAIF,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAML,KAAK,GAAG,CAACO,UAAU,GAAGD,OAAO,EAAE,IAAI,CAACL,WAAW,CAAC;IACtD,MAAMC,MAAM,GAAG,IAAAC,wBAAqB,EAAC/B,IAAI,EAAE,GAAG,EAAE4B,KAAK,CAAC;IAEtD,OAAO,IAAAI,oBAAW,EAAC,CAAC,CAACF,MAAM,CAACA,MAAM,CAAC,CAACF,KAAK,CAACA,KAAK,CAAC;EAClD;EAEAQ,kBAAkBA,CAAA,EAAG;IACnB,OAAO;MACLC,KAAK,EAAE;IACT,CAAC;EACH;EAEAC,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACb,OAAO;IACtC,MAAM;MAAEc;IAAgB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtC,oBACEhD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM;MAACC,OAAO,EAAEN,aAAc;MAACO,CAAC,EAAC,GAAG;MAACC,CAAC,EAAC,GAAG;MAACC,KAAK,EAAC,OAAO;MAACpC,KAAK,EAAC,OAAO;MAACK,KAAK,EAAC;IAAO,GAClFuB,eAAe,CAACtC,GAAG,CAAC,CAAC;MAAEiB,OAAO;MAAEH;IAAG,CAAC,EAAEZ,KAAK,kBAC1CX,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACK,MAAM;MAACC,OAAO,EAAE/B,OAAQ;MAACV,GAAG,EAAEO,EAAG;MAACZ,KAAK,EAAEA;IAAM,CAAE,CAC1D,CACK,CAAC;EAEb;EAEA+C,aAAaA,CAAA,EAAG;IACd,oBACE1D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACQ,OAAO,QACZ,CAAC;MAAEhD,KAAK;MAAEJ;IAAU,CAAC,KAAK;MACzB,OAAO;QACLqD,QAAQ,eACN5D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAAAlD,MAAA,CAAAiD,OAAA,CAAAY,QAAA,qBACE7D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACjD,EAAA,CAAAkD,MAAM,CAACQ,OAAO,CAACG,KAAK,QAAC,MAA0B,CAAC,eACjD9D,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,QAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC0C,CACT,CAAC,eACPrD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,QAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC2C,CACT,CAAC,eACPtD,MAAA,CAAAiD,OAAA,CAAAC,aAAA,CAACpD,WAAA,CAAAiE,IAAI;UAACC,GAAG,EAAC;QAAK,GAAC,OAEd,EAAC,GAAG,EACHzD,IAAI,CAACI,KAAK,CAAC,CAAC4C,KACT,CACN;MAEN,CAAC;IACH,CACc,CAAC;EAErB;EAEUU,kBAAkBA,CAAA,EAAW;IACrC,OAAO,IAAI,CAAChC,OAAO,CAACiC,WAAW,CAAC,gBAAgB,EAAE;MAAEC,SAAS,EAAE;IAAS,CAAC,CAAC;EAC5E;AACF;;AAEA;AACA;AACA;AACA;AACA;AAJA,IAAAC,gBAAA,CAAAnB,OAAA,EA9IM7C,oBAAoB,iBAQH,cAAc;AAAA,IAAAgE,gBAAA,CAAAnB,OAAA,EAR/B7C,oBAAoB,aAUP,CAAC,IAAAiE,oBAAW,EAACC,8CAAiB,CAAC,CAAC;AAAA,IAAAF,gBAAA,CAAAnB,OAAA,EAV7C7C,oBAAoB,kBAYF;EACpBmE,SAAS,EAAE,QAAQ;EACnBC,SAAS,EAAE,IAAI;EACfC,SAAS,EAAE,IAAI;EACfC,WAAW,EAAE;AACf,CAAC;AAkII,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,qBAAe,EAGxCzE,oBAAoB,CAAC","ignoreList":[]}
|
|
@@ -105,12 +105,14 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
105
105
|
}
|
|
106
106
|
computeCigaretteItems() {
|
|
107
107
|
const {
|
|
108
|
-
plotWidth,
|
|
109
|
-
plotHeight,
|
|
110
108
|
data,
|
|
111
109
|
invertAxis,
|
|
112
110
|
minimalBarWidth
|
|
113
111
|
} = this.asProps;
|
|
112
|
+
const {
|
|
113
|
+
plotWidth,
|
|
114
|
+
plotHeight
|
|
115
|
+
} = this;
|
|
114
116
|
const dataDefinitions = invertAxis ? this.activeDataDefinitions : [...this.activeDataDefinitions].reverse();
|
|
115
117
|
const count = this.activePositiveDataDefinitions.length;
|
|
116
118
|
const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);
|
|
@@ -161,13 +163,13 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
161
163
|
get xScale() {
|
|
162
164
|
const {
|
|
163
165
|
plotWidth
|
|
164
|
-
} = this
|
|
166
|
+
} = this;
|
|
165
167
|
return (0, _d3Scale.scaleLinear)([0, plotWidth]);
|
|
166
168
|
}
|
|
167
169
|
get yScale() {
|
|
168
170
|
const {
|
|
169
171
|
plotHeight
|
|
170
|
-
} = this
|
|
172
|
+
} = this;
|
|
171
173
|
return (0, _d3Scale.scaleLinear)([plotHeight, 0]);
|
|
172
174
|
}
|
|
173
175
|
renderChart() {
|
|
@@ -177,14 +179,16 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
177
179
|
uid,
|
|
178
180
|
duration,
|
|
179
181
|
patterns,
|
|
180
|
-
plotHeight,
|
|
181
|
-
plotWidth,
|
|
182
182
|
onClick
|
|
183
183
|
} = this.asProps;
|
|
184
184
|
const {
|
|
185
185
|
dataDefinitions,
|
|
186
186
|
highlightedLine
|
|
187
187
|
} = this.state;
|
|
188
|
+
const {
|
|
189
|
+
plotWidth,
|
|
190
|
+
plotHeight
|
|
191
|
+
} = this;
|
|
188
192
|
this.offset = 0;
|
|
189
193
|
const items = this.computeCigaretteItems();
|
|
190
194
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, items.map((item, index) => {
|
|
@@ -368,21 +372,25 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
368
372
|
const SChart = _baseComponents.Flex;
|
|
369
373
|
const {
|
|
370
374
|
styles,
|
|
371
|
-
plotWidth,
|
|
372
|
-
plotHeight,
|
|
373
375
|
data,
|
|
374
376
|
patterns,
|
|
377
|
+
direction,
|
|
375
378
|
invertAxis,
|
|
376
379
|
a11yAltTextConfig
|
|
377
380
|
} = this.asProps;
|
|
381
|
+
const {
|
|
382
|
+
plotWidth,
|
|
383
|
+
plotHeight
|
|
384
|
+
} = this;
|
|
378
385
|
const header = this.renderHeader();
|
|
379
386
|
if (invertAxis) {
|
|
380
387
|
var _ref5;
|
|
381
388
|
return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SChart, _ref5.cn("SChart", {
|
|
382
389
|
...(0, _core.assignProps)({
|
|
383
390
|
"gap": 6,
|
|
384
|
-
"direction":
|
|
385
|
-
"__excludeProps": ['onClick', 'data']
|
|
391
|
+
"direction": direction,
|
|
392
|
+
"__excludeProps": ['onClick', 'data'],
|
|
393
|
+
"ref": this.chartRef
|
|
386
394
|
}, _ref2)
|
|
387
395
|
}), /*#__PURE__*/_react.default.createElement(_baseComponents.Flex, _ref5.cn("Flex", {
|
|
388
396
|
"direction": 'column'
|
|
@@ -402,7 +410,8 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
402
410
|
return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(SChart, _ref6.cn("SChart", {
|
|
403
411
|
...(0, _core.assignProps)({
|
|
404
412
|
"gap": 6,
|
|
405
|
-
"__excludeProps": ['onClick', 'data']
|
|
413
|
+
"__excludeProps": ['onClick', 'data'],
|
|
414
|
+
"ref": this.chartRef
|
|
406
415
|
}, _ref2)
|
|
407
416
|
}), /*#__PURE__*/_react.default.createElement(_.Plot, _ref6.cn("Plot", {
|
|
408
417
|
"ref": this.plotRef,
|
|
@@ -478,7 +487,8 @@ class CigaretteChartComponent extends _AbstractChart.AbstractChart {
|
|
|
478
487
|
plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,
|
|
479
488
|
plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,
|
|
480
489
|
showPercentValueInTooltip: false,
|
|
481
|
-
minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH
|
|
490
|
+
minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,
|
|
491
|
+
direction: invertAxis ? 'column' : 'row'
|
|
482
492
|
};
|
|
483
493
|
});
|
|
484
494
|
(0, _defineProperty2.default)(CigaretteChartComponent, "enhance", [(0, _resolveColorEnhance.default)(), (0, _uniqueID.default)(), (0, _i18nEnhance.default)(_intergalacticDynamicLocales.localizedMessages)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CigaretteChart.js","names":["_core","require","_baseComponents","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_rafTrottle","_uniqueID","_divider","_typography","_d3Scale","_react","_","_AbstractChart","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","AbstractChart","constructor","props","_defineProperty2","default","React","createRef","trottle","event","plotRef","current","pX","pY","eventToPoint","setState","state","activeDataDefinitions","dataDefinitions","filter","checked","activePositiveDataDefinitions","data","asProps","id","itemValue","resolveColor","index","colorMap","getDefaultDataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","computeCigaretteItems","plotWidth","plotHeight","invertAxis","minimalBarWidth","reverse","count","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","result","dd","value","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","smallItem","donors","donorCapacity","s","d","donor","available","share","taken","xScale","scaleLinear","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","interpolateValue","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Box","HoverRect","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","sstyled","cn","assignProps","Dot","mr","label","Text","percentValue","tooltipValueFormatter","Flex","Title","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","NOT_A_VALUE","dataItem","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","Plot","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","scaleThreshold","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartDefaultProps, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n {},\n CigaretteChartState,\n CigaretteChartDefaultProps\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n } as const;\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState(() => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState(() => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { plotWidth, plotHeight, data, invertAxis, minimalBarWidth } = this.asProps;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this.asProps;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this.asProps;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const { percentFormatter } = this.asProps;\n\n const total = this.totalValue();\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const rawPercent = (100 * value) / total;\n const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);\n\n return `${formattedPercent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } = this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\n/**\n * CigaretteChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/cigarette-chart/cigarette-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/cigarette-chart/cigarette-chart-code/|Examples}\n */\nexport const CigaretteChart = createComponent<\n CigaretteChartType,\n typeof CigaretteChartComponent\n>(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CigaretteChart.js","names":["_core","require","_baseComponents","_i18nEnhance","_interopRequireDefault","_resolveColorEnhance","_rafTrottle","_uniqueID","_divider","_typography","_d3Scale","_react","_","_AbstractChart","_AnimatedClipPath","_intergalacticDynamicLocales","_utils","_Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","AbstractChart","constructor","props","_defineProperty2","default","React","createRef","trottle","event","plotRef","current","pX","pY","eventToPoint","setState","state","activeDataDefinitions","dataDefinitions","filter","checked","activePositiveDataDefinitions","data","asProps","id","itemValue","resolveColor","index","colorMap","getDefaultDataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","computeCigaretteItems","invertAxis","minimalBarWidth","plotWidth","plotHeight","reverse","count","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","result","dd","value","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","smallItem","donors","donorCapacity","s","d","donor","available","share","taken","xScale","scaleLinear","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","interpolateValue","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Box","HoverRect","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","sstyled","cn","assignProps","Dot","mr","label","Text","percentValue","tooltipValueFormatter","Flex","Title","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","NOT_A_VALUE","dataItem","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","chartRef","Plot","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","scaleThreshold","showXAxis","showYAxis","showLegend","marginX","marginY","resolveColorEnhance","uniqueIDEnhancement","i18nEnhance","localizedMessages","CigaretteChart","exports","createComponent"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartDefaultProps, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n {},\n CigaretteChartState,\n CigaretteChartDefaultProps\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n direction: invertAxis ? 'column' : 'row',\n } as const;\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState(() => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState(() => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { data, invertAxis, minimalBarWidth } = this.asProps;\n const { plotWidth, plotHeight } = this;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n const { plotWidth, plotHeight } = this;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const { percentFormatter } = this.asProps;\n\n const total = this.totalValue();\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const rawPercent = (100 * value) / total;\n const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);\n\n return `${formattedPercent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, data, patterns, direction, invertAxis, a11yAltTextConfig } = this.asProps;\n const { plotWidth, plotHeight } = this;\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction={direction} __excludeProps={['onClick', 'data']} ref={this.chartRef}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']} ref={this.chartRef}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\n/**\n * CigaretteChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/cigarette-chart/cigarette-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/cigarette-chart/cigarette-chart-code/|Examples}\n */\nexport const CigaretteChart = createComponent<\n CigaretteChartType,\n typeof CigaretteChartComponent\n>(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -72,17 +72,21 @@ class CompactHorizontalBarChartComponent extends _AbstractChart.AbstractChart {
|
|
|
72
72
|
get categoryScale() {
|
|
73
73
|
const {
|
|
74
74
|
marginY = 40,
|
|
75
|
-
plotHeight,
|
|
76
75
|
data,
|
|
77
76
|
y
|
|
78
77
|
} = this.asProps;
|
|
78
|
+
const {
|
|
79
|
+
plotHeight
|
|
80
|
+
} = this;
|
|
79
81
|
return (0, _d3Scale.scaleBand)().range([plotHeight - marginY, marginY]).domain([...data].reverse().map(d => d[y])).paddingInner(0.6).paddingOuter(0.2);
|
|
80
82
|
}
|
|
81
83
|
get valueScale() {
|
|
82
84
|
const {
|
|
83
|
-
marginY = 0
|
|
84
|
-
plotWidth
|
|
85
|
+
marginY = 0
|
|
85
86
|
} = this.asProps;
|
|
87
|
+
const {
|
|
88
|
+
plotWidth
|
|
89
|
+
} = this;
|
|
86
90
|
const sum = [...super.flatValues.values()].reduce((acc, d) => acc + d, 0);
|
|
87
91
|
return (0, _d3Scale.scaleLinear)().range([marginY, plotWidth]).domain([marginY, sum]);
|
|
88
92
|
}
|