@undp/data-viz 2.2.1 → 2.2.3

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 (101) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.js +1 -1
  3. package/dist/Axis-D56Gy0se.js +31 -0
  4. package/dist/Axis-D56Gy0se.js.map +1 -0
  5. package/dist/Axis-Jt_tmhxS.cjs +2 -0
  6. package/dist/Axis-Jt_tmhxS.cjs.map +1 -0
  7. package/dist/BarGraph.cjs +1 -1
  8. package/dist/BarGraph.cjs.map +1 -1
  9. package/dist/BarGraph.d.ts +6 -0
  10. package/dist/BarGraph.js +1759 -1750
  11. package/dist/BarGraph.js.map +1 -1
  12. package/dist/BeeSwarmChart.cjs +1 -1
  13. package/dist/BeeSwarmChart.cjs.map +1 -1
  14. package/dist/BeeSwarmChart.d.ts +2 -0
  15. package/dist/BeeSwarmChart.js +270 -267
  16. package/dist/BeeSwarmChart.js.map +1 -1
  17. package/dist/BiVariateChoroplethMap.cjs +1 -1
  18. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  19. package/dist/BiVariateChoroplethMap.d.ts +2 -0
  20. package/dist/BiVariateChoroplethMap.js +264 -250
  21. package/dist/BiVariateChoroplethMap.js.map +1 -1
  22. package/dist/BulletChart.cjs +1 -1
  23. package/dist/BulletChart.cjs.map +1 -1
  24. package/dist/BulletChart.d.ts +2 -0
  25. package/dist/BulletChart.js +544 -542
  26. package/dist/BulletChart.js.map +1 -1
  27. package/dist/ButterflyChart.cjs +1 -1
  28. package/dist/ButterflyChart.cjs.map +1 -1
  29. package/dist/ButterflyChart.d.ts +2 -0
  30. package/dist/ButterflyChart.js +332 -330
  31. package/dist/ButterflyChart.js.map +1 -1
  32. package/dist/ChoroplethMap.cjs +1 -1
  33. package/dist/ChoroplethMap.cjs.map +1 -1
  34. package/dist/ChoroplethMap.d.ts +2 -0
  35. package/dist/ChoroplethMap.js +272 -258
  36. package/dist/ChoroplethMap.js.map +1 -1
  37. package/dist/DifferenceLineChart.cjs +1 -1
  38. package/dist/DifferenceLineChart.js +1 -1
  39. package/dist/DualAxisLineChart.cjs +1 -1
  40. package/dist/DualAxisLineChart.js +1 -1
  41. package/dist/DumbbellChart.cjs +1 -1
  42. package/dist/DumbbellChart.cjs.map +1 -1
  43. package/dist/DumbbellChart.d.ts +2 -0
  44. package/dist/DumbbellChart.js +537 -536
  45. package/dist/DumbbellChart.js.map +1 -1
  46. package/dist/GraphEl-BZbunD1_.cjs +2 -0
  47. package/dist/GraphEl-BZbunD1_.cjs.map +1 -0
  48. package/dist/{GraphEl-DKrjuQNB.js → GraphEl-C1Rz1V__.js} +68 -57
  49. package/dist/GraphEl-C1Rz1V__.js.map +1 -0
  50. package/dist/GriddedGraphs.cjs +1 -1
  51. package/dist/GriddedGraphs.d.ts +2 -0
  52. package/dist/GriddedGraphs.js +1 -1
  53. package/dist/GriddedGraphsFromConfig.d.ts +2 -0
  54. package/dist/Histogram.cjs +1 -1
  55. package/dist/Histogram.cjs.map +1 -1
  56. package/dist/Histogram.d.ts +2 -0
  57. package/dist/Histogram.js +50 -49
  58. package/dist/Histogram.js.map +1 -1
  59. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  60. package/dist/LineChartWithConfidenceInterval.js +1 -1
  61. package/dist/MultiGraphDashboard.d.ts +2 -0
  62. package/dist/MultiGraphDashboardFromConfig.d.ts +2 -0
  63. package/dist/MultiLineAltChart.cjs +1 -1
  64. package/dist/MultiLineAltChart.js +1 -1
  65. package/dist/MultiLineChart.cjs +1 -1
  66. package/dist/MultiLineChart.js +1 -1
  67. package/dist/ParetoChart.cjs +1 -1
  68. package/dist/ParetoChart.js +1 -1
  69. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +2 -0
  70. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +2 -0
  71. package/dist/PerformanceIntensiveScrollStory.d.ts +2 -0
  72. package/dist/ScatterPlot.cjs +1 -1
  73. package/dist/ScatterPlot.js +1 -1
  74. package/dist/ScrollStory.d.ts +2 -0
  75. package/dist/SimpleLineChart.cjs +1 -1
  76. package/dist/SimpleLineChart.js +1 -1
  77. package/dist/SingleGraphDashboard.cjs +1 -1
  78. package/dist/SingleGraphDashboard.d.ts +2 -0
  79. package/dist/SingleGraphDashboard.js +1 -1
  80. package/dist/SingleGraphDashboardFromConfig.d.ts +2 -0
  81. package/dist/SingleGraphDashboardGeoHubMaps.d.ts +2 -0
  82. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +2 -0
  83. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +2 -0
  84. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +2 -0
  85. package/dist/SlopeChart.cjs +1 -1
  86. package/dist/SlopeChart.js +1 -1
  87. package/dist/Types.d.ts +2 -0
  88. package/dist/WaterfallChart.cjs +1 -1
  89. package/dist/WaterfallChart.cjs.map +1 -1
  90. package/dist/WaterfallChart.d.ts +2 -0
  91. package/dist/WaterfallChart.js +263 -261
  92. package/dist/WaterfallChart.js.map +1 -1
  93. package/dist/index.d.ts +24 -0
  94. package/package.json +1 -1
  95. package/dist/Axis-DoOqnt6g.js +0 -32
  96. package/dist/Axis-DoOqnt6g.js.map +0 -1
  97. package/dist/Axis-Dtjn-EgM.cjs +0 -2
  98. package/dist/Axis-Dtjn-EgM.cjs.map +0 -1
  99. package/dist/GraphEl-CBZdcvb7.cjs +0 -2
  100. package/dist/GraphEl-CBZdcvb7.cjs.map +0 -1
  101. package/dist/GraphEl-DKrjuQNB.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}\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 } = 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 label={numberFormattingFunction(\r\n minVal < 0 ? 0 : minVal,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\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 />\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 )}\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 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 /** 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 } = 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 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 />\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","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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"}
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}\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 } = 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 naLabel,\r\n precision,\r\n prefix,\r\n suffix,\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 />\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 )}\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 /** 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 } = 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 />\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","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","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t28","graphContainer","t29","t30","description","GraphHeader","t31","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t32","EmptyState","t33","_d","primaryColors","t34","GraphArea","t35","footnote","source","GraphFooter","t36","GraphContainer"],"mappings":"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"}
@@ -121,6 +121,8 @@ declare interface Props {
121
121
  naLabel?: string;
122
122
  /** Toggle visibility of axis ticks */
123
123
  showTicks?: boolean;
124
+ /** Toggle visibility of axis line for the main axis */
125
+ hideAxisLine?: boolean;
124
126
  /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */
125
127
  showColorScale?: boolean;
126
128
  /** 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 */