@hisptz/dhis2-analytics 2.1.24 → 2.1.26

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 (137) hide show
  1. package/dist/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
  2. package/dist/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -1
  3. package/dist/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -1
  4. package/dist/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -1
  5. package/dist/components/DHIS2PivotTable/components/Table/index.js.map +1 -1
  6. package/dist/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
  7. package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
  8. package/dist/components/DHIS2PivotTable/state/engine.js.map +1 -1
  9. package/dist/components/Map/DHIS2Map.js.map +1 -1
  10. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -1
  11. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -1
  12. package/dist/components/Map/components/MapArea/index.js.map +1 -1
  13. package/dist/components/Map/components/MapControls/components/CustomControl/index.js +13 -2
  14. package/dist/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -1
  15. package/dist/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -1
  16. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -1
  17. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
  18. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js +10 -11
  19. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
  20. package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
  21. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -1
  22. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -1
  23. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
  24. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  25. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  26. package/dist/components/Map/components/MapProvider/index.js +1 -1
  27. package/dist/components/Map/components/MapProvider/index.js.map +1 -1
  28. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  29. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
  30. package/dist/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
  31. package/dist/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
  32. package/dist/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
  33. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
  34. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
  35. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  36. package/dist/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
  37. package/dist/components/Visualization/components/LayoutProvider/index.js.map +1 -1
  38. package/dist/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
  39. package/dist/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
  40. package/dist/components/Visualization/components/VisualizationSelector/index.js +9 -1
  41. package/dist/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
  42. package/dist/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
  43. package/dist/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
  44. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
  45. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -1
  46. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -1
  47. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -1
  48. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js.map +1 -1
  49. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
  50. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
  51. package/dist/esm/components/DHIS2PivotTable/state/engine.js.map +1 -1
  52. package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
  53. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -1
  54. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -1
  55. package/dist/esm/components/Map/components/MapArea/index.js.map +1 -1
  56. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js +13 -2
  57. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -1
  58. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -1
  59. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -1
  60. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
  61. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +4 -4
  62. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
  63. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
  64. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -1
  65. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -1
  66. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
  67. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  68. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  69. package/dist/esm/components/Map/components/MapProvider/index.js +1 -1
  70. package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -1
  71. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  72. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
  73. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
  74. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
  75. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
  76. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
  77. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
  78. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  79. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
  80. package/dist/esm/components/Visualization/components/LayoutProvider/index.js.map +1 -1
  81. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
  82. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
  83. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js +9 -1
  84. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
  85. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
  86. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
  87. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts +3 -3
  88. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts.map +1 -1
  89. package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts +2 -2
  90. package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts.map +1 -1
  91. package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts +2 -2
  92. package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts.map +1 -1
  93. package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts +2 -2
  94. package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts.map +1 -1
  95. package/dist/types/components/DHIS2PivotTable/state/engine.d.ts.map +1 -1
  96. package/dist/types/components/Map/DHIS2Map.d.ts +3 -3
  97. package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
  98. package/dist/types/components/Map/components/MapArea/index.d.ts +1 -2
  99. package/dist/types/components/Map/components/MapArea/index.d.ts.map +1 -1
  100. package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts +2 -2
  101. package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts.map +1 -1
  102. package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts +2 -1
  103. package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts.map +1 -1
  104. package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts +2 -3
  105. package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts.map +1 -1
  106. package/dist/types/components/Map/components/MapLayer/components/LegendArea/index.d.ts.map +1 -1
  107. package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts +1 -2
  108. package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts.map +1 -1
  109. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts +1 -2
  110. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts.map +1 -1
  111. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts +2 -3
  112. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts.map +1 -1
  113. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +2 -3
  114. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts.map +1 -1
  115. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +2 -2
  116. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
  117. package/dist/types/components/Map/components/MapProvider/index.d.ts.map +1 -1
  118. package/dist/types/components/Map/interfaces/index.d.ts +2 -2
  119. package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
  120. package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts +2 -2
  121. package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts.map +1 -1
  122. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts +2 -2
  123. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts.map +1 -1
  124. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts +2 -2
  125. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts.map +1 -1
  126. package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts +2 -2
  127. package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts.map +1 -1
  128. package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts +4 -4
  129. package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts.map +1 -1
  130. package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts +3 -3
  131. package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts.map +1 -1
  132. package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts +2 -2
  133. package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts.map +1 -1
  134. package/dist/types/components/Visualization/components/VisualizationSelector/index.d.ts.map +1 -1
  135. package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts +6 -6
  136. package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts.map +1 -1
  137. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Visualization/components/VisualizationTypeSelector/index.tsx"],"names":["IconTable24","i18n","IconVisualizationColumn24","IconWorld24","useVisualizationType","useVisualizationConfig","useMemo","jsx","Tooltip","Button"],"mappings":";;;;;;;;;;;;AAeA,MAAM,2BAA8B,GAAA;AAAA,EACnC;AAAA,IACC,EAAI,EAAA,YAAA;AAAA,IACJ,IAAA,iCAAOA,cAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAOC,qBAAK,CAAA,CAAA,CAAE,aAAa;AAAA,GAC5B;AAAA,EACA;AAAA,IACC,EAAI,EAAA,OAAA;AAAA,IACJ,IAAA,iCAAOC,4BAA0B,EAAA,EAAA,CAAA;AAAA,IACjC,KAAA,EAAOD,qBAAK,CAAA,CAAA,CAAE,OAAO;AAAA,GACtB;AAAA,EACA;AAAA,IACC,EAAI,EAAA,KAAA;AAAA,IACJ,IAAA,iCAAOE,cAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAOF,qBAAK,CAAA,CAAA,CAAE,KAAK;AAAA;AAErB,CAAA;AAEO,SAAS,yBAA4B,GAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIG,6BAAqB,EAAA;AAC7C,EAAA,MAAM,SAASC,+BAAuB,EAAA;AAEtC,EAAA,MAAM,KAAQ,GAAAC,aAAA;AAAA,IACb,MACC,2BAAA,CAA4B,MAAO,CAAA,CAAC,aAAkB,KAAA;AACrD,MACC,OAAA,MAAA,CAAO,IAAK,CAAA,MAAA,IAAU,EAAE,CAAE,CAAA,QAAA,CAAS,aAAc,CAAA,EAAE,CACnD,IAAA,aAAA,CAAc,EAAO,KAAA,IAAA;AAAA,KAEtB,CAAA;AAAA,IACF,CAAC,MAAM,MAAM;AAAA,GACd;AAEA,EAAA,sCACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAK,EAAA,CAAA,EAClC,EAAA,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,EAAE,IAAM,EAAA,KAAA,EAAO,IAAS,KAAA;AACnC,IACC,uBAAAC,cAAA;AAAA,MAACC,UAAA;AAAA,MAAA;AAAA,QAEA,OAAA,EAASP,qBAAK,CAAA,CAAA,CAAE,kBAAoB,EAAA;AAAA,UACnC,IAAA,EAAM,MAAM,WAAY;AAAA,SACxB,CAAA;AAAA,QAED,QAAA,kBAAAM,cAAA;AAAA,UAACE,SAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAS,MAAM,OAAA,CAAQ,EAAuB,CAAA;AAAA,YAC9C;AAAA;AAAA;AACD,OAAA;AAAA,MARK,GAAG,KAAK,CAAA,QAAA;AAAA,KASd;AAAA,GAED,CACF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n\tuseVisualizationConfig,\n\tuseVisualizationType,\n\tVisualizationType,\n} from \"../VisualizationTypeProvider/index.js\";\nimport {\n\tButton,\n\tIconTable24,\n\tIconVisualizationColumn24,\n\tIconWorld24,\n\tTooltip,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nconst supportedVisualizationTypes = [\n\t{\n\t\tid: \"pivotTable\",\n\t\ticon: <IconTable24 />,\n\t\tlabel: i18n.t(\"Pivot table\"),\n\t},\n\t{\n\t\tid: \"chart\",\n\t\ticon: <IconVisualizationColumn24 />,\n\t\tlabel: i18n.t(\"Chart\"),\n\t},\n\t{\n\t\tid: \"map\",\n\t\ticon: <IconWorld24 />,\n\t\tlabel: i18n.t(\"Map\"),\n\t},\n];\n\nexport function VisualizationTypeSelector() {\n\tconst [type, setType] = useVisualizationType();\n\tconst config = useVisualizationConfig();\n\n\tconst types = useMemo(\n\t\t() =>\n\t\t\tsupportedVisualizationTypes.filter((supportedType) => {\n\t\t\t\treturn (\n\t\t\t\t\tObject.keys(config ?? {}).includes(supportedType.id) &&\n\t\t\t\t\tsupportedType.id !== type\n\t\t\t\t);\n\t\t\t}),\n\t\t[type, config],\n\t);\n\n\treturn (\n\t\t<div style={{ display: \"flex\", gap: 8 }}>\n\t\t\t{types.map(({ icon, label, id }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tkey={`${label}-tooltip`}\n\t\t\t\t\t\tcontent={i18n.t(\"View as {{type}}\", {\n\t\t\t\t\t\t\ttype: label.toLowerCase(),\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={() => setType(id as VisualizationType)}\n\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Visualization/components/VisualizationTypeSelector/index.tsx"],"names":["IconTable24","i18n","IconVisualizationColumn24","IconWorld24","useVisualizationType","useVisualizationConfig","useMemo","jsx","Tooltip","Button"],"mappings":";;;;;;;;;;;;AAeA,MAAM,2BAA8B,GAAA;AAAA,EACnC;AAAA,IACC,EAAI,EAAA,YAAA;AAAA,IACJ,IAAA,iCAAOA,cAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAOC,qBAAK,CAAA,CAAA,CAAE,aAAa;AAAA,GAC5B;AAAA,EACA;AAAA,IACC,EAAI,EAAA,OAAA;AAAA,IACJ,IAAA,iCAAOC,4BAA0B,EAAA,EAAA,CAAA;AAAA,IACjC,KAAA,EAAOD,qBAAK,CAAA,CAAA,CAAE,OAAO;AAAA,GACtB;AAAA,EACA;AAAA,IACC,EAAI,EAAA,KAAA;AAAA,IACJ,IAAA,iCAAOE,cAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAOF,qBAAK,CAAA,CAAA,CAAE,KAAK;AAAA;AAErB,CAAA;AAEO,SAAS,yBAA4B,GAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIG,6BAAqB,EAAA;AAC7C,EAAA,MAAM,SAASC,+BAAuB,EAAA;AAEtC,EAAA,MAAM,KAAQ,GAAAC,aAAA;AAAA,IACb,MACC,2BAAA,CAA4B,MAAO,CAAA,CAAC,aAAkB,KAAA;AACrD,MACC,OAAA,MAAA,CAAO,IAAK,CAAA,MAAA,IAAU,EAAE,CAAE,CAAA,QAAA,CAAS,aAAc,CAAA,EAAE,CACnD,IAAA,aAAA,CAAc,EAAO,KAAA,IAAA;AAAA,KAEtB,CAAA;AAAA,IACF,CAAC,MAAM,MAAM;AAAA,GACd;AAEA,EAAA,sCACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAK,EAAA,CAAA,EAClC,EAAA,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,EAAE,IAAM,EAAA,KAAA,EAAO,IAAS,KAAA;AACnC,IACC,uBAAAC,cAAA;AAAA,MAACC,UAAA;AAAA,MAAA;AAAA,QAEA,OAAA,EAASP,qBAAK,CAAA,CAAA,CAAE,kBAAoB,EAAA;AAAA,UACnC,IAAA,EAAM,MAAM,WAAY;AAAA,SACxB,CAAA;AAAA,QAED,QAAA,kBAAAM,cAAA;AAAA,UAACE,SAAA;AAAA,UAAA;AAAA,YACA,OAAA,EAAS,MAAM,OAAA,CAAQ,EAAuB,CAAA;AAAA,YAC9C;AAAA;AAAA;AACD,OAAA;AAAA,MARK,GAAG,KAAK,CAAA,QAAA;AAAA,KASd;AAAA,GAED,CACF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport {\n\tuseVisualizationConfig,\n\tuseVisualizationType,\n\tVisualizationType,\n} from \"../VisualizationTypeProvider/index.js\";\nimport {\n\tButton,\n\tIconTable24,\n\tIconVisualizationColumn24,\n\tIconWorld24,\n\tTooltip,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nconst supportedVisualizationTypes = [\n\t{\n\t\tid: \"pivotTable\",\n\t\ticon: <IconTable24 />,\n\t\tlabel: i18n.t(\"Pivot table\"),\n\t},\n\t{\n\t\tid: \"chart\",\n\t\ticon: <IconVisualizationColumn24 />,\n\t\tlabel: i18n.t(\"Chart\"),\n\t},\n\t{\n\t\tid: \"map\",\n\t\ticon: <IconWorld24 />,\n\t\tlabel: i18n.t(\"Map\"),\n\t},\n];\n\nexport function VisualizationTypeSelector() {\n\tconst [type, setType] = useVisualizationType();\n\tconst config = useVisualizationConfig();\n\n\tconst types = useMemo(\n\t\t() =>\n\t\t\tsupportedVisualizationTypes.filter((supportedType) => {\n\t\t\t\treturn (\n\t\t\t\t\tObject.keys(config ?? {}).includes(supportedType.id) &&\n\t\t\t\t\tsupportedType.id !== type\n\t\t\t\t);\n\t\t\t}),\n\t\t[type, config],\n\t);\n\n\treturn (\n\t\t<div style={{ display: \"flex\", gap: 8 }}>\n\t\t\t{types.map(({ icon, label, id }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tkey={`${label}-tooltip`}\n\t\t\t\t\t\tcontent={i18n.t(\"View as {{type}}\", {\n\t\t\t\t\t\t\ttype: label.toLowerCase(),\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={() => setType(id as VisualizationType)}\n\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAS,uBAAwB,CAAA;AAAA,EAChC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,EAAK,GAAA,MAAA,CAAO,CAAG,EAAA,GAAA,EAAK,CAAa,WAAA,CAAA,CAAA;AACvC,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,QAAS,CAAA,EAAE,IAAI,EAAG,CAAA,OAAA,EAAS,SAAW,EAAA,MAAA,EAAQ,CAAA;AAEhE,EAAA,IAAI,CAAC,KAAO,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAER,EACC,uBAAA,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACA,SAAS,EAAA,IAAA;AAAA,MACT,GAAK,EAAA,MAAA;AAAA,MACL,cAAgB,EAAA;AAAA,QACf,IAAI,EAAG,CAAA,OAAA;AAAA,QACP,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO,EAAA;AAAA,QACvC,GAAI,kBAAkB;AAAC,OACxB;AAAA,MACA,UAAY,EAAA,UAAA;AAAA,MACZ,OAAA,EAAS,EAAE,GAAG,KAAM;AAAA;AAAA,GACrB;AAEF;AAgBO,MAAM,UACZ,GAAA,UAAA;AAAA,EACC;AACD;AAKM,MAAM,cAAiB,GAAA","file":"DHIS2Chart.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport * as Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { useChart } from \"./hooks/useChart.js\";\nimport \"./styles/custom-highchart.css\";\nimport \"highcharts/modules/exporting\";\nimport \"highcharts/modules/export-data\";\nimport \"highcharts/modules/full-screen\";\nimport \"highcharts/highcharts-more\";\nimport \"highcharts/modules/solid-gauge\";\nimport \"highcharts/modules/accessibility\";\nimport { ChartAnalyticsProps } from \"./types/props.js\";\n\nexport * from \"./services/export.js\";\nexport * from \"./types/props.js\";\nexport * from \"./components/DownloadMenu/index.js\";\n\nfunction ChartAnalyticsComponent({\n\tanalytics,\n\tconfig,\n\tcontainerProps,\n\tsetRef,\n}: ChartAnalyticsProps) {\n\tconst id = useRef(`${uid()}-chart-item`);\n\tconst { chart } = useChart({ id: id.current, analytics, config });\n\n\tif (!chart) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<HighchartsReact\n\t\t\timmutable\n\t\t\tref={setRef}\n\t\t\tcontainerProps={{\n\t\t\t\tid: id.current,\n\t\t\t\tstyle: { width: \"100%\", height: \"100%\" },\n\t\t\t\t...(containerProps ?? {}),\n\t\t\t}}\n\t\t\thighcharts={Highcharts}\n\t\t\toptions={{ ...chart }}\n\t\t/>\n\t);\n}\n\n/**\n * The `DHIS2Chart` component allows you to render a chart visualization from DHIS2 analytics data.\n * It accepts the DHIS2 analytics payload as well as configuration on how to visualize the data.\n *\n * @component\n *\n * @param {ChartAnalyticsProps} props\n * @param {Analytics} [props.analytics] - Analytics data from DHIS2\n * @param {ChartConfig} [props.config] - Visualization configuration. See stories for more information\n * @param {Record<string, any>} [props.containerProps] - Props that will be passed to the chart container\n * @param {forwardRef} forwardRef - A function that creates a higher order component that forwards the ref through the component tree.\n *\n * @returns {React.ForwardRefExoticComponent<ChartAnalyticsProps>} - The DHIS2 chart component with forward ref support.\n */\nexport const DHIS2Chart: React.ForwardRefExoticComponent<ChartAnalyticsProps> =\n\tforwardRef<HighchartsReact.RefObject, ChartAnalyticsProps>(\n\t\tChartAnalyticsComponent,\n\t);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Chart` instead\n * */\nexport const ChartAnalytics = DHIS2Chart;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAS,uBAAwB,CAAA;AAAA,EAChC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,EAAK,GAAA,MAAA,CAAO,CAAG,EAAA,GAAA,EAAK,CAAa,WAAA,CAAA,CAAA;AACvC,EAAM,MAAA,EAAE,KAAM,EAAA,GAAI,QAAS,CAAA,EAAE,IAAI,EAAG,CAAA,OAAA,EAAS,SAAW,EAAA,MAAA,EAAQ,CAAA;AAEhE,EAAA,IAAI,CAAC,KAAO,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAER,EACC,uBAAA,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACA,SAAS,EAAA,IAAA;AAAA,MACT,GAAK,EAAA,MAAA;AAAA,MACL,cAAgB,EAAA;AAAA,QACf,IAAI,EAAG,CAAA,OAAA;AAAA,QACP,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO,EAAA;AAAA,QACvC,GAAI,kBAAkB;AAAC,OACxB;AAAA,MACA,UAAY,EAAA,UAAA;AAAA,MACZ,OAAA,EAAS,EAAE,GAAG,KAAM;AAAA;AAAA,GACrB;AAEF;AAgBO,MAAM,UACZ,GAAA,UAAA;AAAA,EACC;AACD;AAKM,MAAM,cAAiB,GAAA","file":"DHIS2Chart.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport * as Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { forwardRef, type ForwardRefExoticComponent, useRef } from \"react\";\nimport { useChart } from \"./hooks/useChart.js\";\nimport \"./styles/custom-highchart.css\";\nimport \"highcharts/modules/exporting\";\nimport \"highcharts/modules/export-data\";\nimport \"highcharts/modules/full-screen\";\nimport \"highcharts/highcharts-more\";\nimport \"highcharts/modules/solid-gauge\";\nimport \"highcharts/modules/accessibility\";\nimport { ChartAnalyticsProps } from \"./types/props.js\";\n\nexport * from \"./services/export.js\";\nexport * from \"./types/props.js\";\nexport * from \"./components/DownloadMenu/index.js\";\n\nfunction ChartAnalyticsComponent({\n\tanalytics,\n\tconfig,\n\tcontainerProps,\n\tsetRef,\n}: ChartAnalyticsProps) {\n\tconst id = useRef(`${uid()}-chart-item`);\n\tconst { chart } = useChart({ id: id.current, analytics, config });\n\n\tif (!chart) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<HighchartsReact\n\t\t\timmutable\n\t\t\tref={setRef}\n\t\t\tcontainerProps={{\n\t\t\t\tid: id.current,\n\t\t\t\tstyle: { width: \"100%\", height: \"100%\" },\n\t\t\t\t...(containerProps ?? {}),\n\t\t\t}}\n\t\t\thighcharts={Highcharts}\n\t\t\toptions={{ ...chart }}\n\t\t/>\n\t);\n}\n\n/**\n * The `DHIS2Chart` component allows you to render a chart visualization from DHIS2 analytics data.\n * It accepts the DHIS2 analytics payload as well as configuration on how to visualize the data.\n *\n * @component\n *\n * @param {ChartAnalyticsProps} props\n * @param {Analytics} [props.analytics] - Analytics data from DHIS2\n * @param {ChartConfig} [props.config] - Visualization configuration. See stories for more information\n * @param {Record<string, any>} [props.containerProps] - Props that will be passed to the chart container\n * @param {forwardRef} forwardRef - A function that creates a higher order component that forwards the ref through the component tree.\n *\n * @returns {React.ForwardRefExoticComponent<ChartAnalyticsProps>} - The DHIS2 chart component with forward ref support.\n */\nexport const DHIS2Chart: ForwardRefExoticComponent<ChartAnalyticsProps> =\n\tforwardRef<HighchartsReact.RefObject, ChartAnalyticsProps>(\n\t\tChartAnalyticsComponent,\n\t);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Chart` instead\n * */\nexport const ChartAnalytics = DHIS2Chart;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":[],"mappings":";;;;;;AAaO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAM,MAAA,aAAA,GAAgB,OAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,YAAY,IAAM,EAAA;AACrB,MAAA,UAAA,CAAW,cAAc,OAAO,CAAA;AAAA,KAC1B,MAAA;AACN,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AAChB,GACD;AAEA,EAAA,MAAM,KAAQ,GAAA,QAAA;AAEd,EAAM,MAAA,WAAA,GAAc,CAAC,MAAmB,KAAA;AACvC,IAAA,IAAI,KAAO,EAAA;AACV,MAAA,QAAQ,MAAQ;AAAA,QACf,KAAK,KAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,UAAA;AAAA,QACD,KAAK,MAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,MAAM,CAAA;AAC7B,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,OAAA;AACJ,UAAA,aAAA,CAAc,OAAO,IAAI,CAAA;AACzB,UAAA;AAAA,QACD,KAAK,aAAA;AACJ,UAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA;AACF;AACD,GACD;AAEA,EAAA,uBAEE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UAAY,EAAA,GAAA,EAAK,eAC7B,QAAQ,EAAA,IAAA,oBAAA,GAAA,CAAC,cAAW,CACtB,EAAA,CAAA;AAAA,IACC,OACA,oBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,UAAA;AAAA,QACT;AAAA;AAAA;AACD,GAEF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconMore24 } from \"@dhis2/ui\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport React, { useRef, useState } from \"react\";\nimport {\n\tonCSVDownload,\n\tonFullScreenView,\n\tonImageDownload,\n\tonPDFDownload,\n\tonViewAsTable,\n} from \"../../services/export.js\";\nimport { ChartMenu } from \"./components/Menu.js\";\nimport { ChartExportMenuItem } from \"./interfaces/menu.js\";\n\nexport function ChartDownloadMenu({\n\tchartRef,\n\texclude,\n\ticon,\n}: {\n\tchartRef: HighchartsReact.RefObject | null;\n\texclude?: ChartExportMenuItem[];\n\ticon?: React.ReactNode;\n}) {\n\tconst menuButtonRef = useRef<HTMLDivElement | null>(null);\n\tconst [menuRef, setMenuRef] = useState<HTMLDivElement | null>(null);\n\tconst toggleMenu = () => {\n\t\tif (menuRef === null) {\n\t\t\tsetMenuRef(menuButtonRef.current);\n\t\t} else {\n\t\t\tsetMenuRef(null);\n\t\t}\n\t};\n\n\tconst chart = chartRef;\n\n\tconst onMenuClick = (action: string) => {\n\t\tif (chart) {\n\t\t\tswitch (action) {\n\t\t\t\tcase \"png\":\n\t\t\t\t\tonImageDownload(chart, \"png\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"jpeg\":\n\t\t\t\t\tonImageDownload(chart, \"jpeg\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"svg\":\n\t\t\t\t\tonImageDownload(chart, \"svg+xml\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"csv\":\n\t\t\t\t\tonCSVDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pdf\":\n\t\t\t\t\tonPDFDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"table\":\n\t\t\t\t\tonViewAsTable(chart, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"full-screen\":\n\t\t\t\t\tonFullScreenView(chart);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div onClick={toggleMenu} ref={menuButtonRef}>\n\t\t\t\t{icon ?? <IconMore24 />}\n\t\t\t</div>\n\t\t\t{menuRef && (\n\t\t\t\t<ChartMenu\n\t\t\t\t\texclude={exclude}\n\t\t\t\t\tonClick={onMenuClick}\n\t\t\t\t\tonClose={toggleMenu}\n\t\t\t\t\tmenuRef={menuRef}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":[],"mappings":";;;;;;AAaO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAM,MAAA,aAAA,GAAgB,OAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,YAAY,IAAM,EAAA;AACrB,MAAA,UAAA,CAAW,cAAc,OAAO,CAAA;AAAA,KAC1B,MAAA;AACN,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AAChB,GACD;AAEA,EAAA,MAAM,KAAQ,GAAA,QAAA;AAEd,EAAM,MAAA,WAAA,GAAc,CAAC,MAAmB,KAAA;AACvC,IAAA,IAAI,KAAO,EAAA;AACV,MAAA,QAAQ,MAAQ;AAAA,QACf,KAAK,KAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,UAAA;AAAA,QACD,KAAK,MAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,MAAM,CAAA;AAC7B,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,OAAA;AACJ,UAAA,aAAA,CAAc,OAAO,IAAI,CAAA;AACzB,UAAA;AAAA,QACD,KAAK,aAAA;AACJ,UAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA;AACF;AACD,GACD;AAEA,EAAA,uBAEE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UAAY,EAAA,GAAA,EAAK,eAC7B,QAAQ,EAAA,IAAA,oBAAA,GAAA,CAAC,cAAW,CACtB,EAAA,CAAA;AAAA,IACC,OACA,oBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,UAAA;AAAA,QACT;AAAA;AAAA;AACD,GAEF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconMore24 } from \"@dhis2/ui\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { type ReactNode, useRef, useState } from \"react\";\nimport {\n\tonCSVDownload,\n\tonFullScreenView,\n\tonImageDownload,\n\tonPDFDownload,\n\tonViewAsTable,\n} from \"../../services/export.js\";\nimport { ChartMenu } from \"./components/Menu.js\";\nimport { ChartExportMenuItem } from \"./interfaces/menu.js\";\n\nexport function ChartDownloadMenu({\n\tchartRef,\n\texclude,\n\ticon,\n}: {\n\tchartRef: HighchartsReact.RefObject | null;\n\texclude?: ChartExportMenuItem[];\n\ticon?: ReactNode;\n}) {\n\tconst menuButtonRef = useRef<HTMLDivElement | null>(null);\n\tconst [menuRef, setMenuRef] = useState<HTMLDivElement | null>(null);\n\tconst toggleMenu = () => {\n\t\tif (menuRef === null) {\n\t\t\tsetMenuRef(menuButtonRef.current);\n\t\t} else {\n\t\t\tsetMenuRef(null);\n\t\t}\n\t};\n\n\tconst chart = chartRef;\n\n\tconst onMenuClick = (action: string) => {\n\t\tif (chart) {\n\t\t\tswitch (action) {\n\t\t\t\tcase \"png\":\n\t\t\t\t\tonImageDownload(chart, \"png\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"jpeg\":\n\t\t\t\t\tonImageDownload(chart, \"jpeg\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"svg\":\n\t\t\t\t\tonImageDownload(chart, \"svg+xml\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"csv\":\n\t\t\t\t\tonCSVDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pdf\":\n\t\t\t\t\tonPDFDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"table\":\n\t\t\t\t\tonViewAsTable(chart, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"full-screen\":\n\t\t\t\t\tonFullScreenView(chart);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div onClick={toggleMenu} ref={menuButtonRef}>\n\t\t\t\t{icon ?? <IconMore24 />}\n\t\t\t</div>\n\t\t\t{menuRef && (\n\t\t\t\t<ChartMenu\n\t\t\t\t\texclude={exclude}\n\t\t\t\t\tonClick={onMenuClick}\n\t\t\t\t\tonClose={toggleMenu}\n\t\t\t\t\tmenuRef={menuRef}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":[],"mappings":";;;;;;AAOO,SAAS,0BAA2B,CAAA;AAAA,EAC1C,SAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAA+C,EAAA;AAC9C,EAAM,MAAA,6BAAA,GAAgC,QAAQ,MAAM;AACnD,IAAO,OAAA,KAAA,KAAU,SACd,KACA,GAAA,IAAA,CAAK,OAAQ,SAAa,IAAA,CAAA,KAAM,WAAe,IAAA,CAAA,CAAA,GAAM,GAAG,CAAA;AAAA,GACzD,EAAA,CAAC,SAAW,EAAA,WAAA,EAAa,KAAK,CAAC,CAAA;AAClC,EACC,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,eAAiB,EAAA,aAAA;AAAA,QACjB,KAAO,EAAA;AAAA,OACR;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,+BAAA;AAAA,QAAA;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,IAAM,EAAA;AAAA,cACL,MAAA,EAAQ,WAAa,EAAA,KAAA,IAAS,MAAO,CAAA;AAAA;AACtC,WACD;AAAA,UACA,WAAa,EAAA,CAAA;AAAA,UACb,KAAO,EAAA,6BAAA;AAAA,UAEP,QAAA,kBAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,KAAO,EAAA;AAAA,gBACN,GAAI,aAAa,EAAC;AAAA,gBAClB,UACC,SAAW,EAAA,QAAA,IAAY,OAAO,IAAS,KAAA,QAAA,GACpC,MAAO,IACP,GAAA,MAAA;AAAA,gBACJ,SAAW,EAAA;AAAA,eACZ;AAAA,cAEA,QAAA,kBAAA,IAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACA,KAAO,EAAA;AAAA,oBACN,KACC,EAAA,SAAA,EAAW,KACX,IAAA,WAAA,EAAa,SACb,MAAO,CAAA;AAAA,mBACT;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,6BAAA;AAAA,oBAA8B;AAAA;AAAA;AAAA;AAChC;AAAA;AACD;AAAA;AACD;AAAA,GACD;AAEF;AAEO,MAAM,yBAA4B,GAAA","file":"CircularProgressIndicator.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport React, { useMemo } from \"react\";\nimport { CircularProgressbarWithChildren } from \"react-circular-progressbar\";\nimport { CircularDashboardProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function CircularProgressVisualizer({\n\tnumerator,\n\tsize,\n\tdenominator,\n\tvalue,\n\ttextStyle,\n\tstrokeStyle,\n}: CircularDashboardProps): React.ReactElement {\n\tconst filledSectionFieldsPercentage = useMemo(() => {\n\t\treturn value !== undefined\n\t\t\t? value\n\t\t\t: Math.floor(((numerator ?? 0) / (denominator ?? 1)) * 100);\n\t}, [numerator, denominator, value]);\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\twidth: size,\n\t\t\t}}\n\t\t>\n\t\t\t<CircularProgressbarWithChildren\n\t\t\t\tstyles={{\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tstroke: strokeStyle?.color ?? colors.blue700,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tstrokeWidth={7}\n\t\t\t\tvalue={filledSectionFieldsPercentage}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...(textStyle ?? {}),\n\t\t\t\t\t\tfontSize:\n\t\t\t\t\t\t\ttextStyle?.fontSize ?? typeof size === \"number\"\n\t\t\t\t\t\t\t\t? 0.3 * (size as number)\n\t\t\t\t\t\t\t\t: \"100%\",\n\t\t\t\t\t\tmarginTop: -11,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<strong\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\ttextStyle?.color ??\n\t\t\t\t\t\t\t\tstrokeStyle?.color ??\n\t\t\t\t\t\t\t\tcolors.blue700,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{filledSectionFieldsPercentage}%\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t</CircularProgressbarWithChildren>\n\t\t</div>\n\t);\n}\n\nexport const CircularProgressDashboard = CircularProgressVisualizer;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":[],"mappings":";;;;;;AAOO,SAAS,0BAA2B,CAAA;AAAA,EAC1C,SAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAyC,EAAA;AACxC,EAAM,MAAA,6BAAA,GAAgC,QAAQ,MAAM;AACnD,IAAO,OAAA,KAAA,KAAU,SACd,KACA,GAAA,IAAA,CAAK,OAAQ,SAAa,IAAA,CAAA,KAAM,WAAe,IAAA,CAAA,CAAA,GAAM,GAAG,CAAA;AAAA,GACzD,EAAA,CAAC,SAAW,EAAA,WAAA,EAAa,KAAK,CAAC,CAAA;AAClC,EACC,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,eAAiB,EAAA,aAAA;AAAA,QACjB,KAAO,EAAA;AAAA,OACR;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,+BAAA;AAAA,QAAA;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,IAAM,EAAA;AAAA,cACL,MAAA,EAAQ,WAAa,EAAA,KAAA,IAAS,MAAO,CAAA;AAAA;AACtC,WACD;AAAA,UACA,WAAa,EAAA,CAAA;AAAA,UACb,KAAO,EAAA,6BAAA;AAAA,UAEP,QAAA,kBAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,KAAO,EAAA;AAAA,gBACN,GAAI,aAAa,EAAC;AAAA,gBAClB,UACE,SAAW,EAAA,QAAA,IAAY,OAAO,IAAS,KAAA,QAAA,GACrC,MAAO,IACP,GAAA,MAAA;AAAA,gBACJ,SAAW,EAAA;AAAA,eACZ;AAAA,cAEA,QAAA,kBAAA,IAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACA,KAAO,EAAA;AAAA,oBACN,KACC,EAAA,SAAA,EAAW,KACX,IAAA,WAAA,EAAa,SACb,MAAO,CAAA;AAAA,mBACT;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,6BAAA;AAAA,oBAA8B;AAAA;AAAA;AAAA;AAChC;AAAA;AACD;AAAA;AACD;AAAA,GACD;AAEF;AAEO,MAAM,yBAA4B,GAAA","file":"CircularProgressIndicator.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport { type ReactElement, useMemo } from \"react\";\nimport { CircularProgressbarWithChildren } from \"react-circular-progressbar\";\nimport { CircularDashboardProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function CircularProgressVisualizer({\n\tnumerator,\n\tsize,\n\tdenominator,\n\tvalue,\n\ttextStyle,\n\tstrokeStyle,\n}: CircularDashboardProps): ReactElement {\n\tconst filledSectionFieldsPercentage = useMemo(() => {\n\t\treturn value !== undefined\n\t\t\t? value\n\t\t\t: Math.floor(((numerator ?? 0) / (denominator ?? 1)) * 100);\n\t}, [numerator, denominator, value]);\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\twidth: size,\n\t\t\t}}\n\t\t>\n\t\t\t<CircularProgressbarWithChildren\n\t\t\t\tstyles={{\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tstroke: strokeStyle?.color ?? colors.blue700,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tstrokeWidth={7}\n\t\t\t\tvalue={filledSectionFieldsPercentage}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...(textStyle ?? {}),\n\t\t\t\t\t\tfontSize:\n\t\t\t\t\t\t\t(textStyle?.fontSize ?? typeof size === \"number\")\n\t\t\t\t\t\t\t\t? 0.3 * (size as number)\n\t\t\t\t\t\t\t\t: \"100%\",\n\t\t\t\t\t\tmarginTop: -11,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<strong\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\ttextStyle?.color ??\n\t\t\t\t\t\t\t\tstrokeStyle?.color ??\n\t\t\t\t\t\t\t\tcolors.blue700,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{filledSectionFieldsPercentage}%\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t</CircularProgressbarWithChildren>\n\t\t</div>\n\t);\n}\n\nexport const CircularProgressDashboard = CircularProgressVisualizer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DHIS2PivotTable/DHIS2PivotTable.tsx"],"names":[],"mappings":";;;;;;;;AA6BO,SAAS,eAAgB,CAAA;AAAA,EAC/B,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAyB,EAAA;AACxB,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IACd,MAAM,IAAI,qBAAA,CAAsB,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,GACnB;AAEA,EAAA,2BACE,6BAA8B,EAAA,EAAA,MAAA,EAC9B,QAAC,kBAAA,IAAA,CAAA,UAAA,EAAA,EAAW,QAAgB,UAC3B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,YAAa,EAAA,EAAA,CAAA;AAAA,wBACb,oBAAqB,EAAA,EAAA;AAAA,GAAA,EACvB,CACD,EAAA,CAAA;AAEF","file":"DHIS2PivotTable.js","sourcesContent":["import { Analytics, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { DHIS2PivotTableEngine, type EngineConfig } from \"./services/engine.js\";\nimport React, { useMemo } from \"react\";\nimport { DHIS2PivotTableEngineProvider } from \"./state/engine.js\";\nimport { PivotTable } from \"./components/Table\";\nimport { TableHeaders } from \"./components/TableHeaders\";\nimport { CustomPivotTableBody } from \"./components/TableBody\";\nimport { DataTableProps } from \"@dhis2/ui\";\n\nexport interface DHIS2PivotTableOptions {\n\tlegendSets?: LegendSet[];\n\thideEmptyColumns?: boolean;\n\thideEmptyRows?: boolean;\n\tshowRowTotals?: boolean;\n\tshowColumnTotals?: boolean;\n\tshowRowSubtotals?: boolean;\n\tshowColumnSubtotals?: boolean;\n\tfixColumnHeaders?: boolean;\n\tfixRowHeaders?: boolean;\n\tshowFilterAsTitle?: boolean;\n}\n\nexport interface DHIS2PivotTableProps {\n\tanalytics: Analytics;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n\tconfig: EngineConfig;\n}\n\nexport function DHIS2PivotTable({\n\tanalytics,\n\tconfig,\n\ttableProps,\n\tsetRef,\n}: DHIS2PivotTableProps) {\n\tconst engine = useMemo(\n\t\t() => new DHIS2PivotTableEngine({ analytics, config }),\n\t\t[analytics, config],\n\t);\n\n\treturn (\n\t\t<DHIS2PivotTableEngineProvider engine={engine}>\n\t\t\t<PivotTable setRef={setRef} tableProps={tableProps}>\n\t\t\t\t<TableHeaders />\n\t\t\t\t<CustomPivotTableBody />\n\t\t\t</PivotTable>\n\t\t</DHIS2PivotTableEngineProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/DHIS2PivotTable/DHIS2PivotTable.tsx"],"names":[],"mappings":";;;;;;;;AA6BO,SAAS,eAAgB,CAAA;AAAA,EAC/B,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAyB,EAAA;AACxB,EAAA,MAAM,MAAS,GAAA,OAAA;AAAA,IACd,MAAM,IAAI,qBAAA,CAAsB,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,GACnB;AAEA,EAAA,2BACE,6BAA8B,EAAA,EAAA,MAAA,EAC9B,QAAC,kBAAA,IAAA,CAAA,UAAA,EAAA,EAAW,QAAgB,UAC3B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,YAAa,EAAA,EAAA,CAAA;AAAA,wBACb,oBAAqB,EAAA,EAAA;AAAA,GAAA,EACvB,CACD,EAAA,CAAA;AAEF","file":"DHIS2PivotTable.js","sourcesContent":["import { Analytics, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { DHIS2PivotTableEngine, type EngineConfig } from \"./services/engine.js\";\nimport { useMemo } from \"react\";\nimport { DHIS2PivotTableEngineProvider } from \"./state/engine.js\";\nimport { PivotTable } from \"./components/Table\";\nimport { TableHeaders } from \"./components/TableHeaders\";\nimport { CustomPivotTableBody } from \"./components/TableBody\";\nimport { DataTableProps } from \"@dhis2/ui\";\n\nexport interface DHIS2PivotTableOptions {\n\tlegendSets?: LegendSet[];\n\thideEmptyColumns?: boolean;\n\thideEmptyRows?: boolean;\n\tshowRowTotals?: boolean;\n\tshowColumnTotals?: boolean;\n\tshowRowSubtotals?: boolean;\n\tshowColumnSubtotals?: boolean;\n\tfixColumnHeaders?: boolean;\n\tfixRowHeaders?: boolean;\n\tshowFilterAsTitle?: boolean;\n}\n\nexport interface DHIS2PivotTableProps {\n\tanalytics: Analytics;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n\tconfig: EngineConfig;\n}\n\nexport function DHIS2PivotTable({\n\tanalytics,\n\tconfig,\n\ttableProps,\n\tsetRef,\n}: DHIS2PivotTableProps) {\n\tconst engine = useMemo(\n\t\t() => new DHIS2PivotTableEngine({ analytics, config }),\n\t\t[analytics, config],\n\t);\n\n\treturn (\n\t\t<DHIS2PivotTableEngineProvider engine={engine}>\n\t\t\t<PivotTable setRef={setRef} tableProps={tableProps}>\n\t\t\t\t<TableHeaders />\n\t\t\t\t<CustomPivotTableBody />\n\t\t\t</PivotTable>\n\t\t</DHIS2PivotTableEngineProvider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/Table/index.tsx"],"names":[],"mappings":";;;AAWO,SAAS,UAAW,CAAA,EAAE,UAAY,EAAA,QAAA,EAAU,QAA2B,EAAA;AAC7E,EACC,uBAAA,GAAA,CAAA,QAAA,EAAA,EAGC,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA,EAAU,GAAK,EAAA,MAAA,EAAgB,GAAI,UAAc,IAAA,EAChD,EAAA,QAAA,EACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React from \"react\";\nimport { DataTable, DataTableProps } from \"@dhis2/ui\";\n\nexport type PivotTableLayoutProps = DataTableProps;\n\nexport interface PivotTableProps {\n\tchildren: React.ReactNode;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n}\n\nexport function PivotTable({ tableProps, children, setRef }: PivotTableProps) {\n\treturn (\n\t\t<>\n\t\t\t{/*\n// @ts-ignore */}\n\t\t\t<DataTable ref={setRef as any} {...(tableProps ?? {})}>\n\t\t\t\t{children}\n\t\t\t</DataTable>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/Table/index.tsx"],"names":[],"mappings":";;;AAWO,SAAS,UAAW,CAAA,EAAE,UAAY,EAAA,QAAA,EAAU,QAA2B,EAAA;AAC7E,EACC,uBAAA,GAAA,CAAA,QAAA,EAAA,EAGC,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA,EAAU,GAAK,EAAA,MAAA,EAAgB,GAAI,UAAc,IAAA,EAChD,EAAA,QAAA,EACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { DataTable, DataTableProps } from \"@dhis2/ui\";\nimport type { ReactNode } from \"react\";\n\nexport type PivotTableLayoutProps = DataTableProps;\n\nexport interface PivotTableProps {\n\tchildren: ReactNode;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n}\n\nexport function PivotTable({ tableProps, children, setRef }: PivotTableProps) {\n\treturn (\n\t\t<>\n\t\t\t{/*\n// @ts-ignore */}\n\t\t\t<DataTable ref={setRef as any} {...(tableProps ?? {})}>\n\t\t\t\t{children}\n\t\t\t</DataTable>\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces\";\nimport { useResizeObserver } from \"usehooks-ts\";\nimport { getTextColorFromBackgroundColor } from \"../../utils/color\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => {\n\t\t\t\tconst legend = engine?.getItemValueLegend(mapper);\n\n\t\t\t\treturn (\n\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? legend?.color\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\t\t\tlegend?.color,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: legend?.style === \"TEXT\"\n\t\t\t\t\t\t\t\t\t\t? legend.color\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tbordered\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t\t</DataTableCell>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport { Fragment, type ReactElement, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces\";\nimport { useResizeObserver } from \"usehooks-ts\";\nimport { getTextColorFromBackgroundColor } from \"../../utils/color\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => {\n\t\t\t\tconst legend = engine?.getItemValueLegend(mapper);\n\n\t\t\t\treturn (\n\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? legend?.color\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\t\t\tlegend?.color,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: legend?.style === \"TEXT\"\n\t\t\t\t\t\t\t\t\t\t? legend.color\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tbordered\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t\t</DataTableCell>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"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","file":"index.js","sourcesContent":["import { type ReactElement, useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/state/engine.tsx"],"names":[],"mappings":";;;AAGA,MAAM,4BAAA,GACL,cAA4C,IAAI,CAAA;AAE1C,SAAS,yBAA4B,GAAA;AAC3C,EAAA,OAAO,WAAW,4BAA4B,CAAA;AAC/C;AAEO,SAAS,6BAA8B,CAAA;AAAA,EAC7C,QAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,2BACE,4BAA6B,CAAA,QAAA,EAA7B,EAAsC,KAAA,EAAO,QAC5C,QACF,EAAA,CAAA;AAEF","file":"engine.js","sourcesContent":["import React, { createContext, ReactNode, useContext } from \"react\";\nimport { DHIS2PivotTableEngine } from \"../services/engine.js\";\n\nconst DHIS2PivotTableEngineContext =\n\tcreateContext<DHIS2PivotTableEngine | null>(null);\n\nexport function useCustomPivotTableEngine() {\n\treturn useContext(DHIS2PivotTableEngineContext);\n}\n\nexport function DHIS2PivotTableEngineProvider({\n\tchildren,\n\tengine,\n}: {\n\tchildren: ReactNode;\n\tengine: DHIS2PivotTableEngine;\n}) {\n\treturn (\n\t\t<DHIS2PivotTableEngineContext.Provider value={engine}>\n\t\t\t{children}\n\t\t</DHIS2PivotTableEngineContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/state/engine.tsx"],"names":[],"mappings":";;;AAGA,MAAM,4BAAA,GACL,cAA4C,IAAI,CAAA;AAE1C,SAAS,yBAA4B,GAAA;AAC3C,EAAA,OAAO,WAAW,4BAA4B,CAAA;AAC/C;AAEO,SAAS,6BAA8B,CAAA;AAAA,EAC7C,QAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,2BACE,4BAA6B,CAAA,QAAA,EAA7B,EAAsC,KAAA,EAAO,QAC5C,QACF,EAAA,CAAA;AAEF","file":"engine.js","sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { DHIS2PivotTableEngine } from \"../services/engine.js\";\n\nconst DHIS2PivotTableEngineContext =\n\tcreateContext<DHIS2PivotTableEngine | null>(null);\n\nexport function useCustomPivotTableEngine() {\n\treturn useContext(DHIS2PivotTableEngineContext);\n}\n\nexport function DHIS2PivotTableEngineProvider({\n\tchildren,\n\tengine,\n}: {\n\tchildren: ReactNode;\n\tengine: DHIS2PivotTableEngine;\n}) {\n\treturn (\n\t\t<DHIS2PivotTableEngineContext.Provider value={engine}>\n\t\t\t{children}\n\t\t</DHIS2PivotTableEngineContext.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":";;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GACD;AAEF,CAAA;AACO,MAAM,QAA+B,GAAA;AAKrC,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import React from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<MapProvider\n\t\t\tperiodSelection={periodSelection}\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t>\n\t\t\t<MapArea\n\t\t\t\tbase={{\n\t\t\t\t\t...base,\n\t\t\t\t}}\n\t\t\t\tlayers={{\n\t\t\t\t\tthematicLayers,\n\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t}}\n\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\tlegends={legends}\n\t\t\t\tcontrols={controls}\n\t\t\t\tkey={key}\n\t\t\t\tref={setRef}\n\t\t\t\tmapOptions={mapOptions}\n\t\t\t/>\n\t\t</MapProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":";;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GACD;AAEF,CAAA;AACO,MAAM,QAAyB,GAAA;AAK/B,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\nimport type { FC } from \"react\";\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<MapProvider\n\t\t\tperiodSelection={periodSelection}\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t>\n\t\t\t<MapArea\n\t\t\t\tbase={{\n\t\t\t\t\t...base,\n\t\t\t\t}}\n\t\t\t\tlayers={{\n\t\t\t\t\tthematicLayers,\n\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t}}\n\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\tlegends={legends}\n\t\t\t\tcontrols={controls}\n\t\t\t\tkey={key}\n\t\t\t\tref={setRef}\n\t\t\t\tmapOptions={mapOptions}\n\t\t\t/>\n\t\t</MapProvider>\n\t);\n};\nexport const DHIS2Map: FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/Name.tsx"],"names":[],"mappings":";;;;;;;AAMO,SAAS,IAAO,GAAA;AACtB,EAAA,MAAM,SAAS,OAAQ,EAAA;AACvB,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,cAAe,EAAA;AACpC,EAAA,SAAA,CAAU,MAAM;AACf,IAAS,QAAA,CAAA,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAC7B,IAAS,QAAA,CAAA,IAAA,EAAM,QAAQ,EAAE,CAAA;AAAA,GAC1B,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EACC,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,MAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAU,IAAK,CAAA,CAAA,CAAE,kBAAkB;AAAA,OACpC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,UAC1B,IAAK,EAAA,MAAA;AAAA,UACL,QAAQ,EAAA,IAAA;AAAA,UACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,UAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,UAClC,QAAU,EAAA,CAAC,EAAE,KAAA,EAAgC,KAAA;AAC5C,YAAA,IAAI,CAAC,KAAO,EAAA;AACZ,YAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,WACrB;AAAA,UACA,OAAO,KAAM,CAAA;AAAA;AAAA;AACd;AAAA,GAEF;AAEF","file":"Name.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport React, { useEffect } from \"react\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { InputField } from \"@dhis2/ui\";\nimport { useType } from \"../hooks/data.js\";\n\nexport function Name() {\n\tconst config = useType();\n\tconst { setValue } = useFormContext();\n\tuseEffect(() => {\n\t\tsetValue(\"name\", config?.name);\n\t\tsetValue(\"id\", config?.id);\n\t}, [config]);\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"name\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Name is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<InputField\n\t\t\t\t\tlabel={i18n.t(\"Layer name\")}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\trequired\n\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\tonChange={({ value }: { value?: string }) => {\n\t\t\t\t\t\tif (!value) return;\n\t\t\t\t\t\tfield.onChange(value);\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={field.value}\n\t\t\t\t/>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/Name.tsx"],"names":[],"mappings":";;;;;;;AAMO,SAAS,IAAO,GAAA;AACtB,EAAA,MAAM,SAAS,OAAQ,EAAA;AACvB,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,cAAe,EAAA;AACpC,EAAA,SAAA,CAAU,MAAM;AACf,IAAS,QAAA,CAAA,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAC7B,IAAS,QAAA,CAAA,IAAA,EAAM,QAAQ,EAAE,CAAA;AAAA,GAC1B,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EACC,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,MAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAU,IAAK,CAAA,CAAA,CAAE,kBAAkB;AAAA,OACpC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,UAC1B,IAAK,EAAA,MAAA;AAAA,UACL,QAAQ,EAAA,IAAA;AAAA,UACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,UAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,UAClC,QAAU,EAAA,CAAC,EAAE,KAAA,EAAgC,KAAA;AAC5C,YAAA,IAAI,CAAC,KAAO,EAAA;AACZ,YAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,WACrB;AAAA,UACA,OAAO,KAAM,CAAA;AAAA;AAAA;AACd;AAAA,GAEF;AAEF","file":"Name.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport { useEffect } from \"react\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { InputField } from \"@dhis2/ui\";\nimport { useType } from \"../hooks/data.js\";\n\nexport function Name() {\n\tconst config = useType();\n\tconst { setValue } = useFormContext();\n\tuseEffect(() => {\n\t\tsetValue(\"name\", config?.name);\n\t\tsetValue(\"id\", config?.id);\n\t}, [config]);\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"name\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Name is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<InputField\n\t\t\t\t\tlabel={i18n.t(\"Layer name\")}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\trequired\n\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\tonChange={({ value }: { value?: string }) => {\n\t\t\t\t\t\tif (!value) return;\n\t\t\t\t\t\tfield.onChange(value);\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={field.value}\n\t\t\t\t/>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.tsx"],"names":[],"mappings":";;;;;;;;AAYO,SAAS,cAAiB,GAAA;AAChC,EAAA,MAAM,SAAS,OAAQ,EAAA;AACvB,EAAA,MAAM,EAAE,QAAA,EAAU,SAAU,EAAA,GAAI,cAAe,EAAA;AAC/C,EAAM,MAAA,OAAA,GAAU,MAAQ,EAAA,OAAA,IAAW,EAAC;AACpC,EAAM,MAAA,eAAA,GAAkB,OAAQ,CAAA,QAAA,CAAS,QAAQ,CAAA;AACjD,EAAA,MAAM,EAAE,OAAS,EAAA,KAAA,EAAO,SAAY,GAAA,cAAA,CAAe,iBAAiB,MAAM,CAAA;AAC1E,EAAM,MAAA,aAAA,GAAgB,UAAU,gBAAgB,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,CAAC,OAAA,CAAQ,OAAO,CAAA,IAAK,CAAC,aAAe,EAAA;AACxC,MAAS,QAAA,CAAA,gBAAA,EAAkB,IAAK,CAAA,OAAO,CAAC,CAAA;AAAA;AACzC,GACD,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,eAAiB,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AAGR,EAAA,IAAI,KAAO,EAAA;AACV,IAAA,2BACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,QAAU,EAAA,MAAA,EAAQ,WAAW,GAAI,EAAA,EAC9C,8BAAC,MACA,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,OAAG,QAAO,EAAA,KAAA,EAAA,OAAA,IAAW,OAAO,QAAS,EAAA,EAAE,GACzC,CACD,EAAA,CAAA;AAAA;AAIF,EACC,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,gBAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAU,IAAK,CAAA,CAAA,CAAE,oBAAoB;AAAA,OACtC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,GAAA,EAAK,CAAE,EAAA,EAAG,WAAU,wBACjC,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,IAAA,EAAM,GACnB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACA,UAAU,IAAK,CAAA,CAAA;AAAA,cACd;AAAA,aACD;AAAA,YACA,OAAA;AAAA,YACA,UAAU,EAAA,IAAA;AAAA,YACV,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,QAAQ,CAAA;AAAA,YACtB,QAAQ,EAAA,IAAA;AAAA,YACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,YAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,YAClC,QAAA,EAAU,CAAC,EAAE,QAAA,OACZ,KAAM,CAAA,QAAA,CAAS,QAAS,CAAA,QAAQ,CAAC,CAAA;AAAA,YAElC,QAAA,EACC,SAAS,QAAS,CAAA,KAAA,CAAM,KAAK,CAC1B,GAAA,KAAA,CAAM,KAAO,EAAA,QAAA,EACb,GAAA,MAAA;AAAA,YAGH,QAAA,EAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MACd,qBAAA,GAAA;AAAA,cAAC,kBAAA;AAAA,cAAA;AAAA,gBAEA,KAAA,EAAO,OAAO,QAAS,EAAA;AAAA,gBACvB,KAAA,EAAO,OAAO,QAAS;AAAA,eAAA;AAAA,cAFlB,GAAG,MAAM,CAAA,OAAA;AAAA,aAIf;AAAA;AAAA,SAEH,EAAA,CAAA;AAAA,QACC,OAAW,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,UAAA,EAAU,IAAC,EAAA;AAAA,OACxC,EAAA;AAAA;AAAA,GAEF;AAEF","file":"PeriodSelector.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport React, { useEffect } from \"react\";\nimport { head, isEmpty } from \"lodash\";\nimport {\n\tCenter,\n\tCircularLoader,\n\tSingleSelectField,\n\tSingleSelectOption,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useDatasetInfo, useType } from \"../hooks/data.js\";\n\nexport function PeriodSelector() {\n\tconst config = useType();\n\tconst { setValue, getValues } = useFormContext();\n\tconst filters = config?.filters ?? [];\n\tconst hasPeriodFilter = filters.includes(\"period\");\n\tconst { loading, error, periods } = useDatasetInfo(hasPeriodFilter, config);\n\tconst initialPeriod = getValues(\"filters.period\");\n\n\tuseEffect(() => {\n\t\tif (!isEmpty(periods) && !initialPeriod) {\n\t\t\tsetValue(\"filters.period\", head(periods));\n\t\t}\n\t}, [periods]);\n\n\tif (!hasPeriodFilter) {\n\t\treturn null;\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ minWidth: \"100%\", minHeight: 100 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<p>{error?.message ?? error?.toString()}</p>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"filters.period\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Period is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<div style={{ gap: 4 }} className=\"row align-items-center\">\n\t\t\t\t\t<div style={{ flex: 1 }}>\n\t\t\t\t\t\t<SingleSelectField\n\t\t\t\t\t\t\thelpText={i18n.t(\n\t\t\t\t\t\t\t\t\"Available periods are set by the source data\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tfilterable\n\t\t\t\t\t\t\tlabel={i18n.t(\"Period\")}\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\t\t\tonChange={({ selected }: { selected: string }) =>\n\t\t\t\t\t\t\t\tfield.onChange(parseInt(selected))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\t\tperiods?.includes(field.value)\n\t\t\t\t\t\t\t\t\t? field.value?.toString()\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{periods?.map((period: number) => (\n\t\t\t\t\t\t\t\t<SingleSelectOption\n\t\t\t\t\t\t\t\t\tkey={`${period}-option`}\n\t\t\t\t\t\t\t\t\tvalue={period.toString()}\n\t\t\t\t\t\t\t\t\tlabel={period.toString()}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</SingleSelectField>\n\t\t\t\t\t</div>\n\t\t\t\t\t{loading && <CircularLoader extrasmall />}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.tsx"],"names":[],"mappings":";;;;;;;;AAYO,SAAS,cAAiB,GAAA;AAChC,EAAA,MAAM,SAAS,OAAQ,EAAA;AACvB,EAAA,MAAM,EAAE,QAAA,EAAU,SAAU,EAAA,GAAI,cAAe,EAAA;AAC/C,EAAM,MAAA,OAAA,GAAU,MAAQ,EAAA,OAAA,IAAW,EAAC;AACpC,EAAM,MAAA,eAAA,GAAkB,OAAQ,CAAA,QAAA,CAAS,QAAQ,CAAA;AACjD,EAAA,MAAM,EAAE,OAAS,EAAA,KAAA,EAAO,SAAY,GAAA,cAAA,CAAe,iBAAiB,MAAM,CAAA;AAC1E,EAAM,MAAA,aAAA,GAAgB,UAAU,gBAAgB,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,IAAI,CAAC,OAAA,CAAQ,OAAO,CAAA,IAAK,CAAC,aAAe,EAAA;AACxC,MAAS,QAAA,CAAA,gBAAA,EAAkB,IAAK,CAAA,OAAO,CAAC,CAAA;AAAA;AACzC,GACD,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,eAAiB,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AAGR,EAAA,IAAI,KAAO,EAAA;AACV,IAAA,2BACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,QAAU,EAAA,MAAA,EAAQ,WAAW,GAAI,EAAA,EAC9C,8BAAC,MACA,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,OAAG,QAAO,EAAA,KAAA,EAAA,OAAA,IAAW,OAAO,QAAS,EAAA,EAAE,GACzC,CACD,EAAA,CAAA;AAAA;AAIF,EACC,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,gBAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAU,IAAK,CAAA,CAAA,CAAE,oBAAoB;AAAA,OACtC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,GAAA,EAAK,CAAE,EAAA,EAAG,WAAU,wBACjC,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,IAAA,EAAM,GACnB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACA,UAAU,IAAK,CAAA,CAAA;AAAA,cACd;AAAA,aACD;AAAA,YACA,OAAA;AAAA,YACA,UAAU,EAAA,IAAA;AAAA,YACV,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,QAAQ,CAAA;AAAA,YACtB,QAAQ,EAAA,IAAA;AAAA,YACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,YAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,YAClC,QAAA,EAAU,CAAC,EAAE,QAAA,OACZ,KAAM,CAAA,QAAA,CAAS,QAAS,CAAA,QAAQ,CAAC,CAAA;AAAA,YAElC,QAAA,EACC,SAAS,QAAS,CAAA,KAAA,CAAM,KAAK,CAC1B,GAAA,KAAA,CAAM,KAAO,EAAA,QAAA,EACb,GAAA,MAAA;AAAA,YAGH,QAAA,EAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MACd,qBAAA,GAAA;AAAA,cAAC,kBAAA;AAAA,cAAA;AAAA,gBAEA,KAAA,EAAO,OAAO,QAAS,EAAA;AAAA,gBACvB,KAAA,EAAO,OAAO,QAAS;AAAA,eAAA;AAAA,cAFlB,GAAG,MAAM,CAAA,OAAA;AAAA,aAIf;AAAA;AAAA,SAEH,EAAA,CAAA;AAAA,QACC,OAAW,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,UAAA,EAAU,IAAC,EAAA;AAAA,OACxC,EAAA;AAAA;AAAA,GAEF;AAEF","file":"PeriodSelector.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport { useEffect } from \"react\";\nimport { head, isEmpty } from \"lodash\";\nimport {\n\tCenter,\n\tCircularLoader,\n\tSingleSelectField,\n\tSingleSelectOption,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useDatasetInfo, useType } from \"../hooks/data.js\";\n\nexport function PeriodSelector() {\n\tconst config = useType();\n\tconst { setValue, getValues } = useFormContext();\n\tconst filters = config?.filters ?? [];\n\tconst hasPeriodFilter = filters.includes(\"period\");\n\tconst { loading, error, periods } = useDatasetInfo(hasPeriodFilter, config);\n\tconst initialPeriod = getValues(\"filters.period\");\n\n\tuseEffect(() => {\n\t\tif (!isEmpty(periods) && !initialPeriod) {\n\t\t\tsetValue(\"filters.period\", head(periods));\n\t\t}\n\t}, [periods]);\n\n\tif (!hasPeriodFilter) {\n\t\treturn null;\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ minWidth: \"100%\", minHeight: 100 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<p>{error?.message ?? error?.toString()}</p>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"filters.period\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Period is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<div style={{ gap: 4 }} className=\"row align-items-center\">\n\t\t\t\t\t<div style={{ flex: 1 }}>\n\t\t\t\t\t\t<SingleSelectField\n\t\t\t\t\t\t\thelpText={i18n.t(\n\t\t\t\t\t\t\t\t\"Available periods are set by the source data\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tfilterable\n\t\t\t\t\t\t\tlabel={i18n.t(\"Period\")}\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\t\t\tonChange={({ selected }: { selected: string }) =>\n\t\t\t\t\t\t\t\tfield.onChange(parseInt(selected))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\t\tperiods?.includes(field.value)\n\t\t\t\t\t\t\t\t\t? field.value?.toString()\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{periods?.map((period: number) => (\n\t\t\t\t\t\t\t\t<SingleSelectOption\n\t\t\t\t\t\t\t\t\tkey={`${period}-option`}\n\t\t\t\t\t\t\t\t\tvalue={period.toString()}\n\t\t\t\t\t\t\t\t\tlabel={period.toString()}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</SingleSelectField>\n\t\t\t\t\t</div>\n\t\t\t\t\t{loading && <CircularLoader extrasmall />}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\nimport { MapPeriodTitle } from \"../MapTitle\";\n\nfunction MapLayerArea({\n\tid,\n\tbase = { enabled: true },\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl?: string;\n\t\tattribution?: string;\n\t\tenabled?: boolean;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t{base?.enabled && (\n\t\t\t\t<TileLayer\n\t\t\t\t\tid={id}\n\t\t\t\t\tattribution={\n\t\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t\t'&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | &copy; <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t\t}\n\t\t\t\t\turl={\n\t\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tshowPeriodTitle,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<>\n\t\t\t\t\t{showPeriodTitle && <MapPeriodTitle />}\n\t\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t\t<MapLayersProvider\n\t\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\t\tlayers={layers}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MapLayersProvider>\n\t\t\t\t</>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport { forwardRef, type Ref, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\nimport { MapPeriodTitle } from \"../MapTitle\";\n\nfunction MapLayerArea({\n\tid,\n\tbase = { enabled: true },\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl?: string;\n\t\tattribution?: string;\n\t\tenabled?: boolean;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t{base?.enabled && (\n\t\t\t\t<TileLayer\n\t\t\t\t\tid={id}\n\t\t\t\t\tattribution={\n\t\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t\t'&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | &copy; <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t\t}\n\t\t\t\t\turl={\n\t\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tshowPeriodTitle,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<>\n\t\t\t\t\t{showPeriodTitle && <MapPeriodTitle />}\n\t\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t\t<MapLayersProvider\n\t\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\t\tlayers={layers}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MapLayersProvider>\n\t\t\t\t</>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
@@ -6,9 +6,20 @@ const POSITION_CLASSES = {
6
6
  topleft: "leaflet-top leaflet-left",
7
7
  topright: "leaflet-top leaflet-right"
8
8
  };
9
- function CustomControl({ children, position, ...options }) {
9
+ function CustomControl({
10
+ children,
11
+ position,
12
+ ...options
13
+ }) {
10
14
  const positionClass = position && POSITION_CLASSES[position] || POSITION_CLASSES.topright;
11
- return /* @__PURE__ */ jsx("div", { ...options, className: `${positionClass}`, children: /* @__PURE__ */ jsx("div", { style: { overflow: "hidden", border: "none" }, className: "leaflet-control leaflet-bar", children }) });
15
+ return /* @__PURE__ */ jsx("div", { ...options, className: `${positionClass}`, children: /* @__PURE__ */ jsx(
16
+ "div",
17
+ {
18
+ style: { overflow: "hidden", border: "none" },
19
+ className: "leaflet-control leaflet-bar",
20
+ children
21
+ }
22
+ ) });
12
23
  }
13
24
 
14
25
  export { CustomControl };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapControls/components/CustomControl/index.tsx"],"names":[],"mappings":";;AAGA,MAAM,gBAAmB,GAAA;AAAA,EACxB,UAAY,EAAA,6BAAA;AAAA,EACZ,WAAa,EAAA,8BAAA;AAAA,EACb,OAAS,EAAA,0BAAA;AAAA,EACT,QAAU,EAAA;AACX,CAAA;AAMO,SAAS,cAAc,EAAE,QAAA,EAAU,QAAU,EAAA,GAAG,SAAiC,EAAA;AACtF,EAAA,MAAM,aAAiB,GAAA,QAAA,IAAY,gBAAiB,CAAA,QAAQ,KAAM,gBAAiB,CAAA,QAAA;AACnF,EACE,uBAAA,GAAA,CAAC,SAAK,GAAG,OAAA,EAAS,WAAW,CAAG,EAAA,aAAa,IAC3C,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAI,OAAO,EAAE,QAAA,EAAU,UAAU,MAAQ,EAAA,MAAA,IAAU,SAAU,EAAA,6BAAA,EAC3D,UACH,CACF,EAAA,CAAA;AAEJ","file":"index.js","sourcesContent":["import { ControlOptions } from \"leaflet\";\nimport React from \"react\";\n\nconst POSITION_CLASSES = {\n\tbottomleft: \"leaflet-bottom leaflet-left\",\n\tbottomright: \"leaflet-bottom leaflet-right\",\n\ttopleft: \"leaflet-top leaflet-left\",\n\ttopright: \"leaflet-top leaflet-right\",\n};\n\ninterface CustomControlOptions extends ControlOptions {\n children: React.ReactNode;\n}\n\nexport function CustomControl({ children, position, ...options }: CustomControlOptions) {\n const positionClass = (position && POSITION_CLASSES[position]) || POSITION_CLASSES.topright;\n return (\n <div {...options} className={`${positionClass}`}>\n <div style={{ overflow: \"hidden\", border: \"none\" }} className=\"leaflet-control leaflet-bar\">\n {children}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapControls/components/CustomControl/index.tsx"],"names":[],"mappings":";;AAGA,MAAM,gBAAmB,GAAA;AAAA,EACxB,UAAY,EAAA,6BAAA;AAAA,EACZ,WAAa,EAAA,8BAAA;AAAA,EACb,OAAS,EAAA,0BAAA;AAAA,EACT,QAAU,EAAA;AACX,CAAA;AAMO,SAAS,aAAc,CAAA;AAAA,EAC7B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAyB,EAAA;AACxB,EAAA,MAAM,aACJ,GAAA,QAAA,IAAY,gBAAiB,CAAA,QAAQ,KAAM,gBAAiB,CAAA,QAAA;AAC9D,EAAA,2BACE,KAAK,EAAA,EAAA,GAAG,SAAS,SAAW,EAAA,CAAA,EAAG,aAAa,CAC5C,CAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA,EAAE,QAAU,EAAA,QAAA,EAAU,QAAQ,MAAO,EAAA;AAAA,MAC5C,SAAU,EAAA,6BAAA;AAAA,MAET;AAAA;AAAA,GAEH,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { ControlOptions } from \"leaflet\";\nimport { type ReactNode } from \"react\";\n\nconst POSITION_CLASSES = {\n\tbottomleft: \"leaflet-bottom leaflet-left\",\n\tbottomright: \"leaflet-bottom leaflet-right\",\n\ttopleft: \"leaflet-top leaflet-left\",\n\ttopright: \"leaflet-top leaflet-right\",\n};\n\ninterface CustomControlOptions extends ControlOptions {\n\tchildren: ReactNode;\n}\n\nexport function CustomControl({\n\tchildren,\n\tposition,\n\t...options\n}: CustomControlOptions) {\n\tconst positionClass =\n\t\t(position && POSITION_CLASSES[position]) || POSITION_CLASSES.topright;\n\treturn (\n\t\t<div {...options} className={`${positionClass}`}>\n\t\t\t<div\n\t\t\t\tstyle={{ overflow: \"hidden\", border: \"none\" }}\n\t\t\t\tclassName=\"leaflet-control leaflet-bar\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapControls/components/FullscreenControl/index.tsx"],"names":[],"mappings":";;;;;AAKA,MAAM,oBAEF,sBAAuB,CAAA,CAAC,UAAW,OAAgB,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACxE,IAAO,yBAAQ,GAAA","file":"index.js","sourcesContent":["import { createControlComponent } from \"@react-leaflet/core\";\nimport { control, type ControlOptions } from \"leaflet\";\nimport \"leaflet.fullscreen\";\nimport \"leaflet.fullscreen/Control.FullScreen.css\";\n\nconst FullscreenControl: React.ForwardRefExoticComponent<\n\tControlOptions & React.RefAttributes<any>\n> = createControlComponent((props) => (control as any).fullscreen(props));\nexport default FullscreenControl;\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapControls/components/FullscreenControl/index.tsx"],"names":[],"mappings":";;;;;AAMA,MAAM,oBAEF,sBAAuB,CAAA,CAAC,UAAW,OAAgB,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACxE,IAAO,yBAAQ,GAAA","file":"index.js","sourcesContent":["import { createControlComponent } from \"@react-leaflet/core\";\nimport { control, type ControlOptions } from \"leaflet\";\nimport \"leaflet.fullscreen\";\nimport \"leaflet.fullscreen/Control.FullScreen.css\";\nimport type { ForwardRefExoticComponent, RefAttributes } from \"react\";\n\nconst FullscreenControl: ForwardRefExoticComponent<\n\tControlOptions & RefAttributes<any>\n> = createControlComponent((props) => (control as any).fullscreen(props));\nexport default FullscreenControl;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx"],"names":["min","max"],"mappings":"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","file":"EarthEngineLegend.js","sourcesContent":["import React, { forwardRef } from \"react\";\nimport LegendCardHeader from \"../../LegendArea/components/LegendCardHeader/index.js\";\nimport { CustomGoogleEngineLayer } from \"../../../interfaces/index.js\";\nimport { Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { isEmpty } from \"lodash\";\n\nexport function LegendItem({\n\tlegend,\n}: {\n\tlegend: { min: number; max: number; color: string; name?: string };\n}) {\n\treturn (\n\t\t<div className=\"legend-item\">\n\t\t\t<div\n\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\tstyle={{ backgroundColor: legend.color }}\n\t\t\t/>\n\t\t\t{legend.name ? (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.name}`}</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.min} - ${legend.max}`}</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction getLegendsFromParams(params?: {\n\tmin: number;\n\tmax: number;\n\tpalette: string | string[];\n}) {\n\tif (!params) return [];\n\n\tconst { palette, min, max } = params;\n\tconst sanitizedPalette = Array.isArray(palette)\n\t\t? palette\n\t\t: palette.split(\",\");\n\tconst classes = sanitizedPalette.length;\n\tconst difference = max - min;\n\tconst interval = Math.round(difference / classes);\n\tconst legends = [];\n\tfor (let i = 0; i < classes; i++) {\n\t\tconst min = i * interval;\n\t\tconst max = min + interval;\n\n\t\tconst name = i === classes - 1 ? `> ${min}` : undefined;\n\n\t\tlegends.push({\n\t\t\tid: sanitizedPalette[i],\n\t\t\tcolor: sanitizedPalette[i],\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tname,\n\t\t});\n\t}\n\n\treturn legends;\n}\n\nfunction EarthEngineLegend(\n\t{\n\t\tlayer,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tname,\n\t}: {\n\t\tlayer: CustomGoogleEngineLayer;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tname: string;\n\t},\n\tref: React.LegacyRef<HTMLDivElement>,\n) {\n\tconst { options } = layer;\n\tconst legends =\n\t\toptions?.legend?.items ?? getLegendsFromParams(options?.params);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ maxWidth: 200, alignItems: \"start\", gap: 8 }}\n\t\t\tclassName=\"legend-card\"\n\t\t\tref={ref}\n\t\t>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={name}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<p style={{ margin: 0 }}>{options?.description ?? \"\"}</p>\n\t\t\t{!isEmpty(legends) && <b>{options?.unit ?? \"\"}</b>}\n\t\t\t<div className=\"legend-list\">\n\t\t\t\t{legends?.map((legend: any) => (\n\t\t\t\t\t<LegendItem\n\t\t\t\t\t\tkey={`${legend?.color}-legend-list`}\n\t\t\t\t\t\tlegend={legend}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{options?.source && (\n\t\t\t\t<div className=\"row gap-8\">\n\t\t\t\t\t{i18n.t(\"Source\")}:\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName=\"source-url\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\treferrerPolicy=\"no-referrer\"\n\t\t\t\t\t\thref={options?.sourceUrl}\n\t\t\t\t\t>\n\t\t\t\t\t\t{options?.source ?? \"\"}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(EarthEngineLegend);\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx"],"names":["min","max"],"mappings":";;;;;;;AAOO,SAAS,UAAW,CAAA;AAAA,EAC1B;AACD,CAEG,EAAA;AACF,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAU,EAAA,mBAAA;AAAA,QACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,CAAO,KAAM;AAAA;AAAA,KACxC;AAAA,IACC,MAAA,CAAO,uBACN,GAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,IAAI,CAAA,CAAA,EAAG,oBAEpD,GAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,GAAG,CAAA,GAAA,EAAM,MAAO,CAAA,GAAG,CAAG,CAAA,EAAA;AAAA,GAEtE,EAAA,CAAA;AAEF;AAEA,SAAS,qBAAqB,MAI3B,EAAA;AACF,EAAI,IAAA,CAAC,MAAQ,EAAA,OAAO,EAAC;AAErB,EAAA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA;AAC9B,EAAM,MAAA,gBAAA,GAAmB,MAAM,OAAQ,CAAA,OAAO,IAC3C,OACA,GAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACpB,EAAA,MAAM,UAAU,gBAAiB,CAAA,MAAA;AACjC,EAAA,MAAM,aAAa,GAAM,GAAA,GAAA;AACzB,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,KAAM,CAAA,UAAA,GAAa,OAAO,CAAA;AAChD,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AACjC,IAAA,MAAMA,OAAM,CAAI,GAAA,QAAA;AAChB,IAAA,MAAMC,OAAMD,IAAM,GAAA,QAAA;AAElB,IAAA,MAAM,OAAO,CAAM,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,EAAA,EAAKA,IAAG,CAAK,CAAA,GAAA,MAAA;AAE9C,IAAA,OAAA,CAAQ,IAAK,CAAA;AAAA,MACZ,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAAA,MACzB,GAAAA,EAAAA,IAAAA;AAAA,MACA,GAAAC,EAAAA,IAAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA;AAGF,EAAO,OAAA,OAAA;AACR;AAEA,SAAS,iBACR,CAAA;AAAA,EACC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAMA,GACC,EAAA;AACD,EAAM,MAAA,EAAE,SAAY,GAAA,KAAA;AACpB,EAAA,MAAM,UACL,OAAS,EAAA,MAAA,EAAQ,KAAS,IAAA,oBAAA,CAAqB,SAAS,MAAM,CAAA;AAE/D,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,QAAA,EAAU,KAAK,UAAY,EAAA,OAAA,EAAS,KAAK,CAAE,EAAA;AAAA,MACpD,SAAU,EAAA,aAAA;AAAA,MACV,GAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,WAAA;AAAA,YACA;AAAA;AAAA,SACD;AAAA,wBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,wBACtB,GAAA,CAAC,OAAE,KAAO,EAAA,EAAE,QAAQ,CAAE,EAAA,EAAI,QAAS,EAAA,OAAA,EAAA,WAAA,IAAe,EAAG,EAAA,CAAA;AAAA,QACpD,CAAC,QAAQ,OAAO,CAAA,wBAAM,GAAG,EAAA,EAAA,QAAA,EAAA,OAAA,EAAS,QAAQ,EAAG,EAAA,CAAA;AAAA,4BAC7C,KAAI,EAAA,EAAA,SAAA,EAAU,eACb,QAAS,EAAA,OAAA,EAAA,GAAA,CAAI,CAAC,MACd,qBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEA;AAAA,WAAA;AAAA,UADK,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,SAGtB,CACF,EAAA,CAAA;AAAA,QACC,OAAS,EAAA,MAAA,oBACR,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,WACb,EAAA,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,EAAE,QAAQ,CAAA;AAAA,UAAE,GAAA;AAAA,0BAClB,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACA,SAAU,EAAA,YAAA;AAAA,cACV,MAAO,EAAA,QAAA;AAAA,cACP,cAAe,EAAA,aAAA;AAAA,cACf,MAAM,OAAS,EAAA,SAAA;AAAA,cAEd,mBAAS,MAAU,IAAA;AAAA;AAAA;AACrB,SACD,EAAA;AAAA;AAAA;AAAA,GAEF;AAEF;AAEO,IAAA,yBAAA,GAAQ,WAAW,iBAAiB","file":"EarthEngineLegend.js","sourcesContent":["import { forwardRef, type LegacyRef } from \"react\";\nimport LegendCardHeader from \"../../LegendArea/components/LegendCardHeader/index.js\";\nimport { CustomGoogleEngineLayer } from \"../../../interfaces/index.js\";\nimport { Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { isEmpty } from \"lodash\";\n\nexport function LegendItem({\n\tlegend,\n}: {\n\tlegend: { min: number; max: number; color: string; name?: string };\n}) {\n\treturn (\n\t\t<div className=\"legend-item\">\n\t\t\t<div\n\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\tstyle={{ backgroundColor: legend.color }}\n\t\t\t/>\n\t\t\t{legend.name ? (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.name}`}</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.min} - ${legend.max}`}</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction getLegendsFromParams(params?: {\n\tmin: number;\n\tmax: number;\n\tpalette: string | string[];\n}) {\n\tif (!params) return [];\n\n\tconst { palette, min, max } = params;\n\tconst sanitizedPalette = Array.isArray(palette)\n\t\t? palette\n\t\t: palette.split(\",\");\n\tconst classes = sanitizedPalette.length;\n\tconst difference = max - min;\n\tconst interval = Math.round(difference / classes);\n\tconst legends = [];\n\tfor (let i = 0; i < classes; i++) {\n\t\tconst min = i * interval;\n\t\tconst max = min + interval;\n\n\t\tconst name = i === classes - 1 ? `> ${min}` : undefined;\n\n\t\tlegends.push({\n\t\t\tid: sanitizedPalette[i],\n\t\t\tcolor: sanitizedPalette[i],\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tname,\n\t\t});\n\t}\n\n\treturn legends;\n}\n\nfunction EarthEngineLegend(\n\t{\n\t\tlayer,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tname,\n\t}: {\n\t\tlayer: CustomGoogleEngineLayer;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tname: string;\n\t},\n\tref: LegacyRef<HTMLDivElement>,\n) {\n\tconst { options } = layer;\n\tconst legends =\n\t\toptions?.legend?.items ?? getLegendsFromParams(options?.params);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ maxWidth: 200, alignItems: \"start\", gap: 8 }}\n\t\t\tclassName=\"legend-card\"\n\t\t\tref={ref}\n\t\t>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={name}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<p style={{ margin: 0 }}>{options?.description ?? \"\"}</p>\n\t\t\t{!isEmpty(legends) && <b>{options?.unit ?? \"\"}</b>}\n\t\t\t<div className=\"legend-list\">\n\t\t\t\t{legends?.map((legend: any) => (\n\t\t\t\t\t<LegendItem\n\t\t\t\t\t\tkey={`${legend?.color}-legend-list`}\n\t\t\t\t\t\tlegend={legend}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{options?.source && (\n\t\t\t\t<div className=\"row gap-8\">\n\t\t\t\t\t{i18n.t(\"Source\")}:\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName=\"source-url\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\treferrerPolicy=\"no-referrer\"\n\t\t\t\t\t\thref={options?.sourceUrl}\n\t\t\t\t\t>\n\t\t\t\t\t\t{options?.source ?? \"\"}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(EarthEngineLegend);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAoBA,SAAS,aAAa,KAAuB,EAAA;AAC5C,EAAA,OAAO,KAAK,YAAa,CAAA,OAAA,EAAS,EAAE,qBAAuB,EAAA,CAAA,EAAG,CAAE,CAAA,MAAA;AAAA,IAC/D;AAAA,GACD;AACD;AAEA,SAAS,QAAQ,IAAe,EAAA;AAC/B,EAAA,IAAI,SAAS,YAAc,EAAA;AAC1B,IAAO,OAAA,GAAA;AAAA;AAET;AAEA,SAAS,MAAO,CAAA;AAAA,EACf,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,SAAS,IAAK,CAAA,OAAA,EAAS,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAE3C,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,yBACd,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,WACd,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAU,EAAA,mBAAA;AAAA,UACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,EAAQ,KAAM;AAAA;AAAA,OACzC;AAAA,sBACA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,MAAA,EAAQ,IAAK,EAAA;AAAA,KACpB,EAAA,CAAA;AAAA,yBACC,MACC,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MAClB,QAAQ,IAAI;AAAA,KACd,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEA,SAAS,eAAgB,CAAA,EAAE,MAAQ,EAAA,KAAA,EAA4C,EAAA;AAC9E,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,mBACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,MAAO,CAAA,QAAA,EAAU,CAAE,EAAA,CAAA;AAAA,oBACpC,GAAA,CAAA,MAAA,EAAA,EAAM,QAAa,EAAA,YAAA,CAAA,KAAK,CAAE,EAAA;AAAA,GAC5B,EAAA,CAAA;AAEF;AAEA,SAAS,gBAAiB,CAAA;AAAA,EACzB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,SAAS,KAAO,EAAA,MAAA;AACtB,EAAA,MAAM,OAAU,GAAA,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,MAAQ,EAAA,KAAA;AAChD,EAAA,MAAM,IAAO,GAAA,MAAA,EAAQ,cAAe,CAAA,OAAO,CAAG,EAAA,IAAA;AAC9C,EAAM,MAAA,IAAA,GACL,OAAO,MAAQ,EAAA,OAAA,EAAS,QACxB,IAAK,CAAA,KAAA,EAAO,MAAQ,EAAA,OAAA,CAAQ,YAAY,CAAA;AAEzC,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AAClC,IAAI,IAAA,CAAC,OAAQ,CAAA,OAAO,CAAG,EAAA;AACtB,MAAO,OAAA,MAAA;AAAA,QACN,MAAA,CAAO,KAAK,IAAQ,IAAA,EAAE,CAAE,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AACpC,UAAO,OAAA;AAAA,YACN,EAAA,EAAI,SAAS,GAAG,CAAA;AAAA,YAChB,KAAA,EAAO,KAAK,GAAG;AAAA,WAChB;AAAA,SACA,CAAA;AAAA,QACD,CAAC,OAAO;AAAA,QACP,OAAQ,EAAA;AAAA;AAEX,IAAA,OAAO,QAAQ,EAAC;AAAA,GACjB,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,2BACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,KAAA,EAAO,KAAK,MAAQ,EAAA,GAAA,EACjC,EAAA,QAAA,kBAAA,GAAA,CAAC,UACA,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA,EAAe,UAAU,EAAA,IAAA,EAAC,GAC5B,CACD,EAAA,CAAA;AAAA;AAIF,EAAA,IAAI,KAAO,EAAA;AACV,IAAA,4BACE,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAG,KAAO,EAAA,EAAE,QAAQ,GAAI,EAAA,EAAI,kBAAQ,IAAK,EAAA,CAAA;AAAA,sBAC1C,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,sBACtB,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,cACd,EAAA,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,QACd,EAAA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA,CAAA;AAAA,0BACxB,GAAA,CAAA,KAAA,EAAA,EAAK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA;AAAA,SAC5B,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,QACd,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAG,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,8BAA8B,CAAE,EAAA,CAAA;AAAA,0BAC3C,GAAA,CAAC,OAAG,QAAM,EAAA,KAAA,EAAA;AAAA,SACX,EAAA;AAAA,OACD,EAAA;AAAA,KACD,EAAA,CAAA;AAAA;AAIF,EAAA,4BACE,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAG,KAAO,EAAA,EAAE,QAAQ,GAAI,EAAA,EAAI,kBAAQ,IAAK,EAAA,CAAA;AAAA,oBAC1C,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACtB,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,cACd,EAAA,QAAA,EAAA;AAAA,sBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,QACd,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA,CAAA;AAAA,wBACxB,GAAA,CAAA,KAAA,EAAA,EAAK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,QAAQ,IAAK,EAAA;AAAA,OACpC,EAAA,CAAA;AAAA,MACC,IACA,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,UACb,QAAM,EAAA,KAAA,CAAA,OAAA,CAAQ,YAAY,CAAA,GACxB,cAAc,GAAI,CAAA,CAAC,EAAE,EAAA,EAAI,OACzB,qBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEA,OAAA,EAAS,WAAW,EAAC;AAAA,UACrB,KAAA;AAAA,UACA,MAAQ,EAAA,EAAA;AAAA,UACR;AAAA,SAAA;AAAA,QAJK,CAAG,EAAA,OAAA,CAAQ,EAAE,CAAA,gBAAA,EAAmB,EAAE,CAAA;AAAA,OAMxC,IACA,MAAO,CAAA,IAAA,CAAK,YAAY,CAAG,EAAA,GAAA,CAAI,CAAC,GAChC,qBAAA,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UAEA,MAAQ,EAAA,GAAA;AAAA,UACR,KAAA,EAAO,aAAa,GAAG;AAAA,SAAA;AAAA,QAFlB,CAAG,EAAA,OAAA,CAAQ,EAAE,CAAA,mBAAA,EAAsB,GAAG,CAAA;AAAA,OAI5C,CACJ,EAAA;AAAA,KAEF,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEA,SAAS,eAAgB,CAAA;AAAA,EACxB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,MAAM,MAAY,EAAA;AAExB,EACC,uBAAA,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAM,IAAK,CAAA,OAAA;AAAA,MACX,WAAW,EAAA,IAAA;AAAA,MACX,aAAe,EAAA;AAAA,QACd,SAAW,EAAA,CAAC,CAAM,KAAA,gBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAU,EAAA,CAAC,CAAM,KAAA,cAAA,CAAe,GAAG,YAAY;AAAA,OAChD;AAAA,MAEA,WAAa,EAAA,YAAA;AAAA,MAEb,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,OAAA,EAAA,EAAS,eAAK,IAAK,EAAA,CAAA;AAAA,wBACpB,GAAA,CAAC,KAAM,EAAA,EAAA,QAAA,EAAU,GAChB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA;AAAA,YACA,OAAS,EAAA,IAAA;AAAA,YACT;AAAA;AAAA,SAEF,EAAA;AAAA;AAAA,KAAA;AAAA,IAXK,CAAA,EAAG,KAAK,EAAE,CAAA,QAAA;AAAA,GAYhB;AAEF;AAEe,SAAR,iBAAA,CAAmC,EAAE,OAAA,EAAgC,EAAA;AAC3E,EAAM,MAAA,KAAA,GAAQ,qBAAqB,OAAO,CAAA;AAC1C,EAAM,MAAA,EAAE,MAAM,IAAM,EAAA,OAAA,EAAS,KAAK,OAAS,EAAA,MAAA,EAAW,GAAA,KAAA,IAAS,EAAC;AAChE,EAAA,MAAM,EAAE,SAAA,EAAW,oBAAsB,EAAA,KAAA,EAAU,GAAA,QAAA;AAAA,IAClD,CAAC,MAAM,CAAA;AAAA,IACP,YAAY,QAAQ,eAAgB,EAAA;AAAA,IACpC;AAAA,MACC,QAAU,EAAA;AAAA;AACX,GACD;AACA,EAAA,MAAM,WAAW,eAAgB,EAAA;AAEjC,EAAI,IAAA,CAAC,KAAY,OAAA,IAAA;AAEjB,EACC,uBAAA,GAAA;AAAA,IAAC,aAAc,CAAA,OAAA;AAAA,IAAd;AAAA,MACA,OAAS,EAAA,OAAA;AAAA,MACT,IAAA,EAAM,IAAQ,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MAE7B,+BAAC,UACA,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,EAAA,EAAI,OAAS,EAAA,EAAA,EAAI,GAAU,EAAA,CAAA;AAAA,QACrC,QAAA,EAAU,GAAI,CAAA,CAAC,IAAqB,KAAA;AACpC,UACC,uBAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACA,KAAA,EACE,OAAe,QAAS,EAAA;AAAA,cAE1B,OAAS,EAAA,oBAAA;AAAA,cAET,IAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAFK,CAAA,EAAG,KAAK,EAAE,CAAA,QAAA;AAAA,WAGhB;AAAA,SAED;AAAA,OACF,EAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAoBA,SAAS,aAAa,KAAuB,EAAA;AAC5C,EAAA,OAAO,KAAK,YAAa,CAAA,OAAA,EAAS,EAAE,qBAAuB,EAAA,CAAA,EAAG,CAAE,CAAA,MAAA;AAAA,IAC/D;AAAA,GACD;AACD;AAEA,SAAS,QAAQ,IAAe,EAAA;AAC/B,EAAA,IAAI,SAAS,YAAc,EAAA;AAC1B,IAAO,OAAA,GAAA;AAAA;AAET;AAEA,SAAS,MAAO,CAAA;AAAA,EACf,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,SAAS,IAAK,CAAA,OAAA,EAAS,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAE3C,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,yBACd,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,WACd,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAU,EAAA,mBAAA;AAAA,UACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,EAAQ,KAAM;AAAA;AAAA,OACzC;AAAA,sBACA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,MAAA,EAAQ,IAAK,EAAA;AAAA,KACpB,EAAA,CAAA;AAAA,yBACC,MACC,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MAClB,QAAQ,IAAI;AAAA,KACd,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEA,SAAS,eAAgB,CAAA,EAAE,MAAQ,EAAA,KAAA,EAA4C,EAAA;AAC9E,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,mBACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,UAAA,CAAW,MAAO,CAAA,QAAA,EAAU,CAAE,EAAA,CAAA;AAAA,oBACpC,GAAA,CAAA,MAAA,EAAA,EAAM,QAAa,EAAA,YAAA,CAAA,KAAK,CAAE,EAAA;AAAA,GAC5B,EAAA,CAAA;AAEF;AAEA,SAAS,gBAAiB,CAAA;AAAA,EACzB,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,SAAS,KAAO,EAAA,MAAA;AACtB,EAAA,MAAM,OAAU,GAAA,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,MAAQ,EAAA,KAAA;AAChD,EAAA,MAAM,IAAO,GAAA,MAAA,EAAQ,cAAe,CAAA,OAAO,CAAG,EAAA,IAAA;AAC9C,EAAM,MAAA,IAAA,GACL,OAAO,MAAQ,EAAA,OAAA,EAAS,QACxB,IAAK,CAAA,KAAA,EAAO,MAAQ,EAAA,OAAA,CAAQ,YAAY,CAAA;AAEzC,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AAClC,IAAI,IAAA,CAAC,OAAQ,CAAA,OAAO,CAAG,EAAA;AACtB,MAAO,OAAA,MAAA;AAAA,QACN,MAAA,CAAO,KAAK,IAAQ,IAAA,EAAE,CAAE,CAAA,GAAA,CAAI,CAAC,GAAQ,KAAA;AACpC,UAAO,OAAA;AAAA,YACN,EAAA,EAAI,SAAS,GAAG,CAAA;AAAA,YAChB,KAAA,EAAO,KAAK,GAAG;AAAA,WAChB;AAAA,SACA,CAAA;AAAA,QACD,CAAC,OAAO;AAAA,QACP,OAAQ,EAAA;AAAA;AAEX,IAAA,OAAO,QAAQ,EAAC;AAAA,GACjB,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,IAAI,OAAS,EAAA;AACZ,IAAA,2BACE,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,KAAA,EAAO,KAAK,MAAQ,EAAA,GAAA,EACjC,EAAA,QAAA,kBAAA,GAAA,CAAC,UACA,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA,EAAe,UAAU,EAAA,IAAA,EAAC,GAC5B,CACD,EAAA,CAAA;AAAA;AAIF,EAAA,IAAI,KAAO,EAAA;AACV,IAAA,4BACE,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAG,KAAO,EAAA,EAAE,QAAQ,GAAI,EAAA,EAAI,kBAAQ,IAAK,EAAA,CAAA;AAAA,sBAC1C,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,sBACtB,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,cACd,EAAA,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,QACd,EAAA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA,CAAA;AAAA,0BACxB,GAAA,CAAA,KAAA,EAAA,EAAK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA;AAAA,SAC5B,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,QACd,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAG,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,8BAA8B,CAAE,EAAA,CAAA;AAAA,0BAC3C,GAAA,CAAC,OAAG,QAAM,EAAA,KAAA,EAAA;AAAA,SACX,EAAA;AAAA,OACD,EAAA;AAAA,KACD,EAAA,CAAA;AAAA;AAIF,EAAA,4BACE,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAG,KAAO,EAAA,EAAE,QAAQ,GAAI,EAAA,EAAI,kBAAQ,IAAK,EAAA,CAAA;AAAA,oBAC1C,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACtB,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,cACd,EAAA,QAAA,EAAA;AAAA,sBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,QACd,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAK,EAAA,CAAA;AAAA,wBACxB,GAAA,CAAA,KAAA,EAAA,EAAK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,QAAQ,IAAK,EAAA;AAAA,OACpC,EAAA,CAAA;AAAA,MACC,IACA,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,UACb,QAAM,EAAA,KAAA,CAAA,OAAA,CAAQ,YAAY,CAAA,GACxB,cAAc,GAAI,CAAA,CAAC,EAAE,EAAA,EAAI,OACzB,qBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEA,OAAA,EAAS,WAAW,EAAC;AAAA,UACrB,KAAA;AAAA,UACA,MAAQ,EAAA,EAAA;AAAA,UACR;AAAA,SAAA;AAAA,QAJK,CAAG,EAAA,OAAA,CAAQ,EAAE,CAAA,gBAAA,EAAmB,EAAE,CAAA;AAAA,OAMxC,IACA,MAAO,CAAA,IAAA,CAAK,YAAY,CAAG,EAAA,GAAA,CAAI,CAAC,GAChC,qBAAA,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UAEA,MAAQ,EAAA,GAAA;AAAA,UACR,KAAA,EAAO,aAAa,GAAG;AAAA,SAAA;AAAA,QAFlB,CAAG,EAAA,OAAA,CAAQ,EAAE,CAAA,mBAAA,EAAsB,GAAG,CAAA;AAAA,OAI5C,CACJ,EAAA;AAAA,KAEF,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEA,SAAS,eAAgB,CAAA;AAAA,EACxB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAKG,EAAA;AACF,EAAA,MAAM,MAAM,MAAY,EAAA;AAExB,EACC,uBAAA,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAM,IAAK,CAAA,OAAA;AAAA,MACX,WAAW,EAAA,IAAA;AAAA,MACX,aAAe,EAAA;AAAA,QACd,SAAW,EAAA,CAAC,CAAM,KAAA,gBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAU,EAAA,CAAC,CAAM,KAAA,cAAA,CAAe,GAAG,YAAY;AAAA,OAChD;AAAA,MAEA,WAAa,EAAA,YAAA;AAAA,MAEb,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,OAAA,EAAA,EAAS,eAAK,IAAK,EAAA,CAAA;AAAA,wBACpB,GAAA,CAAC,KAAM,EAAA,EAAA,QAAA,EAAU,GAChB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA;AAAA,YACA,OAAS,EAAA,IAAA;AAAA,YACT;AAAA;AAAA,SAEF,EAAA;AAAA;AAAA,KAAA;AAAA,IAXK,CAAA,EAAG,KAAK,EAAE,CAAA,QAAA;AAAA,GAYhB;AAEF;AAEe,SAAR,iBAAA,CAAmC,EAAE,OAAA,EAAgC,EAAA;AAC3E,EAAM,MAAA,KAAA,GAAQ,qBAAqB,OAAO,CAAA;AAC1C,EAAM,MAAA,EAAE,MAAM,IAAM,EAAA,OAAA,EAAS,KAAK,OAAS,EAAA,MAAA,EAAW,GAAA,KAAA,IAAS,EAAC;AAChE,EAAA,MAAM,EAAE,SAAA,EAAW,oBAAsB,EAAA,KAAA,EAAU,GAAA,QAAA;AAAA,IAClD,CAAC,MAAM,CAAA;AAAA,IACP,YAAY,QAAQ,eAAgB,EAAA;AAAA,IACpC;AAAA,MACC,QAAU,EAAA;AAAA;AACX,GACD;AACA,EAAA,MAAM,WAAW,eAAgB,EAAA;AAEjC,EAAI,IAAA,CAAC,KAAY,OAAA,IAAA;AAEjB,EACC,uBAAA,GAAA;AAAA,IAAC,aAAc,CAAA,OAAA;AAAA,IAAd;AAAA,MACA,OAAS,EAAA,OAAA;AAAA,MACT,IAAA,EAAM,IAAQ,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MAE7B,+BAAC,UACA,EAAA,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,EAAA,EAAI,OAAS,EAAA,EAAA,EAAI,GAAU,EAAA,CAAA;AAAA,QACrC,QAAA,EAAU,GAAI,CAAA,CAAC,IAAqB,KAAA;AACpC,UACC,uBAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACA,KAAA,EACE,OAAe,QAAS,EAAA;AAAA,cAE1B,OAAS,EAAA,oBAAA;AAAA,cAET,IAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAFK,CAAA,EAAG,KAAK,EAAE,CAAA,QAAA;AAAA,WAGhB;AAAA,SAED;AAAA,OACF,EAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { IconLegend24, Portal, Popper, colors } from '@dhis2/ui';
3
3
  import { compact, head } from 'lodash';
4
- import React, { useState, useRef, useEffect } from 'react';
4
+ import { useState, Children, cloneElement, useRef, useEffect } from 'react';
5
5
  import { CustomControl } from '../../../MapControls/components/CustomControl';
6
6
  import { SUPPORTED_EARTH_ENGINE_LAYERS } from '../../interfaces/index.js';
7
7
  import PointLegend from '../PointLayer/components/PointLegend/index.js';
@@ -149,11 +149,11 @@ function Legend({
149
149
  setCollapsed((prevState) => !prevState);
150
150
  }
151
151
  };
152
- const name = head(React.Children.toArray(children))?.props.name;
152
+ const name = head(Children.toArray(children))?.props.name;
153
153
  const shouldCollapse = collapsed && !inPrintMode;
154
- return /* @__PURE__ */ jsx("div", { className: "w-100", children: shouldCollapse ? /* @__PURE__ */ jsx(CollapsedLegendIcon, { name, onCollapse }) : React.Children.map(
154
+ return /* @__PURE__ */ jsx("div", { className: "w-100", children: shouldCollapse ? /* @__PURE__ */ jsx(CollapsedLegendIcon, { name, onCollapse }) : Children.map(
155
155
  children,
156
- (child) => React.cloneElement(child, { collapsible, onCollapse })
156
+ (child) => cloneElement(child, { collapsible, onCollapse })
157
157
  ) });
158
158
  }
159
159
  function LegendArea({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: React.ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(React.Children.toArray(children) as React.ReactElement[])\n\t\t?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tReact.Children.map(children, (child) =>\n\t\t\t\t\tReact.cloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 16,\n\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport {\n\tChildren,\n\tcloneElement,\n\ttype ReactElement,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(Children.toArray(children) as ReactElement[])?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tChildren.map(children, (child) =>\n\t\t\t\t\tcloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 16,\n\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx"],"names":["name"],"mappings":"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","file":"index.js","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport { Divider } from \"@dhis2/ui\";\nimport React, { forwardRef } from \"react\";\nimport { getIconUrl } from \"../../../../../../utils/helpers.js\";\nimport LegendCardHeader from \"../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { usePointLayer } from \"../../hooks/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nfunction PointLegends({\n\torgUnitGroups,\n\ticon,\n\tlabel,\n}: {\n\torgUnitGroups: { name: string; symbol: string }[];\n\ticon?: string;\n\tlabel?: string;\n}) {\n\tconst { baseUrl } = useConfig();\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tminWidth: 100,\n\t\t\t\talignItems: \"flex-start\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tpadding: 8,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t}}\n\t\t>\n\t\t\t{icon && (\n\t\t\t\t<div\n\t\t\t\t\tkey={`${icon}-legend`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\theight={20}\n\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\tsrc={getIconUrl(icon, { baseUrl })}\n\t\t\t\t\t/>\n\t\t\t\t\t<p>{label}</p>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{orgUnitGroups.map(({ name, symbol }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`${name}-legend`}\n\t\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\t\tsrc={getIconUrl(symbol ?? \"\", { baseUrl })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p>{name}</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nfunction PointLegend(\n\t{ collapsible, onCollapse }: any,\n\tref: React.LegacyRef<HTMLDivElement>,\n) {\n\tconst pointLayer = usePointLayer();\n\tconst { label, style } = pointLayer ?? {};\n\n\treturn (\n\t\t<div ref={ref} className=\"legend-card\">\n\t\t\t<LegendCardHeader\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\ttitle={label ?? i18n.t(\"Points\")}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<PointLegends\n\t\t\t\tlabel={label}\n\t\t\t\torgUnitGroups={style?.orgUnitGroups ?? []}\n\t\t\t\ticon={style?.icon}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(PointLegend);\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx"],"names":["name"],"mappings":"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","file":"index.js","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport { Divider } from \"@dhis2/ui\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport { getIconUrl } from \"../../../../../../utils/helpers.js\";\nimport LegendCardHeader from \"../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { usePointLayer } from \"../../hooks/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nfunction PointLegends({\n\torgUnitGroups,\n\ticon,\n\tlabel,\n}: {\n\torgUnitGroups: { name: string; symbol: string }[];\n\ticon?: string;\n\tlabel?: string;\n}) {\n\tconst { baseUrl } = useConfig();\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tminWidth: 100,\n\t\t\t\talignItems: \"flex-start\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tpadding: 8,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t}}\n\t\t>\n\t\t\t{icon && (\n\t\t\t\t<div\n\t\t\t\t\tkey={`${icon}-legend`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\theight={20}\n\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\tsrc={getIconUrl(icon, { baseUrl })}\n\t\t\t\t\t/>\n\t\t\t\t\t<p>{label}</p>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{orgUnitGroups.map(({ name, symbol }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`${name}-legend`}\n\t\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\t\tsrc={getIconUrl(symbol ?? \"\", { baseUrl })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p>{name}</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nfunction PointLegend(\n\t{ collapsible, onCollapse }: any,\n\tref: LegacyRef<HTMLDivElement>,\n) {\n\tconst pointLayer = usePointLayer();\n\tconst { label, style } = pointLayer ?? {};\n\n\treturn (\n\t\t<div ref={ref} className=\"legend-card\">\n\t\t\t<LegendCardHeader\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\ttitle={label ?? i18n.t(\"Points\")}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<PointLegends\n\t\t\t\tlabel={label}\n\t\t\t\torgUnitGroups={style?.orgUnitGroups ?? []}\n\t\t\t\ticon={style?.icon}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(PointLegend);\n"]}