@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.
Files changed (95) hide show
  1. package/dist/BarGraph.cjs +1 -1
  2. package/dist/BarGraph.cjs.map +1 -1
  3. package/dist/BarGraph.js +1360 -1363
  4. package/dist/BarGraph.js.map +1 -1
  5. package/dist/BeeSwarmChart.cjs +1 -1
  6. package/dist/BeeSwarmChart.cjs.map +1 -1
  7. package/dist/BeeSwarmChart.js +302 -305
  8. package/dist/BeeSwarmChart.js.map +1 -1
  9. package/dist/BiVariateChoroplethMap.cjs +1 -1
  10. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  11. package/dist/BiVariateChoroplethMap.js +4 -4
  12. package/dist/BiVariateChoroplethMap.js.map +1 -1
  13. package/dist/BulletChart.cjs +1 -1
  14. package/dist/BulletChart.cjs.map +1 -1
  15. package/dist/BulletChart.js +591 -594
  16. package/dist/BulletChart.js.map +1 -1
  17. package/dist/ChoroplethMap.cjs +1 -1
  18. package/dist/ChoroplethMap.cjs.map +1 -1
  19. package/dist/ChoroplethMap.js +4 -4
  20. package/dist/ChoroplethMap.js.map +1 -1
  21. package/dist/CirclePackingGraph.cjs +1 -1
  22. package/dist/CirclePackingGraph.js +1 -1
  23. package/dist/DotDensityMap.cjs +1 -1
  24. package/dist/DotDensityMap.cjs.map +1 -1
  25. package/dist/DotDensityMap.js +255 -258
  26. package/dist/DotDensityMap.js.map +1 -1
  27. package/dist/DumbbellChart.cjs +1 -1
  28. package/dist/DumbbellChart.cjs.map +1 -1
  29. package/dist/DumbbellChart.js +553 -556
  30. package/dist/DumbbellChart.js.map +1 -1
  31. package/dist/{GraphEl-Dorm_qQE.js → GraphEl-B73N4RIA.js} +2 -2
  32. package/dist/{GraphEl-Dorm_qQE.js.map → GraphEl-B73N4RIA.js.map} +1 -1
  33. package/dist/{GraphEl-D8WRC8-j.cjs → GraphEl-Lt1og0C-.cjs} +2 -2
  34. package/dist/{GraphEl-D8WRC8-j.cjs.map → GraphEl-Lt1og0C-.cjs.map} +1 -1
  35. package/dist/GriddedGraphs.cjs +1 -1
  36. package/dist/GriddedGraphs.js +1 -1
  37. package/dist/Histogram.cjs +1 -1
  38. package/dist/Histogram.js +1 -1
  39. package/dist/HybridMap.cjs +1 -1
  40. package/dist/HybridMap.cjs.map +1 -1
  41. package/dist/HybridMap.js +310 -313
  42. package/dist/HybridMap.js.map +1 -1
  43. package/dist/MultiLineAltChart.cjs +1 -1
  44. package/dist/MultiLineAltChart.cjs.map +1 -1
  45. package/dist/MultiLineAltChart.js +269 -272
  46. package/dist/MultiLineAltChart.js.map +1 -1
  47. package/dist/MultiLineChart.cjs +1 -1
  48. package/dist/MultiLineChart.cjs.map +1 -1
  49. package/dist/MultiLineChart.js +319 -322
  50. package/dist/MultiLineChart.js.map +1 -1
  51. package/dist/RadarChart.cjs +1 -1
  52. package/dist/RadarChart.cjs.map +1 -1
  53. package/dist/RadarChart.js +3 -3
  54. package/dist/RadarChart.js.map +1 -1
  55. package/dist/SankeyChart.cjs +1 -1
  56. package/dist/SankeyChart.cjs.map +1 -1
  57. package/dist/SankeyChart.js +274 -280
  58. package/dist/SankeyChart.js.map +1 -1
  59. package/dist/ScatterPlot.cjs +1 -1
  60. package/dist/ScatterPlot.cjs.map +1 -1
  61. package/dist/ScatterPlot.js +341 -344
  62. package/dist/ScatterPlot.js.map +1 -1
  63. package/dist/SingleGraphDashboard.cjs +1 -1
  64. package/dist/SingleGraphDashboard.js +1 -1
  65. package/dist/SlopeChart.cjs +1 -1
  66. package/dist/SlopeChart.cjs.map +1 -1
  67. package/dist/SlopeChart.js +251 -254
  68. package/dist/SlopeChart.js.map +1 -1
  69. package/dist/StripChart.cjs +1 -1
  70. package/dist/StripChart.cjs.map +1 -1
  71. package/dist/StripChart.js +292 -295
  72. package/dist/StripChart.js.map +1 -1
  73. package/dist/ThreeDGlobe.cjs +1 -1
  74. package/dist/ThreeDGlobe.cjs.map +1 -1
  75. package/dist/ThreeDGlobe.js +3 -3
  76. package/dist/ThreeDGlobe.js.map +1 -1
  77. package/dist/TreeMapGraph.cjs +1 -1
  78. package/dist/TreeMapGraph.cjs.map +1 -1
  79. package/dist/TreeMapGraph.js +196 -199
  80. package/dist/TreeMapGraph.js.map +1 -1
  81. package/dist/WaterfallChart.cjs +1 -1
  82. package/dist/WaterfallChart.cjs.map +1 -1
  83. package/dist/WaterfallChart.js +274 -277
  84. package/dist/WaterfallChart.js.map +1 -1
  85. package/dist/index-B0Awa_de.js +377 -0
  86. package/dist/index-B0Awa_de.js.map +1 -0
  87. package/dist/index-CP8cmNzt.cjs +2 -0
  88. package/dist/index-CP8cmNzt.cjs.map +1 -0
  89. package/dist/index.cjs +1 -1
  90. package/dist/index.js +1 -1
  91. package/package.json +1 -1
  92. package/dist/index-Bdo_HXb_.cjs +0 -2
  93. package/dist/index-Bdo_HXb_.cjs.map +0 -1
  94. package/dist/index-CGrBpeUa.js +0 -380
  95. package/dist/index-CGrBpeUa.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WaterfallChart.js","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.js","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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"}