@hisptz/dhis2-analytics 2.1.24 → 2.1.25

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 (132) 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.map +1 -1
  27. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  28. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
  29. package/dist/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
  30. package/dist/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
  31. package/dist/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
  32. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
  33. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
  34. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  35. package/dist/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
  36. package/dist/components/Visualization/components/LayoutProvider/index.js.map +1 -1
  37. package/dist/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
  38. package/dist/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
  39. package/dist/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
  40. package/dist/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
  41. package/dist/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
  42. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
  43. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -1
  44. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -1
  45. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -1
  46. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js.map +1 -1
  47. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
  48. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
  49. package/dist/esm/components/DHIS2PivotTable/state/engine.js.map +1 -1
  50. package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
  51. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -1
  52. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -1
  53. package/dist/esm/components/Map/components/MapArea/index.js.map +1 -1
  54. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js +13 -2
  55. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -1
  56. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -1
  57. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -1
  58. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
  59. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +4 -4
  60. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
  61. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
  62. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -1
  63. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -1
  64. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
  65. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  66. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  67. package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -1
  68. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  69. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
  70. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
  71. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
  72. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
  73. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
  74. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
  75. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  76. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
  77. package/dist/esm/components/Visualization/components/LayoutProvider/index.js.map +1 -1
  78. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
  79. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
  80. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
  81. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
  82. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
  83. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts +3 -3
  84. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts.map +1 -1
  85. package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts +2 -2
  86. package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts.map +1 -1
  87. package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts +2 -2
  88. package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts.map +1 -1
  89. package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts +2 -2
  90. package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts.map +1 -1
  91. package/dist/types/components/DHIS2PivotTable/state/engine.d.ts.map +1 -1
  92. package/dist/types/components/Map/DHIS2Map.d.ts +3 -3
  93. package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
  94. package/dist/types/components/Map/components/MapArea/index.d.ts +1 -2
  95. package/dist/types/components/Map/components/MapArea/index.d.ts.map +1 -1
  96. package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts +2 -2
  97. package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts.map +1 -1
  98. package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts +2 -1
  99. package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts.map +1 -1
  100. package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts +2 -3
  101. package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts.map +1 -1
  102. package/dist/types/components/Map/components/MapLayer/components/LegendArea/index.d.ts.map +1 -1
  103. package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts +1 -2
  104. package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts.map +1 -1
  105. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts +1 -2
  106. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts.map +1 -1
  107. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts +2 -3
  108. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts.map +1 -1
  109. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +2 -3
  110. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts.map +1 -1
  111. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +2 -2
  112. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
  113. package/dist/types/components/Map/components/MapProvider/index.d.ts.map +1 -1
  114. package/dist/types/components/Map/interfaces/index.d.ts +2 -2
  115. package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
  116. package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts +2 -2
  117. package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts.map +1 -1
  118. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts +2 -2
  119. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts.map +1 -1
  120. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts +2 -2
  121. package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts.map +1 -1
  122. package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts +2 -2
  123. package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts.map +1 -1
  124. package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts +4 -4
  125. package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts.map +1 -1
  126. package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts +3 -3
  127. package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts.map +1 -1
  128. package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts +2 -2
  129. package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts.map +1 -1
  130. package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts +6 -6
  131. package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts.map +1 -1
  132. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.tsx"],"names":[],"mappings":";;;;;;AAUA,SAAS,YACR,CAAA;AAAA,EACC,MAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EASA,GACC,EAAA;AACD,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,UAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACtB,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,kBACd,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAS,QAAQ,OAAQ,EAAA;AAAA,QACzB,YAAY,MAAO,CAAA,GAAA;AAAA,QACnB,WAAW,MAAO,CAAA,GAAA;AAAA,QAClB,KAAO,EAAA;AAAA;AAAA,KAET,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEO,IAAA,oBAAA,GAAQ,WAAW,YAAY","file":"index.js","sourcesContent":["import { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React, { forwardRef } from \"react\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../../interfaces/index.js\";\nimport LegendCardHeader from \"../../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport Bubbles from \"./components/Bubbles.js\";\n\nfunction BubbleLegend(\n\t{\n\t\tradius,\n\t\tdataItem,\n\t\tdata,\n\t\tname,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tradius: { min: number; max: number };\n\t\tdataItem: ThematicLayerDataItem;\n\t\tdata: ThematicLayerData[];\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: React.LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"legend-list pt-8\">\n\t\t\t\t<Bubbles\n\t\t\t\t\tclasses={legends.reverse()}\n\t\t\t\t\tradiusHigh={radius.max}\n\t\t\t\t\tradiusLow={radius.min}\n\t\t\t\t\tcolor={\"#FF0000\"}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(BubbleLegend);\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.tsx"],"names":[],"mappings":";;;;;;AAUA,SAAS,YACR,CAAA;AAAA,EACC,MAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EASA,GACC,EAAA;AACD,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,UAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACtB,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,kBACd,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAS,QAAQ,OAAQ,EAAA;AAAA,QACzB,YAAY,MAAO,CAAA,GAAA;AAAA,QACnB,WAAW,MAAO,CAAA,GAAA;AAAA,QAClB,KAAO,EAAA;AAAA;AAAA,KAET,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEO,IAAA,oBAAA,GAAQ,WAAW,YAAY","file":"index.js","sourcesContent":["import { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../../interfaces/index.js\";\nimport LegendCardHeader from \"../../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport Bubbles from \"./components/Bubbles.js\";\n\nfunction BubbleLegend(\n\t{\n\t\tradius,\n\t\tdataItem,\n\t\tdata,\n\t\tname,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tradius: { min: number; max: number };\n\t\tdataItem: ThematicLayerDataItem;\n\t\tdata: ThematicLayerData[];\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"legend-list pt-8\">\n\t\t\t\t<Bubbles\n\t\t\t\t\tclasses={legends.reverse()}\n\t\t\t\t\tradiusHigh={radius.max}\n\t\t\t\t\tradiusLow={radius.min}\n\t\t\t\t\tcolor={\"#FF0000\"}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(BubbleLegend);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx"],"names":[],"mappings":";;;;;;;;AAqBA,MAAM,YAAe,GAAA;AAAA,EACpB,MAAQ,EAAA;AACT,CAAA;AACA,MAAM,cAAiB,GAAA;AAAA,EACtB,MAAQ,EAAA;AACT,CAAA;AAQe,SAAR,MAAwB,CAAA;AAAA,EAC9B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACD,CAOG,EAAA;AACF,EAAA,MAAM,EAAE,OAAS,EAAA,IAAA,EAAM,KAAM,EAAA,GAAI,QAAQ,EAAC;AAE1C,EAAA,MAAM,gBAAgB,OAAQ,CAAA,OAAA;AAC9B,EAAA,MAAM,SAAS,OAAQ,CAAA,aAAa,CAAE,CAAA,SAAA,GAAY,SAAU,EAAA;AAE5D,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AAClC,IAAA,OAAA,CAAS,KAAS,IAAA,CAAA,KAAM,MAAQ,EAAA,GAAA,IAAO,EAAO,CAAA,GAAA,WAAA;AAAA,GAC5C,EAAA,CAAC,MAAQ,EAAA,IAAA,EAAM,WAAW,CAAC,CAAA;AAE9B,EAAA,uBAEE,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACA,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,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAM,KAAA;AACjB,UAAA,IAAI,YAAc,EAAA;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA;AACrB;AACD,OACD;AAAA,MACA,WAAa,EAAA;AAAA,QACZ,SAAW,EAAA,qBAAA,CAAsB,OAAS,EAAA,IAAA,CAAK,IAAI,CAAA;AAAA,QACnD,WAAa,EAAA,CAAA;AAAA,QACb,OAAO,MAAO,CAAA,OAAA;AAAA,QACd,MAAQ,EAAA;AAAA,OACT;AAAA,MACA,MAAQ,EAAA,YAAA;AAAA,MACR,MAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,iBAAc,IAAY,EAAA;AAAA;AAAA,GAE7B,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport {\n\tgeoJSON,\n\ttype LeafletEventHandlerFnMap,\n\ttype LeafletMouseEvent,\n} from \"leaflet\";\nimport React, { useMemo } from \"react\";\nimport { CircleMarker } from \"react-leaflet\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces/index.js\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { MapOrgUnit } from \"../../../../../../interfaces/index.js\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Bubble({\n\tdata,\n\thighestData,\n\tlegends,\n\tradius,\n\tcustomEventHandlers,\n\tonLayerClick,\n}: {\n\tdata: ThematicLayerData;\n\thighestData: number;\n\tlegends: Legend[];\n\tradius?: { min: number; max: number };\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n}) {\n\tconst { orgUnit, data: value } = data ?? {};\n\n\tconst geoJSONObject = orgUnit.geoJSON;\n\tconst center = geoJSON(geoJSONObject).getBounds().getCenter();\n\n\tconst circleRadius = useMemo(() => {\n\t\treturn ((value ?? 0) * (radius?.max ?? 50)) / highestData;\n\t}, [radius, data, highestData]);\n\n\treturn (\n\t\t<>\n\t\t\t<CircleMarker\n\t\t\t\tinteractive\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: getColorFromLegendSet(legends, data.data),\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tradius={circleRadius}\n\t\t\t\tcenter={center}\n\t\t\t>\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</CircleMarker>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx"],"names":[],"mappings":";;;;;;;;AAqBA,MAAM,YAAe,GAAA;AAAA,EACpB,MAAQ,EAAA;AACT,CAAA;AACA,MAAM,cAAiB,GAAA;AAAA,EACtB,MAAQ,EAAA;AACT,CAAA;AAQe,SAAR,MAAwB,CAAA;AAAA,EAC9B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACD,CAOG,EAAA;AACF,EAAA,MAAM,EAAE,OAAS,EAAA,IAAA,EAAM,KAAM,EAAA,GAAI,QAAQ,EAAC;AAE1C,EAAA,MAAM,gBAAgB,OAAQ,CAAA,OAAA;AAC9B,EAAA,MAAM,SAAS,OAAQ,CAAA,aAAa,CAAE,CAAA,SAAA,GAAY,SAAU,EAAA;AAE5D,EAAM,MAAA,YAAA,GAAe,QAAQ,MAAM;AAClC,IAAA,OAAA,CAAS,KAAS,IAAA,CAAA,KAAM,MAAQ,EAAA,GAAA,IAAO,EAAO,CAAA,GAAA,WAAA;AAAA,GAC5C,EAAA,CAAC,MAAQ,EAAA,IAAA,EAAM,WAAW,CAAC,CAAA;AAE9B,EAAA,uBAEE,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACA,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,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAM,KAAA;AACjB,UAAA,IAAI,YAAc,EAAA;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA;AACrB;AACD,OACD;AAAA,MACA,WAAa,EAAA;AAAA,QACZ,SAAW,EAAA,qBAAA,CAAsB,OAAS,EAAA,IAAA,CAAK,IAAI,CAAA;AAAA,QACnD,WAAa,EAAA,CAAA;AAAA,QACb,OAAO,MAAO,CAAA,OAAA;AAAA,QACd,MAAQ,EAAA;AAAA,OACT;AAAA,MACA,MAAQ,EAAA,YAAA;AAAA,MACR,MAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,iBAAc,IAAY,EAAA;AAAA;AAAA,GAE7B,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport {\n\tgeoJSON,\n\ttype LeafletEventHandlerFnMap,\n\ttype LeafletMouseEvent,\n} from \"leaflet\";\nimport { useMemo } from \"react\";\nimport { CircleMarker } from \"react-leaflet\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces/index.js\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { MapOrgUnit } from \"../../../../../../interfaces/index.js\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Bubble({\n\tdata,\n\thighestData,\n\tlegends,\n\tradius,\n\tcustomEventHandlers,\n\tonLayerClick,\n}: {\n\tdata: ThematicLayerData;\n\thighestData: number;\n\tlegends: Legend[];\n\tradius?: { min: number; max: number };\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n}) {\n\tconst { orgUnit, data: value } = data ?? {};\n\n\tconst geoJSONObject = orgUnit.geoJSON;\n\tconst center = geoJSON(geoJSONObject).getBounds().getCenter();\n\n\tconst circleRadius = useMemo(() => {\n\t\treturn ((value ?? 0) * (radius?.max ?? 50)) / highestData;\n\t}, [radius, data, highestData]);\n\n\treturn (\n\t\t<>\n\t\t\t<CircleMarker\n\t\t\t\tinteractive\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: getColorFromLegendSet(legends, data.data),\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tradius={circleRadius}\n\t\t\t\tcenter={center}\n\t\t\t>\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</CircleMarker>\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,YAAA,GAAe,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,EAC/C,QAAU,EAAA;AACX,CAAC,CAAE,CAAA,MAAA;AAEI,SAAS,UAAW,CAAA;AAAA,EAC1B,MAAA;AAAA,EACA;AACD,CAGG,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,wBACC,KAAI,EAAA,EAAA,SAAA,EAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,aAAa,MAAO,CAAA,UAAA,IAAc,CAAC,CAAC,MAAM,YAAa,CAAA,MAAA,CAAO,QAAY,IAAA,CAAC,CAAC,CAAG,CAAA,EAAA,CAAA;AAAA,oBACtH,GAAA,CAAC,SAAI,SAAU,EAAA,mBAAA,EAAqB,cAAI,YAAa,CAAA,KAAA,IAAS,CAAC,CAAC,CAAI,CAAA,CAAA,EAAA;AAAA,GACrE,EAAA,CAAA;AAEF;AAEA,SAAS,gBACR,CAAA;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAQA,GACC,EAAA;AACD,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,WAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACrB,GAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,YAAY,CAAE,EAAA,EAAG,SAAU,EAAA,aAAA,EACvC,iBAAO,OAAS,EAAA,YAAY,CAAE,CAAA,GAAA,CAAI,CAAC,MACnC,qBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAO,cAAe,CAAA,MAAA,EAAQ,IAAI;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,KAItB,CACF,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEO,IAAA,wBAAA,GAAQ,WAAW,gBAAgB","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React, { forwardRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: { startValue: number; endValue: number; color: string };\n\tvalue: number;\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<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t</div>\n\t);\n}\n\nfunction ChoroplethLegend(\n\t{\n\t\tdataItem,\n\t\tdata,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tdata: ThematicLayerData[];\n\t\tdataItem: ThematicLayerDataItem;\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: React.LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\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<div style={{ paddingTop: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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\tvalue={getLegendCount(legend, data)}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(ChoroplethLegend);\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,YAAA,GAAe,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,EAC/C,QAAU,EAAA;AACX,CAAC,CAAE,CAAA,MAAA;AAEI,SAAS,UAAW,CAAA;AAAA,EAC1B,MAAA;AAAA,EACA;AACD,CAGG,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,wBACC,KAAI,EAAA,EAAA,SAAA,EAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,aAAa,MAAO,CAAA,UAAA,IAAc,CAAC,CAAC,MAAM,YAAa,CAAA,MAAA,CAAO,QAAY,IAAA,CAAC,CAAC,CAAG,CAAA,EAAA,CAAA;AAAA,oBACtH,GAAA,CAAC,SAAI,SAAU,EAAA,mBAAA,EAAqB,cAAI,YAAa,CAAA,KAAA,IAAS,CAAC,CAAC,CAAI,CAAA,CAAA,EAAA;AAAA,GACrE,EAAA,CAAA;AAEF;AAEA,SAAS,gBACR,CAAA;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAQA,GACC,EAAA;AACD,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,WAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACrB,GAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,YAAY,CAAE,EAAA,EAAG,SAAU,EAAA,aAAA,EACvC,iBAAO,OAAS,EAAA,YAAY,CAAE,CAAA,GAAA,CAAI,CAAC,MACnC,qBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAO,cAAe,CAAA,MAAA,EAAQ,IAAI;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,KAItB,CACF,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAEO,IAAA,wBAAA,GAAQ,WAAW,gBAAgB","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: { startValue: number; endValue: number; color: string };\n\tvalue: number;\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<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t</div>\n\t);\n}\n\nfunction ChoroplethLegend(\n\t{\n\t\tdataItem,\n\t\tdata,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tdata: ThematicLayerData[];\n\t\tdataItem: ThematicLayerDataItem;\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\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<div style={{ paddingTop: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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\tvalue={getLegendCount(legend, data)}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(ChoroplethLegend);\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: React.ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport { type ReactNode, useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/MapProvider/index.tsx"],"names":["orgUnits","periods","error"],"mappings":"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","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { compact, isEmpty } from \"lodash\";\nimport React, { useEffect, useState } from \"react\";\nimport { MapOrgUnit, MapProviderProps } from \"../../interfaces\";\nimport { MapOrgUnitContext, MapPeriodContext } from \"../../state\";\nimport { getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from \"../../utils\";\nimport { BasePeriod, PeriodUtility } from \"@hisptz/dhis2-utils\";\n\nconst boundaryQuery = {\n\tboundaries: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ orgUnitIds }: any) => ({\n\t\t\tou: `ou:${orgUnitIds?.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ orgUnitIds, periodIds }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${orgUnitIds.join(\";\")}`,\n\t\t\t\t`pe:${periodIds.join(\";\")}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\n\nexport function MapProvider({\n\tchildren,\n\torgUnitSelection,\n\tperiodSelection,\n}: MapProviderProps) {\n\tconst [orgUnits, setOrgUnits] = useState<MapOrgUnit[]>([]);\n\tconst [periods, setPeriods] = useState<BasePeriod[]>([]);\n\tconst { refetch, loading, error } = useDataQuery(boundaryQuery, {\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\tasync function getOrgUnits() {\n\t\t\tconst rawOrgUnitIds = getOrgUnitsSelection(orgUnitSelection);\n\t\t\tconst data = await refetch({\n\t\t\t\torgUnitIds: rawOrgUnitIds,\n\t\t\t\tperiodIds: periodSelection?.periods,\n\t\t\t});\n\t\t\tconst { analytics, boundaries } = (data as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tboundaries.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\tconst orgUnits: MapOrgUnit[] = compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!geoJSONObject) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tbounds: [],\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst periodIds =\n\t\t\t\tanalytics?.metaData?.dimensions?.pe ?? periodSelection?.periods;\n\t\t\tconst periods = periodIds.map((pe: string) =>\n\t\t\t\tPeriodUtility.getPeriodById(pe),\n\t\t\t);\n\t\t\tsetPeriods(periods);\n\t\t\tsetOrgUnits(orgUnits);\n\t\t}\n\n\t\tgetOrgUnits().catch((error) => console.log(error));\n\t}, [orgUnitSelection, refetch, periodSelection?.periods]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\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 style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (!isEmpty(orgUnits)) {\n\t\treturn (\n\t\t\t<MapOrgUnitContext.Provider value={{ orgUnitSelection, orgUnits }}>\n\t\t\t\t<MapPeriodContext.Provider\n\t\t\t\t\tvalue={{ ...periodSelection, periods }}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</MapPeriodContext.Provider>\n\t\t\t</MapOrgUnitContext.Provider>\n\t\t);\n\t}\n\n\treturn null;\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/MapProvider/index.tsx"],"names":["orgUnits","periods","error"],"mappings":"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","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { compact, isEmpty } from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport { MapOrgUnit, MapProviderProps } from \"../../interfaces\";\nimport { MapOrgUnitContext, MapPeriodContext } from \"../../state\";\nimport { getOrgUnitsSelection, sanitizeOrgUnits, toGeoJson } from \"../../utils\";\nimport { BasePeriod, PeriodUtility } from \"@hisptz/dhis2-utils\";\n\nconst boundaryQuery = {\n\tboundaries: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ orgUnitIds }: any) => ({\n\t\t\tou: `ou:${orgUnitIds?.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ orgUnitIds, periodIds }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${orgUnitIds.join(\";\")}`,\n\t\t\t\t`pe:${periodIds.join(\";\")}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\n\nexport function MapProvider({\n\tchildren,\n\torgUnitSelection,\n\tperiodSelection,\n}: MapProviderProps) {\n\tconst [orgUnits, setOrgUnits] = useState<MapOrgUnit[]>([]);\n\tconst [periods, setPeriods] = useState<BasePeriod[]>([]);\n\tconst { refetch, loading, error } = useDataQuery(boundaryQuery, {\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\tasync function getOrgUnits() {\n\t\t\tconst rawOrgUnitIds = getOrgUnitsSelection(orgUnitSelection);\n\t\t\tconst data = await refetch({\n\t\t\t\torgUnitIds: rawOrgUnitIds,\n\t\t\t\tperiodIds: periodSelection?.periods,\n\t\t\t});\n\t\t\tconst { analytics, boundaries } = (data as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tboundaries.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\tconst orgUnits: MapOrgUnit[] = compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!geoJSONObject) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tbounds: [],\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t\tconst periodIds =\n\t\t\t\tanalytics?.metaData?.dimensions?.pe ?? periodSelection?.periods;\n\t\t\tconst periods = periodIds.map((pe: string) =>\n\t\t\t\tPeriodUtility.getPeriodById(pe),\n\t\t\t);\n\t\t\tsetPeriods(periods);\n\t\t\tsetOrgUnits(orgUnits);\n\t\t}\n\t\tgetOrgUnits().catch((error) => console.log(error));\n\t}, [orgUnitSelection, refetch, periodSelection?.periods]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\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 style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (!isEmpty(orgUnits)) {\n\t\treturn (\n\t\t\t<MapOrgUnitContext.Provider value={{ orgUnitSelection, orgUnits }}>\n\t\t\t\t<MapPeriodContext.Provider\n\t\t\t\t\tvalue={{ ...periodSelection, periods }}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</MapPeriodContext.Provider>\n\t\t\t</MapOrgUnitContext.Provider>\n\t\t);\n\t}\n\n\treturn null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.tsx"],"names":["type"],"mappings":"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","file":"ThematicLayerConfiguration.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Button, Field, InputField, Radio } from \"@dhis2/ui\";\nimport { Controller, FormProvider, useWatch } from \"react-hook-form\";\nimport React, { useMemo, useState } from \"react\";\nimport { compact } from \"lodash\";\nimport { defaultClasses, defaultColorScaleName } from \"../../utils/colors.js\";\nimport IndicatorSelectorModal from \"./components/IndicatorSelectorModal/index.js\";\nimport { LegendSetSelector } from \"./components/LegendSetSelector/index.js\";\nimport { CustomLegend } from \"./components/CustomLegend/index.js\";\nimport { ThematicLayerConfigurationProps } from \"./types/index.js\";\nimport { RadiusField } from \"./components/RadiusField.js\";\nimport { TypeField } from \"./components/TypeField.js\";\n\nexport function ThematicLayerConfiguration({\n\texclude,\n\tform,\n}: ThematicLayerConfigurationProps) {\n\tconst [type, legendSet, dataItemId] = useWatch({\n\t\tcontrol: form.control,\n\t\tname: [\"type\", \"dataItem.legendSet\", \"dataItem.id\"],\n\t});\n\tconst [legendType, setLegendType] = useState(\n\t\tlegendSet ? \"legendSet\" : \"custom\",\n\t);\n\tconst [dataSelectorOpen, setDataSelectorOpen] = useState(false);\n\n\tconst onLegendTypeChange =\n\t\t(type: string) =>\n\t\t({ value }: { value?: string }) => {\n\t\t\tif (type === \"custom\") {\n\t\t\t\tform.setValue(\"dataItem.legendSet\", undefined);\n\t\t\t\tform.setValue(\"dataItem.legendConfig.scale\", defaultClasses);\n\t\t\t\tform.setValue(\n\t\t\t\t\t\"dataItem.legendConfig.colorClass\",\n\t\t\t\t\tdefaultColorScaleName,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tform.setValue(\"dataItem.legendConfig\", undefined);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\tsetLegendType(value);\n\t\t\t}\n\t\t};\n\tconst disabled = useMemo(\n\t\t() => exclude?.filter((indicator) => indicator !== dataItemId) ?? [],\n\t\t[dataItemId, exclude],\n\t);\n\treturn (\n\t\t<FormProvider {...form}>\n\t\t\t<div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n\t\t\t\t<TypeField />\n\t\t\t\t<Controller\n\t\t\t\t\trules={{\n\t\t\t\t\t\tvalidate: {\n\t\t\t\t\t\t\trequired: (value: { id: string; name: string }) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tBoolean(value?.id) ||\n\t\t\t\t\t\t\t\t\ti18n.t(\"A data item is required\")\n\t\t\t\t\t\t\t\t);\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\trender={({ field, fieldState }) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tonClick={() => setDataSelectorOpen(true)}\n\t\t\t\t\t\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<InputField\n\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\t\t\t\t\t\tvalidationText={\n\t\t\t\t\t\t\t\t\t\t\tfieldState.error?.message\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\tinputWidth=\"100%\"\n\t\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Data Item\")}\n\t\t\t\t\t\t\t\t\t\tvalue={field.value?.displayName}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={() => setDataSelectorOpen(true)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{field.value?.id\n\t\t\t\t\t\t\t\t\t\t? i18n.t(\"Change\")\n\t\t\t\t\t\t\t\t\t\t: i18n.t(\"Select\")}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{dataSelectorOpen && (\n\t\t\t\t\t\t\t\t<IndicatorSelectorModal\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonUpdate={(values: any[]) => {\n\t\t\t\t\t\t\t\t\t\tconst [indicator] = values ?? [];\n\t\t\t\t\t\t\t\t\t\tfield.onChange({\n\t\t\t\t\t\t\t\t\t\t\tid: indicator.id,\n\t\t\t\t\t\t\t\t\t\t\tdisplayName: indicator.displayName,\n\t\t\t\t\t\t\t\t\t\t\ttype: \"indicator\",\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClose={() => setDataSelectorOpen(false)}\n\t\t\t\t\t\t\t\t\thide={!dataSelectorOpen}\n\t\t\t\t\t\t\t\t\tselected={compact([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tid: field.value?.id,\n\t\t\t\t\t\t\t\t\t\t\tdisplayName:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.value?.displayName,\n\t\t\t\t\t\t\t\t\t\t},\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</>\n\t\t\t\t\t)}\n\t\t\t\t\tname={\"dataItem\"}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Field label={i18n.t(\"Legend\")}>\n\t\t\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\t\t\tchecked={legendType === \"legendSet\"}\n\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Legend set\")}\n\t\t\t\t\t\t\t\t\tname=\"legendSet\"\n\t\t\t\t\t\t\t\t\tvalue=\"legendSet\"\n\t\t\t\t\t\t\t\t\tonChange={onLegendTypeChange(\"legendSet\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\t\t\tchecked={legendType === \"custom\"}\n\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Custom legend\")}\n\t\t\t\t\t\t\t\t\tname=\"custom\"\n\t\t\t\t\t\t\t\t\tvalue=\"custom\"\n\t\t\t\t\t\t\t\t\tonChange={onLegendTypeChange(\"custom\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t{legendType === \"legendSet\" && (\n\t\t\t\t\t\t\t\t\t<Controller\n\t\t\t\t\t\t\t\t\t\trules={{\n\t\t\t\t\t\t\t\t\t\t\trequired: i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Legend set is required\",\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tname=\"dataItem.legendSet\"\n\t\t\t\t\t\t\t\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t\t\t\t\t\t\t\t<LegendSetSelector\n\t\t\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\t\t{...fieldState}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\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\t{legendType === \"custom\" && <CustomLegend />}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Field>\n\t\t\t\t\t{type === \"bubble\" && (\n\t\t\t\t\t\t<Field label={i18n.t(\"Radius\")}>\n\t\t\t\t\t\t\t<RadiusField />\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</FormProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.tsx"],"names":["type"],"mappings":"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","file":"ThematicLayerConfiguration.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Button, Field, InputField, Radio } from \"@dhis2/ui\";\nimport { Controller, FormProvider, useWatch } from \"react-hook-form\";\nimport { useMemo, useState } from \"react\";\nimport { compact } from \"lodash\";\nimport { defaultClasses, defaultColorScaleName } from \"../../utils/colors.js\";\nimport IndicatorSelectorModal from \"./components/IndicatorSelectorModal/index.js\";\nimport { LegendSetSelector } from \"./components/LegendSetSelector/index.js\";\nimport { CustomLegend } from \"./components/CustomLegend/index.js\";\nimport { ThematicLayerConfigurationProps } from \"./types/index.js\";\nimport { RadiusField } from \"./components/RadiusField.js\";\nimport { TypeField } from \"./components/TypeField.js\";\n\nexport function ThematicLayerConfiguration({\n\texclude,\n\tform,\n}: ThematicLayerConfigurationProps) {\n\tconst [type, legendSet, dataItemId] = useWatch({\n\t\tcontrol: form.control,\n\t\tname: [\"type\", \"dataItem.legendSet\", \"dataItem.id\"],\n\t});\n\tconst [legendType, setLegendType] = useState(\n\t\tlegendSet ? \"legendSet\" : \"custom\",\n\t);\n\tconst [dataSelectorOpen, setDataSelectorOpen] = useState(false);\n\n\tconst onLegendTypeChange =\n\t\t(type: string) =>\n\t\t({ value }: { value?: string }) => {\n\t\t\tif (type === \"custom\") {\n\t\t\t\tform.setValue(\"dataItem.legendSet\", undefined);\n\t\t\t\tform.setValue(\"dataItem.legendConfig.scale\", defaultClasses);\n\t\t\t\tform.setValue(\n\t\t\t\t\t\"dataItem.legendConfig.colorClass\",\n\t\t\t\t\tdefaultColorScaleName,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tform.setValue(\"dataItem.legendConfig\", undefined);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\tsetLegendType(value);\n\t\t\t}\n\t\t};\n\tconst disabled = useMemo(\n\t\t() => exclude?.filter((indicator) => indicator !== dataItemId) ?? [],\n\t\t[dataItemId, exclude],\n\t);\n\treturn (\n\t\t<FormProvider {...form}>\n\t\t\t<div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n\t\t\t\t<TypeField />\n\t\t\t\t<Controller\n\t\t\t\t\trules={{\n\t\t\t\t\t\tvalidate: {\n\t\t\t\t\t\t\trequired: (value: { id: string; name: string }) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tBoolean(value?.id) ||\n\t\t\t\t\t\t\t\t\ti18n.t(\"A data item is required\")\n\t\t\t\t\t\t\t\t);\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\trender={({ field, fieldState }) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tonClick={() => setDataSelectorOpen(true)}\n\t\t\t\t\t\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<InputField\n\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\t\t\t\t\t\tvalidationText={\n\t\t\t\t\t\t\t\t\t\t\tfieldState.error?.message\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\tinputWidth=\"100%\"\n\t\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Data Item\")}\n\t\t\t\t\t\t\t\t\t\tvalue={field.value?.displayName}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={() => setDataSelectorOpen(true)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{field.value?.id\n\t\t\t\t\t\t\t\t\t\t? i18n.t(\"Change\")\n\t\t\t\t\t\t\t\t\t\t: i18n.t(\"Select\")}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{dataSelectorOpen && (\n\t\t\t\t\t\t\t\t<IndicatorSelectorModal\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonUpdate={(values: any[]) => {\n\t\t\t\t\t\t\t\t\t\tconst [indicator] = values ?? [];\n\t\t\t\t\t\t\t\t\t\tfield.onChange({\n\t\t\t\t\t\t\t\t\t\t\tid: indicator.id,\n\t\t\t\t\t\t\t\t\t\t\tdisplayName: indicator.displayName,\n\t\t\t\t\t\t\t\t\t\t\ttype: \"indicator\",\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClose={() => setDataSelectorOpen(false)}\n\t\t\t\t\t\t\t\t\thide={!dataSelectorOpen}\n\t\t\t\t\t\t\t\t\tselected={compact([\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tid: field.value?.id,\n\t\t\t\t\t\t\t\t\t\t\tdisplayName:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.value?.displayName,\n\t\t\t\t\t\t\t\t\t\t},\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</>\n\t\t\t\t\t)}\n\t\t\t\t\tname={\"dataItem\"}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Field label={i18n.t(\"Legend\")}>\n\t\t\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\t\t\tchecked={legendType === \"legendSet\"}\n\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Legend set\")}\n\t\t\t\t\t\t\t\t\tname=\"legendSet\"\n\t\t\t\t\t\t\t\t\tvalue=\"legendSet\"\n\t\t\t\t\t\t\t\t\tonChange={onLegendTypeChange(\"legendSet\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Radio\n\t\t\t\t\t\t\t\t\tchecked={legendType === \"custom\"}\n\t\t\t\t\t\t\t\t\tlabel={i18n.t(\"Custom legend\")}\n\t\t\t\t\t\t\t\t\tname=\"custom\"\n\t\t\t\t\t\t\t\t\tvalue=\"custom\"\n\t\t\t\t\t\t\t\t\tonChange={onLegendTypeChange(\"custom\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t{legendType === \"legendSet\" && (\n\t\t\t\t\t\t\t\t\t<Controller\n\t\t\t\t\t\t\t\t\t\trules={{\n\t\t\t\t\t\t\t\t\t\t\trequired: i18n.t(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Legend set is required\",\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tname=\"dataItem.legendSet\"\n\t\t\t\t\t\t\t\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t\t\t\t\t\t\t\t<LegendSetSelector\n\t\t\t\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t\t\t\tselected={field.value}\n\t\t\t\t\t\t\t\t\t\t\t\t{...field}\n\t\t\t\t\t\t\t\t\t\t\t\t{...fieldState}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\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\t{legendType === \"custom\" && <CustomLegend />}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Field>\n\t\t\t\t\t{type === \"bubble\" && (\n\t\t\t\t\t\t<Field label={i18n.t(\"Radius\")}>\n\t\t\t\t\t\t\t<RadiusField />\n\t\t\t\t\t\t</Field>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</FormProvider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.tsx"],"names":["scale"],"mappings":";;;;;;;;AAaA,MAAM,mBAAmB,CAAC;AAAA,EACzB,UAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACD,CAMM,KAAA;AACL,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAM,MAAA,SAAA,GAAY,OAAuB,IAAI,CAAA;AAC7C,EAAM,MAAA,OAAA,GAAU,eAAgB,CAAA,UAAA,EAAY,KAAK,CAAA;AACjD,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,KAAM,CAAA,GAAG,CAAE,CAAA,MAAA;AAChC,EAAM,MAAA,KAAA,GAAQ,aAAc,CAAA,OAAO,CAAK,IAAA,iBAAA;AAExC,EAAM,MAAA,kBAAA,GAAqB,CAACA,MAAkB,KAAA;AAC7C,IAAA,QAAA,CAASA,MAAK,CAAA;AACd,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GAChB;AAEA,EAAA,4BACE,QACA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,KAAK,SAAW,EAAA,SAAA,EAAW,GAAG,MAAO,CAAA,UAAA,EAAY,SAAS,CAC9D,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAO,KAAS,IAAA,qBAAA;AAAA,QAChB,OAAA,EAAS,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,QAC7B,OAAO,KAAS,IAAA;AAAA;AAAA,KAElB,EAAA,CAAA;AAAA,IACC,MACA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACA,SAAW,EAAA,SAAA;AAAA,QACX,KAAO,EAAA,KAAA;AAAA,QACP,SAAU,EAAA,OAAA;AAAA,QACV,cAAA,EAAgB,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,QAErC,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,WAAW,MAAO,CAAA,OAAA;AAAA,YAClB,KAAO,EAAA;AAAA,cACN,KAAA,EAAO,QAAQ,EAAM,IAAA,GAAA;AAAA,cACrB,MAAQ,EAAA,MAAA;AAAA,cACR,QAAU,EAAA;AAAA,aACX;AAAA,YAEC,QAAY,EAAA,WAAA,CAAA,GAAA,CAAI,CAACA,MAAAA,EAAO,KACxB,qBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBAEA,KAAOA,EAAAA,MAAAA;AAAA,gBACP,IAAA;AAAA,gBACA,OAAS,EAAA,kBAAA;AAAA,gBACT,OAAO,KAAS,IAAA;AAAA,eAAA;AAAA,cAJX;AAAA,aAMN;AAAA;AAAA;AACF;AAAA;AACD,GAEF,EAAA,CAAA;AAEF,CAAA;AAEA,IAAO,wBAAQ,GAAA","file":"index.js","sourcesContent":["import React, { Fragment, useRef, useState } from \"react\";\nimport { Popover } from \"@dhis2/ui\";\nimport cx from \"classnames\";\nimport ColorScale from \"./components/ColorScale/index.js\";\nimport styles from \"./styles/ColorScaleSelect.module.css\";\nimport {\n\tcolorScales,\n\tdefaultColorScale,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n\tgetColorScale,\n} from \"./utils/colors.js\";\n\nconst ColorScaleSelect = ({\n\tcolorClass,\n\tcount,\n\twidth,\n\tonChange,\n\tclassName,\n}: {\n\tclassName?: string;\n\tcount: number;\n\twidth: number;\n\tonChange: (palette: string) => void;\n\tcolorClass: string;\n}) => {\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst anchorRef = useRef<HTMLDivElement>(null);\n\tconst palette = getColorPalette(colorClass, count);\n\tconst bins = palette.split(\",\").length;\n\tconst scale = getColorScale(palette) ?? defaultColorScale;\n\n\tconst onColorScaleSelect = (scale: string) => {\n\t\tonChange(scale);\n\t\tsetIsOpen(false);\n\t};\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div ref={anchorRef} className={cx(styles.colorScale, className)}>\n\t\t\t\t<ColorScale\n\t\t\t\t\tbins={bins}\n\t\t\t\t\tscale={scale ?? defaultColorScaleName}\n\t\t\t\t\tonClick={() => setIsOpen(true)}\n\t\t\t\t\twidth={width || 260}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{isOpen && (\n\t\t\t\t<Popover\n\t\t\t\t\treference={anchorRef}\n\t\t\t\t\tarrow={false}\n\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\tonClickOutside={() => setIsOpen(false)}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={styles.popover}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: width + 24 || 260,\n\t\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\t\toverflow: \"auto\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{colorScales.map((scale, index) => (\n\t\t\t\t\t\t\t<ColorScale\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tscale={scale}\n\t\t\t\t\t\t\t\tbins={bins}\n\t\t\t\t\t\t\t\tonClick={onColorScaleSelect}\n\t\t\t\t\t\t\t\twidth={width || 260}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\nexport default ColorScaleSelect;\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.tsx"],"names":["scale"],"mappings":";;;;;;;;AAaA,MAAM,mBAAmB,CAAC;AAAA,EACzB,UAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACD,CAMM,KAAA;AACL,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAM,MAAA,SAAA,GAAY,OAAuB,IAAI,CAAA;AAC7C,EAAM,MAAA,OAAA,GAAU,eAAgB,CAAA,UAAA,EAAY,KAAK,CAAA;AACjD,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,KAAM,CAAA,GAAG,CAAE,CAAA,MAAA;AAChC,EAAM,MAAA,KAAA,GAAQ,aAAc,CAAA,OAAO,CAAK,IAAA,iBAAA;AAExC,EAAM,MAAA,kBAAA,GAAqB,CAACA,MAAkB,KAAA;AAC7C,IAAA,QAAA,CAASA,MAAK,CAAA;AACd,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GAChB;AAEA,EAAA,4BACE,QACA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,KAAK,SAAW,EAAA,SAAA,EAAW,GAAG,MAAO,CAAA,UAAA,EAAY,SAAS,CAC9D,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAO,KAAS,IAAA,qBAAA;AAAA,QAChB,OAAA,EAAS,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,QAC7B,OAAO,KAAS,IAAA;AAAA;AAAA,KAElB,EAAA,CAAA;AAAA,IACC,MACA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACA,SAAW,EAAA,SAAA;AAAA,QACX,KAAO,EAAA,KAAA;AAAA,QACP,SAAU,EAAA,OAAA;AAAA,QACV,cAAA,EAAgB,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,QAErC,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,WAAW,MAAO,CAAA,OAAA;AAAA,YAClB,KAAO,EAAA;AAAA,cACN,KAAA,EAAO,QAAQ,EAAM,IAAA,GAAA;AAAA,cACrB,MAAQ,EAAA,MAAA;AAAA,cACR,QAAU,EAAA;AAAA,aACX;AAAA,YAEC,QAAY,EAAA,WAAA,CAAA,GAAA,CAAI,CAACA,MAAAA,EAAO,KACxB,qBAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBAEA,KAAOA,EAAAA,MAAAA;AAAA,gBACP,IAAA;AAAA,gBACA,OAAS,EAAA,kBAAA;AAAA,gBACT,OAAO,KAAS,IAAA;AAAA,eAAA;AAAA,cAJX;AAAA,aAMN;AAAA;AAAA;AACF;AAAA;AACD,GAEF,EAAA,CAAA;AAEF,CAAA;AAEA,IAAO,wBAAQ,GAAA","file":"index.js","sourcesContent":["import { Fragment, useRef, useState } from \"react\";\nimport { Popover } from \"@dhis2/ui\";\nimport cx from \"classnames\";\nimport ColorScale from \"./components/ColorScale/index.js\";\nimport styles from \"./styles/ColorScaleSelect.module.css\";\nimport {\n\tcolorScales,\n\tdefaultColorScale,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n\tgetColorScale,\n} from \"./utils/colors.js\";\n\nconst ColorScaleSelect = ({\n\tcolorClass,\n\tcount,\n\twidth,\n\tonChange,\n\tclassName,\n}: {\n\tclassName?: string;\n\tcount: number;\n\twidth: number;\n\tonChange: (palette: string) => void;\n\tcolorClass: string;\n}) => {\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst anchorRef = useRef<HTMLDivElement>(null);\n\tconst palette = getColorPalette(colorClass, count);\n\tconst bins = palette.split(\",\").length;\n\tconst scale = getColorScale(palette) ?? defaultColorScale;\n\n\tconst onColorScaleSelect = (scale: string) => {\n\t\tonChange(scale);\n\t\tsetIsOpen(false);\n\t};\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<div ref={anchorRef} className={cx(styles.colorScale, className)}>\n\t\t\t\t<ColorScale\n\t\t\t\t\tbins={bins}\n\t\t\t\t\tscale={scale ?? defaultColorScaleName}\n\t\t\t\t\tonClick={() => setIsOpen(true)}\n\t\t\t\t\twidth={width || 260}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{isOpen && (\n\t\t\t\t<Popover\n\t\t\t\t\treference={anchorRef}\n\t\t\t\t\tarrow={false}\n\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\tonClickOutside={() => setIsOpen(false)}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={styles.popover}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\twidth: width + 24 || 260,\n\t\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\t\toverflow: \"auto\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{colorScales.map((scale, index) => (\n\t\t\t\t\t\t\t<ColorScale\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tscale={scale}\n\t\t\t\t\t\t\t\tbins={bins}\n\t\t\t\t\t\t\t\tonClick={onColorScaleSelect}\n\t\t\t\t\t\t\t\twidth={width || 260}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t)}\n\t\t</Fragment>\n\t);\n};\n\nexport default ColorScaleSelect;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.tsx"],"names":[],"mappings":";;;;;;AAYe,SAAR,sBAAwC,CAAA;AAAA,EAC9C,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAMG,EAAA;AACF,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAS,QAAQ,CAAA;AAErE,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACvC,IAAA,QAAA,CAAS,kBAAkB,CAAA;AAC3B,IAAQ,OAAA,EAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,kBAAkB,CAAC,CAAA;AAEjC,EAAM,MAAA,QAAA,GAAW,WAAY,CAAA,CAAC,UAAoB,KAAA;AACjD,IAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA,GACjC,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAM,QAAS,EAAA,QAAA,EAAS,MAAY,OACpC,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAY,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,kBAAkB,CAAE,EAAA,CAAA;AAAA,wBACvC,YACA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,QAAA;AAAA,QACA,aAAe,EAAA,CAAA;AAAA,QACf,QAAU,EAAA,kBAAA;AAAA,QACV;AAAA;AAAA,KAEF,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,YACA,EAAA,EAAA,QAAA,kBAAA,IAAA,CAAC,WACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,OAAS,EAAA,OAAA,EAAU,QAAK,EAAA,IAAA,CAAA,CAAA,CAAE,QAAQ,CAAE,EAAA,CAAA;AAAA,sBAC5C,GAAA,CAAC,UAAO,OAAO,EAAA,IAAA,EAAC,SAAS,aACvB,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,QAAQ,CACjB,EAAA;AAAA,KAAA,EACD,CACD,EAAA;AAAA,GACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport {\n\tButton,\n\tButtonStrip,\n\tModal,\n\tModalActions,\n\tModalContent,\n\tModalTitle,\n} from \"@dhis2/ui\";\nimport React, { useCallback, useState } from \"react\";\nimport { DataSourceSelector } from \"@hisptz/dhis2-ui\";\n\nexport default function IndicatorSelectorModal({\n\tonUpdate,\n\tonClose,\n\thide,\n\tselected,\n\tdisabled,\n\t...props\n}: {\n\tonUpdate: (data: any) => void;\n\tonClose: () => void;\n\thide: boolean;\n\tselected: any;\n\tdisabled?: string[];\n}) {\n\tconst [selectedIndicators, setSelectedIndicators] = useState(selected);\n\n\tconst onUpdateClick = useCallback(() => {\n\t\tonUpdate(selectedIndicators);\n\t\tonClose();\n\t}, [onUpdate, selectedIndicators]);\n\n\tconst onSelect = useCallback((indicators: any) => {\n\t\tsetSelectedIndicators(indicators);\n\t}, []);\n\n\treturn (\n\t\t<Modal position=\"middle\" hide={hide} onClose={onClose}>\n\t\t\t<ModalTitle>{i18n.t(\"Select Data Item\")}</ModalTitle>\n\t\t\t<ModalContent>\n\t\t\t\t<DataSourceSelector\n\t\t\t\t\t{...props}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tmaxSelections={1}\n\t\t\t\t\tselected={selectedIndicators}\n\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t/>\n\t\t\t</ModalContent>\n\t\t\t<ModalActions>\n\t\t\t\t<ButtonStrip>\n\t\t\t\t\t<Button onClick={onClose}>{i18n.t(\"Cancel\")}</Button>\n\t\t\t\t\t<Button primary onClick={onUpdateClick}>\n\t\t\t\t\t\t{i18n.t(\"Update\")}\n\t\t\t\t\t</Button>\n\t\t\t\t</ButtonStrip>\n\t\t\t</ModalActions>\n\t\t</Modal>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.tsx"],"names":[],"mappings":";;;;;;AAYe,SAAR,sBAAwC,CAAA;AAAA,EAC9C,QAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAMG,EAAA;AACF,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAS,QAAQ,CAAA;AAErE,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACvC,IAAA,QAAA,CAAS,kBAAkB,CAAA;AAC3B,IAAQ,OAAA,EAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,kBAAkB,CAAC,CAAA;AAEjC,EAAM,MAAA,QAAA,GAAW,WAAY,CAAA,CAAC,UAAoB,KAAA;AACjD,IAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA,GACjC,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAM,QAAS,EAAA,QAAA,EAAS,MAAY,OACpC,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAY,EAAA,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,kBAAkB,CAAE,EAAA,CAAA;AAAA,wBACvC,YACA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,QAAA;AAAA,QACA,aAAe,EAAA,CAAA;AAAA,QACf,QAAU,EAAA,kBAAA;AAAA,QACV;AAAA;AAAA,KAEF,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,YACA,EAAA,EAAA,QAAA,kBAAA,IAAA,CAAC,WACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,OAAS,EAAA,OAAA,EAAU,QAAK,EAAA,IAAA,CAAA,CAAA,CAAE,QAAQ,CAAE,EAAA,CAAA;AAAA,sBAC5C,GAAA,CAAC,UAAO,OAAO,EAAA,IAAA,EAAC,SAAS,aACvB,EAAA,QAAA,EAAA,IAAA,CAAK,CAAE,CAAA,QAAQ,CACjB,EAAA;AAAA,KAAA,EACD,CACD,EAAA;AAAA,GACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport {\n\tButton,\n\tButtonStrip,\n\tModal,\n\tModalActions,\n\tModalContent,\n\tModalTitle,\n} from \"@dhis2/ui\";\nimport { useCallback, useState } from \"react\";\nimport { DataSourceSelector } from \"@hisptz/dhis2-ui\";\n\nexport default function IndicatorSelectorModal({\n\tonUpdate,\n\tonClose,\n\thide,\n\tselected,\n\tdisabled,\n\t...props\n}: {\n\tonUpdate: (data: any) => void;\n\tonClose: () => void;\n\thide: boolean;\n\tselected: any;\n\tdisabled?: string[];\n}) {\n\tconst [selectedIndicators, setSelectedIndicators] = useState(selected);\n\n\tconst onUpdateClick = useCallback(() => {\n\t\tonUpdate(selectedIndicators);\n\t\tonClose();\n\t}, [onUpdate, selectedIndicators]);\n\n\tconst onSelect = useCallback((indicators: any) => {\n\t\tsetSelectedIndicators(indicators);\n\t}, []);\n\n\treturn (\n\t\t<Modal position=\"middle\" hide={hide} onClose={onClose}>\n\t\t\t<ModalTitle>{i18n.t(\"Select Data Item\")}</ModalTitle>\n\t\t\t<ModalContent>\n\t\t\t\t<DataSourceSelector\n\t\t\t\t\t{...props}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tmaxSelections={1}\n\t\t\t\t\tselected={selectedIndicators}\n\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t/>\n\t\t\t</ModalContent>\n\t\t\t<ModalActions>\n\t\t\t\t<ButtonStrip>\n\t\t\t\t\t<Button onClick={onClose}>{i18n.t(\"Cancel\")}</Button>\n\t\t\t\t\t<Button primary onClick={onUpdateClick}>\n\t\t\t\t\t\t{i18n.t(\"Update\")}\n\t\t\t\t\t</Button>\n\t\t\t\t</ButtonStrip>\n\t\t\t</ModalActions>\n\t\t</Modal>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.tsx"],"names":["selected"],"mappings":";;;;;;;AAOA,MAAM,cAAiB,GAAA;AAAA,EACtB,UAAY,EAAA;AAAA,IACX,QAAU,EAAA,YAAA;AAAA,IACV,MAAQ,EAAA;AAAA,MACP,MAAA,EAAQ,CAAC,aAAA,EAAe,IAAI;AAAA;AAC7B;AAEF,CAAA;AAEO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAKG,EAAA;AACF,EAAA,MAAM,EAAE,OAAA,EAAS,IAAK,EAAA,GAAI,aAAa,cAAc,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,IAAI,IAAM,EAAA;AACT,MACC,OAAA,IAAA,EAAM,YACJ,UAAY,EAAA,GAAA,CAAI,CAAC,EAAE,WAAA,EAAa,IAAU,MAAA;AAAA,QAC5C,OAAO,WAAe,IAAA,EAAA;AAAA,QACtB,KAAO,EAAA;AAAA,OACN,CAAA,CAAA;AAAA;AAEH,IAAA,OAAO,EAAC;AAAA,GACT,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EACC,uBAAA,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MACpB,gBAAgB,KAAO,EAAA,OAAA;AAAA,MACtB,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,MAC1B,UAAU,EAAA,IAAA;AAAA,MACV,QAAU,EAAA,CAAC,OAAQ,CAAA,OAAO,IAAI,QAAW,GAAA,MAAA;AAAA,MACzC,WAAA,EAAa,IAAK,CAAA,CAAA,CAAE,gBAAgB,CAAA;AAAA,MACpC,UAAU,CAAC,EAAE,UAAAA,SAAS,EAAA,KACrB,SAASA,SAAQ,CAAA;AAAA,MAElB,OAAA;AAAA,MAEC,mBAAS,GAAI,CAAA,CAAC,EAAE,KAAA,EAAO,OACvB,qBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UAEA,KAAA;AAAA,UACA;AAAA,SAAA;AAAA,QAFK,GAAG,KAAK,CAAA,cAAA;AAAA,OAId;AAAA;AAAA,GACF;AAEF","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport React, { useMemo } from \"react\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport { SingleSelectField, SingleSelectOption } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { isEmpty } from \"lodash\";\n\nconst legendSetQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tparams: {\n\t\t\tfields: [\"displayName\", \"id\"],\n\t\t},\n\t},\n};\n\nexport function LegendSetSelector({\n\tselected,\n\tonChange,\n\terror,\n\trequired,\n\t...props\n}: {\n\tselected?: string;\n\tonChange: (value: string) => void;\n\terror?: { message?: string };\n\trequired?: boolean;\n}) {\n\tconst { loading, data } = useDataQuery(legendSetQuery);\n\tconst options = useMemo(() => {\n\t\tif (data) {\n\t\t\treturn (\n\t\t\t\tdata?.legendSets as { legendSets?: LegendSet[] }\n\t\t\t)?.legendSets?.map(({ displayName, id }) => ({\n\t\t\t\tlabel: displayName ?? id,\n\t\t\t\tvalue: id,\n\t\t\t}));\n\t\t}\n\t\treturn [];\n\t}, [data]);\n\n\treturn (\n\t\t<SingleSelectField\n\t\t\trequired={required}\n\t\t\terror={Boolean(error)}\n\t\t\tvalidationText={error?.message}\n\t\t\t{...props}\n\t\t\tlabel={i18n.t(\"Legend set\")}\n\t\t\tfilterable\n\t\t\tselected={!isEmpty(options) ? selected : undefined}\n\t\t\tloadingText={i18n.t(\"Please wait...\")}\n\t\t\tonChange={({ selected }: { selected: string }) =>\n\t\t\t\tonChange(selected)\n\t\t\t}\n\t\t\tloading={loading}\n\t\t>\n\t\t\t{options?.map(({ label, value }) => (\n\t\t\t\t<SingleSelectOption\n\t\t\t\t\tkey={`${label}-legend-option`}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tvalue={value}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</SingleSelectField>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.tsx"],"names":["selected"],"mappings":";;;;;;;AAOA,MAAM,cAAiB,GAAA;AAAA,EACtB,UAAY,EAAA;AAAA,IACX,QAAU,EAAA,YAAA;AAAA,IACV,MAAQ,EAAA;AAAA,MACP,MAAA,EAAQ,CAAC,aAAA,EAAe,IAAI;AAAA;AAC7B;AAEF,CAAA;AAEO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAKG,EAAA;AACF,EAAA,MAAM,EAAE,OAAA,EAAS,IAAK,EAAA,GAAI,aAAa,cAAc,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,IAAI,IAAM,EAAA;AACT,MACC,OAAA,IAAA,EAAM,YACJ,UAAY,EAAA,GAAA,CAAI,CAAC,EAAE,WAAA,EAAa,IAAU,MAAA;AAAA,QAC5C,OAAO,WAAe,IAAA,EAAA;AAAA,QACtB,KAAO,EAAA;AAAA,OACN,CAAA,CAAA;AAAA;AAEH,IAAA,OAAO,EAAC;AAAA,GACT,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EACC,uBAAA,GAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,QAAQ,KAAK,CAAA;AAAA,MACpB,gBAAgB,KAAO,EAAA,OAAA;AAAA,MACtB,GAAG,KAAA;AAAA,MACJ,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,MAC1B,UAAU,EAAA,IAAA;AAAA,MACV,QAAU,EAAA,CAAC,OAAQ,CAAA,OAAO,IAAI,QAAW,GAAA,MAAA;AAAA,MACzC,WAAA,EAAa,IAAK,CAAA,CAAA,CAAE,gBAAgB,CAAA;AAAA,MACpC,UAAU,CAAC,EAAE,UAAAA,SAAS,EAAA,KACrB,SAASA,SAAQ,CAAA;AAAA,MAElB,OAAA;AAAA,MAEC,mBAAS,GAAI,CAAA,CAAC,EAAE,KAAA,EAAO,OACvB,qBAAA,GAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UAEA,KAAA;AAAA,UACA;AAAA,SAAA;AAAA,QAFK,GAAG,KAAK,CAAA,cAAA;AAAA,OAId;AAAA;AAAA,GACF;AAEF","file":"index.js","sourcesContent":["import { useDataQuery } from \"@dhis2/app-runtime\";\nimport { useMemo } from \"react\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport { SingleSelectField, SingleSelectOption } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { isEmpty } from \"lodash\";\n\nconst legendSetQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tparams: {\n\t\t\tfields: [\"displayName\", \"id\"],\n\t\t},\n\t},\n};\n\nexport function LegendSetSelector({\n\tselected,\n\tonChange,\n\terror,\n\trequired,\n\t...props\n}: {\n\tselected?: string;\n\tonChange: (value: string) => void;\n\terror?: { message?: string };\n\trequired?: boolean;\n}) {\n\tconst { loading, data } = useDataQuery(legendSetQuery);\n\tconst options = useMemo(() => {\n\t\tif (data) {\n\t\t\treturn (\n\t\t\t\tdata?.legendSets as { legendSets?: LegendSet[] }\n\t\t\t)?.legendSets?.map(({ displayName, id }) => ({\n\t\t\t\tlabel: displayName ?? id,\n\t\t\t\tvalue: id,\n\t\t\t}));\n\t\t}\n\t\treturn [];\n\t}, [data]);\n\n\treturn (\n\t\t<SingleSelectField\n\t\t\trequired={required}\n\t\t\terror={Boolean(error)}\n\t\t\tvalidationText={error?.message}\n\t\t\t{...props}\n\t\t\tlabel={i18n.t(\"Legend set\")}\n\t\t\tfilterable\n\t\t\tselected={!isEmpty(options) ? selected : undefined}\n\t\t\tloadingText={i18n.t(\"Please wait...\")}\n\t\t\tonChange={({ selected }: { selected: string }) =>\n\t\t\t\tonChange(selected)\n\t\t\t}\n\t\t\tloading={loading}\n\t\t>\n\t\t\t{options?.map(({ label, value }) => (\n\t\t\t\t<SingleSelectOption\n\t\t\t\t\tkey={`${label}-legend-option`}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tvalue={value}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</SingleSelectField>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SingleValueContainer/SingleValueVisualizer.tsx"],"names":[],"mappings":";;;;;;;;;AASO,SAAS,qBAAsB,CAAA;AAAA,EACrC,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAAmD,EAAA;AAClD,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,oBACV,GAAA,CAAC,QAAS,EAAA,EAAA,QAAA,kBAAW,GAAA,CAAA,KAAA,EAAA,EAAK,QAAK,EAAA,IAAA,CAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAC/C,EAAA,QAAA,kBAAA,IAAA,CAAC,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAW,GAAG,MAAO,CAAA,cAAc,CAAC,CAAI,CAAA,EAAA,MAAA,CAAO,WAAW,CAAC,CAAA,CAAA;AAAA,UAE1D,QAAA,EAAA;AAAA;AAAA,OACF;AAAA,0BACC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,mBAAmB,GACxC,QAAiB,EAAA,gBAAA,CAAA,GAAA;AAAA,QACjB,CAAC,eACA,qBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACA,gBAAA;AAAA,YAEC,GAAG,eAAA;AAAA,YACJ,uBAAyB,EAAA,iBAAA;AAAA,YACzB,oBAAsB,EAAA;AAAA,WAAA;AAAA,UAHjB,CAAG,EAAA,eAAA,CAAgB,KAAK,CAAA,CAAA,EAAI,gBAAgB,KAAK,CAAA;AAAA;AAIvD,OAGH,EAAA;AAAA,KAAA,EACD,CACD,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAKO,MAAM,oBAAuB,GAAA","file":"SingleValueVisualizer.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { CssReset } from \"@dhis2/ui\";\nimport React, { Suspense } from \"react\";\nimport SingleValueItem from \"./components/SingleValueItem/SingleValueItem.js\";\nimport styles from \"./styles/SingleValueContainer.module.css\";\nimport { SingleValue, SingleValueVisualizerProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function SingleValueVisualizer({\n\ttitle,\n\tsingleValueItems,\n\tanimationDuration,\n\tanimationDelay,\n\tdisableAnimation,\n}: SingleValueVisualizerProps): React.ReactElement {\n\treturn (\n\t\t<div className=\"w-100 h-100\">\n\t\t\t<CssReset />\n\t\t\t<Suspense fallback={<div>{i18n.t(\"Loading ...\")}</div>}>\n\t\t\t\t<div>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={`${styles[\"font-x-large\"]} ${styles[\"font-bold\"]}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div className={styles[\"single-value-list\"]}>\n\t\t\t\t\t\t{singleValueItems.map(\n\t\t\t\t\t\t\t(singleValueItem: SingleValue) => (\n\t\t\t\t\t\t\t\t<SingleValueItem\n\t\t\t\t\t\t\t\t\tdisableAnimation={disableAnimation}\n\t\t\t\t\t\t\t\t\tkey={`${singleValueItem.label}-${singleValueItem.value}`}\n\t\t\t\t\t\t\t\t\t{...singleValueItem}\n\t\t\t\t\t\t\t\t\tglobalAnimationDuration={animationDuration}\n\t\t\t\t\t\t\t\t\tglobalAnimationDelay={animationDelay}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Suspense>\n\t\t</div>\n\t);\n}\n\n/**\n * @deprecated since `v2`. Use `SingleValueVisualizer` instead\n * */\nexport const SingleValueContainer = SingleValueVisualizer;\nexport { SingleValueItem };\n"]}
1
+ {"version":3,"sources":["../../../../src/components/SingleValueContainer/SingleValueVisualizer.tsx"],"names":[],"mappings":";;;;;;;;;AASO,SAAS,qBAAsB,CAAA;AAAA,EACrC,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAA6C,EAAA;AAC5C,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,oBACV,GAAA,CAAC,QAAS,EAAA,EAAA,QAAA,kBAAW,GAAA,CAAA,KAAA,EAAA,EAAK,QAAK,EAAA,IAAA,CAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAC/C,EAAA,QAAA,kBAAA,IAAA,CAAC,KACA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAW,GAAG,MAAO,CAAA,cAAc,CAAC,CAAI,CAAA,EAAA,MAAA,CAAO,WAAW,CAAC,CAAA,CAAA;AAAA,UAE1D,QAAA,EAAA;AAAA;AAAA,OACF;AAAA,0BACC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,mBAAmB,GACxC,QAAiB,EAAA,gBAAA,CAAA,GAAA;AAAA,QACjB,CAAC,eACA,qBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACA,gBAAA;AAAA,YAEC,GAAG,eAAA;AAAA,YACJ,uBAAyB,EAAA,iBAAA;AAAA,YACzB,oBAAsB,EAAA;AAAA,WAAA;AAAA,UAHjB,CAAG,EAAA,eAAA,CAAgB,KAAK,CAAA,CAAA,EAAI,gBAAgB,KAAK,CAAA;AAAA;AAIvD,OAGH,EAAA;AAAA,KAAA,EACD,CACD,EAAA;AAAA,GACD,EAAA,CAAA;AAEF;AAKO,MAAM,oBAAuB,GAAA","file":"SingleValueVisualizer.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { CssReset } from \"@dhis2/ui\";\nimport { type ReactElement, Suspense } from \"react\";\nimport SingleValueItem from \"./components/SingleValueItem/SingleValueItem.js\";\nimport styles from \"./styles/SingleValueContainer.module.css\";\nimport { SingleValue, SingleValueVisualizerProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function SingleValueVisualizer({\n\ttitle,\n\tsingleValueItems,\n\tanimationDuration,\n\tanimationDelay,\n\tdisableAnimation,\n}: SingleValueVisualizerProps): ReactElement {\n\treturn (\n\t\t<div className=\"w-100 h-100\">\n\t\t\t<CssReset />\n\t\t\t<Suspense fallback={<div>{i18n.t(\"Loading ...\")}</div>}>\n\t\t\t\t<div>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={`${styles[\"font-x-large\"]} ${styles[\"font-bold\"]}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div className={styles[\"single-value-list\"]}>\n\t\t\t\t\t\t{singleValueItems.map(\n\t\t\t\t\t\t\t(singleValueItem: SingleValue) => (\n\t\t\t\t\t\t\t\t<SingleValueItem\n\t\t\t\t\t\t\t\t\tdisableAnimation={disableAnimation}\n\t\t\t\t\t\t\t\t\tkey={`${singleValueItem.label}-${singleValueItem.value}`}\n\t\t\t\t\t\t\t\t\t{...singleValueItem}\n\t\t\t\t\t\t\t\t\tglobalAnimationDuration={animationDuration}\n\t\t\t\t\t\t\t\t\tglobalAnimationDelay={animationDelay}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Suspense>\n\t\t</div>\n\t);\n}\n\n/**\n * @deprecated since `v2`. Use `SingleValueVisualizer` instead\n * */\nexport const SingleValueContainer = SingleValueVisualizer;\nexport { SingleValueItem };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.tsx"],"names":["value"],"mappings":";;;;;;;AAce,SAAR,eAAiC,CAAA;AAAA,EACvC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACD,CAAyC,EAAA;AACxC,EAAA,MAAM,eAAkB,GAAA,CAACA,MACxB,KAAA,IAAA,CAAK,aAAa,OAAS,EAAA;AAAA,IAC1B,QAAU,EAAA,SAAA;AAAA,IACV,uBAAuB,aAAiB,IAAA;AAAA,GACxC,CAAE,CAAA,MAAA,CAAOA,MAAK,CAAA;AAEhB,EAAA,MAAM,iBAAiB,SAAU,CAAA;AAAA,IAChC,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAA,KAAA;AAAA,IACL,IAAA,EAAM,EAAE,GAAA,EAAK,CAAE,EAAA;AAAA,IACf,MAAQ,EAAA;AAAA,MACP,QAAA,EAAU,qBAAqB,uBAA2B,IAAA;AAAA,KAC3D;AAAA,IACA,KAAA,EAAO,kBAAkB,oBAAwB,IAAA;AAAA,GACjD,CAAA;AAED,EAAA,MAAM,cAAiB,GAAA,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA;AACzC,EAAA,4BACE,KAAI,EAAA,EAAA,SAAA,EAAW,GAAG,MAAO,CAAA,mBAAmB,CAAC,CAC7C,YAAA,CAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,YAAY,GAAI,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,oBAC5C,GAAA,CAAA,OAAA,EAAA,EAAQ,OAAS,EAAA,UAAA,CAAW,cAAc,CAC1C,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAS,CAAA,GAAA;AAAA,MAAT;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,MAAO,CAAA,WAAW,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,eAAe,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,QAEpF,yBAAe,GAAI,CAAA,EAAA;AAAA,UAAG,CAACA,MACvB,KAAA,eAAA,CAAgB,IAAK,CAAA,KAAA,CAAMA,MAAK,CAAC;AAAA;AAClC;AAAA,KAEF,EAAA,CAAA;AAAA,IACC,6BACC,GAAA,CAAA,qBAAA,EAAA,EAAsB,OAAc,UAAwB,EAAA,CAAA,uBAE5D,MAAK,EAAA,EAAA;AAAA,GAER,EAAA,CAAA;AAEF","file":"SingleValueItem.js","sourcesContent":["import { Tooltip } from \"@dhis2/ui\";\nimport { capitalize } from \"lodash\";\nimport React from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport styles from \"../../styles/SingleValueContainer.module.css\";\nimport { SingleValue } from \"../../types/props.js\";\nimport SingleValuePercentage from \"./SingleValuePercentage.js\";\n\ninterface SingleValueProps extends SingleValue {\n\tglobalAnimationDelay?: number;\n\tglobalAnimationDuration?: number;\n\tdisableAnimation?: boolean;\n}\n\nexport default function SingleValueItem({\n\tlabel,\n\tvalue,\n\tcolor,\n\tpercentage,\n\tanimationDuration,\n\tanimationDelay,\n\tglobalAnimationDelay,\n\tdecimalPlaces,\n\tglobalAnimationDuration,\n\tdisableAnimation,\n}: SingleValueProps): React.ReactElement {\n\tconst numberFormatter = (value: number) =>\n\t\tIntl.NumberFormat(\"en-US\", {\n\t\t\tnotation: \"compact\",\n\t\t\tmaximumFractionDigits: decimalPlaces ?? 1,\n\t\t}).format(value);\n\n\tconst sanitizedValue = useSpring({\n\t\tcancel: disableAnimation,\n\t\tval: value,\n\t\tfrom: { val: 0 },\n\t\tconfig: {\n\t\t\tduration: animationDuration ?? globalAnimationDuration ?? 1000,\n\t\t},\n\t\tdelay: animationDelay ?? globalAnimationDelay ?? 10,\n\t});\n\n\tconst tooltipContent = `${label}: ${value}`;\n\treturn (\n\t\t<div className={`${styles[\"single-value-item\"]} text-center`}>\n\t\t\t<div className={styles[\"font-large\"]}>{label}</div>\n\t\t\t<Tooltip content={capitalize(tooltipContent)}>\n\t\t\t\t<animated.div\n\t\t\t\t\tclassName={`${styles[\"font-bold\"]} ${styles[\"font-xx-large\"]} ${styles[\"padding-top\"]}`}\n\t\t\t\t>\n\t\t\t\t\t{sanitizedValue.val.to((value) =>\n\t\t\t\t\t\tnumberFormatter(Math.floor(value)),\n\t\t\t\t\t)}\n\t\t\t\t</animated.div>\n\t\t\t</Tooltip>\n\t\t\t{percentage ? (\n\t\t\t\t<SingleValuePercentage color={color} percentage={percentage} />\n\t\t\t) : (\n\t\t\t\t<span></span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.tsx"],"names":["value"],"mappings":";;;;;;;AAce,SAAR,eAAiC,CAAA;AAAA,EACvC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACD,CAAmC,EAAA;AAClC,EAAA,MAAM,eAAkB,GAAA,CAACA,MACxB,KAAA,IAAA,CAAK,aAAa,OAAS,EAAA;AAAA,IAC1B,QAAU,EAAA,SAAA;AAAA,IACV,uBAAuB,aAAiB,IAAA;AAAA,GACxC,CAAE,CAAA,MAAA,CAAOA,MAAK,CAAA;AAEhB,EAAA,MAAM,iBAAiB,SAAU,CAAA;AAAA,IAChC,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAA,KAAA;AAAA,IACL,IAAA,EAAM,EAAE,GAAA,EAAK,CAAE,EAAA;AAAA,IACf,MAAQ,EAAA;AAAA,MACP,QAAA,EAAU,qBAAqB,uBAA2B,IAAA;AAAA,KAC3D;AAAA,IACA,KAAA,EAAO,kBAAkB,oBAAwB,IAAA;AAAA,GACjD,CAAA;AAED,EAAA,MAAM,cAAiB,GAAA,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA;AACzC,EAAA,4BACE,KAAI,EAAA,EAAA,SAAA,EAAW,GAAG,MAAO,CAAA,mBAAmB,CAAC,CAC7C,YAAA,CAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,YAAY,GAAI,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,oBAC5C,GAAA,CAAA,OAAA,EAAA,EAAQ,OAAS,EAAA,UAAA,CAAW,cAAc,CAC1C,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAS,CAAA,GAAA;AAAA,MAAT;AAAA,QACA,SAAW,EAAA,CAAA,EAAG,MAAO,CAAA,WAAW,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,eAAe,CAAC,CAAA,CAAA,EAAI,MAAO,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,QAEpF,yBAAe,GAAI,CAAA,EAAA;AAAA,UAAG,CAACA,MACvB,KAAA,eAAA,CAAgB,IAAK,CAAA,KAAA,CAAMA,MAAK,CAAC;AAAA;AAClC;AAAA,KAEF,EAAA,CAAA;AAAA,IACC,6BACC,GAAA,CAAA,qBAAA,EAAA,EAAsB,OAAc,UAAwB,EAAA,CAAA,uBAE5D,MAAK,EAAA,EAAA;AAAA,GAER,EAAA,CAAA;AAEF","file":"SingleValueItem.js","sourcesContent":["import { Tooltip } from \"@dhis2/ui\";\nimport { capitalize } from \"lodash\";\nimport { type ReactElement } from \"react\";\nimport { animated, useSpring } from \"react-spring\";\nimport styles from \"../../styles/SingleValueContainer.module.css\";\nimport { SingleValue } from \"../../types/props.js\";\nimport SingleValuePercentage from \"./SingleValuePercentage.js\";\n\ninterface SingleValueProps extends SingleValue {\n\tglobalAnimationDelay?: number;\n\tglobalAnimationDuration?: number;\n\tdisableAnimation?: boolean;\n}\n\nexport default function SingleValueItem({\n\tlabel,\n\tvalue,\n\tcolor,\n\tpercentage,\n\tanimationDuration,\n\tanimationDelay,\n\tglobalAnimationDelay,\n\tdecimalPlaces,\n\tglobalAnimationDuration,\n\tdisableAnimation,\n}: SingleValueProps): ReactElement {\n\tconst numberFormatter = (value: number) =>\n\t\tIntl.NumberFormat(\"en-US\", {\n\t\t\tnotation: \"compact\",\n\t\t\tmaximumFractionDigits: decimalPlaces ?? 1,\n\t\t}).format(value);\n\n\tconst sanitizedValue = useSpring({\n\t\tcancel: disableAnimation,\n\t\tval: value,\n\t\tfrom: { val: 0 },\n\t\tconfig: {\n\t\t\tduration: animationDuration ?? globalAnimationDuration ?? 1000,\n\t\t},\n\t\tdelay: animationDelay ?? globalAnimationDelay ?? 10,\n\t});\n\n\tconst tooltipContent = `${label}: ${value}`;\n\treturn (\n\t\t<div className={`${styles[\"single-value-item\"]} text-center`}>\n\t\t\t<div className={styles[\"font-large\"]}>{label}</div>\n\t\t\t<Tooltip content={capitalize(tooltipContent)}>\n\t\t\t\t<animated.div\n\t\t\t\t\tclassName={`${styles[\"font-bold\"]} ${styles[\"font-xx-large\"]} ${styles[\"padding-top\"]}`}\n\t\t\t\t>\n\t\t\t\t\t{sanitizedValue.val.to((value) =>\n\t\t\t\t\t\tnumberFormatter(Math.floor(value)),\n\t\t\t\t\t)}\n\t\t\t\t</animated.div>\n\t\t\t</Tooltip>\n\t\t\t{percentage ? (\n\t\t\t\t<SingleValuePercentage color={color} percentage={percentage} />\n\t\t\t) : (\n\t\t\t\t<span></span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.tsx"],"names":[],"mappings":";;;;AAIe,SAAR,qBAAuC,CAAA;AAAA,EAC7C,UAAA;AAAA,EACA;AACD,CAA4B,EAAA;AAC3B,EAAA,MAAM,KAAQ,GAAA,MAAA;AACd,EACC,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,OACd,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,OAAO,eAAe,CAAA;AAAA,MACjC,KAAA;AAAA,MACA,MAAQ,EAAA;AAAA;AAAA,GAEV,EAAA,CAAA;AAEF","file":"SingleValuePercentage.js","sourcesContent":["import { LinearLoader } from \"@dhis2/ui\";\nimport React from \"react\";\nimport styles from \"../../styles/SingleValueContainer.module.css\";\n\nexport default function SingleValuePercentage({\n\tpercentage,\n\tcolor,\n}: any): React.ReactElement {\n\tconst width = \"100%\";\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t<LinearLoader\n\t\t\t\tclassName={styles[\"percent-value\"]}\n\t\t\t\twidth={width}\n\t\t\t\tamount={percentage}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.tsx"],"names":[],"mappings":";;;;AAIe,SAAR,qBAAuC,CAAA;AAAA,EAC7C,UAAA;AAAA,EACA;AACD,CAAsB,EAAA;AACrB,EAAA,MAAM,KAAQ,GAAA,MAAA;AACd,EACC,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,OACd,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,OAAO,eAAe,CAAA;AAAA,MACjC,KAAA;AAAA,MACA,MAAQ,EAAA;AAAA;AAAA,GAEV,EAAA,CAAA;AAEF","file":"SingleValuePercentage.js","sourcesContent":["import { LinearLoader } from \"@dhis2/ui\";\nimport { type ReactElement } from \"react\";\nimport styles from \"../../styles/SingleValueContainer.module.css\";\n\nexport default function SingleValuePercentage({\n\tpercentage,\n\tcolor,\n}: any): ReactElement {\n\tconst width = \"100%\";\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t<LinearLoader\n\t\t\t\tclassName={styles[\"percent-value\"]}\n\t\t\t\twidth={width}\n\t\t\t\tamount={percentage}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/AnalyticsDataProvider/index.tsx"],"names":["dimensions","filters"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useMemo } from \"react\";\nimport { Analytics, AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { useDimensions } from \"../DimensionsProvider/index.js\";\nimport { useDataQuery } from \"@dhis2/app-runtime\";\nimport { useLayout } from \"../LayoutProvider/index.js\";\nimport { forEach, set } from \"lodash\";\n\nconst AnalyticsContext = createContext<\n\t{ loading: boolean; analytics: Analytics } | undefined\n>(undefined);\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ dimensions, filters }: any) => {\n\t\t\treturn {\n\t\t\t\tdimension: Object.keys(dimensions).map(\n\t\t\t\t\t(dimension) =>\n\t\t\t\t\t\t`${dimension}:${dimensions[dimension]?.join(\";\")}`,\n\t\t\t\t),\n\t\t\t\tfilter: Object.keys(filters).map(\n\t\t\t\t\t(dimension) =>\n\t\t\t\t\t\t`${dimension}:${filters[dimension]?.join(\";\")}`,\n\t\t\t\t),\n\t\t\t\tincludeMetadataDetails: true,\n\t\t\t};\n\t\t},\n\t},\n};\n\nexport interface DataProviderProps {\n\tchildren: React.ReactNode;\n}\n\nexport function useAnalyticsData() {\n\treturn useContext(AnalyticsContext) ?? { analytics: {}, loading: false };\n}\n\nexport function AnalyticsDataProvider({ children }: DataProviderProps) {\n\tconst [analyticsDimensions] = useDimensions();\n\tconst [layout] = useLayout();\n\tconst { dimensions, filters } = useMemo(() => {\n\t\tconst dimensions = {};\n\t\tconst filters = {};\n\n\t\tforEach(\n\t\t\t[...(layout?.columns ?? []), ...(layout?.rows ?? [])],\n\t\t\t(dimension) => {\n\t\t\t\tset(\n\t\t\t\t\tdimensions,\n\t\t\t\t\t[dimension],\n\t\t\t\t\t(analyticsDimensions as AnalyticsDimension)?.[dimension],\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t\tforEach([...(layout?.filters ?? [])], (dimension) => {\n\t\t\tset(\n\t\t\t\tfilters,\n\t\t\t\t[dimension],\n\t\t\t\t(analyticsDimensions as AnalyticsDimension)?.[dimension],\n\t\t\t);\n\t\t});\n\n\t\treturn {\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t};\n\t}, [layout, analyticsDimensions]);\n\n\tconst {\n\t\tdata: analytics,\n\t\terror,\n\t\tloading,\n\t\trefetch,\n\t\tcalled,\n\t} = useDataQuery(analyticsQuery, {\n\t\tvariables: {\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t},\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\trefetch({\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t});\n\t}, [dimensions, filters]);\n\n\tuseEffect(() => {\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\t}, [error]);\n\n\treturn (\n\t\t<AnalyticsContext.Provider\n\t\t\tvalue={{ analytics: analytics?.analytics as Analytics, loading }}\n\t\t>\n\t\t\t{children}\n\t\t</AnalyticsContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/AnalyticsDataProvider/index.tsx"],"names":["dimensions","filters"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from \"react\";\nimport { Analytics, AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { useDimensions } from \"../DimensionsProvider/index.js\";\nimport { useDataQuery } from \"@dhis2/app-runtime\";\nimport { useLayout } from \"../LayoutProvider/index.js\";\nimport { forEach, set } from \"lodash\";\n\nconst AnalyticsContext = createContext<\n\t{ loading: boolean; analytics: Analytics } | undefined\n>(undefined);\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ dimensions, filters }: any) => {\n\t\t\treturn {\n\t\t\t\tdimension: Object.keys(dimensions).map(\n\t\t\t\t\t(dimension) =>\n\t\t\t\t\t\t`${dimension}:${dimensions[dimension]?.join(\";\")}`,\n\t\t\t\t),\n\t\t\t\tfilter: Object.keys(filters).map(\n\t\t\t\t\t(dimension) =>\n\t\t\t\t\t\t`${dimension}:${filters[dimension]?.join(\";\")}`,\n\t\t\t\t),\n\t\t\t\tincludeMetadataDetails: true,\n\t\t\t};\n\t\t},\n\t},\n};\n\nexport interface DataProviderProps {\n\tchildren: ReactNode;\n}\n\nexport function useAnalyticsData() {\n\treturn useContext(AnalyticsContext) ?? { analytics: {}, loading: false };\n}\n\nexport function AnalyticsDataProvider({ children }: DataProviderProps) {\n\tconst [analyticsDimensions] = useDimensions();\n\tconst [layout] = useLayout();\n\tconst { dimensions, filters } = useMemo(() => {\n\t\tconst dimensions = {};\n\t\tconst filters = {};\n\n\t\tforEach(\n\t\t\t[...(layout?.columns ?? []), ...(layout?.rows ?? [])],\n\t\t\t(dimension) => {\n\t\t\t\tset(\n\t\t\t\t\tdimensions,\n\t\t\t\t\t[dimension],\n\t\t\t\t\t(analyticsDimensions as AnalyticsDimension)?.[dimension],\n\t\t\t\t);\n\t\t\t},\n\t\t);\n\t\tforEach([...(layout?.filters ?? [])], (dimension) => {\n\t\t\tset(\n\t\t\t\tfilters,\n\t\t\t\t[dimension],\n\t\t\t\t(analyticsDimensions as AnalyticsDimension)?.[dimension],\n\t\t\t);\n\t\t});\n\n\t\treturn {\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t};\n\t}, [layout, analyticsDimensions]);\n\n\tconst {\n\t\tdata: analytics,\n\t\terror,\n\t\tloading,\n\t\trefetch,\n\t\tcalled,\n\t} = useDataQuery(analyticsQuery, {\n\t\tvariables: {\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t},\n\t\tlazy: true,\n\t});\n\n\tuseEffect(() => {\n\t\trefetch({\n\t\t\tdimensions,\n\t\t\tfilters,\n\t\t});\n\t}, [dimensions, filters]);\n\n\tuseEffect(() => {\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\t}, [error]);\n\n\treturn (\n\t\t<AnalyticsContext.Provider\n\t\t\tvalue={{ analytics: analytics?.analytics as Analytics, loading }}\n\t\t>\n\t\t\t{children}\n\t\t</AnalyticsContext.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":";;;;AAUO,MAAM,iBAAiB,aAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI;AACL,CAAC;AACM,MAAM,oBAAuB,GAAA,aAAA;AAAA,EACnC;AACD;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA;AACxC,EAAA,GAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA;AACpC,EAAO,OAAA,YAAA;AACR;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAAC,UAAW,CAAA,cAAc,CAAG,EAAA,UAAA,CAAW,oBAAoB,CAAC,CAAA;AAIrE;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,UAAA,CAAW,SAAS,UAAU,CAAA;AAExD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK;AAAC,OACjC,CAAA;AAAA,KACD,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,uBACE,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAA,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: React.ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":";;;;AAgBO,MAAM,iBAAiB,aAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI;AACL,CAAC;AACM,MAAM,oBAAuB,GAAA,aAAA;AAAA,EACnC;AACD;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA;AACxC,EAAA,GAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA;AACpC,EAAO,OAAA,YAAA;AACR;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAAC,UAAW,CAAA,cAAc,CAAG,EAAA,UAAA,CAAW,oBAAoB,CAAC,CAAA;AAIrE;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,UAAA,CAAW,SAAS,UAAU,CAAA;AAExD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK;AAAC,OACjC,CAAA;AAAA,KACD,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,uBACE,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAA,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import {\n\tcreateContext,\n\ttype ReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseReducer,\n} from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/LayoutProvider/index.tsx"],"names":[],"mappings":";;;AAca,MAAA,WAAA,GAAc,cAAkC,MAAS;AAE/D,SAAS,SAAY,GAAA;AAC3B,EAAA,OAAO,CAAC,UAAA,CAAW,WAAW,CAAA,IAAK,EAAE,IAAM,EAAA,EAAI,EAAA,OAAA,EAAS,EAAC,EAAG,OAAS,EAAA,IAAI,CAAA;AAC1E;AAEO,SAAS,cAAe,CAAA;AAAA,EAC9B,aAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,aAAa,CAAA;AAElD,EAAA,2BACE,WAAY,CAAA,QAAA,EAAZ,EAAqB,KAAA,EAAO,QAAS,QAAS,EAAA,CAAA;AAEjD","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState } from \"react\";\nimport { Dimension } from \"../DimensionsProvider/index.js\";\n\nexport interface Layout {\n\trows: Dimension[];\n\tcolumns: Dimension[];\n\tfilters: Dimension[];\n}\n\nexport interface LayoutProviderProps {\n\tchildren: React.ReactNode;\n\tdefaultLayout: Layout;\n}\n\nexport const LayoutState = createContext<Layout | undefined>(undefined);\n\nexport function useLayout() {\n\treturn [useContext(LayoutState) ?? { rows: [], filters: [], columns: [] }];\n}\n\nexport function LayoutProvider({\n\tdefaultLayout,\n\tchildren,\n}: LayoutProviderProps) {\n\tconst [layout, setLayout] = useState(defaultLayout);\n\n\treturn (\n\t\t<LayoutState.Provider value={layout}>{children}</LayoutState.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/LayoutProvider/index.tsx"],"names":[],"mappings":";;;AAca,MAAA,WAAA,GAAc,cAAkC,MAAS;AAE/D,SAAS,SAAY,GAAA;AAC3B,EAAA,OAAO,CAAC,UAAA,CAAW,WAAW,CAAA,IAAK,EAAE,IAAM,EAAA,EAAI,EAAA,OAAA,EAAS,EAAC,EAAG,OAAS,EAAA,IAAI,CAAA;AAC1E;AAEO,SAAS,cAAe,CAAA;AAAA,EAC9B,aAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,aAAa,CAAA;AAElD,EAAA,2BACE,WAAY,CAAA,QAAA,EAAZ,EAAqB,KAAA,EAAO,QAAS,QAAS,EAAA,CAAA;AAEjD","file":"index.js","sourcesContent":["import { createContext, type ReactNode, useContext, useState } from \"react\";\nimport { Dimension } from \"../DimensionsProvider/index.js\";\n\nexport interface Layout {\n\trows: Dimension[];\n\tcolumns: Dimension[];\n\tfilters: Dimension[];\n}\n\nexport interface LayoutProviderProps {\n\tchildren: ReactNode;\n\tdefaultLayout: Layout;\n}\n\nexport const LayoutState = createContext<Layout | undefined>(undefined);\n\nexport function useLayout() {\n\treturn [useContext(LayoutState) ?? { rows: [], filters: [], columns: [] }];\n}\n\nexport function LayoutProvider({\n\tdefaultLayout,\n\tchildren,\n}: LayoutProviderProps) {\n\tconst [layout, setLayout] = useState(defaultLayout);\n\n\treturn (\n\t\t<LayoutState.Provider value={layout}>{children}</LayoutState.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationDimensionSelector/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { Button, IconClock24, IconLocation24, Tooltip } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useDimensions } from \"../DimensionsProvider/index.js\";\nimport { OrgUnitSelectorModal, PeriodSelectorModal } from \"@hisptz/dhis2-ui\";\nimport { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport { getOrgUnitSelectionFromIds } from \"../VisualizationSelector/index.js\";\nimport { getOrgUnitsSelection } from \"../../../Map/utils/map.js\";\n\nexport function VisualizationDimensionSelector({\n\tshowPeriodSelector,\n\tshowOrgUnitSelector,\n}: {\n\tshowPeriodSelector?: boolean;\n\tshowOrgUnitSelector?: boolean;\n}) {\n\tconst [dimensions, setDimensions] = useDimensions();\n\tconst periods = useMemo(() => dimensions.pe, [dimensions.pe]);\n\tconst orgUnitSelection = useMemo(\n\t\t() => getOrgUnitSelectionFromIds(dimensions.ou ?? []),\n\t\t[dimensions.ou],\n\t);\n\tconst [openFilter, setOpenFilter] = useState<\"pe\" | \"ou\" | undefined>();\n\n\tconst onFilterUpdate = useCallback(\n\t\t(type: \"ou\" | \"pe\") => (data: OrgUnitSelection | any) => {\n\t\t\tsetOpenFilter(undefined);\n\t\t\tif (type === \"ou\") {\n\t\t\t\tsetDimensions({\n\t\t\t\t\tdimension: \"ou\",\n\t\t\t\t\tvalue: getOrgUnitsSelection(data),\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (type === \"pe\") {\n\t\t\t\tsetDimensions({ dimension: \"pe\", value: data });\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[setDimensions],\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div style={{ display: \"flex\", gap: 8 }}>\n\t\t\t\t{showPeriodSelector && (\n\t\t\t\t\t<Tooltip content={i18n.t(\"Period\")}>\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PeriodSelectorModal\n\t\t\t\t\t\t\t\tposition=\"middle\"\n\t\t\t\t\t\t\t\tenablePeriodSelector\n\t\t\t\t\t\t\t\tselectedPeriods={periods}\n\t\t\t\t\t\t\t\tonClose={() => setOpenFilter(undefined)}\n\t\t\t\t\t\t\t\thide={openFilter !== \"pe\"}\n\t\t\t\t\t\t\t\tonUpdate={onFilterUpdate(\"pe\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={() => setOpenFilter(\"pe\")}\n\t\t\t\t\t\t\t\ticon={<IconClock24 />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t\t{showOrgUnitSelector && (\n\t\t\t\t\t<Tooltip content={i18n.t(\"Location\")}>\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<OrgUnitSelectorModal\n\t\t\t\t\t\t\t\tshowUserOptions\n\t\t\t\t\t\t\t\tsearchable\n\t\t\t\t\t\t\t\ttitle={i18n.t(\"Select location(s)\")}\n\t\t\t\t\t\t\t\tvalue={orgUnitSelection}\n\t\t\t\t\t\t\t\tonClose={() => setOpenFilter(undefined)}\n\t\t\t\t\t\t\t\thide={openFilter !== \"ou\"}\n\t\t\t\t\t\t\t\tonUpdate={onFilterUpdate(\"ou\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={() => setOpenFilter(\"ou\")}\n\t\t\t\t\t\t\t\ticon={<IconLocation24 />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationDimensionSelector/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { Button, IconClock24, IconLocation24, Tooltip } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useDimensions } from \"../DimensionsProvider/index.js\";\nimport { OrgUnitSelectorModal, PeriodSelectorModal } from \"@hisptz/dhis2-ui\";\nimport { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport { getOrgUnitSelectionFromIds } from \"../VisualizationSelector/index.js\";\nimport { getOrgUnitsSelection } from \"../../../Map/utils/map.js\";\n\nexport function VisualizationDimensionSelector({\n\tshowPeriodSelector,\n\tshowOrgUnitSelector,\n}: {\n\tshowPeriodSelector?: boolean;\n\tshowOrgUnitSelector?: boolean;\n}) {\n\tconst [dimensions, setDimensions] = useDimensions();\n\tconst periods = useMemo(() => dimensions.pe, [dimensions.pe]);\n\tconst orgUnitSelection = useMemo(\n\t\t() => getOrgUnitSelectionFromIds(dimensions.ou ?? []),\n\t\t[dimensions.ou],\n\t);\n\tconst [openFilter, setOpenFilter] = useState<\"pe\" | \"ou\" | undefined>();\n\n\tconst onFilterUpdate = useCallback(\n\t\t(type: \"ou\" | \"pe\") => (data: OrgUnitSelection | any) => {\n\t\t\tsetOpenFilter(undefined);\n\t\t\tif (type === \"ou\") {\n\t\t\t\tsetDimensions({\n\t\t\t\t\tdimension: \"ou\",\n\t\t\t\t\tvalue: getOrgUnitsSelection(data),\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (type === \"pe\") {\n\t\t\t\tsetDimensions({ dimension: \"pe\", value: data });\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[setDimensions],\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div style={{ display: \"flex\", gap: 8 }}>\n\t\t\t\t{showPeriodSelector && (\n\t\t\t\t\t<Tooltip content={i18n.t(\"Period\")}>\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PeriodSelectorModal\n\t\t\t\t\t\t\t\tposition=\"middle\"\n\t\t\t\t\t\t\t\tenablePeriodSelector\n\t\t\t\t\t\t\t\tselectedPeriods={periods}\n\t\t\t\t\t\t\t\tonClose={() => setOpenFilter(undefined)}\n\t\t\t\t\t\t\t\thide={openFilter !== \"pe\"}\n\t\t\t\t\t\t\t\tonUpdate={onFilterUpdate(\"pe\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={() => setOpenFilter(\"pe\")}\n\t\t\t\t\t\t\t\ticon={<IconClock24 />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t\t{showOrgUnitSelector && (\n\t\t\t\t\t<Tooltip content={i18n.t(\"Location\")}>\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<OrgUnitSelectorModal\n\t\t\t\t\t\t\t\tshowUserOptions\n\t\t\t\t\t\t\t\tsearchable\n\t\t\t\t\t\t\t\ttitle={i18n.t(\"Select location(s)\")}\n\t\t\t\t\t\t\t\tvalue={orgUnitSelection}\n\t\t\t\t\t\t\t\tonClose={() => setOpenFilter(undefined)}\n\t\t\t\t\t\t\t\thide={openFilter !== \"ou\"}\n\t\t\t\t\t\t\t\tonUpdate={onFilterUpdate(\"ou\")}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tonClick={() => setOpenFilter(\"ou\")}\n\t\t\t\t\t\t\t\ticon={<IconLocation24 />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationProvider/index.tsx"],"names":[],"mappings":";;;;;;AAmBO,SAAS,qBAAsB,CAAA;AAAA,EACrC,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAA+B,EAAA;AAC9B,EAAA,2BACE,kBAAmB,EAAA,EAAA,UAAA,EACnB,QAAC,kBAAA,GAAA,CAAA,yBAAA,EAAA,EAA0B,QAAgB,WAAa,EAAA,IAAA,EACvD,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA,EAAe,eAAe,MAC9B,EAAA,QAAA,kBAAA,GAAA,CAAC,yBAAuB,QAAS,EAAA,CAAA,EAClC,GACD,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React from \"react\";\nimport { Layout, LayoutProvider } from \"../LayoutProvider/index.js\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { DimensionsProvider } from \"../DimensionsProvider/index.js\";\nimport { AnalyticsDataProvider } from \"../AnalyticsDataProvider/index.js\";\nimport {\n\tVisualizationType,\n\tVisualizationTypeProvider,\n} from \"../VisualizationTypeProvider/index.js\";\nimport { VisualizationConfig } from \"../../index.js\";\n\nexport interface VisualizationProviderProps {\n\tchildren: React.ReactNode;\n\tlayout: Layout;\n\tdimensions: AnalyticsDimension;\n\ttype: VisualizationType;\n\tconfig: VisualizationConfig;\n}\n\nexport function VisualizationProvider({\n\tlayout,\n\tdimensions,\n\tchildren,\n\ttype,\n\tconfig,\n}: VisualizationProviderProps) {\n\treturn (\n\t\t<DimensionsProvider dimensions={dimensions}>\n\t\t\t<VisualizationTypeProvider config={config} defaultType={type}>\n\t\t\t\t<LayoutProvider defaultLayout={layout}>\n\t\t\t\t\t<AnalyticsDataProvider>{children}</AnalyticsDataProvider>\n\t\t\t\t</LayoutProvider>\n\t\t\t</VisualizationTypeProvider>\n\t\t</DimensionsProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationProvider/index.tsx"],"names":[],"mappings":";;;;;;AAmBO,SAAS,qBAAsB,CAAA;AAAA,EACrC,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAA+B,EAAA;AAC9B,EAAA,2BACE,kBAAmB,EAAA,EAAA,UAAA,EACnB,QAAC,kBAAA,GAAA,CAAA,yBAAA,EAAA,EAA0B,QAAgB,WAAa,EAAA,IAAA,EACvD,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA,EAAe,eAAe,MAC9B,EAAA,QAAA,kBAAA,GAAA,CAAC,yBAAuB,QAAS,EAAA,CAAA,EAClC,GACD,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { type ReactNode } from \"react\";\nimport { Layout, LayoutProvider } from \"../LayoutProvider/index.js\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { DimensionsProvider } from \"../DimensionsProvider/index.js\";\nimport { AnalyticsDataProvider } from \"../AnalyticsDataProvider/index.js\";\nimport {\n\tVisualizationType,\n\tVisualizationTypeProvider,\n} from \"../VisualizationTypeProvider/index.js\";\nimport { VisualizationConfig } from \"../../index.js\";\n\nexport interface VisualizationProviderProps {\n\tchildren: ReactNode;\n\tlayout: Layout;\n\tdimensions: AnalyticsDimension;\n\ttype: VisualizationType;\n\tconfig: VisualizationConfig;\n}\n\nexport function VisualizationProvider({\n\tlayout,\n\tdimensions,\n\tchildren,\n\ttype,\n\tconfig,\n}: VisualizationProviderProps) {\n\treturn (\n\t\t<DimensionsProvider dimensions={dimensions}>\n\t\t\t<VisualizationTypeProvider config={config} defaultType={type}>\n\t\t\t\t<LayoutProvider defaultLayout={layout}>\n\t\t\t\t\t<AnalyticsDataProvider>{children}</AnalyticsDataProvider>\n\t\t\t\t</LayoutProvider>\n\t\t\t</VisualizationTypeProvider>\n\t\t</DimensionsProvider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationSelector/index.tsx"],"names":["dimension","value"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useMemo } from \"react\";\nimport { useVisualizationType } from \"../VisualizationTypeProvider/index.js\";\nimport { useAnalyticsData } from \"../AnalyticsDataProvider/index.js\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport {\n\tDHIS2PivotTable,\n\tDHIS2PivotTableOptions,\n} from \"../../../DHIS2PivotTable/index.js\";\nimport { useLayout } from \"../LayoutProvider/index.js\";\nimport { filter, find, findIndex, forEach, mapValues, set } from \"lodash\";\nimport { Dimension, useDimensions } from \"../DimensionsProvider/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { ChartConfig, DHIS2Chart } from \"../../../ChartAnalytics/index.js\";\nimport { VisualizationConfig } from \"../../index.js\";\nimport { DHIS2Map, MapProps } from \"../../../Map/index.js\";\nimport { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport {\n\tThematicLayerConfig,\n\tThematicLayerRawData,\n} from \"../../../Map/components/MapLayer/interfaces/index.js\";\nimport type { PivotTableLayoutProps } from \"../../../DHIS2PivotTable/components/Table/index.js\";\n\nexport interface VisualizationSelectorProps {\n\tconfig: VisualizationConfig;\n}\n\nexport function getDimensionLabel(dimension: Dimension) {\n\tswitch (dimension) {\n\t\tcase \"pe\":\n\t\t\treturn i18n.t(\"Period\");\n\t\tcase \"ou\":\n\t\t\treturn i18n.t(\"Organisation unit\");\n\t\tcase \"dx\":\n\t\t\treturn i18n.t(\"Data\");\n\t\tdefault:\n\t\t\treturn \"\";\n\t}\n}\n\nexport function getOrgUnitSelectionFromIds(ous: string[]) {\n\tconst orgUnitSelection: OrgUnitSelection = {\n\t\torgUnits: [],\n\t};\n\tforEach(ous, (ou) => {\n\t\tif (ou === \"USER_ORGUNIT\") {\n\t\t\tset(orgUnitSelection, [\"userOrgUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_CHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_GRANDCHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubX2Unit\"], true);\n\t\t} else {\n\t\t\tconst orgUnits = [...(orgUnitSelection.orgUnits ?? [])];\n\t\t\torgUnits.push({\n\t\t\t\tid: ou,\n\t\t\t\tchildren: [],\n\t\t\t\tpath: \"\",\n\t\t\t});\n\t\t\tset(orgUnitSelection, [\"orgUnits\"], orgUnits);\n\t\t}\n\t});\n\treturn orgUnitSelection;\n}\n\nexport function PivotTableRenderer({\n\toptions,\n}: {\n\toptions: DHIS2PivotTableOptions & PivotTableLayoutProps;\n}) {\n\tconst [layout] = useLayout();\n\tconst { analytics } = useAnalyticsData();\n\n\tconst sanitizedLayout = useMemo(() => {\n\t\treturn mapValues(layout, (dimension) =>\n\t\t\tdimension.map((dimension) => ({\n\t\t\t\tdimension,\n\t\t\t\tlabel: getDimensionLabel(dimension),\n\t\t\t})),\n\t\t);\n\t}, [layout]);\n\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DHIS2PivotTable\n\t\t\ttableProps={{\n\t\t\t\tscrollHeight: options.scrollHeight ?? \"100%\",\n\t\t\t\tscrollWidth: options.scrollWidth ?? \"100%\",\n\t\t\t\twidth: options.width ?? \"100%\",\n\t\t\t}}\n\t\t\tanalytics={analytics}\n\t\t\tconfig={{ layout: sanitizedLayout, options }}\n\t\t/>\n\t);\n}\n\nexport function ChartRenderer({ options }: { options: ChartConfig }) {\n\tconst { analytics } = useAnalyticsData();\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\treturn <DHIS2Chart analytics={analytics} config={{ ...options }} />;\n}\n\nexport function MapRenderer({\n\toptions,\n}: {\n\toptions: Omit<MapProps, \"orgUnitSelection\" | \"periodSelection\">;\n}) {\n\tconst [dimensions] = useDimensions();\n\tconst { analytics } = useAnalyticsData();\n\tconst orgUnitSelection: OrgUnitSelection = useMemo(() => {\n\t\treturn getOrgUnitSelectionFromIds(dimensions.ou ?? []);\n\t}, [dimensions.ou]);\n\n\tconst thematicLayers: ThematicLayerConfig[] = useMemo(() => {\n\t\tconst valueIndex =\n\t\t\tfindIndex(analytics.headers, [\"name\", \"value\"]) ?? -1;\n\t\treturn (\n\t\t\tanalytics.metaData?.dimensions[\"dx\"]?.map((dataId) => {\n\t\t\t\tconst config = find(options.thematicLayers, [\"id\", dataId]);\n\t\t\t\tconst data: ThematicLayerRawData[] =\n\t\t\t\t\tanalytics.metaData?.dimensions?.ou?.map((ouId) => {\n\t\t\t\t\t\tconst values = filter(\n\t\t\t\t\t\t\tanalytics.rows,\n\t\t\t\t\t\t\t(row) => row.includes(dataId) && row.includes(ouId),\n\t\t\t\t\t\t) as unknown as string[];\n\t\t\t\t\t\tconst value = values.reduce(\n\t\t\t\t\t\t\t(acc, value) => acc + parseFloat(value[valueIndex]),\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: value,\n\t\t\t\t\t\t\tdataItem: dataId,\n\t\t\t\t\t\t\torgUnit: ouId,\n\t\t\t\t\t\t};\n\t\t\t\t\t}) ?? [];\n\t\t\t\treturn {\n\t\t\t\t\t...config,\n\t\t\t\t\tdata,\n\t\t\t\t} as ThematicLayerConfig;\n\t\t\t}) ?? []\n\t\t);\n\t}, [analytics]);\n\n\treturn (\n\t\t<DHIS2Map\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\tthematicLayers={thematicLayers}\n\t\t/>\n\t);\n}\n\nexport function VisualizationSelector({ config }: VisualizationSelectorProps) {\n\tconst [type] = useVisualizationType();\n\tconst { analytics, loading } = useAnalyticsData();\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<CircularLoader small />\n\t\t\t</div>\n\t\t);\n\t}\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{type === \"pivotTable\" && (\n\t\t\t\t<PivotTableRenderer\n\t\t\t\t\toptions={config?.pivotTable as DHIS2PivotTableOptions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{type === \"chart\" && (\n\t\t\t\t<ChartRenderer options={config?.chart as ChartConfig} />\n\t\t\t)}\n\t\t\t{type === \"map\" && (\n\t\t\t\t<MapRenderer\n\t\t\t\t\toptions={\n\t\t\t\t\t\tconfig?.map as Omit<\n\t\t\t\t\t\t\tMapProps,\n\t\t\t\t\t\t\t\"orgUnitSelection\" | \"periodSelection\"\n\t\t\t\t\t\t>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationSelector/index.tsx"],"names":["dimension","value"],"mappings":"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","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport { useVisualizationType } from \"../VisualizationTypeProvider/index.js\";\nimport { useAnalyticsData } from \"../AnalyticsDataProvider/index.js\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport {\n\tDHIS2PivotTable,\n\tDHIS2PivotTableOptions,\n} from \"../../../DHIS2PivotTable/index.js\";\nimport { useLayout } from \"../LayoutProvider/index.js\";\nimport { filter, find, findIndex, forEach, mapValues, set } from \"lodash\";\nimport { Dimension, useDimensions } from \"../DimensionsProvider/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { ChartConfig, DHIS2Chart } from \"../../../ChartAnalytics/index.js\";\nimport { VisualizationConfig } from \"../../index.js\";\nimport { DHIS2Map, MapProps } from \"../../../Map/index.js\";\nimport { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport {\n\tThematicLayerConfig,\n\tThematicLayerRawData,\n} from \"../../../Map/components/MapLayer/interfaces/index.js\";\nimport type { PivotTableLayoutProps } from \"../../../DHIS2PivotTable/components/Table/index.js\";\n\nexport interface VisualizationSelectorProps {\n\tconfig: VisualizationConfig;\n}\n\nexport function getDimensionLabel(dimension: Dimension) {\n\tswitch (dimension) {\n\t\tcase \"pe\":\n\t\t\treturn i18n.t(\"Period\");\n\t\tcase \"ou\":\n\t\t\treturn i18n.t(\"Organisation unit\");\n\t\tcase \"dx\":\n\t\t\treturn i18n.t(\"Data\");\n\t\tdefault:\n\t\t\treturn \"\";\n\t}\n}\n\nexport function getOrgUnitSelectionFromIds(ous: string[]) {\n\tconst orgUnitSelection: OrgUnitSelection = {\n\t\torgUnits: [],\n\t};\n\tforEach(ous, (ou) => {\n\t\tif (ou === \"USER_ORGUNIT\") {\n\t\t\tset(orgUnitSelection, [\"userOrgUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_CHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_GRANDCHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubX2Unit\"], true);\n\t\t} else {\n\t\t\tconst orgUnits = [...(orgUnitSelection.orgUnits ?? [])];\n\t\t\torgUnits.push({\n\t\t\t\tid: ou,\n\t\t\t\tchildren: [],\n\t\t\t\tpath: \"\",\n\t\t\t});\n\t\t\tset(orgUnitSelection, [\"orgUnits\"], orgUnits);\n\t\t}\n\t});\n\treturn orgUnitSelection;\n}\n\nexport function PivotTableRenderer({\n\toptions,\n}: {\n\toptions: DHIS2PivotTableOptions & PivotTableLayoutProps;\n}) {\n\tconst [layout] = useLayout();\n\tconst { analytics } = useAnalyticsData();\n\n\tconst sanitizedLayout = useMemo(() => {\n\t\treturn mapValues(layout, (dimension) =>\n\t\t\tdimension.map((dimension) => ({\n\t\t\t\tdimension,\n\t\t\t\tlabel: getDimensionLabel(dimension),\n\t\t\t})),\n\t\t);\n\t}, [layout]);\n\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DHIS2PivotTable\n\t\t\ttableProps={{\n\t\t\t\tscrollHeight: options.scrollHeight ?? \"100%\",\n\t\t\t\tscrollWidth: options.scrollWidth ?? \"100%\",\n\t\t\t\twidth: options.width ?? \"100%\",\n\t\t\t}}\n\t\t\tanalytics={analytics}\n\t\t\tconfig={{ layout: sanitizedLayout, options }}\n\t\t/>\n\t);\n}\n\nexport function ChartRenderer({ options }: { options: ChartConfig }) {\n\tconst { analytics } = useAnalyticsData();\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\treturn <DHIS2Chart analytics={analytics} config={{ ...options }} />;\n}\n\nexport function MapRenderer({\n\toptions,\n}: {\n\toptions: Omit<MapProps, \"orgUnitSelection\" | \"periodSelection\">;\n}) {\n\tconst [dimensions] = useDimensions();\n\tconst { analytics } = useAnalyticsData();\n\tconst orgUnitSelection: OrgUnitSelection = useMemo(() => {\n\t\treturn getOrgUnitSelectionFromIds(dimensions.ou ?? []);\n\t}, [dimensions.ou]);\n\n\tconst thematicLayers: ThematicLayerConfig[] = useMemo(() => {\n\t\tconst valueIndex =\n\t\t\tfindIndex(analytics.headers, [\"name\", \"value\"]) ?? -1;\n\t\treturn (\n\t\t\tanalytics.metaData?.dimensions[\"dx\"]?.map((dataId) => {\n\t\t\t\tconst config = find(options.thematicLayers, [\"id\", dataId]);\n\t\t\t\tconst data: ThematicLayerRawData[] =\n\t\t\t\t\tanalytics.metaData?.dimensions?.ou?.map((ouId) => {\n\t\t\t\t\t\tconst values = filter(\n\t\t\t\t\t\t\tanalytics.rows,\n\t\t\t\t\t\t\t(row) => row.includes(dataId) && row.includes(ouId),\n\t\t\t\t\t\t) as unknown as string[];\n\t\t\t\t\t\tconst value = values.reduce(\n\t\t\t\t\t\t\t(acc, value) => acc + parseFloat(value[valueIndex]),\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: value,\n\t\t\t\t\t\t\tdataItem: dataId,\n\t\t\t\t\t\t\torgUnit: ouId,\n\t\t\t\t\t\t};\n\t\t\t\t\t}) ?? [];\n\t\t\t\treturn {\n\t\t\t\t\t...config,\n\t\t\t\t\tdata,\n\t\t\t\t} as ThematicLayerConfig;\n\t\t\t}) ?? []\n\t\t);\n\t}, [analytics]);\n\n\treturn (\n\t\t<DHIS2Map\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\tthematicLayers={thematicLayers}\n\t\t/>\n\t);\n}\n\nexport function VisualizationSelector({ config }: VisualizationSelectorProps) {\n\tconst [type] = useVisualizationType();\n\tconst { analytics, loading } = useAnalyticsData();\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<CircularLoader small />\n\t\t\t</div>\n\t\t);\n\t}\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{type === \"pivotTable\" && (\n\t\t\t\t<PivotTableRenderer\n\t\t\t\t\toptions={config?.pivotTable as DHIS2PivotTableOptions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{type === \"chart\" && (\n\t\t\t\t<ChartRenderer options={config?.chart as ChartConfig} />\n\t\t\t)}\n\t\t\t{type === \"map\" && (\n\t\t\t\t<MapRenderer\n\t\t\t\t\toptions={\n\t\t\t\t\t\tconfig?.map as Omit<\n\t\t\t\t\t\t\tMapProps,\n\t\t\t\t\t\t\t\"orgUnitSelection\" | \"periodSelection\"\n\t\t\t\t\t\t>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationTypeProvider/index.tsx"],"names":[],"mappings":";;;AAKa,MAAA,wBAAA,GACZ,cAAiC,YAAY;AACjC,MAAA,0BAAA,GAA6B,cAExC,MAAS;AACE,MAAA,uBAAA,GAA0B,cAErC,MAAS;AAQJ,SAAS,oBAAuB,GAAA;AACtC,EAAO,OAAA;AAAA,IACN,WAAW,wBAAwB,CAAA;AAAA,IACnC,WAAW,uBAAuB;AAAA,GACnC;AAID;AAEO,SAAS,sBAAyB,GAAA;AACxC,EAAA,OAAO,WAAW,0BAA0B,CAAA;AAC7C;AAEO,SAAS,yBAA0B,CAAA;AAAA,EACzC,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACD,CAAmC,EAAA;AAClC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA4B,WAAW,CAAA;AAE/D,EACC,uBAAA,GAAA,CAAC,yBAAyB,QAAzB,EAAA,EAAkC,OAAO,IACzC,EAAA,QAAA,kBAAA,GAAA,CAAC,2BAA2B,QAA3B,EAAA,EAAoC,OAAO,MAC3C,EAAA,QAAA,kBAAA,GAAA,CAAC,wBAAwB,QAAxB,EAAA,EAAiC,OAAO,OACvC,EAAA,QAAA,EACF,GACD,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState } from \"react\";\nimport { VisualizationConfig } from \"../../index.js\";\n\nexport type VisualizationType = \"pivotTable\" | \"chart\" | \"map\";\n\nexport const VisualizationTypeContext =\n\tcreateContext<VisualizationType>(\"pivotTable\");\nexport const VisualizationConfigContext = createContext<\n\tVisualizationConfig | undefined\n>(undefined);\nexport const VisualizationTypeSetter = createContext<\n\tReact.Dispatch<React.SetStateAction<VisualizationType>> | undefined\n>(undefined);\n\nexport interface VisualizationTypeProviderProps {\n\tchildren: React.ReactNode;\n\tdefaultType: VisualizationType;\n\tconfig: VisualizationConfig;\n}\n\nexport function useVisualizationType() {\n\treturn [\n\t\tuseContext(VisualizationTypeContext),\n\t\tuseContext(VisualizationTypeSetter),\n\t] as [\n\t\tVisualizationType,\n\t\tReact.Dispatch<React.SetStateAction<VisualizationType>>,\n\t];\n}\n\nexport function useVisualizationConfig() {\n\treturn useContext(VisualizationConfigContext);\n}\n\nexport function VisualizationTypeProvider({\n\tchildren,\n\tdefaultType,\n\tconfig,\n}: VisualizationTypeProviderProps) {\n\tconst [type, setType] = useState<VisualizationType>(defaultType);\n\n\treturn (\n\t\t<VisualizationTypeContext.Provider value={type}>\n\t\t\t<VisualizationConfigContext.Provider value={config}>\n\t\t\t\t<VisualizationTypeSetter.Provider value={setType}>\n\t\t\t\t\t{children}\n\t\t\t\t</VisualizationTypeSetter.Provider>\n\t\t\t</VisualizationConfigContext.Provider>\n\t\t</VisualizationTypeContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationTypeProvider/index.tsx"],"names":[],"mappings":";;;AAYa,MAAA,wBAAA,GACZ,cAAiC,YAAY;AACjC,MAAA,0BAAA,GAA6B,cAExC,MAAS;AACE,MAAA,uBAAA,GAA0B,cAErC,MAAS;AAQJ,SAAS,oBAAuB,GAAA;AACtC,EAAO,OAAA;AAAA,IACN,WAAW,wBAAwB,CAAA;AAAA,IACnC,WAAW,uBAAuB;AAAA,GACnC;AACD;AAEO,SAAS,sBAAyB,GAAA;AACxC,EAAA,OAAO,WAAW,0BAA0B,CAAA;AAC7C;AAEO,SAAS,yBAA0B,CAAA;AAAA,EACzC,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACD,CAAmC,EAAA;AAClC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA4B,WAAW,CAAA;AAE/D,EACC,uBAAA,GAAA,CAAC,yBAAyB,QAAzB,EAAA,EAAkC,OAAO,IACzC,EAAA,QAAA,kBAAA,GAAA,CAAC,2BAA2B,QAA3B,EAAA,EAAoC,OAAO,MAC3C,EAAA,QAAA,kBAAA,GAAA,CAAC,wBAAwB,QAAxB,EAAA,EAAiC,OAAO,OACvC,EAAA,QAAA,EACF,GACD,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import {\n\tcreateContext,\n\ttype Dispatch,\n\ttype ReactNode,\n\ttype SetStateAction,\n\tuseContext,\n\tuseState,\n} from \"react\";\nimport { VisualizationConfig } from \"../../index.js\";\n\nexport type VisualizationType = \"pivotTable\" | \"chart\" | \"map\";\n\nexport const VisualizationTypeContext =\n\tcreateContext<VisualizationType>(\"pivotTable\");\nexport const VisualizationConfigContext = createContext<\n\tVisualizationConfig | undefined\n>(undefined);\nexport const VisualizationTypeSetter = createContext<\n\tDispatch<SetStateAction<VisualizationType>> | undefined\n>(undefined);\n\nexport interface VisualizationTypeProviderProps {\n\tchildren: ReactNode;\n\tdefaultType: VisualizationType;\n\tconfig: VisualizationConfig;\n}\n\nexport function useVisualizationType() {\n\treturn [\n\t\tuseContext(VisualizationTypeContext),\n\t\tuseContext(VisualizationTypeSetter),\n\t] as [VisualizationType, Dispatch<SetStateAction<VisualizationType>>];\n}\n\nexport function useVisualizationConfig() {\n\treturn useContext(VisualizationConfigContext);\n}\n\nexport function VisualizationTypeProvider({\n\tchildren,\n\tdefaultType,\n\tconfig,\n}: VisualizationTypeProviderProps) {\n\tconst [type, setType] = useState<VisualizationType>(defaultType);\n\n\treturn (\n\t\t<VisualizationTypeContext.Provider value={type}>\n\t\t\t<VisualizationConfigContext.Provider value={config}>\n\t\t\t\t<VisualizationTypeSetter.Provider value={setType}>\n\t\t\t\t\t{children}\n\t\t\t\t</VisualizationTypeSetter.Provider>\n\t\t\t</VisualizationConfigContext.Provider>\n\t\t</VisualizationTypeContext.Provider>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationTypeSelector/index.tsx"],"names":[],"mappings":";;;;;;AAeA,MAAM,2BAA8B,GAAA;AAAA,EACnC;AAAA,IACC,EAAI,EAAA,YAAA;AAAA,IACJ,IAAA,sBAAO,WAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,aAAa;AAAA,GAC5B;AAAA,EACA;AAAA,IACC,EAAI,EAAA,OAAA;AAAA,IACJ,IAAA,sBAAO,yBAA0B,EAAA,EAAA,CAAA;AAAA,IACjC,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,OAAO;AAAA,GACtB;AAAA,EACA;AAAA,IACC,EAAI,EAAA,KAAA;AAAA,IACJ,IAAA,sBAAO,WAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,KAAK;AAAA;AAErB,CAAA;AAEO,SAAS,yBAA4B,GAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,oBAAqB,EAAA;AAC7C,EAAA,MAAM,SAAS,sBAAuB,EAAA;AAEtC,EAAA,MAAM,KAAQ,GAAA,OAAA;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,2BACE,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,uBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QAEA,OAAA,EAAS,IAAK,CAAA,CAAA,CAAE,kBAAoB,EAAA;AAAA,UACnC,IAAA,EAAM,MAAM,WAAY;AAAA,SACxB,CAAA;AAAA,QAED,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;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":[],"mappings":";;;;;;AAeA,MAAM,2BAA8B,GAAA;AAAA,EACnC;AAAA,IACC,EAAI,EAAA,YAAA;AAAA,IACJ,IAAA,sBAAO,WAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,aAAa;AAAA,GAC5B;AAAA,EACA;AAAA,IACC,EAAI,EAAA,OAAA;AAAA,IACJ,IAAA,sBAAO,yBAA0B,EAAA,EAAA,CAAA;AAAA,IACjC,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,OAAO;AAAA,GACtB;AAAA,EACA;AAAA,IACC,EAAI,EAAA,KAAA;AAAA,IACJ,IAAA,sBAAO,WAAY,EAAA,EAAA,CAAA;AAAA,IACnB,KAAA,EAAO,IAAK,CAAA,CAAA,CAAE,KAAK;AAAA;AAErB,CAAA;AAEO,SAAS,yBAA4B,GAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,oBAAqB,EAAA;AAC7C,EAAA,MAAM,SAAS,sBAAuB,EAAA;AAEtC,EAAA,MAAM,KAAQ,GAAA,OAAA;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,2BACE,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,uBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QAEA,OAAA,EAAS,IAAK,CAAA,CAAA,CAAE,kBAAoB,EAAA;AAAA,UACnC,IAAA,EAAM,MAAM,WAAY;AAAA,SACxB,CAAA;AAAA,QAED,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;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,4 +1,4 @@
1
- import React from "react";
1
+ import { type ForwardRefExoticComponent } from "react";
2
2
  import "./styles/custom-highchart.css";
3
3
  import "highcharts/modules/exporting";
4
4
  import "highcharts/modules/export-data";
@@ -24,9 +24,9 @@ export * from "./components/DownloadMenu/index.js";
24
24
  *
25
25
  * @returns {React.ForwardRefExoticComponent<ChartAnalyticsProps>} - The DHIS2 chart component with forward ref support.
26
26
  */
27
- export declare const DHIS2Chart: React.ForwardRefExoticComponent<ChartAnalyticsProps>;
27
+ export declare const DHIS2Chart: ForwardRefExoticComponent<ChartAnalyticsProps>;
28
28
  /**
29
29
  * @deprecated since `v2`. Use `DHIS2Chart` instead
30
30
  * */
31
- export declare const ChartAnalytics: React.ForwardRefExoticComponent<ChartAnalyticsProps>;
31
+ export declare const ChartAnalytics: ForwardRefExoticComponent<ChartAnalyticsProps>;
32
32
  //# sourceMappingURL=DHIS2Chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DHIS2Chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AACxC,OAAO,gCAAgC,CAAC;AACxC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AA6BnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,mBAAmB,CAG1E,CAAC;AAEH;;KAEK;AACL,eAAO,MAAM,cAAc,sDAAa,CAAC"}
1
+ {"version":3,"file":"DHIS2Chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,yBAAyB,EAAU,MAAM,OAAO,CAAC;AAE3E,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AACxC,OAAO,gCAAgC,CAAC;AACxC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AA6BnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,yBAAyB,CAAC,mBAAmB,CAGpE,CAAC;AAEH;;KAEK;AACL,eAAO,MAAM,cAAc,gDAAa,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import HighchartsReact from "highcharts-react-official";
2
- import React from "react";
2
+ import { type ReactNode } from "react";
3
3
  import { ChartExportMenuItem } from "./interfaces/menu.js";
4
4
  export declare function ChartDownloadMenu({ chartRef, exclude, icon, }: {
5
5
  chartRef: HighchartsReact.RefObject | null;
6
6
  exclude?: ChartExportMenuItem[];
7
- icon?: React.ReactNode;
7
+ icon?: ReactNode;
8
8
  }): import("react/jsx-runtime.js").JSX.Element;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,EACjC,QAAQ,EACR,OAAO,EACP,IAAI,GACJ,EAAE;IACF,QAAQ,EAAE,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB,8CAwDA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,OAAO,CAAC;AASzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,iBAAiB,CAAC,EACjC,QAAQ,EACR,OAAO,EACP,IAAI,GACJ,EAAE;IACF,QAAQ,EAAE,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB,8CAwDA"}
@@ -1,6 +1,6 @@
1
- import React from "react";
1
+ import { type ReactElement } from "react";
2
2
  import { CircularDashboardProps } from "./types/props.js";
3
3
  export * from "./types/props.js";
4
- export declare function CircularProgressVisualizer({ numerator, size, denominator, value, textStyle, strokeStyle, }: CircularDashboardProps): React.ReactElement;
4
+ export declare function CircularProgressVisualizer({ numerator, size, denominator, value, textStyle, strokeStyle, }: CircularDashboardProps): ReactElement;
5
5
  export declare const CircularProgressDashboard: typeof CircularProgressVisualizer;
6
6
  //# sourceMappingURL=CircularProgressIndicator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CircularProgressIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,cAAc,kBAAkB,CAAC;AAEjC,wBAAgB,0BAA0B,CAAC,EAC1C,SAAS,EACT,IAAI,EACJ,WAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,GACX,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA8C7C;AAED,eAAO,MAAM,yBAAyB,mCAA6B,CAAC"}
1
+ {"version":3,"file":"CircularProgressIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,cAAc,kBAAkB,CAAC;AAEjC,wBAAgB,0BAA0B,CAAC,EAC1C,SAAS,EACT,IAAI,EACJ,WAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,GACX,EAAE,sBAAsB,GAAG,YAAY,CA8CvC;AAED,eAAO,MAAM,yBAAyB,mCAA6B,CAAC"}
@@ -1,8 +1,8 @@
1
- import React from "react";
2
1
  import { DataTableProps } from "@dhis2/ui";
2
+ import type { ReactNode } from "react";
3
3
  export type PivotTableLayoutProps = DataTableProps;
4
4
  export interface PivotTableProps {
5
- children: React.ReactNode;
5
+ children: ReactNode;
6
6
  tableProps?: DataTableProps;
7
7
  setRef?: (ref: HTMLTableElement) => void;
8
8
  }