@undp/data-viz 2.3.19 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +1360 -1363
- package/dist/BarGraph.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.js +302 -305
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.js +4 -4
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +591 -594
- package/dist/BulletChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.js +4 -4
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.js +255 -258
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +553 -556
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{GraphEl-Dorm_qQE.js → GraphEl-B73N4RIA.js} +2 -2
- package/dist/{GraphEl-Dorm_qQE.js.map → GraphEl-B73N4RIA.js.map} +1 -1
- package/dist/{GraphEl-D8WRC8-j.cjs → GraphEl-Lt1og0C-.cjs} +2 -2
- package/dist/{GraphEl-D8WRC8-j.cjs.map → GraphEl-Lt1og0C-.cjs.map} +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.js +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.js +310 -313
- package/dist/HybridMap.js.map +1 -1
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +269 -272
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +319 -322
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.js +3 -3
- package/dist/RadarChart.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.js +274 -280
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.js +341 -344
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.js +251 -254
- package/dist/SlopeChart.js.map +1 -1
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.js +292 -295
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.js +3 -3
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.js +196 -199
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/WaterfallChart.cjs +1 -1
- package/dist/WaterfallChart.cjs.map +1 -1
- package/dist/WaterfallChart.js +274 -277
- package/dist/WaterfallChart.js.map +1 -1
- package/dist/index-B0Awa_de.js +377 -0
- package/dist/index-B0Awa_de.js.map +1 -0
- package/dist/index-CP8cmNzt.cjs +2 -0
- package/dist/index-CP8cmNzt.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/index-Bdo_HXb_.cjs +0 -2
- package/dist/index-Bdo_HXb_.cjs.map +0 -1
- package/dist/index-CGrBpeUa.js +0 -380
- package/dist/index-CGrBpeUa.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterfallChart.cjs","sources":["../src/Components/Graphs/WaterfallChart/Graph.tsx","../src/Components/Graphs/WaterfallChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport { useMemo, useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n data: WaterfallChartDataType[];\r\n barColor: string[];\r\n colorDomain: string[];\r\n suffix: string;\r\n prefix: string;\r\n barPadding: number;\r\n showValues: boolean;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n showLabels: boolean;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n refValues?: ReferenceDataType[];\r\n selectedColor?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedDataPoints: (string | number)[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n labelOrder?: string[];\r\n rtl: boolean;\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n barAxisTitle?: string;\r\n noOfTicks: number;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n hideAxisLine: boolean;\r\n locale: string;\r\n}\r\nfunction getWaterfallExtent(values: (number | null | undefined)[]) {\r\n let cumulative = 0;\r\n let max = 0;\r\n let min = 0;\r\n\r\n for (const v of values) {\r\n cumulative += v || 0;\r\n if (cumulative > max) max = cumulative;\r\n if (cumulative < min) min = cumulative;\r\n }\r\n\r\n return {\r\n max,\r\n min,\r\n };\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n colorDomain,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n hideAxisLine,\r\n locale,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: barAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n\r\n const { max, min } = getWaterfallExtent(data.map(d => d.size));\r\n\r\n const maxVal = !checkIfNullOrUndefined(maxValue) ? (maxValue as number) : max;\r\n const minVal = !checkIfNullOrUndefined(minValue) ? (minValue as number) : min;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = useMemo(() => {\r\n const idSet = new Set<string>();\r\n\r\n const dataWithIdWithoutMissingIds = data.map((d, i) => {\r\n const id = labelOrder ? `${d.label}` : `${i}`;\r\n idSet.add(id);\r\n return { ...d, id };\r\n });\r\n\r\n const missingIds = labelOrder ? labelOrder.filter(id => !idSet.has(id)) : [];\r\n\r\n return [\r\n ...dataWithIdWithoutMissingIds,\r\n ...missingIds.map(id => ({\r\n id,\r\n label: id,\r\n color: null,\r\n size: null,\r\n })),\r\n ];\r\n }, [data, labelOrder]);\r\n\r\n const barOrder = useMemo(() => {\r\n return labelOrder ?? dataWithId.map(d => `${d.id}`);\r\n }, [labelOrder, dataWithId]);\r\n\r\n const y = scaleLinear().domain([minVal, maxVal]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphWidth, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphWidth, maxBarThickness * barOrder.length)\r\n : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const yTicks = y.ticks(noOfTicks);\r\n let running = 0;\r\n\r\n const waterfallData = dataWithId.map(d => {\r\n const start = running;\r\n running += d.size || 0;\r\n return {\r\n ...d,\r\n start,\r\n end: running,\r\n };\r\n });\r\n return (\r\n <>\r\n <motion.svg\r\n ref={svgRef}\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minVal < 0 ? 0 : minVal)}\r\n y2={y(minVal < 0 ? 0 : minVal)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n hideAxisLine={hideAxisLine}\r\n label={\r\n showTicks\r\n ? numberFormattingFunction(\r\n minVal < 0 ? 0 : minVal,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )\r\n : undefined\r\n }\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n dx: 0,\r\n dy: maxVal < 0 ? '1em' : -5,\r\n y: y(minVal < 0 ? 0 : minVal),\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{ axis: styles?.xAxis?.axis, label: styles?.yAxis?.labels }}\r\n />\r\n {showTicks ? (\r\n <YTicksAndGridLines\r\n values={yTicks.filter(d => d !== 0)}\r\n y={yTicks.filter(d => d !== 0).map(d => y(d))}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n styles={{\r\n gridLines: styles?.yAxis?.gridLines,\r\n labels: styles?.yAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.yAxis?.gridLines,\r\n labels: classNames?.yAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n labelPos='vertical'\r\n precision={precision}\r\n locale={locale}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={0 - leftMargin - 15}\r\n y={graphHeight / 2}\r\n style={styles?.yAxis?.title}\r\n className={classNames?.yAxis?.title}\r\n text={barAxisTitle}\r\n rotate90\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {waterfallData.map((d, _i) =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n },\r\n whileInView: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d)) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.size ? (\r\n <motion.rect\r\n width={x.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n x: x(`${d.id}`),\r\n y: y(d.start),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n },\r\n whileInView: {\r\n height: Math.abs(y(d.start) - y(d.end)),\r\n y: y(Math.max(d.start, d.end)),\r\n x: x(`${d.id}`),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(d.start),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues && Math.abs(y(d.start) - y(d.end)) > 16 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n opacity: 0,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n },\r\n whileInView: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.size ? Math.abs(d.size) : d.size,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineY\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n y={y(el.value as number)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { GraphContainer, GraphArea } from '@/Components/Elements/GraphContainer';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n ReferenceDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { checkIfNullOrUndefined } from '@/Utils';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: WaterfallChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color or array of colors for bars */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: string[];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Maximum thickness of bars */\r\n maxBarThickness?: number;\r\n /** Minimum thickness of bars */\r\n minBarThickness?: number;\r\n /** Maximum number of bars shown in the graph */\r\n maxNumberOfBars?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Custom order for labels */\r\n labelOrder?: string[];\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of axis line for the main axis */\r\n hideAxisLine?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedDataPoints?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Toggles if data point which are undefined or has value null are filtered out. */\r\n filterNA?: boolean;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Locale for number formatting. Must matches what `Intl.NumberFormat` expects. */\r\n locale?: string;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function WaterfallChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n barPadding = 0.25,\r\n showValues = true,\r\n showTicks = true,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n highlightedDataPoints = [],\r\n padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale = true,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n labelOrder,\r\n language = 'en',\r\n showNAColor = true,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n hideAxisLine = false,\r\n locale = 'en',\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {showColorScale && data.filter(el => el.color).length !== 0 && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={(colors as string[] | undefined) || Colors[theme].categoricalColors.colors}\r\n colorDomain={colorDomain || (uniqBy(data, 'color', true) as (string | number)[])}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length === 0 && (\r\n <EmptyState />\r\n )}\r\n {svgWidth &&\r\n svgHeight &&\r\n data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length > 0 ? (\r\n <Graph\r\n hideAxisLine={hideAxisLine}\r\n data={data\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))}\r\n barColor={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n data.filter(el => el.color).length === 0\r\n ? []\r\n : colorDomain || (uniqBy(data, 'color', true) as string[])\r\n }\r\n selectedColor={selectedColor}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n barPadding={barPadding}\r\n showValues={showValues}\r\n showTicks={showTicks}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n showLabels={showLabels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n classNames={classNames}\r\n styles={styles}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n locale={locale}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["getWaterfallExtent","values","cumulative","max","min","v","Graph","props","$","_c","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","data","width","height","barColor","suffix","prefix","barPadding","showLabels","showValues","showTicks","colorDomain","truncateBy","tooltip","onSeriesMouseOver","refValues","selectedColor","maxValue","minValue","highlightedDataPoints","onSeriesMouseClick","labelOrder","maxBarThickness","minBarThickness","detailsOnClick","barAxisTitle","noOfTicks","styles","classNames","dimmedOpacity","animate","precision","customLayers","naLabel","hideAxisLine","locale","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","map","_temp","maxVal","checkIfNullOrUndefined","minVal","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","d_0","i","id","d","label","add","missingIds","filter","id_0","has","_temp2","dataWithId","t8","_temp3","barOrder","y","scaleLinear","domain","range","nice","x","scaleBand","Math","length","paddingInner","yTicks","ticks","running","waterfallData","d_2","start","size","end","t9","xAxis","axis","t10","yAxis","labels","t11","t12","t13","t14","t15","t16","t17","title","t18","t19","AxisTitle","t20","_temp6","_temp7","T0","AnimatePresence","t21","d_8","_i","jsxs","motion","initial","opacity","color","indexOf","whileInView","transition","duration","event","clientY","clientX","isEqual","event_0","jsx","bandwidth","fill","_temp8","Colors","gray","abs","_temp9","XAxesLabels","substring","textAnchor","graphObjectValues","cn","_temp0","getTextColorBasedOnBgColor","_temp1","numberFormattingFunction","t22","Fragment","el_3","i_0","RefLineY","el","text","value","t23","t24","_temp10","_temp11","t25","Tooltip","t26","modal","DetailsModal","Axis","dx","dy","YTicksAndGridLines","_temp4","_temp5","d_5","gridLines","d_10","layer","d_9","position","el_2","el_1","el_0","d_7","d_6","d_4","d_3","d_1","id_1","WaterfallChart","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","padding","backgroundColor","relativeHeight","showColorScale","graphID","graphDownload","dataDownload","language","showNAColor","minHeight","theme","maxNumberOfBars","ariaLabel","filterNA","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","t27","t28","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t29","graphContainer","t30","t31","description","GraphHeader","t32","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t33","EmptyState","t34","_d","primaryColors","t35","GraphArea","t36","footnote","source","GraphFooter","t37","GraphContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WaterfallChart.cjs","sources":["../src/Components/Graphs/WaterfallChart/Graph.tsx","../src/Components/Graphs/WaterfallChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport { useMemo, useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n data: WaterfallChartDataType[];\r\n barColor: string[];\r\n colorDomain: string[];\r\n suffix: string;\r\n prefix: string;\r\n barPadding: number;\r\n showValues: boolean;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n showLabels: boolean;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n refValues?: ReferenceDataType[];\r\n selectedColor?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedDataPoints?: (string | number)[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n labelOrder?: string[];\r\n rtl: boolean;\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n barAxisTitle?: string;\r\n noOfTicks: number;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n hideAxisLine: boolean;\r\n locale: string;\r\n}\r\nfunction getWaterfallExtent(values: (number | null | undefined)[]) {\r\n let cumulative = 0;\r\n let max = 0;\r\n let min = 0;\r\n\r\n for (const v of values) {\r\n cumulative += v || 0;\r\n if (cumulative > max) max = cumulative;\r\n if (cumulative < min) min = cumulative;\r\n }\r\n\r\n return {\r\n max,\r\n min,\r\n };\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n colorDomain,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n hideAxisLine,\r\n locale,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: barAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n\r\n const { max, min } = getWaterfallExtent(data.map(d => d.size));\r\n\r\n const maxVal = !checkIfNullOrUndefined(maxValue) ? (maxValue as number) : max;\r\n const minVal = !checkIfNullOrUndefined(minValue) ? (minValue as number) : min;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = useMemo(() => {\r\n const idSet = new Set<string>();\r\n\r\n const dataWithIdWithoutMissingIds = data.map((d, i) => {\r\n const id = labelOrder ? `${d.label}` : `${i}`;\r\n idSet.add(id);\r\n return { ...d, id };\r\n });\r\n\r\n const missingIds = labelOrder ? labelOrder.filter(id => !idSet.has(id)) : [];\r\n\r\n return [\r\n ...dataWithIdWithoutMissingIds,\r\n ...missingIds.map(id => ({\r\n id,\r\n label: id,\r\n color: null,\r\n size: null,\r\n })),\r\n ];\r\n }, [data, labelOrder]);\r\n\r\n const barOrder = useMemo(() => {\r\n return labelOrder ?? dataWithId.map(d => `${d.id}`);\r\n }, [labelOrder, dataWithId]);\r\n\r\n const y = scaleLinear().domain([minVal, maxVal]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphWidth, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphWidth, maxBarThickness * barOrder.length)\r\n : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const yTicks = y.ticks(noOfTicks);\r\n let running = 0;\r\n\r\n const waterfallData = dataWithId.map(d => {\r\n const start = running;\r\n running += d.size || 0;\r\n return {\r\n ...d,\r\n start,\r\n end: running,\r\n };\r\n });\r\n return (\r\n <>\r\n <motion.svg\r\n ref={svgRef}\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minVal < 0 ? 0 : minVal)}\r\n y2={y(minVal < 0 ? 0 : minVal)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n hideAxisLine={hideAxisLine}\r\n label={\r\n showTicks\r\n ? numberFormattingFunction(\r\n minVal < 0 ? 0 : minVal,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )\r\n : undefined\r\n }\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n dx: 0,\r\n dy: maxVal < 0 ? '1em' : -5,\r\n y: y(minVal < 0 ? 0 : minVal),\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{ axis: styles?.xAxis?.axis, label: styles?.yAxis?.labels }}\r\n />\r\n {showTicks ? (\r\n <YTicksAndGridLines\r\n values={yTicks.filter(d => d !== 0)}\r\n y={yTicks.filter(d => d !== 0).map(d => y(d))}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n styles={{\r\n gridLines: styles?.yAxis?.gridLines,\r\n labels: styles?.yAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.yAxis?.gridLines,\r\n labels: classNames?.yAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n labelPos='vertical'\r\n precision={precision}\r\n locale={locale}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={0 - leftMargin - 15}\r\n y={graphHeight / 2}\r\n style={styles?.yAxis?.title}\r\n className={classNames?.yAxis?.title}\r\n text={barAxisTitle}\r\n rotate90\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {waterfallData.map((d, _i) =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n },\r\n whileInView: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d)) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.size ? (\r\n <motion.rect\r\n width={x.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n x: x(`${d.id}`),\r\n y: y(d.start),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n },\r\n whileInView: {\r\n height: Math.abs(y(d.start) - y(d.end)),\r\n y: y(Math.max(d.start, d.end)),\r\n x: x(`${d.id}`),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(d.start),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues && Math.abs(y(d.start) - y(d.end)) > 16 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n opacity: 0,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n },\r\n whileInView: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.size ? Math.abs(d.size) : d.size,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineY\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n y={y(el.value as number)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { GraphContainer, GraphArea } from '@/Components/Elements/GraphContainer';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n ReferenceDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { checkIfNullOrUndefined } from '@/Utils';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: WaterfallChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color or array of colors for bars */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: string[];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Maximum thickness of bars */\r\n maxBarThickness?: number;\r\n /** Minimum thickness of bars */\r\n minBarThickness?: number;\r\n /** Maximum number of bars shown in the graph */\r\n maxNumberOfBars?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Custom order for labels */\r\n labelOrder?: string[];\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of axis line for the main axis */\r\n hideAxisLine?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedDataPoints?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Toggles if data point which are undefined or has value null are filtered out. */\r\n filterNA?: boolean;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Locale for number formatting. Must matches what `Intl.NumberFormat` expects. */\r\n locale?: string;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function WaterfallChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n barPadding = 0.25,\r\n showValues = true,\r\n showTicks = true,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n highlightedDataPoints,\r\n padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale = true,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n labelOrder,\r\n language = 'en',\r\n showNAColor = true,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n hideAxisLine = false,\r\n locale = 'en',\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {showColorScale && data.filter(el => el.color).length !== 0 && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={(colors as string[] | undefined) || Colors[theme].categoricalColors.colors}\r\n colorDomain={colorDomain || (uniqBy(data, 'color', true) as (string | number)[])}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length === 0 && (\r\n <EmptyState />\r\n )}\r\n {svgWidth &&\r\n svgHeight &&\r\n data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length > 0 ? (\r\n <Graph\r\n hideAxisLine={hideAxisLine}\r\n data={data\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))}\r\n barColor={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n data.filter(el => el.color).length === 0\r\n ? []\r\n : colorDomain || (uniqBy(data, 'color', true) as string[])\r\n }\r\n selectedColor={selectedColor}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n barPadding={barPadding}\r\n showValues={showValues}\r\n showTicks={showTicks}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n showLabels={showLabels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n classNames={classNames}\r\n styles={styles}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n locale={locale}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["getWaterfallExtent","values","cumulative","max","min","v","Graph","props","$","_c","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","data","width","height","barColor","suffix","prefix","barPadding","showLabels","showValues","showTicks","colorDomain","truncateBy","tooltip","onSeriesMouseOver","refValues","selectedColor","maxValue","minValue","highlightedDataPoints","onSeriesMouseClick","labelOrder","maxBarThickness","minBarThickness","detailsOnClick","barAxisTitle","noOfTicks","styles","classNames","dimmedOpacity","animate","precision","customLayers","naLabel","hideAxisLine","locale","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","map","_temp","maxVal","checkIfNullOrUndefined","minVal","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","d_0","i","id","d","label","add","missingIds","filter","id_0","has","_temp2","dataWithId","t8","_temp3","barOrder","y","scaleLinear","domain","range","nice","x","scaleBand","Math","length","paddingInner","yTicks","ticks","running","waterfallData","d_2","start","size","end","t9","xAxis","axis","t10","yAxis","labels","t11","t12","t13","t14","t15","t16","t17","title","t18","t19","AxisTitle","t20","_temp6","_temp7","T0","AnimatePresence","t21","d_8","_i","jsxs","motion","initial","opacity","color","indexOf","whileInView","transition","duration","event","clientY","clientX","isEqual","event_0","jsx","bandwidth","fill","_temp8","Colors","gray","abs","_temp9","XAxesLabels","substring","textAnchor","graphObjectValues","cn","_temp0","getTextColorBasedOnBgColor","_temp1","numberFormattingFunction","t22","Fragment","el_3","i_0","RefLineY","el","text","value","t23","t24","_temp10","_temp11","t25","Tooltip","t26","modal","DetailsModal","Axis","dx","dy","YTicksAndGridLines","_temp4","_temp5","d_5","gridLines","d_10","layer","d_9","position","el_2","el_1","el_0","d_7","d_6","d_4","d_3","d_1","id_1","WaterfallChart","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","padding","backgroundColor","relativeHeight","showColorScale","graphID","graphDownload","dataDownload","language","showNAColor","minHeight","theme","maxNumberOfBars","ariaLabel","filterNA","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t27","graphContainer","t28","t29","description","GraphHeader","t30","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t31","EmptyState","t32","_d","primaryColors","t33","GraphArea","t34","footnote","source","GraphFooter","t35","GraphContainer"],"mappings":"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"}
|