@undp/data-viz 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/BarGraph.cjs +1 -1
  2. package/dist/BarGraph.cjs.map +1 -1
  3. package/dist/BarGraph.js +957 -957
  4. package/dist/BarGraph.js.map +1 -1
  5. package/dist/BasicStatCard.cjs +1 -1
  6. package/dist/BasicStatCard.cjs.map +1 -1
  7. package/dist/BasicStatCard.js +45 -47
  8. package/dist/BasicStatCard.js.map +1 -1
  9. package/dist/BeeSwarmChart.cjs +1 -1
  10. package/dist/BeeSwarmChart.cjs.map +1 -1
  11. package/dist/BeeSwarmChart.js +76 -56
  12. package/dist/BeeSwarmChart.js.map +1 -1
  13. package/dist/BiVariateChoroplethMap.cjs +1 -1
  14. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  15. package/dist/BiVariateChoroplethMap.js +157 -157
  16. package/dist/BiVariateChoroplethMap.js.map +1 -1
  17. package/dist/ChoroplethMap.cjs +1 -1
  18. package/dist/ChoroplethMap.cjs.map +1 -1
  19. package/dist/ChoroplethMap.js +185 -185
  20. package/dist/ChoroplethMap.js.map +1 -1
  21. package/dist/CirclePackingGraph.cjs +1 -1
  22. package/dist/CirclePackingGraph.js +2 -4
  23. package/dist/CirclePackingGraph.js.map +1 -1
  24. package/dist/Data/barChart.json +70 -0
  25. package/dist/Data/basic.csv +20 -0
  26. package/dist/DifferenceLineChart.cjs +1 -1
  27. package/dist/DifferenceLineChart.cjs.map +1 -1
  28. package/dist/DifferenceLineChart.js +224 -223
  29. package/dist/DifferenceLineChart.js.map +1 -1
  30. package/dist/DotDensityMap.cjs +1 -1
  31. package/dist/DotDensityMap.cjs.map +1 -1
  32. package/dist/DotDensityMap.js +156 -156
  33. package/dist/DotDensityMap.js.map +1 -1
  34. package/dist/DualAxisLineChart.cjs +1 -1
  35. package/dist/DualAxisLineChart.cjs.map +1 -1
  36. package/dist/DualAxisLineChart.js +326 -325
  37. package/dist/DualAxisLineChart.js.map +1 -1
  38. package/dist/GeoHubCompareMaps.cjs +1 -1
  39. package/dist/GeoHubCompareMaps.cjs.map +1 -1
  40. package/dist/GeoHubCompareMaps.js +183 -183
  41. package/dist/GeoHubCompareMaps.js.map +1 -1
  42. package/dist/{GraphEl-DzRon4cb.js → GraphEl-BZne2JIx.js} +3 -3
  43. package/dist/{GraphEl-DzRon4cb.js.map → GraphEl-BZne2JIx.js.map} +1 -1
  44. package/dist/{GraphEl-BkyLYXG5.cjs → GraphEl-D5MUfp45.cjs} +2 -2
  45. package/dist/{GraphEl-BkyLYXG5.cjs.map → GraphEl-D5MUfp45.cjs.map} +1 -1
  46. package/dist/GriddedGraphs.cjs +1 -1
  47. package/dist/GriddedGraphs.js +1 -1
  48. package/dist/Histogram.cjs +1 -1
  49. package/dist/Histogram.js +1 -1
  50. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  51. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
  52. package/dist/LineChartWithConfidenceInterval.js +133 -132
  53. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  54. package/dist/MultiGraphDashboard.cjs +1 -1
  55. package/dist/MultiGraphDashboard.cjs.map +1 -1
  56. package/dist/MultiGraphDashboard.js +52 -50
  57. package/dist/MultiGraphDashboard.js.map +1 -1
  58. package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
  59. package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -1
  60. package/dist/MultiGraphDashboardWideToLongFormat.js +11 -9
  61. package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
  62. package/dist/MultiLineAltChart.cjs +1 -1
  63. package/dist/MultiLineAltChart.cjs.map +1 -1
  64. package/dist/MultiLineAltChart.js +149 -148
  65. package/dist/MultiLineAltChart.js.map +1 -1
  66. package/dist/MultiLineChart.cjs +1 -1
  67. package/dist/MultiLineChart.cjs.map +1 -1
  68. package/dist/MultiLineChart.js +182 -181
  69. package/dist/MultiLineChart.js.map +1 -1
  70. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
  71. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
  72. package/dist/PerformanceIntensiveMultiGraphDashboard.js +14 -12
  73. package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
  74. package/dist/SimpleLineChart.cjs +1 -1
  75. package/dist/SimpleLineChart.cjs.map +1 -1
  76. package/dist/SimpleLineChart.js +123 -122
  77. package/dist/SimpleLineChart.js.map +1 -1
  78. package/dist/SingleGraphDashboard.cjs +1 -1
  79. package/dist/SingleGraphDashboard.cjs.map +1 -1
  80. package/dist/SingleGraphDashboard.js +83 -79
  81. package/dist/SingleGraphDashboard.js.map +1 -1
  82. package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
  83. package/dist/SingleGraphDashboardGeoHubMaps.cjs.map +1 -1
  84. package/dist/SingleGraphDashboardGeoHubMaps.js +49 -45
  85. package/dist/SingleGraphDashboardGeoHubMaps.js.map +1 -1
  86. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  87. package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
  88. package/dist/SingleGraphDashboardThreeDGraphs.js +56 -52
  89. package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
  90. package/dist/StatCardFromData.cjs +1 -1
  91. package/dist/StatCardFromData.cjs.map +1 -1
  92. package/dist/StatCardFromData.js +44 -46
  93. package/dist/StatCardFromData.js.map +1 -1
  94. package/dist/ThreeDGlobe.cjs +1 -1
  95. package/dist/ThreeDGlobe.cjs.map +1 -1
  96. package/dist/ThreeDGlobe.js +134 -134
  97. package/dist/ThreeDGlobe.js.map +1 -1
  98. package/dist/getNoOfTicks-C_1CFXv_.cjs +2 -0
  99. package/dist/getNoOfTicks-C_1CFXv_.cjs.map +1 -0
  100. package/dist/getNoOfTicks-CpmRjcRF.js +7 -0
  101. package/dist/getNoOfTicks-CpmRjcRF.js.map +1 -0
  102. package/dist/index-C6LorfZ-.cjs +2 -0
  103. package/dist/index-C6LorfZ-.cjs.map +1 -0
  104. package/dist/index-Ceppbd8C.js +342 -0
  105. package/dist/index-Ceppbd8C.js.map +1 -0
  106. package/dist/index.cjs +1 -1
  107. package/dist/index.js +1 -1
  108. package/package.json +1 -1
  109. package/dist/index-DoY3Ga3W.cjs +0 -2
  110. package/dist/index-DoY3Ga3W.cjs.map +0 -1
  111. package/dist/index-leTnKT2q.js +0 -329
  112. package/dist/index-leTnKT2q.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MultiLineChart.js","sources":["../src/Components/Graphs/LineCharts/MultiLineChart/Graph.tsx","../src/Components/Graphs/LineCharts/MultiLineChart/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveLinear,\r\n curveMonotoneX,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleLinear, scaleTime } from 'd3-scale';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { bisectCenter } from 'd3-array';\r\nimport { pointer, select } from 'd3-selection';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { motion, useInView } from 'motion/react';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport {\r\n AnimateDataType,\r\n AnnotationSettingsDataType,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomHighlightAreaSettingsDataType,\r\n CustomLayerDataType,\r\n HighlightAreaSettingsDataType,\r\n MultiLineChartDataType,\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 { getLineEndPoint } from '@/Utils/getLineEndPoint';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { Annotation } from '@/Components/Elements/Annotations';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { CustomArea } from '@/Components/Elements/HighlightArea/customArea';\r\nimport { HighlightArea } from '@/Components/Elements/HighlightArea';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: MultiLineChartDataType[];\r\n lineColors: string[];\r\n width: number;\r\n height: number;\r\n dateFormat: string;\r\n noOfXTicks: number;\r\n labels: (string | number)[];\r\n topMargin: number;\r\n bottomMargin: number;\r\n leftMargin: number;\r\n rightMargin: 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 showColorLegendAtTop: boolean;\r\n highlightAreaSettings: HighlightAreaSettingsDataType[];\r\n refValues: ReferenceDataType[];\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedLines: (string | number)[];\r\n animate: AnimateDataType;\r\n rtl: boolean;\r\n strokeWidth: number;\r\n showDots: boolean;\r\n annotations: AnnotationSettingsDataType[];\r\n customHighlightAreaSettings: CustomHighlightAreaSettingsDataType[];\r\n yAxisTitle?: string;\r\n noOfYTicks: number;\r\n minDate?: string | number;\r\n maxDate?: string | number;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n dashedLines: (string | number)[];\r\n dashSettings: string[];\r\n labelsToBeHidden: (string | number)[];\r\n revealClipId: string;\r\n}\r\n\r\ninterface FormattedDataType {\r\n y: number;\r\n date: Date;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n lineColors,\r\n dateFormat,\r\n noOfXTicks,\r\n labels,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n suffix,\r\n prefix,\r\n leftMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showValues,\r\n showColorLegendAtTop,\r\n refValues,\r\n highlightAreaSettings,\r\n minValue,\r\n maxValue,\r\n highlightedLines,\r\n animate,\r\n rtl,\r\n strokeWidth,\r\n showDots,\r\n annotations,\r\n customHighlightAreaSettings,\r\n yAxisTitle,\r\n noOfYTicks,\r\n minDate,\r\n maxDate,\r\n curveType,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n dashedLines,\r\n dashSettings,\r\n labelsToBeHidden,\r\n revealClipId,\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 [hasAnimatedOnce, setHasAnimatedOnce] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isInView && !hasAnimatedOnce) {\r\n const timeout = setTimeout(\r\n () => {\r\n setHasAnimatedOnce(true);\r\n },\r\n (animate.duration + 0.5) * 1000,\r\n );\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [isInView, hasAnimatedOnce, animate.duration]);\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = 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: topMargin,\r\n bottom: bottomMargin,\r\n left: yAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n const MouseoverRectRef = useRef(null);\r\n const dataFormatted = orderBy(\r\n data.map(d => ({\r\n ...d,\r\n date: parse(`${d.date}`, dateFormat, new Date()),\r\n })),\r\n ['date'],\r\n ['asc'],\r\n );\r\n const dataArray = dataFormatted[0].y.map((_d, i) => {\r\n return dataFormatted\r\n .map(el => ({\r\n ...el,\r\n y: el.y[i],\r\n }))\r\n .filter(el => !checkIfNullOrUndefined(el.y));\r\n });\r\n const highlightAreaSettingsFormatted = highlightAreaSettings.map(d => ({\r\n ...d,\r\n coordinates: [\r\n d.coordinates[0] === null ? null : parse(`${d.coordinates[0]}`, dateFormat, new Date()),\r\n d.coordinates[1] === null ? null : parse(`${d.coordinates[1]}`, dateFormat, new Date()),\r\n ],\r\n }));\r\n const customHighlightAreaSettingsFormatted = customHighlightAreaSettings.map(d => ({\r\n ...d,\r\n coordinates: d.coordinates.map((el, j) =>\r\n j % 2 === 0 ? parse(`${el}`, dateFormat, new Date()) : (el as number),\r\n ),\r\n }));\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const minYear = minDate ? parse(`${minDate}`, dateFormat, new Date()) : dataFormatted[0].date;\r\n const maxYear = maxDate\r\n ? parse(`${maxDate}`, dateFormat, new Date())\r\n : dataFormatted[dataFormatted.length - 1].date;\r\n const minParam: number = checkIfNullOrUndefined(minValue)\r\n ? Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n ? Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n ) > 0\r\n ? 0\r\n : Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n : 0\r\n : (minValue as number);\r\n const maxParam: number = Math.max(\r\n ...dataFormatted.map(d =>\r\n Math.max(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n ? Math.max(\r\n ...dataFormatted.map(d =>\r\n Math.max(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n : 0;\r\n\r\n const x = scaleTime().domain([minYear, maxYear]).range([0, graphWidth]);\r\n const y = scaleLinear()\r\n .domain([\r\n checkIfNullOrUndefined(minValue) ? minParam : (minValue as number),\r\n checkIfNullOrUndefined(maxValue) ? (maxParam > 0 ? maxParam : 0) : (maxValue as number),\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const lineShape = line<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y(d => y(d.y))\r\n .curve(curve);\r\n\r\n const yTicks = y.ticks(noOfYTicks);\r\n const xTicks = x.ticks(noOfXTicks);\r\n useEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mousemove = (event: any) => {\r\n const selectedData =\r\n dataFormatted[\r\n bisectCenter(\r\n dataFormatted.map(d => d.date),\r\n x.invert(pointer(event)[0]),\r\n 0,\r\n )\r\n ];\r\n setMouseOverData(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n };\r\n const mouseout = () => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n };\r\n select(MouseoverRectRef.current).on('mousemove', mousemove).on('mouseout', mouseout);\r\n onSeriesMouseOver?.(undefined);\r\n }, [x, dataFormatted, onSeriesMouseOver]);\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 <defs>\r\n <clipPath id={revealClipId}>\r\n <motion.rect\r\n x={0}\r\n y={0}\r\n height={graphHeight}\r\n variants={{\r\n initial: { width: 0 },\r\n whileInView: {\r\n width: graphWidth,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n </clipPath>\r\n </defs>\r\n <HighlightArea\r\n areaSettings={highlightAreaSettingsFormatted}\r\n width={graphWidth}\r\n height={graphHeight}\r\n scale={x}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n <CustomArea\r\n areaSettings={customHighlightAreaSettingsFormatted}\r\n scaleX={x}\r\n scaleY={y}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n <g>\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 <Axis\r\n y1={y(minParam < 0 ? 0 : minParam)}\r\n y2={y(minParam < 0 ? 0 : minParam)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minParam < 0 ? 0 : minParam,\r\n 'NA',\r\n precision,\r\n prefix,\r\n suffix,\r\n )}\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n y: y(minParam < 0 ? 0 : minParam),\r\n dx: 0,\r\n dy: maxParam < 0 ? '1em' : -5,\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{\r\n axis: styles?.xAxis?.axis,\r\n label: styles?.yAxis?.labels,\r\n }}\r\n />\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={yAxisTitle}\r\n rotate90\r\n />\r\n </g>\r\n <g>\r\n <XTicksAndGridLines\r\n values={xTicks.map(d => format(d, dateFormat))}\r\n x={xTicks.map(d => x(d))}\r\n y1={0}\r\n y2={graphHeight}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: cn('opacity-0', classNames?.xAxis?.gridLines),\r\n labels: cn(\r\n 'fill-primary-gray-700 dark:fill-primary-gray-300 xs:max-[360px]:hidden text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n ),\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='primary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n </g>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g>\r\n {dataArray.map((d, i) => (\r\n <motion.g\r\n key={labels[i]}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity:\r\n highlightedLines.length !== 0\r\n ? highlightedLines.indexOf(labels[i]) !== -1\r\n ? 1\r\n : dimmedOpacity\r\n : 1,\r\n },\r\n whileInView: {\r\n opacity:\r\n highlightedLines.length !== 0\r\n ? highlightedLines.indexOf(labels[i]) !== -1\r\n ? 1\r\n : dimmedOpacity\r\n : 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n <motion.path\r\n style={{\r\n fill: 'none',\r\n strokeWidth,\r\n }}\r\n clipPath={`url(#${revealClipId})`}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n ...(dashedLines.length === 0 ? { pathLength: 0 } : {}),\r\n d:\r\n lineShape(\r\n d.filter((el): el is FormattedDataType => !checkIfNullOrUndefined(el.y)),\r\n ) || '',\r\n opacity: 1,\r\n stroke: lineColors[i],\r\n },\r\n whileInView: {\r\n ...(dashedLines.length === 0 ? { pathLength: 1 } : {}),\r\n d:\r\n lineShape(\r\n d.filter((el): el is FormattedDataType => !checkIfNullOrUndefined(el.y)),\r\n ) || '',\r\n opacity: 1,\r\n stroke: lineColors[i],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n strokeDasharray={\r\n dashedLines.includes(labels[i])\r\n ? dashSettings[i % dashSettings.length]\r\n : undefined\r\n }\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n {d.map((el, j) => (\r\n <g key={j}>\r\n {!checkIfNullOrUndefined(el.y) ? (\r\n <>\r\n {showDots ? (\r\n <motion.circle\r\n r={\r\n graphWidth / dataFormatted.length < 5\r\n ? 0\r\n : graphWidth / dataFormatted.length < 20\r\n ? 2\r\n : 4\r\n }\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n cx: x(el.date),\r\n cy: y(el.y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n cx: x(el.date),\r\n cy: y(el.y as number),\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 dy={-8}\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-xs font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n x: x(el.date),\r\n y: y(el.y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n x: x(el.date),\r\n y: y(el.y as number),\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(el.y, 'NA', precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </>\r\n ) : null}\r\n </g>\r\n ))}\r\n {showColorLegendAtTop || labelsToBeHidden.includes(labels[i]) ? null : (\r\n <motion.text\r\n className='text-xs'\r\n dx={5}\r\n dy={4}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n x: x(d[d.length - 1].date),\r\n y: y(d[d.length - 1].y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n x: x(d[d.length - 1].date),\r\n y: y(d[d.length - 1].y as number),\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {labels[i]}\r\n </motion.text>\r\n )}\r\n </motion.g>\r\n ))}\r\n {mouseOverData ? (\r\n <line\r\n y1={0}\r\n y2={graphHeight}\r\n x1={x(mouseOverData.date)}\r\n x2={x(mouseOverData.date)}\r\n className={cn(\r\n 'undp-tick-line stroke-primary-gray-700 dark:stroke-primary-gray-100',\r\n classNames?.mouseOverLine,\r\n )}\r\n style={styles?.mouseOverLine}\r\n />\r\n ) : null}\r\n </g>\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 <g>\r\n {annotations.map((d, i) => {\r\n const endPoints = getLineEndPoint(\r\n {\r\n x: d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n y: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0) - 8\r\n : 0 + (d.yOffset || 0) - 8,\r\n },\r\n {\r\n x: d.xCoordinate ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) : 0,\r\n y: d.yCoordinate ? y(d.yCoordinate as number) : 0,\r\n },\r\n checkIfNullOrUndefined(d.connectorRadius) ? 3.5 : (d.connectorRadius as number),\r\n );\r\n const connectorSettings = d.showConnector\r\n ? {\r\n y1: endPoints.y,\r\n x1: endPoints.x,\r\n y2: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0)\r\n : 0 + (d.yOffset || 0),\r\n x2: d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n cy: d.yCoordinate ? y(d.yCoordinate as number) : 0,\r\n cx: d.xCoordinate ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) : 0,\r\n circleRadius: checkIfNullOrUndefined(d.connectorRadius)\r\n ? 3.5\r\n : (d.connectorRadius as number),\r\n strokeWidth: d.showConnector === true ? 2 : Math.min(d.showConnector || 0, 1),\r\n }\r\n : undefined;\r\n const labelSettings = {\r\n y: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0) - 8\r\n : 0 + (d.yOffset || 0) - 8,\r\n x: rtl\r\n ? 0\r\n : d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n width: rtl\r\n ? d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0)\r\n : graphWidth +\r\n margin.right -\r\n (d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0)),\r\n maxWidth: d.maxWidth,\r\n fontWeight: d.fontWeight,\r\n align: d.align,\r\n };\r\n return (\r\n <Annotation\r\n key={i}\r\n color={d.color}\r\n connectorsSettings={connectorSettings}\r\n labelSettings={labelSettings}\r\n text={d.text}\r\n classNames={d.classNames}\r\n styles={d.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n );\r\n })}\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n <rect\r\n ref={MouseoverRectRef}\r\n style={{\r\n fill: 'none',\r\n pointerEvents: 'all',\r\n }}\r\n width={graphWidth}\r\n height={graphHeight}\r\n />\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 </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n AnnotationSettingsDataType,\r\n CustomHighlightAreaSettingsDataType,\r\n Languages,\r\n MultiLineChartDataType,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n HighlightAreaSettingsDataType,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: MultiLineChartDataType[];\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 of the lines */\r\n lineColors?: string[];\r\n /** Toggle the visibility of color legend between the top of the graphs and next to the line */\r\n showColorLegendAtTop?: boolean;\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Array of labels of line which are dashed */\r\n dashedLines?: (string | number)[];\r\n /** Array of dash settings that define the dash style for the dashed line. If the length of the array is less than length of dashedLines then it loop around. */\r\n dashSettings?: string[];\r\n /** Defines which labels are hidden from the color scale and the graph */\r\n labelsToBeHidden?: (string | 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\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 /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Maximum value of the date for the chart */\r\n maxDate?: string | number;\r\n /** Minimum value of the date for the chart */\r\n minDate?: string | number;\r\n /** No. of ticks on the x-axis */\r\n noOfXTicks?: number;\r\n /** No. of ticks on the y-axis */\r\n noOfYTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Toggle visibility of dots on the line */\r\n showDots?: boolean;\r\n /** Toggle visibility of color scale. */\r\n showColorScale?: boolean;\r\n /** Stroke width of the line */\r\n strokeWidth?: number;\r\n /** Toggle the initial animation of the line. If the type is number then it uses the number as the time in seconds for animation. */\r\n animate?: boolean | AnimateDataType;\r\n /** Format of the date in the data object. Available formats can be found [here](https://date-fns.org/docs/format) */\r\n dateFormat?: string;\r\n /** Title for the Y-axis */\r\n yAxisTitle?: string;\r\n /** Labels for the lines */\r\n labels: (string | number)[];\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedLines?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Annotations on the chart */\r\n annotations?: AnnotationSettingsDataType[];\r\n /** Highlighted area(square) on the chart */\r\n highlightAreaSettings?: HighlightAreaSettingsDataType[];\r\n /** Highlighted area(custom shape) on the chart */\r\n customHighlightAreaSettings?: CustomHighlightAreaSettingsDataType[];\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_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 MultiLineChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n lineColors = Colors.light.categoricalColors.colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n noOfXTicks = 10,\r\n dateFormat = 'yyyy',\r\n labels,\r\n padding,\r\n showValues = false,\r\n backgroundColor = false,\r\n leftMargin = 30,\r\n rightMargin = 50,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n showColorLegendAtTop = false,\r\n refValues = [],\r\n highlightAreaSettings = [],\r\n graphID,\r\n minValue,\r\n maxValue,\r\n highlightedLines = [],\r\n graphDownload = false,\r\n dataDownload = false,\r\n animate = false,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n strokeWidth = 2,\r\n showDots = true,\r\n annotations = [],\r\n customHighlightAreaSettings = [],\r\n theme = 'light',\r\n ariaLabel,\r\n yAxisTitle,\r\n noOfYTicks = 5,\r\n minDate,\r\n maxDate,\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n dashedLines = [],\r\n dashSettings = ['5 5'],\r\n labelsToBeHidden = [],\r\n showColorScale = true,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\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 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 {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorLegendAtTop && showColorScale ? (\r\n <ColorLegend\r\n colorDomain={labels}\r\n colorLegendTitle={colorLegendTitle}\r\n labelsToBeHidden={labelsToBeHidden}\r\n colors={lineColors}\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 <Graph\r\n data={data}\r\n lineColors={lineColors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n dateFormat={dateFormat}\r\n noOfXTicks={noOfXTicks}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n labels={labels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n showColorLegendAtTop={showColorScale ? showColorLegendAtTop : true}\r\n showValues={showValues}\r\n suffix={suffix}\r\n prefix={prefix}\r\n highlightAreaSettings={highlightAreaSettings}\r\n refValues={refValues}\r\n minValue={minValue}\r\n maxValue={maxValue}\r\n highlightedLines={highlightedLines}\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 rtl={language === 'he' || language === 'ar'}\r\n strokeWidth={strokeWidth}\r\n showDots={showDots}\r\n annotations={annotations}\r\n customHighlightAreaSettings={customHighlightAreaSettings}\r\n yAxisTitle={yAxisTitle}\r\n noOfYTicks={noOfYTicks}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n curveType={curveType}\r\n styles={styles}\r\n classNames={classNames}\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n labelsToBeHidden={labelsToBeHidden}\r\n dashedLines={dashedLines}\r\n dashSettings={dashSettings}\r\n revealClipId={generateRandomString(8)}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </>\r\n )}\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"],"names":["Graph","props","$","_c","data","width","height","lineColors","dateFormat","noOfXTicks","labels","rightMargin","topMargin","bottomMargin","suffix","prefix","leftMargin","tooltip","onSeriesMouseOver","showValues","showColorLegendAtTop","refValues","highlightAreaSettings","minValue","maxValue","highlightedLines","animate","rtl","strokeWidth","showDots","annotations","customHighlightAreaSettings","yAxisTitle","noOfYTicks","minDate","maxDate","curveType","styles","classNames","dimmedOpacity","precision","customLayers","dashedLines","dashSettings","labelsToBeHidden","revealClipId","svgRef","useRef","t0","amount","once","isInView","useInView","hasAnimatedOnce","setHasAnimatedOnce","useState","t1","t2","duration","timeout","setTimeout","clearTimeout","useEffect","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","undefined","eventX","setEventX","eventY","setEventY","t3","t4","top","bottom","left","right","margin","MouseoverRectRef","t5","d","date","parse","Date","dataFormatted","orderBy","map","dataArray","y","_d","i","el","filter","_temp","t6","t7","d_0","coordinates","highlightAreaSettingsFormatted","t8","d_1","el_1","j","customHighlightAreaSettingsFormatted","graphWidth","graphHeight","minYear","maxYear","length","minParam","checkIfNullOrUndefined","Math","min","_temp3","_temp5","_temp7","maxParam","max","_temp9","_temp1","x","scaleTime","domain","range","t9","scaleLinear","nice","lineShape","line","d_7","d_8","yTicks","ticks","xTicks","mousemove","event","selectedData","bisectCenter","_temp10","invert","pointer","clientY","clientX","mouseout","select","current","on","t10","Symbol","for","t11","t12","initial","whileInView","transition","t13","t14","jsx","motion","t15","t16","HighlightArea","t17","yAxis","gridLines","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","numberFormattingFunction","t29","t30","t31","t32","dx","dy","t33","xAxis","axis","t34","t35","label","t36","t37","t38","t39","Axis","t40","t41","t42","title","t43","t44","AxisTitle","t45","d_13","format","t46","t47","d_14","t48","t49","t50","t51","t52","cn","t53","t54","t55","t56","_temp13","_temp14","t57","d_17","i_0","jsxs","opacity","indexOf","fill","pathLength","_temp15","stroke","_temp16","includes","el_9","j_0","Fragment","cx","cy","delay","textAnchor","graphObjectValues","t58","mouseOverLine","t59","t60","el_10","i_1","RefLineY","text","color","value","t61","t62","d_18","i_2","endPoints","getLineEndPoint","xCoordinate","xOffset","yCoordinate","yOffset","connectorRadius","connectorSettings","showConnector","y1","x1","y2","x2","circleRadius","labelSettings","maxWidth","fontWeight","align","Annotation","t63","_temp17","_temp18","t64","pointerEvents","t65","t66","Tooltip","CustomArea","YTicksAndGridLines","_temp11","_temp12","d_12","XTicksAndGridLines","d_20","layer","d_19","position","el_8","el_7","d_16","d_15","d_11","d_10","d_9","d_5","_temp0","el_5","d_6","_temp8","el_6","d_2","_temp6","el_2","d_3","_temp4","el_3","d_4","_temp2","el_4","el_0","MultiLineChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","showColorScale","Colors","light","categoricalColors","colors","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","observe","disconnect","graphContainer","description","GraphHeader","EmptyState","ColorLegend","colorLegend","GraphArea","generateRandomString","footnote","source","GraphFooter","GraphContainer"],"mappings":"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"}
1
+ {"version":3,"file":"MultiLineChart.js","sources":["../src/Components/Graphs/LineCharts/MultiLineChart/Graph.tsx","../src/Components/Graphs/LineCharts/MultiLineChart/index.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveLinear,\r\n curveMonotoneX,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleLinear, scaleTime } from 'd3-scale';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\nimport { bisectCenter } from 'd3-array';\r\nimport { pointer, select } from 'd3-selection';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { motion, useInView } from 'motion/react';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport {\r\n AnimateDataType,\r\n AnnotationSettingsDataType,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomHighlightAreaSettingsDataType,\r\n CustomLayerDataType,\r\n HighlightAreaSettingsDataType,\r\n MultiLineChartDataType,\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 { getLineEndPoint } from '@/Utils/getLineEndPoint';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { Annotation } from '@/Components/Elements/Annotations';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { CustomArea } from '@/Components/Elements/HighlightArea/customArea';\r\nimport { HighlightArea } from '@/Components/Elements/HighlightArea';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: MultiLineChartDataType[];\r\n lineColors: string[];\r\n width: number;\r\n height: number;\r\n dateFormat: string;\r\n noOfXTicks: number;\r\n labels: (string | number)[];\r\n topMargin: number;\r\n bottomMargin: number;\r\n leftMargin: number;\r\n rightMargin: 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 showColorLegendAtTop: boolean;\r\n highlightAreaSettings: HighlightAreaSettingsDataType[];\r\n refValues: ReferenceDataType[];\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedLines: (string | number)[];\r\n animate: AnimateDataType;\r\n rtl: boolean;\r\n strokeWidth: number;\r\n showDots: boolean;\r\n annotations: AnnotationSettingsDataType[];\r\n customHighlightAreaSettings: CustomHighlightAreaSettingsDataType[];\r\n yAxisTitle?: string;\r\n noOfYTicks: number;\r\n minDate?: string | number;\r\n maxDate?: string | number;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n dashedLines: (string | number)[];\r\n dashSettings: string[];\r\n labelsToBeHidden: (string | number)[];\r\n revealClipId: string;\r\n}\r\n\r\ninterface FormattedDataType {\r\n y: number;\r\n date: Date;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n lineColors,\r\n dateFormat,\r\n noOfXTicks,\r\n labels,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n suffix,\r\n prefix,\r\n leftMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showValues,\r\n showColorLegendAtTop,\r\n refValues,\r\n highlightAreaSettings,\r\n minValue,\r\n maxValue,\r\n highlightedLines,\r\n animate,\r\n rtl,\r\n strokeWidth,\r\n showDots,\r\n annotations,\r\n customHighlightAreaSettings,\r\n yAxisTitle,\r\n noOfYTicks,\r\n minDate,\r\n maxDate,\r\n curveType,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n dashedLines,\r\n dashSettings,\r\n labelsToBeHidden,\r\n revealClipId,\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 [hasAnimatedOnce, setHasAnimatedOnce] = useState(false);\r\n\r\n useEffect(() => {\r\n if (isInView && !hasAnimatedOnce) {\r\n const timeout = setTimeout(\r\n () => {\r\n setHasAnimatedOnce(true);\r\n },\r\n (animate.duration + 0.5) * 1000,\r\n );\r\n return () => clearTimeout(timeout);\r\n }\r\n }, [isInView, hasAnimatedOnce, animate.duration]);\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = 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: topMargin,\r\n bottom: bottomMargin,\r\n left: yAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n const MouseoverRectRef = useRef(null);\r\n const dataFormatted = orderBy(\r\n data.map(d => ({\r\n ...d,\r\n date: parse(`${d.date}`, dateFormat, new Date()),\r\n })),\r\n ['date'],\r\n ['asc'],\r\n );\r\n const dataArray = dataFormatted[0].y.map((_d, i) => {\r\n return dataFormatted\r\n .map(el => ({\r\n ...el,\r\n y: el.y[i],\r\n }))\r\n .filter(el => !checkIfNullOrUndefined(el.y));\r\n });\r\n const highlightAreaSettingsFormatted = highlightAreaSettings.map(d => ({\r\n ...d,\r\n coordinates: [\r\n d.coordinates[0] === null ? null : parse(`${d.coordinates[0]}`, dateFormat, new Date()),\r\n d.coordinates[1] === null ? null : parse(`${d.coordinates[1]}`, dateFormat, new Date()),\r\n ],\r\n }));\r\n const customHighlightAreaSettingsFormatted = customHighlightAreaSettings.map(d => ({\r\n ...d,\r\n coordinates: d.coordinates.map((el, j) =>\r\n j % 2 === 0 ? parse(`${el}`, dateFormat, new Date()) : (el as number),\r\n ),\r\n }));\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const minYear = minDate ? parse(`${minDate}`, dateFormat, new Date()) : dataFormatted[0].date;\r\n const maxYear = maxDate\r\n ? parse(`${maxDate}`, dateFormat, new Date())\r\n : dataFormatted[dataFormatted.length - 1].date;\r\n const minParam: number = checkIfNullOrUndefined(minValue)\r\n ? Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n ? Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n ) > 0\r\n ? 0\r\n : Math.min(\r\n ...dataFormatted.map(d =>\r\n Math.min(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n : 0\r\n : (minValue as number);\r\n const maxParam: number = Math.max(\r\n ...dataFormatted.map(d =>\r\n Math.max(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n ? Math.max(\r\n ...dataFormatted.map(d =>\r\n Math.max(...(d.y.filter(el => !checkIfNullOrUndefined(el)) as number[])),\r\n ),\r\n )\r\n : 0;\r\n\r\n const x = scaleTime().domain([minYear, maxYear]).range([0, graphWidth]);\r\n const y = scaleLinear()\r\n .domain([\r\n checkIfNullOrUndefined(minValue) ? minParam : (minValue as number),\r\n checkIfNullOrUndefined(maxValue) ? (maxParam > 0 ? maxParam : 0) : (maxValue as number),\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const lineShape = line<FormattedDataType>()\r\n .x(d => x(d.date))\r\n .y(d => y(d.y))\r\n .curve(curve);\r\n\r\n const yTicks = y.ticks(noOfYTicks);\r\n const xTicks = x.ticks(noOfXTicks);\r\n useEffect(() => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mousemove = (event: any) => {\r\n const selectedData =\r\n dataFormatted[\r\n bisectCenter(\r\n dataFormatted.map(d => d.date),\r\n x.invert(pointer(event)[0]),\r\n 0,\r\n )\r\n ];\r\n setMouseOverData(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(selectedData || dataFormatted[dataFormatted.length - 1]);\r\n };\r\n const mouseout = () => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n };\r\n select(MouseoverRectRef.current).on('mousemove', mousemove).on('mouseout', mouseout);\r\n onSeriesMouseOver?.(undefined);\r\n }, [x, dataFormatted, onSeriesMouseOver]);\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 <defs>\r\n <clipPath id={revealClipId}>\r\n <motion.rect\r\n x={0}\r\n y={0}\r\n height={graphHeight}\r\n variants={{\r\n initial: { width: 0 },\r\n whileInView: {\r\n width: graphWidth,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n </clipPath>\r\n </defs>\r\n <HighlightArea\r\n areaSettings={highlightAreaSettingsFormatted}\r\n width={graphWidth}\r\n height={graphHeight}\r\n scale={x}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n <CustomArea\r\n areaSettings={customHighlightAreaSettingsFormatted}\r\n scaleX={x}\r\n scaleY={y}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n <g>\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 <Axis\r\n y1={y(minParam < 0 ? 0 : minParam)}\r\n y2={y(minParam < 0 ? 0 : minParam)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minParam < 0 ? 0 : minParam,\r\n 'NA',\r\n precision,\r\n prefix,\r\n suffix,\r\n )}\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n y: y(minParam < 0 ? 0 : minParam),\r\n dx: 0,\r\n dy: maxParam < 0 ? '1em' : -5,\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{\r\n axis: styles?.xAxis?.axis,\r\n label: styles?.yAxis?.labels,\r\n }}\r\n />\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={yAxisTitle}\r\n rotate90\r\n />\r\n </g>\r\n <g>\r\n <XTicksAndGridLines\r\n values={xTicks.map(d => format(d, dateFormat))}\r\n x={xTicks.map(d => x(d))}\r\n y1={0}\r\n y2={graphHeight}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: cn('opacity-0', classNames?.xAxis?.gridLines),\r\n labels: cn(\r\n 'fill-primary-gray-700 dark:fill-primary-gray-300 xs:max-[360px]:hidden text-[9px] md:text-[10px] lg:text-xs',\r\n classNames?.xAxis?.labels,\r\n ),\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='primary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n </g>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g>\r\n {dataArray.map((d, i) => (\r\n <motion.g\r\n key={labels[i]}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity:\r\n highlightedLines.length !== 0\r\n ? highlightedLines.indexOf(labels[i]) !== -1\r\n ? 1\r\n : dimmedOpacity\r\n : 1,\r\n },\r\n whileInView: {\r\n opacity:\r\n highlightedLines.length !== 0\r\n ? highlightedLines.indexOf(labels[i]) !== -1\r\n ? 1\r\n : dimmedOpacity\r\n : 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n <motion.path\r\n style={{\r\n fill: 'none',\r\n strokeWidth,\r\n }}\r\n clipPath={`url(#${revealClipId})`}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n ...(dashedLines.length === 0 ? { pathLength: 0 } : {}),\r\n d:\r\n lineShape(\r\n d.filter((el): el is FormattedDataType => !checkIfNullOrUndefined(el.y)),\r\n ) || '',\r\n opacity: 1,\r\n stroke: lineColors[i],\r\n },\r\n whileInView: {\r\n ...(dashedLines.length === 0 ? { pathLength: 1 } : {}),\r\n d:\r\n lineShape(\r\n d.filter((el): el is FormattedDataType => !checkIfNullOrUndefined(el.y)),\r\n ) || '',\r\n opacity: 1,\r\n stroke: lineColors[i],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n strokeDasharray={\r\n dashedLines.includes(labels[i])\r\n ? dashSettings[i % dashSettings.length]\r\n : undefined\r\n }\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n {d.map((el, j) => (\r\n <g key={j}>\r\n {!checkIfNullOrUndefined(el.y) ? (\r\n <>\r\n {showDots ? (\r\n <motion.circle\r\n r={\r\n graphWidth / dataFormatted.length < 5\r\n ? 0\r\n : graphWidth / dataFormatted.length < 20\r\n ? 2\r\n : 4\r\n }\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n cx: x(el.date),\r\n cy: y(el.y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n cx: x(el.date),\r\n cy: y(el.y as number),\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 dy={-8}\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn(\r\n 'graph-value text-xs font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n x: x(el.date),\r\n y: y(el.y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n x: x(el.date),\r\n y: y(el.y as number),\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(el.y, 'NA', precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </>\r\n ) : null}\r\n </g>\r\n ))}\r\n {showColorLegendAtTop || labelsToBeHidden.includes(labels[i]) ? null : (\r\n <motion.text\r\n className='text-xs'\r\n dx={5}\r\n dy={4}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n opacity: 0,\r\n fill: lineColors[i],\r\n x: x(d[d.length - 1].date),\r\n y: y(d[d.length - 1].y as number),\r\n },\r\n whileInView: {\r\n opacity: 1,\r\n fill: lineColors[i],\r\n x: x(d[d.length - 1].date),\r\n y: y(d[d.length - 1].y as number),\r\n transition: {\r\n duration: hasAnimatedOnce ? animate.duration : 0.5,\r\n delay: hasAnimatedOnce ? 0 : animate.duration,\r\n },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {labels[i]}\r\n </motion.text>\r\n )}\r\n </motion.g>\r\n ))}\r\n {mouseOverData ? (\r\n <line\r\n y1={0}\r\n y2={graphHeight}\r\n x1={x(mouseOverData.date)}\r\n x2={x(mouseOverData.date)}\r\n className={cn(\r\n 'undp-tick-line stroke-primary-gray-700 dark:stroke-primary-gray-100',\r\n classNames?.mouseOverLine,\r\n )}\r\n style={styles?.mouseOverLine}\r\n />\r\n ) : null}\r\n </g>\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 <g>\r\n {annotations.map((d, i) => {\r\n const endPoints = getLineEndPoint(\r\n {\r\n x: d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n y: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0) - 8\r\n : 0 + (d.yOffset || 0) - 8,\r\n },\r\n {\r\n x: d.xCoordinate ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) : 0,\r\n y: d.yCoordinate ? y(d.yCoordinate as number) : 0,\r\n },\r\n checkIfNullOrUndefined(d.connectorRadius) ? 3.5 : (d.connectorRadius as number),\r\n );\r\n const connectorSettings = d.showConnector\r\n ? {\r\n y1: endPoints.y,\r\n x1: endPoints.x,\r\n y2: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0)\r\n : 0 + (d.yOffset || 0),\r\n x2: d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n cy: d.yCoordinate ? y(d.yCoordinate as number) : 0,\r\n cx: d.xCoordinate ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) : 0,\r\n circleRadius: checkIfNullOrUndefined(d.connectorRadius)\r\n ? 3.5\r\n : (d.connectorRadius as number),\r\n strokeWidth: d.showConnector === true ? 2 : Math.min(d.showConnector || 0, 1),\r\n }\r\n : undefined;\r\n const labelSettings = {\r\n y: d.yCoordinate\r\n ? y(d.yCoordinate as number) + (d.yOffset || 0) - 8\r\n : 0 + (d.yOffset || 0) - 8,\r\n x: rtl\r\n ? 0\r\n : d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0),\r\n width: rtl\r\n ? d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0)\r\n : graphWidth +\r\n margin.right -\r\n (d.xCoordinate\r\n ? x(parse(`${d.xCoordinate}`, dateFormat, new Date())) + (d.xOffset || 0)\r\n : 0 + (d.xOffset || 0)),\r\n maxWidth: d.maxWidth,\r\n fontWeight: d.fontWeight,\r\n align: d.align,\r\n };\r\n return (\r\n <Annotation\r\n key={i}\r\n color={d.color}\r\n connectorsSettings={connectorSettings}\r\n labelSettings={labelSettings}\r\n text={d.text}\r\n classNames={d.classNames}\r\n styles={d.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n );\r\n })}\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n <rect\r\n ref={MouseoverRectRef}\r\n style={{\r\n fill: 'none',\r\n pointerEvents: 'all',\r\n }}\r\n width={graphWidth}\r\n height={graphHeight}\r\n />\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 </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n AnnotationSettingsDataType,\r\n CustomHighlightAreaSettingsDataType,\r\n Languages,\r\n MultiLineChartDataType,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n HighlightAreaSettingsDataType,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\nimport { getNoOfTicks } from '@/Utils/getNoOfTicks';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: MultiLineChartDataType[];\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 of the lines */\r\n lineColors?: string[];\r\n /** Toggle the visibility of color legend between the top of the graphs and next to the line */\r\n showColorLegendAtTop?: boolean;\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Array of labels of line which are dashed */\r\n dashedLines?: (string | number)[];\r\n /** Array of dash settings that define the dash style for the dashed line. If the length of the array is less than length of dashedLines then it loop around. */\r\n dashSettings?: string[];\r\n /** Defines which labels are hidden from the color scale and the graph */\r\n labelsToBeHidden?: (string | 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\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 /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Maximum value of the date for the chart */\r\n maxDate?: string | number;\r\n /** Minimum value of the date for the chart */\r\n minDate?: string | number;\r\n /** No. of ticks on the x-axis */\r\n noOfXTicks?: number;\r\n /** No. of ticks on the y-axis */\r\n noOfYTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Toggle visibility of dots on the line */\r\n showDots?: boolean;\r\n /** Toggle visibility of color scale. */\r\n showColorScale?: boolean;\r\n /** Stroke width of the line */\r\n strokeWidth?: number;\r\n /** Toggle the initial animation of the line. If the type is number then it uses the number as the time in seconds for animation. */\r\n animate?: boolean | AnimateDataType;\r\n /** Format of the date in the data object. Available formats can be found [here](https://date-fns.org/docs/format) */\r\n dateFormat?: string;\r\n /** Title for the Y-axis */\r\n yAxisTitle?: string;\r\n /** Labels for the lines */\r\n labels: (string | number)[];\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedLines?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Annotations on the chart */\r\n annotations?: AnnotationSettingsDataType[];\r\n /** Highlighted area(square) on the chart */\r\n highlightAreaSettings?: HighlightAreaSettingsDataType[];\r\n /** Highlighted area(custom shape) on the chart */\r\n customHighlightAreaSettings?: CustomHighlightAreaSettingsDataType[];\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_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 MultiLineChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n lineColors = Colors.light.categoricalColors.colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n noOfXTicks = 10,\r\n dateFormat = 'yyyy',\r\n labels,\r\n padding,\r\n showValues = false,\r\n backgroundColor = false,\r\n leftMargin = 30,\r\n rightMargin = 50,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n showColorLegendAtTop = false,\r\n refValues = [],\r\n highlightAreaSettings = [],\r\n graphID,\r\n minValue,\r\n maxValue,\r\n highlightedLines = [],\r\n graphDownload = false,\r\n dataDownload = false,\r\n animate = false,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n strokeWidth = 2,\r\n showDots = true,\r\n annotations = [],\r\n customHighlightAreaSettings = [],\r\n theme = 'light',\r\n ariaLabel,\r\n yAxisTitle,\r\n noOfYTicks = 5,\r\n minDate,\r\n maxDate,\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n dashedLines = [],\r\n dashSettings = ['5 5'],\r\n labelsToBeHidden = [],\r\n showColorScale = true,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\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 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 {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorLegendAtTop && showColorScale ? (\r\n <ColorLegend\r\n colorDomain={labels}\r\n colorLegendTitle={colorLegendTitle}\r\n labelsToBeHidden={labelsToBeHidden}\r\n colors={lineColors}\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 <Graph\r\n data={data}\r\n lineColors={lineColors}\r\n width={svgWidth}\r\n height={svgHeight}\r\n dateFormat={dateFormat}\r\n noOfXTicks={noOfXTicks ?? getNoOfTicks(svgWidth)}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n labels={labels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n showColorLegendAtTop={showColorScale ? showColorLegendAtTop : true}\r\n showValues={showValues}\r\n suffix={suffix}\r\n prefix={prefix}\r\n highlightAreaSettings={highlightAreaSettings}\r\n refValues={refValues}\r\n minValue={minValue}\r\n maxValue={maxValue}\r\n highlightedLines={highlightedLines}\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 rtl={language === 'he' || language === 'ar'}\r\n strokeWidth={strokeWidth}\r\n showDots={showDots}\r\n annotations={annotations}\r\n customHighlightAreaSettings={customHighlightAreaSettings}\r\n yAxisTitle={yAxisTitle}\r\n noOfYTicks={noOfYTicks}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n curveType={curveType}\r\n styles={styles}\r\n classNames={classNames}\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n labelsToBeHidden={labelsToBeHidden}\r\n dashedLines={dashedLines}\r\n dashSettings={dashSettings}\r\n revealClipId={generateRandomString(8)}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </>\r\n )}\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"],"names":["Graph","props","$","_c","data","width","height","lineColors","dateFormat","noOfXTicks","labels","rightMargin","topMargin","bottomMargin","suffix","prefix","leftMargin","tooltip","onSeriesMouseOver","showValues","showColorLegendAtTop","refValues","highlightAreaSettings","minValue","maxValue","highlightedLines","animate","rtl","strokeWidth","showDots","annotations","customHighlightAreaSettings","yAxisTitle","noOfYTicks","minDate","maxDate","curveType","styles","classNames","dimmedOpacity","precision","customLayers","dashedLines","dashSettings","labelsToBeHidden","revealClipId","svgRef","useRef","t0","amount","once","isInView","useInView","hasAnimatedOnce","setHasAnimatedOnce","useState","t1","t2","duration","timeout","setTimeout","clearTimeout","useEffect","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","undefined","eventX","setEventX","eventY","setEventY","t3","t4","top","bottom","left","right","margin","MouseoverRectRef","t5","d","date","parse","Date","dataFormatted","orderBy","map","dataArray","y","_d","i","el","filter","_temp","t6","t7","d_0","coordinates","highlightAreaSettingsFormatted","t8","d_1","el_1","j","customHighlightAreaSettingsFormatted","graphWidth","graphHeight","minYear","maxYear","length","minParam","checkIfNullOrUndefined","Math","min","_temp3","_temp5","_temp7","maxParam","max","_temp9","_temp1","x","scaleTime","domain","range","t9","scaleLinear","nice","lineShape","line","d_7","d_8","yTicks","ticks","xTicks","mousemove","event","selectedData","bisectCenter","_temp10","invert","pointer","clientY","clientX","mouseout","select","current","on","t10","Symbol","for","t11","t12","initial","whileInView","transition","t13","t14","jsx","motion","t15","t16","HighlightArea","t17","yAxis","gridLines","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","numberFormattingFunction","t29","t30","t31","t32","dx","dy","t33","xAxis","axis","t34","t35","label","t36","t37","t38","t39","Axis","t40","t41","t42","title","t43","t44","AxisTitle","t45","d_13","format","t46","t47","d_14","t48","t49","t50","t51","t52","cn","t53","t54","t55","t56","_temp13","_temp14","t57","d_17","i_0","jsxs","opacity","indexOf","fill","pathLength","_temp15","stroke","_temp16","includes","el_9","j_0","Fragment","cx","cy","delay","textAnchor","graphObjectValues","t58","mouseOverLine","t59","t60","el_10","i_1","RefLineY","text","color","value","t61","t62","d_18","i_2","endPoints","getLineEndPoint","xCoordinate","xOffset","yCoordinate","yOffset","connectorRadius","connectorSettings","showConnector","y1","x1","y2","x2","circleRadius","labelSettings","maxWidth","fontWeight","align","Annotation","t63","_temp17","_temp18","t64","pointerEvents","t65","t66","Tooltip","CustomArea","YTicksAndGridLines","_temp11","_temp12","d_12","XTicksAndGridLines","d_20","layer","d_19","position","el_8","el_7","d_16","d_15","d_11","d_10","d_9","d_5","_temp0","el_5","d_6","_temp8","el_6","d_2","_temp6","el_2","d_3","_temp4","el_3","d_4","_temp2","el_4","el_0","MultiLineChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","showColorScale","Colors","light","categoricalColors","colors","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","observe","disconnect","graphContainer","description","GraphHeader","EmptyState","ColorLegend","colorLegend","GraphArea","getNoOfTicks","generateRandomString","footnote","source","GraphFooter","GraphContainer"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-CHPV5EwG-CTPQjnHt.cjs"),l=require("react"),L=require("./index-CyZ1lmi_.cjs"),j=require("./index-BS2TADPj.cjs"),b=require("./DropdownSelect-Doz3mCrM.cjs"),U=require("./checkIfMultiple-wg6hJLXy.cjs"),$=require("./SingleGraphDashboard.cjs"),I=require("./SingleGraphDashboardThreeDGraphs.cjs"),J=require("./SingleGraphDashboardGeoHubMaps.cjs"),p=require("./fetchAndParseData-l5HGMAEs.cjs"),B=require("./getUniqValue-RViz8tTw.cjs"),K=require("./GraphHeader.cjs"),M=require("./filterData-T5DQBE9b.cjs"),q=require("./transformDataForSelect-YmStusCI.cjs"),Q=require("./GraphContainer-d8A46BK2.cjs"),T=v=>v.map(a=>a.columnWidth||1).reduce((a,g)=>a+g,0),X=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function Y(v){const{dashboardID:w,dashboardLayout:r,dataSettings:a,filters:g,debugMode:o,theme:m="light",readableHeader:C,dataFilters:E,noOfFiltersPerRow:S=4,filterPosition:R,uiMode:d="normal",graphStyles:D,graphClassNames:y}=v,[f,F]=l.useState(void 0),[h,A]=l.useState(void 0),[n,O]=l.useState([]),N=["threeDGlobe"],H=["geoHubCompareMap","geoHubMap","geoHubMapWithLayerSelection"],G={ignoreCase:!0,ignoreAccents:!0,trim:!0},V=l.useEffectEvent(()=>{const t=(g||[]).map(s=>({filter:s.column,label:s.label||`Filter by ${s.column}`,singleSelect:s.singleSelect,clearable:s.clearable,defaultValue:q.transformDefaultValue(s.defaultValue),value:q.transformDefaultValue(s.defaultValue),availableValues:B.getUniqValue(h,s.column).filter(e=>!s.excludeValues?.includes(`${e}`)).map(e=>({value:e,label:e})),allowSelectAll:s.allowSelectAll,width:s.width}));O(t)}),k=l.useEffectEvent(()=>{if(!h||n.length===0)F(h);else{const t=h.filter(s=>n.every(e=>e.value&&j.flattenDeep([e.value]).length>0?L.intersection(j.flattenDeep([s[e.filter]]),j.flattenDeep([e.value]).map(u=>u.value)).length>0:!0));F(t)}});l.useEffect(()=>{k()},[n,h]),l.useEffect(()=>{(async()=>{try{const s=a.dataURL?typeof a.dataURL=="string"?a.fileType==="json"?await p.fetchAndParseJSON(a.dataURL,a.columnsToArray,a.dataTransformation,o):a.fileType==="api"?await p.fetchAndTransformDataFromAPI(a.dataURL,a.apiHeaders,a.columnsToArray,a.dataTransformation,o):await p.fetchAndParseCSV(a.dataURL,a.dataTransformation,a.columnsToArray,o,a.delimiter,!0):await p.fetchAndParseMultipleDataSources(a.dataURL,a.idColumnTitle):await p.transformColumnsToArray(a.data,a.columnsToArray);A(s)}catch(s){console.error("Data fetching error:",s)}})(),V()},[a,o]),l.useEffect(()=>{V()},[g]);const x=(t,s)=>{O(e=>e.map(u=>u.filter===t?{...u,value:s}:u))};return i.jsxRuntimeExports.jsxs(Q.GraphContainer,{id:w,"aria-label":"This is a dashboard",backgroundColor:r.backgroundColor??!1,theme:m||"light",language:r.language||"en",padding:r.padding,children:[r.title||r.description?i.jsxRuntimeExports.jsx(K.GraphHeader,{graphTitle:r.title,graphDescription:r.description,isDashboard:!0}):null,i.jsxRuntimeExports.jsxs("div",{className:"flex gap-4 flex-wrap",children:[n.length!==0?i.jsxRuntimeExports.jsx("div",{className:"flex-grow flex-shrink-0",style:{width:R==="side"?"280px":"100%"},children:i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-start gap-4 w-full sticky top-4",children:n?.map((t,s)=>i.jsxRuntimeExports.jsxs("div",{style:{width:t.width||`calc(${100/S}% - ${(S-1)/S}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[i.jsxRuntimeExports.jsx(U.b,{className:"mb-2",children:t.label}),t.singleSelect?i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isClearable:t.clearable===void 0?!0:t.clearable,size:"sm",variant:d,isMulti:!1,isSearchable:!0,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},defaultValue:t.defaultValue,value:t.value}):i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isMulti:!0,size:"sm",isClearable:t.clearable===void 0?!0:t.clearable,variant:d,isSearchable:!0,controlShouldRenderValue:!0,closeMenuOnSelect:!1,hideSelectedOptions:!1,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},value:t.value,defaultValue:t.defaultValue}),t.allowSelectAll?i.jsxRuntimeExports.jsx("button",{type:"button",className:"bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400",onClick:()=>{x(t.filter,t.availableValues)},children:"Select all options"}):null]})]},s))})}):null,i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]",style:{width:R==="side"?"calc(100% - 280px - 1rem)":"100%"},children:r.rows.map((t,s)=>i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-stretch gap-4 w-full h-auto",style:{minHeight:`${t.height||0}px`},children:t.columns.map((e,u)=>i.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent h-inherit grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/T(t.columns)}% - ${(T(t.columns)-(e.columnWidth||1))/T(t.columns)}rem)`,minHeight:"inherit"},children:N.includes(e.graphType)?i.jsxRuntimeExports.jsx(I.SingleGraphDashboardThreeDGraphs,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]}):H.includes(e.graphType)?i.jsxRuntimeExports.jsx(J.SingleGraphDashboardGeoHubMaps,{graphType:e.graphType,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},debugMode:o}):i.jsxRuntimeExports.jsx($.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},updateFilters:e.attachedFilter&&X.indexOf(e.graphType)!==-1&&n.findIndex(c=>c.filter===e.attachedFilter)!==-1?c=>{const P=n.findIndex(z=>z.filter===e.attachedFilter),W=c?n[P].singleSelect?{value:c,label:c}:[{value:c,label:c}]:void 0;x(e.attachedFilter,W)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]})},u))},s))})]})]})}exports.PerformanceIntensiveMultiGraphDashboard=Y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-CHPV5EwG-CTPQjnHt.cjs"),l=require("react"),L=require("./index-CyZ1lmi_.cjs"),j=require("./index-BS2TADPj.cjs"),b=require("./DropdownSelect-Doz3mCrM.cjs"),U=require("./checkIfMultiple-wg6hJLXy.cjs"),$=require("./SingleGraphDashboard.cjs"),I=require("./SingleGraphDashboardThreeDGraphs.cjs"),J=require("./SingleGraphDashboardGeoHubMaps.cjs"),p=require("./fetchAndParseData-l5HGMAEs.cjs"),B=require("./getUniqValue-RViz8tTw.cjs"),K=require("./GraphHeader.cjs"),M=require("./filterData-T5DQBE9b.cjs"),q=require("./transformDataForSelect-YmStusCI.cjs"),Q=require("./GraphContainer-d8A46BK2.cjs"),T=v=>v.map(a=>a.columnWidth||1).reduce((a,g)=>a+g,0),X=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function Y(v){const{dashboardID:w,dashboardLayout:r,dataSettings:a,filters:g,debugMode:o,theme:m="light",readableHeader:C,dataFilters:E,noOfFiltersPerRow:S=4,filterPosition:R,uiMode:d="normal",graphStyles:D,graphClassNames:y}=v,[f,F]=l.useState(void 0),[h,H]=l.useState(void 0),[n,O]=l.useState([]),A=["threeDGlobe"],N=["geoHubCompareMap","geoHubMap","geoHubMapWithLayerSelection"],G={ignoreCase:!0,ignoreAccents:!0,trim:!0},V=l.useEffectEvent(()=>{const t=(g||[]).map(s=>({filter:s.column,label:s.label||`Filter by ${s.column}`,singleSelect:s.singleSelect,clearable:s.clearable,defaultValue:q.transformDefaultValue(s.defaultValue),value:q.transformDefaultValue(s.defaultValue),availableValues:B.getUniqValue(h,s.column).filter(e=>!s.excludeValues?.includes(`${e}`)).map(e=>({value:e,label:e})),allowSelectAll:s.allowSelectAll,width:s.width}));O(t)}),k=l.useEffectEvent(()=>{if(!h||n.length===0)F(h);else{const t=h.filter(s=>n.every(e=>e.value&&j.flattenDeep([e.value]).length>0?L.intersection(j.flattenDeep([s[e.filter]]),j.flattenDeep([e.value]).map(u=>u.value)).length>0:!0));F(t)}});l.useEffect(()=>{k()},[n,h]),l.useEffect(()=>{(async()=>{try{const s=a.dataURL?typeof a.dataURL=="string"?a.fileType==="json"?await p.fetchAndParseJSON(a.dataURL,a.columnsToArray,a.dataTransformation,o):a.fileType==="api"?await p.fetchAndTransformDataFromAPI(a.dataURL,a.apiHeaders,a.columnsToArray,a.dataTransformation,o):await p.fetchAndParseCSV(a.dataURL,a.dataTransformation,a.columnsToArray,o,a.delimiter,!0):await p.fetchAndParseMultipleDataSources(a.dataURL,a.idColumnTitle):await p.transformColumnsToArray(a.data,a.columnsToArray);H(s)}catch(s){console.error("Data fetching error:",s)}})(),V()},[a,o]),l.useEffect(()=>{V()},[g]);const x=(t,s)=>{O(e=>e.map(u=>u.filter===t?{...u,value:s}:u))};return i.jsxRuntimeExports.jsxs(Q.GraphContainer,{id:w,"aria-label":"This is a dashboard",backgroundColor:r.backgroundColor??!1,theme:m||"light",language:r.language||"en",padding:r.padding,children:[r.title||r.description?i.jsxRuntimeExports.jsx(K.GraphHeader,{graphTitle:r.title,graphDescription:r.description,isDashboard:!0}):null,i.jsxRuntimeExports.jsxs("div",{className:"flex gap-4 flex-wrap",children:[n.length!==0?i.jsxRuntimeExports.jsx("div",{className:"flex-grow flex-shrink-0",style:{width:R==="side"?"280px":"100%"},children:i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-start gap-4 w-full sticky top-4",children:n?.map((t,s)=>i.jsxRuntimeExports.jsxs("div",{style:{width:t.width||`calc(${100/S}% - ${(S-1)/S}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[i.jsxRuntimeExports.jsx(U.b,{className:"mb-2",children:t.label}),t.singleSelect?i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isClearable:t.clearable===void 0?!0:t.clearable,size:"sm",variant:d,isMulti:!1,isSearchable:!0,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},defaultValue:t.defaultValue,value:t.value}):i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isMulti:!0,size:"sm",isClearable:t.clearable===void 0?!0:t.clearable,variant:d,isSearchable:!0,controlShouldRenderValue:!0,closeMenuOnSelect:!1,hideSelectedOptions:!1,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},value:t.value,defaultValue:t.defaultValue}),t.allowSelectAll?i.jsxRuntimeExports.jsx("button",{type:"button",className:"bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400",onClick:()=>{x(t.filter,t.availableValues)},children:"Select all options"}):null]})]},s))})}):null,i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]",style:{width:R==="side"?"calc(100% - 280px - 1rem)":"100%"},children:r.rows.map((t,s)=>i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-stretch gap-4 w-full h-auto",style:{minHeight:`${t.height||0}px`},children:t.columns.map((e,u)=>i.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/T(t.columns)}% - ${(T(t.columns)-(e.columnWidth||1))/T(t.columns)}rem)`,minHeight:"inherit"},children:A.includes(e.graphType)?i.jsxRuntimeExports.jsx(I.SingleGraphDashboardThreeDGraphs,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,minHeight:void 0,relativeHeight:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]}):N.includes(e.graphType)?i.jsxRuntimeExports.jsx(J.SingleGraphDashboardGeoHubMaps,{graphType:e.graphType,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},debugMode:o}):i.jsxRuntimeExports.jsx($.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},updateFilters:e.attachedFilter&&X.indexOf(e.graphType)!==-1&&n.findIndex(c=>c.filter===e.attachedFilter)!==-1?c=>{const P=n.findIndex(z=>z.filter===e.attachedFilter),W=c?n[P].singleSelect?{value:c,label:c}:[{value:c,label:c}]:void 0;x(e.attachedFilter,W)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]})},u))},s))})]})]})}exports.PerformanceIntensiveMultiGraphDashboard=Y;
2
2
  //# sourceMappingURL=PerformanceIntensiveMultiGraphDashboard.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceIntensiveMultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/PerformanceIntensive/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { SingleGraphDashboard } from '../SingleGraphDashboard';\r\n\r\nimport { SingleGraphDashboardThreeDGraphs } from './SingleGraphDashboardThreeDGraphs';\r\nimport { SingleGraphDashboardGeoHubMaps } from './SingleGraphDashboardGeoHubMaps';\r\n\r\nimport {\r\n ClassNameObject,\r\n PerformanceIntensiveDashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n PerformanceIntensiveDashboardColumnDataType,\r\n ThreeDGraphType,\r\n GeoHubGraphType,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\nimport { GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: PerformanceIntensiveDashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: PerformanceIntensiveDashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function PerformanceIntensiveMultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const threeDGraphs = ['threeDGlobe'];\r\n const geoHubMaps = ['geoHubCompareMap', 'geoHubMap', 'geoHubMapWithLayerSelection'];\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n size='sm'\r\n variant={uiMode}\r\n isMulti={false}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n defaultValue={d.defaultValue}\r\n value={d.value}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isMulti\r\n size='sm'\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n variant={uiMode}\r\n isSearchable\r\n controlShouldRenderValue\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent h-inherit grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n {threeDGraphs.includes(el.graphType) ? (\r\n <SingleGraphDashboardThreeDGraphs\r\n graphType={el.graphType as ThreeDGraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n ) : geoHubMaps.includes(el.graphType) ? (\r\n <SingleGraphDashboardGeoHubMaps\r\n graphType={el.graphType as GeoHubGraphType}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n debugMode={debugMode}\r\n />\r\n ) : (\r\n <SingleGraphDashboard\r\n graphType={el.graphType as GraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType as GraphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","PerformanceIntensiveMultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","threeDGraphs","geoHubMaps","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","Fragment","rows","minHeight","height","j","graphType","SingleGraphDashboardThreeDGraphs","settings","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration","SingleGraphDashboardGeoHubMaps","SingleGraphDashboard","indexOf","findIndex","dClicked","indx"],"mappings":"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"}
1
+ {"version":3,"file":"PerformanceIntensiveMultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/PerformanceIntensive/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { SingleGraphDashboard } from '../SingleGraphDashboard';\r\n\r\nimport { SingleGraphDashboardThreeDGraphs } from './SingleGraphDashboardThreeDGraphs';\r\nimport { SingleGraphDashboardGeoHubMaps } from './SingleGraphDashboardGeoHubMaps';\r\n\r\nimport {\r\n ClassNameObject,\r\n PerformanceIntensiveDashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n PerformanceIntensiveDashboardColumnDataType,\r\n ThreeDGraphType,\r\n GeoHubGraphType,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\nimport { GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: PerformanceIntensiveDashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: PerformanceIntensiveDashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function PerformanceIntensiveMultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const threeDGraphs = ['threeDGlobe'];\r\n const geoHubMaps = ['geoHubCompareMap', 'geoHubMap', 'geoHubMapWithLayerSelection'];\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n size='sm'\r\n variant={uiMode}\r\n isMulti={false}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n defaultValue={d.defaultValue}\r\n value={d.value}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isMulti\r\n size='sm'\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n variant={uiMode}\r\n isSearchable\r\n controlShouldRenderValue\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n {threeDGraphs.includes(el.graphType) ? (\r\n <SingleGraphDashboardThreeDGraphs\r\n graphType={el.graphType as ThreeDGraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n ) : geoHubMaps.includes(el.graphType) ? (\r\n <SingleGraphDashboardGeoHubMaps\r\n graphType={el.graphType as GeoHubGraphType}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n debugMode={debugMode}\r\n />\r\n ) : (\r\n <SingleGraphDashboard\r\n graphType={el.graphType as GraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType as GraphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","PerformanceIntensiveMultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","threeDGraphs","geoHubMaps","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","Fragment","rows","minHeight","height","j","graphType","SingleGraphDashboardThreeDGraphs","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration","SingleGraphDashboardGeoHubMaps","SingleGraphDashboard","indexOf","findIndex","dClicked","indx"],"mappings":"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"}