@semcore/d3-chart 17.0.0-prerelease.9 → 17.0.1
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 +20 -1
- 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 +20 -15
- package/lib/cjs/Bubble.js.map +1 -1
- 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 +19 -19
- 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 +7 -7
- package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
- package/lib/cjs/component/Chart/AbstractChart.js +9 -21
- package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.js +197 -57
- package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.type.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/bubble.shadow.css +4 -0
- package/lib/cjs/utils.js +3 -2
- package/lib/cjs/utils.js.map +1 -1
- 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 +20 -15
- package/lib/es6/Bubble.js.map +1 -1
- 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 +19 -19
- 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 +6 -5
- package/lib/es6/a11y/PlotA11yView.js.map +1 -1
- package/lib/es6/component/Chart/AbstractChart.js +9 -21
- package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.js +199 -59
- package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.type.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/bubble.shadow.css +4 -0
- package/lib/es6/utils.js +3 -2
- package/lib/es6/utils.js.map +1 -1
- package/lib/esm/AnimatedClipPath.mjs +1 -1
- package/lib/esm/Area.mjs +14 -14
- package/lib/esm/Axis.mjs +21 -23
- package/lib/esm/Bar.mjs +18 -18
- package/lib/esm/Bubble.mjs +24 -20
- package/lib/esm/CompactHorizontalBar.mjs +21 -20
- package/lib/esm/Donut.mjs +15 -13
- package/lib/esm/Dots.mjs +10 -10
- package/lib/esm/HorizontalBar.mjs +18 -18
- package/lib/esm/Hover.mjs +6 -6
- package/lib/esm/Line.mjs +12 -12
- package/lib/esm/Pattern.mjs +6 -7
- package/lib/esm/Plot.mjs +6 -7
- package/lib/esm/Radar.mjs +27 -29
- package/lib/esm/RadialTree.mjs +30 -75
- package/lib/esm/Reference.mjs +13 -13
- package/lib/esm/ResponsiveContainer.mjs +3 -5
- package/lib/esm/ScatterPlot.mjs +12 -11
- package/lib/esm/StackBar.mjs +2 -2
- package/lib/esm/StackedArea.mjs +2 -2
- package/lib/esm/Tooltip.mjs +15 -17
- package/lib/esm/Venn.mjs +13 -12
- package/lib/esm/a11y/DataAccessibilityTable.mjs +2 -4
- package/lib/esm/a11y/PlotA11yModule.mjs +5 -4
- package/lib/esm/a11y/PlotA11yView.mjs +14 -21
- package/lib/esm/a11y/focus.mjs +2 -2
- package/lib/esm/a11y/hints.mjs +3 -3
- package/lib/esm/a11y/insights.mjs +15 -20
- package/lib/esm/a11y/intl.mjs +1 -1
- package/lib/esm/a11y/locale.mjs +1 -2
- package/lib/esm/a11y/serialize.mjs +17 -17
- package/lib/esm/component/Chart/AbstractChart.mjs +25 -38
- package/lib/esm/component/Chart/AreaChart.mjs +5 -4
- package/lib/esm/component/Chart/BarChart.mjs +4 -3
- package/lib/esm/component/Chart/BubbleChart.mjs +8 -8
- package/lib/esm/component/Chart/CigaretteChart.mjs +204 -64
- package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +2 -1
- package/lib/esm/component/Chart/DonutChart.mjs +3 -2
- package/lib/esm/component/Chart/HistogramChart.mjs +5 -4
- package/lib/esm/component/Chart/LineChart.mjs +5 -4
- package/lib/esm/component/Chart/RadarChart.mjs +4 -5
- package/lib/esm/component/Chart/ScatterPlotChart.mjs +3 -2
- package/lib/esm/component/Chart/VennChart.mjs +3 -3
- package/lib/esm/component/ChartLegend/BaseLegend.mjs +9 -14
- package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +6 -6
- package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +19 -19
- package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +9 -10
- package/lib/esm/component/ChartLegend/index.mjs +2 -0
- package/lib/esm/component/Cigarette/Cigarette.mjs +1 -2
- package/lib/esm/component/StackGroupBar/StackGroupBar.mjs +2 -3
- package/lib/esm/createElement.mjs +1 -1
- package/lib/esm/index.mjs +1 -0
- package/lib/esm/style/bubble.shadow.css +4 -0
- package/lib/esm/utils.mjs +3 -3
- package/lib/types/a11y/PlotA11yView.d.ts +1 -1
- package/lib/types/component/Chart/AbstractChart.d.ts +4 -7
- package/lib/types/component/Chart/CigaretteChart.type.d.ts +7 -4
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CigaretteChart.js","names":["Box","Flex","createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","uniqueIDEnhancement","Divider","Text","scaleBand","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","interpolateValue","scaleToBand","Cigarette","wMin","CigaretteChartComponent","constructor","args","_defineProperty","resolveColor","id","index","props","colorMap","getDefaultDataDefinitions","dataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","xScale","invertAxis","asProps","valueScale","categoryScale","yScale","renderChart","data","uid","duration","patterns","plotHeight","plotWidth","onClick","highlightedLine","state","offset","createElement","Fragment","reverse","item","value","checked","absWidth","Math","abs","max","domain","height","bandwidth","width","y","x","r","key","dataKey","hide","length","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","hideHoverLine","tooltipProps","_ref4","xIndex","yIndex","showPercentColumn","totalValue","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","showTotalInTooltip","total","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","_assignProps3","dataHints","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","selectedData","result","Map","forEach","set","range","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 uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Text } from '@semcore/typography';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\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 { interpolateValue, scaleToBand } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst wMin = 2;\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: 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 };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n protected override plotPadding = 0;\n\n private offset = 0;\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 get xScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.valueScale : this.categoryScale;\n }\n\n get yScale() {\n const { invertAxis } = this.asProps;\n\n return invertAxis ? this.categoryScale : this.valueScale;\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 return (\n <>\n {(invertAxis ? dataDefinitions : [...dataDefinitions].reverse()).map((item, index) => {\n const value = data[item.id];\n\n if (!item.checked || value === interpolateValue || value === null) {\n return null;\n }\n\n const absWidth = Math.abs(\n this.valueScale(value) -\n Math.max(this.valueScale(this.valueScale.domain()[0]), this.valueScale(0)),\n );\n const height = scaleToBand(this.categoryScale).bandwidth() - 4;\n const width = value === 0 ? 0 : Math.max(absWidth, wMin * 2) - wMin;\n const y = 2;\n const x = index === 0 ? 0 : this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset = this.offset + width + wMin;\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 } = 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 >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue(data) !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return null;\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 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(dataItem);\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 } =\n 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 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 >\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 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 >\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 selectedData() {\n const { data } = this.asProps;\n const { dataDefinitions } = this.state;\n\n const result = new Map<string, number>();\n\n dataDefinitions.forEach((dataDefItem) => {\n const value = data[dataDefItem.id];\n if (dataDefItem.checked && value !== interpolateValue) {\n result.set(dataDefItem.id, value);\n }\n });\n\n return result;\n }\n\n private get categoryScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n const range = invertAxis ? [plotHeight, 0] : [0, plotWidth];\n\n return scaleBand<{}>([0], range);\n }\n\n private get valueScale() {\n const { plotWidth, plotHeight, invertAxis } = this.asProps;\n\n let max = 0;\n\n this.selectedData.forEach((value) => {\n max = max + value;\n });\n\n return scaleLinear()\n .range(invertAxis ? [0, plotWidth] : [plotHeight, 0])\n .domain([0, max]);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(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","prevState","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, 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 typeof CigaretteChartComponent.defaultProps,\n CigaretteChartState\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: 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 };\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((prevState) => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState((prevState) => ({ 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\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":";;;;;AAAA,SAASA,GAAG,EAAEC,IAAI,QAAQ,0BAA0B;AACpD,SAASC,eAAe,EAAEC,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC9D,OAAOC,WAAW,MAAM,8CAA8C;AACtE,OAAOC,mBAAmB,MAAM,sDAAsD;AACtF,OAAOC,OAAO,MAAM,oCAAoC;AACxD,OAAOC,mBAAmB,MAAM,kCAAkC;AAClE,OAAOC,OAAO,MAAM,kBAAkB;AACtC,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SAASC,cAAc,EAAEC,WAAW,QAAmB,UAAU;AACjE,OAAOC,KAAK,MAAM,OAAO;AAGzB;AACA,SAASC,SAAS,EAAEC,IAAI,QAAQ,OAAO;AAEvC,SAASC,aAAa,EAAEC,WAAW,QAAQ,iBAAiB;AAE5D;AACA,OAAOC,gBAAgB,MAAM,wBAAwB;AACrD,SAASC,iBAAiB,QAAQ,oDAAoD;AACtF,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,aAAa;AAE5D,OAAOC,SAAS,MAAM,wBAAwB;AAE9C,MAAMC,yBAAyB,GAAG,CAAC;AACnC,MAAMC,WAAW,GAAG,CAAC;AASrB,MAAMC,uBAAuB,SAAST,aAAa,CAMjD;EA2BAU,WAAWA,CAACC,KAA0B,EAAE;IACtC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,+BASGf,KAAK,CAACgB,SAAS,CAAa,CAAC;IAAAD,eAAA,sBAEd,CAAC;IAAAA,eAAA,iBAEjB,CAAC;IAAAA,eAAA,0BAwCQrB,OAAO,CAAEuB,KAAoC,IAAK;MAC1E,IAAI,CAAC,IAAI,CAACC,OAAO,CAACC,OAAO,EAAE;MAE3B,MAAM,CAACC,EAAE,EAAEC,EAAE,CAAC,GAAGd,YAAY,CAACU,KAAK,EAAE,IAAI,CAACC,OAAO,CAACC,OAAO,CAAC;MAE1D,IAAI,CAACG,QAAQ,CAAEC,SAAS,KAAM;QAAEH,EAAE;QAAEC;MAAG,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAAAN,eAAA,2BAEyBrB,OAAO,CAAC,MAAM;MACvC,IAAI,CAAC4B,QAAQ,CAAEC,SAAS,KAAM;QAAEH,EAAE,EAAE,IAAI;QAAEC,EAAE,EAAE;MAAK,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IA7DA,IAAI,CAACG,KAAK,GAAG;MACX,GAAG,IAAI,CAACA,KAAK;MACbJ,EAAE,EAAE,IAAI;MACRC,EAAE,EAAE;IACN,CAAC;EACH;EAQA,IAAYI,qBAAqBA,CAAA,EAAG;IAClC,MAAM;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAACF,KAAK;IAEtC,OAAOE,eAAe,CAACC,MAAM,CAAC,CAAC;MAAEC;IAAQ,CAAC,KAAKA,OAAO,CAAC;EACzD;EAEA,IAAYC,6BAA6BA,CAAA,EAAG;IAC1C,MAAM;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACC,OAAO;IAE7B,OAAO,IAAI,CAACN,qBAAqB,CAACE,MAAM,CAAC,CAAC;MAAEK;IAAG,CAAC,KAAK;MACnD,MAAMC,SAAS,GAAGH,IAAI,CAACE,EAAE,CAAC;MAE1B,OAAO,OAAOC,SAAS,KAAK,QAAQ,IAAIA,SAAS,GAAG,CAAC;IACvD,CAAC,CAAC;EACJ;EAEmBC,YAAYA,CAACF,EAAU,EAAEG,KAAa,EAAE;IACzD,OAAO,IAAI,CAACrB,KAAK,CAACsB,QAAQ,GAAGJ,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAGG,KAAK,IAAI;EAC3D;EAEmBE,yBAAyBA,CAAA,EAE1C;IACA,MAAMX,eAAe,GAAG,KAAK,CAACW,yBAAyB,CAAC,CAAC;IAEzD,OAAOX,eAAe,CAACY,GAAG,CAAEC,OAAO,IAAK;MACtCA,OAAO,CAACC,OAAO,GAAGD,OAAO,CAACC,OAAO,CAACC,KAAK,CAAC,CAAC,CAAC;MAC1C,OAAOF,OAAO;IAChB,CAAC,CAAC;EACJ;EAEmBG,kBAAkBA,CAAA,EAAG;IACtC,OAAO;MACLC,UAAU,EAAE,OAAgB;MAC5BC,CAAC,EAAE;IACL,CAAC;EACH;EAcmBC,UAAUA,CAAA,EAAG;IAC9B,MAAM;MAAEf;IAAK,CAAC,GAAG,IAAI,CAACC,OAAO;IAE7B,OAAO,IAAI,CAACN,qBAAqB,CAACqB,MAAM,CAAC,CAACC,GAAG,EAAE;MAAEf;IAAG,CAAC,KAAK;MACxD,MAAMC,SAAS,GAAGH,IAAI,CAACE,EAAE,CAAC;MAE1B,IAAI,OAAOC,SAAS,KAAK,QAAQ,EAAE;QACjCc,GAAG,IAAId,SAAS;MAClB;MAEA,OAAOc,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;EACP;EAEQC,qBAAqBA,CAAA,EAAG;IAC9B,MAAM;MAAEC,SAAS;MAAEC,UAAU;MAAEpB,IAAI;MAAEqB,UAAU;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAACrB,OAAO;IAEjF,MAAML,eAAe,GAAGyB,UAAU,GAC9B,IAAI,CAAC1B,qBAAqB,GAC1B,CAAC,GAAG,IAAI,CAACA,qBAAqB,CAAC,CAAC4B,OAAO,CAAC,CAAC;IAE7C,MAAMC,KAAK,GAAG,IAAI,CAACzB,6BAA6B,CAAC0B,MAAM;IACvD,MAAMC,aAAa,GAAG7C,WAAW,GAAG8C,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,KAAK,GAAG,CAAC,CAAC;IAC1D,MAAMK,cAAc,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAACP,UAAU,GAAGF,SAAS,GAAGC,UAAU,IAAIM,aAAa,CAAC;IAEzF,MAAMX,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC,CAAC;IAEpC,MAAMe,uBAAuB,GAAGlC,eAAe,CAACY,GAAG,CAAC,CAAC;MAAEN;IAAG,CAAC,KAAK;MAC9D,IAAIa,UAAU,KAAK,CAAC,EAAE;QACpB,OAAO,CAAC;MACV;MAEA,MAAMZ,SAAS,GAAGH,IAAI,CAACE,EAAE,CAAC;MAE1B,IAAI,OAAOC,SAAS,KAAK,QAAQ,EAAE,OAAO,CAAC;MAE3C,OAAQA,SAAS,GAAGY,UAAU,GAAIc,cAAc;IAClD,CAAC,CAAC;IAEF,MAAME,MAAM,GAAGnC,eAAe,CAACY,GAAG,CAAC,CAACwB,EAAE,EAAE3B,KAAK,MAAM;MACjD,GAAG2B,EAAE;MACLC,KAAK,EAAEjC,IAAI,CAACgC,EAAE,CAAC9B,EAAE,CAAC;MAClBgC,SAAS,EAAEJ,uBAAuB,CAACzB,KAAK,CAAC;MACzC8B,WAAW,EAAEL,uBAAuB,CAACzB,KAAK,CAAC;MAC3C+B,YAAY,EAAE;IAChB,CAAC,CAAC,CAAC;IAEH,MAAMC,UAAU,GAAGN,MAAM,CAAClC,MAAM,CAAEyC,CAAC,IAAK;MACtC,MAAM;QAAEL,KAAK;QAAEC;MAAU,CAAC,GAAGI,CAAC;MAE9B,IAAI,OAAOL,KAAK,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3C,OAAOA,KAAK,GAAG,CAAC,IAAIC,SAAS,GAAGZ,eAAe;IACjD,CAAC,CAAC;IAEF,IAAIe,UAAU,CAACZ,MAAM,KAAK,CAAC,EAAE,OAAOM,MAAM;IAE1C,IAAIQ,WAAW,GAAG,CAAC;IAEnB,KAAK,MAAMC,SAAS,IAAIH,UAAU,EAAE;MAClCE,WAAW,IAAIjB,eAAe,GAAGkB,SAAS,CAACN,SAAS;MACpDM,SAAS,CAACL,WAAW,GAAGb,eAAe;MACvCkB,SAAS,CAACJ,YAAY,GAAG,IAAI;IAC/B;IAEA,MAAMK,MAAM,GAAGV,MAAM,CAAClC,MAAM,CAAEyC,CAAC,IAAK,CAACA,CAAC,CAACF,YAAY,IAAIE,CAAC,CAACJ,SAAS,GAAGZ,eAAe,CAAC;IACrF,MAAMoB,aAAa,GAAGD,MAAM,CAACzB,MAAM,CACjC,CAAC2B,CAAC,EAAEC,CAAC,KAAKD,CAAC,IAAIC,CAAC,CAACV,SAAS,GAAGZ,eAAe,CAAC,EAC7C,CACF,CAAC;IAED,KAAK,MAAMuB,KAAK,IAAIJ,MAAM,EAAE;MAC1B,MAAMK,SAAS,GAAGD,KAAK,CAACX,SAAS,GAAGZ,eAAe;MACnD,MAAMyB,KAAK,GAAGD,SAAS,GAAGJ,aAAa;MACvC,MAAMM,KAAK,GAAGD,KAAK,GAAGR,WAAW;MACjCM,KAAK,CAACV,WAAW,GAAGU,KAAK,CAACX,SAAS,GAAGc,KAAK;IAC7C;IAEA,OAAOjB,MAAM;EACf;EAEA,IAAIkB,MAAMA,CAAA,EAAG;IACX,MAAM;MAAE9B;IAAU,CAAC,GAAG,IAAI,CAAClB,OAAO;IAElC,OAAOhC,WAAW,CAAC,CAAC,CAAC,EAAEkD,SAAS,CAAC,CAAC;EACpC;EAEA,IAAI+B,MAAMA,CAAA,EAAG;IACX,MAAM;MAAE9B;IAAW,CAAC,GAAG,IAAI,CAACnB,OAAO;IAEnC,OAAOhC,WAAW,CAAC,CAACmD,UAAU,EAAE,CAAC,CAAC,CAAC;EACrC;EAEA+B,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAE9B,UAAU;MAAErB,IAAI;MAAEoD,GAAG;MAAEC,QAAQ;MAAEC,QAAQ;MAAElC,UAAU;MAAED,SAAS;MAAEoC;IAAQ,CAAC,GACjF,IAAI,CAACtD,OAAO;IACd,MAAM;MAAEL,eAAe;MAAE4D;IAAgB,CAAC,GAAG,IAAI,CAAC9D,KAAK;IAEvD,IAAI,CAAC+D,MAAM,GAAG,CAAC;IAEf,MAAMC,KAAK,GAAG,IAAI,CAACxC,qBAAqB,CAAC,CAAC;IAE1C,oBACEhD,KAAA,CAAAyF,aAAA,CAAAzF,KAAA,CAAA0F,QAAA,QACGF,KAAK,CAAClD,GAAG,CAAC,CAACqD,IAAI,EAAExD,KAAK,KAAK;MAC1B,MAAM;QAAE8B,WAAW;QAAEjC;MAAG,CAAC,GAAG2D,IAAI;MAChC,MAAM5B,KAAK,GAAGjC,IAAI,CAACE,EAAE,CAAC;MAEtB,IAAI+B,KAAK,KAAKvD,gBAAgB,IAAIuD,KAAK,KAAK,IAAI,EAAE;QAChD,OAAO,IAAI;MACb;MAEA,MAAM6B,MAAM,GAAGzC,UAAU,GAAGD,UAAU,GAAGvC,WAAW,GAAG,CAAC,GAAGsC,SAAS,GAAGtC,WAAW,GAAG,CAAC;MACtF,MAAMkF,KAAK,GAAG5B,WAAW;MACzB,MAAM6B,CAAC,GAAGnF,WAAW;MACrB,MAAMoF,CAAC,GAAG,IAAI,CAACR,MAAM;MACrB,MAAMnB,CAAC,GAAGwB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;MAE7B,IAAI,CAACL,MAAM,IAAItB,WAAW;MAE1B,IAAI9B,KAAK,GAAGqD,KAAK,CAACjC,MAAM,GAAG,CAAC,EAAE;QAC5B,IAAI,CAACgC,MAAM,IAAI5E,WAAW;MAC5B;MAEA,oBACEX,KAAA,CAAAyF,aAAA,CAAChF,SAAS;QACRuF,GAAG,EAAEL,IAAI,CAAC3D,EAAG;QACbiE,OAAO,EAAEN,IAAI,CAAC3D,EAAG;QACjBG,KAAK,EAAEA,KAAM;QACb2D,CAAC,EAAE3C,UAAU,GAAG2C,CAAC,GAAGC,CAAE;QACtBA,CAAC,EAAE5C,UAAU,GAAG4C,CAAC,GAAGD,CAAE;QACtBD,KAAK,EAAE1C,UAAU,GAAG0C,KAAK,GAAGD,MAAO;QACnCA,MAAM,EAAEzC,UAAU,GAAGyC,MAAM,GAAGC,KAAM;QACpCX,GAAG,EAAEA,GAAI;QACTgB,IAAI,EAAE,CAACP,IAAI,CAAC/D,OAAQ;QACpBuD,QAAQ,EAAEA,QAAS;QACnBf,CAAC,EAAEjC,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAKT,eAAe,CAAC6B,MAAM,GAAG,CAAC,GAAGa,CAAC,GAAG,CAAE;QAC/D+B,KAAK,EAAER,IAAI,CAACQ,KAAM;QAClBf,QAAQ,EAAEA,QAAS;QACnBgB,SAAS,EAAEjD,UAAU,GAAG,YAAY,GAAG,UAAW;QAClDkC,OAAO,EAAEA,OAAQ;QACjBgB,OAAO,EACLf,eAAe,KAAKnD,KAAK,GAAG,IAAI,GAAGmD,eAAe,KAAK,CAAC,CAAC,GAAGgB,SAAS,GAAG;MACzE,CACF,CAAC;IAEN,CAAC,CAAC,eAEFtG,KAAA,CAAAyF,aAAA,CAACpF,gBAAgB;MACf,mBAAW;MACX8E,QAAQ,EAAEA,QAAS;MACnBnD,EAAE,EAAEkD,GAAI;MACRa,CAAC,EAAC,GAAG;MACLD,CAAC,EAAC,GAAG;MACLD,KAAK,EAAE1C,UAAU,GAAG,CAAC,GAAGF,SAAU;MAClC2C,MAAM,EAAEzC,UAAU,GAAGD,UAAU,GAAG;IAAE,CACrC,CACD,CAAC;EAEP;EAEAqD,aAAaA,CAAA,EAAoB;IAAA,IAAAC,IAAA,QAAAzE,OAAA;IAC/B,MAAM;MAAED,IAAI;MAAEqB,UAAU;MAAEsD,YAAY;MAAEC,eAAe;MAAEC,yBAAyB;MAAEC,MAAM;MAAEC;IAAY,CAAC,GACvG,IAAI,CAAC9E,OAAO;IACd,MAAM;MAAEL,eAAe;MAAEN,EAAE;MAAEC;IAAG,CAAC,GAAG,IAAI,CAACG,KAAK;IAC9C,MAAMsF,uBAAuB,GA+CgB3H,GAAG;IA7ChD,IAAI,CAAC0H,WAAW,EAAE;MAChB,OAAO,IAAI;IACb;IAEA,oBACE7G,KAAA,CAAAyF,aAAA,CAACxF,SAAS,CAAC8G,OAAO;MAChBhB,CAAC,EAAE5C,UAAU,GAAG,EAAE,GAAGmD,SAAU;MAC/BR,CAAC,EAAE3C,UAAU,GAAGmD,SAAS,GAAG,EAAG;MAC/BU,IAAI,EAAE,GAAI;MACVC,aAAa,EAAE,IAAK;MACpBC,MAAM,EAAE9F,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC+F,WAAW,CAAC/F,EAAE,CAAC,GAAGkF,SAAU;MACvDc,MAAM,EAAE/F,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC8F,WAAW,CAAC9F,EAAE,CAAC,GAAGiF;IAAU,GAErDe,YAAiB,IAAK;MAAA,IAAAC,KAAA;MACtB,MAAMrB,OAAO,GAAG9C,UAAU,GAAGkE,YAAY,CAACH,MAAM,GAAGG,YAAY,CAACD,MAAM;MACtE,MAAMG,iBAAiB,GAAGZ,yBAAyB,IAAI,IAAI,CAAC9D,UAAU,CAAC,CAAC,KAAK,CAAC;MAE9E,IAAI6D,eAAe,KAAK,QAAQ,EAAE;QAAA,IAAAc,KAAA;QAChC,MAAM7B,IAAI,GAAGjE,eAAe,CAAC+F,IAAI,CAAEC,WAAW,IAAKA,WAAW,CAAC1F,EAAE,KAAKiE,OAAO,CAAC;QAC9E,IAAI,CAACN,IAAI,EAAE;UACT,OAAO;YACLgC,QAAQ,EAAE;UACZ,CAAC;QACH;QAEA,OAAO;UACLA,QAAQ,GAAAH,KAAA,GAAEjI,OAAO,CAACqH,MAAM,CAAC,eACvB5G,KAAA,CAAAyF,aAAA,CAACqB,uBAAuB,EAAAU,KAAA,CAAAI,EAAA;YAAA,GAAAC,YAAA;cAAA,gBAA4BN,iBAAiB,GAAG,GAAG,GAAG,GAAG;cAAA,kBAAkB,CAAC,MAAM;YAAC,GAAAf,IAAA;UAAA,iBACzGxG,KAAA,CAAAyF,aAAA,CAACxF,SAAS,CAAC8G,OAAO,CAACe,GAAG;YAACC,EAAE,EAAE,CAAE;YAAC5B,KAAK,EAAER,IAAI,CAACQ;UAAM,GAC7CR,IAAI,CAACqC,KACe,CAAC,EACtBT,iBAAiB,iBAAIvH,KAAA,CAAAyF,aAAA,CAAC5F,IAAI,EAAA2H,KAAA,CAAAI,EAAA;YAAA,aAAW,KAAK;YAAA,SAAO;UAAgB,IAAE,IAAI,CAACK,YAAY,CAACnG,IAAI,EAAE6D,IAAI,CAAC3D,EAAE,CAAQ,CAAC,eAC7GhC,KAAA,CAAAyF,aAAA,CAAC5F,IAAI,EAAA2H,KAAA,CAAAI,EAAA;YAAA,aAAW,KAAK;YAAA;UAAA,IAAO,IAAI,CAACM,qBAAqB,CAACpG,IAAI,CAAC6D,IAAI,CAAC3D,EAAE,CAAC,CAAQ,CACrD,CAAC;QAE9B,CAAC;MACH;MAEA,OAAO;QACL2F,QAAQ,GAAAL,KAAA,GAAE/H,OAAO,CAACqH,MAAM,CAAC,eACvB5G,KAAA,CAAAyF,aAAA,CAACrG,IAAI,EAAAkI,KAAA,CAAAM,EAAA;UAAA,aAAW;QAAQ,IACrBnB,YAAY,iBACXzG,KAAA,CAAAyF,aAAA,CAACxF,SAAS,CAAC8G,OAAO,CAACoB,KAAK,QAAC,oBAA2C,CACrE,eAEDnI,KAAA,CAAAyF,aAAA,CAACqB,uBAAuB,EAAAQ,KAAA,CAAAM,EAAA;UAAA,GAAAQ,aAAA;YAAA,gBAA4Bb,iBAAiB,GAAG,GAAG,GAAG,GAAG;YAAA,kBAAkB,CAAC,MAAM;UAAC,GAAAf,IAAA;QAAA,IACxG9E,eAAe,CAACY,GAAG,CAAEqD,IAAI,IAAK;UAC7B,MAAM0C,KAAK,GAAG;YAAEC,OAAO,EAAE3C,IAAI,CAAC3D,EAAE,KAAKiE,OAAO,GAAG,CAAC,GAAG;UAAI,CAAC;UACxD,OACEN,IAAI,CAAC/D,OAAO,iBACV5B,KAAA,CAAAyF,aAAA,CAACzF,KAAK,CAAC0F,QAAQ;YAACM,GAAG,EAAEL,IAAI,CAAC3D;UAAG,gBAC3BhC,KAAA,CAAAyF,aAAA,CAACxF,SAAS,CAAC8G,OAAO,CAACe,GAAG;YAACC,EAAE,EAAE,CAAE;YAAC5B,KAAK,EAAER,IAAI,CAACQ,KAAM;YAACkC,KAAK,EAAEA;UAAM,GAC3D1C,IAAI,CAACqC,KACe,CAAC,EACtBT,iBAAiB,iBAAIvH,KAAA,CAAAyF,aAAA,CAAC5F,IAAI;YAAC0I,SAAS,EAAC,KAAK;YAACpC,KAAK,EAAC,gBAAgB;YAACkC,KAAK,EAAEA;UAAM,GAAE,IAAI,CAACJ,YAAY,CAACnG,IAAI,EAAE6D,IAAI,CAAC3D,EAAE,CAAQ,CAAC,eAC3HhC,KAAA,CAAAyF,aAAA,CAAC5F,IAAI;YAAC0I,SAAS,EAAC,KAAK;YAACC,IAAI;YAACH,KAAK,EAAEA;UAAM,GAAE,IAAI,CAACH,qBAAqB,CAACpG,IAAI,CAAC6D,IAAI,CAAC3D,EAAE,CAAC,CAAQ,CAC5E,CACjB;QAEL,CAAC,CAAC,EAED,IAAI,CAACyG,sBAAsB,CAAC3G,IAAI,CACV,CACrB,CAAC;MAEX,CAAC;IACH,CACiB,CAAC;EAExB;EAEUmG,YAAYA,CAACnG,IAAgB,EAAEkE,GAAW,EAAU;IAC5D,MAAM;MAAE0C;IAAiB,CAAC,GAAG,IAAI,CAAC3G,OAAO;IAEzC,MAAM4G,KAAK,GAAG,IAAI,CAAC9F,UAAU,CAAC,CAAC;IAE/B,MAAMkB,KAAK,GAAGjC,IAAI,CAACkE,GAAG,CAAC;IAEvB,IAAI,OAAOjC,KAAK,KAAK,QAAQ,IAAI4E,KAAK,KAAK,CAAC,EAAE;MAC5C,MAAMC,UAAU,GAAI,GAAG,GAAG7E,KAAK,GAAI4E,KAAK;MACxC,MAAME,gBAAgB,GAAGH,gBAAgB,GAAGA,gBAAgB,CAACE,UAAU,CAAC,GAAGnF,IAAI,CAACqF,KAAK,CAACF,UAAU,CAAC;MAEjG,OAAO,GAAGC,gBAAgB,GAAG;IAC/B;IAEA,IAAI9E,KAAK,KAAK,IAAI,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,OAAO3D,WAAW;EACpB;EAEmBqI,sBAAsBA,CAAuBM,QAAW,EAAE;IAC3E,MAAM;MAAEC,kBAAkB;MAAErC;IAA0B,CAAC,GAAG,IAAI,CAAC5E,OAAO;IAEtE,IAAI,CAACiH,kBAAkB,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,MAAML,KAAK,GAAG,IAAI,CAAC9F,UAAU,CAAC,CAAC;IAE/B,oBACE7C,KAAA,CAAAyF,aAAA,CAAAzF,KAAA,CAAA0F,QAAA,qBACE1F,KAAA,CAAAyF,aAAA,CAACtG,GAAG;MAAC8J,EAAE,EAAE,CAAE;MAAClB,EAAE,EAAE;IAAE,GAAC,OAAU,CAAC,EAC5BpB,yBAAyB,IAAIgC,KAAK,KAAK,CAAC,iBAAI3I,KAAA,CAAAyF,aAAA,CAAC5F,IAAI;MAACoJ,EAAE,EAAE,CAAE;MAACV,SAAS,EAAC,KAAK;MAACpC,KAAK,EAAC;IAAgB,GAAE+C,MAAM,CAACC,KAAK,CAACR,KAAK,CAAC,GAAGvI,WAAW,GAAG,MAAa,CAAC,eACrJJ,KAAA,CAAAyF,aAAA,CAAC5F,IAAI;MAACoJ,EAAE,EAAE,CAAE;MAACV,SAAS,EAAC,KAAK;MAACC,IAAI;IAAA,GAAEU,MAAM,CAACC,KAAK,CAACR,KAAK,CAAC,GAAGvI,WAAW,GAAGuI,KAAY,CACnF,CAAC;EAEP;EAEAS,YAAYA,CAAA,EAAG;IACb,OAAO,IAAI,CAACrH,OAAO,CAACsH,MAAM,IAAI,IAAI;EACpC;EAESC,MAAMA,CAAA,EAAG;IAAA,IAAAC,KAAA,QAAAxH,OAAA;MAAAyH,KAAA;IAChB,MAAMC,MAAM,GAgCMrK,IAAI;IA/BtB,MAAM;MAAEwH,MAAM;MAAE3D,SAAS;MAAEC,UAAU;MAAEpB,IAAI;MAAEsD,QAAQ;MAAEjC,UAAU;MAAEuG;IAAkB,CAAC,GAAG,IAAI,CAAC3H,OAAO;IAErG,MAAMsH,MAAM,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IAElC,IAAIjG,UAAU,EAAE;MAAA,IAAAwG,KAAA;MACd,OAAAA,KAAA,GAAOpK,OAAO,CAACqH,MAAM,CAAC,eACpB5G,KAAA,CAAAyF,aAAA,CAACgE,MAAM,EAAAE,KAAA,CAAA/B,EAAA;QAAA,GAAAgC,aAAA;UAAA,OAAoB,CAAC;UAAA,aAAY,QAAQ;UAAA,kBAAiB,CAAC,SAAS,EAAE,MAAM;QAAC,GAAAL,KAAA;MAAA,iBAClFvJ,KAAA,CAAAyF,aAAA,CAACrG,IAAI,EAAAuK,KAAA,CAAA/B,EAAA;QAAA,aAAW;MAAQ,IACrByB,MAAM,eACPrJ,KAAA,CAAAyF,aAAA,CAACvF,IAAI,EAAAyJ,KAAA,CAAA/B,EAAA;QAAA,OACE,IAAI,CAAC1G,OAAO;QAAA,QACXY,IAAI;QAAA,SACH,CAAC,IAAI,CAACiD,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;QAAA,SAC1B/B,SAAS;QAAA,UACRC,UAAU;QAAA,aACP,IAAI,CAAC2G,SAAS;QAAA,YACfzE,QAAQ;QAAA,qBACCsE,iBAAiB;QAAA,eACvB,IAAI,CAACI,eAAe;QAAA,gBACnB,IAAI,CAACC;MAAgB,IAElC,IAAI,CAACxD,aAAa,CAAC,CAAC,EACpB,IAAI,CAACtB,WAAW,CAAC,CACd,CACF,CAAC,EACN,IAAI,CAAC+E,YAAY,CAAC,CACb,CAAC;IAEb;IAEA,OAAAR,KAAA,GAAOjK,OAAO,CAACqH,MAAM,CAAC,eACpB5G,KAAA,CAAAyF,aAAA,CAACgE,MAAM,EAAAD,KAAA,CAAA5B,EAAA;MAAA,GAAAqC,aAAA;QAAA,OAAoB,CAAC;QAAA,kBAAkB,CAAC,SAAS,EAAE,MAAM;MAAC,GAAAV,KAAA;IAAA,iBAC/DvJ,KAAA,CAAAyF,aAAA,CAACvF,IAAI,EAAAsJ,KAAA,CAAA5B,EAAA;MAAA,OACE,IAAI,CAAC1G,OAAO;MAAA,QACXY,IAAI;MAAA,SACH,CAAC,IAAI,CAACiD,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;MAAA,SAC1B/B,SAAS;MAAA,UACRC,UAAU;MAAA,aACP,IAAI,CAAC2G,SAAS;MAAA,YACfzE,QAAQ;MAAA,qBACCsE,iBAAiB;MAAA,eACvB,IAAI,CAACI,eAAe;MAAA,gBACnB,IAAI,CAACC;IAAgB,IAElC,IAAI,CAACxD,aAAa,CAAC,CAAC,EACpB,IAAI,CAACtB,WAAW,CAAC,CACd,CAAC,eACPjF,KAAA,CAAAyF,aAAA,CAACrG,IAAI,EAAAoK,KAAA,CAAA5B,EAAA;MAAA,aAAW,QAAQ;MAAA,OAAM;IAAC,IAC5ByB,MAAM,iBACLrJ,KAAA,CAAAyF,aAAA,CAAAzF,KAAA,CAAA0F,QAAA,qBACE1F,KAAA,CAAAyF,aAAA,CAACtG,GAAG,EAAAqK,KAAA,CAAA5B,EAAA,aAAEyB,MAAY,CAAC,eACnBrJ,KAAA,CAAAyF,aAAA,CAAC7F,OAAO,EAAA4J,KAAA,CAAA5B,EAAA,eAAE,CACV,CACH,EACA,IAAI,CAACoC,YAAY,CAAC,CACf,CACA,CAAC;EAEb;EAEUE,kBAAkBA,CAAA,EAAW;IACrC,OAAO,IAAI,CAACnI,OAAO,CAACoI,WAAW,CAAC,gBAAgB,EAAE;MAAEC,SAAS,EAAE;IAAY,CAAC,CAAC;EAC/E;EAEA,IAAYjD,WAAWA,CAAA,EAAG;IACxB,MAAMkD,cAAc,GAAG,IAAI,CAACrH,qBAAqB,CAAC,CAAC;IAEnD,MAAM;MAAEsH,KAAK;MAAEC;IAAO,CAAC,GAAGF,cAAc,CAACvH,MAAM,CAAuB,CAACC,GAAG,EAAE;MAAEf,EAAE;MAAEiC;IAAY,CAAC,EAAE9B,KAAK,KAAK;MACzG,MAAM;QAAEmI,KAAK;QAAEC;MAAO,CAAC,GAAGxH,GAAG;MAE7B,IAAIkB,WAAW,EAAE;QACfqG,KAAK,CAACE,IAAI,CAACxI,EAAE,CAAC;QAEd,IAAIuI,MAAM,CAAChH,MAAM,KAAK,CAAC,EAAE;UACvBgH,MAAM,CAACC,IAAI,CAACvG,WAAW,GAAGtD,WAAW,CAAC;UAEtC,OAAOoC,GAAG;QACZ;QAEA,IAAIZ,KAAK,KAAKkI,cAAc,CAAC9G,MAAM,GAAG,CAAC,EAAE;UACvC,MAAMkH,eAAe,GAAGF,MAAM,CAACA,MAAM,CAAChH,MAAM,GAAG,CAAC,CAAC;UACjDgH,MAAM,CAACC,IAAI,CAACC,eAAe,GAAGxG,WAAW,GAAGtD,WAAW,CAAC;QAC1D;MACF;MAEA,OAAOoC,GAAG;IACZ,CAAC,EAAE;MAAEuH,KAAK,EAAE,EAAE;MAAEC,MAAM,EAAE;IAAG,CAAC,CAAC;IAE7B,OAAOzK,cAAc,CAACyK,MAAM,EAAED,KAAK,CAAC;EACtC;AACF;AAACvJ,eAAA,CAxdKH,uBAAuB,iBAON,eAAe;AAAAG,eAAA,CAPhCH,uBAAuB,kBASCE,KAA0B,IAAK;EACzD,MAAMqC,UAAU,GAAGrC,KAAK,CAACqC,UAAU,IAAI,IAAI;EAC3C,OAAO;IACLA,UAAU,EAAEA,UAAU;IACtBuH,SAAS,EAAE,KAAK;IAChBC,SAAS,EAAE,KAAK;IAChB9D,WAAW,EAAE,IAAI;IACjB+D,UAAU,EAAE,KAAK;IACjBC,OAAO,EAAE,CAAC;IACVC,OAAO,EAAE,CAAC;IACV3F,QAAQ,EAAE,GAAG;IACblC,SAAS,EAAE,CAACE,UAAU,IAAI,CAACrC,KAAK,CAACmC,SAAS,GAAG,EAAE,GAAGnC,KAAK,CAACmC,SAAS;IACjEC,UAAU,EAAEC,UAAU,IAAI,CAACrC,KAAK,CAACoC,UAAU,GAAG,EAAE,GAAGpC,KAAK,CAACoC,UAAU;IACnEyD,yBAAyB,EAAE,KAAK;IAChCvD,eAAe,EAAE1C;EACnB,CAAC;AACH,CAAC;AAAAK,eAAA,CAzBGH,uBAAuB,aA2BV,CACfnB,mBAAmB,CAAC,CAAC,EACrBE,mBAAmB,CAAC,CAAC,EACrBH,WAAW,CAACc,iBAAiB,CAAC,CAC/B;AA2bH,OAAO,MAAMyK,cAAkC,GAAG1L,eAAe,CAACuB,uBAAuB,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\
|
|
1
|
+
{"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\nexport type CigaretteChartDataKey = string;\n\nexport type CigaretteChartData = Record<CigaretteChartDataKey, number | typeof interpolateValue>;\n\nexport type CigaretteChartProps = Intergalactic.InternalTypings.EfficientOmit<\n BaseChartProps<CigaretteChartData>,\n 'xScale' | 'yScale'\n> & {\n /** Title text displayed in the tooltip */\n tooltipTitle?: string;\n /** Controls whether the tooltip shows all data or single item data */\n tooltipViewType?: 'all' | 'single';\n /** Show percent value in tooltip */\n showPercentValueInTooltip?: boolean;\n /** Custom percent formatter. */\n percentFormatter?: (value: number) => number;\n /** Header content for the chart */\n header?: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Click handler that receives the data key and event */\n onClick?: (key: CigaretteChartDataKey, event: React.SyntheticEvent) => void;\n /** Minimal bar width in pixels. Default is `2`. */\n minimalBarWidth?: number;\n};\n\nexport type CigaretteChartType = Intergalactic.Component<'div', CigaretteChartProps>;\n"],"mappings":"","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_1x0kb_gg_._direction_row_1x0kb_gg_{align-items:flex-start;align-content:flex-start;flex-wrap:wrap;gap:8px 16px}.___SLegendFlex_1x0kb_gg_._direction_column_1x0kb_gg_{align-items:flex-start;flex-wrap:wrap;gap:8px}", /*__inner_css_end__*/"1x0kb_gg_"),
|
|
12
12
|
/*__reshadow_css_end__*/
|
|
13
13
|
{
|
|
14
|
-
"__SLegendFlex": "
|
|
15
|
-
"_direction_row": "
|
|
16
|
-
"_direction_column": "
|
|
14
|
+
"__SLegendFlex": "___SLegendFlex_1x0kb_gg_",
|
|
15
|
+
"_direction_row": "_direction_row_1x0kb_gg_",
|
|
16
|
+
"_direction_column": "_direction_column_1x0kb_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_11yr1_gg_{min-width:0;align-items:flex-start}@media (hover:hover){.___SLegendItem_11yr1_gg_:hover{cursor:pointer}.___SLegendItem_11yr1_gg_.__disabled_11yr1_gg_:hover{cursor:default}}.___SPointShape_11yr1_gg_.__color_11yr1_gg_{background-color:var(--color_11yr1);margin-right:8px;flex-shrink:0}.___SPointShape_11yr1_gg_._shape_Circle_11yr1_gg_._size_l_11yr1_gg_{width:16px;height:16px;border-radius:8px;margin-top:4px}.___SPointShape_11yr1_gg_._shape_Circle_11yr1_gg_._size_m_11yr1_gg_{width:12px;height:12px;border-radius:6px;margin-top:4px}.___SPointShape_11yr1_gg_._shape_Line_11yr1_gg_._size_l_11yr1_gg_{width:16px;height:4px;border-radius:3px;margin-top:9px}.___SPointShape_11yr1_gg_._shape_Line_11yr1_gg_._size_m_11yr1_gg_{width:12px;height:4px;border-radius:3px;margin-top:8px}.___SPointShape_11yr1_gg_._shape_Square_11yr1_gg_._size_l_11yr1_gg_{width:16px;height:16px;border-radius:2px;margin-top:4px}.___SPointShape_11yr1_gg_._shape_Square_11yr1_gg_._size_m_11yr1_gg_{width:12px;height:12px;border-radius:2px;margin-top:4px}.___SPointShape_11yr1_gg_._shape_Pattern_11yr1_gg_{background-color:transparent;margin-right:4px}.___SIcon_11yr1_gg_{line-height:0;margin-right:4px}.___SIcon_11yr1_gg_._size_l_11yr1_gg_{margin-top:4px}.___SIcon_11yr1_gg_._size_m_11yr1_gg_{margin-top:2px}.___SLabel_11yr1_gg_{min-width:0}.___SAdditionalLabel_11yr1_gg_._size_l_11yr1_gg_,.___SCount_11yr1_gg_._size_l_11yr1_gg_,.___SLabel_11yr1_gg_._size_l_11yr1_gg_{font-size:var(--intergalactic-fs-300, 16px);line-height:var(--intergalactic-lh-300, 150%)}.___SAdditionalLabel_11yr1_gg_._size_m_11yr1_gg_,.___SCount_11yr1_gg_._size_m_11yr1_gg_,.___SLabel_11yr1_gg_._size_m_11yr1_gg_{font-size:var(--intergalactic-fs-200, 14px);line-height:var(--intergalactic-lh-200, 142%)}.___SAdditionalLabel_11yr1_gg_,.___SCount_11yr1_gg_{margin-left:4px}.___SAdditionalLabel_11yr1_gg_{white-space:nowrap;display:flex;align-items:flex-start}.___SAdditionalLabel_11yr1_gg_::before{content:\"\";display:inline-block;background-color:var(--intergalactic-text-secondary, #6c6e79);height:4px;width:4px;border-radius:2px;margin-right:4px}.___SAdditionalLabel_11yr1_gg_._size_l_11yr1_gg_::before{margin-top:10px}.___SAdditionalLabel_11yr1_gg_._size_m_11yr1_gg_::before{margin-top:8px}.___SPatternSymbol_11yr1_gg_{transform:scale(.8)}", /*__inner_css_end__*/"11yr1_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_11yr1_gg_",
|
|
21
|
+
"_disabled": "__disabled_11yr1_gg_",
|
|
22
|
+
"__SPointShape": "___SPointShape_11yr1_gg_",
|
|
23
|
+
"_color": "__color_11yr1_gg_",
|
|
24
|
+
"--color": "--color_11yr1",
|
|
25
|
+
"_shape_Circle": "_shape_Circle_11yr1_gg_",
|
|
26
|
+
"_size_l": "_size_l_11yr1_gg_",
|
|
27
|
+
"_size_m": "_size_m_11yr1_gg_",
|
|
28
|
+
"_shape_Line": "_shape_Line_11yr1_gg_",
|
|
29
|
+
"_shape_Square": "_shape_Square_11yr1_gg_",
|
|
30
|
+
"_shape_Pattern": "_shape_Pattern_11yr1_gg_",
|
|
31
|
+
"__SIcon": "___SIcon_11yr1_gg_",
|
|
32
|
+
"__SLabel": "___SLabel_11yr1_gg_",
|
|
33
|
+
"__SAdditionalLabel": "___SAdditionalLabel_11yr1_gg_",
|
|
34
|
+
"__SCount": "___SCount_11yr1_gg_",
|
|
35
|
+
"__SPatternSymbol": "___SPatternSymbol_11yr1_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_1ep80_gg_.__columns-count_1ep80_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_1ep80_gg_._size_l_1ep80_gg_{font-size:var(--intergalactic-fs-300, 16px);text-align:right}.___SColumnItem_1ep80_gg_._size_m_1ep80_gg_{font-size:var(--intergalactic-fs-200, 14px);text-align:right}", /*__inner_css_end__*/"1ep80_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_1ep80_gg_",
|
|
13
|
+
"_columns-count": "__columns-count_1ep80_gg_",
|
|
14
|
+
"__SColumnItem": "___SColumnItem_1ep80_gg_",
|
|
15
|
+
"_size_l": "_size_l_1ep80_gg_",
|
|
16
|
+
"_size_m": "_size_m_1ep80_gg_"
|
|
17
17
|
});
|
|
18
18
|
import { BaseLegend } from '../BaseLegend';
|
|
19
19
|
import { LegendItemComponent } from '../LegendItem/LegendItem';
|
package/lib/es6/utils.js
CHANGED
|
@@ -179,7 +179,8 @@ export const getChartDefaultColorName = index => {
|
|
|
179
179
|
return `chart-palette-order-${index}`;
|
|
180
180
|
};
|
|
181
181
|
export const getBubbleChartValueScale = (data, key) => {
|
|
182
|
-
const z = scaleSqrt().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]);
|
|
182
|
+
const z = scaleSqrt().domain([0, Math.max(...data.map(el => el[key]))]).range([5.5, 50.5]); // min/max radius
|
|
183
|
+
|
|
183
184
|
return z;
|
|
184
185
|
};
|
|
185
186
|
export const getScatterPlotRadius = valueKey => {
|
|
@@ -213,7 +214,7 @@ export const calculateBubbleDomain = (data, key, range) => {
|
|
|
213
214
|
const maxValueShift = valueScale(maxestValue) * pixelRatio;
|
|
214
215
|
min -= minValueShift * 2;
|
|
215
216
|
max += maxValueShift * 2;
|
|
216
|
-
return [min, max];
|
|
217
|
+
return [Math.floor(min), Math.floor(max)];
|
|
217
218
|
};
|
|
218
219
|
export const PlotEventEmitter = EventEmitter;
|
|
219
220
|
//# sourceMappingURL=utils.js.map
|
package/lib/es6/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]);\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [min, max];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","floor","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]); // min/max radius\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [Math.floor(min), Math.floor(max)];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,sCAAsC;AAC/D,SAASC,MAAM,EAAEC,QAAQ,QAAsB,UAAU;AACzD,SACEC,aAAa,EAObC,SAAS,EACTC,SAAS,QACJ,UAAU;AAGjB,OAAO,MAAMC,YAAY,GAAGA,CAACC,KAAoC,EAAEC,OAAmB,KAAK;EACzF,MAAMC,IAAI,GAAIF,KAAK,CAACG,aAAa,IAAIH,KAAK,CAACI,MAAsB;EACjE,MAAMC,IAAI,GAAGJ,OAAO,CAACK,qBAAqB,CAAC,CAAC;EAC5C,OAAO,CAACN,KAAK,CAACO,OAAO,GAAGF,IAAI,CAACG,IAAI,GAAGN,IAAI,CAACO,UAAU,EAAET,KAAK,CAACU,OAAO,GAAGL,IAAI,CAACM,GAAG,GAAGT,IAAI,CAACU,SAAS,CAAC;AACjG,CAAC;AAOD,OAAO,MAAMC,MAAM,GAAGA,CACpBC,KAAY,EACZC,KAAa,KACV;EACH,IAAI,QAAQ,IAAID,KAAK,IAAIA,KAAK,CAACD,MAAM,EAAE,OAAOC,KAAK,CAACD,MAAM,CAACE,KAAK,CAAC;EAEjE,MAAMC,KAAK,GAAGF,KAAK,CAACE,KAAK,CAAC,CAAqB;EAC/C,MAAMC,MAAM,GAAGH,KAAK,CAACG,MAAM,CAAC,CAAC;EAC7B,IAAI,cAAc,IAAIH,KAAK,EAAE;IAC3BE,KAAK,CAAC,CAAC,CAAC,IAAIF,KAAK,CAACI,YAAY,CAAC,CAAC,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;IAC/CH,KAAK,CAAC,CAAC,CAAC,IAAIF,KAAK,CAACI,YAAY,CAAC,CAAC,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;EACjD;EAEA,OAAOvB,aAAa,CAAC,CAAC,CACnBqB,MAAM,CAAED,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,GAAGA,KAAK,CAACI,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAmB,CAAC,CACjFL,KAAK,CAAEA,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,GAAGC,MAAM,GAAGA,MAAM,CAACG,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAc,CAAC,CAACN,KAAK,CAAC;AACzF,CAAC;AAED,OAAO,MAAMO,eAAe,GAAGA,CAACC,CAAS,EAAEC,CAAS,KAAMC,IAAiC,IACzFA,IAAI,CAACF,CAAC,CAAC,KAAK,IAAI,IAAIE,IAAI,CAACD,CAAC,CAAC,KAAK,IAAI;AAEtC,OAAO,MAAME,WAAW,GAAGA,CAACH,CAAS,EAAEC,CAAS,KAAMC,IAAiC,IACrFA,IAAI,CAACF,CAAC,CAAC,KAAK,IAAI,IAAIE,IAAI,CAACF,CAAC,CAAC,KAAKI,SAAS,IAAIF,IAAI,CAACD,CAAC,CAAC,KAAK,IAAI,IAAIC,IAAI,CAACD,CAAC,CAAC,KAAKG,SAAS;AAExF,OAAO,MAAMC,gBAAgB,GAAGA,CAA8Bd,KAAY,EAAEC,KAAa,KACvFD,KAAK,CAACe,SAAS,GAAGf,KAAK,CAACC,KAAK,CAAC,GAAID,KAAK,CAACe,SAAS,CAAC,CAAC,GAAG,CAAC,GAAGf,KAAK,CAACC,KAAK,CAAC;AAExE,OAAO,MAAMe,MAAM,GAAGA,CAMpBC,IAAU,EACVC,GAAQ,KACmC;EAC3C,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOtC,MAAM,CAACqC,IAAI,EAAGE,CAAC,IAAKA,CAAC,CAACD,GAAG,CAAC,CAAC;EACpC;EACA,OAAOtC,MAAM,CAACqC,IAAI,EAAEC,GAAG,CAAC;AAC1B,CAAC;AAED,OAAO,MAAME,WAAW,GAAGA,CAIzBH,IAAY,EACZI,OAAgC,EAChCC,IAAU,KAEVL,IAAI,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEL,CAAC,EAAEM,CAAC,EAAER,IAAI,KAAK;EAC/B,IAAII,OAAO,CAACF,CAAC,CAAC,EAAE;IACdK,GAAG,CAACE,IAAI,CAAC;MACP,CAACJ,IAAI,GAAG;IACV,CAAS,CAAC;EACZ,CAAC,MAAM;IACL,MAAMK,IAAI,GAAGV,IAAI,CAACQ,CAAC,GAAG,CAAC,CAAC;IACxB,MAAMG,IAAI,GAAGX,IAAI,CAACQ,CAAC,GAAG,CAAC,CAAC;IAExB,IAAIA,CAAC,KAAK,CAAC,EAAE;MACX,MAAMI,OAAO,GAAGZ,IAAI,CAACa,IAAI,CAACT,OAAO,CAAC;MAClCG,GAAG,CAACE,IAAI,CAAC;QACP,GAAGP,CAAC;QACJ,CAACG,IAAI,GAAGO,OAAO,GAAGA,OAAO,CAACP,IAAI,CAAC,GAAG;MACpC,CAAC,CAAC;IACJ;;IAEA;IACA,IAAIK,IAAI,IAAIN,OAAO,CAACM,IAAI,CAAC,EAAE;MACzBH,GAAG,CAACE,IAAI,CAACC,IAAI,CAAC;IAChB;;IAEA;IACA,IAAIC,IAAI,IAAIP,OAAO,CAACO,IAAI,CAAC,EAAE;MACzBJ,GAAG,CAACE,IAAI,CAACE,IAAI,CAAC;IAChB;IAEA,IAAIX,IAAI,CAACc,MAAM,GAAG,CAAC,KAAKN,CAAC,EAAE;MACzB,MAAMO,OAAO,GAAGf,IAAI,CAACX,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAACuB,IAAI,CAACT,OAAO,CAAC;MACpDG,GAAG,CAACE,IAAI,CAAC;QACP,GAAGP,CAAC;QACJ,CAACG,IAAI,GAAGU,OAAO,GAAGA,OAAO,CAACV,IAAI,CAAC,GAAG;MACpC,CAAC,CAAC;IACJ;EACF;EACA,OAAOE,GAAG;AACZ,CAAC,EAAE,EAAY,CAAC;AAQlB,OAAO,MAAMS,gBAAgB,GAAGA,CAO9BhB,IAAY,EACZjB,KAAY,EACZkB,GAAQ,EACRjB,KAAa,KACV;EACH;EACA,IAAI,QAAQ,IAAID,KAAK,IAAI,OAAOA,KAAK,CAACD,MAAM,KAAK,UAAU,IAAImC,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAClF,MAAMmB,MAAM,GAAGvD,QAAQ,CAAEsC,CAA4B,IAAKA,CAAC,CAACD,GAAG,CAAC,CAAC,CAACmB,MAAM;IACxE,OAAOD,MAAM,CAACnB,IAAI,EAAEhB,KAAK,CAAC;EAC5B,CAAC,MAAM,IAAI,MAAM,IAAID,KAAK,IAAI,OAAOA,KAAK,CAACK,IAAI,KAAK,WAAW,IAAI6B,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAAE;IACxF,MAAMqB,KAAK,GAAGrB,IAAI,CAACsB,SAAS,CAAEpB,CAAC,IAAKA,CAAC,CAACD,GAAG,CAAC,KAAKjB,KAAK,CAAC;IACrD,OAAOqC,KAAK,IAAI,CAAC,GAAGA,KAAK,GAAG,IAAI;EAClC,CAAC,MAAM,IAAI,QAAQ,IAAItC,KAAK,IAAI,OAAOA,KAAK,CAACD,MAAM,KAAK,UAAU,IAAI,CAACmC,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAAE;IAC5F,MAAMuB,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACvB,IAAI,CAAC;IAC9B,MAAMd,MAAM,GAAGqC,IAAI,CAACE,GAAG,CAAC,CAACC,IAAI,EAAEL,KAAK,KAAK;MACvC,OAAOE,IAAI,CAAClC,KAAK,CAAC,CAAC,EAAEgC,KAAK,CAAC,CAACf,MAAM,CAAC,CAACC,GAAG,EAAEoB,IAAI,KAAK;QAChD,IAAI3B,IAAI,CAAC2B,IAAI,CAAC,KAAKC,gBAAgB,EAAE;UACnCrB,GAAG,GAAGA,GAAG,GAAGP,IAAI,CAAC2B,IAAI,CAAC;QACxB;QAEA,OAAOpB,GAAG;MACZ,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAIN,GAAG,GAAG,IAAI;IAEd,MAAM4B,YAAY,GAAGN,IAAI,CAACT,MAAM,GAAG,CAAC;IAEpC,IAAI9B,KAAK,GAAGE,MAAM,CAAC2C,YAAY,CAAC,EAAE;MAChC5B,GAAG,GAAGsB,IAAI,CAACM,YAAY,CAAC;IAC1B,CAAC,MAAM;MACL,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqB,YAAY,EAAErB,CAAC,EAAE,EAAE;QACrC,IAAIA,CAAC,KAAK,CAAC,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,CAAC,EAAE;UAChC;QACF;QAEA,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,CAAC,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,GAAG,CAAC,CAAC,EAAE;UAC9CP,GAAG,GAAGsB,IAAI,CAACf,CAAC,CAAC;UACb;QACF;MACF;IACF;IAEA,OAAOP,GAAG;EACZ,CAAC,MAAM;IACL;IACA6B,OAAO,CAACC,IAAI,CAAC,uEAAuE,CAAC;IACrF,OAAO,IAAI;EACb;AACF,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGA,CACzBxC,CAAS,EACTC,CAAS,EACTwC,CAAS,EACTC,CAAS,EACTC,CAAS,EACTC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,KACP;EACH,IAAIC,MAAM,GAAG,IAAIhD,CAAC,GAAG2C,CAAC,IAAI1C,CAAC,EAAE;EAC7B+C,MAAM,IAAI,IAAIP,CAAC,GAAG,CAAC,GAAGE,CAAC,EAAE;EACzB,IAAIE,EAAE,EAAE;IACNG,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAUA,CAAC,IAAIA,CAAC,EAAE;EACxC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAIL,CAAC,EAAE;IACjBK,MAAM,IAAI,IAAIL,CAAC,EAAE;EACnB;EACAK,MAAM,IAAI,IAAIN,CAAC,GAAG,CAAC,GAAGC,CAAC,EAAE;EACzB,IAAII,EAAE,EAAE;IACNC,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAU,CAACA,CAAC,IAAIA,CAAC,EAAE;EACzC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAIL,CAAC,EAAE;IACjBK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;EACpB;EACAK,MAAM,IAAI,IAAI,CAAC,GAAGL,CAAC,GAAGF,CAAC,EAAE;EACzB,IAAIK,EAAE,EAAE;IACNE,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAU,CAACA,CAAC,IAAI,CAACA,CAAC,EAAE;EAC1C,CAAC,MAAM;IACLK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;IAClBK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;EACpB;EACAK,MAAM,IAAI,IAAI,CAAC,GAAGL,CAAC,GAAGD,CAAC,EAAE;EACzB,IAAIE,EAAE,EAAE;IACNI,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAUA,CAAC,IAAI,CAACA,CAAC,EAAE;EACzC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;IAClBK,MAAM,IAAI,IAAIL,CAAC,EAAE;EACnB;EACAK,MAAM,IAAI,GAAG;EACb,OAAOA,MAAM;AACf,CAAC;AAED,OAAO,MAAMC,WAAW,GAAI1D,KAAoB,IAAK;EACnD,IAAI,WAAW,IAAIA,KAAK,EAAE;IACxB,OAAOA,KAAK;EACd;EAEA,MAAM2D,IAAI,GAAG5E,SAAS,CAAC,CAAC,CACrBmB,KAAK,CAAEF,KAAK,CAASE,KAAK,CAAC,CAAC,CAAC,CAC7BC,MAAM,CAAEH,KAAK,CAASG,MAAM,CAAC,CAAC,CAAC;EAElC,OAAOwD,IAAI;AACb,CAAC;AAED,OAAO,MAAMC,OAAO,GAA0CC,IAAU,IAAW;EACjF,MAAMC,OAAoC,GAAG,CAAC,CAAC;EAC/C,OAAQ,CAAC,GAAGC,IAAW,KAAK;IAC1B,MAAMC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,CAACH,OAAO,CAACE,OAAO,CAAC,EAAE;MACrBF,OAAO,CAACE,OAAO,CAAC,GAAGH,IAAI,CAAC,GAAGE,IAAI,CAAC;IAClC;IACA,OAAOD,OAAO,CAACE,OAAO,CAAC;EACzB,CAAC;AACH,CAAC;AAED,OAAO,MAAME,WAAW,GAAGN,OAAO,CAAC,CAACO,IAAY,EAAEC,QAAiB,KAAK;EACtE,IAAI,CAACD,IAAI,EAAE,OAAO,CAAC;EAEnB,MAAME,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3C,IAAIH,QAAQ,EAAE;IACZC,IAAI,CAACG,KAAK,CAACJ,QAAQ,GAAG,GAAGA,QAAQ,IAAI;EACvC;EACA,KAAK,MAAMK,IAAI,IAAIN,IAAI,CAACO,KAAK,CAAC,IAAI,CAAC,EAAE;IACnCL,IAAI,CAACM,MAAM,CAACL,QAAQ,CAACM,cAAc,CAACH,IAAI,CAAC,CAAC;IAC1CJ,IAAI,CAACM,MAAM,CAACL,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAC;EAC3C;EACAF,IAAI,CAACG,KAAK,CAACK,OAAO,GAAG,cAAc;EACnCP,QAAQ,CAACQ,IAAI,CAACH,MAAM,CAACN,IAAI,CAAC;EAC1B,MAAMU,SAAS,GAAGV,IAAI,CAACW,WAAW;EAClC,MAAMC,UAAU,GAAGZ,IAAI,CAACa,YAAY;EACpCb,IAAI,CAACc,MAAM,CAAC,CAAC;EACb,OAAOC,IAAI,CAACC,GAAG,CAACN,SAAS,EAAEE,UAAU,CAAC;AACxC,CAAC,CAAC;AAEF,IAAIK,SAAS,GAAG,CAAC;AACjB,OAAO,MAAMC,QAAQ,GAAGA,CAACC,MAAM,GAAG,KAAK,KAAK,GAAGA,MAAM,GAAGF,SAAS,EAAE,EAAE;AAErE,OAAO,MAAMzC,gBAAgB,GAAG4C,MAAM,CAAC,yCAAyC,CAAC;AAEjF,OAAO,MAAMC,wBAAwB,GAAIpD,KAAa,IAAK;EACzDA,KAAK,EAAE;EACP,IAAIA,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC;EACxB,IAAIA,KAAK,GAAG,EAAE,EAAEA,KAAK,IAAI,EAAE;EAE3B,OAAO,uBAAuBA,KAAK,EAAE;AACvC,CAAC;AAED,OAAO,MAAMqD,wBAAwB,GAAGA,CAAC1E,IAAW,EAAEC,GAAW,KAAK;EACpE,MAAM0E,CAAC,GAAG5G,SAAS,CAAC,CAAC,CAClBmB,MAAM,CAAC,CAAC,CAAC,EAAEiF,IAAI,CAACC,GAAG,CAAC,GAAGpE,IAAI,CAACyB,GAAG,CAAEmD,EAAE,IAAKA,EAAE,CAAC3E,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACnDhB,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;EAEvB,OAAO0F,CAAC;AACV,CAAC;AAED,OAAO,MAAME,oBAAoB,GAAIC,QAAiB,IAAa;EACjE,OAAOA,QAAQ,KAAKlF,SAAS,GAAG,EAAE,GAAG,GAAG;AAC1C,CAAC;AAQD,OAAO,MAAMmF,qBAAqB,GAAGA,CACnC/E,IAAgC,EAChCC,GAAc,EACdhB,KAAuB,KACQ;EAC/B,MAAM+F,YAAY,GAAGhF,IAAI,CAACM,MAAM,CAC9B,CAACC,GAAG,EAAEoB,IAAI,KAAK;IACb,IAAIA,IAAI,CAAC1B,GAAG,CAAC,GAAG0B,IAAI,CAAC3C,KAAK,GAAGuB,GAAG,CAAC0E,GAAG,EAAE;MACpC1E,GAAG,CAAC0E,GAAG,GAAGtD,IAAI,CAAC1B,GAAG,CAAC,GAAG0B,IAAI,CAAC3C,KAAK;MAChCuB,GAAG,CAACvB,KAAK,GAAG2C,IAAI,CAAC3C,KAAK;IACxB;IACA,OAAOuB,GAAG;EACZ,CAAC,EACD;IAAEvB,KAAK,EAAEgB,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK;IAAEiG,GAAG,EAAEjF,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAC,CAAChB;EAAM,CAC5D,CAAC,CAACA,KAAK;EACP,MAAMkG,WAAW,GAAGlF,IAAI,CAACM,MAAM,CAC7B,CAACC,GAAG,EAAEoB,IAAI,KAAK;IACb,IAAIA,IAAI,CAAC3C,KAAK,GAAG2C,IAAI,CAAC1B,GAAG,CAAC,GAAGM,GAAG,CAAC6D,GAAG,EAAE;MACpC7D,GAAG,CAAC6D,GAAG,GAAGzC,IAAI,CAAC3C,KAAK,GAAG2C,IAAI,CAACnC,CAAC;MAC7Be,GAAG,CAACvB,KAAK,GAAG2C,IAAI,CAAC3C,KAAK;IACxB;IACA,OAAOuB,GAAG;EACZ,CAAC,EACD;IAAEvB,KAAK,EAAEgB,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK;IAAEoF,GAAG,EAAEpE,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK,GAAGgB,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG;EAAE,CAC5D,CAAC,CAACjB,KAAK;EAEP,IAAI,CAACiG,GAAG,EAAEb,GAAG,CAAC,GAAGrE,MAAM,CAACC,IAAI,EAAEC,GAAG,CAAC;EAElC,MAAMkF,UAAU,GAAGhB,IAAI,CAACiB,GAAG,CAAChB,GAAG,GAAGa,GAAG,CAAC,GAAGd,IAAI,CAACiB,GAAG,CAACnG,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC;EACtE,MAAMoG,UAAU,GAAGX,wBAAwB,CAAC1E,IAAI,EAAE,OAAO,CAAC;EAC1D,MAAMsF,aAAa,GAAGD,UAAU,CAACL,YAAY,CAAC,GAAGG,UAAU;EAC3D,MAAMI,aAAa,GAAGF,UAAU,CAACH,WAAW,CAAC,GAAGC,UAAU;EAC1DF,GAAG,IAAIK,aAAa,GAAG,CAAC;EACxBlB,GAAG,IAAImB,aAAa,GAAG,CAAC;EAExB,OAAO,CAACpB,IAAI,CAACqB,KAAK,CAACP,GAAG,CAAC,EAAEd,IAAI,CAACqB,KAAK,CAACpB,GAAG,CAAC,CAAC;AAC3C,CAAC;AAWD,OAAO,MAAMqB,gBAAgB,GAAG/H,YAAoB","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
-
import {
|
|
3
|
+
import { Component, createComponent } from "@semcore/core";
|
|
4
4
|
import propsForElement from "@semcore/core/lib/utils/propsForElement";
|
|
5
5
|
import React from "react";
|
|
6
6
|
class AnimatedClipPath extends Component {
|
package/lib/esm/Area.mjs
CHANGED
|
@@ -3,34 +3,34 @@ import { sstyled, Component } from "@semcore/core";
|
|
|
3
3
|
import findComponent from "@semcore/core/lib/utils/findComponent";
|
|
4
4
|
import uniqueIDEnhancement from "@semcore/core/lib/utils/uniqueID";
|
|
5
5
|
import { bisector } from "d3-array";
|
|
6
|
-
import { line,
|
|
6
|
+
import { line, curveLinear, area } from "d3-shape";
|
|
7
7
|
import React from "react";
|
|
8
8
|
import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
9
9
|
import { SvgElement } from "./component/SvgElement.mjs";
|
|
10
10
|
import createElement from "./createElement.mjs";
|
|
11
11
|
import Dots from "./Dots.mjs";
|
|
12
12
|
import { PatternFill } from "./Pattern.mjs";
|
|
13
|
-
import { interpolateValue, getNullData, eventToPoint, invert,
|
|
13
|
+
import { interpolateValue, getNullData, definedNullData, eventToPoint, invert, definedData, scaleOfBandwidth } from "./utils.mjs";
|
|
14
14
|
/*!__reshadow-styles__:"./style/area.shadow.css"*/
|
|
15
15
|
const style = (
|
|
16
16
|
/*__reshadow_css_start__*/
|
|
17
17
|
(sstyled.insert(
|
|
18
18
|
/*__inner_css_start__*/
|
|
19
|
-
".
|
|
19
|
+
".___SArea_3iood_gg_{fill:var(--intergalactic-chart-palette-order-1, #2bb3ff);fill-opacity:.2}.___SArea_3iood_gg_.__color_3iood_gg_{fill:var(--color_3iood)}.___SArea_3iood_gg_.__pattern_3iood_gg_{fill:var(--pattern_3iood);fill-opacity:.7}.___SArea_3iood_gg_.__transparent_3iood_gg_{opacity:.3}.___SAreaLine_3iood_gg_{stroke:var(--intergalactic-chart-palette-order-1, #2bb3ff);stroke-width:3;fill:transparent}.___SAreaLine_3iood_gg_.__color_3iood_gg_{stroke:var(--color_3iood)}.___SAreaLine_3iood_gg_.__transparent_3iood_gg_{opacity:.3}.___SAreaLine_3iood_gg_,.___SArea_3iood_gg_{transition-property:d;transition-duration:var(--duration_3iood);transition-timing-function:ease-in-out}.___SNull_3iood_gg_{fill:transparent;stroke:var(--intergalactic-chart-grid-x-axis, #c4c7cf);stroke-dasharray:4}.___SNull_3iood_gg_.__hide_3iood_gg_{display:none}",
|
|
20
20
|
/*__inner_css_end__*/
|
|
21
|
-
"
|
|
21
|
+
"3iood_gg_"
|
|
22
22
|
), /*__reshadow_css_end__*/
|
|
23
23
|
{
|
|
24
|
-
"__SArea": "
|
|
25
|
-
"_color": "
|
|
26
|
-
"--color": "--
|
|
27
|
-
"_pattern": "
|
|
28
|
-
"--pattern": "--
|
|
29
|
-
"_transparent": "
|
|
30
|
-
"__SAreaLine": "
|
|
31
|
-
"--duration": "--
|
|
32
|
-
"__SNull": "
|
|
33
|
-
"_hide": "
|
|
24
|
+
"__SArea": "___SArea_3iood_gg_",
|
|
25
|
+
"_color": "__color_3iood_gg_",
|
|
26
|
+
"--color": "--color_3iood",
|
|
27
|
+
"_pattern": "__pattern_3iood_gg_",
|
|
28
|
+
"--pattern": "--pattern_3iood",
|
|
29
|
+
"_transparent": "__transparent_3iood_gg_",
|
|
30
|
+
"__SAreaLine": "___SAreaLine_3iood_gg_",
|
|
31
|
+
"--duration": "--duration_3iood",
|
|
32
|
+
"__SNull": "___SNull_3iood_gg_",
|
|
33
|
+
"_hide": "__hide_3iood_gg_"
|
|
34
34
|
})
|
|
35
35
|
);
|
|
36
36
|
class AreaRoot extends Component {
|
package/lib/esm/Axis.mjs
CHANGED
|
@@ -9,30 +9,30 @@ const style = (
|
|
|
9
9
|
/*__reshadow_css_start__*/
|
|
10
10
|
(sstyled.insert(
|
|
11
11
|
/*__inner_css_start__*/
|
|
12
|
-
".
|
|
12
|
+
".___SAxis_1po6x_gg_{stroke:var(--intergalactic-chart-grid-x-axis, #c4c7cf)}.___SAxis_1po6x_gg_.__hide_1po6x_gg_{display:none}.___STick_1po6x_gg_{font-size:var(--intergalactic-fs-100, 12px);fill:var(--intergalactic-chart-grid-text-label, #6c6e79)}.___STick_1po6x_gg_.__primaryText_1po6x_gg_{fill:var(--intergalactic-text-primary, #191b23)}.___STick_1po6x_gg_.__hide_1po6x_gg_{display:none}.___SGrid_1po6x_gg_{fill:transparent;stroke:var(--intergalactic-border-secondary, #e0e1e9)}.___STitle_1po6x_gg_{font-size:var(--intergalactic-fs-100, 12px);fill:var(--intergalactic-text-hint, #6c6e79);transform-origin:var(--transform-origin_1po6x)}.___STitle_1po6x_gg_._position_top_1po6x_gg_{text-anchor:middle}.___STitle_1po6x_gg_._position_bottom_1po6x_gg_{text-anchor:middle;dominant-baseline:hanging}.___STitle_1po6x_gg_._position_left_1po6x_gg_,.___STitle_1po6x_gg_._position_right_1po6x_gg_{transform:rotate(-90deg);text-anchor:middle;dominant-baseline:middle}.___STitle_1po6x_gg_._position_left_1po6x_gg_.__verticalWritingMode_1po6x_gg_,.___STitle_1po6x_gg_._position_right_1po6x_gg_.__verticalWritingMode_1po6x_gg_{writing-mode:vertical-rl;transform:none}.___STick_1po6x_gg_._position_top_1po6x_gg_{transform:translateY(-12px);text-anchor:middle}.___STick_1po6x_gg_._position_bottom_1po6x_gg_{transform:translateY(12px);text-anchor:middle;dominant-baseline:hanging}.___STick_1po6x_gg_._position_bottom_1po6x_gg_ tspan{dominant-baseline:hanging}.___STick_1po6x_gg_._position_right_1po6x_gg_{transform:translateX(16px);text-anchor:start;dominant-baseline:middle}.___STick_1po6x_gg_._position_left_1po6x_gg_ tspan,.___STick_1po6x_gg_._position_right_1po6x_gg_ tspan{dominant-baseline:middle}.___STick_1po6x_gg_._position_left_1po6x_gg_.__multiline_1po6x_gg_,.___STick_1po6x_gg_._position_left_1po6x_gg_.__multiline_1po6x_gg_ tspan,.___STick_1po6x_gg_._position_right_1po6x_gg_.__multiline_1po6x_gg_,.___STick_1po6x_gg_._position_right_1po6x_gg_.__multiline_1po6x_gg_ tspan{dominant-baseline:auto}.___STick_1po6x_gg_._position_left_1po6x_gg_{transform:translateX(-16px);text-anchor:end;dominant-baseline:middle}.___STick_1po6x_gg_._position_custom_0_1po6x_gg_{transform:translateY(12px);text-anchor:middle;dominant-baseline:hanging}.___STick_1po6x_gg_._position_custom_0_1po6x_gg_ tspan{dominant-baseline:hanging}.___STick_1po6x_gg_._position_custom_1_1po6x_gg_{transform:translateX(-16px);text-anchor:end;dominant-baseline:middle}.___STick_1po6x_gg_._position_custom_1_1po6x_gg_ tspan{dominant-baseline:middle}",
|
|
13
13
|
/*__inner_css_end__*/
|
|
14
|
-
"
|
|
14
|
+
"1po6x_gg_"
|
|
15
15
|
), /*__reshadow_css_end__*/
|
|
16
16
|
{
|
|
17
|
-
"__SAxis": "
|
|
18
|
-
"_hide": "
|
|
19
|
-
"__STick": "
|
|
20
|
-
"_primaryText": "
|
|
21
|
-
"__SGrid": "
|
|
22
|
-
"__STitle": "
|
|
23
|
-
"--transform-origin": "--transform-
|
|
24
|
-
"_position_top": "
|
|
25
|
-
"_position_bottom": "
|
|
26
|
-
"_position_right": "
|
|
27
|
-
"_position_left": "
|
|
28
|
-
"_verticalWritingMode": "
|
|
29
|
-
"_multiline": "
|
|
30
|
-
"_position_custom_0": "
|
|
31
|
-
"_position_custom_1": "
|
|
17
|
+
"__SAxis": "___SAxis_1po6x_gg_",
|
|
18
|
+
"_hide": "__hide_1po6x_gg_",
|
|
19
|
+
"__STick": "___STick_1po6x_gg_",
|
|
20
|
+
"_primaryText": "__primaryText_1po6x_gg_",
|
|
21
|
+
"__SGrid": "___SGrid_1po6x_gg_",
|
|
22
|
+
"__STitle": "___STitle_1po6x_gg_",
|
|
23
|
+
"--transform-origin": "--transform-origin_1po6x",
|
|
24
|
+
"_position_top": "_position_top_1po6x_gg_",
|
|
25
|
+
"_position_bottom": "_position_bottom_1po6x_gg_",
|
|
26
|
+
"_position_right": "_position_right_1po6x_gg_",
|
|
27
|
+
"_position_left": "_position_left_1po6x_gg_",
|
|
28
|
+
"_verticalWritingMode": "__verticalWritingMode_1po6x_gg_",
|
|
29
|
+
"_multiline": "__multiline_1po6x_gg_",
|
|
30
|
+
"_position_custom_0": "_position_custom_0_1po6x_gg_",
|
|
31
|
+
"_position_custom_1": "_position_custom_1_1po6x_gg_"
|
|
32
32
|
})
|
|
33
33
|
);
|
|
34
|
-
const CUSTOM_0 = Symbol("custom_0");
|
|
35
|
-
const CUSTOM_1 = Symbol("custom_1");
|
|
34
|
+
const CUSTOM_0 = /* @__PURE__ */ Symbol("custom_0");
|
|
35
|
+
const CUSTOM_1 = /* @__PURE__ */ Symbol("custom_1");
|
|
36
36
|
const MAP_INDEX_SCALE_SYMBOL = {
|
|
37
37
|
0: CUSTOM_0,
|
|
38
38
|
1: CUSTOM_1
|
|
@@ -243,14 +243,13 @@ function measureTextWidth(rootRef, text, fontSize = 12) {
|
|
|
243
243
|
}
|
|
244
244
|
class AxisRoot extends Component {
|
|
245
245
|
get ticks() {
|
|
246
|
-
var _a, _b;
|
|
247
246
|
const {
|
|
248
247
|
ticks,
|
|
249
248
|
indexScale,
|
|
250
249
|
scale
|
|
251
250
|
} = this.asProps;
|
|
252
251
|
const scl = scale[indexScale];
|
|
253
|
-
return ticks ||
|
|
252
|
+
return ticks || scl.ticks?.() || scl.domain?.() || [];
|
|
254
253
|
}
|
|
255
254
|
getTitleProps() {
|
|
256
255
|
const {
|
|
@@ -304,7 +303,6 @@ _defineProperty(AxisRoot, "displayName", "Axis");
|
|
|
304
303
|
_defineProperty(AxisRoot, "style", style);
|
|
305
304
|
_defineProperty(AxisRoot, "defaultProps", {});
|
|
306
305
|
function Ticks(props) {
|
|
307
|
-
var _a, _b;
|
|
308
306
|
const {
|
|
309
307
|
Element: STick,
|
|
310
308
|
styles,
|
|
@@ -323,7 +321,7 @@ function Ticks(props) {
|
|
|
323
321
|
useEffect(() => {
|
|
324
322
|
if (rootRef.current) setRootRefElement(rootRef.current);
|
|
325
323
|
}, []);
|
|
326
|
-
const tickBandwidth =
|
|
324
|
+
const tickBandwidth = scale[indexScale]?.bandwidth?.();
|
|
327
325
|
const ticksWithLines = ticks.map((tick) => ({
|
|
328
326
|
tick,
|
|
329
327
|
lines: typeof tick === "string" && multiline && rootRefElement ? splitTextByWidth(rootRefElement, tick, tickBandwidth) : []
|