@hisptz/dhis2-analytics 2.0.0-alpha.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/dist/components/ChartAnalytics/ChartAnalytics.stories.js +43 -20
  2. package/dist/components/ChartAnalytics/DHIS2Chart.js +43 -17
  3. package/dist/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +16 -14
  4. package/dist/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +14 -8
  5. package/dist/components/ChartAnalytics/components/DownloadMenu/index.js +21 -19
  6. package/dist/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +1 -0
  7. package/dist/components/ChartAnalytics/hooks/useChart.js +12 -10
  8. package/dist/components/ChartAnalytics/index.js +12 -1
  9. package/dist/components/ChartAnalytics/models/bar.js +6 -3
  10. package/dist/components/ChartAnalytics/models/column.js +9 -6
  11. package/dist/components/ChartAnalytics/models/index.js +3 -1
  12. package/dist/components/ChartAnalytics/models/line.js +8 -6
  13. package/dist/components/ChartAnalytics/models/multi-series.js +14 -12
  14. package/dist/components/ChartAnalytics/models/pie.js +7 -5
  15. package/dist/components/ChartAnalytics/services/export.js +20 -7
  16. package/dist/components/ChartAnalytics/types/props.js +1 -0
  17. package/dist/components/ChartAnalytics/utils/chart.js +31 -24
  18. package/dist/components/CircularProgressDashboard/CircularProgressIndicator.js +23 -14
  19. package/dist/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +10 -3
  20. package/dist/components/CircularProgressDashboard/index.js +19 -2
  21. package/dist/components/CircularProgressDashboard/types/props.js +1 -0
  22. package/dist/components/DHIS2PivotTable/DHIS2PivotTable.js +15 -13
  23. package/dist/components/DHIS2PivotTable/DHIS2PivotTable.stories.js +14 -5
  24. package/dist/components/DHIS2PivotTable/components/Table/index.js +6 -4
  25. package/dist/components/DHIS2PivotTable/components/TableBody/index.js +31 -25
  26. package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js +30 -24
  27. package/dist/components/DHIS2PivotTable/index.js +19 -2
  28. package/dist/components/DHIS2PivotTable/interfaces/index.js +1 -0
  29. package/dist/components/DHIS2PivotTable/services/engine.js +12 -10
  30. package/dist/components/DHIS2PivotTable/state/engine.js +9 -6
  31. package/dist/components/Map/DHIS2Map.js +20 -13
  32. package/dist/components/Map/DHIS2Map.stories.js +17 -3
  33. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js +21 -15
  34. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +15 -10
  35. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +18 -16
  36. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +12 -7
  37. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js +30 -24
  38. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js +49 -42
  39. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/Name.js +22 -16
  40. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js +32 -26
  41. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js +16 -10
  42. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js +27 -21
  43. package/dist/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +18 -15
  44. package/dist/components/Map/components/EarthEngineLayerConfiguration/index.js +19 -2
  45. package/dist/components/Map/components/MapArea/index.js +41 -32
  46. package/dist/components/Map/components/MapArea/interfaces/index.js +1 -0
  47. package/dist/components/Map/components/MapControls/components/CustomControl/index.js +5 -3
  48. package/dist/components/Map/components/MapControls/components/DownloadControl/index.js +14 -8
  49. package/dist/components/Map/components/MapControls/components/FullscreenControl/index.js +9 -7
  50. package/dist/components/Map/components/MapControls/index.js +17 -10
  51. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +5 -3
  52. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/index.js +31 -21
  53. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +31 -21
  54. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +88 -80
  55. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +14 -9
  56. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +69 -62
  57. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +1 -0
  58. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +3 -1
  59. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +41 -19
  60. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +9 -1
  61. package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +8 -6
  62. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js +57 -46
  63. package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +31 -25
  64. package/dist/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +7 -5
  65. package/dist/components/Map/components/MapLayer/components/PointLayer/index.js +28 -21
  66. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +12 -10
  67. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js +32 -21
  68. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +20 -13
  69. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +23 -17
  70. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +27 -18
  71. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +19 -13
  72. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +21 -15
  73. package/dist/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +8 -6
  74. package/dist/components/Map/components/MapLayer/components/ThematicLayer/index.js +24 -16
  75. package/dist/components/Map/components/MapLayer/index.js +18 -10
  76. package/dist/components/Map/components/MapLayer/interfaces/index.js +3 -1
  77. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +63 -59
  78. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js +36 -30
  79. package/dist/components/Map/components/MapProvider/hooks/index.js +10 -6
  80. package/dist/components/Map/components/MapProvider/index.js +31 -25
  81. package/dist/components/Map/components/MapUpdater/index.js +7 -5
  82. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js +21 -15
  83. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +10 -5
  84. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +60 -53
  85. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +12 -7
  86. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +15 -9
  87. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js +4 -1
  88. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +30 -22
  89. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +18 -7
  90. package/dist/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +30 -23
  91. package/dist/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +22 -16
  92. package/dist/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +22 -16
  93. package/dist/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js +22 -16
  94. package/dist/components/Map/components/ThematicLayerConfiguration/components/TypeField.js +24 -18
  95. package/dist/components/Map/components/ThematicLayerConfiguration/index.js +26 -3
  96. package/dist/components/Map/components/ThematicLayerConfiguration/types/index.js +1 -0
  97. package/dist/components/Map/constants/colors.js +4 -1
  98. package/dist/components/Map/constants/legendSet.js +3 -1
  99. package/dist/components/Map/hooks/map.js +21 -17
  100. package/dist/components/Map/index.js +40 -5
  101. package/dist/components/Map/interfaces/index.js +1 -0
  102. package/dist/components/Map/state/index.js +9 -5
  103. package/dist/components/Map/utils/colors.js +19 -7
  104. package/dist/components/Map/utils/helpers.js +11 -3
  105. package/dist/components/Map/utils/map.js +23 -13
  106. package/dist/components/SingleValueContainer/SingleValueContainer.stories.js +11 -3
  107. package/dist/components/SingleValueContainer/SingleValueVisualizer.js +35 -17
  108. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +21 -14
  109. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +13 -7
  110. package/dist/components/SingleValueContainer/index.js +26 -3
  111. package/dist/components/SingleValueContainer/types/props.js +1 -0
  112. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js +23 -20
  113. package/dist/components/Visualization/components/DimensionsProvider/index.js +18 -13
  114. package/dist/components/Visualization/components/LayoutProvider/index.js +11 -7
  115. package/dist/components/Visualization/components/VisualizationDimensionSelector/index.js +36 -30
  116. package/dist/components/Visualization/components/VisualizationProvider/index.js +9 -7
  117. package/dist/components/Visualization/components/VisualizationSelector/index.js +57 -46
  118. package/dist/components/Visualization/components/VisualizationTypeProvider/index.js +18 -11
  119. package/dist/components/Visualization/components/VisualizationTypeSelector/index.js +27 -21
  120. package/dist/components/Visualization/index.js +33 -27
  121. package/dist/esm/components/ChartAnalytics/ChartAnalytics.stories.js +254 -0
  122. package/dist/esm/components/ChartAnalytics/ChartAnalytics.stories.js.map +1 -0
  123. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js +36 -0
  124. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -0
  125. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +52 -0
  126. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/components/Menu.js.map +1 -0
  127. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +42 -0
  128. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/constants/menu.js.map +1 -0
  129. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js +65 -0
  130. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -0
  131. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +3 -0
  132. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js.map +1 -0
  133. package/dist/esm/components/ChartAnalytics/hooks/useChart.js +43 -0
  134. package/dist/esm/components/ChartAnalytics/hooks/useChart.js.map +1 -0
  135. package/dist/esm/components/ChartAnalytics/index.js +3 -0
  136. package/dist/esm/components/ChartAnalytics/index.js.map +1 -0
  137. package/dist/esm/components/ChartAnalytics/models/bar.js +21 -0
  138. package/dist/esm/components/ChartAnalytics/models/bar.js.map +1 -0
  139. package/dist/esm/components/ChartAnalytics/models/column.js +48 -0
  140. package/dist/esm/components/ChartAnalytics/models/column.js.map +1 -0
  141. package/dist/esm/components/ChartAnalytics/models/index.js +114 -0
  142. package/dist/esm/components/ChartAnalytics/models/index.js.map +1 -0
  143. package/dist/esm/components/ChartAnalytics/models/line.js +31 -0
  144. package/dist/esm/components/ChartAnalytics/models/line.js.map +1 -0
  145. package/dist/esm/components/ChartAnalytics/models/multi-series.js +112 -0
  146. package/dist/esm/components/ChartAnalytics/models/multi-series.js.map +1 -0
  147. package/dist/esm/components/ChartAnalytics/models/pie.js +53 -0
  148. package/dist/esm/components/ChartAnalytics/models/pie.js.map +1 -0
  149. package/dist/esm/components/ChartAnalytics/services/export.js +35 -0
  150. package/dist/esm/components/ChartAnalytics/services/export.js.map +1 -0
  151. package/dist/esm/components/ChartAnalytics/styles/custom-highchart.css +40 -0
  152. package/dist/esm/components/ChartAnalytics/styles/custom-highchart.css.map +1 -0
  153. package/dist/esm/components/ChartAnalytics/types/props.js +3 -0
  154. package/dist/esm/components/ChartAnalytics/types/props.js.map +1 -0
  155. package/dist/esm/components/ChartAnalytics/utils/chart.js +130 -0
  156. package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -0
  157. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js +66 -0
  158. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -0
  159. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +42 -0
  160. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.stories.js.map +1 -0
  161. package/dist/esm/components/CircularProgressDashboard/index.js +4 -0
  162. package/dist/esm/components/CircularProgressDashboard/index.js.map +1 -0
  163. package/dist/esm/components/CircularProgressDashboard/types/props.js +3 -0
  164. package/dist/esm/components/CircularProgressDashboard/types/props.js.map +1 -0
  165. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js +26 -0
  166. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -0
  167. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.stories.js +30 -0
  168. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.stories.js.map +1 -0
  169. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js +10 -0
  170. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js.map +1 -0
  171. package/dist/esm/components/DHIS2PivotTable/components/TableBody/TableBody.module.css +11 -0
  172. package/dist/esm/components/DHIS2PivotTable/components/TableBody/TableBody.module.css.map +1 -0
  173. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js +106 -0
  174. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -0
  175. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/TableHeaders.module.css +10 -0
  176. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/TableHeaders.module.css.map +1 -0
  177. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js +94 -0
  178. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -0
  179. package/dist/esm/components/DHIS2PivotTable/index.js +4 -0
  180. package/dist/esm/components/DHIS2PivotTable/index.js.map +1 -0
  181. package/dist/esm/components/DHIS2PivotTable/interfaces/index.js +3 -0
  182. package/dist/esm/components/DHIS2PivotTable/interfaces/index.js.map +1 -0
  183. package/dist/esm/components/DHIS2PivotTable/services/engine.js +87 -0
  184. package/dist/esm/components/DHIS2PivotTable/services/engine.js.map +1 -0
  185. package/dist/esm/components/DHIS2PivotTable/state/engine.js +17 -0
  186. package/dist/esm/components/DHIS2PivotTable/state/engine.js.map +1 -0
  187. package/dist/esm/components/Map/DHIS2Map.js +65 -0
  188. package/dist/esm/components/Map/DHIS2Map.js.map +1 -0
  189. package/dist/esm/components/Map/DHIS2Map.stories.js +366 -0
  190. package/dist/esm/components/Map/DHIS2Map.stories.js.map +1 -0
  191. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js +41 -0
  192. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js.map +1 -0
  193. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +34 -0
  194. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js.map +1 -0
  195. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +26 -0
  196. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -0
  197. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +21 -0
  198. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js.map +1 -0
  199. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js +67 -0
  200. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js.map +1 -0
  201. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js +134 -0
  202. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js.map +1 -0
  203. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js +44 -0
  204. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -0
  205. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js +67 -0
  206. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -0
  207. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js +24 -0
  208. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js.map +1 -0
  209. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js +67 -0
  210. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js.map +1 -0
  211. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +45 -0
  212. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js.map +1 -0
  213. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/index.js +4 -0
  214. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/index.js.map +1 -0
  215. package/dist/esm/components/Map/components/MapArea/index.js +100 -0
  216. package/dist/esm/components/Map/components/MapArea/index.js.map +1 -0
  217. package/dist/esm/components/Map/components/MapArea/interfaces/index.js +3 -0
  218. package/dist/esm/components/Map/components/MapArea/interfaces/index.js.map +1 -0
  219. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js +16 -0
  220. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -0
  221. package/dist/esm/components/Map/components/MapControls/components/DownloadControl/index.js +15 -0
  222. package/dist/esm/components/Map/components/MapControls/components/DownloadControl/index.js.map +1 -0
  223. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js +13 -0
  224. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -0
  225. package/dist/esm/components/Map/components/MapControls/index.js +35 -0
  226. package/dist/esm/components/Map/components/MapControls/index.js.map +1 -0
  227. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +10 -0
  228. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js.map +1 -0
  229. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js +52 -0
  230. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js.map +1 -0
  231. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +100 -0
  232. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -0
  233. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +457 -0
  234. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js.map +1 -0
  235. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +32 -0
  236. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js.map +1 -0
  237. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +197 -0
  238. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -0
  239. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +3 -0
  240. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js.map +1 -0
  241. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +31466 -0
  242. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js.map +1 -0
  243. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +365 -0
  244. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js.map +1 -0
  245. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +93 -0
  246. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js.map +1 -0
  247. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css +10 -0
  248. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css.map +1 -0
  249. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +17 -0
  250. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -0
  251. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +179 -0
  252. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -0
  253. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +92 -0
  254. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -0
  255. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +11 -0
  256. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/hooks/index.js.map +1 -0
  257. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js +48 -0
  258. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js.map +1 -0
  259. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +64 -0
  260. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js.map +1 -0
  261. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js +130 -0
  262. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -0
  263. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +41 -0
  264. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -0
  265. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +50 -0
  266. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -0
  267. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +56 -0
  268. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -0
  269. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +40 -0
  270. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -0
  271. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +40 -0
  272. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -0
  273. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +12 -0
  274. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js.map +1 -0
  275. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js +55 -0
  276. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js.map +1 -0
  277. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css +56 -0
  278. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css.map +1 -0
  279. package/dist/esm/components/Map/components/MapLayer/index.js +32 -0
  280. package/dist/esm/components/Map/components/MapLayer/index.js.map +1 -0
  281. package/dist/esm/components/Map/components/MapLayer/interfaces/index.js +10 -0
  282. package/dist/esm/components/Map/components/MapLayer/interfaces/index.js.map +1 -0
  283. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +405 -0
  284. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -0
  285. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js +115 -0
  286. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -0
  287. package/dist/esm/components/Map/components/MapProvider/hooks/index.js +16 -0
  288. package/dist/esm/components/Map/components/MapProvider/hooks/index.js.map +1 -0
  289. package/dist/esm/components/Map/components/MapProvider/index.js +95 -0
  290. package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -0
  291. package/dist/esm/components/Map/components/MapUpdater/index.js +11 -0
  292. package/dist/esm/components/Map/components/MapUpdater/index.js.map +1 -0
  293. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js +41 -0
  294. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js.map +1 -0
  295. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +24 -0
  296. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js.map +1 -0
  297. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +174 -0
  298. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -0
  299. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +21 -0
  300. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js.map +1 -0
  301. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +36 -0
  302. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js.map +1 -0
  303. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js +436 -0
  304. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js.map +1 -0
  305. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +71 -0
  306. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -0
  307. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css +15 -0
  308. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css.map +1 -0
  309. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css +12 -0
  310. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css.map +1 -0
  311. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +82 -0
  312. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js.map +1 -0
  313. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +57 -0
  314. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js.map +1 -0
  315. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +44 -0
  316. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -0
  317. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +60 -0
  318. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -0
  319. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js +54 -0
  320. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js.map +1 -0
  321. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/TypeField.js +63 -0
  322. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/TypeField.js.map +1 -0
  323. package/dist/esm/components/Map/components/ThematicLayerConfiguration/index.js +5 -0
  324. package/dist/esm/components/Map/components/ThematicLayerConfiguration/index.js.map +1 -0
  325. package/dist/esm/components/Map/components/ThematicLayerConfiguration/types/index.js +3 -0
  326. package/dist/esm/components/Map/components/ThematicLayerConfiguration/types/index.js.map +1 -0
  327. package/dist/esm/components/Map/constants/colors.js +436 -0
  328. package/dist/esm/components/Map/constants/colors.js.map +1 -0
  329. package/dist/esm/components/Map/constants/legendSet.js +23 -0
  330. package/dist/esm/components/Map/constants/legendSet.js.map +1 -0
  331. package/dist/esm/components/Map/hooks/map.js +44 -0
  332. package/dist/esm/components/Map/hooks/map.js.map +1 -0
  333. package/dist/esm/components/Map/index.js +7 -0
  334. package/dist/esm/components/Map/index.js.map +1 -0
  335. package/dist/esm/components/Map/interfaces/index.js +3 -0
  336. package/dist/esm/components/Map/interfaces/index.js.map +1 -0
  337. package/dist/esm/components/Map/state/index.js +18 -0
  338. package/dist/esm/components/Map/state/index.js.map +1 -0
  339. package/dist/esm/components/Map/utils/colors.js +85 -0
  340. package/dist/esm/components/Map/utils/colors.js.map +1 -0
  341. package/dist/esm/components/Map/utils/helpers.js +18 -0
  342. package/dist/esm/components/Map/utils/helpers.js.map +1 -0
  343. package/dist/esm/components/Map/utils/map.js +138 -0
  344. package/dist/esm/components/Map/utils/map.js.map +1 -0
  345. package/dist/esm/components/SingleValueContainer/SingleValueContainer.stories.js +145 -0
  346. package/dist/esm/components/SingleValueContainer/SingleValueContainer.stories.js.map +1 -0
  347. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js +44 -0
  348. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -0
  349. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +49 -0
  350. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -0
  351. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +22 -0
  352. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -0
  353. package/dist/esm/components/SingleValueContainer/index.js +5 -0
  354. package/dist/esm/components/SingleValueContainer/index.js.map +1 -0
  355. package/dist/esm/components/SingleValueContainer/styles/SingleValueContainer.module.css +32 -0
  356. package/dist/esm/components/SingleValueContainer/styles/SingleValueContainer.module.css.map +1 -0
  357. package/dist/esm/components/SingleValueContainer/types/props.js +3 -0
  358. package/dist/esm/components/SingleValueContainer/types/props.js.map +1 -0
  359. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js +94 -0
  360. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -0
  361. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js +35 -0
  362. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -0
  363. package/dist/esm/components/Visualization/components/LayoutProvider/index.js +18 -0
  364. package/dist/esm/components/Visualization/components/LayoutProvider/index.js.map +1 -0
  365. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js +85 -0
  366. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -0
  367. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js +19 -0
  368. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js.map +1 -0
  369. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js +167 -0
  370. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js.map +1 -0
  371. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js +27 -0
  372. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -0
  373. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js +55 -0
  374. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -0
  375. package/dist/esm/components/Visualization/index.js +113 -0
  376. package/dist/esm/components/Visualization/index.js.map +1 -0
  377. package/dist/esm/index.js +8 -0
  378. package/dist/esm/index.js.map +1 -0
  379. package/dist/index.js +47 -6
  380. package/package.json +5 -6
@@ -0,0 +1,365 @@
1
+ import { getInfo, getScale, getFeatureCollectionProperties, getHistogramStatistics, hasClasses, combineReducers } from '../utils/index.js';
2
+ import { head, isEmpty, find } from 'lodash';
3
+ import * as EE from './api.js';
4
+
5
+ const ee = EE;
6
+ window.ee = ee;
7
+ const FEATURE_STYLE = { color: "FFA500", strokeWidth: 2 };
8
+ const DEFAULT_TILE_SCALE = 1;
9
+ class EarthEngine {
10
+ constructor({ options }) {
11
+ this.initialized = false;
12
+ this.options = options;
13
+ this.initialized = true;
14
+ this.getInstance();
15
+ }
16
+ static async setToken(token, refresh) {
17
+ const tokenType = "Bearer";
18
+ function refreshToken(authArgs, callback) {
19
+ refresh().then(({ token: token2 }) => {
20
+ callback({
21
+ ...token2,
22
+ token_type: tokenType ,
23
+ state: authArgs?.scope
24
+ });
25
+ });
26
+ }
27
+ await new Promise((resolve, reject) => {
28
+ if (ee.data.getAuthToken()) {
29
+ ee.initialize(null, null, resolve, reject);
30
+ }
31
+ if (token) {
32
+ const { access_token, client_id, expires_in } = token;
33
+ ee.data.setAuthToken(
34
+ client_id,
35
+ tokenType ,
36
+ access_token,
37
+ expires_in,
38
+ null,
39
+ () => {
40
+ ee.initialize(null, null, resolve, reject);
41
+ },
42
+ false
43
+ );
44
+ ee.data.setAuthTokenRefresher(refreshToken);
45
+ }
46
+ resolve("Token not found");
47
+ });
48
+ }
49
+ setOrgUnits(orgUnits) {
50
+ this.orgUnits = orgUnits;
51
+ return this;
52
+ }
53
+ setPeriod(period) {
54
+ this.period = period;
55
+ }
56
+ async getValue(geoJSON, type) {
57
+ return new Promise((resolve, reject) => {
58
+ const point = this.getGeometryByType(geoJSON);
59
+ const reducer = this.getReducerByType(type);
60
+ const image = this.getImage();
61
+ const reducedImage = image.reduceRegion(reducer, point, 1);
62
+ reducedImage.evaluate((data, error) => {
63
+ if (error) {
64
+ reject(error);
65
+ } else {
66
+ resolve(data);
67
+ }
68
+ });
69
+ });
70
+ }
71
+ async getPeriod() {
72
+ const { type } = this.options;
73
+ if (type !== "ImageCollection") {
74
+ return;
75
+ }
76
+ const imageCollection = this.instance.distinct("system:time_start").sort("system:time_start", false);
77
+ const featureCollection = ee.FeatureCollection(imageCollection).select(["system:time_start", "system:time_end"], null, false);
78
+ return getInfo(featureCollection);
79
+ }
80
+ async info() {
81
+ return new Promise((resolve) => {
82
+ this.instance.getInfo(resolve);
83
+ });
84
+ }
85
+ async getScale() {
86
+ try {
87
+ const { type } = this.options;
88
+ switch (type) {
89
+ case "ImageCollection":
90
+ this.scale = await getScale(this.instance.first());
91
+ break;
92
+ default:
93
+ this.scale = await getScale(this.getImage());
94
+ }
95
+ } catch (e) {
96
+ }
97
+ }
98
+ async getFeatureCollectionAggregation() {
99
+ const { datasetId } = this.options;
100
+ const dataset = ee.FeatureCollection(datasetId);
101
+ const collection = this.getFeatureCollection();
102
+ const aggFeatures = collection?.map((feature) => {
103
+ feature = ee.Feature(feature);
104
+ const count = dataset.filterBounds(feature.geometry()).size();
105
+ return feature.set("count", count);
106
+ }).select(["count"], null, false);
107
+ return getInfo(aggFeatures).then(getFeatureCollectionProperties);
108
+ }
109
+ async getHistogramAggregations() {
110
+ try {
111
+ const aggregation = head(this.options.aggregations) ?? "";
112
+ const reducer = ee.Reducer.frequencyHistogram();
113
+ const collection = this.getFeatureCollection();
114
+ const legend = this.options.legend?.items;
115
+ const scale = this.scale;
116
+ const tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;
117
+ const scaleValue = await getInfo(scale);
118
+ const image = this.getImage();
119
+ const features = Object.values(
120
+ await getInfo(
121
+ image.reduceRegions({
122
+ collection,
123
+ reducer,
124
+ scale,
125
+ tileScale
126
+ }).select(["histogram"], null, false)
127
+ ).then(
128
+ (data) => getHistogramStatistics({
129
+ data,
130
+ scale: scaleValue,
131
+ aggregationType: aggregation,
132
+ legend
133
+ })
134
+ )
135
+ );
136
+ return features.map((feature, index) => {
137
+ return {
138
+ orgUnit: this.orgUnits?.[index],
139
+ data: feature
140
+ };
141
+ });
142
+ } catch (e) {
143
+ throw Error("Could not get histogram", {
144
+ cause: e
145
+ });
146
+ }
147
+ }
148
+ async getAggregations() {
149
+ await this.getScale();
150
+ const { type } = this.options;
151
+ if (type === "FeatureCollection") {
152
+ this.aggregationData = await this.getFeatureCollectionAggregation();
153
+ return;
154
+ }
155
+ const aggregations = this.options.aggregations;
156
+ if (!aggregations)
157
+ return;
158
+ if (hasClasses(head(aggregations) ?? "")) {
159
+ this.aggregationData = await this.getHistogramAggregations();
160
+ return;
161
+ }
162
+ const reducer = combineReducers(ee)(aggregations);
163
+ const collection = this.getFeatureCollection();
164
+ const image = this.getImage();
165
+ const scale = this.scale;
166
+ const tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;
167
+ const aggregatedFeatures = image.reduceRegions({
168
+ collection,
169
+ reducer,
170
+ scale,
171
+ tileScale
172
+ }).select(aggregations, null, false);
173
+ const features = Object.values(
174
+ getFeatureCollectionProperties(await getInfo(aggregatedFeatures))
175
+ );
176
+ if (!isEmpty(features) && features.length === this.orgUnits?.length) {
177
+ this.aggregationData = features.map(
178
+ (feature, index) => {
179
+ return {
180
+ orgUnit: this.orgUnits?.[index],
181
+ data: feature
182
+ };
183
+ }
184
+ );
185
+ }
186
+ }
187
+ getAggregation(orgUnit) {
188
+ if (isEmpty(this.aggregationData)) {
189
+ return;
190
+ }
191
+ return find(
192
+ this.aggregationData,
193
+ (aggregation) => aggregation.orgUnit.id === orgUnit.id
194
+ );
195
+ }
196
+ async url() {
197
+ if (!this.initialized)
198
+ throw "You need to call init() first";
199
+ return this.visualize(this.getImage());
200
+ }
201
+ applyPeriod(imageCollection) {
202
+ const period = this.period;
203
+ if (period) {
204
+ return imageCollection.filterDate(period);
205
+ }
206
+ }
207
+ applyMask(image) {
208
+ if (this.options.mask) {
209
+ return image.updateMask(image.gt(0));
210
+ } else {
211
+ return image;
212
+ }
213
+ }
214
+ applyBand(imageCollection) {
215
+ if (this.options.selectedBands) {
216
+ return imageCollection.select(this.options.selectedBands);
217
+ } else {
218
+ return imageCollection;
219
+ }
220
+ }
221
+ getReducerByType(type) {
222
+ return ee.Reducer[type].call();
223
+ }
224
+ getGeometryByType(geoJSON) {
225
+ return ee.Geometry(geoJSON?.geometry);
226
+ }
227
+ getFeatureByType(geoJSON) {
228
+ const featureType = geoJSON.type;
229
+ const features = geoJSON.features ?? [];
230
+ const geometry = this.getGeometryByType(geoJSON);
231
+ switch (featureType) {
232
+ case "Feature":
233
+ return ee.Feature(geometry);
234
+ case "FeatureCollection":
235
+ return ee.FeatureCollection([
236
+ ...features.map(
237
+ (feature) => ee.Feature(this.getGeometryByType(feature))
238
+ )
239
+ ]);
240
+ }
241
+ }
242
+ getFeatureCollection() {
243
+ if (this.orgUnits) {
244
+ return ee.FeatureCollection(
245
+ this.orgUnits.map(
246
+ (orgUnit) => this.getFeatureByType(orgUnit.geoJSON)
247
+ )
248
+ );
249
+ } else {
250
+ throw "You need to set org units first";
251
+ }
252
+ }
253
+ getParamsFromLegend() {
254
+ if (!this.options.legend)
255
+ return;
256
+ const legend = this.options.legend.items;
257
+ const keys = legend.map((l) => l.id);
258
+ const min = Math.min(...keys);
259
+ const max = Math.max(...keys);
260
+ const palette = legend.map((l) => l.color).join(",");
261
+ return { min, max, palette };
262
+ }
263
+ async visualize(image) {
264
+ const { min, max, palette } = this.getParamsFromLegend() ?? this.options.params ?? {
265
+ min: null,
266
+ max: null,
267
+ palette: null
268
+ };
269
+ return (await new Promise((resolve, reject) => {
270
+ image.getMap({ min, max, palette }, resolve);
271
+ }))?.urlFormat;
272
+ }
273
+ getImageCollectionInstance() {
274
+ const { datasetId } = this.options;
275
+ let imageCollection = ee.ImageCollection(datasetId);
276
+ if (this.period) {
277
+ imageCollection = this.applyPeriod(imageCollection);
278
+ }
279
+ imageCollection = this.applyBand(imageCollection);
280
+ return imageCollection;
281
+ }
282
+ getImageFromImageCollection() {
283
+ const { mosaic } = this.options;
284
+ const imageCollection = this.instance;
285
+ return mosaic ? imageCollection.mosaic().clipToCollection(this.getFeatureCollection()) : ee.Image(imageCollection.first()).clipToCollection(this.getFeatureCollection());
286
+ }
287
+ getImageInstance() {
288
+ const { datasetId } = this.options;
289
+ return ee.Image(datasetId).clipToCollection(this.getFeatureCollection());
290
+ }
291
+ getImageFromImage() {
292
+ return this.instance;
293
+ }
294
+ getFeatureInstance() {
295
+ const { datasetId } = this.options;
296
+ const feature = ee.Feature(datasetId);
297
+ this.instance = feature;
298
+ return feature;
299
+ }
300
+ getImageFromFeature() {
301
+ return this.instance;
302
+ }
303
+ getFeatureCollectionInstance() {
304
+ const { datasetId } = this.options;
305
+ let featureCollection = ee.FeatureCollection(datasetId);
306
+ if (this.period) {
307
+ featureCollection = this.applyPeriod(featureCollection);
308
+ }
309
+ return featureCollection;
310
+ }
311
+ getImageFromFeatureCollection() {
312
+ let featureCollection = this.instance;
313
+ return featureCollection.draw(FEATURE_STYLE).clipToCollection(this.getFeatureCollection());
314
+ }
315
+ getInstance() {
316
+ const { type } = this.options;
317
+ switch (type) {
318
+ case "Feature":
319
+ this.instance = this.getFeatureInstance();
320
+ break;
321
+ case "FeatureCollection":
322
+ this.instance = this.getFeatureCollectionInstance();
323
+ break;
324
+ case "Image":
325
+ this.instance = this.getImageInstance();
326
+ break;
327
+ case "ImageCollection":
328
+ this.instance = this.getImageCollectionInstance();
329
+ break;
330
+ default:
331
+ this.instance = this.getImageFromImage();
332
+ }
333
+ }
334
+ getImage() {
335
+ if (this.image) {
336
+ return this.image;
337
+ }
338
+ const { type } = this.options;
339
+ let image;
340
+ switch (type) {
341
+ case "Feature":
342
+ image = this.getImageFromFeature();
343
+ break;
344
+ case "FeatureCollection":
345
+ image = this.getImageFromFeatureCollection();
346
+ break;
347
+ case "Image":
348
+ image = this.getImageFromImage();
349
+ break;
350
+ case "ImageCollection":
351
+ image = this.getImageFromImageCollection();
352
+ break;
353
+ default:
354
+ image = this.getImageFromImage();
355
+ }
356
+ image = this.applyMask(image);
357
+ image = this.applyBand(image);
358
+ this.image = image;
359
+ return image;
360
+ }
361
+ }
362
+
363
+ export { EarthEngine };
364
+ //# sourceMappingURL=out.js.map
365
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts"],"names":["token"],"mappings":"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","sourcesContent":["import { MapOrgUnit } from \"../../../../../interfaces/index.js\";\nimport {\n\tEarthEngineOptions,\n\tEarthEngineToken,\n\tRefreshToken,\n} from \"../interfaces/index.js\";\nimport {\n\tcombineReducers,\n\tgetFeatureCollectionProperties,\n\tgetHistogramStatistics,\n\tgetInfo,\n\tgetScale,\n\thasClasses,\n} from \"../utils/index.js\";\nimport { find, head, isEmpty } from \"lodash\";\n\n// async function importEEModule(): Promise<any> {\n// // @ts-ignore\n// if (import.meta.env.STORYBOOK_BUILD === \"true\") {\n// return await import(\"@google/earthengine\");\n// }\n// return await import(\"./api\");\n// }\n// const EE = await importEEModule();\n//@ts-ignore\nimport * as EE from \"./api.js\";\n// @ts-ignore\nconst ee = EE as any;\n// @ts-ignore\nwindow.ee = ee;\n\nconst FEATURE_STYLE = { color: \"FFA500\", strokeWidth: 2 };\nconst DEFAULT_TILE_SCALE = 1;\n\nexport class EarthEngine {\n\ttoken?: EarthEngineToken;\n\toptions: EarthEngineOptions;\n\trefresh?: RefreshToken;\n\torgUnits?: MapOrgUnit[];\n\tinitialized = false;\n\tperiod?: string | string[];\n\tinstance: any;\n\tscale?: any;\n\timage: any;\n\taggregationData: any;\n\n\tconstructor({ options }: { options: EarthEngineOptions }) {\n\t\tthis.options = options;\n\t\tthis.initialized = true;\n\t\tthis.getInstance();\n\t}\n\n\tstatic async setToken(\n\t\ttoken: EarthEngineToken,\n\t\trefresh: RefreshToken,\n\t): Promise<void> {\n\t\tconst tokenType = \"Bearer\";\n\n\t\tfunction refreshToken(\n\t\t\tauthArgs: { scope: any },\n\t\t\tcallback: (props: any) => void,\n\t\t) {\n\t\t\trefresh().then(({ token }: { token: EarthEngineToken }) => {\n\t\t\t\tcallback({\n\t\t\t\t\t...token,\n\t\t\t\t\ttoken_type: tokenType ?? \"Bearer\",\n\t\t\t\t\tstate: authArgs?.scope,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tif (ee.data.getAuthToken()) {\n\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t}\n\t\t\tif (token) {\n\t\t\t\tconst { access_token, client_id, expires_in } = token;\n\t\t\t\tee.data.setAuthToken(\n\t\t\t\t\tclient_id,\n\t\t\t\t\ttokenType ?? \"Bearer\",\n\t\t\t\t\taccess_token,\n\t\t\t\t\texpires_in,\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t\t\t},\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tee.data.setAuthTokenRefresher(refreshToken);\n\t\t\t}\n\t\t\tresolve(\"Token not found\");\n\t\t});\n\t}\n\n\tsetOrgUnits(orgUnits: MapOrgUnit[]): EarthEngine {\n\t\tthis.orgUnits = orgUnits;\n\t\treturn this;\n\t}\n\n\tsetPeriod(period: string) {\n\t\tthis.period = period;\n\t}\n\n\tasync getValue(geoJSON: any, type: string) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst point = this.getGeometryByType(geoJSON);\n\t\t\tconst reducer = this.getReducerByType(type);\n\t\t\tconst image = this.getImage();\n\n\t\t\tconst reducedImage = image.reduceRegion(reducer, point, 1);\n\n\t\t\treducedImage.evaluate((data: unknown, error: any) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync getPeriod() {\n\t\tconst { type } = this.options;\n\t\tif (type !== \"ImageCollection\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageCollection = this.instance\n\t\t\t.distinct(\"system:time_start\")\n\t\t\t.sort(\"system:time_start\", false);\n\t\tconst featureCollection = ee\n\t\t\t.FeatureCollection(imageCollection)\n\t\t\t.select([\"system:time_start\", \"system:time_end\"], null, false);\n\n\t\treturn getInfo(featureCollection);\n\t}\n\n\tasync info() {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.instance.getInfo(resolve);\n\t\t});\n\t}\n\n\tasync getScale() {\n\t\ttry {\n\t\t\tconst { type } = this.options;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"ImageCollection\":\n\t\t\t\t\tthis.scale = await getScale(this.instance.first());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.scale = await getScale(this.getImage());\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tasync getFeatureCollectionAggregation() {\n\t\tconst { datasetId } = this.options;\n\t\tconst dataset = ee.FeatureCollection(datasetId);\n\t\tconst collection = this.getFeatureCollection() as any;\n\t\tconst aggFeatures = collection\n\t\t\t?.map((feature: any) => {\n\t\t\t\tfeature = ee.Feature(feature);\n\t\t\t\tconst count = dataset.filterBounds(feature.geometry()).size();\n\n\t\t\t\treturn feature.set(\"count\", count);\n\t\t\t})\n\t\t\t.select([\"count\"], null, false);\n\n\t\treturn getInfo(aggFeatures).then(getFeatureCollectionProperties);\n\t}\n\n\tasync getHistogramAggregations() {\n\t\ttry {\n\t\t\tconst aggregation = head(this.options.aggregations) ?? \"\";\n\t\t\tconst reducer = ee.Reducer.frequencyHistogram();\n\t\t\tconst collection = this.getFeatureCollection();\n\t\t\tconst legend = this.options.legend?.items;\n\t\t\tconst scale = this.scale;\n\t\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\t\tconst scaleValue = await getInfo(scale);\n\n\t\t\tconst image = this.getImage();\n\t\t\tconst features = Object.values(\n\t\t\t\tawait getInfo(\n\t\t\t\t\timage\n\t\t\t\t\t\t.reduceRegions({\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\treducer,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\ttileScale,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.select([\"histogram\"], null, false),\n\t\t\t\t).then((data) =>\n\t\t\t\t\tgetHistogramStatistics({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tscale: scaleValue,\n\t\t\t\t\t\taggregationType: aggregation,\n\t\t\t\t\t\tlegend,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn features.map((feature: any, index: number) => {\n\t\t\t\treturn {\n\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\tdata: feature,\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (e: any) {\n\t\t\tthrow Error(\"Could not get histogram\", {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync getAggregations() {\n\t\tawait this.getScale();\n\t\tconst { type } = this.options;\n\t\tif (type === \"FeatureCollection\") {\n\t\t\tthis.aggregationData = await this.getFeatureCollectionAggregation();\n\t\t\treturn;\n\t\t}\n\t\tconst aggregations = this.options.aggregations;\n\t\tif (!aggregations) return;\n\n\t\tif (hasClasses(head(aggregations) ?? \"\")) {\n\t\t\tthis.aggregationData = await this.getHistogramAggregations();\n\t\t\treturn;\n\t\t}\n\n\t\tconst reducer = combineReducers(ee)(aggregations);\n\t\tconst collection = this.getFeatureCollection();\n\t\tconst image = this.getImage();\n\t\tconst scale = this.scale;\n\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\tconst aggregatedFeatures = image\n\t\t\t.reduceRegions({\n\t\t\t\tcollection,\n\t\t\t\treducer,\n\t\t\t\tscale,\n\t\t\t\ttileScale,\n\t\t\t})\n\t\t\t.select(aggregations, null, false);\n\n\t\tconst features = Object.values(\n\t\t\tgetFeatureCollectionProperties(await getInfo(aggregatedFeatures)),\n\t\t) as any[];\n\t\tif (!isEmpty(features) && features.length === this.orgUnits?.length) {\n\t\t\t//Mapping features to orgUnits using index.\n\t\t\tthis.aggregationData = features.map(\n\t\t\t\t(feature: any, index: number) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\t\tdata: feature,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetAggregation(orgUnit: MapOrgUnit) {\n\t\tif (isEmpty(this.aggregationData)) {\n\t\t\treturn;\n\t\t}\n\t\treturn find(\n\t\t\tthis.aggregationData,\n\t\t\t(aggregation) => aggregation.orgUnit.id === orgUnit.id,\n\t\t);\n\t}\n\n\tasync url(): Promise<string> {\n\t\tif (!this.initialized) throw \"You need to call init() first\";\n\t\treturn this.visualize(this.getImage());\n\t}\n\n\tprotected applyPeriod(imageCollection: any) {\n\t\tconst period = this.period;\n\t\tif (period) {\n\t\t\treturn imageCollection.filterDate(period);\n\t\t}\n\t}\n\n\tprotected applyMask(image: any) {\n\t\tif (this.options.mask) {\n\t\t\treturn image.updateMask(image.gt(0));\n\t\t} else {\n\t\t\treturn image;\n\t\t}\n\t}\n\n\tprotected applyBand(imageCollection: any) {\n\t\tif (this.options.selectedBands) {\n\t\t\treturn imageCollection.select(this.options.selectedBands);\n\t\t} else {\n\t\t\treturn imageCollection;\n\t\t}\n\t}\n\n\tprotected getReducerByType(type: string) {\n\t\treturn ee.Reducer[type].call();\n\t}\n\n\tprotected getGeometryByType(geoJSON: any) {\n\t\treturn ee.Geometry(geoJSON?.geometry);\n\t}\n\n\tprotected getFeatureByType(geoJSON: any) {\n\t\tconst featureType = geoJSON.type;\n\t\tconst features = geoJSON.features ?? [];\n\t\tconst geometry = this.getGeometryByType(geoJSON);\n\t\tswitch (featureType) {\n\t\t\tcase \"Feature\":\n\t\t\t\treturn ee.Feature(geometry);\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\treturn ee.FeatureCollection([\n\t\t\t\t\t...features.map((feature: any) =>\n\t\t\t\t\t\tee.Feature(this.getGeometryByType(feature)),\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t}\n\t}\n\n\tprotected getFeatureCollection(): unknown {\n\t\tif (this.orgUnits) {\n\t\t\treturn ee.FeatureCollection(\n\t\t\t\tthis.orgUnits.map((orgUnit: MapOrgUnit) =>\n\t\t\t\t\tthis.getFeatureByType(orgUnit.geoJSON),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tthrow \"You need to set org units first\";\n\t\t}\n\t}\n\n\tprotected getParamsFromLegend() {\n\t\tif (!this.options.legend) return;\n\t\tconst legend = this.options.legend.items;\n\t\tconst keys = legend.map((l) => l.id);\n\t\tconst min = Math.min(...keys);\n\t\tconst max = Math.max(...keys);\n\t\tconst palette = legend.map((l) => l.color).join(\",\");\n\t\treturn { min, max, palette };\n\t}\n\n\tprotected async visualize(image: any): Promise<string> {\n\t\tconst { min, max, palette } = this.getParamsFromLegend() ??\n\t\t\tthis.options.params ?? {\n\t\t\t\tmin: null,\n\t\t\t\tmax: null,\n\t\t\t\tpalette: null,\n\t\t\t};\n\t\treturn (\n\t\t\t(await new Promise((resolve, reject) => {\n\t\t\t\timage.getMap({ min, max, palette }, resolve);\n\t\t\t})) as any\n\t\t)?.urlFormat;\n\t}\n\n\tprotected getImageCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet imageCollection = ee.ImageCollection(datasetId);\n\t\tif (this.period) {\n\t\t\timageCollection = this.applyPeriod(imageCollection);\n\t\t}\n\t\timageCollection = this.applyBand(imageCollection);\n\t\treturn imageCollection;\n\t}\n\n\tprotected getImageFromImageCollection() {\n\t\tconst { mosaic } = this.options;\n\t\tconst imageCollection = this.instance;\n\t\treturn mosaic\n\t\t\t? imageCollection\n\t\t\t\t\t.mosaic()\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection())\n\t\t\t: ee\n\t\t\t\t\t.Image(imageCollection.first())\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageInstance() {\n\t\tconst { datasetId } = this.options;\n\t\treturn ee\n\t\t\t.Image(datasetId)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageFromImage() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tconst feature = ee.Feature(datasetId);\n\t\tthis.instance = feature;\n\t\treturn feature;\n\t}\n\n\tprotected getImageFromFeature() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet featureCollection = ee.FeatureCollection(datasetId);\n\t\tif (this.period) {\n\t\t\tfeatureCollection = this.applyPeriod(featureCollection);\n\t\t}\n\t\treturn featureCollection;\n\t}\n\n\tprotected getImageFromFeatureCollection() {\n\t\tlet featureCollection = this.instance;\n\t\treturn featureCollection\n\t\t\t.draw(FEATURE_STYLE)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getInstance() {\n\t\tconst { type } = this.options;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\tthis.instance = this.getFeatureInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\tthis.instance = this.getFeatureCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\tthis.instance = this.getImageInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\tthis.instance = this.getImageCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.instance = this.getImageFromImage();\n\t\t}\n\t}\n\n\tprotected getImage(): any {\n\t\tif (this.image) {\n\t\t\treturn this.image;\n\t\t}\n\t\tconst { type } = this.options;\n\t\tlet image;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\timage = this.getImageFromFeature();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\timage = this.getImageFromFeatureCollection();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\timage = this.getImageFromImage();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\timage = this.getImageFromImageCollection();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\timage = this.getImageFromImage();\n\t\t}\n\t\timage = this.applyMask(image);\n\t\timage = this.applyBand(image);\n\t\tthis.image = image;\n\t\treturn image;\n\t}\n}\n"]}
@@ -0,0 +1,93 @@
1
+ const combineReducers = (ee) => (types) => types.reduce(
2
+ (r, t, i) => i === 0 ? r[t]() : r.combine({
3
+ reducer2: ee.Reducer[t](),
4
+ sharedInputs: true
5
+ }),
6
+ ee.Reducer
7
+ );
8
+ const getInfo = (instance) => new Promise(
9
+ (resolve, reject) => instance.evaluate((data, error) => {
10
+ if (error) {
11
+ reject(error);
12
+ } else {
13
+ resolve(data);
14
+ }
15
+ })
16
+ );
17
+ const getFeatureCollectionProperties = (data) => data.features.reduce(
18
+ (obj, f) => ({
19
+ ...obj,
20
+ [f.id]: f.properties
21
+ }),
22
+ {}
23
+ );
24
+ const getScale = async (image) => {
25
+ return image.select(0).projection().nominalScale();
26
+ };
27
+ const getParamsFromLegend = (legend) => {
28
+ const keys = legend.map((l) => l.id);
29
+ const min = Math.min(...keys);
30
+ const max = Math.max(...keys);
31
+ const palette = legend.map((l) => l.color).join(",");
32
+ return { min, max, palette };
33
+ };
34
+ const getClassifiedImage = (eeImage, { legend: legends, params }) => {
35
+ const legend = legends?.items ?? [];
36
+ if (!params) {
37
+ return { eeImage, params: getParamsFromLegend(legend) };
38
+ }
39
+ const min = 0;
40
+ const max = legend.length - 1;
41
+ const { palette } = params;
42
+ let zones;
43
+ for (let i = min, item; i < max; i++) {
44
+ item = legend[i];
45
+ if (!zones) {
46
+ zones = eeImage.gt(item.to);
47
+ } else {
48
+ zones = zones.add(eeImage.gt(item.to));
49
+ }
50
+ }
51
+ return { eeImage: zones, params: { min, max, palette } };
52
+ };
53
+ const squareMetersToHectares = (value) => value / 1e4;
54
+ const squareMetersToAcres = (value) => value / 4046.8564224;
55
+ const classAggregation = ["percentage", "hectares", "acres"];
56
+ const hasClasses = (type) => classAggregation.includes(type);
57
+ const getHistogramStatistics = ({
58
+ data,
59
+ scale,
60
+ aggregationType,
61
+ legend
62
+ }) => data.features.reduce(
63
+ (obj, { id, properties }) => {
64
+ const { histogram } = properties;
65
+ const sum = Object.values(histogram).reduce(
66
+ (a, b) => a + b,
67
+ 0
68
+ );
69
+ obj[id] = legend.reduce((values, { id: id2 }) => {
70
+ const count = histogram[id2] || 0;
71
+ const sqMeters = count * (scale * scale);
72
+ let value;
73
+ switch (aggregationType) {
74
+ case "hectares":
75
+ value = Math.round(squareMetersToHectares(sqMeters));
76
+ break;
77
+ case "acres":
78
+ value = Math.round(squareMetersToAcres(sqMeters));
79
+ break;
80
+ default:
81
+ value = count / sum * 100;
82
+ }
83
+ values[id2] = value;
84
+ return values;
85
+ }, {});
86
+ return obj;
87
+ },
88
+ {}
89
+ );
90
+
91
+ export { combineReducers, getClassifiedImage, getFeatureCollectionProperties, getHistogramStatistics, getInfo, getScale, hasClasses };
92
+ //# sourceMappingURL=out.js.map
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.ts"],"names":["id"],"mappings":"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","sourcesContent":["import { EarthEngineOptions } from \"../interfaces/index.js\";\n\nexport const combineReducers = (ee: any) => (types: string[]) =>\n\ttypes.reduce(\n\t\t(r: any, t: any, i: any) =>\n\t\t\ti === 0\n\t\t\t\t? r[t]()\n\t\t\t\t: r.combine({\n\t\t\t\t\t\treducer2: ee.Reducer[t](),\n\t\t\t\t\t\tsharedInputs: true,\n\t\t\t\t\t}),\n\t\tee.Reducer,\n\t);\n\nexport const getInfo = (instance: any) =>\n\tnew Promise((resolve, reject) =>\n\t\tinstance.evaluate((data: any, error: Error) => {\n\t\t\tif (error) {\n\t\t\t\treject(error);\n\t\t\t} else {\n\t\t\t\tresolve(data);\n\t\t\t}\n\t\t}),\n\t);\n\nexport const getFeatureCollectionProperties = (data: any) =>\n\tdata.features.reduce(\n\t\t(obj: any, f: any) => ({\n\t\t\t...obj,\n\t\t\t[f.id]: f.properties,\n\t\t}),\n\t\t{},\n\t);\n\nexport const getScale = async (image: any) => {\n\treturn image.select(0).projection().nominalScale();\n};\n\nconst getParamsFromLegend = (legend: any[]) => {\n\tconst keys = legend.map((l) => l.id);\n\tconst min = Math.min(...keys);\n\tconst max = Math.max(...keys);\n\tconst palette = legend.map((l) => l.color).join(\",\");\n\n\treturn { min, max, palette };\n};\n\nexport const getClassifiedImage = (\n\teeImage: any,\n\t{ legend: legends, params }: EarthEngineOptions,\n) => {\n\tconst legend = legends?.items ?? [];\n\tif (!params) {\n\t\t// Image has classes (e.g. landcover)\n\t\treturn { eeImage, params: getParamsFromLegend(legend) };\n\t}\n\n\tconst min = 0;\n\tconst max = legend.length - 1;\n\tconst { palette } = params;\n\tlet zones;\n\n\tfor (let i = min, item; i < max; i++) {\n\t\titem = legend[i] as any;\n\n\t\tif (!zones) {\n\t\t\tzones = eeImage.gt(item.to);\n\t\t} else {\n\t\t\tzones = zones.add(eeImage.gt(item.to));\n\t\t}\n\t}\n\n\treturn { eeImage: zones, params: { min, max, palette } };\n};\n\nconst squareMetersToHectares = (value: number) => value / 10000;\n\nconst squareMetersToAcres = (value: number) => value / 4046.8564224;\n\nconst classAggregation = [\"percentage\", \"hectares\", \"acres\"];\n\nexport const hasClasses = (type: string) => classAggregation.includes(type);\n\nexport const getHistogramStatistics = ({\n\tdata,\n\tscale,\n\taggregationType,\n\tlegend,\n}: {\n\tdata: any;\n\tscale: any;\n\taggregationType: string;\n\tlegend: any;\n}) =>\n\tdata.features.reduce(\n\t\t(\n\t\t\tobj: Record<any, any>,\n\t\t\t{ id, properties }: { id: string; properties: any },\n\t\t) => {\n\t\t\tconst { histogram } = properties;\n\t\t\tconst sum: number = Object.values(histogram).reduce(\n\t\t\t\t(a: any, b: any) => a + b,\n\t\t\t\t0,\n\t\t\t) as number;\n\t\t\tobj[id] = legend.reduce((values: any, { id }: { id: string }) => {\n\t\t\t\tconst count = histogram[id] || 0;\n\t\t\t\tconst sqMeters = count * (scale * scale);\n\t\t\t\tlet value;\n\t\t\t\tswitch (aggregationType) {\n\t\t\t\t\tcase \"hectares\":\n\t\t\t\t\t\tvalue = Math.round(squareMetersToHectares(sqMeters));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"acres\":\n\t\t\t\t\t\tvalue = Math.round(squareMetersToAcres(sqMeters));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = (count / sum) * 100; // percentage\n\t\t\t\t}\n\n\t\t\t\tvalues[id] = value;\n\n\t\t\t\treturn values;\n\t\t\t}, {});\n\t\t\treturn obj;\n\t\t},\n\t\t{},\n\t);\n"]}
@@ -0,0 +1,10 @@
1
+ .map-tooltip {
2
+ padding: 4px 6px;
3
+ border-radius: 3px;
4
+ font-size: 13px;
5
+ line-height: 17px;
6
+ z-index: 1000000 !important;
7
+ }
8
+ [data-test=dhi2-uicore-popper] {
9
+ }
10
+ /*# sourceMappingURL=LegendArea.module.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css"],"sourcesContent":[".map-tooltip {\n padding: 4px 6px;\n border-radius: 3px;\n font-size: 13px;\n line-height: 17px;\n z-index: 1000000 !important;\n}\n\n[data-test=\"dhi2-uicore-popper\"] {\n\n}\n\n"],"mappings":"AAAA,CAAC;AACG,WAAS,IAAI;AACb,iBAAe;AACf,aAAW;AACX,eAAa;AACb,WAAS;AACb;AAEA,CAAC;AAED;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { IconLaunch16 } from '@dhis2/ui';
3
+
4
+ function LegendCardHeader({
5
+ title,
6
+ collapsible,
7
+ onCollapse
8
+ }) {
9
+ return /* @__PURE__ */ jsxs("div", { className: "row w-100 space-between align-items-center", children: [
10
+ /* @__PURE__ */ jsx("h4", { style: { margin: 0 }, className: "legend-header", children: title }),
11
+ collapsible && /* @__PURE__ */ jsx("div", { onClick: onCollapse, children: /* @__PURE__ */ jsx(IconLaunch16, {}) })
12
+ ] });
13
+ }
14
+
15
+ export { LegendCardHeader as default };
16
+ //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"AAaE,SACC,KADD;AAbF,SAAS,oBAAoB;AAGd,SAAR,iBAAkC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,SACC,qBAAC,SAAI,WAAU,8CACd;AAAA,wBAAC,QAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAU,iBAClC,iBACF;AAAA,IACC,eACA,oBAAC,SAAI,SAAS,YACb,8BAAC,gBAAa,GACf;AAAA,KAEF;AAEF","sourcesContent":["import { IconLaunch16 } from \"@dhis2/ui\";\nimport React from \"react\";\n\nexport default function LegendCardHeader({\n\ttitle,\n\tcollapsible,\n\tonCollapse,\n}: {\n\ttitle: string;\n\tonCollapse?: () => void;\n\tcollapsible?: boolean;\n}) {\n\treturn (\n\t\t<div className=\"row w-100 space-between align-items-center\">\n\t\t\t<h4 style={{ margin: 0 }} className=\"legend-header\">\n\t\t\t\t{title}\n\t\t\t</h4>\n\t\t\t{collapsible && (\n\t\t\t\t<div onClick={onCollapse}>\n\t\t\t\t\t<IconLaunch16 />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}