@undp/data-viz 2.1.2 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AreaChart.cjs +1 -1
- package/dist/AreaChart.cjs.map +1 -1
- package/dist/AreaChart.js +281 -274
- package/dist/AreaChart.js.map +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.d.ts +2 -0
- package/dist/BarGraph.js +1795 -1724
- package/dist/BarGraph.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.js +312 -305
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +367 -356
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.js +224 -217
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +2 -2
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.js +406 -399
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.d.ts +10 -0
- package/dist/DonutChart.js +232 -263
- package/dist/DonutChart.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.js +320 -313
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +298 -291
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{EmptyState-BZo1BbAn.js → EmptyState-C7ZXkZWd.js} +4 -4
- package/dist/EmptyState-C7ZXkZWd.js.map +1 -0
- package/dist/EmptyState-gLDRXBHm.cjs +2 -0
- package/dist/EmptyState-gLDRXBHm.cjs.map +1 -0
- package/dist/GraphEl-C2Fgg8PA.cjs +2 -0
- package/dist/GraphEl-C2Fgg8PA.cjs.map +1 -0
- package/dist/{GraphEl-sVZvlyWe.js → GraphEl-oZwZiTHI.js} +6 -3
- package/dist/GraphEl-oZwZiTHI.js.map +1 -0
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.d.ts +1 -0
- package/dist/GriddedGraphs.js +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +1 -0
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.js +179 -172
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.js +370 -363
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/MultiGraphDashboard.d.ts +1 -0
- package/dist/MultiGraphDashboardFromConfig.d.ts +1 -0
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +328 -321
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +375 -368
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.js +385 -378
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -0
- package/dist/PerformanceIntensiveScrollStory.d.ts +1 -0
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.js +35 -34
- package/dist/RadarChart.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.js +176 -169
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.js +367 -360
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.d.ts +1 -0
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.js +286 -279
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.d.ts +1 -0
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +1 -0
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -0
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -0
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.js +243 -236
- package/dist/SlopeChart.js.map +1 -1
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.js +2 -2
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.js +293 -286
- package/dist/StripChart.js.map +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.js +222 -215
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.d.ts +1 -0
- package/dist/{area-BE2wo7fv.js → area-B6r7cv2o.js} +5 -5
- package/dist/{area-BE2wo7fv.js.map → area-B6r7cv2o.js.map} +1 -1
- package/dist/area-C1gxfNGD.cjs +2 -0
- package/dist/{area-D3Qx7k7K.cjs.map → area-C1gxfNGD.cjs.map} +1 -1
- package/dist/array-DMyR1sql.cjs +2 -0
- package/dist/array-DMyR1sql.cjs.map +1 -0
- package/dist/array-USo-Szhp.js +13 -0
- package/dist/array-USo-Szhp.js.map +1 -0
- package/dist/{ensureCompleteData-DS7gCvVd.js → ensureCompleteData-DH5c52Ub.js} +6 -6
- package/dist/{ensureCompleteData-DS7gCvVd.js.map → ensureCompleteData-DH5c52Ub.js.map} +1 -1
- package/dist/{ensureCompleteData-Oib-vGb0.cjs → ensureCompleteData-pZ9QO6kB.cjs} +2 -2
- package/dist/{ensureCompleteData-Oib-vGb0.cjs.map → ensureCompleteData-pZ9QO6kB.cjs.map} +1 -1
- package/dist/index-Blvf-Q3U.cjs +2 -0
- package/dist/{index-CF5hnGvG.cjs.map → index-Blvf-Q3U.cjs.map} +1 -1
- package/dist/index-D1RrKgK6.js +337 -0
- package/dist/index-D1RrKgK6.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1 -1
- package/dist/line-DFlZsxI1.js +144 -0
- package/dist/line-DFlZsxI1.js.map +1 -0
- package/dist/line-DaEMhXmx.cjs +2 -0
- package/dist/line-DaEMhXmx.cjs.map +1 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/EmptyState-BZo1BbAn.js.map +0 -1
- package/dist/EmptyState-sAEZ_5rU.cjs +0 -2
- package/dist/EmptyState-sAEZ_5rU.cjs.map +0 -1
- package/dist/GraphEl-YKUlz-37.cjs +0 -2
- package/dist/GraphEl-YKUlz-37.cjs.map +0 -1
- package/dist/GraphEl-sVZvlyWe.js.map +0 -1
- package/dist/area-D3Qx7k7K.cjs +0 -2
- package/dist/array-B7TkkRH0.js +0 -89
- package/dist/array-B7TkkRH0.js.map +0 -1
- package/dist/array-DKbXV8lR.cjs +0 -2
- package/dist/array-DKbXV8lR.cjs.map +0 -1
- package/dist/index-CF5hnGvG.cjs +0 -2
- package/dist/index-DPGq3eIL.js +0 -330
- package/dist/index-DPGq3eIL.js.map +0 -1
- package/dist/line-CPfhohvF.js +0 -68
- package/dist/line-CPfhohvF.js.map +0 -1
- package/dist/line-DHV4JwCR.cjs +0 -2
- package/dist/line-DHV4JwCR.cjs.map +0 -1
package/dist/BarGraph.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarGraph.cjs","sources":["../src/Components/Graphs/BarGraph/GroupedBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/GroupedBarGraph/index.tsx","../src/Components/Graphs/BarGraph/SimpleBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/SimpleBarGraph/index.tsx","../src/Components/Graphs/BarGraph/StackedBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/StackedBarGraph/index.tsx","../src/Components/Graphs/BarGraph/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 GroupedBarGraphDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n barColors: string[];\r\n barPadding: number;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n truncateBy: number;\r\n showLabels: boolean;\r\n width: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues: boolean;\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 maxValue: number;\r\n minValue: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n selectedColor?: string;\r\n rtl: boolean;\r\n labelOrder?: string[];\r\n maxBarThickness?: number;\r\n resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n colorDomain: string[];\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n}\r\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n barColors,\r\n barPadding,\r\n showTicks,\r\n truncateBy,\r\n width,\r\n height,\r\n suffix,\r\n prefix,\r\n showValues,\r\n showLabels,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n rtl,\r\n labelOrder,\r\n maxBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\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 size: Array(data[0].size.length).fill(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 x = scaleLinear().domain([minValue, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n maxBarThickness ? Math.min(graphHeight, maxBarThickness * barOrder.length) : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const subBarScale = scaleBand()\r\n .domain(data[0].size.map((_d, i) => `${i}`))\r\n .range([0, y.bandwidth()])\r\n .paddingInner(0.1);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n key={d.label}\r\n variants={{\r\n initial: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n },\r\n whileInView: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n {!checkIfNullOrUndefined(el) ? (\r\n <motion.rect\r\n y={subBarScale(`${j}`)}\r\n variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n width: !checkIfNullOrUndefined(el)\r\n ? (el as number) >= 0\r\n ? x(el as number) - x(0)\r\n : x(0) - x(el as number)\r\n : 0,\r\n x: (el as number) >= 0 ? x(0) : x(el as number),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n height={subBarScale.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(subBarScale(`${j}`) as number) + subBarScale.bandwidth() / 2}\r\n style={{\r\n textAnchor: el ? (el < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dx={el ? (el < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n variants={{\r\n initial: { x: x(0), opacity: 0, fill: valueColor || barColors[j] },\r\n whileInView: {\r\n x: x(el || 0),\r\n opacity: 1,\r\n fill: valueColor || barColors[j],\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(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\r\n {showLabels ? (\r\n <YAxesLabels\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={0}\r\n x={0 - margin.left}\r\n width={x(minValue < 0 ? 0 : minValue) + margin.left}\r\n height={y.bandwidth()}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n <Axis\r\n x1={x(minValue < 0 ? 0 : minValue)}\r\n x2={x(minValue < 0 ? 0 : minValue)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n width,\r\n height,\r\n barColors,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n labelOrder,\r\n maxBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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 // 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 size: Array(data[0].size.length).fill(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([minValue, maxValue]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n maxBarThickness ? Math.min(graphWidth, maxBarThickness * barOrder.length) : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const subBarScale = scaleBand()\r\n .domain(data[0].size.map((_d, i) => `${i}`))\r\n .range([0, x.bandwidth()])\r\n .paddingInner(0.1);\r\n const yTicks = y.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minValue < 0 ? 0 : minValue)}\r\n y2={y(minValue < 0 ? 0 : minValue)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minValue < 0 ? 0 : minValue,\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: maxValue < 0 ? '1em' : -5,\r\n y: y(minValue < 0 ? 0 : minValue),\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 {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n key={d.label}\r\n variants={{\r\n initial: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n },\r\n whileInView: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n <motion.rect\r\n x={subBarScale(`${j}`)}\r\n width={subBarScale.bandwidth()}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n y: y(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n height: !checkIfNullOrUndefined(el)\r\n ? Math.abs(y(el as number) - y(0))\r\n : 0,\r\n y: !checkIfNullOrUndefined(el)\r\n ? (el as number) > 0\r\n ? y(el as number)\r\n : y(0)\r\n : y(0),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={(subBarScale(`${j}`) as number) + subBarScale.bandwidth() / 2}\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={el ? (el >= 0 ? '-5px' : '1em') : '-5px'}\r\n variants={{\r\n initial: { y: y(0), opacity: 0, fill: valueColor || barColors[j] },\r\n whileInView: {\r\n y: y(el || 0),\r\n opacity: 1,\r\n fill: valueColor || barColors[j],\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(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\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={0}\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 </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, useMemo } from 'react';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport orderBy from 'lodash.orderby';\r\nimport sum from 'lodash.sum';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport {\r\n GroupedBarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForStackedBarChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n colors?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showTicks?: boolean;\r\n truncateBy?: number;\r\n colorDomain: string[];\r\n colorLegendTitle?: string;\r\n suffix?: string;\r\n prefix?: string;\r\n showValues?: boolean;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n showLabels?: boolean;\r\n bottomMargin?: number;\r\n relativeHeight?: number;\r\n sortParameter?: number | 'total';\r\n sortData?: 'asc' | 'desc';\r\n showColorScale?: boolean;\r\n minHeight?: 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 graphID?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n labelOrder?: string[];\r\n language?: Languages;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function GroupedBarGraphEl(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n sources,\r\n graphDescription,\r\n barPadding = 0.25,\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 suffix = '',\r\n prefix = '',\r\n showValues = true,\r\n showColorScale = true,\r\n padding,\r\n backgroundColor = false,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n labelOrder,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n sortParameter,\r\n sortData,\r\n orientation = 'vertical',\r\n } = props;\r\n\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorScale ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorDomain={colorDomain}\r\n colors={colors}\r\n colorLegendTitle={colorLegendTitle}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {svgWidth && svgHeight ? (\r\n <Comp\r\n data={\r\n sortParameter !== undefined\r\n ? sortParameter === 'total'\r\n ? orderBy(\r\n ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d => sum(d.size.filter(el => !checkIfNullOrUndefined(el))),\r\n [sortData || 'asc'],\r\n )\r\n : orderBy(\r\n ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d =>\r\n checkIfNullOrUndefined(d.size[sortParameter])\r\n ? -Infinity\r\n : d.size[sortParameter],\r\n [sortData || 'asc'],\r\n )\r\n : ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n ).filter(d => (filterNA ? !d.size.every(item => item == null) : d))\r\n }\r\n barColors={colors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n showValues={showValues}\r\n barPadding={barPadding}\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={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(\r\n ...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[]),\r\n ),\r\n ),\r\n ) < 0\r\n ? 0\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(\r\n ...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[]),\r\n ),\r\n ),\r\n )\r\n }\r\n minValue={\r\n !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(\r\n ...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[]),\r\n ),\r\n ),\r\n ) >= 0\r\n ? 0\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(\r\n ...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[]),\r\n ),\r\n ),\r\n )\r\n }\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n selectedColor={selectedColor}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n styles={styles}\r\n classNames={classNames}\r\n colorDomain={colorDomain}\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 precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </>\r\n )}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\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 sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n","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 BarGraphDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: BarGraphDataType[];\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 resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\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\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showValues,\r\n showTicks,\r\n truncateBy,\r\n width,\r\n height,\r\n colorDomain,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n showLabels,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n highlightedDataPoints,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n rtl,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n dimmedOpacity,\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 // 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 margin = {\r\n top: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\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 x = scaleLinear().domain([minValue, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphHeight, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphHeight, maxBarThickness * barOrder.length)\r\n : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\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 initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\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) && resetSelectionOnDoubleClick) {\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 variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n y: y(`${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 },\r\n whileInView: {\r\n width: d.size >= 0 ? x(d.size) - x(0) : x(0) - x(d.size),\r\n x: d.size >= 0 ? x(0) : x(d.size),\r\n y: y(`${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 initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n height={y.bandwidth()}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <YAxesLabels\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(d.id) || 0}\r\n x={(d.size || 0) < 0 ? x(0) : 0 - margin.left}\r\n width={(d.size || 0) < 0 ? width - x(0) : x(0) + margin.left}\r\n height={y.bandwidth()}\r\n alignment={d.size ? (d.size < 0 ? 'left' : 'right') : 'right'}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n style={{\r\n textAnchor: d.size ? (d.size < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-sm',\r\n !valueColor && barColor.length > 1\r\n ? ' fill-primary-gray-600 dark:fill-primary-gray-300'\r\n : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n dx={d.size ? (d.size < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n y: (y(`${d.id}`) as number) + y.bandwidth() / 2,\r\n opacity: 0,\r\n fill: valueColor\r\n ? valueColor\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 x: d.size ? x(d.size) : x(0),\r\n opacity: 1,\r\n y: (y(`${d.id}`) as number) + y.bandwidth() / 2,\r\n fill: valueColor\r\n ? valueColor\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 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(d.size, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n <Axis\r\n x1={x(minValue < 0 ? 0 : minValue)}\r\n x2={x(minValue < 0 ? 0 : minValue)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(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 resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\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 // 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([minValue, maxValue]).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 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(minValue < 0 ? 0 : minValue)}\r\n y2={y(minValue < 0 ? 0 : minValue)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minValue < 0 ? 0 : minValue,\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: maxValue < 0 ? '1em' : -5,\r\n y: y(minValue < 0 ? 0 : minValue),\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 {dataWithId.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) && resetSelectionOnDoubleClick) {\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(0),\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: d.size ? Math.abs(y(d.size) - y(0)) : 0,\r\n y: d.size ? (d.size > 0 ? y(d.size) : y(0)) : y(0),\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(0),\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={(d.size || 0) < 0 ? 0 : y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={(d.size || 0) < 0 ? y(0) - 5 : margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment={(d.size || 0) < 0 ? 'bottom' : 'top'}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-sm',\r\n !valueColor && barColor.length > 1\r\n ? ' fill-primary-gray-600 dark:fill-primary-gray-300'\r\n : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n dy={d.size ? (d.size >= 0 ? '-5px' : '1em') : '-5px'}\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: y(0),\r\n opacity: 0,\r\n fill: valueColor\r\n ? valueColor\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 x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: y(d.size || 0),\r\n fill: valueColor\r\n ? valueColor\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 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(d.size, naLabel, precision, prefix, suffix)}\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, useMemo } from 'react';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport {\r\n BarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForBarChart } from '@/Utils/ensureCompleteData';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: BarGraphDataType[];\r\n colors?: string | string[];\r\n labelOrder?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n minHeight?: number;\r\n suffix?: string;\r\n prefix?: string;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showValues?: boolean;\r\n showTicks?: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n truncateBy?: number;\r\n colorDomain?: string[];\r\n colorLegendTitle?: string;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n relativeHeight?: number;\r\n showLabels?: boolean;\r\n showColorScale?: boolean;\r\n maxValue?: number;\r\n minValue?: 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 graphID?: string;\r\n highlightedDataPoints?: (string | number)[];\r\n dimmedOpacity?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n sortData?: 'asc' | 'desc';\r\n language?: Languages;\r\n showNAColor?: boolean;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n maxNumberOfBars?: number;\r\n minBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function SimpleBarGraphEl(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 sortData,\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 resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\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 timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n orientation = 'vertical',\r\n } = props;\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center pb-4' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorScale && data.filter(el => el.color).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 {svgWidth && svgHeight ? (\r\n <Comp\r\n data={\r\n sortData\r\n ? orderBy(\r\n ensureCompleteDataForBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)),\r\n [\r\n d =>\r\n d.size === undefined\r\n ? sortData === 'asc'\r\n ? (orientation === 'horizontal' ? 1 : -1) * Infinity\r\n : (orientation === 'horizontal' ? -1 : 1) * Infinity\r\n : d.size,\r\n ],\r\n [sortData],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : ensureCompleteDataForBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n }\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={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n ) < 0\r\n ? 0\r\n : Math.max(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n )\r\n }\r\n minValue={\r\n !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n ) >= 0\r\n ? 0\r\n : Math.min(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n )\r\n }\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 resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\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 </>\r\n )}\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","import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport sum from 'lodash.sum';\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 GroupedBarGraphDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n barColors: string[];\r\n barPadding: number;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n showLabels: boolean;\r\n bottomMargin?: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues: boolean;\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 maxValue: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n selectedColor?: string;\r\n rtl: boolean;\r\n labelOrder?: string[];\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n colorDomain: string[];\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n}\r\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n barColors,\r\n barPadding,\r\n showTicks,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n truncateBy,\r\n width,\r\n height,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showLabels,\r\n suffix,\r\n prefix,\r\n showValues,\r\n refValues,\r\n maxValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n rtl,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\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 size: Array(data[0].size.length).fill(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 x = scaleLinear().domain([0, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphHeight, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphHeight, maxBarThickness * barOrder.length)\r\n : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-low-opacity undp-viz-g-with-hover'\r\n key={d.label}\r\n variants={{\r\n initial: { x: 0, y: y(`${d.id}`) },\r\n whileInView: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 1}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n {el ? (\r\n <motion.rect\r\n key={j}\r\n y={0}\r\n style={{ fill: barColors[j] }}\r\n height={y.bandwidth()}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n width: x(el || 0),\r\n x: x(\r\n j === 0 ? 0 : sum(d.size.filter((element, k) => k < j && element)),\r\n ),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={y.bandwidth() / 2}\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n dy='0.33em'\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n opacity: 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n },\r\n whileInView: {\r\n x:\r\n x(\r\n j === 0\r\n ? 0\r\n : sum(d.size.filter((element, k) => k < j && element)),\r\n ) +\r\n x(el || 0) / 2,\r\n opacity:\r\n el &&\r\n x(el) /\r\n numberFormattingFunction(el, naLabel, precision, prefix, suffix)\r\n .length >\r\n 12\r\n ? 1\r\n : 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\r\n {showLabels ? (\r\n <YAxesLabels\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={0}\r\n x={0 - margin.left}\r\n width={0 + margin.left}\r\n height={y.bandwidth()}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n className={cn(\r\n 'graph-value graph-value-total text-sm',\r\n !valueColor ? ' fill-primary-gray-700 dark:fill-primary-gray-300' : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n textAnchor: 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n y={y.bandwidth() / 2}\r\n dx={5}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n opacity: 0,\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n },\r\n whileInView: {\r\n x: x(sum(d.size.map(el => el || 0))),\r\n opacity: 1,\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(\r\n sum(d.size.filter(element => element)),\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 <Axis\r\n x1={x(0)}\r\n x2={x(0)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n width,\r\n height,\r\n barColors,\r\n barPadding,\r\n showLabels,\r\n showTicks,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix,\r\n prefix,\r\n showValues,\r\n refValues,\r\n maxValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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 // 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 size: Array(data[0].size.length).fill(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([0, maxValue]).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 return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(0)}\r\n y2={y(0)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(0, naLabel, precision, prefix, suffix)}\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n y: y(0),\r\n dx: 0,\r\n dy: -5,\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 {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-low-opacity undp-viz-g-with-hover'\r\n key={d.label}\r\n variants={{\r\n initial: { x: x(`${d.id}`), y: 0 },\r\n whileInView: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n transition={{ duration: animate.duration }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 1}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n <motion.rect\r\n x={0}\r\n width={x.bandwidth()}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n fill: barColors[j],\r\n y: y(0),\r\n },\r\n whileInView: {\r\n height: Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ),\r\n y: y(sum(d.size.filter((element, k) => k <= j && element))),\r\n fill: barColors[j],\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 height: 0,\r\n y: y(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={x.bandwidth() / 2}\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 y: y(0),\r\n opacity: 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n },\r\n whileInView: {\r\n y:\r\n y(sum(d.size.filter((element, k) => k <= j && element))) +\r\n Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ) /\r\n 2,\r\n opacity:\r\n el &&\r\n Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ) > 20\r\n ? 1\r\n : 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {numberFormattingFunction(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\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={0}\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 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n x={x.bandwidth() / 2}\r\n dy={-10}\r\n className={cn(\r\n 'graph-value graph-value-total',\r\n !valueColor\r\n ? 'fill-primary-gray-700 dark:fill-primary-gray-300 text-sm'\r\n : 'text-sm',\r\n classNames?.graphObjectValues,\r\n )}\r\n variants={{\r\n initial: {\r\n y: y(0),\r\n opacity: 0,\r\n ...(valueColor && { fill: valueColor }),\r\n },\r\n whileInView: {\r\n y: y(sum(d.size.map(el => el || 0))),\r\n opacity: 1,\r\n ...(valueColor && { fill: valueColor }),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(\r\n sum(d.size.filter(element => element)),\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, useMemo } from 'react';\r\nimport sum from 'lodash.sum';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport {\r\n GroupedBarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForStackedBarChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n colors?: string[];\r\n labelOrder?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showTicks?: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n truncateBy?: number;\r\n colorDomain: string[];\r\n colorLegendTitle?: string;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n suffix?: string;\r\n prefix?: string;\r\n showValues?: boolean;\r\n showLabels?: boolean;\r\n relativeHeight?: 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 graphID?: string;\r\n maxValue?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n language?: Languages;\r\n minHeight?: number;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n sortParameter?: number | 'total';\r\n sortData?: 'asc' | 'desc';\r\n maxNumberOfBars?: number;\r\n minBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n showColorScale?: boolean;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function StackedBarGraphEl(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n sources,\r\n graphDescription,\r\n barPadding = 0.25,\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 padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix = '',\r\n prefix = '',\r\n showLabels = true,\r\n relativeHeight,\r\n showValues = true,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n labelOrder,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n sortParameter,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n showColorScale = true,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n sortData,\r\n orientation = 'vertical',\r\n } = props;\r\n\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorScale ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorDomain={colorDomain}\r\n colors={colors}\r\n colorLegendTitle={colorLegendTitle}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {svgWidth && svgHeight ? (\r\n <Comp\r\n data={\r\n sortParameter !== undefined\r\n ? sortParameter === 'total'\r\n ? orderBy(\r\n ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d => sum(d.size.filter(el => !checkIfNullOrUndefined(el))),\r\n [sortData || 'asc'],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : orderBy(\r\n ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d =>\r\n checkIfNullOrUndefined(d.size[sortParameter])\r\n ? -Infinity\r\n : d.size[sortParameter],\r\n [sortData || 'asc'],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n }\r\n barColors={colors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n suffix={suffix}\r\n prefix={prefix}\r\n refValues={refValues}\r\n maxValue={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data.map(\r\n d => sum(d.size.filter(l => !checkIfNullOrUndefined(l))) || 0,\r\n ),\r\n )\r\n }\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n selectedColor={selectedColor}\r\n rtl={language === 'he' || language === 'ar'}\r\n labelOrder={labelOrder}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\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 colorDomain={colorDomain}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </>\r\n )}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\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 sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n","import { GroupedBarGraphEl } from './GroupedBarGraph';\r\nimport { SimpleBarGraphEl } from './SimpleBarGraph';\r\nimport { StackedBarGraphEl } from './StackedBarGraph';\r\n\r\nimport {\r\n ReferenceDataType,\r\n BarGraphDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n GroupedBarGraphDataType,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: BarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Color of value labels */\r\n valueColor?: 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 /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 SimpleBarGraph(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n barPadding,\r\n showTicks,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n truncateBy,\r\n showLabels,\r\n showValues,\r\n backgroundColor,\r\n suffix,\r\n prefix,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n padding,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n theme,\r\n sortData,\r\n labelOrder,\r\n showNAColor,\r\n minHeight,\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n timeline,\r\n naLabel,\r\n } = props;\r\n return (\r\n <SimpleBarGraphEl\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n backgroundColor={backgroundColor}\r\n suffix={suffix}\r\n prefix={prefix}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n padding={padding}\r\n relativeHeight={relativeHeight}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n showColorScale={showColorScale}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n theme={theme}\r\n sortData={sortData}\r\n labelOrder={labelOrder}\r\n showNAColor={showNAColor}\r\n minHeight={minHeight}\r\n maxBarThickness={maxBarThickness}\r\n maxNumberOfBars={maxNumberOfBars}\r\n minBarThickness={minBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n orientation={orientation}\r\n />\r\n );\r\n}\r\n\r\ninterface GroupedBarChartProps {\r\n // Data\r\n /** Array of data objects */\r\n data: GroupedBarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Array of colors for different bars in the group */\r\n colors?: 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 /** Color of value labels */\r\n valueColor?: 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\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 /** Toggles if data points which have all the values as undefined or null are filtered out. */\r\n filterNA?: boolean;\r\n /** Parameter to sort the data. If a number is provided, it refers to the index of the size array to determine which value to sort by. If set to total, it sorts by the sum of all the values. */\r\n sortParameter?: number | 'total';\r\n /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\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 /** 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 /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 GroupedBarGraph(props: GroupedBarChartProps) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n sources,\r\n graphDescription,\r\n barPadding,\r\n showTicks,\r\n truncateBy,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n suffix,\r\n prefix,\r\n showValues,\r\n padding,\r\n backgroundColor,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n showLabels,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n labelOrder,\r\n minHeight,\r\n theme,\r\n sortParameter,\r\n sortData,\r\n maxBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n precision,\r\n customLayers,\r\n showColorScale,\r\n timeline,\r\n naLabel,\r\n } = props;\r\n\r\n return (\r\n <GroupedBarGraphEl\r\n orientation={orientation}\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n barPadding={barPadding}\r\n showTicks={showTicks}\r\n truncateBy={truncateBy}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n suffix={suffix}\r\n prefix={prefix}\r\n showValues={showValues}\r\n padding={padding}\r\n backgroundColor={backgroundColor}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n sortParameter={sortParameter}\r\n sortData={sortData}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n showLabels={showLabels}\r\n relativeHeight={relativeHeight}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n labelOrder={labelOrder}\r\n minHeight={minHeight}\r\n theme={theme}\r\n maxBarThickness={maxBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n precision={precision}\r\n customLayers={customLayers}\r\n showColorScale={showColorScale}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n />\r\n );\r\n}\r\n\r\ninterface StackedBarChartProps {\r\n // Data\r\n /** Array of data objects */\r\n data: GroupedBarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Array of colors for different bars in the group */\r\n colors?: 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 /** Color of value labels */\r\n valueColor?: 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 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 /** 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 /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Parameter to sort the data. If a number is provided, it refers to the index of the size array to determine which value to sort by. If set to total, it sorts by the sum of all the values. */\r\n sortParameter?: number | 'total';\r\n /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\r\n /** Toggles if data points which have all the values as undefined or 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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 StackedBarGraph(props: StackedBarChartProps) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n sources,\r\n graphDescription,\r\n barPadding,\r\n showTicks,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n truncateBy,\r\n showLabels,\r\n showValues,\r\n backgroundColor,\r\n suffix,\r\n prefix,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n padding,\r\n tooltip,\r\n onSeriesMouseOver,\r\n relativeHeight,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n theme,\r\n labelOrder,\r\n minHeight,\r\n maxBarThickness,\r\n sortParameter,\r\n sortData,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n precision,\r\n customLayers,\r\n showColorScale,\r\n timeline,\r\n naLabel,\r\n } = props;\r\n\r\n return (\r\n <StackedBarGraphEl\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n backgroundColor={backgroundColor}\r\n suffix={suffix}\r\n prefix={prefix}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n padding={padding}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n relativeHeight={relativeHeight}\r\n refValues={refValues}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n theme={theme}\r\n labelOrder={labelOrder}\r\n minHeight={minHeight}\r\n maxBarThickness={maxBarThickness}\r\n sortParameter={sortParameter}\r\n sortData={sortData}\r\n maxNumberOfBars={maxNumberOfBars}\r\n minBarThickness={minBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n precision={precision}\r\n customLayers={customLayers}\r\n showColorScale={showColorScale}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n orientation={orientation}\r\n />\r\n );\r\n}\r\n"],"names":["HorizontalGraph","props","$","_c","data","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","barColors","barPadding","showTicks","truncateBy","width","height","suffix","prefix","showValues","showLabels","tooltip","onSeriesMouseOver","refValues","maxValue","minValue","onSeriesMouseClick","selectedColor","rtl","labelOrder","maxBarThickness","resetSelectionOnDoubleClick","detailsOnClick","barAxisTitle","valueColor","noOfTicks","styles","classNames","animate","colorDomain","precision","customLayers","naLabel","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","map","d","i","id","label","add","missingIds","filter","id_0","has","t8","size","length","id_1","Array","fill","dataWithId","_temp","barOrder","T0","T1","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t9","graphObjectValues","xAxis","gridLines","labels","title","yAxis","axis","x","scaleLinear","domain","range","nice","y","scaleBand","Math","min","paddingInner","subBarScale","_temp2","bandwidth","xTicks","ticks","motion","svg","jsx","XTicksAndGridLines","_temp3","_temp4","d_3","t21","t22","t23","t24","AxisTitle","_temp5","_temp6","AnimatePresence","d_6","checkIfNullOrUndefined","jsxs","initial","whileInView","transition","duration","opacity","el","j","event","sizeIndex","clientY","clientX","event_0","isEqual","textAnchor","cn","numberFormattingFunction","YAxesLabels","substring","t25","t26","t27","t28","Axis","el_0","i_1","RefLineX","text","color","value","_temp7","_temp8","Tooltip","modal","DetailsModal","Fragment","d_8","layer","d_7","position","d_5","d_4","d_2","d_1","_d","i_0","d_0","VerticalGraph","_temp9","_temp0","yTicks","t29","t30","dx","dy","YTicksAndGridLines","_temp1","_temp10","t31","t32","t33","t34","_temp11","_temp12","abs","XAxesLabels","RefLineY","_temp13","_temp14","GroupedBarGraphEl","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","showColorScale","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","minHeight","theme","ariaLabel","filterNA","timeline","sortParameter","sortData","orientation","Colors","light","categoricalColors","enabled","autoplay","showOnlyActiveDate","Comp","svgWidth","setSvgWidth","svgHeight","setSvgHeight","play","setPlay","dates","dateFormat","parse","date","Date","getTime","sort","uniqDatesSorted","index","setIndex","setSelectedColor","graphDiv","graphParentDiv","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","speed","interval","setInterval","clearInterval","getSliderMarks","markObj","graphContainer","description","GraphHeader","t35","Pause","Play","SliderUI","nextValue","indexOf","nextValue_0","t36","EmptyState","ColorLegendWithMouseOver","colorLegend","GraphArea","orderBy","ensureCompleteDataForStackedBarChart","format","every","d_9","d_10","d_12","max","_temp16","_temp18","t37","footnote","source","GraphFooter","t38","GraphContainer","d_15","_temp17","l_1","l","d_16","_temp15","l_2","d_13","d_14","l_0","item_1","item","item_0","sum","a","b","barColor","highlightedDataPoints","minBarThickness","dimmedOpacity","gray","el_3","el_2","el_1","_i","_temp19","_temp20","_temp21","_temp22","SimpleBarGraphEl","showNAColor","maxNumberOfBars","t39","uniqBy","ensureCompleteDataForBarChart","Infinity","_d_0","primaryColors","t40","t41","d_18","d_17","d_11","element","k","getTextColorBasedOnBgColor","element_0","k_0","element_1","k_1","element_2","k_2","element_3","k_3","element_4","k_4","element_5","k_5","element_6","k_6","element_7","StackedBarGraphEl","_d_1","i_2","SimpleBarGraph","GroupedBarGraph","StackedBarGraph"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BarGraph.cjs","sources":["../src/Components/Graphs/BarGraph/GroupedBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/GroupedBarGraph/index.tsx","../src/Components/Graphs/BarGraph/SimpleBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/SimpleBarGraph/index.tsx","../src/Components/Graphs/BarGraph/StackedBarGraph/Graph.tsx","../src/Components/Graphs/BarGraph/StackedBarGraph/index.tsx","../src/Components/Graphs/BarGraph/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 GroupedBarGraphDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n barColors: string[];\r\n barPadding: number;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n truncateBy: number;\r\n showLabels: boolean;\r\n width: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues: boolean;\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 maxValue: number;\r\n minValue: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n selectedColor?: string;\r\n rtl: boolean;\r\n labelOrder?: string[];\r\n maxBarThickness?: number;\r\n resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n colorDomain: string[];\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n}\r\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n barColors,\r\n barPadding,\r\n showTicks,\r\n truncateBy,\r\n width,\r\n height,\r\n suffix,\r\n prefix,\r\n showValues,\r\n showLabels,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n rtl,\r\n labelOrder,\r\n maxBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\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 size: Array(data[0].size.length).fill(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 x = scaleLinear().domain([minValue, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n maxBarThickness ? Math.min(graphHeight, maxBarThickness * barOrder.length) : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const subBarScale = scaleBand()\r\n .domain(data[0].size.map((_d, i) => `${i}`))\r\n .range([0, y.bandwidth()])\r\n .paddingInner(0.1);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n key={d.label}\r\n variants={{\r\n initial: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n },\r\n whileInView: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n {!checkIfNullOrUndefined(el) ? (\r\n <motion.rect\r\n y={subBarScale(`${j}`)}\r\n variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n width: !checkIfNullOrUndefined(el)\r\n ? (el as number) >= 0\r\n ? x(el as number) - x(0)\r\n : x(0) - x(el as number)\r\n : 0,\r\n x: (el as number) >= 0 ? x(0) : x(el as number),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n height={subBarScale.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(subBarScale(`${j}`) as number) + subBarScale.bandwidth() / 2}\r\n style={{\r\n textAnchor: el ? (el < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dx={el ? (el < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n variants={{\r\n initial: { x: x(0), opacity: 0, fill: valueColor || barColors[j] },\r\n whileInView: {\r\n x: x(el || 0),\r\n opacity: 1,\r\n fill: valueColor || barColors[j],\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(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\r\n {showLabels ? (\r\n <YAxesLabels\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={0}\r\n x={0 - margin.left}\r\n width={x(minValue < 0 ? 0 : minValue) + margin.left}\r\n height={y.bandwidth()}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n <Axis\r\n x1={x(minValue < 0 ? 0 : minValue)}\r\n x2={x(minValue < 0 ? 0 : minValue)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n width,\r\n height,\r\n barColors,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n labelOrder,\r\n maxBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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 // 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 size: Array(data[0].size.length).fill(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([minValue, maxValue]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n maxBarThickness ? Math.min(graphWidth, maxBarThickness * barOrder.length) : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const subBarScale = scaleBand()\r\n .domain(data[0].size.map((_d, i) => `${i}`))\r\n .range([0, x.bandwidth()])\r\n .paddingInner(0.1);\r\n const yTicks = y.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minValue < 0 ? 0 : minValue)}\r\n y2={y(minValue < 0 ? 0 : minValue)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minValue < 0 ? 0 : minValue,\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: maxValue < 0 ? '1em' : -5,\r\n y: y(minValue < 0 ? 0 : minValue),\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 {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n key={d.label}\r\n variants={{\r\n initial: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n },\r\n whileInView: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n <motion.rect\r\n x={subBarScale(`${j}`)}\r\n width={subBarScale.bandwidth()}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n y: y(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n height: !checkIfNullOrUndefined(el)\r\n ? Math.abs(y(el as number) - y(0))\r\n : 0,\r\n y: !checkIfNullOrUndefined(el)\r\n ? (el as number) > 0\r\n ? y(el as number)\r\n : y(0)\r\n : y(0),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={(subBarScale(`${j}`) as number) + subBarScale.bandwidth() / 2}\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={el ? (el >= 0 ? '-5px' : '1em') : '-5px'}\r\n variants={{\r\n initial: { y: y(0), opacity: 0, fill: valueColor || barColors[j] },\r\n whileInView: {\r\n y: y(el || 0),\r\n opacity: 1,\r\n fill: valueColor || barColors[j],\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(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\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={0}\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 </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, useMemo } from 'react';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport orderBy from 'lodash.orderby';\r\nimport sum from 'lodash.sum';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport {\r\n GroupedBarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForStackedBarChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n colors?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showTicks?: boolean;\r\n truncateBy?: number;\r\n colorDomain: string[];\r\n colorLegendTitle?: string;\r\n suffix?: string;\r\n prefix?: string;\r\n showValues?: boolean;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n showLabels?: boolean;\r\n bottomMargin?: number;\r\n relativeHeight?: number;\r\n sortParameter?: number | 'total';\r\n sortData?: 'asc' | 'desc';\r\n showColorScale?: boolean;\r\n minHeight?: 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 graphID?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n labelOrder?: string[];\r\n language?: Languages;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function GroupedBarGraphEl(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n sources,\r\n graphDescription,\r\n barPadding = 0.25,\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 suffix = '',\r\n prefix = '',\r\n showValues = true,\r\n showColorScale = true,\r\n padding,\r\n backgroundColor = false,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n labelOrder,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n sortParameter,\r\n sortData,\r\n orientation = 'vertical',\r\n } = props;\r\n\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {showColorScale && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorDomain={colorDomain}\r\n colors={colors}\r\n colorLegendTitle={colorLegendTitle}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && data.length > 0 ? (\r\n <Comp\r\n data={\r\n sortParameter !== undefined\r\n ? sortParameter === 'total'\r\n ? orderBy(\r\n ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d => sum(d.size.filter(el => !checkIfNullOrUndefined(el))),\r\n [sortData || 'asc'],\r\n )\r\n : orderBy(\r\n ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d =>\r\n checkIfNullOrUndefined(d.size[sortParameter])\r\n ? -Infinity\r\n : d.size[sortParameter],\r\n [sortData || 'asc'],\r\n )\r\n : ensureCompleteDataForStackedBarChart(\r\n data,\r\n timeline.dateFormat || 'yyyy',\r\n ).filter(d => (filterNA ? !d.size.every(item => item == null) : d))\r\n }\r\n barColors={colors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n showValues={showValues}\r\n barPadding={barPadding}\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={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n ) < 0\r\n ? 0\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n )\r\n }\r\n minValue={\r\n !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n ) >= 0\r\n ? 0\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(...(d.size.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n )\r\n }\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n selectedColor={selectedColor}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n styles={styles}\r\n classNames={classNames}\r\n colorDomain={colorDomain}\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 precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\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 sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n","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 BarGraphDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: BarGraphDataType[];\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 resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\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 trackColor?: string;\r\n}\r\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showValues,\r\n showTicks,\r\n truncateBy,\r\n width,\r\n height,\r\n colorDomain,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n showLabels,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n highlightedDataPoints,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n rtl,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n trackColor,\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 // 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 margin = {\r\n top: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\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 x = scaleLinear().domain([minValue, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphHeight, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphHeight, maxBarThickness * barOrder.length)\r\n : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\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 initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\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) && resetSelectionOnDoubleClick) {\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 {trackColor && (\r\n <motion.rect\r\n height={y.bandwidth()}\r\n variants={{\r\n initial: {\r\n width: graphWidth,\r\n x: 0,\r\n y: y(`${d.id}`),\r\n fill: trackColor,\r\n },\r\n whileInView: {\r\n width: graphWidth,\r\n x: 0,\r\n y: y(`${d.id}`),\r\n fill: trackColor,\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n />\r\n )}\r\n {d.size ? (\r\n <motion.rect\r\n variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n y: y(`${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 },\r\n whileInView: {\r\n width: d.size >= 0 ? x(d.size) - x(0) : x(0) - x(d.size),\r\n x: d.size >= 0 ? x(0) : x(d.size),\r\n y: y(`${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 initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n height={y.bandwidth()}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <YAxesLabels\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(d.id) || 0}\r\n x={(d.size || 0) < 0 ? x(0) : 0 - margin.left}\r\n width={(d.size || 0) < 0 ? width - x(0) : x(0) + margin.left}\r\n height={y.bandwidth()}\r\n alignment={d.size ? (d.size < 0 ? 'left' : 'right') : 'right'}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n style={{\r\n textAnchor: d.size ? (d.size < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-sm',\r\n !valueColor && barColor.length > 1\r\n ? ' fill-primary-gray-600 dark:fill-primary-gray-300'\r\n : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n dx={d.size ? (d.size < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n y: (y(`${d.id}`) as number) + y.bandwidth() / 2,\r\n opacity: 0,\r\n fill: valueColor\r\n ? valueColor\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 x: d.size ? x(d.size) : x(0),\r\n opacity: 1,\r\n y: (y(`${d.id}`) as number) + y.bandwidth() / 2,\r\n fill: valueColor\r\n ? valueColor\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 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(d.size, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n <Axis\r\n x1={x(minValue < 0 ? 0 : minValue)}\r\n x2={x(minValue < 0 ? 0 : minValue)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(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 resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\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 trackColor,\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 // 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([minValue, maxValue]).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 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(minValue < 0 ? 0 : minValue)}\r\n y2={y(minValue < 0 ? 0 : minValue)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minValue < 0 ? 0 : minValue,\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: maxValue < 0 ? '1em' : -5,\r\n y: y(minValue < 0 ? 0 : minValue),\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 {dataWithId.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) && resetSelectionOnDoubleClick) {\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 {trackColor && (\r\n <motion.rect\r\n width={x.bandwidth()}\r\n variants={{\r\n initial: {\r\n height: graphHeight,\r\n y: 0,\r\n x: x(`${d.id}`),\r\n fill: trackColor,\r\n },\r\n whileInView: {\r\n height: graphHeight,\r\n y: 0,\r\n x: x(`${d.id}`),\r\n fill: trackColor,\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\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(0),\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: d.size ? Math.abs(y(d.size) - y(0)) : 0,\r\n y: d.size ? (d.size > 0 ? y(d.size) : y(0)) : y(0),\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(0),\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={(d.size || 0) < 0 ? 0 : y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={(d.size || 0) < 0 ? y(0) - 5 : margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment={(d.size || 0) < 0 ? 'bottom' : 'top'}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-sm',\r\n !valueColor && barColor.length > 1\r\n ? ' fill-primary-gray-600 dark:fill-primary-gray-300'\r\n : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n dy={d.size ? (d.size >= 0 ? '-5px' : '1em') : '-5px'}\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: y(0),\r\n opacity: 0,\r\n fill: valueColor\r\n ? valueColor\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 x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: y(d.size || 0),\r\n fill: valueColor\r\n ? valueColor\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 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(d.size, naLabel, precision, prefix, suffix)}\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, useMemo } from 'react';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport {\r\n BarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForBarChart } from '@/Utils/ensureCompleteData';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: BarGraphDataType[];\r\n colors?: string | string[];\r\n labelOrder?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n minHeight?: number;\r\n suffix?: string;\r\n prefix?: string;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showValues?: boolean;\r\n showTicks?: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n truncateBy?: number;\r\n colorDomain?: string[];\r\n colorLegendTitle?: string;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n relativeHeight?: number;\r\n showLabels?: boolean;\r\n showColorScale?: boolean;\r\n maxValue?: number;\r\n minValue?: number;\r\n trackColor?: string;\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 graphID?: string;\r\n highlightedDataPoints?: (string | number)[];\r\n dimmedOpacity?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n sortData?: 'asc' | 'desc';\r\n language?: Languages;\r\n showNAColor?: boolean;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n maxNumberOfBars?: number;\r\n minBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function SimpleBarGraphEl(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 sortData,\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 resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\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 timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n orientation = 'vertical',\r\n trackColor,\r\n } = props;\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center pb-4' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\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.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && data.length > 0 ? (\r\n <Comp\r\n data={\r\n sortData\r\n ? orderBy(\r\n ensureCompleteDataForBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(new Date(uniqDatesSorted[index]), timeline.dateFormat || 'yyyy')\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)),\r\n [\r\n d =>\r\n d.size === undefined\r\n ? sortData === 'asc'\r\n ? (orientation === 'horizontal' ? 1 : -1) * Infinity\r\n : (orientation === 'horizontal' ? -1 : 1) * Infinity\r\n : d.size,\r\n ],\r\n [sortData],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : ensureCompleteDataForBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(new Date(uniqDatesSorted[index]), timeline.dateFormat || 'yyyy')\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n }\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 trackColor={trackColor}\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={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n ) < 0\r\n ? 0\r\n : Math.max(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n )\r\n }\r\n minValue={\r\n !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n ) >= 0\r\n ? 0\r\n : Math.min(\r\n ...data\r\n .filter(d => !checkIfNullOrUndefined(d.size))\r\n .map(d => d.size as number),\r\n )\r\n }\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 resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\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","import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport sum from 'lodash.sum';\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 GroupedBarGraphDataType,\r\n ReferenceDataType,\r\n StyleObject,\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 { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineX, 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\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n barColors: string[];\r\n barPadding: number;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n showLabels: boolean;\r\n bottomMargin?: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues: boolean;\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 maxValue: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n selectedColor?: string;\r\n rtl: boolean;\r\n labelOrder?: string[];\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n resetSelectionOnDoubleClick: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n colorDomain: string[];\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n}\r\n\r\nexport function HorizontalGraph(props: Props) {\r\n const {\r\n data,\r\n barColors,\r\n barPadding,\r\n showTicks,\r\n topMargin = 25,\r\n bottomMargin = 10,\r\n leftMargin = 100,\r\n rightMargin = 40,\r\n truncateBy,\r\n width,\r\n height,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showLabels,\r\n suffix,\r\n prefix,\r\n showValues,\r\n refValues,\r\n maxValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n rtl,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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: barAxisTitle ? topMargin + 25 : topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\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 size: Array(data[0].size.length).fill(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 x = scaleLinear().domain([0, maxValue]).range([0, graphWidth]).nice();\r\n const y = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphHeight, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphHeight, maxBarThickness * barOrder.length)\r\n : graphHeight,\r\n ])\r\n .paddingInner(barPadding);\r\n const xTicks = x.ticks(noOfTicks);\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 {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xTicks.filter(d => d !== 0)}\r\n x={xTicks.filter(d => d !== 0).map(d => x(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={graphWidth / 2}\r\n y={0 - margin.top + 15}\r\n style={styles?.xAxis?.title}\r\n className={classNames?.xAxis?.title}\r\n text={barAxisTitle}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(y(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-low-opacity undp-viz-g-with-hover'\r\n key={d.label}\r\n variants={{\r\n initial: { x: 0, y: y(`${d.id}`) },\r\n whileInView: {\r\n x: 0,\r\n y: y(`${d.id}`),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 1}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n {el ? (\r\n <motion.rect\r\n key={j}\r\n y={0}\r\n style={{ fill: barColors[j] }}\r\n height={y.bandwidth()}\r\n exit={{\r\n width: 0,\r\n x: x(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n width: 0,\r\n x: x(0),\r\n fill: barColors[j],\r\n },\r\n whileInView: {\r\n width: x(el || 0),\r\n x: x(\r\n j === 0 ? 0 : sum(d.size.filter((element, k) => k < j && element)),\r\n ),\r\n fill: barColors[j],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={y.bandwidth() / 2}\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n dy='0.33em'\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n opacity: 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n },\r\n whileInView: {\r\n x:\r\n x(\r\n j === 0\r\n ? 0\r\n : sum(d.size.filter((element, k) => k < j && element)),\r\n ) +\r\n x(el || 0) / 2,\r\n opacity:\r\n el &&\r\n x(el) /\r\n numberFormattingFunction(el, naLabel, precision, prefix, suffix)\r\n .length >\r\n 12\r\n ? 1\r\n : 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\r\n {showLabels ? (\r\n <YAxesLabels\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={0}\r\n x={0 - margin.left}\r\n width={0 + margin.left}\r\n height={y.bandwidth()}\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n className={cn(\r\n 'graph-value graph-value-total text-sm',\r\n !valueColor ? ' fill-primary-gray-700 dark:fill-primary-gray-300' : '',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n textAnchor: 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n y={y.bandwidth() / 2}\r\n dx={5}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: x(0),\r\n opacity: 0,\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n },\r\n whileInView: {\r\n x: x(sum(d.size.map(el => el || 0))),\r\n opacity: 1,\r\n ...(valueColor ? { fill: valueColor } : {}),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(\r\n sum(d.size.filter(element => element)),\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 <Axis\r\n x1={x(0)}\r\n x2={x(0)}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={x(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide={x(el.value as number) > graphWidth * 0.75 || rtl ? 'left' : '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\r\nexport function VerticalGraph(props: Props) {\r\n const {\r\n data,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n width,\r\n height,\r\n barColors,\r\n barPadding,\r\n showLabels,\r\n showTicks,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix,\r\n prefix,\r\n showValues,\r\n refValues,\r\n maxValue,\r\n onSeriesMouseClick,\r\n selectedColor,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n valueColor,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n animate,\r\n colorDomain,\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 // 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 size: Array(data[0].size.length).fill(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([0, maxValue]).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 return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(0)}\r\n y2={y(0)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(0, naLabel, precision, prefix, suffix)}\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n y: y(0),\r\n dx: 0,\r\n dy: -5,\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 {dataWithId.map(d =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-low-opacity undp-viz-g-with-hover'\r\n key={d.label}\r\n variants={{\r\n initial: { x: x(`${d.id}`), y: 0 },\r\n whileInView: {\r\n x: x(`${d.id}`),\r\n y: 0,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n transition={{ duration: animate.duration }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {d.size.map((el, j) => (\r\n <motion.g\r\n key={`${d.label}-${colorDomain[j] || j}`}\r\n opacity={selectedColor ? (barColors[j] === selectedColor ? 1 : 0.3) : 1}\r\n onMouseEnter={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.({ ...d, sizeIndex: j });\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData({ ...d, sizeIndex: j });\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 onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n isEqual(mouseClickData, { ...d, sizeIndex: j }) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData({ ...d, sizeIndex: j });\r\n if (onSeriesMouseClick) onSeriesMouseClick({ ...d, sizeIndex: j });\r\n }\r\n }\r\n }}\r\n >\r\n <motion.rect\r\n x={0}\r\n width={x.bandwidth()}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n fill: barColors[j],\r\n y: y(0),\r\n },\r\n whileInView: {\r\n height: Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ),\r\n y: y(sum(d.size.filter((element, k) => k <= j && element))),\r\n fill: barColors[j],\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 height: 0,\r\n y: y(0),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={x.bandwidth() / 2}\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 y: y(0),\r\n opacity: 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n },\r\n whileInView: {\r\n y:\r\n y(sum(d.size.filter((element, k) => k <= j && element))) +\r\n Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ) /\r\n 2,\r\n opacity:\r\n el &&\r\n Math.abs(\r\n y(sum(d.size.filter((element, k) => k <= j && element))) -\r\n y(sum(d.size.filter((element, k) => k < j && element))),\r\n ) > 20\r\n ? 1\r\n : 0,\r\n fill: getTextColorBasedOnBgColor(barColors[j]),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {numberFormattingFunction(el, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ))}\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={0}\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 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n x={x.bandwidth() / 2}\r\n dy={-10}\r\n className={cn(\r\n 'graph-value graph-value-total',\r\n !valueColor\r\n ? 'fill-primary-gray-700 dark:fill-primary-gray-300 text-sm'\r\n : 'text-sm',\r\n classNames?.graphObjectValues,\r\n )}\r\n variants={{\r\n initial: {\r\n y: y(0),\r\n opacity: 0,\r\n ...(valueColor && { fill: valueColor }),\r\n },\r\n whileInView: {\r\n y: y(sum(d.size.map(el => el || 0))),\r\n opacity: 1,\r\n ...(valueColor && { fill: valueColor }),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(\r\n sum(d.size.filter(element => element)),\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, useMemo } from 'react';\r\nimport sum from 'lodash.sum';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { HorizontalGraph, VerticalGraph } from './Graph';\r\n\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport {\r\n GroupedBarGraphDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { ensureCompleteDataForStackedBarChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n data: GroupedBarGraphDataType[];\r\n colors?: string[];\r\n labelOrder?: string[];\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n footNote?: string | React.ReactNode;\r\n width?: number;\r\n height?: number;\r\n sources?: SourcesDataType[];\r\n barPadding?: number;\r\n showTicks?: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n truncateBy?: number;\r\n colorDomain: string[];\r\n colorLegendTitle?: string;\r\n backgroundColor?: string | boolean;\r\n padding?: string;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n suffix?: string;\r\n prefix?: string;\r\n showValues?: boolean;\r\n showLabels?: boolean;\r\n relativeHeight?: 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 graphID?: string;\r\n maxValue?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n graphDownload?: boolean;\r\n dataDownload?: boolean;\r\n language?: Languages;\r\n minHeight?: number;\r\n theme?: 'light' | 'dark';\r\n maxBarThickness?: number;\r\n sortParameter?: number | 'total';\r\n sortData?: 'asc' | 'desc';\r\n maxNumberOfBars?: number;\r\n minBarThickness?: number;\r\n ariaLabel?: string;\r\n resetSelectionOnDoubleClick?: boolean;\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 valueColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n filterNA?: boolean;\r\n animate?: boolean | AnimateDataType;\r\n precision?: number;\r\n showColorScale?: boolean;\r\n customLayers?: CustomLayerDataType[];\r\n timeline?: TimelineDataType;\r\n naLabel?: string;\r\n orientation?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport function StackedBarGraphEl(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n sources,\r\n graphDescription,\r\n barPadding = 0.25,\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 padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix = '',\r\n prefix = '',\r\n showLabels = true,\r\n relativeHeight,\r\n showValues = true,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n labelOrder,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n sortParameter,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n showColorScale = true,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n valueColor,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n sortData,\r\n orientation = 'vertical',\r\n } = props;\r\n\r\n const Comp = orientation === 'horizontal' ? HorizontalGraph : VerticalGraph;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\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\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\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 {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {showColorScale && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorDomain={colorDomain}\r\n colors={colors}\r\n colorLegendTitle={colorLegendTitle}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && data.length > 0 ? (\r\n <Comp\r\n data={\r\n sortParameter !== undefined\r\n ? sortParameter === 'total'\r\n ? orderBy(\r\n ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d => sum(d.size.filter(el => !checkIfNullOrUndefined(el))),\r\n [sortData || 'asc'],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : orderBy(\r\n ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(\r\n new Date(uniqDatesSorted[index]),\r\n timeline.dateFormat || 'yyyy',\r\n )\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d)),\r\n d =>\r\n checkIfNullOrUndefined(d.size[sortParameter])\r\n ? -Infinity\r\n : d.size[sortParameter],\r\n [sortData || 'asc'],\r\n ).filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n : ensureCompleteDataForStackedBarChart(data, timeline.dateFormat || 'yyyy')\r\n .filter(d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(new Date(uniqDatesSorted[index]), timeline.dateFormat || 'yyyy')\r\n : d,\r\n )\r\n .filter(d => (filterNA ? !d.size.every(item => item == null) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))\r\n }\r\n barColors={colors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n suffix={suffix}\r\n prefix={prefix}\r\n refValues={refValues}\r\n maxValue={\r\n !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data.map(d => sum(d.size.filter(l => !checkIfNullOrUndefined(l))) || 0),\r\n )\r\n }\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n selectedColor={selectedColor}\r\n rtl={language === 'he' || language === 'ar'}\r\n labelOrder={labelOrder}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\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 colorDomain={colorDomain}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\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 sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n","import { GroupedBarGraphEl } from './GroupedBarGraph';\r\nimport { SimpleBarGraphEl } from './SimpleBarGraph';\r\nimport { StackedBarGraphEl } from './StackedBarGraph';\r\n\r\nimport {\r\n ReferenceDataType,\r\n BarGraphDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n GroupedBarGraphDataType,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: BarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Color of value labels */\r\n valueColor?: 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 /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\r\n /** Track color (i.e. the color of the bars background) of the bar chart */\r\n trackColor?: 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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 SimpleBarGraph(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n barPadding,\r\n showTicks,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n truncateBy,\r\n showLabels,\r\n showValues,\r\n backgroundColor,\r\n suffix,\r\n prefix,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n padding,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n theme,\r\n sortData,\r\n labelOrder,\r\n showNAColor,\r\n minHeight,\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n timeline,\r\n naLabel,\r\n trackColor,\r\n } = props;\r\n return (\r\n <SimpleBarGraphEl\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n backgroundColor={backgroundColor}\r\n suffix={suffix}\r\n prefix={prefix}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n padding={padding}\r\n relativeHeight={relativeHeight}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n showColorScale={showColorScale}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n theme={theme}\r\n sortData={sortData}\r\n labelOrder={labelOrder}\r\n showNAColor={showNAColor}\r\n minHeight={minHeight}\r\n maxBarThickness={maxBarThickness}\r\n maxNumberOfBars={maxNumberOfBars}\r\n minBarThickness={minBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n orientation={orientation}\r\n trackColor={trackColor}\r\n />\r\n );\r\n}\r\n\r\ninterface GroupedBarChartProps {\r\n // Data\r\n /** Array of data objects */\r\n data: GroupedBarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Array of colors for different bars in the group */\r\n colors?: 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 /** Color of value labels */\r\n valueColor?: 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\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 /** Toggles if data points which have all the values as undefined or null are filtered out. */\r\n filterNA?: boolean;\r\n /** Parameter to sort the data. If a number is provided, it refers to the index of the size array to determine which value to sort by. If set to total, it sorts by the sum of all the values. */\r\n sortParameter?: number | 'total';\r\n /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\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 /** 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 /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 GroupedBarGraph(props: GroupedBarChartProps) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n sources,\r\n graphDescription,\r\n barPadding,\r\n showTicks,\r\n truncateBy,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n suffix,\r\n prefix,\r\n showValues,\r\n padding,\r\n backgroundColor,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n showLabels,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n labelOrder,\r\n minHeight,\r\n theme,\r\n sortParameter,\r\n sortData,\r\n maxBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n precision,\r\n customLayers,\r\n showColorScale,\r\n timeline,\r\n naLabel,\r\n } = props;\r\n\r\n return (\r\n <GroupedBarGraphEl\r\n orientation={orientation}\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n barPadding={barPadding}\r\n showTicks={showTicks}\r\n truncateBy={truncateBy}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n suffix={suffix}\r\n prefix={prefix}\r\n showValues={showValues}\r\n padding={padding}\r\n backgroundColor={backgroundColor}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n sortParameter={sortParameter}\r\n sortData={sortData}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n showLabels={showLabels}\r\n relativeHeight={relativeHeight}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n labelOrder={labelOrder}\r\n minHeight={minHeight}\r\n theme={theme}\r\n maxBarThickness={maxBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n precision={precision}\r\n customLayers={customLayers}\r\n showColorScale={showColorScale}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n />\r\n );\r\n}\r\n\r\ninterface StackedBarChartProps {\r\n // Data\r\n /** Array of data objects */\r\n data: GroupedBarGraphDataType[];\r\n\r\n /** Orientation of the graph */\r\n orientation?: 'vertical' | 'horizontal';\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 /** Array of colors for different bars in the group */\r\n colors?: 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 /** Color of value labels */\r\n valueColor?: 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 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 /** 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 /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Parameter to sort the data. If a number is provided, it refers to the index of the size array to determine which value to sort by. If set to total, it sorts by the sum of all the values. */\r\n sortParameter?: number | 'total';\r\n /** Sorting order for data. This is overwritten by labelOrder prop. */\r\n sortData?: 'asc' | 'desc';\r\n /** Toggles if data points which have all the values as undefined or 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 /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\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 /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: 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 StackedBarGraph(props: StackedBarChartProps) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n sources,\r\n graphDescription,\r\n barPadding,\r\n showTicks,\r\n leftMargin,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n truncateBy,\r\n showLabels,\r\n showValues,\r\n backgroundColor,\r\n suffix,\r\n prefix,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n padding,\r\n tooltip,\r\n onSeriesMouseOver,\r\n relativeHeight,\r\n refValues,\r\n graphID,\r\n maxValue,\r\n onSeriesMouseClick,\r\n graphDownload,\r\n dataDownload,\r\n language,\r\n theme,\r\n labelOrder,\r\n minHeight,\r\n maxBarThickness,\r\n sortParameter,\r\n sortData,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n valueColor,\r\n orientation = 'vertical',\r\n styles,\r\n classNames,\r\n filterNA,\r\n animate,\r\n precision,\r\n customLayers,\r\n showColorScale,\r\n timeline,\r\n naLabel,\r\n } = props;\r\n\r\n return (\r\n <StackedBarGraphEl\r\n data={data}\r\n graphTitle={graphTitle}\r\n colors={colors}\r\n sources={sources}\r\n graphDescription={graphDescription}\r\n barPadding={barPadding}\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 showValues={showValues}\r\n backgroundColor={backgroundColor}\r\n suffix={suffix}\r\n prefix={prefix}\r\n height={height}\r\n width={width}\r\n footNote={footNote}\r\n colorDomain={colorDomain}\r\n colorLegendTitle={colorLegendTitle}\r\n padding={padding}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n relativeHeight={relativeHeight}\r\n refValues={refValues}\r\n graphID={graphID}\r\n maxValue={maxValue}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n graphDownload={graphDownload}\r\n dataDownload={dataDownload}\r\n language={language}\r\n theme={theme}\r\n labelOrder={labelOrder}\r\n minHeight={minHeight}\r\n maxBarThickness={maxBarThickness}\r\n sortParameter={sortParameter}\r\n sortData={sortData}\r\n maxNumberOfBars={maxNumberOfBars}\r\n minBarThickness={minBarThickness}\r\n ariaLabel={ariaLabel}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n valueColor={valueColor}\r\n classNames={classNames}\r\n filterNA={filterNA}\r\n animate={animate}\r\n precision={precision}\r\n customLayers={customLayers}\r\n showColorScale={showColorScale}\r\n timeline={timeline}\r\n naLabel={naLabel}\r\n orientation={orientation}\r\n />\r\n );\r\n}\r\n"],"names":["HorizontalGraph","props","$","_c","data","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","barColors","barPadding","showTicks","truncateBy","width","height","suffix","prefix","showValues","showLabels","tooltip","onSeriesMouseOver","refValues","maxValue","minValue","onSeriesMouseClick","selectedColor","rtl","labelOrder","maxBarThickness","resetSelectionOnDoubleClick","detailsOnClick","barAxisTitle","valueColor","noOfTicks","styles","classNames","animate","colorDomain","precision","customLayers","naLabel","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","map","d","i","id","label","add","missingIds","filter","id_0","has","t8","size","length","id_1","Array","fill","dataWithId","_temp","barOrder","T0","T1","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t9","graphObjectValues","xAxis","gridLines","labels","title","yAxis","axis","x","scaleLinear","domain","range","nice","y","scaleBand","Math","min","paddingInner","subBarScale","_temp2","bandwidth","xTicks","ticks","motion","svg","jsx","XTicksAndGridLines","_temp3","_temp4","d_3","t21","t22","t23","t24","AxisTitle","_temp5","_temp6","AnimatePresence","d_6","checkIfNullOrUndefined","jsxs","initial","whileInView","transition","duration","opacity","el","j","event","sizeIndex","clientY","clientX","event_0","isEqual","textAnchor","cn","numberFormattingFunction","YAxesLabels","substring","t25","t26","t27","t28","Axis","el_0","i_1","RefLineX","text","color","value","_temp7","_temp8","Tooltip","modal","DetailsModal","Fragment","d_8","layer","d_7","position","d_5","d_4","d_2","d_1","_d","i_0","d_0","VerticalGraph","_temp9","_temp0","yTicks","t29","t30","dx","dy","YTicksAndGridLines","_temp1","_temp10","t31","t32","t33","t34","_temp11","_temp12","abs","XAxesLabels","RefLineY","_temp13","_temp14","GroupedBarGraphEl","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","showColorScale","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","minHeight","theme","ariaLabel","filterNA","timeline","sortParameter","sortData","orientation","Colors","light","categoricalColors","enabled","autoplay","showOnlyActiveDate","Comp","svgWidth","setSvgWidth","svgHeight","setSvgHeight","play","setPlay","dates","dateFormat","parse","date","Date","getTime","sort","uniqDatesSorted","index","setIndex","setSelectedColor","graphDiv","graphParentDiv","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","speed","interval","setInterval","clearInterval","getSliderMarks","markObj","graphContainer","description","GraphHeader","t35","Pause","Play","SliderUI","nextValue","indexOf","nextValue_0","t36","colorLegend","ColorLegendWithMouseOver","t37","EmptyState","t38","orderBy","ensureCompleteDataForStackedBarChart","format","every","d_9","d_10","d_12","max","_temp16","_temp18","t39","GraphArea","t40","t41","footnote","source","GraphFooter","t42","GraphContainer","d_15","_temp17","l_1","l","d_16","_temp15","l_2","d_13","d_14","l_0","item_1","item","item_0","sum","a","b","barColor","highlightedDataPoints","minBarThickness","dimmedOpacity","trackColor","gray","el_3","el_2","el_1","_i","_temp19","_temp20","_temp21","_temp22","SimpleBarGraphEl","showNAColor","maxNumberOfBars","uniqBy","ensureCompleteDataForBarChart","Infinity","_d_0","primaryColors","t43","t44","d_18","d_17","d_11","element","k","getTextColorBasedOnBgColor","element_0","k_0","element_1","k_1","element_2","k_2","element_3","k_3","element_4","k_4","element_5","k_5","element_6","k_6","element_7","StackedBarGraphEl","_d_1","i_2","SimpleBarGraph","GroupedBarGraph","StackedBarGraph"],"mappings":"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"}
|