@undp/data-viz 1.5.8 → 1.5.9

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 (305) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.js +13 -13
  3. package/dist/{Axis-Ddg-seDi.js → Axis-4gUOL8B7.js} +2 -2
  4. package/dist/{Axis-Ddg-seDi.js.map → Axis-4gUOL8B7.js.map} +1 -1
  5. package/dist/{Axis-DE7dSn1_.cjs → Axis-CkNn1wit.cjs} +2 -2
  6. package/dist/{Axis-DE7dSn1_.cjs.map → Axis-CkNn1wit.cjs.map} +1 -1
  7. package/dist/{AxisTitle-CK9YeovX.cjs → AxisTitle-Wkz-xeQL.cjs} +2 -2
  8. package/dist/{AxisTitle-CK9YeovX.cjs.map → AxisTitle-Wkz-xeQL.cjs.map} +1 -1
  9. package/dist/{AxisTitle-BmHLMRJZ.js → AxisTitle-v6_xcXZ-.js} +2 -2
  10. package/dist/{AxisTitle-BmHLMRJZ.js.map → AxisTitle-v6_xcXZ-.js.map} +1 -1
  11. package/dist/BarGraph.cjs +1 -1
  12. package/dist/BarGraph.js +16 -16
  13. package/dist/BasicStatCard.cjs +1 -1
  14. package/dist/BasicStatCard.js +2 -2
  15. package/dist/BeeSwarmChart.cjs +1 -1
  16. package/dist/BeeSwarmChart.js +42 -42
  17. package/dist/BiVariateChoroplethMap.cjs +1 -1
  18. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  19. package/dist/BiVariateChoroplethMap.d.ts +2 -0
  20. package/dist/BiVariateChoroplethMap.js +257 -264
  21. package/dist/BiVariateChoroplethMap.js.map +1 -1
  22. package/dist/BulletChart.cjs +1 -1
  23. package/dist/BulletChart.js +14 -14
  24. package/dist/ButterflyChart.cjs +1 -1
  25. package/dist/ButterflyChart.js +45 -45
  26. package/dist/ChoroplethMap.cjs +1 -1
  27. package/dist/ChoroplethMap.cjs.map +1 -1
  28. package/dist/ChoroplethMap.d.ts +2 -0
  29. package/dist/ChoroplethMap.js +296 -304
  30. package/dist/ChoroplethMap.js.map +1 -1
  31. package/dist/CirclePackingGraph.cjs +1 -1
  32. package/dist/CirclePackingGraph.js +3 -3
  33. package/dist/ColorLegend.cjs +1 -1
  34. package/dist/ColorLegend.js +2 -2
  35. package/dist/ColorLegendWithMouseOver.cjs +1 -1
  36. package/dist/ColorLegendWithMouseOver.js +2 -2
  37. package/dist/CopyTextButton.cjs +4 -4
  38. package/dist/CopyTextButton.cjs.map +1 -1
  39. package/dist/CopyTextButton.js +27 -27
  40. package/dist/CopyTextButton.js.map +1 -1
  41. package/dist/CsvDownloadButton.cjs +1 -1
  42. package/dist/CsvDownloadButton.js +2 -2
  43. package/dist/DataCards.cjs +3 -3
  44. package/dist/DataCards.cjs.map +1 -1
  45. package/dist/DataCards.js +16 -16
  46. package/dist/DataCards.js.map +1 -1
  47. package/dist/DataTable.cjs +1 -1
  48. package/dist/DataTable.js +3 -3
  49. package/dist/DifferenceLineChart.cjs +1 -1
  50. package/dist/DifferenceLineChart.js +12 -12
  51. package/dist/DonutChart.cjs +1 -1
  52. package/dist/DonutChart.js +20 -20
  53. package/dist/DotDensityMap.cjs +1 -1
  54. package/dist/DotDensityMap.cjs.map +1 -1
  55. package/dist/DotDensityMap.d.ts +2 -0
  56. package/dist/DotDensityMap.js +282 -289
  57. package/dist/DotDensityMap.js.map +1 -1
  58. package/dist/{DropdownSelect-CtOKZHD0.js → DropdownSelect-6kjXM6oW.js} +2 -2
  59. package/dist/DropdownSelect-6kjXM6oW.js.map +1 -0
  60. package/dist/{DropdownSelect-DBDM64B5.cjs → DropdownSelect-vt8yiB-g.cjs} +5 -5
  61. package/dist/DropdownSelect-vt8yiB-g.cjs.map +1 -0
  62. package/dist/DualAxisLineChart.cjs +1 -1
  63. package/dist/DualAxisLineChart.js +9 -9
  64. package/dist/DumbbellChart.cjs +1 -1
  65. package/dist/DumbbellChart.js +50 -50
  66. package/dist/{EmptyState-DdTp-Mdn.js → EmptyState-36lXXyui.js} +4 -4
  67. package/dist/{EmptyState-DdTp-Mdn.js.map → EmptyState-36lXXyui.js.map} +1 -1
  68. package/dist/{EmptyState-d8_8SxeW.cjs → EmptyState-B8IpKGcL.cjs} +2 -2
  69. package/dist/{EmptyState-d8_8SxeW.cjs.map → EmptyState-B8IpKGcL.cjs.map} +1 -1
  70. package/dist/ExcelDownloadButton.cjs +1 -1
  71. package/dist/ExcelDownloadButton.js +2 -2
  72. package/dist/FootNote.cjs +1 -1
  73. package/dist/FootNote.js +2 -2
  74. package/dist/GeoHubCompareMaps.cjs +1 -1
  75. package/dist/GeoHubCompareMaps.cjs.map +1 -1
  76. package/dist/GeoHubCompareMaps.js +65 -80
  77. package/dist/GeoHubCompareMaps.js.map +1 -1
  78. package/dist/GeoHubMap.cjs +1 -1
  79. package/dist/GeoHubMap.cjs.map +1 -1
  80. package/dist/GeoHubMap.js +95 -125
  81. package/dist/GeoHubMap.js.map +1 -1
  82. package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
  83. package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -1
  84. package/dist/GeoHubMapWithLayerSelection.js +73 -88
  85. package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
  86. package/dist/GraphDescription.cjs +1 -1
  87. package/dist/GraphDescription.js +2 -2
  88. package/dist/{GraphEl-CqWzvOyr.js → GraphEl-2IiUDxjR.js} +15 -12
  89. package/dist/GraphEl-2IiUDxjR.js.map +1 -0
  90. package/dist/GraphEl-qrlfGPe3.cjs +2 -0
  91. package/dist/GraphEl-qrlfGPe3.cjs.map +1 -0
  92. package/dist/GraphFooter.cjs +1 -1
  93. package/dist/GraphFooter.js +1 -1
  94. package/dist/GraphHeader.cjs +1 -1
  95. package/dist/GraphHeader.js +1 -1
  96. package/dist/GraphTitle.cjs +1 -1
  97. package/dist/GraphTitle.js +2 -2
  98. package/dist/GriddedGraphs.cjs +1 -1
  99. package/dist/GriddedGraphs.d.ts +1 -0
  100. package/dist/GriddedGraphs.js +5 -5
  101. package/dist/GriddedGraphsFromConfig.cjs +1 -1
  102. package/dist/GriddedGraphsFromConfig.d.ts +1 -0
  103. package/dist/GriddedGraphsFromConfig.js +2 -2
  104. package/dist/HeatMap.cjs +1 -1
  105. package/dist/HeatMap.js +19 -19
  106. package/dist/Histogram.cjs +1 -1
  107. package/dist/Histogram.js +3 -3
  108. package/dist/ImageDownloadButton.cjs +1 -1
  109. package/dist/ImageDownloadButton.js +2 -2
  110. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  111. package/dist/LineChartWithConfidenceInterval.js +12 -12
  112. package/dist/LinearColorLegend.cjs +1 -1
  113. package/dist/LinearColorLegend.js +2 -2
  114. package/dist/{Modal-DVVwpKhP.js → Modal-Cg8daIlV.js} +198 -187
  115. package/dist/Modal-Cg8daIlV.js.map +1 -0
  116. package/dist/Modal-CuuJdWkD.cjs +46 -0
  117. package/dist/Modal-CuuJdWkD.cjs.map +1 -0
  118. package/dist/MultiGraphDashboard.cjs +1 -1
  119. package/dist/MultiGraphDashboard.d.ts +1 -0
  120. package/dist/MultiGraphDashboard.js +3 -3
  121. package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
  122. package/dist/MultiGraphDashboardFromConfig.d.ts +1 -0
  123. package/dist/MultiGraphDashboardFromConfig.js +2 -2
  124. package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
  125. package/dist/MultiGraphDashboardWideToLongFormat.js +4 -4
  126. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
  127. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +2 -2
  128. package/dist/MultiLineAltChart.cjs +1 -1
  129. package/dist/MultiLineAltChart.js +12 -12
  130. package/dist/MultiLineChart.cjs +1 -1
  131. package/dist/MultiLineChart.js +12 -12
  132. package/dist/ParetoChart.cjs +1 -1
  133. package/dist/ParetoChart.js +26 -26
  134. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
  135. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -0
  136. package/dist/PerformanceIntensiveMultiGraphDashboard.js +3 -3
  137. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
  138. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -0
  139. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +2 -2
  140. package/dist/PerformanceIntensiveScrollStory.cjs +1 -1
  141. package/dist/PerformanceIntensiveScrollStory.d.ts +1 -0
  142. package/dist/PerformanceIntensiveScrollStory.js +3 -3
  143. package/dist/RadarChart.cjs +1 -1
  144. package/dist/RadarChart.js +7 -7
  145. package/dist/{ReferenceLine-CfAW3vKJ.js → ReferenceLine-CPMaAX0r.js} +3 -3
  146. package/dist/{ReferenceLine-CfAW3vKJ.js.map → ReferenceLine-CPMaAX0r.js.map} +1 -1
  147. package/dist/{ReferenceLine-CFVBBN__.cjs → ReferenceLine-D04j-zeV.cjs} +2 -2
  148. package/dist/{ReferenceLine-CFVBBN__.cjs.map → ReferenceLine-D04j-zeV.cjs.map} +1 -1
  149. package/dist/{RegressionLine-C2--oMQq.js → RegressionLine-CW7iViH2.js} +4 -4
  150. package/dist/{RegressionLine-C2--oMQq.js.map → RegressionLine-CW7iViH2.js.map} +1 -1
  151. package/dist/{RegressionLine-Dj0GSiAp.cjs → RegressionLine-D-49RaHa.cjs} +2 -2
  152. package/dist/{RegressionLine-Dj0GSiAp.cjs.map → RegressionLine-D-49RaHa.cjs.map} +1 -1
  153. package/dist/SVGDownloadButton.cjs +1 -1
  154. package/dist/SVGDownloadButton.js +2 -2
  155. package/dist/SankeyChart.cjs +1 -1
  156. package/dist/SankeyChart.js +27 -27
  157. package/dist/ScatterPlot.cjs +1 -1
  158. package/dist/ScatterPlot.js +17 -17
  159. package/dist/ScrollStory.cjs +1 -1
  160. package/dist/ScrollStory.d.ts +1 -0
  161. package/dist/ScrollStory.js +3 -3
  162. package/dist/SimpleLineChart.cjs +1 -1
  163. package/dist/SimpleLineChart.js +13 -13
  164. package/dist/SingleGraphDashboard.cjs +1 -1
  165. package/dist/SingleGraphDashboard.d.ts +1 -0
  166. package/dist/SingleGraphDashboard.js +6 -6
  167. package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
  168. package/dist/SingleGraphDashboardFromConfig.d.ts +1 -0
  169. package/dist/SingleGraphDashboardFromConfig.js +2 -2
  170. package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
  171. package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -0
  172. package/dist/SingleGraphDashboardGeoHubMaps.js +2 -2
  173. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
  174. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -0
  175. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +2 -2
  176. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  177. package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
  178. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -0
  179. package/dist/SingleGraphDashboardThreeDGraphs.js +14 -13
  180. package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
  181. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
  182. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -0
  183. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +2 -2
  184. package/dist/SlopeChart.cjs +1 -1
  185. package/dist/SlopeChart.js +26 -26
  186. package/dist/Source.cjs +1 -1
  187. package/dist/Source.js +2 -2
  188. package/dist/SparkLine.cjs +1 -1
  189. package/dist/SparkLine.js +2 -2
  190. package/dist/{Spinner-C85UF28E.js → Spinner-Bpz70q_g.js} +2 -2
  191. package/dist/{Spinner-C85UF28E.js.map → Spinner-Bpz70q_g.js.map} +1 -1
  192. package/dist/{Spinner-DA6Z5E4n.cjs → Spinner-C6wLp85s.cjs} +2 -2
  193. package/dist/{Spinner-DA6Z5E4n.cjs.map → Spinner-C6wLp85s.cjs.map} +1 -1
  194. package/dist/StatCardFromData.cjs +1 -1
  195. package/dist/StatCardFromData.js +2 -2
  196. package/dist/StripChart.cjs +1 -1
  197. package/dist/StripChart.js +29 -29
  198. package/dist/ThreeDGlobe.cjs +1 -1
  199. package/dist/ThreeDGlobe.cjs.map +1 -1
  200. package/dist/ThreeDGlobe.d.ts +2 -0
  201. package/dist/ThreeDGlobe.js +220 -228
  202. package/dist/ThreeDGlobe.js.map +1 -1
  203. package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
  204. package/dist/ThresholdColorLegendWithMouseOver.js +2 -2
  205. package/dist/{Tooltip-CVCGWyzw.js → Tooltip-6LIdPQGC.js} +2 -2
  206. package/dist/{Tooltip-CVCGWyzw.js.map → Tooltip-6LIdPQGC.js.map} +1 -1
  207. package/dist/{Tooltip-De16GWhY.cjs → Tooltip-Cpv0QohJ.cjs} +2 -2
  208. package/dist/{Tooltip-De16GWhY.cjs.map → Tooltip-Cpv0QohJ.cjs.map} +1 -1
  209. package/dist/TreeMapGraph.cjs +1 -1
  210. package/dist/TreeMapGraph.js +24 -24
  211. package/dist/Types.d.ts +1 -0
  212. package/dist/{Typography-k-kOjICQ.cjs → Typography-BDULiwlF.cjs} +2 -2
  213. package/dist/{Typography-k-kOjICQ.cjs.map → Typography-BDULiwlF.cjs.map} +1 -1
  214. package/dist/{Typography-Ctgfl1J5.js → Typography-LmZ9LEpe.js} +2 -2
  215. package/dist/{Typography-Ctgfl1J5.js.map → Typography-LmZ9LEpe.js.map} +1 -1
  216. package/dist/UnitChart.cjs +1 -1
  217. package/dist/UnitChart.js +5 -5
  218. package/dist/{XAxesLabels-Drf7M3YK.cjs → XAxesLabels-CLZnBgSr.cjs} +2 -2
  219. package/dist/{XAxesLabels-Drf7M3YK.cjs.map → XAxesLabels-CLZnBgSr.cjs.map} +1 -1
  220. package/dist/{XAxesLabels-loO78vUO.js → XAxesLabels-SOSmso5J.js} +3 -3
  221. package/dist/{XAxesLabels-loO78vUO.js.map → XAxesLabels-SOSmso5J.js.map} +1 -1
  222. package/dist/{XTicksAndGridLines-Bn9u5gOM.js → XTicksAndGridLines-DuydSnZ_.js} +2 -2
  223. package/dist/{XTicksAndGridLines-Bn9u5gOM.js.map → XTicksAndGridLines-DuydSnZ_.js.map} +1 -1
  224. package/dist/{XTicksAndGridLines-CCzXIV8d.cjs → XTicksAndGridLines-RKy7BVCO.cjs} +2 -2
  225. package/dist/{XTicksAndGridLines-CCzXIV8d.cjs.map → XTicksAndGridLines-RKy7BVCO.cjs.map} +1 -1
  226. package/dist/{YAxesLabels-DECkMgq8.js → YAxesLabels-DlDyLvhi.js} +3 -3
  227. package/dist/{YAxesLabels-DECkMgq8.js.map → YAxesLabels-DlDyLvhi.js.map} +1 -1
  228. package/dist/{YAxesLabels-yRFFdx1s.cjs → YAxesLabels-Dqd259-t.cjs} +2 -2
  229. package/dist/{YAxesLabels-yRFFdx1s.cjs.map → YAxesLabels-Dqd259-t.cjs.map} +1 -1
  230. package/dist/{YTicksAndGridLines-B6ah7CRf.js → YTicksAndGridLines-7t4MKtGw.js} +2 -2
  231. package/dist/{YTicksAndGridLines-B6ah7CRf.js.map → YTicksAndGridLines-7t4MKtGw.js.map} +1 -1
  232. package/dist/{YTicksAndGridLines-DBDuz6vb.cjs → YTicksAndGridLines-qGpRo_t1.cjs} +2 -2
  233. package/dist/{YTicksAndGridLines-DBDuz6vb.cjs.map → YTicksAndGridLines-qGpRo_t1.cjs.map} +1 -1
  234. package/dist/checkIfMultiple-Dko_cBvE.cjs +12 -0
  235. package/dist/checkIfMultiple-Dko_cBvE.cjs.map +1 -0
  236. package/dist/{checkIfMultiple-ChTJk2Tk.js → checkIfMultiple-u2SmbiCf.js} +11 -11
  237. package/dist/checkIfMultiple-u2SmbiCf.js.map +1 -0
  238. package/dist/{customArea-CK768gCn.cjs → customArea-1G1S78s_.cjs} +2 -2
  239. package/dist/{customArea-CK768gCn.cjs.map → customArea-1G1S78s_.cjs.map} +1 -1
  240. package/dist/{customArea-B-dWU0zZ.js → customArea-x4L4xwLl.js} +3 -3
  241. package/dist/{customArea-B-dWU0zZ.js.map → customArea-x4L4xwLl.js.map} +1 -1
  242. package/dist/getSliderMarks-CUxPy36E.cjs +6 -0
  243. package/dist/getSliderMarks-CUxPy36E.cjs.map +1 -0
  244. package/dist/{getSliderMarks-9cNoRkDx.js → getSliderMarks-_pYOWEtO.js} +3 -3
  245. package/dist/getSliderMarks-_pYOWEtO.js.map +1 -0
  246. package/dist/{index-BYzIB5V6.cjs → index-BHe3wsWF.cjs} +2 -2
  247. package/dist/{index-BYzIB5V6.cjs.map → index-BHe3wsWF.cjs.map} +1 -1
  248. package/dist/{index-DKCxu1Gh.js → index-Bw_eHBVN.js} +3 -3
  249. package/dist/{index-DKCxu1Gh.js.map → index-Bw_eHBVN.js.map} +1 -1
  250. package/dist/{index-BW_-wD2k.cjs → index-C0bpbS4F.cjs} +2 -2
  251. package/dist/{index-BW_-wD2k.cjs.map → index-C0bpbS4F.cjs.map} +1 -1
  252. package/dist/{index-37q0ULNQ.js → index-CE9pmfxt.js} +17 -17
  253. package/dist/{index-37q0ULNQ.js.map → index-CE9pmfxt.js.map} +1 -1
  254. package/dist/{index-CVlCtJbC.cjs → index-CEJwW3lL.cjs} +2 -2
  255. package/dist/{index-CVlCtJbC.cjs.map → index-CEJwW3lL.cjs.map} +1 -1
  256. package/dist/{index-CHPV5EwG-BPSP-7Jg.js → index-CHPV5EwG-DBWUSD9b.js} +539 -543
  257. package/dist/index-CHPV5EwG-DBWUSD9b.js.map +1 -0
  258. package/dist/index-CHPV5EwG-DjM48pIC.cjs +44 -0
  259. package/dist/index-CHPV5EwG-DjM48pIC.cjs.map +1 -0
  260. package/dist/{index-BW8iNx7E.cjs → index-Cm8NIdOO.cjs} +2 -2
  261. package/dist/{index-BW8iNx7E.cjs.map → index-Cm8NIdOO.cjs.map} +1 -1
  262. package/dist/{index-tvAyXPPW-DBlMKnNB.js → index-Cw8sCyo_-BuI_jX5Z.js} +3 -3
  263. package/dist/{index-tvAyXPPW-DBlMKnNB.js.map → index-Cw8sCyo_-BuI_jX5Z.js.map} +1 -1
  264. package/dist/index-Cw8sCyo_-gxT8ADyn.cjs +2 -0
  265. package/dist/index-Cw8sCyo_-gxT8ADyn.cjs.map +1 -0
  266. package/dist/{index-CNvov0eg.js → index-Cwgh7i7X.js} +3 -3
  267. package/dist/{index-CNvov0eg.js.map → index-Cwgh7i7X.js.map} +1 -1
  268. package/dist/{index-DG3YrCr5-D3FrrXj8.js → index-Dzc_aaI9-BKklH89r.js} +2 -2
  269. package/dist/{index-DG3YrCr5-D3FrrXj8.js.map → index-Dzc_aaI9-BKklH89r.js.map} +1 -1
  270. package/dist/{index-DG3YrCr5-v7rayV3N.cjs → index-Dzc_aaI9-RIk2GRHD.cjs} +2 -2
  271. package/dist/{index-DG3YrCr5-v7rayV3N.cjs.map → index-Dzc_aaI9-RIk2GRHD.cjs.map} +1 -1
  272. package/dist/{index-BmCqpO1B.js → index-zZjQEHlm.js} +2 -2
  273. package/dist/{index-BmCqpO1B.js.map → index-zZjQEHlm.js.map} +1 -1
  274. package/dist/index.cjs +1 -1
  275. package/dist/index.d.ts +9 -0
  276. package/dist/index.js +1 -1
  277. package/dist/{proxy-CkpFesk1.js → proxy-BYIC9BuT.js} +2 -2
  278. package/dist/{proxy-CkpFesk1.js.map → proxy-BYIC9BuT.js.map} +1 -1
  279. package/dist/{proxy-BHRoeZgd.cjs → proxy-CKadx4lC.cjs} +2 -2
  280. package/dist/{proxy-BHRoeZgd.cjs.map → proxy-CKadx4lC.cjs.map} +1 -1
  281. package/dist/style.css +1 -1
  282. package/dist/{use-in-view-sQJZ_xDO.cjs → use-in-view-CEwlc_dd.cjs} +2 -2
  283. package/dist/{use-in-view-sQJZ_xDO.cjs.map → use-in-view-CEwlc_dd.cjs.map} +1 -1
  284. package/dist/{use-in-view-yS6jzJAp.js → use-in-view-DR-UTB96.js} +2 -2
  285. package/dist/{use-in-view-yS6jzJAp.js.map → use-in-view-DR-UTB96.js.map} +1 -1
  286. package/package.json +4 -4
  287. package/dist/DropdownSelect-CtOKZHD0.js.map +0 -1
  288. package/dist/DropdownSelect-DBDM64B5.cjs.map +0 -1
  289. package/dist/GraphEl-C6yjl1VM.cjs +0 -2
  290. package/dist/GraphEl-C6yjl1VM.cjs.map +0 -1
  291. package/dist/GraphEl-CqWzvOyr.js.map +0 -1
  292. package/dist/Modal-DVVwpKhP.js.map +0 -1
  293. package/dist/Modal-tXZlLE5s.cjs +0 -46
  294. package/dist/Modal-tXZlLE5s.cjs.map +0 -1
  295. package/dist/checkIfMultiple-BXbHUCWM.cjs +0 -12
  296. package/dist/checkIfMultiple-BXbHUCWM.cjs.map +0 -1
  297. package/dist/checkIfMultiple-ChTJk2Tk.js.map +0 -1
  298. package/dist/getSliderMarks-9cNoRkDx.js.map +0 -1
  299. package/dist/getSliderMarks-CRIbTGYV.cjs +0 -6
  300. package/dist/getSliderMarks-CRIbTGYV.cjs.map +0 -1
  301. package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +0 -1
  302. package/dist/index-CHPV5EwG-DDoeWRVt.cjs +0 -44
  303. package/dist/index-CHPV5EwG-DDoeWRVt.cjs.map +0 -1
  304. package/dist/index-tvAyXPPW-DPOG-C2i.cjs +0 -2
  305. package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CHPV5EwG-DDoeWRVt.cjs"),r=require("react"),I=require("./index-BS2TADPj.cjs"),q=require("./DropdownSelect-DBDM64B5.cjs"),C=require("maplibre-gl"),P=require("pmtiles");;/* empty css */const M=require("./fetchAndParseData-Ba-_CgxS.cjs"),O=require("./filterData-BoYadk0l.cjs"),z=require("./string2HTML-z7CwHXcx.cjs"),$=require("./index-BW_-wD2k.cjs"),G=require("./select-Bnfk0lJx.cjs"),T=require("./GraphHeader.cjs"),V=require("./GraphFooter.cjs");function W(p){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(p){for(const t in p)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(p,t);Object.defineProperty(c,t,s.get?s:{enumerable:!0,get:()=>p[t]})}}return c.default=p,Object.freeze(c)}const A=W(P);function _(p){const{mapStyle:c,height:t,width:s,relativeHeight:u,center:R,zoomLevel:v,minHeight:x,selectedLayer:g,layerIdList:h,excludeLayers:n,mapLegend:b}=p,[f,D]=r.useState(0),[y,L]=r.useState(0),[N,l]=r.useState(!0),[S,H]=r.useState(void 0),j=r.useRef(null),d=r.useRef(null),a=r.useRef(null);return r.useEffect(()=>{const i=new ResizeObserver(m=>{D(s||m[0].target.clientWidth||620),L(t||m[0].target.clientHeight||480)});return j.current&&(L(j.current.clientHeight||480),D(j.current.clientWidth||620),s||i.observe(j.current)),()=>i.disconnect()},[s,t]),r.useEffect(()=>{d.current&&f&&!a.current&&M.fetchAndParseJSON(c).then(i=>{H(i),G.select(d.current).selectAll("div").remove();const w=new A.Protocol;C.addProtocol("pmtiles",w.tile);const E={container:d.current,style:{...i,layers:O.filterData(i.layers,[{column:"id",excludeValues:[...n,...h.filter(o=>g.indexOf(o)===-1)]}])},attributionControl:!0};R&&(E.center=R),v&&(E.zoom=v),a.current=new C.Map(E),a.current.addControl(new C.NavigationControl({visualizePitch:!0,showZoom:!0,showCompass:!0}),"bottom-right"),a.current.addControl(new C.ScaleControl,"bottom-left")})},[f,R,v,h,c,n,g]),r.useEffect(()=>{if(a.current)if(S){const i={...S,layers:O.filterData(S.layers,[{column:"id",excludeValues:[...n,...h.filter(m=>g.indexOf(m)===-1)]}])};a.current.setStyle(i)}else M.fetchAndParseJSON(c).then(i=>{const m={...i,layers:O.filterData(i.layers,[{column:"id",excludeValues:[...n,...h.filter(w=>g.indexOf(w)===-1)]}])};a.current.setStyle(m)})},[n,h,c,S,g]),e.jsxRuntimeExports.jsx("div",{className:"flex flex-col grow justify-center leading-0",ref:j,"aria-label":"Map area",children:(s||f)&&(t||y)?e.jsxRuntimeExports.jsxs("div",{style:{width:s||f,height:Math.max(x,t||(u?x?(s||f)*u>x?(s||f)*u:x:(s||f)*u:y))},children:[e.jsxRuntimeExports.jsx("div",{ref:d,className:"map maplibre-show-control w-full h-full"}),b?e.jsxRuntimeExports.jsx("div",{className:"absolute left-[22px] bottom-13",children:N?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx("div",{style:{backgroundColor:"rgba(240,240,240, 0.7)",border:"1px solid var(--gray-400)",borderRadius:"999px",width:"24px",height:"24px",padding:"3px",cursor:"pointer",zIndex:10,position:"absolute",right:"-0.75rem",top:"-0.75rem"},onClick:()=>{l(!1)},children:e.jsxRuntimeExports.jsx($.X,{})}),e.jsxRuntimeExports.jsx("div",{className:"p-2",style:{backgroundColor:"rgba(240,240,240, 0.7)"},dangerouslySetInnerHTML:typeof b=="string"?{__html:z.string2HTML(b)}:void 0,children:r.isValidElement(b)?b:null})]}):e.jsxRuntimeExports.jsx("button",{type:"button",className:"mb-0 border-0 bg-transparent p-0 self-start",onClick:()=>{l(!0)},children:e.jsxRuntimeExports.jsx("div",{className:"items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500",children:"Show Legend"})})}):null]}):null})}function F(p){const{mapStyle:c,graphTitle:t,height:s,width:u,relativeHeight:R,sources:v,graphDescription:x,footNote:g,padding:h,backgroundColor:n=!1,center:b,zoomLevel:f,graphID:D,language:y="en",minHeight:L=0,theme:N="light",layerSelection:l,excludeLayers:S=[],ariaLabel:H,uiMode:j="normal",styles:d,classNames:a,mapLegend:i=[]}=p,[m,w]=r.useState(l[0].layerID);r.useEffect(()=>{w(l[0].layerID)},[l]);const E=r.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]);return e.jsxRuntimeExports.jsx("div",{className:`${N||"light"} flex ${u?"w-fit grow-0":"w-full grow"}`,dir:y==="he"||y==="ar"?"rtl":void 0,children:e.jsxRuntimeExports.jsx("div",{className:e.mo(`${n?n===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${y||"en"}`,u?"w-fit":"w-full",a?.graphContainer),style:{...d?.graphContainer||{},...n&&n!==!0?{backgroundColor:n}:{}},id:D,"aria-label":H||`${t?`The graph shows ${t}. `:""}This is a map.${x?` ${x}`:""}`,children:e.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:n?h||"1rem":h||0},children:e.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[t||x?e.jsxRuntimeExports.jsx(T.GraphHeader,{styles:{title:d?.title,description:d?.description},classNames:{title:a?.title,description:a?.description},graphTitle:t,graphDescription:x,width:u}):null,e.jsxRuntimeExports.jsx(q.Za,{options:l.map(o=>({label:o.name,value:o.layerID})),size:"sm",isClearable:!1,variant:j,isRtl:y==="he"||y==="ar",isSearchable:!0,filterOption:q.Hu(E),defaultValue:{label:l[0].name,value:l[0].layerID},controlShouldRenderValue:!0,onChange:o=>{o&&w(o.value)}}),e.jsxRuntimeExports.jsx(_,{mapStyle:c,center:b,zoomLevel:f,width:u,height:s,relativeHeight:R,minHeight:L,selectedLayer:m,layerIdList:I.flattenDeep(l.map(o=>o.layerID)),excludeLayers:S,mapLegend:i.find(o=>o.mapStyleName===l.find(k=>k.layerID===m)?.name)?.legend}),v||g?e.jsxRuntimeExports.jsx(V.GraphFooter,{styles:{footnote:d?.footnote,source:d?.source},classNames:{footnote:a?.footnote,source:a?.source},sources:v,footNote:g,width:u}):null]})})})})}exports.GeoHubMapWithLayerSelection=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CHPV5EwG-DjM48pIC.cjs"),r=require("react"),I=require("./index-BS2TADPj.cjs"),q=require("./DropdownSelect-vt8yiB-g.cjs"),N=require("maplibre-gl"),P=require("pmtiles");;/* empty css */const M=require("./fetchAndParseData-Ba-_CgxS.cjs"),O=require("./filterData-BoYadk0l.cjs"),z=require("./string2HTML-z7CwHXcx.cjs"),$=require("./index-C0bpbS4F.cjs"),G=require("./select-Bnfk0lJx.cjs"),T=require("./GraphHeader.cjs"),V=require("./GraphFooter.cjs");function W(p){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(p){for(const t in p)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(p,t);Object.defineProperty(c,t,s.get?s:{enumerable:!0,get:()=>p[t]})}}return c.default=p,Object.freeze(c)}const A=W(P);function _(p){const{mapStyle:c,height:t,width:s,relativeHeight:u,center:E,zoomLevel:v,minHeight:g,selectedLayer:x,layerIdList:h,excludeLayers:n,mapLegend:b}=p,[f,D]=r.useState(0),[y,L]=r.useState(0),[C,i]=r.useState(!0),[w,H]=r.useState(void 0),j=r.useRef(null),d=r.useRef(null),a=r.useRef(null);return r.useEffect(()=>{const l=new ResizeObserver(m=>{D(s||m[0].target.clientWidth||620),L(t||m[0].target.clientHeight||480)});return j.current&&(L(j.current.clientHeight||480),D(j.current.clientWidth||620),s||l.observe(j.current)),()=>l.disconnect()},[s,t]),r.useEffect(()=>{d.current&&f&&!a.current&&M.fetchAndParseJSON(c).then(l=>{H(l),G.select(d.current).selectAll("div").remove();const S=new A.Protocol;N.addProtocol("pmtiles",S.tile);const R={container:d.current,style:{...l,layers:O.filterData(l.layers,[{column:"id",excludeValues:[...n,...h.filter(o=>x.indexOf(o)===-1)]}])},attributionControl:!0};E&&(R.center=E),v&&(R.zoom=v),a.current=new N.Map(R),a.current.addControl(new N.NavigationControl({visualizePitch:!0,showZoom:!0,showCompass:!0}),"bottom-right"),a.current.addControl(new N.ScaleControl,"bottom-left")})},[f,E,v,h,c,n,x]),r.useEffect(()=>{if(a.current)if(w){const l={...w,layers:O.filterData(w.layers,[{column:"id",excludeValues:[...n,...h.filter(m=>x.indexOf(m)===-1)]}])};a.current.setStyle(l)}else M.fetchAndParseJSON(c).then(l=>{const m={...l,layers:O.filterData(l.layers,[{column:"id",excludeValues:[...n,...h.filter(S=>x.indexOf(S)===-1)]}])};a.current.setStyle(m)})},[n,h,c,w,x]),e.jsxRuntimeExports.jsx("div",{className:"flex flex-col grow justify-center leading-0",ref:j,"aria-label":"Map area",children:(s||f)&&(t||y)?e.jsxRuntimeExports.jsxs("div",{style:{width:s||f,height:Math.max(g,t||(u?g?(s||f)*u>g?(s||f)*u:g:(s||f)*u:y))},children:[e.jsxRuntimeExports.jsx("div",{ref:d,className:"map maplibre-show-control w-full h-full"}),b?e.jsxRuntimeExports.jsx("div",{className:"absolute left-[22px] bottom-13",children:C?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx("div",{className:"color-legend-close-button bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)] border border-[var(--gray-400)] rounded-full w-6 h-6 p-[3px] cursor-pointer z-10 absolute right-[-0.75rem] top-[-0.75rem]",onClick:()=>{i(!1)},children:e.jsxRuntimeExports.jsx($.X,{})}),e.jsxRuntimeExports.jsx("div",{className:"color-legend-box p-2 bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)]",dangerouslySetInnerHTML:typeof b=="string"?{__html:z.string2HTML(b)}:void 0,children:r.isValidElement(b)?b:null})]}):e.jsxRuntimeExports.jsx("button",{type:"button",className:"mb-0 border-0 bg-transparent p-0 self-start",onClick:()=>{i(!0)},children:e.jsxRuntimeExports.jsx("div",{className:"show-color-legend-button items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-600 border-primary-gray-400 dark:border-primary-gray-500",children:"Show Legend"})})}):null]}):null})}function F(p){const{mapStyle:c,graphTitle:t,height:s,width:u,relativeHeight:E,sources:v,graphDescription:g,footNote:x,padding:h,backgroundColor:n=!1,center:b,zoomLevel:f,graphID:D,language:y="en",minHeight:L=0,theme:C="light",layerSelection:i,excludeLayers:w=[],ariaLabel:H,uiMode:j="normal",styles:d,classNames:a,mapLegend:l=[]}=p,[m,S]=r.useState(i[0].layerID);r.useEffect(()=>{S(i[0].layerID)},[i]);const R=r.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]);return e.jsxRuntimeExports.jsx("div",{className:`${C||"light"} flex ${u?"w-fit grow-0":"w-full grow"}`,dir:y==="he"||y==="ar"?"rtl":void 0,children:e.jsxRuntimeExports.jsx("div",{className:e.mo(`${n?n===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${y||"en"}`,u?"w-fit":"w-full",a?.graphContainer),style:{...d?.graphContainer||{},...n&&n!==!0?{backgroundColor:n}:{}},id:D,"aria-label":H||`${t?`The graph shows ${t}. `:""}This is a map.${g?` ${g}`:""}`,children:e.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:n?h||"1rem":h||0},children:e.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[t||g?e.jsxRuntimeExports.jsx(T.GraphHeader,{styles:{title:d?.title,description:d?.description},classNames:{title:a?.title,description:a?.description},graphTitle:t,graphDescription:g,width:u}):null,e.jsxRuntimeExports.jsx(q.Za,{options:i.map(o=>({label:o.name,value:o.layerID})),size:"sm",isClearable:!1,variant:j,isRtl:y==="he"||y==="ar",isSearchable:!0,filterOption:q.Hu(R),defaultValue:{label:i[0].name,value:i[0].layerID},controlShouldRenderValue:!0,onChange:o=>{o&&S(o.value)}}),e.jsxRuntimeExports.jsx(_,{mapStyle:c,center:b,zoomLevel:f,width:u,height:s,relativeHeight:E,minHeight:L,selectedLayer:m,layerIdList:I.flattenDeep(i.map(o=>o.layerID)),excludeLayers:w,mapLegend:l.find(o=>o.mapStyleName===i.find(k=>k.layerID===m)?.name)?.legend}),v||x?e.jsxRuntimeExports.jsx(V.GraphFooter,{styles:{footnote:d?.footnote,source:d?.source},classNames:{footnote:a?.footnote,source:a?.source},sources:v,footNote:x,width:u}):null]})})})})}exports.GeoHubMapWithLayerSelection=F;
2
2
  //# sourceMappingURL=GeoHubMapWithLayerSelection.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeoHubMapWithLayerSelection.cjs","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n selectedLayer,\r\n layerIdList,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapRef = useRef<any>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth && !mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n setMapStyleData(d);\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style: {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n mapRef.current = new maplibreGl.Map(mapObj);\r\n mapRef.current.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n mapRef.current.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, center, zoomLevel, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div ref={mapContainer} className='map maplibre-show-control w-full h-full' />\r\n\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n border: '1px solid var(--gray-400)',\r\n borderRadius: '999px',\r\n width: '24px',\r\n height: '24px',\r\n padding: '3px',\r\n cursor: 'pointer',\r\n zIndex: 10,\r\n position: 'absolute',\r\n right: '-0.75rem',\r\n top: '-0.75rem',\r\n }}\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='p-2'\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport {\r\n ClassNameObject,\r\n Languages,\r\n MapLegendDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URL for mapStyle JSON */\r\n mapStyle: string;\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n /** List of the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\r\n /** List of layer IDs to be excluded from the visualization */\r\n excludeLayers?: string[];\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Theme for the UI elements */\r\n uiMode?: 'light' | 'normal';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm) and [pmtiles](https://www.npmjs.com/package/pmtiles) package to your project */\r\nexport function GeoHubMapWithLayerSelection(props: Props) {\r\n const {\r\n mapStyle,\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n center,\r\n zoomLevel,\r\n graphID,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n layerSelection,\r\n excludeLayers = [],\r\n ariaLabel,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n mapLegend = [],\r\n } = props;\r\n\r\n const [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n width ? 'w-fit' : 'w-full',\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a map.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n variant={uiMode}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n defaultValue={{\r\n label: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\r\n }}\r\n controlShouldRenderValue\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n if (el) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\r\n mapStyle={mapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\r\n }\r\n />\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"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"}
1
+ {"version":3,"file":"GeoHubMapWithLayerSelection.cjs","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n selectedLayer,\r\n layerIdList,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapRef = useRef<any>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth && !mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n setMapStyleData(d);\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style: {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n mapRef.current = new maplibreGl.Map(mapObj);\r\n mapRef.current.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n mapRef.current.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, center, zoomLevel, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div ref={mapContainer} className='map maplibre-show-control w-full h-full' />\r\n\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n className='color-legend-close-button bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)] border border-[var(--gray-400)] rounded-full w-6 h-6 p-[3px] cursor-pointer z-10 absolute right-[-0.75rem] top-[-0.75rem]'\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='color-legend-box p-2 bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)]'\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='show-color-legend-button items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-600 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport {\r\n ClassNameObject,\r\n Languages,\r\n MapLegendDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URL for mapStyle JSON */\r\n mapStyle: string;\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n /** List of the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\r\n /** List of layer IDs to be excluded from the visualization */\r\n excludeLayers?: string[];\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Theme for the UI elements */\r\n uiMode?: 'light' | 'normal';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm) and [pmtiles](https://www.npmjs.com/package/pmtiles) package to your project */\r\nexport function GeoHubMapWithLayerSelection(props: Props) {\r\n const {\r\n mapStyle,\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n center,\r\n zoomLevel,\r\n graphID,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n layerSelection,\r\n excludeLayers = [],\r\n ariaLabel,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n mapLegend = [],\r\n } = props;\r\n\r\n const [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n width ? 'w-fit' : 'w-full',\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a map.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n variant={uiMode}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n defaultValue={{\r\n label: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\r\n }}\r\n controlShouldRenderValue\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n if (el) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\r\n mapStyle={mapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\r\n }\r\n />\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"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"}
@@ -1,134 +1,122 @@
1
- import { j as e, m as V } from "./index-CHPV5EwG-BPSP-7Jg.js";
1
+ import { j as e, m as V } from "./index-CHPV5EwG-DBWUSD9b.js";
2
2
  import _, { useState as L, useRef as O, useEffect as H, useMemo as T } from "react";
3
3
  import { f as W } from "./index-EArKRVKg.js";
4
- import { Z as E, H as G } from "./DropdownSelect-CtOKZHD0.js";
4
+ import { Z as E, H as G } from "./DropdownSelect-6kjXM6oW.js";
5
5
  import D from "maplibre-gl";
6
6
  import * as P from "pmtiles";
7
7
  /* empty css */
8
8
  import { f as $ } from "./fetchAndParseData-sapWbnYk.js";
9
9
  import { f as z } from "./filterData-9nEcQ-Jp.js";
10
10
  import { s as A } from "./string2HTML-oFCROsus.js";
11
- import { X as Z } from "./index-BmCqpO1B.js";
11
+ import { X as Z } from "./index-zZjQEHlm.js";
12
12
  import { s as F } from "./select-DKy99ogv.js";
13
13
  import { GraphHeader as J } from "./GraphHeader.js";
14
14
  import { GraphFooter as X } from "./GraphFooter.js";
15
- function q(I) {
15
+ function q(k) {
16
16
  const {
17
- mapStyle: x,
17
+ mapStyle: b,
18
18
  height: m,
19
- width: i,
20
- relativeHeight: s,
19
+ width: s,
20
+ relativeHeight: i,
21
21
  center: j,
22
- zoomLevel: b,
22
+ zoomLevel: x,
23
23
  minHeight: d,
24
24
  selectedLayer: p,
25
- layerIdList: f,
25
+ layerIdList: g,
26
26
  excludeLayers: a,
27
27
  mapLegend: h
28
- } = I, [u, C] = L(0), [g, N] = L(0), [k, l] = L(!0), [v, M] = L(void 0), y = O(null), n = O(null), t = O(null);
28
+ } = k, [u, N] = L(0), [f, C] = L(0), [I, l] = L(!0), [v, M] = L(void 0), y = O(null), n = O(null), r = O(null);
29
29
  return H(() => {
30
- const r = new ResizeObserver((c) => {
31
- C(i || c[0].target.clientWidth || 620), N(m || c[0].target.clientHeight || 480);
30
+ const t = new ResizeObserver((c) => {
31
+ N(s || c[0].target.clientWidth || 620), C(m || c[0].target.clientHeight || 480);
32
32
  });
33
- return y.current && (N(y.current.clientHeight || 480), C(y.current.clientWidth || 620), i || r.observe(y.current)), () => r.disconnect();
34
- }, [i, m]), H(() => {
35
- n.current && u && !t.current && $(x).then((r) => {
36
- M(r), F(n.current).selectAll("div").remove();
33
+ return y.current && (C(y.current.clientHeight || 480), N(y.current.clientWidth || 620), s || t.observe(y.current)), () => t.disconnect();
34
+ }, [s, m]), H(() => {
35
+ n.current && u && !r.current && $(b).then((t) => {
36
+ M(t), F(n.current).selectAll("div").remove();
37
37
  const w = new P.Protocol();
38
38
  D.addProtocol("pmtiles", w.tile);
39
39
  const S = {
40
40
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
41
  container: n.current,
42
42
  style: {
43
- ...r,
44
- layers: z(r.layers, [
43
+ ...t,
44
+ layers: z(t.layers, [
45
45
  {
46
46
  column: "id",
47
47
  excludeValues: [
48
48
  ...a,
49
- ...f.filter((o) => p.indexOf(o) === -1)
49
+ ...g.filter((o) => p.indexOf(o) === -1)
50
50
  ]
51
51
  }
52
52
  ])
53
53
  },
54
54
  attributionControl: !0
55
55
  };
56
- j && (S.center = j), b && (S.zoom = b), t.current = new D.Map(S), t.current.addControl(
56
+ j && (S.center = j), x && (S.zoom = x), r.current = new D.Map(S), r.current.addControl(
57
57
  new D.NavigationControl({
58
58
  visualizePitch: !0,
59
59
  showZoom: !0,
60
60
  showCompass: !0
61
61
  }),
62
62
  "bottom-right"
63
- ), t.current.addControl(new D.ScaleControl(), "bottom-left");
63
+ ), r.current.addControl(new D.ScaleControl(), "bottom-left");
64
64
  });
65
- }, [u, j, b, f, x, a, p]), H(() => {
66
- if (t.current)
65
+ }, [u, j, x, g, b, a, p]), H(() => {
66
+ if (r.current)
67
67
  if (v) {
68
- const r = {
68
+ const t = {
69
69
  ...v,
70
70
  layers: z(v.layers, [
71
71
  {
72
72
  column: "id",
73
73
  excludeValues: [
74
74
  ...a,
75
- ...f.filter((c) => p.indexOf(c) === -1)
75
+ ...g.filter((c) => p.indexOf(c) === -1)
76
76
  ]
77
77
  }
78
78
  ])
79
79
  };
80
- t.current.setStyle(r);
80
+ r.current.setStyle(t);
81
81
  } else
82
- $(x).then((r) => {
82
+ $(b).then((t) => {
83
83
  const c = {
84
- ...r,
85
- layers: z(r.layers, [
84
+ ...t,
85
+ layers: z(t.layers, [
86
86
  {
87
87
  column: "id",
88
88
  excludeValues: [
89
89
  ...a,
90
- ...f.filter((w) => p.indexOf(w) === -1)
90
+ ...g.filter((w) => p.indexOf(w) === -1)
91
91
  ]
92
92
  }
93
93
  ])
94
94
  };
95
- t.current.setStyle(c);
95
+ r.current.setStyle(c);
96
96
  });
97
- }, [a, f, x, v, p]), /* @__PURE__ */ e.jsx(
97
+ }, [a, g, b, v, p]), /* @__PURE__ */ e.jsx(
98
98
  "div",
99
99
  {
100
100
  className: "flex flex-col grow justify-center leading-0",
101
101
  ref: y,
102
102
  "aria-label": "Map area",
103
- children: (i || u) && (m || g) ? /* @__PURE__ */ e.jsxs(
103
+ children: (s || u) && (m || f) ? /* @__PURE__ */ e.jsxs(
104
104
  "div",
105
105
  {
106
106
  style: {
107
- width: i || u,
107
+ width: s || u,
108
108
  height: Math.max(
109
109
  d,
110
- m || (s ? d ? (i || u) * s > d ? (i || u) * s : d : (i || u) * s : g)
110
+ m || (i ? d ? (s || u) * i > d ? (s || u) * i : d : (s || u) * i : f)
111
111
  )
112
112
  },
113
113
  children: [
114
114
  /* @__PURE__ */ e.jsx("div", { ref: n, className: "map maplibre-show-control w-full h-full" }),
115
- h ? /* @__PURE__ */ e.jsx("div", { className: "absolute left-[22px] bottom-13", children: k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
115
+ h ? /* @__PURE__ */ e.jsx("div", { className: "absolute left-[22px] bottom-13", children: I ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
116
116
  /* @__PURE__ */ e.jsx(
117
117
  "div",
118
118
  {
119
- style: {
120
- backgroundColor: "rgba(240,240,240, 0.7)",
121
- border: "1px solid var(--gray-400)",
122
- borderRadius: "999px",
123
- width: "24px",
124
- height: "24px",
125
- padding: "3px",
126
- cursor: "pointer",
127
- zIndex: 10,
128
- position: "absolute",
129
- right: "-0.75rem",
130
- top: "-0.75rem"
131
- },
119
+ className: "color-legend-close-button bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)] border border-[var(--gray-400)] rounded-full w-6 h-6 p-[3px] cursor-pointer z-10 absolute right-[-0.75rem] top-[-0.75rem]",
132
120
  onClick: () => {
133
121
  l(!1);
134
122
  },
@@ -138,10 +126,7 @@ function q(I) {
138
126
  /* @__PURE__ */ e.jsx(
139
127
  "div",
140
128
  {
141
- className: "p-2",
142
- style: {
143
- backgroundColor: "rgba(240,240,240, 0.7)"
144
- },
129
+ className: "color-legend-box p-2 bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)]",
145
130
  dangerouslySetInnerHTML: typeof h == "string" ? { __html: A(h) } : void 0,
146
131
  children: _.isValidElement(h) ? h : null
147
132
  }
@@ -154,7 +139,7 @@ function q(I) {
154
139
  onClick: () => {
155
140
  l(!0);
156
141
  },
157
- children: /* @__PURE__ */ e.jsx("div", { className: "items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500", children: "Show Legend" })
142
+ children: /* @__PURE__ */ e.jsx("div", { className: "show-color-legend-button items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-600 border-primary-gray-400 dark:border-primary-gray-500", children: "Show Legend" })
158
143
  }
159
144
  ) }) : null
160
145
  ]
@@ -163,32 +148,32 @@ function q(I) {
163
148
  }
164
149
  );
165
150
  }
166
- function ne(I) {
151
+ function ne(k) {
167
152
  const {
168
- mapStyle: x,
153
+ mapStyle: b,
169
154
  graphTitle: m,
170
- height: i,
171
- width: s,
155
+ height: s,
156
+ width: i,
172
157
  relativeHeight: j,
173
- sources: b,
158
+ sources: x,
174
159
  graphDescription: d,
175
160
  footNote: p,
176
- padding: f,
161
+ padding: g,
177
162
  backgroundColor: a = !1,
178
163
  center: h,
179
164
  zoomLevel: u,
180
- graphID: C,
181
- language: g = "en",
182
- minHeight: N = 0,
183
- theme: k = "light",
165
+ graphID: N,
166
+ language: f = "en",
167
+ minHeight: C = 0,
168
+ theme: I = "light",
184
169
  layerSelection: l,
185
170
  excludeLayers: v = [],
186
171
  ariaLabel: M,
187
172
  uiMode: y = "normal",
188
173
  styles: n,
189
- classNames: t,
190
- mapLegend: r = []
191
- } = I, [c, w] = L(l[0].layerID);
174
+ classNames: r,
175
+ mapLegend: t = []
176
+ } = k, [c, w] = L(l[0].layerID);
192
177
  H(() => {
193
178
  w(l[0].layerID);
194
179
  }, [l]);
@@ -203,27 +188,27 @@ function ne(I) {
203
188
  return /* @__PURE__ */ e.jsx(
204
189
  "div",
205
190
  {
206
- className: `${k || "light"} flex ${s ? "w-fit grow-0" : "w-full grow"}`,
207
- dir: g === "he" || g === "ar" ? "rtl" : void 0,
191
+ className: `${I || "light"} flex ${i ? "w-fit grow-0" : "w-full grow"}`,
192
+ dir: f === "he" || f === "ar" ? "rtl" : void 0,
208
193
  children: /* @__PURE__ */ e.jsx(
209
194
  "div",
210
195
  {
211
196
  className: V(
212
- `${a ? a === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${g || "en"}`,
213
- s ? "w-fit" : "w-full",
214
- t?.graphContainer
197
+ `${a ? a === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${f || "en"}`,
198
+ i ? "w-fit" : "w-full",
199
+ r?.graphContainer
215
200
  ),
216
201
  style: {
217
202
  ...n?.graphContainer || {},
218
203
  ...a && a !== !0 ? { backgroundColor: a } : {}
219
204
  },
220
- id: C,
205
+ id: N,
221
206
  "aria-label": M || `${m ? `The graph shows ${m}. ` : ""}This is a map.${d ? ` ${d}` : ""}`,
222
207
  children: /* @__PURE__ */ e.jsx(
223
208
  "div",
224
209
  {
225
210
  className: "flex grow",
226
- style: { padding: a ? f || "1rem" : f || 0 },
211
+ style: { padding: a ? g || "1rem" : g || 0 },
227
212
  children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
228
213
  m || d ? /* @__PURE__ */ e.jsx(
229
214
  J,
@@ -233,12 +218,12 @@ function ne(I) {
233
218
  description: n?.description
234
219
  },
235
220
  classNames: {
236
- title: t?.title,
237
- description: t?.description
221
+ title: r?.title,
222
+ description: r?.description
238
223
  },
239
224
  graphTitle: m,
240
225
  graphDescription: d,
241
- width: s
226
+ width: i
242
227
  }
243
228
  ) : null,
244
229
  /* @__PURE__ */ e.jsx(
@@ -251,7 +236,7 @@ function ne(I) {
251
236
  size: "sm",
252
237
  isClearable: !1,
253
238
  variant: y,
254
- isRtl: g === "he" || g === "ar",
239
+ isRtl: f === "he" || f === "ar",
255
240
  isSearchable: !0,
256
241
  filterOption: G(S),
257
242
  defaultValue: {
@@ -267,32 +252,32 @@ function ne(I) {
267
252
  /* @__PURE__ */ e.jsx(
268
253
  q,
269
254
  {
270
- mapStyle: x,
255
+ mapStyle: b,
271
256
  center: h,
272
257
  zoomLevel: u,
273
- width: s,
274
- height: i,
258
+ width: i,
259
+ height: s,
275
260
  relativeHeight: j,
276
- minHeight: N,
261
+ minHeight: C,
277
262
  selectedLayer: c,
278
263
  layerIdList: W(l.map((o) => o.layerID)),
279
264
  excludeLayers: v,
280
- mapLegend: r.find(
265
+ mapLegend: t.find(
281
266
  (o) => o.mapStyleName === l.find((R) => R.layerID === c)?.name
282
267
  )?.legend
283
268
  }
284
269
  ),
285
- b || p ? /* @__PURE__ */ e.jsx(
270
+ x || p ? /* @__PURE__ */ e.jsx(
286
271
  X,
287
272
  {
288
273
  styles: { footnote: n?.footnote, source: n?.source },
289
274
  classNames: {
290
- footnote: t?.footnote,
291
- source: t?.source
275
+ footnote: r?.footnote,
276
+ source: r?.source
292
277
  },
293
- sources: b,
278
+ sources: x,
294
279
  footNote: p,
295
- width: s
280
+ width: i
296
281
  }
297
282
  ) : null
298
283
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"GeoHubMapWithLayerSelection.js","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n selectedLayer,\r\n layerIdList,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapRef = useRef<any>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth && !mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n setMapStyleData(d);\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style: {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n mapRef.current = new maplibreGl.Map(mapObj);\r\n mapRef.current.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n mapRef.current.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, center, zoomLevel, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div ref={mapContainer} className='map maplibre-show-control w-full h-full' />\r\n\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n border: '1px solid var(--gray-400)',\r\n borderRadius: '999px',\r\n width: '24px',\r\n height: '24px',\r\n padding: '3px',\r\n cursor: 'pointer',\r\n zIndex: 10,\r\n position: 'absolute',\r\n right: '-0.75rem',\r\n top: '-0.75rem',\r\n }}\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='p-2'\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport {\r\n ClassNameObject,\r\n Languages,\r\n MapLegendDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URL for mapStyle JSON */\r\n mapStyle: string;\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n /** List of the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\r\n /** List of layer IDs to be excluded from the visualization */\r\n excludeLayers?: string[];\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Theme for the UI elements */\r\n uiMode?: 'light' | 'normal';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm) and [pmtiles](https://www.npmjs.com/package/pmtiles) package to your project */\r\nexport function GeoHubMapWithLayerSelection(props: Props) {\r\n const {\r\n mapStyle,\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n center,\r\n zoomLevel,\r\n graphID,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n layerSelection,\r\n excludeLayers = [],\r\n ariaLabel,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n mapLegend = [],\r\n } = props;\r\n\r\n const [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n width ? 'w-fit' : 'w-full',\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a map.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n variant={uiMode}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n defaultValue={{\r\n label: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\r\n }}\r\n controlShouldRenderValue\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n if (el) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\r\n mapStyle={mapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\r\n }\r\n />\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"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"}
1
+ {"version":3,"file":"GeoHubMapWithLayerSelection.js","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n selectedLayer,\r\n layerIdList,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapRef = useRef<any>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth && !mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n setMapStyleData(d);\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style: {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n mapRef.current = new maplibreGl.Map(mapObj);\r\n mapRef.current.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n mapRef.current.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, center, zoomLevel, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div ref={mapContainer} className='map maplibre-show-control w-full h-full' />\r\n\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n className='color-legend-close-button bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)] border border-[var(--gray-400)] rounded-full w-6 h-6 p-[3px] cursor-pointer z-10 absolute right-[-0.75rem] top-[-0.75rem]'\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='color-legend-box p-2 bg-[rgba(240,240,240,0.7)] dark:bg-[rgba(30,30,30,0.7)]'\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='show-color-legend-button items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-600 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport {\r\n ClassNameObject,\r\n Languages,\r\n MapLegendDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URL for mapStyle JSON */\r\n mapStyle: string;\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n /** List of the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\r\n /** List of layer IDs to be excluded from the visualization */\r\n excludeLayers?: string[];\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Theme for the UI elements */\r\n uiMode?: 'light' | 'normal';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm) and [pmtiles](https://www.npmjs.com/package/pmtiles) package to your project */\r\nexport function GeoHubMapWithLayerSelection(props: Props) {\r\n const {\r\n mapStyle,\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n center,\r\n zoomLevel,\r\n graphID,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n layerSelection,\r\n excludeLayers = [],\r\n ariaLabel,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n mapLegend = [],\r\n } = props;\r\n\r\n const [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n width ? 'w-fit' : 'w-full',\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a map.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n variant={uiMode}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n defaultValue={{\r\n label: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\r\n }}\r\n controlShouldRenderValue\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n if (el) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\r\n mapStyle={mapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\r\n }\r\n />\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index-CHPV5EwG-DDoeWRVt.cjs"),s=require("./Typography-k-kOjICQ.cjs"),o=require("react");function a(n){const{text:e,style:t,className:i}=n;return typeof e=="string"?e.trim()===""?null:r.jsxRuntimeExports.jsx(s.u,{size:"sm",marginBottom:"none",className:r.mo("text-primary-gray-550 dark:text-primary-gray-400",i),"aria-label":"Graph description",style:t,children:e}):o.isValidElement(e)?r.jsxRuntimeExports.jsx("div",{className:i,style:t,children:e}):(console.error("GraphDescription: Invalid text type. Expected string or React element."),null)}exports.GraphDescription=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index-CHPV5EwG-DjM48pIC.cjs"),s=require("./Typography-BDULiwlF.cjs"),o=require("react");function a(n){const{text:e,style:t,className:i}=n;return typeof e=="string"?e.trim()===""?null:r.jsxRuntimeExports.jsx(s.u,{size:"sm",marginBottom:"none",className:r.mo("text-primary-gray-550 dark:text-primary-gray-400",i),"aria-label":"Graph description",style:t,children:e}):o.isValidElement(e)?r.jsxRuntimeExports.jsx("div",{className:i,style:t,children:e}):(console.error("GraphDescription: Invalid text type. Expected string or React element."),null)}exports.GraphDescription=a;
2
2
  //# sourceMappingURL=GraphDescription.cjs.map