@undp/data-viz 1.3.0 → 1.3.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 (572) hide show
  1. package/dist/AreaChart.cjs +2 -0
  2. package/dist/AreaChart.cjs.map +1 -0
  3. package/dist/AreaChart.js +530 -1
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/Axis-DE7dSn1_.cjs +2 -0
  6. package/dist/{Axis-BlyBRMNw.cjs.map → Axis-DE7dSn1_.cjs.map} +1 -1
  7. package/dist/{Axis-CvK-w3E2.js → Axis-Ddg-seDi.js} +10 -11
  8. package/dist/{Axis-CvK-w3E2.js.map → Axis-Ddg-seDi.js.map} +1 -1
  9. package/dist/AxisTitle-BmHLMRJZ.js +20 -0
  10. package/dist/{AxisTitle-BeMxcw5I.js.map → AxisTitle-BmHLMRJZ.js.map} +1 -1
  11. package/dist/AxisTitle-CK9YeovX.cjs +2 -0
  12. package/dist/{AxisTitle-BY8MI9jC.cjs.map → AxisTitle-CK9YeovX.cjs.map} +1 -1
  13. package/dist/BarGraph.cjs +2 -0
  14. package/dist/BarGraph.cjs.map +1 -0
  15. package/dist/BarGraph.js +4043 -1
  16. package/dist/BarGraph.js.map +1 -1
  17. package/dist/BasicStatCard.cjs +2 -0
  18. package/dist/BasicStatCard.cjs.map +1 -0
  19. package/dist/BasicStatCard.js +190 -1
  20. package/dist/BasicStatCard.js.map +1 -1
  21. package/dist/BeeSwarmChart.cjs +2 -0
  22. package/dist/BeeSwarmChart.cjs.map +1 -0
  23. package/dist/BeeSwarmChart.d.ts +0 -8
  24. package/dist/BeeSwarmChart.js +1042 -1
  25. package/dist/BeeSwarmChart.js.map +1 -1
  26. package/dist/BiVariateChoroplethMap.cjs +2 -0
  27. package/dist/BiVariateChoroplethMap.cjs.map +1 -0
  28. package/dist/BiVariateChoroplethMap.js +720 -1
  29. package/dist/BiVariateChoroplethMap.js.map +1 -1
  30. package/dist/BulletChart.cjs +2 -0
  31. package/dist/BulletChart.cjs.map +1 -0
  32. package/dist/BulletChart.js +1431 -1
  33. package/dist/BulletChart.js.map +1 -1
  34. package/dist/ButterflyChart.cjs +2 -0
  35. package/dist/ButterflyChart.cjs.map +1 -0
  36. package/dist/ButterflyChart.js +692 -1
  37. package/dist/ButterflyChart.js.map +1 -1
  38. package/dist/ChoroplethMap.cjs +2 -0
  39. package/dist/ChoroplethMap.cjs.map +1 -0
  40. package/dist/ChoroplethMap.js +745 -1
  41. package/dist/ChoroplethMap.js.map +1 -1
  42. package/dist/CirclePackingGraph.cjs +2 -0
  43. package/dist/CirclePackingGraph.cjs.map +1 -0
  44. package/dist/CirclePackingGraph.d.ts +0 -8
  45. package/dist/CirclePackingGraph.js +14 -1
  46. package/dist/CirclePackingGraph.js.map +1 -1
  47. package/dist/ColorLegend.cjs +2 -0
  48. package/dist/ColorLegend.cjs.map +1 -0
  49. package/dist/ColorLegend.js +47 -1
  50. package/dist/ColorLegend.js.map +1 -1
  51. package/dist/ColorLegendWithMouseOver.cjs +2 -0
  52. package/dist/ColorLegendWithMouseOver.cjs.map +1 -0
  53. package/dist/ColorLegendWithMouseOver.js +70 -1
  54. package/dist/ColorLegendWithMouseOver.js.map +1 -1
  55. package/dist/Colors.cjs +2 -0
  56. package/dist/Colors.cjs.map +1 -0
  57. package/dist/Colors.js +561 -1
  58. package/dist/Colors.js.map +1 -1
  59. package/dist/CopyTextButton.cjs +17 -0
  60. package/dist/CopyTextButton.cjs.map +1 -0
  61. package/dist/CopyTextButton.js +698 -16
  62. package/dist/CopyTextButton.js.map +1 -1
  63. package/dist/CsvDownloadButton.cjs +23 -0
  64. package/dist/CsvDownloadButton.cjs.map +1 -0
  65. package/dist/CsvDownloadButton.js +852 -7
  66. package/dist/CsvDownloadButton.js.map +1 -1
  67. package/dist/DataCards.cjs +2 -0
  68. package/dist/DataCards.cjs.map +1 -0
  69. package/dist/DataCards.js +14 -1
  70. package/dist/DataCards.js.map +1 -1
  71. package/dist/DataTable.cjs +2 -0
  72. package/dist/DataTable.cjs.map +1 -0
  73. package/dist/DataTable.js +331 -1
  74. package/dist/DataTable.js.map +1 -1
  75. package/dist/DifferenceLineChart.cjs +2 -0
  76. package/dist/DifferenceLineChart.cjs.map +1 -0
  77. package/dist/DifferenceLineChart.js +805 -1
  78. package/dist/DifferenceLineChart.js.map +1 -1
  79. package/dist/DonutChart.cjs +2 -0
  80. package/dist/DonutChart.cjs.map +1 -0
  81. package/dist/DonutChart.js +478 -1
  82. package/dist/DonutChart.js.map +1 -1
  83. package/dist/DotDensityMap.cjs +2 -0
  84. package/dist/DotDensityMap.cjs.map +1 -0
  85. package/dist/DotDensityMap.js +600 -1
  86. package/dist/DotDensityMap.js.map +1 -1
  87. package/dist/DropdownSelect-0I2QxaVy.cjs +29 -0
  88. package/dist/DropdownSelect-0I2QxaVy.cjs.map +1 -0
  89. package/dist/DropdownSelect-CDC9lEqU.js +4193 -0
  90. package/dist/DropdownSelect-CDC9lEqU.js.map +1 -0
  91. package/dist/DualAxisLineChart.cjs +2 -0
  92. package/dist/DualAxisLineChart.cjs.map +1 -0
  93. package/dist/DualAxisLineChart.js +699 -1
  94. package/dist/DualAxisLineChart.js.map +1 -1
  95. package/dist/DumbbellChart.cjs +2 -0
  96. package/dist/DumbbellChart.cjs.map +1 -0
  97. package/dist/DumbbellChart.js +1510 -1
  98. package/dist/DumbbellChart.js.map +1 -1
  99. package/dist/{EmptyState-b2Ln487i.js → EmptyState-DdTp-Mdn.js} +8 -8
  100. package/dist/{EmptyState-b2Ln487i.js.map → EmptyState-DdTp-Mdn.js.map} +1 -1
  101. package/dist/EmptyState-d8_8SxeW.cjs +2 -0
  102. package/dist/{EmptyState-BQguKAp5.cjs.map → EmptyState-d8_8SxeW.cjs.map} +1 -1
  103. package/dist/ExcelDownloadButton.cjs +2 -0
  104. package/dist/ExcelDownloadButton.cjs.map +1 -0
  105. package/dist/ExcelDownloadButton.js +29 -1
  106. package/dist/ExcelDownloadButton.js.map +1 -1
  107. package/dist/FootNote.cjs +2 -0
  108. package/dist/FootNote.cjs.map +1 -0
  109. package/dist/FootNote.js +20 -1
  110. package/dist/FootNote.js.map +1 -1
  111. package/dist/GeoHubCompareMaps.cjs +2 -0
  112. package/dist/GeoHubCompareMaps.cjs.map +1 -0
  113. package/dist/GeoHubCompareMaps.js +370 -1
  114. package/dist/GeoHubCompareMaps.js.map +1 -1
  115. package/dist/GeoHubMap.cjs +2 -0
  116. package/dist/GeoHubMap.cjs.map +1 -0
  117. package/dist/GeoHubMap.js +429 -1
  118. package/dist/GeoHubMap.js.map +1 -1
  119. package/dist/GeoHubMapWithLayerSelection.cjs +2 -0
  120. package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -0
  121. package/dist/GeoHubMapWithLayerSelection.js +307 -1
  122. package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
  123. package/dist/GraphDescription.cjs +2 -0
  124. package/dist/GraphDescription.cjs.map +1 -0
  125. package/dist/GraphDescription.js +20 -1
  126. package/dist/GraphDescription.js.map +1 -1
  127. package/dist/GraphFooter.cjs +2 -0
  128. package/dist/GraphFooter.cjs.map +1 -0
  129. package/dist/GraphFooter.js +21 -1
  130. package/dist/GraphFooter.js.map +1 -1
  131. package/dist/GraphHeader.cjs +2 -0
  132. package/dist/GraphHeader.cjs.map +1 -0
  133. package/dist/GraphHeader.js +63 -1
  134. package/dist/GraphHeader.js.map +1 -1
  135. package/dist/GraphTitle.cjs +2 -0
  136. package/dist/GraphTitle.cjs.map +1 -0
  137. package/dist/GraphTitle.js +28 -1
  138. package/dist/GraphTitle.js.map +1 -1
  139. package/dist/GriddedGraphs.cjs +2 -0
  140. package/dist/GriddedGraphs.cjs.map +1 -0
  141. package/dist/GriddedGraphs.js +482 -1
  142. package/dist/GriddedGraphs.js.map +1 -1
  143. package/dist/GriddedGraphsFromConfig.cjs +2 -0
  144. package/dist/GriddedGraphsFromConfig.cjs.map +1 -0
  145. package/dist/GriddedGraphsFromConfig.js +42 -1
  146. package/dist/GriddedGraphsFromConfig.js.map +1 -1
  147. package/dist/HeatMap.cjs +2 -0
  148. package/dist/HeatMap.cjs.map +1 -0
  149. package/dist/HeatMap.js +451 -1
  150. package/dist/HeatMap.js.map +1 -1
  151. package/dist/Histogram.cjs +2 -0
  152. package/dist/Histogram.cjs.map +1 -0
  153. package/dist/Histogram.js +287 -1
  154. package/dist/Histogram.js.map +1 -1
  155. package/dist/ImageDownloadButton.cjs +2 -0
  156. package/dist/ImageDownloadButton.cjs.map +1 -0
  157. package/dist/ImageDownloadButton.js +28 -1
  158. package/dist/ImageDownloadButton.js.map +1 -1
  159. package/dist/LineChartWithConfidenceInterval.cjs +2 -0
  160. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -0
  161. package/dist/LineChartWithConfidenceInterval.js +818 -1
  162. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  163. package/dist/LinearColorLegend.cjs +2 -0
  164. package/dist/LinearColorLegend.cjs.map +1 -0
  165. package/dist/LinearColorLegend.js +33 -1
  166. package/dist/LinearColorLegend.js.map +1 -1
  167. package/dist/Modal-CUU6ZK3U.js +1019 -0
  168. package/dist/Modal-CUU6ZK3U.js.map +1 -0
  169. package/dist/Modal-C_dl0EtQ.cjs +46 -0
  170. package/dist/Modal-C_dl0EtQ.cjs.map +1 -0
  171. package/dist/MultiGraphDashboard.cjs +2 -0
  172. package/dist/MultiGraphDashboard.cjs.map +1 -0
  173. package/dist/MultiGraphDashboard.js +303 -1
  174. package/dist/MultiGraphDashboard.js.map +1 -1
  175. package/dist/MultiGraphDashboardFromConfig.cjs +2 -0
  176. package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -0
  177. package/dist/MultiGraphDashboardFromConfig.js +37 -1
  178. package/dist/MultiGraphDashboardFromConfig.js.map +1 -1
  179. package/dist/MultiGraphDashboardWideToLongFormat.cjs +2 -0
  180. package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -0
  181. package/dist/MultiGraphDashboardWideToLongFormat.js +243 -1
  182. package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
  183. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +2 -0
  184. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -0
  185. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +30 -1
  186. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -1
  187. package/dist/MultiLineAltChart.cjs +2 -0
  188. package/dist/MultiLineAltChart.cjs.map +1 -0
  189. package/dist/MultiLineAltChart.js +689 -1
  190. package/dist/MultiLineAltChart.js.map +1 -1
  191. package/dist/MultiLineChart.cjs +2 -0
  192. package/dist/MultiLineChart.cjs.map +1 -0
  193. package/dist/MultiLineChart.js +722 -1
  194. package/dist/MultiLineChart.js.map +1 -1
  195. package/dist/ParetoChart.cjs +2 -0
  196. package/dist/ParetoChart.cjs.map +1 -0
  197. package/dist/ParetoChart.js +636 -1
  198. package/dist/ParetoChart.js.map +1 -1
  199. package/dist/RadarChart.cjs +2 -0
  200. package/dist/RadarChart.cjs.map +1 -0
  201. package/dist/RadarChart.js +677 -1
  202. package/dist/RadarChart.js.map +1 -1
  203. package/dist/{ReferenceLine-BgDdQbDI.js → ReferenceLine-C1GpoG9d.js} +33 -34
  204. package/dist/ReferenceLine-C1GpoG9d.js.map +1 -0
  205. package/dist/ReferenceLine-CuFMk0cI.cjs +2 -0
  206. package/dist/ReferenceLine-CuFMk0cI.cjs.map +1 -0
  207. package/dist/RegressionLine-7_rKTHN_.cjs +2 -0
  208. package/dist/{RegressionLine-BfpCuD7B.cjs.map → RegressionLine-7_rKTHN_.cjs.map} +1 -1
  209. package/dist/{RegressionLine-cSljpHaE.js → RegressionLine-BFwDCTUU.js} +17 -18
  210. package/dist/{RegressionLine-cSljpHaE.js.map → RegressionLine-BFwDCTUU.js.map} +1 -1
  211. package/dist/SVGDownloadButton.cjs +2 -0
  212. package/dist/SVGDownloadButton.cjs.map +1 -0
  213. package/dist/SVGDownloadButton.js +28 -1
  214. package/dist/SVGDownloadButton.js.map +1 -1
  215. package/dist/SankeyChart.cjs +2 -0
  216. package/dist/SankeyChart.cjs.map +1 -0
  217. package/dist/SankeyChart.js +989 -1
  218. package/dist/SankeyChart.js.map +1 -1
  219. package/dist/ScatterPlot.cjs +2 -0
  220. package/dist/ScatterPlot.cjs.map +1 -0
  221. package/dist/ScatterPlot.js +828 -1
  222. package/dist/ScatterPlot.js.map +1 -1
  223. package/dist/ScrollStory.cjs +2 -0
  224. package/dist/ScrollStory.cjs.map +1 -0
  225. package/dist/ScrollStory.js +105 -1
  226. package/dist/ScrollStory.js.map +1 -1
  227. package/dist/SimpleLineChart.cjs +2 -0
  228. package/dist/SimpleLineChart.cjs.map +1 -0
  229. package/dist/SimpleLineChart.js +619 -1
  230. package/dist/SimpleLineChart.js.map +1 -1
  231. package/dist/SingleGraphDashboard.cjs +2 -0
  232. package/dist/SingleGraphDashboard.cjs.map +1 -0
  233. package/dist/SingleGraphDashboard.js +522 -1
  234. package/dist/SingleGraphDashboard.js.map +1 -1
  235. package/dist/SingleGraphDashboardFromConfig.cjs +2 -0
  236. package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -0
  237. package/dist/SingleGraphDashboardFromConfig.js +34 -1
  238. package/dist/SingleGraphDashboardFromConfig.js.map +1 -1
  239. package/dist/SlopeChart.cjs +2 -0
  240. package/dist/SlopeChart.cjs.map +1 -0
  241. package/dist/SlopeChart.js +582 -1
  242. package/dist/SlopeChart.js.map +1 -1
  243. package/dist/Source.cjs +2 -0
  244. package/dist/Source.cjs.map +1 -0
  245. package/dist/Source.js +40 -1
  246. package/dist/Source.js.map +1 -1
  247. package/dist/SparkLine.cjs +2 -0
  248. package/dist/SparkLine.cjs.map +1 -0
  249. package/dist/SparkLine.js +320 -1
  250. package/dist/SparkLine.js.map +1 -1
  251. package/dist/Spinner-C85UF28E.js +30 -0
  252. package/dist/Spinner-C85UF28E.js.map +1 -0
  253. package/dist/Spinner-DA6Z5E4n.cjs +2 -0
  254. package/dist/Spinner-DA6Z5E4n.cjs.map +1 -0
  255. package/dist/StatCardFromData.cjs +2 -0
  256. package/dist/StatCardFromData.cjs.map +1 -0
  257. package/dist/StatCardFromData.js +249 -1
  258. package/dist/StatCardFromData.js.map +1 -1
  259. package/dist/StripChart.cjs +2 -0
  260. package/dist/StripChart.cjs.map +1 -0
  261. package/dist/StripChart.js +988 -1
  262. package/dist/StripChart.js.map +1 -1
  263. package/dist/ThreeDGlobe.cjs +2 -0
  264. package/dist/ThreeDGlobe.cjs.map +1 -0
  265. package/dist/ThreeDGlobe.js +451 -1
  266. package/dist/ThreeDGlobe.js.map +1 -1
  267. package/dist/ThresholdColorLegendWithMouseOver.cjs +2 -0
  268. package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -0
  269. package/dist/ThresholdColorLegendWithMouseOver.js +130 -1
  270. package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
  271. package/dist/{Tooltip-CzZ1wFyF.js → Tooltip-DyM5snqx.js} +15 -16
  272. package/dist/{Tooltip-CzZ1wFyF.js.map → Tooltip-DyM5snqx.js.map} +1 -1
  273. package/dist/Tooltip-n8z5bfav.cjs +2 -0
  274. package/dist/{Tooltip-BM18N_3l.cjs.map → Tooltip-n8z5bfav.cjs.map} +1 -1
  275. package/dist/TreeMapGraph.cjs +2 -0
  276. package/dist/TreeMapGraph.cjs.map +1 -0
  277. package/dist/TreeMapGraph.js +760 -1
  278. package/dist/TreeMapGraph.js.map +1 -1
  279. package/dist/Types.cjs +2 -0
  280. package/dist/Types.cjs.map +1 -0
  281. package/dist/Types.js +1 -1
  282. package/dist/Typography-Ctgfl1J5.js +140 -0
  283. package/dist/Typography-Ctgfl1J5.js.map +1 -0
  284. package/dist/Typography-k-kOjICQ.cjs +2 -0
  285. package/dist/Typography-k-kOjICQ.cjs.map +1 -0
  286. package/dist/UnitChart.cjs +2 -0
  287. package/dist/UnitChart.cjs.map +1 -0
  288. package/dist/UnitChart.js +216 -1
  289. package/dist/UnitChart.js.map +1 -1
  290. package/dist/XAxesLabels-CJMQbfVy.cjs +2 -0
  291. package/dist/{XAxesLabels-C9REbQQs.cjs.map → XAxesLabels-CJMQbfVy.cjs.map} +1 -1
  292. package/dist/{XAxesLabels-DVw7Lvuz.js → XAxesLabels-DQFo_z2R.js} +21 -22
  293. package/dist/{XAxesLabels-DVw7Lvuz.js.map → XAxesLabels-DQFo_z2R.js.map} +1 -1
  294. package/dist/{XTicksAndGridLines-CUefTINd.js → XTicksAndGridLines-Bn9u5gOM.js} +19 -20
  295. package/dist/{XTicksAndGridLines-CUefTINd.js.map → XTicksAndGridLines-Bn9u5gOM.js.map} +1 -1
  296. package/dist/XTicksAndGridLines-CCzXIV8d.cjs +2 -0
  297. package/dist/{XTicksAndGridLines-DuK35ROS.cjs.map → XTicksAndGridLines-CCzXIV8d.cjs.map} +1 -1
  298. package/dist/YAxesLabels-BXLTX7AI.cjs +2 -0
  299. package/dist/{YAxesLabels-DhBdLk3Z.cjs.map → YAxesLabels-BXLTX7AI.cjs.map} +1 -1
  300. package/dist/{YAxesLabels-CYVY053X.js → YAxesLabels-H5-002X5.js} +11 -12
  301. package/dist/{YAxesLabels-CYVY053X.js.map → YAxesLabels-H5-002X5.js.map} +1 -1
  302. package/dist/{YTicksAndGridLines-BJRXuBdC.js → YTicksAndGridLines-B6ah7CRf.js} +14 -15
  303. package/dist/{YTicksAndGridLines-BJRXuBdC.js.map → YTicksAndGridLines-B6ah7CRf.js.map} +1 -1
  304. package/dist/YTicksAndGridLines-DBDuz6vb.cjs +2 -0
  305. package/dist/{YTicksAndGridLines-CtLvzExe.cjs.map → YTicksAndGridLines-DBDuz6vb.cjs.map} +1 -1
  306. package/dist/{checkIfMultiple-CaefP4X2.js → checkIfMultiple-BB7PlCNh.js} +1013 -518
  307. package/dist/checkIfMultiple-BB7PlCNh.js.map +1 -0
  308. package/dist/checkIfMultiple-D5ysrI7G.cjs +12 -0
  309. package/dist/checkIfMultiple-D5ysrI7G.cjs.map +1 -0
  310. package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs +2 -0
  311. package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs.map +1 -0
  312. package/dist/checkIfNullOrUndefined-DmfiKkNw.js +7 -0
  313. package/dist/checkIfNullOrUndefined-DmfiKkNw.js.map +1 -0
  314. package/dist/customArea-BYNyxAkm.cjs +2 -0
  315. package/dist/{customArea-B47Ew5cT.cjs.map → customArea-BYNyxAkm.cjs.map} +1 -1
  316. package/dist/{customArea-I3MsoqIl.js → customArea-CaxScFmW.js} +29 -30
  317. package/dist/{customArea-I3MsoqIl.js.map → customArea-CaxScFmW.js.map} +1 -1
  318. package/dist/excelDownload-BOA-lskf.js +19 -0
  319. package/dist/excelDownload-BOA-lskf.js.map +1 -0
  320. package/dist/excelDownload-BQpsCa62.cjs +2 -0
  321. package/dist/excelDownload-BQpsCa62.cjs.map +1 -0
  322. package/dist/fetchAndParseData-Bcmr659B.js +1196 -0
  323. package/dist/fetchAndParseData-Bcmr659B.js.map +1 -0
  324. package/dist/fetchAndParseData-DmgQtB9n.cjs +16 -0
  325. package/dist/fetchAndParseData-DmgQtB9n.cjs.map +1 -0
  326. package/dist/fetchAndParseData.cjs +2 -0
  327. package/dist/fetchAndParseData.cjs.map +1 -0
  328. package/dist/fetchAndParseData.js +9 -15
  329. package/dist/fetchAndParseData.js.map +1 -1
  330. package/dist/getGraphList-DuColTJM.js +265 -0
  331. package/dist/getGraphList-DuColTJM.js.map +1 -0
  332. package/dist/getGraphList-gf02xgT2.cjs +2 -0
  333. package/dist/getGraphList-gf02xgT2.cjs.map +1 -0
  334. package/dist/getJenks-TWQvbuOz.cjs +2 -0
  335. package/dist/getJenks-TWQvbuOz.cjs.map +1 -0
  336. package/dist/getJenks-VhM3GIoC.js +23 -0
  337. package/dist/getJenks-VhM3GIoC.js.map +1 -0
  338. package/dist/getSchema.cjs +2 -0
  339. package/dist/getSchema.cjs.map +1 -0
  340. package/dist/getSchema.js +910 -1
  341. package/dist/getSchema.js.map +1 -1
  342. package/dist/getSliderMarks-C0jptXeP.js +1054 -0
  343. package/dist/getSliderMarks-C0jptXeP.js.map +1 -0
  344. package/dist/getSliderMarks-CtsEXiLV.cjs +6 -0
  345. package/dist/getSliderMarks-CtsEXiLV.cjs.map +1 -0
  346. package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js +28 -0
  347. package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js.map +1 -0
  348. package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs +2 -0
  349. package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs.map +1 -0
  350. package/dist/getUniqValue-BtUENB2H.js +20 -0
  351. package/dist/getUniqValue-BtUENB2H.js.map +1 -0
  352. package/dist/getUniqValue-CHqgSss5.cjs +2 -0
  353. package/dist/getUniqValue-CHqgSss5.cjs.map +1 -0
  354. package/dist/imageDownload-CgDcm1Sj.cjs +3 -0
  355. package/dist/imageDownload-CgDcm1Sj.cjs.map +1 -0
  356. package/dist/imageDownload-Dcci2LEy.js +495 -0
  357. package/dist/imageDownload-Dcci2LEy.js.map +1 -0
  358. package/dist/index-BVnYktl4.js +435 -0
  359. package/dist/index-BVnYktl4.js.map +1 -0
  360. package/dist/index-BW_-wD2k.cjs +2 -0
  361. package/dist/index-BW_-wD2k.cjs.map +1 -0
  362. package/dist/{index-DXmF_0ez.js → index-BmCqpO1B.js} +74 -40
  363. package/dist/index-BmCqpO1B.js.map +1 -0
  364. package/dist/{index-Db-Yg_Ud.js → index-BxAUvrua.js} +19 -19
  365. package/dist/{index-Db-Yg_Ud.js.map → index-BxAUvrua.js.map} +1 -1
  366. package/dist/index-CHPV5EwG-BPSP-7Jg.js +3341 -0
  367. package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +1 -0
  368. package/dist/index-CHPV5EwG-DDoeWRVt.cjs +44 -0
  369. package/dist/index-CHPV5EwG-DDoeWRVt.cjs.map +1 -0
  370. package/dist/index-CylX-pWB.cjs +2 -0
  371. package/dist/{index-BYroABPm.cjs.map → index-CylX-pWB.cjs.map} +1 -1
  372. package/dist/index-D9h2WYDS.cjs +22 -0
  373. package/dist/index-D9h2WYDS.cjs.map +1 -0
  374. package/dist/index-DG3YrCr5-D3FrrXj8.js +459 -0
  375. package/dist/index-DG3YrCr5-D3FrrXj8.js.map +1 -0
  376. package/dist/index-DG3YrCr5-v7rayV3N.cjs +2 -0
  377. package/dist/index-DG3YrCr5-v7rayV3N.cjs.map +1 -0
  378. package/dist/index-DVOJ7vxH.cjs +10 -0
  379. package/dist/{index-a2C2Bqn2.cjs.map → index-DVOJ7vxH.cjs.map} +1 -1
  380. package/dist/index-D_n8aamX.cjs +2 -0
  381. package/dist/index-D_n8aamX.cjs.map +1 -0
  382. package/dist/index-OCoyy1wG.js +635 -0
  383. package/dist/index-OCoyy1wG.js.map +1 -0
  384. package/dist/{index-DzdwZ2OA.js → index-n_RI8T0n.js} +3 -3
  385. package/dist/{index-DzdwZ2OA.js.map → index-n_RI8T0n.js.map} +1 -1
  386. package/dist/index-tvAyXPPW-DBlMKnNB.js +47 -0
  387. package/dist/index-tvAyXPPW-DBlMKnNB.js.map +1 -0
  388. package/dist/index-tvAyXPPW-DPOG-C2i.cjs +2 -0
  389. package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +1 -0
  390. package/dist/index.cjs +2 -0
  391. package/dist/index.cjs.map +1 -0
  392. package/dist/index.d.ts +1 -5
  393. package/dist/index.js +180 -1
  394. package/dist/index.js.map +1 -1
  395. package/dist/numberFormattingFunction-02t-wJta.cjs +2 -0
  396. package/dist/numberFormattingFunction-02t-wJta.cjs.map +1 -0
  397. package/dist/numberFormattingFunction-14YCbkN2.js +13 -0
  398. package/dist/numberFormattingFunction-14YCbkN2.js.map +1 -0
  399. package/dist/{use-in-view-CZPXmTZM.js → proxy-DJxJg1kD.js} +699 -732
  400. package/dist/proxy-DJxJg1kD.js.map +1 -0
  401. package/dist/{use-in-view-Dl1CsAIo.cjs → proxy-PQd2AItT.cjs} +2 -2
  402. package/dist/proxy-PQd2AItT.cjs.map +1 -0
  403. package/dist/removeOutliers-DR48e-18.js +57 -0
  404. package/dist/removeOutliers-DR48e-18.js.map +1 -0
  405. package/dist/removeOutliers-WELHHqiI.cjs +2 -0
  406. package/dist/removeOutliers-WELHHqiI.cjs.map +1 -0
  407. package/dist/{string2HTML-BX0oNw83.js → string2HTML-CWHGfz_d.js} +2 -2
  408. package/dist/{string2HTML-BX0oNw83.js.map → string2HTML-CWHGfz_d.js.map} +1 -1
  409. package/dist/{string2HTML-X4ZYX5jI.cjs → string2HTML-D2Avudmb.cjs} +2 -2
  410. package/dist/{string2HTML-X4ZYX5jI.cjs.map → string2HTML-D2Avudmb.cjs.map} +1 -1
  411. package/dist/svgDownload-C2-E3yf2.js +9 -0
  412. package/dist/svgDownload-C2-E3yf2.js.map +1 -0
  413. package/dist/svgDownload-D9zEGjTF.cjs +2 -0
  414. package/dist/svgDownload-D9zEGjTF.cjs.map +1 -0
  415. package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs +4 -0
  416. package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map +1 -0
  417. package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js +145 -0
  418. package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js.map +1 -0
  419. package/dist/transformData.cjs +2 -0
  420. package/dist/transformData.cjs.map +1 -0
  421. package/dist/transformData.d.ts +170 -0
  422. package/dist/transformData.js +10 -0
  423. package/dist/transformData.js.map +1 -0
  424. package/dist/transformDataForAggregation-BUGJnson.cjs +2 -0
  425. package/dist/transformDataForAggregation-BUGJnson.cjs.map +1 -0
  426. package/dist/transformDataForAggregation-DAQJWGNL.js +759 -0
  427. package/dist/transformDataForAggregation-DAQJWGNL.js.map +1 -0
  428. package/dist/transformDataForGraphFromFile-CrntpaMU.cjs +2 -0
  429. package/dist/transformDataForGraphFromFile-CrntpaMU.cjs.map +1 -0
  430. package/dist/transformDataForGraphFromFile-DdNiOWeC.js +24 -0
  431. package/dist/transformDataForGraphFromFile-DdNiOWeC.js.map +1 -0
  432. package/dist/use-in-view-BAHrBy6b.js +40 -0
  433. package/dist/use-in-view-BAHrBy6b.js.map +1 -0
  434. package/dist/use-in-view-BCmzDU2O.cjs +2 -0
  435. package/dist/use-in-view-BCmzDU2O.cjs.map +1 -0
  436. package/dist/utils.cjs +2 -0
  437. package/dist/utils.cjs.map +1 -0
  438. package/dist/utils.d.ts +217 -0
  439. package/dist/utils.js +27 -0
  440. package/dist/utils.js.map +1 -0
  441. package/dist/validateSchema.cjs +2 -0
  442. package/dist/validateSchema.cjs.map +1 -0
  443. package/dist/validateSchema.js +104 -1
  444. package/dist/validateSchema.js.map +1 -1
  445. package/dist/x-CnsEH4Ox-CGGXQl4M.cjs +27 -0
  446. package/dist/x-CnsEH4Ox-CGGXQl4M.cjs.map +1 -0
  447. package/dist/x-CnsEH4Ox-DDvAJndW.js +101 -0
  448. package/dist/x-CnsEH4Ox-DDvAJndW.js.map +1 -0
  449. package/package.json +15 -90
  450. package/dist/Axis-BlyBRMNw.cjs +0 -2
  451. package/dist/AxisTitle-BY8MI9jC.cjs +0 -2
  452. package/dist/AxisTitle-BeMxcw5I.js +0 -21
  453. package/dist/DropdownSelect-CuzV7gdj.cjs +0 -29
  454. package/dist/DropdownSelect-CuzV7gdj.cjs.map +0 -1
  455. package/dist/DropdownSelect-DmZsXrhY.js +0 -2698
  456. package/dist/DropdownSelect-DmZsXrhY.js.map +0 -1
  457. package/dist/EmptyState-BQguKAp5.cjs +0 -2
  458. package/dist/Modal-C9txyGOk.js +0 -723
  459. package/dist/Modal-C9txyGOk.js.map +0 -1
  460. package/dist/Modal-cQF2UQIa.cjs +0 -46
  461. package/dist/Modal-cQF2UQIa.cjs.map +0 -1
  462. package/dist/ReferenceLine-BgDdQbDI.js.map +0 -1
  463. package/dist/ReferenceLine-Bsb5jeE4.cjs +0 -2
  464. package/dist/ReferenceLine-Bsb5jeE4.cjs.map +0 -1
  465. package/dist/RegressionLine-BfpCuD7B.cjs +0 -2
  466. package/dist/Spinner-DN3s4S0H.js +0 -17
  467. package/dist/Spinner-DN3s4S0H.js.map +0 -1
  468. package/dist/Spinner-UmN-KPe9.cjs +0 -2
  469. package/dist/Spinner-UmN-KPe9.cjs.map +0 -1
  470. package/dist/Tooltip-BM18N_3l.cjs +0 -2
  471. package/dist/Typography-CDR-DAHH.cjs +0 -2
  472. package/dist/Typography-CDR-DAHH.cjs.map +0 -1
  473. package/dist/Typography-XJoSE-By.js +0 -58
  474. package/dist/Typography-XJoSE-By.js.map +0 -1
  475. package/dist/XAxesLabels-C9REbQQs.cjs +0 -2
  476. package/dist/XTicksAndGridLines-DuK35ROS.cjs +0 -2
  477. package/dist/YAxesLabels-DhBdLk3Z.cjs +0 -2
  478. package/dist/YTicksAndGridLines-CtLvzExe.cjs +0 -2
  479. package/dist/checkIfMultiple-CaefP4X2.js.map +0 -1
  480. package/dist/checkIfMultiple-D3h8to1T.cjs +0 -12
  481. package/dist/checkIfMultiple-D3h8to1T.cjs.map +0 -1
  482. package/dist/checkIfNullOrUndefined.d.ts +0 -15
  483. package/dist/checkIfNullOrUndefined.js +0 -2
  484. package/dist/checkIfNullOrUndefined.js.map +0 -1
  485. package/dist/customArea-B47Ew5cT.cjs +0 -2
  486. package/dist/excelDownload.d.ts +0 -31
  487. package/dist/excelDownload.js +0 -2
  488. package/dist/excelDownload.js.map +0 -1
  489. package/dist/generateCodes.d.ts +0 -25
  490. package/dist/generateCodes.js +0 -2
  491. package/dist/generateCodes.js.map +0 -1
  492. package/dist/getJenks.d.ts +0 -17
  493. package/dist/getJenks.js +0 -2
  494. package/dist/getJenks.js.map +0 -1
  495. package/dist/getPercentileValue.d.ts +0 -13
  496. package/dist/getPercentileValue.js +0 -2
  497. package/dist/getPercentileValue.js.map +0 -1
  498. package/dist/getQueryParamsFromLink.d.ts +0 -18
  499. package/dist/getQueryParamsFromLink.js +0 -2
  500. package/dist/getQueryParamsFromLink.js.map +0 -1
  501. package/dist/getSliderMarks-CWajGCGq.js +0 -719
  502. package/dist/getSliderMarks-CWajGCGq.js.map +0 -1
  503. package/dist/getSliderMarks-DDJ1CdhL.cjs +0 -6
  504. package/dist/getSliderMarks-DDJ1CdhL.cjs.map +0 -1
  505. package/dist/getTextColorBasedOnBgColor.d.ts +0 -13
  506. package/dist/getTextColorBasedOnBgColor.js +0 -2
  507. package/dist/getTextColorBasedOnBgColor.js.map +0 -1
  508. package/dist/getUniqValue.d.ts +0 -18
  509. package/dist/getUniqValue.js +0 -2
  510. package/dist/getUniqValue.js.map +0 -1
  511. package/dist/graphList.d.ts +0 -9
  512. package/dist/graphList.js +0 -2
  513. package/dist/graphList.js.map +0 -1
  514. package/dist/imageDownload.d.ts +0 -16
  515. package/dist/imageDownload.js +0 -3
  516. package/dist/imageDownload.js.map +0 -1
  517. package/dist/index-01r5X3Gr-9jE0ObrK.cjs +0 -2
  518. package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +0 -1
  519. package/dist/index-01r5X3Gr-kH7FxQ7P.js +0 -451
  520. package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +0 -1
  521. package/dist/index-BGMGC-HN.cjs +0 -22
  522. package/dist/index-BGMGC-HN.cjs.map +0 -1
  523. package/dist/index-BHm2KTjD-2e-Fu8L-.js +0 -702
  524. package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +0 -1
  525. package/dist/index-BHm2KTjD-D8FylaKc.cjs +0 -44
  526. package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +0 -1
  527. package/dist/index-BIPNFFja.js +0 -506
  528. package/dist/index-BIPNFFja.js.map +0 -1
  529. package/dist/index-BYroABPm.cjs +0 -2
  530. package/dist/index-CEc_9zWy.cjs +0 -2
  531. package/dist/index-CEc_9zWy.cjs.map +0 -1
  532. package/dist/index-CbVeVrla.cjs +0 -2
  533. package/dist/index-CbVeVrla.cjs.map +0 -1
  534. package/dist/index-CqzhBPuO-CfQywbdq.js +0 -41
  535. package/dist/index-CqzhBPuO-CfQywbdq.js.map +0 -1
  536. package/dist/index-CqzhBPuO-raKZqS7l.cjs +0 -2
  537. package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +0 -1
  538. package/dist/index-DSnvdkHZ.js +0 -495
  539. package/dist/index-DSnvdkHZ.js.map +0 -1
  540. package/dist/index-DXmF_0ez.js.map +0 -1
  541. package/dist/index-a2C2Bqn2.cjs +0 -10
  542. package/dist/numberFormattingFunction.d.ts +0 -22
  543. package/dist/numberFormattingFunction.js +0 -2
  544. package/dist/numberFormattingFunction.js.map +0 -1
  545. package/dist/removeOutliers.d.ts +0 -16
  546. package/dist/removeOutliers.js +0 -2
  547. package/dist/removeOutliers.js.map +0 -1
  548. package/dist/svgDownload.d.ts +0 -16
  549. package/dist/svgDownload.js +0 -2
  550. package/dist/svgDownload.js.map +0 -1
  551. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +0 -139
  552. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +0 -1
  553. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +0 -4
  554. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +0 -1
  555. package/dist/transformColumnsToArray.d.ts +0 -38
  556. package/dist/transformColumnsToArray.js +0 -2
  557. package/dist/transformColumnsToArray.js.map +0 -1
  558. package/dist/transformDataForAggregation.d.ts +0 -38
  559. package/dist/transformDataForAggregation.js +0 -2
  560. package/dist/transformDataForAggregation.js.map +0 -1
  561. package/dist/transformDataForGraph.d.ts +0 -47
  562. package/dist/transformDataForGraph.js +0 -2
  563. package/dist/transformDataForGraph.js.map +0 -1
  564. package/dist/transformDataForGraphFromFile.d.ts +0 -66
  565. package/dist/transformDataForGraphFromFile.js +0 -2
  566. package/dist/transformDataForGraphFromFile.js.map +0 -1
  567. package/dist/use-in-view-CZPXmTZM.js.map +0 -1
  568. package/dist/use-in-view-Dl1CsAIo.cjs.map +0 -1
  569. package/dist/x-Dft9NVe_-DcB7wtv5.js +0 -61
  570. package/dist/x-Dft9NVe_-DcB7wtv5.js.map +0 -1
  571. package/dist/x-Dft9NVe_-LeyJu02C.cjs +0 -27
  572. package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +0 -1
@@ -1,2 +1,304 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./index-BHm2KTjD-D8FylaKc.cjs"),o=require("react"),N=require("./index-Ds0uHjK9.cjs"),y=require("./index-B0rbzOoC.cjs"),m=require("./DropdownSelect-CuzV7gdj.cjs"),H=require("./checkIfMultiple-D3h8to1T.cjs"),L=require("./SingleGraphDashboard.js"),g=require("./fetchAndParseData.js"),P=require("./getUniqValue.js"),U=require("./GraphHeader.js"),I=require("./transformColumnsToArray.js"),z=require("./filterData-DN6py7y_.cjs"),F=require("./index-BGMGC-HN.cjs"),v=x=>x.map(a=>a.columnWidth||1).reduce((a,d)=>a+d,0),B=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function J(x){const{dashboardID:S,dashboardLayout:i,dataSettings:a,filters:d,debugMode:c,theme:j="light",readableHeader:V,dataFilters:A,noOfFiltersPerRow:f=4,filterPosition:w,uiMode:b="normal",graphStyles:k,graphClassNames:q}=x,[D,M]=o.useState(void 0),[p,O]=o.useState(void 0),[u,C]=o.useState([]),R=o.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]),E=o.useMemo(()=>!p||u.length===0?p:p.filter(n=>u.every(e=>e.value&&y.flattenDeep([e.value]).length>0?N.intersection(y.flattenDeep([n[e.filter]]),y.flattenDeep([e.value]).map(r=>r.value)).length>0:!0)),[u,p]);o.useEffect(()=>{M(E)},[E]);const T=o.useCallback(async()=>{if(a)try{const n=await(a.dataURL?typeof a.dataURL=="string"?a.fileType==="json"?g.fetchAndParseJSON(a.dataURL,a.columnsToArray,a.dataTransformation,c):a.fileType==="api"?g.fetchAndTransformDataFromAPI(a.dataURL,a.apiHeaders,a.columnsToArray,a.dataTransformation,c):g.fetchAndParseCSV(a.dataURL,a.dataTransformation,a.columnsToArray,c,a.delimiter,!0):g.fetchAndParseMultipleDataSources(a.dataURL,a.idColumnTitle):I.transformColumnsToArray(a.data,a.columnsToArray));O(n);const e=(d||[]).map(r=>({filter:r.column,label:r.label||`Filter by ${r.column}`,singleSelect:r.singleSelect,clearable:r.clearable,defaultValue:F.transformDefaultValue(r.defaultValue),value:F.transformDefaultValue(r.defaultValue),availableValues:P.getUniqValue(n,r.column).filter(s=>!r.excludeValues?.includes(`${s}`)).map(s=>({value:s,label:s})),allowSelectAll:r.allowSelectAll,width:r.width}));C(e)}catch(t){console.error("Data fetching error:",t)}},[a,d,c]);o.useEffect(()=>{T()},[T]);const h=o.useCallback((t,n)=>{C(e=>e.map(r=>r.filter===t?{...r,value:n}:r))},[]);return l.jsxRuntimeExports.jsx("div",{className:`${j||"light"} flex grow`,dir:i.language==="he"||i.language==="ar"?"rtl":void 0,children:l.jsxRuntimeExports.jsx("div",{className:`${i.backgroundColor?i.backgroundColor===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${i.language||"en"}`,style:{...i.backgroundColor&&i.backgroundColor!==!0?{backgroundColor:i.backgroundColor}:{}},id:S,children:l.jsxRuntimeExports.jsx("div",{style:{padding:i.backgroundColor?i.padding||"1rem":i.padding||0,flexGrow:1,display:"flex"},children:l.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[i.title||i.description?l.jsxRuntimeExports.jsx(U.GraphHeader,{graphTitle:i.title,graphDescription:i.description,isDashboard:!0}):null,l.jsxRuntimeExports.jsxs("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap"},children:[u.length!==0?l.jsxRuntimeExports.jsx("div",{style:{width:w==="side"?"280px":"100%",flexGrow:1,flexShrink:0},children:l.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap",alignItems:"flex-start",width:"100%",position:"sticky",top:"1rem"},children:u?.map((t,n)=>l.jsxRuntimeExports.jsxs("div",{style:{width:t.width||`calc(${100/f}% - ${(f-1)/f}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[l.jsxRuntimeExports.jsx(H.LabelExports.Label,{className:"mb-2",children:t.label}),t.singleSelect?l.jsxRuntimeExports.jsx(m.DropdownSelectExports.DropdownSelect,{options:t.availableValues,isClearable:t.clearable===void 0?!0:t.clearable,size:"sm",variant:b,isMulti:!1,isSearchable:!0,filterOption:m.DropdownSelectExports.createFilter(R),onChange:e=>{h(t.filter,e)},defaultValue:t.defaultValue,value:t.value}):l.jsxRuntimeExports.jsxs(l.jsxRuntimeExports.Fragment,{children:[l.jsxRuntimeExports.jsx(m.DropdownSelectExports.DropdownSelect,{options:t.availableValues,isMulti:!0,size:"sm",isClearable:t.clearable===void 0?!0:t.clearable,variant:b,isSearchable:!0,controlShouldRenderValue:!0,closeMenuOnSelect:!1,hideSelectedOptions:!1,filterOption:m.DropdownSelectExports.createFilter(R),onChange:e=>{h(t.filter,e)},value:t.value,defaultValue:t.defaultValue}),t.allowSelectAll?l.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:()=>{h(t.filter,t.availableValues)},children:"Select all options"}):null]})]},n))})}):null,l.jsxRuntimeExports.jsx("div",{style:{width:w==="side"?"calc(100% - 280px - 1rem)":"100%",minWidth:"280px",flexGrow:1,display:"flex",gap:"1rem",flexWrap:"wrap",flexShrink:"0"},children:i.rows.map((t,n)=>l.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",alignItems:"stretch",minHeight:`${t.height||0}px`,height:"auto",width:"100%",flexWrap:"wrap"},children:t.columns.map((e,r)=>l.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent h-inherit grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/v(t.columns)}% - ${(v(t.columns)-(e.columnWidth||1))/v(t.columns)}rem)`,minHeight:"inherit"},children:l.jsxRuntimeExports.jsx(L.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:b,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||k,classNames:e.settings?.classNames||q,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||i.language,theme:e.settings?.theme||j},dataSettings:{data:D?z.filterData(D,A||[]):void 0},updateFilters:e.attachedFilter&&B.indexOf(e.graphType)!==-1&&u.findIndex(s=>s.filter===e.attachedFilter)!==-1?s=>{const W=u.findIndex(G=>G.filter===e.attachedFilter),$=s?u[W].singleSelect?{value:s,label:s}:[{value:s,label:s}]:void 0;h(e.attachedFilter,$)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:c,readableHeader:V||[]})},r))},n))})]})]})})})})}exports.MultiGraphDashboard=J;
1
+ import { j as l } from "./index-CHPV5EwG-BPSP-7Jg.js";
2
+ import { useState as g, useMemo as T, useEffect as V, useCallback as A } from "react";
3
+ import { i as I } from "./index-C1rRk_50.js";
4
+ import { f as x } from "./index-UV9hjG_S.js";
5
+ import { Z as k, H as O } from "./DropdownSelect-CDC9lEqU.js";
6
+ import { f as z } from "./checkIfMultiple-BB7PlCNh.js";
7
+ import { SingleGraphDashboard as E } from "./SingleGraphDashboard.js";
8
+ import { f as Z, a as q, b as J, c as B, t as K } from "./fetchAndParseData-Bcmr659B.js";
9
+ import { g as Q } from "./getUniqValue-BtUENB2H.js";
10
+ import { GraphHeader as X } from "./GraphHeader.js";
11
+ import { f as Y } from "./filterData-B8ocT57s.js";
12
+ import { t as W } from "./index-OCoyy1wG.js";
13
+ const b = (p) => p.map((t) => t.columnWidth || 1).reduce((t, d) => t + d, 0), _ = [
14
+ "barChart",
15
+ "choroplethMap",
16
+ "biVariateChoroplethMap",
17
+ "circlePacking",
18
+ "treeMap"
19
+ ];
20
+ function he(p) {
21
+ const {
22
+ dashboardID: v,
23
+ dashboardLayout: i,
24
+ dataSettings: t,
25
+ filters: d,
26
+ debugMode: c,
27
+ theme: y = "light",
28
+ readableHeader: M,
29
+ dataFilters: N,
30
+ noOfFiltersPerRow: m = 4,
31
+ filterPosition: S,
32
+ uiMode: f = "normal",
33
+ graphStyles: $,
34
+ graphClassNames: H
35
+ } = p, [w, R] = g(void 0), [u, G] = g(void 0), [o, C] = g([]), D = T(
36
+ () => ({
37
+ ignoreCase: !0,
38
+ ignoreAccents: !0,
39
+ trim: !0
40
+ }),
41
+ []
42
+ ), j = T(() => !u || o.length === 0 ? u : u.filter(
43
+ (n) => o.every(
44
+ (e) => e.value && x([e.value]).length > 0 ? I(
45
+ x([n[e.filter]]),
46
+ x([e.value]).map((r) => r.value)
47
+ ).length > 0 : !0
48
+ )
49
+ ), [o, u]);
50
+ V(() => {
51
+ R(j);
52
+ }, [j]);
53
+ const F = A(async () => {
54
+ if (t)
55
+ try {
56
+ const n = await (t.dataURL ? typeof t.dataURL == "string" ? t.fileType === "json" ? Z(
57
+ t.dataURL,
58
+ t.columnsToArray,
59
+ t.dataTransformation,
60
+ c
61
+ ) : t.fileType === "api" ? q(
62
+ t.dataURL,
63
+ t.apiHeaders,
64
+ t.columnsToArray,
65
+ t.dataTransformation,
66
+ c
67
+ ) : J(
68
+ t.dataURL,
69
+ t.dataTransformation,
70
+ t.columnsToArray,
71
+ c,
72
+ t.delimiter,
73
+ !0
74
+ ) : B(t.dataURL, t.idColumnTitle) : K(t.data, t.columnsToArray));
75
+ G(n);
76
+ const e = (d || []).map((r) => ({
77
+ filter: r.column,
78
+ label: r.label || `Filter by ${r.column}`,
79
+ singleSelect: r.singleSelect,
80
+ clearable: r.clearable,
81
+ defaultValue: W(r.defaultValue),
82
+ value: W(r.defaultValue),
83
+ availableValues: Q(n, r.column).filter((s) => !r.excludeValues?.includes(`${s}`)).map((s) => ({ value: s, label: s })),
84
+ allowSelectAll: r.allowSelectAll,
85
+ width: r.width
86
+ }));
87
+ C(e);
88
+ } catch (a) {
89
+ console.error("Data fetching error:", a);
90
+ }
91
+ }, [t, d, c]);
92
+ V(() => {
93
+ F();
94
+ }, [F]);
95
+ const h = A((a, n) => {
96
+ C((e) => e.map((r) => r.filter === a ? { ...r, value: n } : r));
97
+ }, []);
98
+ return /* @__PURE__ */ l.jsx(
99
+ "div",
100
+ {
101
+ className: `${y || "light"} flex grow`,
102
+ dir: i.language === "he" || i.language === "ar" ? "rtl" : void 0,
103
+ children: /* @__PURE__ */ l.jsx(
104
+ "div",
105
+ {
106
+ className: `${i.backgroundColor ? i.backgroundColor === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${i.language || "en"}`,
107
+ style: {
108
+ ...i.backgroundColor && i.backgroundColor !== !0 ? { backgroundColor: i.backgroundColor } : {}
109
+ },
110
+ id: v,
111
+ children: /* @__PURE__ */ l.jsx(
112
+ "div",
113
+ {
114
+ style: {
115
+ padding: i.backgroundColor ? i.padding || "1rem" : i.padding || 0,
116
+ flexGrow: 1,
117
+ display: "flex"
118
+ },
119
+ children: /* @__PURE__ */ l.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
120
+ i.title || i.description ? /* @__PURE__ */ l.jsx(
121
+ X,
122
+ {
123
+ graphTitle: i.title,
124
+ graphDescription: i.description,
125
+ isDashboard: !0
126
+ }
127
+ ) : null,
128
+ /* @__PURE__ */ l.jsxs("div", { style: { display: "flex", gap: "1rem", flexWrap: "wrap" }, children: [
129
+ o.length !== 0 ? /* @__PURE__ */ l.jsx(
130
+ "div",
131
+ {
132
+ style: {
133
+ width: S === "side" ? "280px" : "100%",
134
+ flexGrow: 1,
135
+ flexShrink: 0
136
+ },
137
+ children: /* @__PURE__ */ l.jsx(
138
+ "div",
139
+ {
140
+ style: {
141
+ display: "flex",
142
+ gap: "1rem",
143
+ flexWrap: "wrap",
144
+ alignItems: "flex-start",
145
+ width: "100%",
146
+ position: "sticky",
147
+ top: "1rem"
148
+ },
149
+ children: o?.map((a, n) => /* @__PURE__ */ l.jsxs(
150
+ "div",
151
+ {
152
+ style: {
153
+ width: a.width || `calc(${100 / m}% - ${(m - 1) / m}rem)`,
154
+ flexGrow: 1,
155
+ flexShrink: 0,
156
+ minWidth: "240px"
157
+ },
158
+ children: [
159
+ /* @__PURE__ */ l.jsx(z, { className: "mb-2", children: a.label }),
160
+ a.singleSelect ? /* @__PURE__ */ l.jsx(
161
+ k,
162
+ {
163
+ options: a.availableValues,
164
+ isClearable: a.clearable === void 0 ? !0 : a.clearable,
165
+ size: "sm",
166
+ variant: f,
167
+ isMulti: !1,
168
+ isSearchable: !0,
169
+ filterOption: O(D),
170
+ onChange: (e) => {
171
+ h(a.filter, e);
172
+ },
173
+ defaultValue: a.defaultValue,
174
+ value: a.value
175
+ }
176
+ ) : /* @__PURE__ */ l.jsxs(l.Fragment, { children: [
177
+ /* @__PURE__ */ l.jsx(
178
+ k,
179
+ {
180
+ options: a.availableValues,
181
+ isMulti: !0,
182
+ size: "sm",
183
+ isClearable: a.clearable === void 0 ? !0 : a.clearable,
184
+ variant: f,
185
+ isSearchable: !0,
186
+ controlShouldRenderValue: !0,
187
+ closeMenuOnSelect: !1,
188
+ hideSelectedOptions: !1,
189
+ filterOption: O(D),
190
+ onChange: (e) => {
191
+ h(a.filter, e);
192
+ },
193
+ value: a.value,
194
+ defaultValue: a.defaultValue
195
+ }
196
+ ),
197
+ a.allowSelectAll ? /* @__PURE__ */ l.jsx(
198
+ "button",
199
+ {
200
+ type: "button",
201
+ className: "bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400",
202
+ onClick: () => {
203
+ h(a.filter, a.availableValues);
204
+ },
205
+ children: "Select all options"
206
+ }
207
+ ) : null
208
+ ] })
209
+ ]
210
+ },
211
+ n
212
+ ))
213
+ }
214
+ )
215
+ }
216
+ ) : null,
217
+ /* @__PURE__ */ l.jsx(
218
+ "div",
219
+ {
220
+ style: {
221
+ width: S === "side" ? "calc(100% - 280px - 1rem)" : "100%",
222
+ minWidth: "280px",
223
+ flexGrow: 1,
224
+ display: "flex",
225
+ gap: "1rem",
226
+ flexWrap: "wrap",
227
+ flexShrink: "0"
228
+ },
229
+ children: i.rows.map((a, n) => /* @__PURE__ */ l.jsx(
230
+ "div",
231
+ {
232
+ style: {
233
+ display: "flex",
234
+ gap: "1rem",
235
+ alignItems: "stretch",
236
+ minHeight: `${a.height || 0}px`,
237
+ height: "auto",
238
+ width: "100%",
239
+ flexWrap: "wrap"
240
+ },
241
+ children: a.columns.map((e, r) => /* @__PURE__ */ l.jsx(
242
+ "div",
243
+ {
244
+ className: "flex bg-transparent h-inherit grow min-w-60",
245
+ style: {
246
+ width: `calc(${100 * (e.columnWidth || 1) / b(a.columns)}% - ${(b(a.columns) - (e.columnWidth || 1)) / b(a.columns)}rem)`,
247
+ minHeight: "inherit"
248
+ },
249
+ children: /* @__PURE__ */ l.jsx(
250
+ E,
251
+ {
252
+ graphType: e.graphType,
253
+ dataFilters: e.dataFilters,
254
+ uiMode: f,
255
+ graphSettings: {
256
+ ...e.settings || {},
257
+ width: void 0,
258
+ height: void 0,
259
+ resetSelectionOnDoubleClick: e.attachedFilter ? !1 : e.settings?.resetSelectionOnDoubleClick,
260
+ styles: e.settings?.styles || $,
261
+ classNames: e.settings?.classNames || H,
262
+ radius: e.graphType === "donutChart" ? void 0 : e.settings?.radius,
263
+ size: e.graphType === "unitChart" ? e.settings?.size : void 0,
264
+ language: e.settings?.language || i.language,
265
+ theme: e.settings?.theme || y
266
+ },
267
+ dataSettings: {
268
+ data: w ? Y(w, N || []) : void 0
269
+ },
270
+ updateFilters: e.attachedFilter && _.indexOf(e.graphType) !== -1 && o.findIndex((s) => s.filter === e.attachedFilter) !== -1 ? (s) => {
271
+ const L = o.findIndex(
272
+ (U) => U.filter === e.attachedFilter
273
+ ), P = s ? o[L].singleSelect ? { value: s, label: s } : [{ value: s, label: s }] : void 0;
274
+ h(e.attachedFilter, P);
275
+ } : void 0,
276
+ dataTransform: e.dataTransform,
277
+ dataSelectionOptions: e.dataSelectionOptions,
278
+ advancedDataSelectionOptions: e.advancedDataSelectionOptions,
279
+ graphDataConfiguration: e.graphDataConfiguration,
280
+ debugMode: c,
281
+ readableHeader: M || []
282
+ }
283
+ )
284
+ },
285
+ r
286
+ ))
287
+ },
288
+ n
289
+ ))
290
+ }
291
+ )
292
+ ] })
293
+ ] })
294
+ }
295
+ )
296
+ }
297
+ )
298
+ }
299
+ );
300
+ }
301
+ export {
302
+ he as MultiGraphDashboard
303
+ };
2
304
  //# sourceMappingURL=MultiGraphDashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, 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 {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\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\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\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: DashboardColumnDataType[]) => {\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 MultiGraphDashboard(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 [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, filters, debugMode]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((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 <div\r\n className={`${theme || 'light'} flex grow`}\r\n dir={\r\n dashboardLayout.language === 'he' || dashboardLayout.language === 'ar' ? 'rtl' : undefined\r\n }\r\n >\r\n <div\r\n className={`${\r\n !dashboardLayout.backgroundColor\r\n ? 'bg-transparent '\r\n : dashboardLayout.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${\r\n dashboardLayout.language || 'en'\r\n }`}\r\n style={{\r\n ...(dashboardLayout.backgroundColor && dashboardLayout.backgroundColor !== true\r\n ? { backgroundColor: dashboardLayout.backgroundColor }\r\n : {}),\r\n }}\r\n id={dashboardID}\r\n >\r\n <div\r\n style={{\r\n padding: dashboardLayout.backgroundColor\r\n ? dashboardLayout.padding || '1rem'\r\n : dashboardLayout.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\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 style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap' }}>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n position: 'sticky',\r\n top: '1rem',\r\n }}\r\n >\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 style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n minWidth: '280px',\r\n flexGrow: 1,\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n flexShrink: '0',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n alignItems: 'stretch',\r\n minHeight: `${d.height || 0}px`,\r\n height: 'auto',\r\n width: '100%',\r\n flexWrap: 'wrap',\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(${\r\n (100 * (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.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: data ? filterData(data, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.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 </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","data","setData","useState","dataFromFile","setDataFromFile","filterSettings","setFilterSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","newFilterSettings","transformDefaultValue","getUniqValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","i","Label","DropdownSelect","createFilter","Fragment","j","SingleGraphDashboard","filterData","dClicked","indx","value"],"mappings":"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"}
1
+ {"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, 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 {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\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\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\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: DashboardColumnDataType[]) => {\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 MultiGraphDashboard(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 [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, filters, debugMode]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((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 <div\r\n className={`${theme || 'light'} flex grow`}\r\n dir={\r\n dashboardLayout.language === 'he' || dashboardLayout.language === 'ar' ? 'rtl' : undefined\r\n }\r\n >\r\n <div\r\n className={`${\r\n !dashboardLayout.backgroundColor\r\n ? 'bg-transparent '\r\n : dashboardLayout.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${\r\n dashboardLayout.language || 'en'\r\n }`}\r\n style={{\r\n ...(dashboardLayout.backgroundColor && dashboardLayout.backgroundColor !== true\r\n ? { backgroundColor: dashboardLayout.backgroundColor }\r\n : {}),\r\n }}\r\n id={dashboardID}\r\n >\r\n <div\r\n style={{\r\n padding: dashboardLayout.backgroundColor\r\n ? dashboardLayout.padding || '1rem'\r\n : dashboardLayout.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\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 style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap' }}>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n position: 'sticky',\r\n top: '1rem',\r\n }}\r\n >\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 style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n minWidth: '280px',\r\n flexGrow: 1,\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n flexShrink: '0',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n alignItems: 'stretch',\r\n minHeight: `${d.height || 0}px`,\r\n height: 'auto',\r\n width: '100%',\r\n flexWrap: 'wrap',\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(${\r\n (100 * (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.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: data ? filterData(data, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.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 </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","data","setData","useState","dataFromFile","setDataFromFile","filterSettings","setFilterSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","newFilterSettings","transformDefaultValue","getUniqValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","i","Label","DropdownSelect","createFilter","Fragment","j","SingleGraphDashboard","filterData","dClicked","indx","value"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index-CHPV5EwG-DDoeWRVt.cjs"),s=require("react"),n=require("./Spinner-DA6Z5E4n.cjs"),d=require("./MultiGraphDashboard.cjs"),u=require("./fetchAndParseData-DmgQtB9n.cjs");function l(i){const{config:t}=i,[e,r]=s.useState(void 0);return s.useEffect(()=>{(async()=>{if(typeof t=="string"){const o=await u.fetchAndParseJSON(t);r(o)}else r(t)})()},[t]),e?a.jsxRuntimeExports.jsx(d.MultiGraphDashboard,{dashboardID:e.dashboardID,dashboardLayout:e.dashboardLayout,dataSettings:e.dataSettings,filters:e.filters,debugMode:e.debugMode,theme:e.theme,readableHeader:e.readableHeader,dataFilters:e.dataFilters,noOfFiltersPerRow:e.noOfFiltersPerRow,filterPosition:e.filterPosition,uiMode:e.uiMode,graphStyles:e.graphStyles,graphClassNames:e.graphClassNames}):a.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center p-4",children:a.jsxRuntimeExports.jsx(n.y,{})})}exports.MultiGraphDashboardFromConfig=l;
2
+ //# sourceMappingURL=MultiGraphDashboardFromConfig.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGraphDashboardFromConfig.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboardFromConfig.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { MultiGraphDashboard } from './MultiGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterUiSettingsDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\n\r\ninterface ConfigObject {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n filterPosition?: 'top' | 'side';\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\ninterface Props {\r\n config: string | ConfigObject;\r\n}\r\n\r\nexport function MultiGraphDashboardFromConfig(props: Props) {\r\n const { config } = props;\r\n const [configSettings, setConfigSettings] = useState<ConfigObject | undefined>(undefined);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (typeof config === 'string') {\r\n const data = await fetchAndParseJSON(config);\r\n setConfigSettings(data);\r\n } else {\r\n setConfigSettings(config);\r\n }\r\n };\r\n fetchData();\r\n }, [config]);\r\n if (!configSettings)\r\n return (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n );\r\n return (\r\n <MultiGraphDashboard\r\n dashboardID={configSettings.dashboardID}\r\n dashboardLayout={configSettings.dashboardLayout}\r\n dataSettings={configSettings.dataSettings}\r\n filters={configSettings.filters}\r\n debugMode={configSettings.debugMode}\r\n theme={configSettings.theme}\r\n readableHeader={configSettings.readableHeader}\r\n dataFilters={configSettings.dataFilters}\r\n noOfFiltersPerRow={configSettings.noOfFiltersPerRow}\r\n filterPosition={configSettings.filterPosition}\r\n uiMode={configSettings.uiMode}\r\n graphStyles={configSettings.graphStyles}\r\n graphClassNames={configSettings.graphClassNames}\r\n />\r\n );\r\n}\r\n"],"names":["MultiGraphDashboardFromConfig","props","config","configSettings","setConfigSettings","useState","useEffect","data","fetchAndParseJSON","jsx","MultiGraphDashboard","Spinner"],"mappings":"6QAsCO,SAASA,EAA8BC,EAAc,CAC1D,KAAM,CAAE,OAAAC,GAAWD,EACb,CAACE,EAAgBC,CAAiB,EAAIC,EAAAA,SAAmC,MAAS,EAYxF,OAXAC,EAAAA,UAAU,IAAM,EACI,SAAY,CAC5B,GAAI,OAAOJ,GAAW,SAAU,CAC9B,MAAMK,EAAO,MAAMC,EAAAA,kBAAkBN,CAAM,EAC3CE,EAAkBG,CAAI,CACxB,MACEH,EAAkBF,CAAM,CAE5B,GACA,CACF,EAAG,CAACA,CAAM,CAAC,EACNC,EAOHM,EAAAA,kBAAAA,IAACC,EAAAA,oBAAA,CACC,YAAaP,EAAe,YAC5B,gBAAiBA,EAAe,gBAChC,aAAcA,EAAe,aAC7B,QAASA,EAAe,QACxB,UAAWA,EAAe,UAC1B,MAAOA,EAAe,MACtB,eAAgBA,EAAe,eAC/B,YAAaA,EAAe,YAC5B,kBAAmBA,EAAe,kBAClC,eAAgBA,EAAe,eAC/B,OAAQA,EAAe,OACvB,YAAaA,EAAe,YAC5B,gBAAiBA,EAAe,eAAA,CAAA,0BAlB/B,MAAA,CAAI,UAAU,iCACb,SAAAM,wBAACE,EAAAA,IAAQ,EACX,CAmBN"}
@@ -1,2 +1,38 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index-BHm2KTjD-D8FylaKc.cjs"),s=require("react"),n=require("./Spinner-UmN-KPe9.cjs"),d=require("./MultiGraphDashboard.js"),u=require("./fetchAndParseData.js");function l(i){const{config:t}=i,[e,a]=s.useState(void 0);return s.useEffect(()=>{(async()=>{if(typeof t=="string"){const o=await u.fetchAndParseJSON(t);a(o)}else a(t)})()},[t]),e?r.jsxRuntimeExports.jsx(d.MultiGraphDashboard,{dashboardID:e.dashboardID,dashboardLayout:e.dashboardLayout,dataSettings:e.dataSettings,filters:e.filters,debugMode:e.debugMode,theme:e.theme,readableHeader:e.readableHeader,dataFilters:e.dataFilters,noOfFiltersPerRow:e.noOfFiltersPerRow,filterPosition:e.filterPosition,uiMode:e.uiMode,graphStyles:e.graphStyles,graphClassNames:e.graphClassNames}):r.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center p-4",children:r.jsxRuntimeExports.jsx(n.SpinnerExports.Spinner,{})})}exports.MultiGraphDashboardFromConfig=l;
1
+ import { j as a } from "./index-CHPV5EwG-BPSP-7Jg.js";
2
+ import { useState as i, useEffect as d } from "react";
3
+ import { y as f } from "./Spinner-C85UF28E.js";
4
+ import { MultiGraphDashboard as n } from "./MultiGraphDashboard.js";
5
+ import { f as l } from "./fetchAndParseData-Bcmr659B.js";
6
+ function b(s) {
7
+ const { config: e } = s, [t, r] = i(void 0);
8
+ return d(() => {
9
+ (async () => {
10
+ if (typeof e == "string") {
11
+ const o = await l(e);
12
+ r(o);
13
+ } else
14
+ r(e);
15
+ })();
16
+ }, [e]), t ? /* @__PURE__ */ a.jsx(
17
+ n,
18
+ {
19
+ dashboardID: t.dashboardID,
20
+ dashboardLayout: t.dashboardLayout,
21
+ dataSettings: t.dataSettings,
22
+ filters: t.filters,
23
+ debugMode: t.debugMode,
24
+ theme: t.theme,
25
+ readableHeader: t.readableHeader,
26
+ dataFilters: t.dataFilters,
27
+ noOfFiltersPerRow: t.noOfFiltersPerRow,
28
+ filterPosition: t.filterPosition,
29
+ uiMode: t.uiMode,
30
+ graphStyles: t.graphStyles,
31
+ graphClassNames: t.graphClassNames
32
+ }
33
+ ) : /* @__PURE__ */ a.jsx("div", { className: "w-full flex justify-center p-4", children: /* @__PURE__ */ a.jsx(f, {}) });
34
+ }
35
+ export {
36
+ b as MultiGraphDashboardFromConfig
37
+ };
2
38
  //# sourceMappingURL=MultiGraphDashboardFromConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiGraphDashboardFromConfig.js","sources":["../src/Components/Dashboard/MultiGraphDashboardFromConfig.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { MultiGraphDashboard } from './MultiGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterUiSettingsDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\n\r\ninterface ConfigObject {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n filterPosition?: 'top' | 'side';\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\ninterface Props {\r\n config: string | ConfigObject;\r\n}\r\n\r\nexport function MultiGraphDashboardFromConfig(props: Props) {\r\n const { config } = props;\r\n const [configSettings, setConfigSettings] = useState<ConfigObject | undefined>(undefined);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (typeof config === 'string') {\r\n const data = await fetchAndParseJSON(config);\r\n setConfigSettings(data);\r\n } else {\r\n setConfigSettings(config);\r\n }\r\n };\r\n fetchData();\r\n }, [config]);\r\n if (!configSettings)\r\n return (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n );\r\n return (\r\n <MultiGraphDashboard\r\n dashboardID={configSettings.dashboardID}\r\n dashboardLayout={configSettings.dashboardLayout}\r\n dataSettings={configSettings.dataSettings}\r\n filters={configSettings.filters}\r\n debugMode={configSettings.debugMode}\r\n theme={configSettings.theme}\r\n readableHeader={configSettings.readableHeader}\r\n dataFilters={configSettings.dataFilters}\r\n noOfFiltersPerRow={configSettings.noOfFiltersPerRow}\r\n filterPosition={configSettings.filterPosition}\r\n uiMode={configSettings.uiMode}\r\n graphStyles={configSettings.graphStyles}\r\n graphClassNames={configSettings.graphClassNames}\r\n />\r\n );\r\n}\r\n"],"names":["MultiGraphDashboardFromConfig","props","config","configSettings","setConfigSettings","useState","useEffect","data","fetchAndParseJSON","jsx","MultiGraphDashboard","Spinner"],"mappings":"kQAsCO,SAASA,EAA8BC,EAAc,CAC1D,KAAM,CAAE,OAAAC,GAAWD,EACb,CAACE,EAAgBC,CAAiB,EAAIC,EAAAA,SAAmC,MAAS,EAYxF,OAXAC,EAAAA,UAAU,IAAM,EACI,SAAY,CAC5B,GAAI,OAAOJ,GAAW,SAAU,CAC9B,MAAMK,EAAO,MAAMC,EAAAA,kBAAkBN,CAAM,EAC3CE,EAAkBG,CAAI,CACxB,MACEH,EAAkBF,CAAM,CAE5B,GACA,CACF,EAAG,CAACA,CAAM,CAAC,EACNC,EAOHM,EAAAA,kBAAAA,IAACC,EAAAA,oBAAA,CACC,YAAaP,EAAe,YAC5B,gBAAiBA,EAAe,gBAChC,aAAcA,EAAe,aAC7B,QAASA,EAAe,QACxB,UAAWA,EAAe,UAC1B,MAAOA,EAAe,MACtB,eAAgBA,EAAe,eAC/B,YAAaA,EAAe,YAC5B,kBAAmBA,EAAe,kBAClC,eAAgBA,EAAe,eAC/B,OAAQA,EAAe,OACvB,YAAaA,EAAe,YAC5B,gBAAiBA,EAAe,eAAA,CAAA,0BAlB/B,MAAA,CAAI,UAAU,iCACb,SAAAM,wBAACE,EAAAA,eAAAA,UAAQ,EACX,CAmBN"}
1
+ {"version":3,"file":"MultiGraphDashboardFromConfig.js","sources":["../src/Components/Dashboard/MultiGraphDashboardFromConfig.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { MultiGraphDashboard } from './MultiGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterUiSettingsDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\n\r\ninterface ConfigObject {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n filterPosition?: 'top' | 'side';\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\ninterface Props {\r\n config: string | ConfigObject;\r\n}\r\n\r\nexport function MultiGraphDashboardFromConfig(props: Props) {\r\n const { config } = props;\r\n const [configSettings, setConfigSettings] = useState<ConfigObject | undefined>(undefined);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (typeof config === 'string') {\r\n const data = await fetchAndParseJSON(config);\r\n setConfigSettings(data);\r\n } else {\r\n setConfigSettings(config);\r\n }\r\n };\r\n fetchData();\r\n }, [config]);\r\n if (!configSettings)\r\n return (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n );\r\n return (\r\n <MultiGraphDashboard\r\n dashboardID={configSettings.dashboardID}\r\n dashboardLayout={configSettings.dashboardLayout}\r\n dataSettings={configSettings.dataSettings}\r\n filters={configSettings.filters}\r\n debugMode={configSettings.debugMode}\r\n theme={configSettings.theme}\r\n readableHeader={configSettings.readableHeader}\r\n dataFilters={configSettings.dataFilters}\r\n noOfFiltersPerRow={configSettings.noOfFiltersPerRow}\r\n filterPosition={configSettings.filterPosition}\r\n uiMode={configSettings.uiMode}\r\n graphStyles={configSettings.graphStyles}\r\n graphClassNames={configSettings.graphClassNames}\r\n />\r\n );\r\n}\r\n"],"names":["MultiGraphDashboardFromConfig","props","config","configSettings","setConfigSettings","useState","useEffect","data","fetchAndParseJSON","jsx","MultiGraphDashboard","Spinner"],"mappings":";;;;;AAsCO,SAASA,EAA8BC,GAAc;AAC1D,QAAM,EAAE,QAAAC,MAAWD,GACb,CAACE,GAAgBC,CAAiB,IAAIC,EAAmC,MAAS;AAYxF,SAXAC,EAAU,MAAM;AASd,KARkB,YAAY;AAC5B,UAAI,OAAOJ,KAAW,UAAU;AAC9B,cAAMK,IAAO,MAAMC,EAAkBN,CAAM;AAC3C,QAAAE,EAAkBG,CAAI;AAAA,MACxB;AACE,QAAAH,EAAkBF,CAAM;AAAA,IAE5B,GACA;AAAA,EACF,GAAG,CAACA,CAAM,CAAC,GACNC,IAOHM,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAaP,EAAe;AAAA,MAC5B,iBAAiBA,EAAe;AAAA,MAChC,cAAcA,EAAe;AAAA,MAC7B,SAASA,EAAe;AAAA,MACxB,WAAWA,EAAe;AAAA,MAC1B,OAAOA,EAAe;AAAA,MACtB,gBAAgBA,EAAe;AAAA,MAC/B,aAAaA,EAAe;AAAA,MAC5B,mBAAmBA,EAAe;AAAA,MAClC,gBAAgBA,EAAe;AAAA,MAC/B,QAAQA,EAAe;AAAA,MACvB,aAAaA,EAAe;AAAA,MAC5B,iBAAiBA,EAAe;AAAA,IAAA;AAAA,EAAA,0BAlB/B,OAAA,EAAI,WAAU,kCACb,UAAAM,gBAAAA,MAACE,KAAQ,GACX;AAmBN;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index-CHPV5EwG-DDoeWRVt.cjs"),o=require("react"),D=require("./DropdownSelect-0I2QxaVy.cjs"),L=require("./checkIfMultiple-D5ysrI7G.cjs"),k=require("./Spinner-DA6Z5E4n.cjs"),N=require("./SingleGraphDashboard.cjs"),m=require("./fetchAndParseData-DmgQtB9n.cjs"),W=require("./GraphHeader.cjs"),q=require("./filterData-DN6py7y_.cjs");function A(d,l,e,t){const i=[];return d.forEach(u=>{Object.entries(u).forEach(([n,p])=>{if(n!==l){const c={indicator:e.findIndex(h=>h.value===n)!==-1?e[e.findIndex(h=>h.value===n)].label:n,value:p};c[l]=u[l],i.push(c)}})}),t&&console.log(i),i}const b=d=>d.map(t=>t.columnWidth||1).reduce((t,i)=>t+i,0);function G(d){const{dashboardID:l,dashboardLayout:e,dataSettings:t,debugMode:i,theme:u="light",readableHeader:n,dataFilters:p,uiMode:c="normal",graphStyles:h,graphClassNames:w}=d,R=o.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]),[y,E]=o.useState(void 0),[S,T]=o.useState([]),[f,v]=o.useState(void 0),[x,I]=o.useState(void 0);o.useEffect(()=>{if(x){const s=x.filter(g=>g[t.keyColumn]===f);E(s)}},[x,f,t.keyColumn]);const C=o.useCallback(async()=>{if(t)try{const g=await(t.dataURL?typeof t.dataURL=="string"?t.fileType==="json"?m.fetchAndParseJSON(t.dataURL,void 0,t.dataTransformation,i):t.fileType==="api"?m.fetchAndTransformDataFromAPI(t.dataURL,t.apiHeaders,void 0,t.dataTransformation,i):m.fetchAndParseCSV(t.dataURL,t.dataTransformation,void 0,i,t.delimiter,!0):m.fetchAndParseMultipleDataSources(t.dataURL,t.idColumnTitle):m.transformColumnsToArray(t.data,void 0)),a=q.filterData(g,p||[]);T(a.map(F=>F[t.keyColumn])),v(a[0][t.keyColumn]);const j=A(a,t.keyColumn,n||[],i);I(j)}catch(s){console.error("Data fetching error:",s)}},[t,i,p,n]);return o.useEffect(()=>{C()},[C]),r.jsxRuntimeExports.jsx("div",{className:`${u||"light"} flex grow`,dir:e.language==="he"||e.language==="ar"?"rtl":void 0,children:r.jsxRuntimeExports.jsx("div",{className:`${e?.backgroundColor?e?.backgroundColor===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}flex flex-col h-inherit w-full ml-auto mr-auto grow gap-4 ${e?.language||"en"}`,style:{...e?.backgroundColor&&e?.backgroundColor!==!0?{backgroundColor:e?.backgroundColor}:{}},id:l,children:r.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:e.backgroundColor?e.padding||"1rem":e.padding||0},children:r.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[e.title||e.description?r.jsxRuntimeExports.jsx(W.GraphHeader,{graphTitle:e.title,graphDescription:e.description,isDashboard:!0}):null,y?r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap",alignItems:"flex-start",width:"100%"},children:r.jsxRuntimeExports.jsxs("div",{style:{width:"100%",flexGrow:1,flexShrink:0,minWidth:"240px"},children:[e.dropdownLabel?r.jsxRuntimeExports.jsx(L.f,{className:"mb-2",children:e.dropdownLabel}):null,r.jsxRuntimeExports.jsx(D.Za,{options:S.map(s=>({value:s,label:s})),size:"sm",variant:c,isClearable:!1,isSearchable:!0,controlShouldRenderValue:!0,filterOption:D.Hu(R),onChange:s=>{v(s?.value)},defaultValue:{value:f,label:f}})]})}),e.rows.map((s,g)=>r.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",alignItems:"stretch",minHeight:`${s.height||0}px`,height:"auto",width:"100%",flexWrap:"wrap"},children:s.columns.map((a,j)=>r.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent h-inherit grow min-w-60",style:{width:`calc(${100*(a.columnWidth||1)/b(s.columns)}% - ${(b(s.columns)-(a.columnWidth||1))/b(s.columns)}rem)`,minHeight:"inherit"},children:r.jsxRuntimeExports.jsx(N.SingleGraphDashboard,{graphType:a.graphType,dataFilters:a.dataFilters,uiMode:c,graphSettings:{...a.settings||{},width:void 0,height:void 0,radius:a.graphType==="donutChart"?void 0:a.settings?.radius,size:a.graphType==="unitChart"?a.settings.size:void 0,language:a.settings?.language||e.language,theme:a.settings?.theme||u,styles:a.settings?.styles||h,classNames:a.settings?.classNames||w},dataSettings:{data:y},graphDataConfiguration:a.graphDataConfiguration?a.graphDataConfiguration:a.graphType==="unitChart"?[{columnId:"indicator",chartConfigId:"label"},{columnId:"value",chartConfigId:"value"}]:[{columnId:"indicator",chartConfigId:"label"},{columnId:"value",chartConfigId:"size"}],debugMode:i,readableHeader:n||[]})},j))},g))]}):r.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center p-4",children:r.jsxRuntimeExports.jsx(k.y,{})})]})})})})}exports.MultiGraphDashboardWideToLongFormat=G;
2
+ //# sourceMappingURL=MultiGraphDashboardWideToLongFormat.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGraphDashboardWideToLongFormat.cjs","sources":["../src/Utils/wideToLongTranformation.ts","../src/Components/Dashboard/MultiGraphDashboardWideToLongFormat.tsx"],"sourcesContent":["export function wideToLongTransformation(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data: any,\r\n keyColumn: string,\r\n readableHeader: {\r\n value: string;\r\n label: string;\r\n }[],\r\n debugMode?: boolean,\r\n) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const transformedData: any = [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.forEach((row: any) => {\r\n Object.entries(row).forEach(([key, value]) => {\r\n if (key !== keyColumn) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const obj: any = {\r\n indicator:\r\n readableHeader.findIndex(d => d.value === key) !== -1\r\n ? readableHeader[readableHeader.findIndex(d => d.value === key)].label\r\n : key,\r\n value,\r\n };\r\n obj[keyColumn] = row[keyColumn];\r\n transformedData.push(obj);\r\n }\r\n });\r\n });\r\n if (debugMode) {\r\n // eslint-disable-next-line no-console\r\n console.log(transformedData);\r\n }\r\n return transformedData;\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardFromWideToLongFormatColumnDataType,\r\n DashboardFromWideToLongFormatLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsWideToLongDataType,\r\n StyleObject,\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 { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { wideToLongTransformation } from '@/Utils/wideToLongTranformation';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardFromWideToLongFormatLayoutDataType;\r\n dataSettings: DataSettingsWideToLongDataType;\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardFromWideToLongFormatColumnDataType[]) => {\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\nexport function MultiGraphDashboardWideToLongFormat(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterValues, setFilterValues] = useState<string[]>([]);\r\n const [selectedFilterValues, setSelectedFilterValues] = useState<string | undefined>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n\r\n useEffect(() => {\r\n if (dataFromFile) {\r\n const filteredData = dataFromFile.filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) => item[dataSettings.keyColumn] === selectedFilterValues,\r\n );\r\n setData(filteredData);\r\n }\r\n }, [dataFromFile, selectedFilterValues, dataSettings.keyColumn]);\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n undefined,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n undefined,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n undefined,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, undefined);\r\n\r\n const d = await fetchData;\r\n const filteredData = filterData(d, dataFilters || []);\r\n setFilterValues(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n filteredData.map((el: any) => el[dataSettings.keyColumn]),\r\n );\r\n setSelectedFilterValues(filteredData[0][dataSettings.keyColumn]);\r\n const tempData = wideToLongTransformation(\r\n filteredData,\r\n dataSettings.keyColumn,\r\n readableHeader || [],\r\n debugMode,\r\n );\r\n setDataFromFile(tempData);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, debugMode, dataFilters, readableHeader]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex grow`}\r\n dir={\r\n dashboardLayout.language === 'he' || dashboardLayout.language === 'ar' ? 'rtl' : undefined\r\n }\r\n >\r\n <div\r\n className={`${\r\n !dashboardLayout?.backgroundColor\r\n ? 'bg-transparent '\r\n : dashboardLayout?.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }flex flex-col h-inherit w-full ml-auto mr-auto grow gap-4 ${\r\n dashboardLayout?.language || 'en'\r\n }`}\r\n style={{\r\n ...(dashboardLayout?.backgroundColor && dashboardLayout?.backgroundColor !== true\r\n ? { backgroundColor: dashboardLayout?.backgroundColor }\r\n : {}),\r\n }}\r\n id={dashboardID}\r\n >\r\n <div\r\n className='flex grow'\r\n style={{\r\n padding: dashboardLayout.backgroundColor\r\n ? dashboardLayout.padding || '1rem'\r\n : dashboardLayout.padding || 0,\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\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 {data ? (\r\n <>\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: '100%',\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n >\r\n {dashboardLayout.dropdownLabel ? (\r\n <Label className='mb-2'>{dashboardLayout.dropdownLabel}</Label>\r\n ) : null}\r\n <DropdownSelect\r\n options={filterValues.map(d => ({\r\n value: d,\r\n label: d,\r\n }))}\r\n size='sm'\r\n variant={uiMode}\r\n isClearable={false}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setSelectedFilterValues(el?.value);\r\n }}\r\n defaultValue={{\r\n value: selectedFilterValues as string,\r\n label: selectedFilterValues as string,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n alignItems: 'stretch',\r\n minHeight: `${d.height || 0}px`,\r\n height: 'auto',\r\n width: '100%',\r\n flexWrap: 'wrap',\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(${\r\n (100 * (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.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 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 styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n }}\r\n dataSettings={{ data }}\r\n graphDataConfiguration={\r\n el.graphDataConfiguration\r\n ? el.graphDataConfiguration\r\n : el.graphType === 'unitChart'\r\n ? [\r\n {\r\n columnId: 'indicator',\r\n chartConfigId: 'label',\r\n },\r\n { columnId: 'value', chartConfigId: 'value' },\r\n ]\r\n : [\r\n {\r\n columnId: 'indicator',\r\n chartConfigId: 'label',\r\n },\r\n { columnId: 'value', chartConfigId: 'size' },\r\n ]\r\n }\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </>\r\n ) : (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["wideToLongTransformation","data","keyColumn","readableHeader","debugMode","transformedData","row","key","value","obj","d","TotalWidth","columns","acc","cur","MultiGraphDashboardWideToLongFormat","props","dashboardID","dashboardLayout","dataSettings","theme","dataFilters","uiMode","graphStyles","graphClassNames","filterConfig","useMemo","setData","useState","filterValues","setFilterValues","selectedFilterValues","setSelectedFilterValues","dataFromFile","setDataFromFile","useEffect","filteredData","item","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","filterData","el","tempData","error","jsx","jsxs","GraphHeader","Fragment","Label","DropdownSelect","createFilter","i","SingleGraphDashboard","Spinner"],"mappings":"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"}