@semcore/d3-chart 17.2.0 → 17.3.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 +15 -15
- package/vitest.config.mts +17 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CigaretteChart.js","names":["Box","Flex","createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","constructor","props","_defineProperty","createRef","event","plotRef","current","pX","pY","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","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","dataItem","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","_assignProps3","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"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":["Box","Flex","createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","constructor","props","_defineProperty","createRef","event","plotRef","current","pX","pY","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","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","dataItem","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","_assignProps3","chartRef","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"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":[]}
|
|
@@ -64,17 +64,21 @@ class CompactHorizontalBarChartComponent extends AbstractChart {
|
|
|
64
64
|
get categoryScale() {
|
|
65
65
|
const {
|
|
66
66
|
marginY = 40,
|
|
67
|
-
plotHeight,
|
|
68
67
|
data,
|
|
69
68
|
y
|
|
70
69
|
} = this.asProps;
|
|
70
|
+
const {
|
|
71
|
+
plotHeight
|
|
72
|
+
} = this;
|
|
71
73
|
return scaleBand().range([plotHeight - marginY, marginY]).domain([...data].reverse().map(d => d[y])).paddingInner(0.6).paddingOuter(0.2);
|
|
72
74
|
}
|
|
73
75
|
get valueScale() {
|
|
74
76
|
const {
|
|
75
|
-
marginY = 0
|
|
76
|
-
plotWidth
|
|
77
|
+
marginY = 0
|
|
77
78
|
} = this.asProps;
|
|
79
|
+
const {
|
|
80
|
+
plotWidth
|
|
81
|
+
} = this;
|
|
78
82
|
const sum = [...super.flatValues.values()].reduce((acc, d) => acc + d, 0);
|
|
79
83
|
return scaleLinear().range([marginY, plotWidth]).domain([marginY, sum]);
|
|
80
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactHorizontalBarChart.js","names":["createComponent","i18nEnhance","scaleBand","scaleLinear","React","AbstractChart","CompactHorizontalBar","localizedMessages","CompactHorizontalBarChartComponent","xScale","asProps","valueScale","yScale","categoryScale","defaultLegendProps","renderChart","x","y","onClickHoverRect","onClickBar","createElement","renderCompactHorizontalBarTooltip","Hover","onClick","Annotation","Label","Percent","Value","Bar","Background","Fill","data","showTooltip","Tooltip","wMin","index","children","Fragment","Title","Dot","renderTooltip","getLegendAriaLabel","getI18nText","chartType","marginY","plotHeight","range","domain","reverse","map","d","paddingInner","paddingOuter","plotWidth","sum","flatValues","values","reduce","acc","_defineProperty","direction","showXAxis","showYAxis","showLegend","CompactHorizontalBarChart"],"sources":["../../../../src/component/Chart/CompactHorizontalBarChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear } 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 {\n CompactHorizontalBarChartData,\n CompactHorizontalBarChartDefaultProps,\n CompactHorizontalBarChartProps,\n CompactHorizontalBarChartType,\n} from './CompactHorizontalBarChart.type';\n// @ts-ignore\nimport { CompactHorizontalBar } from '../..';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass CompactHorizontalBarChartComponent extends AbstractChart<\n CompactHorizontalBarChartData,\n CompactHorizontalBarChartProps,\n typeof CompactHorizontalBarChartComponent.enhance,\n {},\n ChartState,\n CompactHorizontalBarChartDefaultProps\n> {\n static displayName = 'Chart.CompactHorizontalBar';\n public static defaultProps = {\n direction: 'column',\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n } as const;\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n get xScale() {\n return this.asProps.xScale ?? this.valueScale;\n }\n\n get yScale() {\n return this.asProps.yScale ?? this.categoryScale;\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {};\n }\n\n renderChart() {\n const { x, y, onClickHoverRect, onClickBar } = this.asProps;\n\n return (\n <CompactHorizontalBar x={x} y={y}>\n {this.renderCompactHorizontalBarTooltip()}\n <CompactHorizontalBar.Hover onClick={onClickHoverRect} />\n <CompactHorizontalBar.Annotation>\n <CompactHorizontalBar.Label />\n <CompactHorizontalBar.Percent />\n <CompactHorizontalBar.Value />\n </CompactHorizontalBar.Annotation>\n <CompactHorizontalBar.Bar onClick={onClickBar}>\n <CompactHorizontalBar.Bar.Background />\n <CompactHorizontalBar.Bar.Fill />\n </CompactHorizontalBar.Bar>\n </CompactHorizontalBar>\n );\n }\n\n protected renderCompactHorizontalBarTooltip(): React.ReactNode {\n const { data, x, y, showTooltip } = this.asProps;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <CompactHorizontalBar.Tooltip wMin={100}>\n {({ index }: any) => {\n return {\n children: (\n <>\n <CompactHorizontalBar.Tooltip.Title>\n {data[index][y]}\n </CompactHorizontalBar.Tooltip.Title>\n\n <CompactHorizontalBar.Tooltip.Dot>\n {data[index][x]}\n </CompactHorizontalBar.Tooltip.Dot>\n </>\n ),\n };\n }}\n </CompactHorizontalBar.Tooltip>\n );\n }\n\n renderTooltip(): React.ReactNode {\n return null;\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'CompactHorizontalBar' });\n }\n\n private get categoryScale() {\n const { marginY = 40,
|
|
1
|
+
{"version":3,"file":"CompactHorizontalBarChart.js","names":["createComponent","i18nEnhance","scaleBand","scaleLinear","React","AbstractChart","CompactHorizontalBar","localizedMessages","CompactHorizontalBarChartComponent","xScale","asProps","valueScale","yScale","categoryScale","defaultLegendProps","renderChart","x","y","onClickHoverRect","onClickBar","createElement","renderCompactHorizontalBarTooltip","Hover","onClick","Annotation","Label","Percent","Value","Bar","Background","Fill","data","showTooltip","Tooltip","wMin","index","children","Fragment","Title","Dot","renderTooltip","getLegendAriaLabel","getI18nText","chartType","marginY","plotHeight","range","domain","reverse","map","d","paddingInner","paddingOuter","plotWidth","sum","flatValues","values","reduce","acc","_defineProperty","direction","showXAxis","showYAxis","showLegend","CompactHorizontalBarChart"],"sources":["../../../../src/component/Chart/CompactHorizontalBarChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear } 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 {\n CompactHorizontalBarChartData,\n CompactHorizontalBarChartDefaultProps,\n CompactHorizontalBarChartProps,\n CompactHorizontalBarChartType,\n} from './CompactHorizontalBarChart.type';\n// @ts-ignore\nimport { CompactHorizontalBar } from '../..';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass CompactHorizontalBarChartComponent extends AbstractChart<\n CompactHorizontalBarChartData,\n CompactHorizontalBarChartProps,\n typeof CompactHorizontalBarChartComponent.enhance,\n {},\n ChartState,\n CompactHorizontalBarChartDefaultProps\n> {\n static displayName = 'Chart.CompactHorizontalBar';\n public static defaultProps = {\n direction: 'column',\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n } as const;\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n get xScale() {\n return this.asProps.xScale ?? this.valueScale;\n }\n\n get yScale() {\n return this.asProps.yScale ?? this.categoryScale;\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {};\n }\n\n renderChart() {\n const { x, y, onClickHoverRect, onClickBar } = this.asProps;\n\n return (\n <CompactHorizontalBar x={x} y={y}>\n {this.renderCompactHorizontalBarTooltip()}\n <CompactHorizontalBar.Hover onClick={onClickHoverRect} />\n <CompactHorizontalBar.Annotation>\n <CompactHorizontalBar.Label />\n <CompactHorizontalBar.Percent />\n <CompactHorizontalBar.Value />\n </CompactHorizontalBar.Annotation>\n <CompactHorizontalBar.Bar onClick={onClickBar}>\n <CompactHorizontalBar.Bar.Background />\n <CompactHorizontalBar.Bar.Fill />\n </CompactHorizontalBar.Bar>\n </CompactHorizontalBar>\n );\n }\n\n protected renderCompactHorizontalBarTooltip(): React.ReactNode {\n const { data, x, y, showTooltip } = this.asProps;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <CompactHorizontalBar.Tooltip wMin={100}>\n {({ index }: any) => {\n return {\n children: (\n <>\n <CompactHorizontalBar.Tooltip.Title>\n {data[index][y]}\n </CompactHorizontalBar.Tooltip.Title>\n\n <CompactHorizontalBar.Tooltip.Dot>\n {data[index][x]}\n </CompactHorizontalBar.Tooltip.Dot>\n </>\n ),\n };\n }}\n </CompactHorizontalBar.Tooltip>\n );\n }\n\n renderTooltip(): React.ReactNode {\n return null;\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'CompactHorizontalBar' });\n }\n\n private get categoryScale() {\n const { marginY = 40, data, y } = this.asProps;\n const { plotHeight } = this;\n\n return scaleBand()\n .range([plotHeight - marginY, marginY])\n .domain([...data].reverse().map((d) => d[y]) as any)\n .paddingInner(0.6)\n .paddingOuter(0.2);\n }\n\n private get valueScale() {\n const { marginY = 0 } = this.asProps;\n const { plotWidth } = this;\n\n const sum = [...super.flatValues.values()].reduce((acc, d) => acc + d, 0);\n\n return scaleLinear().range([marginY, plotWidth]).domain([marginY, sum]);\n }\n}\n\n/**\n * CompactHorizontalBarChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/bar-horizontal-compact/bar-horizontal-compact-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/bar-horizontal-compact/bar-horizontal-compact-code/|Examples}\n */\nexport const CompactHorizontalBarChart = createComponent<\n CompactHorizontalBarChartType,\n typeof CompactHorizontalBarChartComponent\n>(\n CompactHorizontalBarChartComponent,\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,12 +15,14 @@ class HistogramChartComponent extends AbstractChart {
|
|
|
15
15
|
xScale,
|
|
16
16
|
marginY = 30,
|
|
17
17
|
marginX = 30,
|
|
18
|
-
plotWidth,
|
|
19
|
-
plotHeight,
|
|
20
18
|
invertAxis,
|
|
21
19
|
data,
|
|
22
20
|
groupKey
|
|
23
21
|
} = this.asProps;
|
|
22
|
+
const {
|
|
23
|
+
plotWidth,
|
|
24
|
+
plotHeight
|
|
25
|
+
} = this;
|
|
24
26
|
if (xScale) {
|
|
25
27
|
return xScale;
|
|
26
28
|
}
|
|
@@ -38,11 +40,13 @@ class HistogramChartComponent extends AbstractChart {
|
|
|
38
40
|
yScale,
|
|
39
41
|
marginY = 30,
|
|
40
42
|
marginX = 30,
|
|
41
|
-
plotHeight,
|
|
42
|
-
plotWidth,
|
|
43
43
|
invertAxis,
|
|
44
44
|
data
|
|
45
45
|
} = this.asProps;
|
|
46
|
+
const {
|
|
47
|
+
plotWidth,
|
|
48
|
+
plotHeight
|
|
49
|
+
} = this;
|
|
46
50
|
let max;
|
|
47
51
|
if (this.isStack) {
|
|
48
52
|
max = data.reduce((max, item) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistogramChart.js","names":["createComponent","i18nEnhance","scaleBand","scaleLinear","scaleTime","React","Bar","minMax","HoverRect","StackBar","AbstractChart","localizedMessages","HistogramChartComponent","xScale","marginY","marginX","plotWidth","plotHeight","invertAxis","data","groupKey","asProps","testItem","range","plotPadding","Date","Number","isNaN","getMilliseconds","domain","map","item","paddingInner","paddingOuter","yScale","max","isStack","reduce","barSum","Object","values","sum","val","flatValues","Math","dataDefinitions","state","length","renderChart","highlightedLine","createElement","x","undefined","y","index","BarComponent","HorizontalBar","commonBarComponentProps","color","transparent","id","checked","_extends","key","renderTooltip","Tooltip","wMin","xIndex","yIndex","dataItem","children","getTooltipChildren","getLegendAriaLabel","getI18nText","chartType","_defineProperty","direction","showXAxis","showYAxis","showTooltip","HistogramChart"],"sources":["../../../../src/component/Chart/HistogramChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear, type ScaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { Bar, minMax, HoverRect, StackBar, type BarProps } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { HistogramChartData, HistogramChartDefaultProps, HistogramChartProps, HistogramChartType } from './HistogramChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass HistogramChartComponent extends AbstractChart<\n HistogramChartData,\n HistogramChartProps,\n typeof HistogramChartComponent.enhance,\n {},\n ChartState,\n HistogramChartDefaultProps\n> {\n static displayName = 'Chart.Histogram';\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 {\n xScale,\n marginY = 30,\n marginX = 30,\n plotWidth,\n plotHeight,\n invertAxis,\n data,\n groupKey,\n } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\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.05).paddingOuter(0.2);\n }\n\n get yScale(): ScaleLinear<any, any> {\n const {\n yScale,\n marginY = 30,\n marginX = 30,\n plotHeight,\n plotWidth,\n invertAxis,\n data,\n } = this.asProps;\n\n let max: number;\n\n if (this.isStack) {\n max = data.reduce((max, item) => {\n const barSum = Object.values(item).reduce<number>((sum, val) => {\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum + (val as number);\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n } else {\n const flatValues = super.flatValues;\n\n max = Math.max(...flatValues);\n }\n\n return (\n yScale ??\n scaleLinear()\n .range(\n invertAxis\n ? [marginY, plotWidth - this.plotPadding]\n : [plotHeight - marginX, this.plotPadding],\n )\n .domain([0, max])\n );\n }\n\n get isStack(): boolean {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.length > 1;\n }\n\n renderChart() {\n const { groupKey, invertAxis } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n if (this.isStack) {\n return (\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 };\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 );\n }\n\n const item = dataDefinitions[0];\n\n return (\n item.checked && (\n <Bar\n x={invertAxis ? item.id : groupKey}\n y={invertAxis ? groupKey : item.id}\n key={item.id}\n color={item.color}\n />\n )\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, groupKey, invertAxis } = this.asProps;\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? undefined : groupKey}\n y={invertAxis ? groupKey : undefined}\n wMin={100}\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 getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Histogram' });\n }\n}\n\n/**\n * HistogramChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/histogram-chart/histogram-chart-api/|API}\n */\nexport const HistogramChart = createComponent<\n HistogramChartType,\n typeof HistogramChartComponent\n>(HistogramChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"HistogramChart.js","names":["createComponent","i18nEnhance","scaleBand","scaleLinear","scaleTime","React","Bar","minMax","HoverRect","StackBar","AbstractChart","localizedMessages","HistogramChartComponent","xScale","marginY","marginX","invertAxis","data","groupKey","asProps","plotWidth","plotHeight","testItem","range","plotPadding","Date","Number","isNaN","getMilliseconds","domain","map","item","paddingInner","paddingOuter","yScale","max","isStack","reduce","barSum","Object","values","sum","val","flatValues","Math","dataDefinitions","state","length","renderChart","highlightedLine","createElement","x","undefined","y","index","BarComponent","HorizontalBar","commonBarComponentProps","color","transparent","id","checked","_extends","key","renderTooltip","Tooltip","wMin","xIndex","yIndex","dataItem","children","getTooltipChildren","getLegendAriaLabel","getI18nText","chartType","_defineProperty","direction","showXAxis","showYAxis","showTooltip","HistogramChart"],"sources":["../../../../src/component/Chart/HistogramChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { scaleBand, scaleLinear, type ScaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { Bar, minMax, HoverRect, StackBar, type BarProps } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type { HistogramChartData, HistogramChartDefaultProps, HistogramChartProps, HistogramChartType } from './HistogramChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass HistogramChartComponent extends AbstractChart<\n HistogramChartData,\n HistogramChartProps,\n typeof HistogramChartComponent.enhance,\n {},\n ChartState,\n HistogramChartDefaultProps\n> {\n static displayName = 'Chart.Histogram';\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 {\n xScale,\n marginY = 30,\n marginX = 30,\n invertAxis,\n data,\n groupKey,\n } = this.asProps;\n const { plotWidth, plotHeight } = this;\n\n if (xScale) {\n return xScale;\n }\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.05).paddingOuter(0.2);\n }\n\n get yScale(): ScaleLinear<any, any> {\n const {\n yScale,\n marginY = 30,\n marginX = 30,\n invertAxis,\n data,\n } = this.asProps;\n const { plotWidth, plotHeight } = this;\n\n let max: number;\n\n if (this.isStack) {\n max = data.reduce((max, item) => {\n const barSum = Object.values(item).reduce<number>((sum, val) => {\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum + (val as number);\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n } else {\n const flatValues = super.flatValues;\n\n max = Math.max(...flatValues);\n }\n\n return (\n yScale ??\n scaleLinear()\n .range(\n invertAxis\n ? [marginY, plotWidth - this.plotPadding]\n : [plotHeight - marginX, this.plotPadding],\n )\n .domain([0, max])\n );\n }\n\n get isStack(): boolean {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.length > 1;\n }\n\n renderChart() {\n const { groupKey, invertAxis } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n if (this.isStack) {\n return (\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 };\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 );\n }\n\n const item = dataDefinitions[0];\n\n return (\n item.checked && (\n <Bar\n x={invertAxis ? item.id : groupKey}\n y={invertAxis ? groupKey : item.id}\n key={item.id}\n color={item.color}\n />\n )\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, groupKey, invertAxis } = this.asProps;\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? undefined : groupKey}\n y={invertAxis ? groupKey : undefined}\n wMin={100}\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 getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Histogram' });\n }\n}\n\n/**\n * HistogramChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/histogram-chart/histogram-chart-api/|API}\n */\nexport const HistogramChart = createComponent<\n HistogramChartType,\n typeof HistogramChartComponent\n>(HistogramChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,10 +12,12 @@ class LineChartComponent extends AbstractChart {
|
|
|
12
12
|
const {
|
|
13
13
|
xScale,
|
|
14
14
|
marginY = 30,
|
|
15
|
-
plotWidth,
|
|
16
15
|
data,
|
|
17
16
|
groupKey
|
|
18
17
|
} = this.asProps;
|
|
18
|
+
const {
|
|
19
|
+
plotWidth
|
|
20
|
+
} = this;
|
|
19
21
|
if (xScale) {
|
|
20
22
|
return xScale;
|
|
21
23
|
}
|
|
@@ -30,9 +32,11 @@ class LineChartComponent extends AbstractChart {
|
|
|
30
32
|
get yScale() {
|
|
31
33
|
const {
|
|
32
34
|
yScale,
|
|
33
|
-
marginX = 30
|
|
34
|
-
plotHeight
|
|
35
|
+
marginX = 30
|
|
35
36
|
} = this.asProps;
|
|
37
|
+
const {
|
|
38
|
+
plotHeight
|
|
39
|
+
} = this;
|
|
36
40
|
if (yScale) {
|
|
37
41
|
return yScale;
|
|
38
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.js","names":["createComponent","i18nEnhance","scaleLinear","scaleTime","React","Line","minMax","HoverLine","AbstractChart","localizedMessages","LineChartComponent","xScale","marginY","
|
|
1
|
+
{"version":3,"file":"LineChart.js","names":["createComponent","i18nEnhance","scaleLinear","scaleTime","React","Line","minMax","HoverLine","AbstractChart","localizedMessages","LineChartComponent","xScale","marginY","data","groupKey","asProps","plotWidth","testItem","range","plotPadding","domain","Date","Number","isNaN","getMilliseconds","yScale","marginX","plotHeight","flatValues","max","Math","min","renderChart","curve","showDots","area","areaCurve","onClickLine","dataDefinitions","highlightedLine","state","map","item","index","checked","createElement","x","toString","y","id","key","color","transparent","onClick","Dots","display","Area","y0","y1","renderTooltip","Tooltip","wMin","xIndex","dataItem","children","getTooltipChildren","getLegendAriaLabel","getI18nText","chartType","_defineProperty","direction","showXAxis","showYAxis","showTooltip","LineChart"],"sources":["../../../../src/component/Chart/LineChart.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\nimport type { LineChartData, LineChartDefaultProps, LineChartProps, LineChartType } from './LineChart.type';\n// @ts-ignore\nimport { Line, minMax, HoverLine } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass LineChartComponent extends AbstractChart<\n LineChartData,\n LineChartProps,\n typeof LineChartComponent.enhance,\n {},\n ChartState,\n LineChartDefaultProps\n> {\n static displayName = 'Chart.Line';\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 xScale() {\n const { xScale, marginY = 30, 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 protected get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30 } = this.asProps;\n const { plotHeight } = this;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = super.flatValues;\n\n const max = Math.max(...flatValues);\n const min = Math.min(...flatValues);\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min, max]);\n }\n\n protected renderChart() {\n const { groupKey, curve, showDots, area, areaCurve, onClickLine } = this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n return dataDefinitions.map((item, index) => {\n return (\n item.checked && (\n <Line\n x={groupKey.toString()}\n y={item.id}\n key={item.id}\n color={item.color}\n transparent={highlightedLine !== -1 && highlightedLine !== index}\n curve={curve}\n onClick={onClickLine}\n >\n {showDots && <Line.Dots display />}\n {area?.[item.id] && (\n <Line.Area area={area[item.id]} y0='y0' y1='y1' curve={areaCurve} />\n )}\n </Line>\n )\n );\n });\n }\n\n protected 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: 'Line' });\n }\n}\n\n/**\n * LineChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/line-chart/line-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/line-chart/line-chart-code/|Examples}\n */\nexport const LineChart = createComponent<\n LineChartType,\n typeof LineChartComponent\n>(LineChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,11 +22,13 @@ class ScatterPlotChartComponent extends AbstractChart {
|
|
|
22
22
|
const {
|
|
23
23
|
xScale,
|
|
24
24
|
marginY = 30,
|
|
25
|
-
plotWidth,
|
|
26
25
|
data,
|
|
27
26
|
groupKey,
|
|
28
27
|
valueKey
|
|
29
28
|
} = this.asProps;
|
|
29
|
+
const {
|
|
30
|
+
plotWidth
|
|
31
|
+
} = this;
|
|
30
32
|
if (xScale) {
|
|
31
33
|
return xScale;
|
|
32
34
|
}
|
|
@@ -43,9 +45,11 @@ class ScatterPlotChartComponent extends AbstractChart {
|
|
|
43
45
|
const {
|
|
44
46
|
yScale,
|
|
45
47
|
marginX = 30,
|
|
46
|
-
plotHeight,
|
|
47
48
|
valueKey
|
|
48
49
|
} = this.asProps;
|
|
50
|
+
const {
|
|
51
|
+
plotHeight
|
|
52
|
+
} = this;
|
|
49
53
|
if (yScale) {
|
|
50
54
|
return yScale;
|
|
51
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScatterPlotChart.js","names":["createComponent","i18nEnhance","Text","scaleLinear","scaleTime","React","minMax","ScatterPlot","getScatterPlotRadius","AbstractChart","localizedMessages","ScatterPlotChartComponent","dataKeys","data","groupKey","valueKey","props","Object","keys","filter","key","xScale","marginY","plotWidth","asProps","radius","getValueScale","flatValues","testItem","range","plotPadding","domain","Date","Number","isNaN","getMilliseconds","yScale","marginX","plotHeight","max","Math","min","reduce","result","item","entries","forEach","value","add","Set","renderChart","onClickScatterItem","dataDefinitions","state","map","checked","createElement","onClick","x","y","id","color","renderTooltip","Tooltip","wMin","index","children","Fragment","Dot","tag","tooltipValueFormatter","getLegendAriaLabel","getI18nText","chartType","_defineProperty","direction","showXAxis","showYAxis","showTooltip","showLegend","ScatterPlotChart"],"sources":["../../../../src/component/Chart/ScatterPlotChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport { type ScaleLinear, scaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { minMax, ScatterPlot, getScatterPlotRadius } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type {\n ScatterPlotChartData,\n ScatterPlotChartDefaultProps,\n ScatterPlotChartProps,\n ScatterPlotChartType,\n} from './ScatterPlotChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass ScatterPlotChartComponent extends AbstractChart<\n ScatterPlotChartData,\n ScatterPlotChartProps,\n typeof ScatterPlotChartComponent.enhance,\n {},\n ChartState,\n ScatterPlotChartDefaultProps\n> {\n static displayName = 'Chart.ScatterPlot';\n public static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n showLegend: false,\n } as const;\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n protected get dataKeys(): string[] {\n const { data, groupKey, valueKey } = this.props;\n\n return Object.keys(data[0]).filter((key) => key !== groupKey && key !== valueKey);\n }\n\n protected get xScale() {\n const { xScale, marginY = 30, plotWidth, data, groupKey, valueKey } = this.asProps;\n\n if (xScale) {\n return xScale;\n }\n\n const radius = getScatterPlotRadius(valueKey) / this.getValueScale([...this.flatValues]);\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[0] - radius, domain[1] + radius], range);\n }\n\n return scaleLinear([domain[0] - radius, domain[1] + radius], range);\n }\n\n protected get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, plotHeight, valueKey } = this.asProps;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = this.flatValues;\n const radius = getScatterPlotRadius(valueKey) / this.getValueScale([...flatValues]);\n\n const max = Math.max(...flatValues) + radius;\n const min = Math.min(...flatValues) - radius;\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min, max]);\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey, valueKey } = this.asProps;\n\n const flatValues = data.reduce<Set<number>>((result, item) => {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && key !== valueKey && typeof value === 'number') {\n result.add(value);\n }\n });\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected renderChart() {\n const { groupKey, valueKey, onClickScatterItem } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.map((item) => {\n return (\n item.checked && (\n <ScatterPlot onClick={onClickScatterItem} x={groupKey} y={item.id} key={item.id} color={item.color} value={valueKey} />\n )\n );\n });\n }\n\n protected renderTooltip() {\n const { data, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return dataDefinitions\n .filter((item) => item.checked)\n .map((item) => {\n return (\n <ScatterPlot.Tooltip key={item.id} x={groupKey} y={item.id} wMin={100}>\n {({ index, x, y }: any) => {\n return {\n children: (\n <>\n <ScatterPlot.Tooltip.Dot color={item.color}>Data</ScatterPlot.Tooltip.Dot>\n <Text tag='div'>\n X axis\n {this.tooltipValueFormatter(data[index][x])}\n </Text>\n <Text tag='div'>\n Y axis\n {this.tooltipValueFormatter(data[index][y])}\n </Text>\n </>\n ),\n };\n }}\n </ScatterPlot.Tooltip>\n );\n });\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'ScatterPlot' });\n }\n}\n\n/**\n * ScatterPlotChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/scatterplot-chart/scatterplot-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/scatterplot-chart/scatterplot-chart-code/|Examples}\n */\nexport const ScatterPlotChart = createComponent<\n ScatterPlotChartType,\n typeof ScatterPlotChartComponent\n>(ScatterPlotChartComponent);\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,eAAe;AAC/C,OAAOC,WAAW,MAAM,8CAA8C;AACtE,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SAA2BC,WAAW,EAAEC,SAAS,QAAQ,UAAU;AACnE,OAAOC,KAAK,MAAM,OAAO;;AAEzB;AACA,SAASC,MAAM,EAAEC,WAAW,EAAEC,oBAAoB,QAAQ,OAAO;AAEjE,SAASC,aAAa,QAAQ,iBAAiB;AAO/C,SAASC,iBAAiB,QAAQ,oDAAoD;AAEtF,MAAMC,yBAAyB,SAASF,aAAa,CAOnD;EAYA,IAAcG,QAAQA,CAAA,EAAa;IACjC,MAAM;MAAEC,IAAI;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IAE/C,OAAOC,MAAM,CAACC,IAAI,CAACL,IAAI,CAAC,CAAC,CAAC,CAAC,CAACM,MAAM,CAAEC,GAAG,IAAKA,GAAG,KAAKN,QAAQ,IAAIM,GAAG,KAAKL,QAAQ,CAAC;EACnF;EAEA,IAAcM,MAAMA,CAAA,EAAG;IACrB,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAEC,SAAS;MAAEV,IAAI;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACS,OAAO;IAElF,IAAIH,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAMI,MAAM,GAAGjB,oBAAoB,CAACO,QAAQ,CAAC,GAAG,IAAI,CAACW,aAAa,CAAC,CAAC,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC;IACxF,MAAMC,QAAQ,GAAGf,IAAI,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC;IAClC,MAAMe,KAAK,GAAG,CAACP,OAAO,EAAEC,SAAS,GAAG,IAAI,CAACO,WAAW,CAAC;IACrD,MAAMC,MAAM,GAAGzB,MAAM,CAACO,IAAI,EAAEC,QAAQ,CAAC;IAErC,IAAIc,QAAQ,YAAYI,IAAI,IAAI,CAACC,MAAM,CAACC,KAAK,CAACN,QAAQ,CAACO,eAAe,CAAC,CAAC,CAAC,EAAE;MACzE,OAAO/B,SAAS,CAAC,CAAC2B,MAAM,CAAC,CAAC,CAAC,GAAGN,MAAM,EAAEM,MAAM,CAAC,CAAC,CAAC,GAAGN,MAAM,CAAC,EAAEI,KAAK,CAAC;IACnE;IAEA,OAAO1B,WAAW,CAAC,CAAC4B,MAAM,CAAC,CAAC,CAAC,GAAGN,MAAM,EAAEM,MAAM,CAAC,CAAC,CAAC,GAAGN,MAAM,CAAC,EAAEI,KAAK,CAAC;EACrE;EAEA,IAAcO,MAAMA,CAAA,EAA0B;IAC5C,MAAM;MAAEA,MAAM;MAAEC,OAAO,GAAG,EAAE;MAAEC,UAAU;MAAEvB;IAAS,CAAC,GAAG,IAAI,CAACS,OAAO;IAEnE,IAAIY,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,MAAMT,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC,MAAMF,MAAM,GAAGjB,oBAAoB,CAACO,QAAQ,CAAC,GAAG,IAAI,CAACW,aAAa,CAAC,CAAC,GAAGC,UAAU,CAAC,CAAC;IAEnF,MAAMY,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,GAAGZ,UAAU,CAAC,GAAGF,MAAM;IAC5C,MAAMgB,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,GAAGd,UAAU,CAAC,GAAGF,MAAM;IAE5C,OAAOtB,WAAW,CAAC,CAAC,CACjB0B,KAAK,CAAC,CAACS,UAAU,GAAGD,OAAO,EAAE,IAAI,CAACP,WAAW,CAAC,CAAC,CAC/CC,MAAM,CAAC,CAACU,GAAG,EAAEF,GAAG,CAAC,CAAC;EACvB;EAEA,IAAcZ,UAAUA,CAAA,EAAgB;IACtC,MAAM;MAAEd,IAAI;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACS,OAAO;IAEjD,MAAMG,UAAU,GAAGd,IAAI,CAAC6B,MAAM,CAAc,CAACC,MAAM,EAAEC,IAAI,KAAK;MAC5D3B,MAAM,CAAC4B,OAAO,CAACD,IAAI,CAAC,CAACE,OAAO,CAAC,CAAC,CAAC1B,GAAG,EAAE2B,KAAK,CAAC,KAAK;QAC7C,IAAI3B,GAAG,KAAKN,QAAQ,IAAIM,GAAG,KAAKL,QAAQ,IAAI,OAAOgC,KAAK,KAAK,QAAQ,EAAE;UACrEJ,MAAM,CAACK,GAAG,CAACD,KAAK,CAAC;QACnB;MACF,CAAC,CAAC;MAEF,OAAOJ,MAAM;IACf,CAAC,EAAE,IAAIM,GAAG,CAAC,CAAC,CAAC;IAEb,OAAOtB,UAAU;EACnB;EAEUuB,WAAWA,CAAA,EAAG;IACtB,MAAM;MAAEpC,QAAQ;MAAEC,QAAQ;MAAEoC;IAAmB,CAAC,GAAG,IAAI,CAAC3B,OAAO;IAC/D,MAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtC,OAAOD,eAAe,CAACE,GAAG,CAAEV,IAAI,IAAK;MACnC,OACEA,IAAI,CAACW,OAAO,iBACVlD,KAAA,CAAAmD,aAAA,CAACjD,WAAW;QAACkD,OAAO,EAAEN,kBAAmB;QAACO,CAAC,EAAE5C,QAAS;QAAC6C,CAAC,EAAEf,IAAI,CAACgB,EAAG;QAACxC,GAAG,EAAEwB,IAAI,CAACgB,EAAG;QAACC,KAAK,EAAEjB,IAAI,CAACiB,KAAM;QAACd,KAAK,EAAEhC;MAAS,CAAE,CACvH;IAEL,CAAC,CAAC;EACJ;EAEU+C,aAAaA,CAAA,EAAG;IACxB,MAAM;MAAEjD,IAAI;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACU,OAAO;IACvC,MAAM;MAAE4B;IAAgB,CAAC,GAAG,IAAI,CAACC,KAAK;IAEtC,OAAOD,eAAe,CACnBjC,MAAM,CAAEyB,IAAI,IAAKA,IAAI,CAACW,OAAO,CAAC,CAC9BD,GAAG,CAAEV,IAAI,IAAK;MACb,oBACEvC,KAAA,CAAAmD,aAAA,CAACjD,WAAW,CAACwD,OAAO;QAAC3C,GAAG,EAAEwB,IAAI,CAACgB,EAAG;QAACF,CAAC,EAAE5C,QAAS;QAAC6C,CAAC,EAAEf,IAAI,CAACgB,EAAG;QAACI,IAAI,EAAE;MAAI,GACnE,CAAC;QAAEC,KAAK;QAAEP,CAAC;QAAEC;MAAO,CAAC,KAAK;QACzB,OAAO;UACLO,QAAQ,eACN7D,KAAA,CAAAmD,aAAA,CAAAnD,KAAA,CAAA8D,QAAA,qBACE9D,KAAA,CAAAmD,aAAA,CAACjD,WAAW,CAACwD,OAAO,CAACK,GAAG;YAACP,KAAK,EAAEjB,IAAI,CAACiB;UAAM,GAAC,MAA6B,CAAC,eAC1ExD,KAAA,CAAAmD,aAAA,CAACtD,IAAI;YAACmE,GAAG,EAAC;UAAK,GAAC,QAEd,EAAC,IAAI,CAACC,qBAAqB,CAACzD,IAAI,CAACoD,KAAK,CAAC,CAACP,CAAC,CAAC,CACtC,CAAC,eACPrD,KAAA,CAAAmD,aAAA,CAACtD,IAAI;YAACmE,GAAG,EAAC;UAAK,GAAC,QAEd,EAAC,IAAI,CAACC,qBAAqB,CAACzD,IAAI,CAACoD,KAAK,CAAC,CAACN,CAAC,CAAC,CACtC,CACN;QAEN,CAAC;MACH,CACmB,CAAC;IAE1B,CAAC,CAAC;EACN;EAEUY,kBAAkBA,CAAA,EAAW;IACrC,OAAO,IAAI,CAAC/C,OAAO,CAACgD,WAAW,CAAC,gBAAgB,EAAE;MAAEC,SAAS,EAAE;IAAc,CAAC,CAAC;EACjF;AACF;;AAEA;AACA;AACA;AACA;AACA;AAJAC,eAAA,CA/HM/D,yBAAyB,iBAQR,mBAAmB;AAAA+D,eAAA,CARpC/D,yBAAyB,kBASA;EAC3BgE,SAAS,EAAE,QAAQ;EACnBC,SAAS,EAAE,IAAI;EACfC,SAAS,EAAE,IAAI;EACfC,WAAW,EAAE,IAAI;EACjBC,UAAU,EAAE;AACd,CAAC;AAAAL,eAAA,CAfG/D,yBAAyB,aAiBZ,CAACV,WAAW,CAACS,iBAAiB,CAAC,CAAC;AAmHnD,OAAO,MAAMsE,gBAAgB,GAAGhF,eAAe,CAG7CW,yBAAyB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ScatterPlotChart.js","names":["createComponent","i18nEnhance","Text","scaleLinear","scaleTime","React","minMax","ScatterPlot","getScatterPlotRadius","AbstractChart","localizedMessages","ScatterPlotChartComponent","dataKeys","data","groupKey","valueKey","props","Object","keys","filter","key","xScale","marginY","asProps","plotWidth","radius","getValueScale","flatValues","testItem","range","plotPadding","domain","Date","Number","isNaN","getMilliseconds","yScale","marginX","plotHeight","max","Math","min","reduce","result","item","entries","forEach","value","add","Set","renderChart","onClickScatterItem","dataDefinitions","state","map","checked","createElement","onClick","x","y","id","color","renderTooltip","Tooltip","wMin","index","children","Fragment","Dot","tag","tooltipValueFormatter","getLegendAriaLabel","getI18nText","chartType","_defineProperty","direction","showXAxis","showYAxis","showTooltip","showLegend","ScatterPlotChart"],"sources":["../../../../src/component/Chart/ScatterPlotChart.tsx"],"sourcesContent":["import { createComponent } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport { Text } from '@semcore/typography';\nimport { type ScaleLinear, scaleLinear, scaleTime } from 'd3-scale';\nimport React from 'react';\n\n// @ts-ignore\nimport { minMax, ScatterPlot, getScatterPlotRadius } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart } from './AbstractChart';\nimport type {\n ScatterPlotChartData,\n ScatterPlotChartDefaultProps,\n ScatterPlotChartProps,\n ScatterPlotChartType,\n} from './ScatterPlotChart.type';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\n\nclass ScatterPlotChartComponent extends AbstractChart<\n ScatterPlotChartData,\n ScatterPlotChartProps,\n typeof ScatterPlotChartComponent.enhance,\n {},\n ChartState,\n ScatterPlotChartDefaultProps\n> {\n static displayName = 'Chart.ScatterPlot';\n public static defaultProps = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n showLegend: false,\n } as const;\n\n static enhance = [i18nEnhance(localizedMessages)] as const;\n\n protected get dataKeys(): string[] {\n const { data, groupKey, valueKey } = this.props;\n\n return Object.keys(data[0]).filter((key) => key !== groupKey && key !== valueKey);\n }\n\n protected get xScale() {\n const { xScale, marginY = 30, data, groupKey, valueKey } = this.asProps;\n const { plotWidth } = this;\n\n if (xScale) {\n return xScale;\n }\n\n const radius = getScatterPlotRadius(valueKey) / this.getValueScale([...this.flatValues]);\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[0] - radius, domain[1] + radius], range);\n }\n\n return scaleLinear([domain[0] - radius, domain[1] + radius], range);\n }\n\n protected get yScale(): ScaleLinear<any, any> {\n const { yScale, marginX = 30, valueKey } = this.asProps;\n const { plotHeight } = this;\n\n if (yScale) {\n return yScale;\n }\n\n const flatValues = this.flatValues;\n const radius = getScatterPlotRadius(valueKey) / this.getValueScale([...flatValues]);\n\n const max = Math.max(...flatValues) + radius;\n const min = Math.min(...flatValues) - radius;\n\n return scaleLinear()\n .range([plotHeight - marginX, this.plotPadding])\n .domain([min, max]);\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey, valueKey } = this.asProps;\n\n const flatValues = data.reduce<Set<number>>((result, item) => {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && key !== valueKey && typeof value === 'number') {\n result.add(value);\n }\n });\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected renderChart() {\n const { groupKey, valueKey, onClickScatterItem } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.map((item) => {\n return (\n item.checked && (\n <ScatterPlot onClick={onClickScatterItem} x={groupKey} y={item.id} key={item.id} color={item.color} value={valueKey} />\n )\n );\n });\n }\n\n protected renderTooltip() {\n const { data, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n\n return dataDefinitions\n .filter((item) => item.checked)\n .map((item) => {\n return (\n <ScatterPlot.Tooltip key={item.id} x={groupKey} y={item.id} wMin={100}>\n {({ index, x, y }: any) => {\n return {\n children: (\n <>\n <ScatterPlot.Tooltip.Dot color={item.color}>Data</ScatterPlot.Tooltip.Dot>\n <Text tag='div'>\n X axis\n {this.tooltipValueFormatter(data[index][x])}\n </Text>\n <Text tag='div'>\n Y axis\n {this.tooltipValueFormatter(data[index][y])}\n </Text>\n </>\n ),\n };\n }}\n </ScatterPlot.Tooltip>\n );\n });\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'ScatterPlot' });\n }\n}\n\n/**\n * ScatterPlotChart\n *\n * {@link https://developer.semrush.com/intergalactic/data-display/scatterplot-chart/scatterplot-chart-api/|API} | {@link https://developer.semrush.com/intergalactic/data-display/scatterplot-chart/scatterplot-chart-code/|Examples}\n */\nexport const ScatterPlotChart = createComponent<\n ScatterPlotChartType,\n typeof ScatterPlotChartComponent\n>(ScatterPlotChartComponent);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,12 +8,12 @@ import i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';
|
|
|
8
8
|
import Divider from '@semcore/divider';
|
|
9
9
|
import React from 'react';
|
|
10
10
|
/*!__reshadow-styles__:"./legend-flex.shadow.css"*/
|
|
11
|
-
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".
|
|
11
|
+
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SLegendFlex_e76xg_gg_._direction_row_e76xg_gg_{align-items:flex-start;align-content:flex-start;flex-wrap:wrap;gap:8px 16px}.___SLegendFlex_e76xg_gg_._direction_column_e76xg_gg_{align-items:flex-start;flex-wrap:wrap;gap:8px}", /*__inner_css_end__*/"e76xg_gg_"),
|
|
12
12
|
/*__reshadow_css_end__*/
|
|
13
13
|
{
|
|
14
|
-
"__SLegendFlex": "
|
|
15
|
-
"_direction_row": "
|
|
16
|
-
"_direction_column": "
|
|
14
|
+
"__SLegendFlex": "___SLegendFlex_e76xg_gg_",
|
|
15
|
+
"_direction_row": "_direction_row_e76xg_gg_",
|
|
16
|
+
"_direction_column": "_direction_column_e76xg_gg_"
|
|
17
17
|
});
|
|
18
18
|
import { localizedMessages } from '../../../translations/__intergalactic-dynamic-locales';
|
|
19
19
|
import { BaseLegend } from '../BaseLegend';
|
|
@@ -14,25 +14,25 @@ import uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';
|
|
|
14
14
|
import { Text as TypographyText } from '@semcore/typography';
|
|
15
15
|
import React from 'react';
|
|
16
16
|
/*!__reshadow-styles__:"./legend-item.shadow.css"*/
|
|
17
|
-
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".
|
|
17
|
+
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SLegendItem_e035q_gg_{min-width:0;align-items:flex-start}@media (hover:hover){.___SLegendItem_e035q_gg_:hover{cursor:pointer}.___SLegendItem_e035q_gg_.__disabled_e035q_gg_:hover{cursor:default}}.___SPointShape_e035q_gg_.__color_e035q_gg_{background-color:var(--color_e035q);margin-right:8px;flex-shrink:0}.___SPointShape_e035q_gg_._shape_Circle_e035q_gg_._size_l_e035q_gg_{width:16px;height:16px;border-radius:8px;margin-top:4px}.___SPointShape_e035q_gg_._shape_Circle_e035q_gg_._size_m_e035q_gg_{width:12px;height:12px;border-radius:6px;margin-top:4px}.___SPointShape_e035q_gg_._shape_Line_e035q_gg_._size_l_e035q_gg_{width:16px;height:4px;border-radius:3px;margin-top:9px}.___SPointShape_e035q_gg_._shape_Line_e035q_gg_._size_m_e035q_gg_{width:12px;height:4px;border-radius:3px;margin-top:8px}.___SPointShape_e035q_gg_._shape_Square_e035q_gg_._size_l_e035q_gg_{width:16px;height:16px;border-radius:2px;margin-top:4px}.___SPointShape_e035q_gg_._shape_Square_e035q_gg_._size_m_e035q_gg_{width:12px;height:12px;border-radius:2px;margin-top:4px}.___SPointShape_e035q_gg_._shape_Pattern_e035q_gg_{background-color:initial;margin-right:4px}.___SIcon_e035q_gg_{line-height:0;margin-right:4px}.___SIcon_e035q_gg_._size_l_e035q_gg_{margin-top:4px}.___SIcon_e035q_gg_._size_m_e035q_gg_{margin-top:2px}.___SLabel_e035q_gg_{min-width:0}.___SAdditionalLabel_e035q_gg_._size_l_e035q_gg_,.___SCount_e035q_gg_._size_l_e035q_gg_,.___SLabel_e035q_gg_._size_l_e035q_gg_{font-size:var(--intergalactic-fs-300,16px);line-height:var(--intergalactic-lh-300,150%)}.___SAdditionalLabel_e035q_gg_._size_m_e035q_gg_,.___SCount_e035q_gg_._size_m_e035q_gg_,.___SLabel_e035q_gg_._size_m_e035q_gg_{font-size:var(--intergalactic-fs-200,14px);line-height:var(--intergalactic-lh-200,142%)}.___SAdditionalLabel_e035q_gg_,.___SCount_e035q_gg_{margin-left:4px}.___SAdditionalLabel_e035q_gg_{white-space:nowrap;display:flex;align-items:flex-start}.___SAdditionalLabel_e035q_gg_:before{content:\"\";display:inline-block;background-color:var(--intergalactic-text-secondary,#00030095);height:4px;width:4px;border-radius:2px;margin-right:4px}@media (color-gamut:p3){.___SAdditionalLabel_e035q_gg_:before{background-color:var(--intergalactic-text-secondary,oklch(.088 .026 147.7/.583))}}.___SAdditionalLabel_e035q_gg_._size_l_e035q_gg_:before{margin-top:10px}.___SAdditionalLabel_e035q_gg_._size_m_e035q_gg_:before{margin-top:8px}.___SPatternSymbol_e035q_gg_{transform:scale(.8)}", /*__inner_css_end__*/"e035q_gg_"),
|
|
18
18
|
/*__reshadow_css_end__*/
|
|
19
19
|
{
|
|
20
|
-
"__SLegendItem": "
|
|
21
|
-
"_disabled": "
|
|
22
|
-
"__SPointShape": "
|
|
23
|
-
"_color": "
|
|
24
|
-
"--color": "--
|
|
25
|
-
"_shape_Circle": "
|
|
26
|
-
"_size_l": "
|
|
27
|
-
"_size_m": "
|
|
28
|
-
"_shape_Line": "
|
|
29
|
-
"_shape_Square": "
|
|
30
|
-
"_shape_Pattern": "
|
|
31
|
-
"__SIcon": "
|
|
32
|
-
"__SLabel": "
|
|
33
|
-
"__SAdditionalLabel": "
|
|
34
|
-
"__SCount": "
|
|
35
|
-
"__SPatternSymbol": "
|
|
20
|
+
"__SLegendItem": "___SLegendItem_e035q_gg_",
|
|
21
|
+
"_disabled": "__disabled_e035q_gg_",
|
|
22
|
+
"__SPointShape": "___SPointShape_e035q_gg_",
|
|
23
|
+
"_color": "__color_e035q_gg_",
|
|
24
|
+
"--color": "--color_e035q",
|
|
25
|
+
"_shape_Circle": "_shape_Circle_e035q_gg_",
|
|
26
|
+
"_size_l": "_size_l_e035q_gg_",
|
|
27
|
+
"_size_m": "_size_m_e035q_gg_",
|
|
28
|
+
"_shape_Line": "_shape_Line_e035q_gg_",
|
|
29
|
+
"_shape_Square": "_shape_Square_e035q_gg_",
|
|
30
|
+
"_shape_Pattern": "_shape_Pattern_e035q_gg_",
|
|
31
|
+
"__SIcon": "___SIcon_e035q_gg_",
|
|
32
|
+
"__SLabel": "___SLabel_e035q_gg_",
|
|
33
|
+
"__SAdditionalLabel": "___SAdditionalLabel_e035q_gg_",
|
|
34
|
+
"__SCount": "___SCount_e035q_gg_",
|
|
35
|
+
"__SPatternSymbol": "___SPatternSymbol_e035q_gg_"
|
|
36
36
|
});
|
|
37
37
|
import { StaticShapes } from './LegendItem.type';
|
|
38
38
|
import { PatternSymbol } from '../../../Pattern';
|
|
@@ -6,14 +6,14 @@ import { Box } from '@semcore/base-components';
|
|
|
6
6
|
import { createComponent, sstyled, Root } from '@semcore/core';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
/*!__reshadow-styles__:"./legend-table.shadow.css"*/
|
|
9
|
-
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".
|
|
9
|
+
const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SLegendTable_11u3t_gg_.__columns-count_11u3t_gg_{font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;display:grid;grid-template-columns:auto .2fr;align-items:center;height:-moz-fit-content;height:fit-content;grid-column-gap:16px;grid-row-gap:8px}.___SColumnItem_11u3t_gg_._size_l_11u3t_gg_{font-size:var(--intergalactic-fs-300,16px);text-align:right}.___SColumnItem_11u3t_gg_._size_m_11u3t_gg_{font-size:var(--intergalactic-fs-200,14px);text-align:right}", /*__inner_css_end__*/"11u3t_gg_"),
|
|
10
10
|
/*__reshadow_css_end__*/
|
|
11
11
|
{
|
|
12
|
-
"__SLegendTable": "
|
|
13
|
-
"_columns-count": "__columns-
|
|
14
|
-
"__SColumnItem": "
|
|
15
|
-
"_size_l": "
|
|
16
|
-
"_size_m": "
|
|
12
|
+
"__SLegendTable": "___SLegendTable_11u3t_gg_",
|
|
13
|
+
"_columns-count": "__columns-count_11u3t_gg_",
|
|
14
|
+
"__SColumnItem": "___SColumnItem_11u3t_gg_",
|
|
15
|
+
"_size_l": "_size_l_11u3t_gg_",
|
|
16
|
+
"_size_m": "_size_m_11u3t_gg_"
|
|
17
17
|
});
|
|
18
18
|
import { BaseLegend } from '../BaseLegend';
|
|
19
19
|
import { LegendItemComponent } from '../LegendItem/LegendItem';
|