@map-colonies/react-components 3.12.2 → 3.13.0

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 (376) hide show
  1. package/.eslintignore +1 -1
  2. package/.storybook/main.js +13 -13
  3. package/.storybook/manager.js +6 -6
  4. package/.storybook/preview-head.html +21 -21
  5. package/.storybook/preview.js +18 -18
  6. package/.storybook/theme.js +9 -9
  7. package/CHANGELOG.md +830 -810
  8. package/README.md +53 -53
  9. package/dist/autocomplete/autocomplete.css +25 -25
  10. package/dist/autocomplete/autocomplete.d.ts +33 -33
  11. package/dist/autocomplete/autocomplete.js +478 -478
  12. package/dist/autocomplete/index.d.ts +1 -1
  13. package/dist/autocomplete/index.js +5 -5
  14. package/dist/box/box.d.ts +3 -3
  15. package/dist/box/box.js +35 -35
  16. package/dist/box/index.d.ts +1 -1
  17. package/dist/box/index.js +5 -5
  18. package/dist/cesium-map/data-sources/custom.data-source.d.ts +5 -5
  19. package/dist/cesium-map/data-sources/custom.data-source.js +23 -23
  20. package/dist/cesium-map/data-sources/drawings.data-source.d.ts +34 -34
  21. package/dist/cesium-map/data-sources/drawings.data-source.js +193 -187
  22. package/dist/cesium-map/data-sources/index.d.ts +2 -2
  23. package/dist/cesium-map/data-sources/index.js +14 -14
  24. package/dist/cesium-map/entities/entity.d.ts +5 -5
  25. package/dist/cesium-map/entities/entity.description.d.ts +6 -6
  26. package/dist/cesium-map/entities/entity.description.js +27 -27
  27. package/dist/cesium-map/entities/entity.js +23 -23
  28. package/dist/cesium-map/entities/graphics/polygon.graphics.d.ts +5 -5
  29. package/dist/cesium-map/entities/graphics/polygon.graphics.js +23 -23
  30. package/dist/cesium-map/entities/graphics/polyline.graphics.d.ts +5 -5
  31. package/dist/cesium-map/entities/graphics/polyline.graphics.js +23 -23
  32. package/dist/cesium-map/entities/graphics/rectangle.graphics.d.ts +5 -5
  33. package/dist/cesium-map/entities/graphics/rectangle.graphics.js +23 -23
  34. package/dist/cesium-map/entities/index.d.ts +4 -4
  35. package/dist/cesium-map/entities/index.js +16 -16
  36. package/dist/cesium-map/index.d.ts +8 -8
  37. package/dist/cesium-map/index.js +20 -20
  38. package/dist/cesium-map/layers/3d.tileset.d.ts +7 -7
  39. package/dist/cesium-map/layers/3d.tileset.js +43 -43
  40. package/dist/cesium-map/layers/3d.tileset.with.update.d.ts +6 -6
  41. package/dist/cesium-map/layers/3d.tileset.with.update.js +115 -115
  42. package/dist/cesium-map/layers/geojson.layer.d.ts +5 -5
  43. package/dist/cesium-map/layers/geojson.layer.js +23 -23
  44. package/dist/cesium-map/layers/imagery.layer.d.ts +6 -6
  45. package/dist/cesium-map/layers/imagery.layer.js +68 -68
  46. package/dist/cesium-map/layers/index.d.ts +7 -7
  47. package/dist/cesium-map/layers/index.js +19 -19
  48. package/dist/cesium-map/layers/osm.layer.d.ts +9 -9
  49. package/dist/cesium-map/layers/osm.layer.js +36 -36
  50. package/dist/cesium-map/layers/wms.layer.d.ts +9 -9
  51. package/dist/cesium-map/layers/wms.layer.js +36 -36
  52. package/dist/cesium-map/layers/wmts.layer.d.ts +9 -9
  53. package/dist/cesium-map/layers/wmts.layer.js +36 -36
  54. package/dist/cesium-map/layers/xyz.layer.d.ts +9 -9
  55. package/dist/cesium-map/layers/xyz.layer.js +36 -36
  56. package/dist/cesium-map/layers-manager.d.ts +55 -55
  57. package/dist/cesium-map/layers-manager.js +246 -246
  58. package/dist/cesium-map/map-legend/MapLegend.css +136 -135
  59. package/dist/cesium-map/map-legend/MapLegend.d.ts +15 -15
  60. package/dist/cesium-map/map-legend/MapLegend.js +57 -57
  61. package/dist/cesium-map/map-legend/MapLegendList.d.ts +13 -13
  62. package/dist/cesium-map/map-legend/MapLegendList.js +43 -43
  63. package/dist/cesium-map/map-legend/MapLegendSidebar.d.ts +16 -16
  64. package/dist/cesium-map/map-legend/MapLegendSidebar.js +20 -20
  65. package/dist/cesium-map/map-legend/MapLegendToggle.d.ts +7 -7
  66. package/dist/cesium-map/map-legend/MapLegendToggle.js +20 -20
  67. package/dist/cesium-map/map-legend/index.d.ts +3 -3
  68. package/dist/cesium-map/map-legend/index.js +14 -14
  69. package/dist/cesium-map/map.css +59 -59
  70. package/dist/cesium-map/map.d.ts +63 -59
  71. package/dist/cesium-map/map.js +311 -305
  72. package/dist/cesium-map/map.types.d.ts +8 -8
  73. package/dist/cesium-map/map.types.js +12 -12
  74. package/dist/cesium-map/proxied.types.d.ts +30 -30
  75. package/dist/cesium-map/proxied.types.js +133 -132
  76. package/dist/cesium-map/settings/base-maps.css +37 -37
  77. package/dist/cesium-map/settings/base-maps.d.ts +7 -7
  78. package/dist/cesium-map/settings/base-maps.js +78 -78
  79. package/dist/cesium-map/settings/scene-modes.css +19 -19
  80. package/dist/cesium-map/settings/scene-modes.d.ts +7 -7
  81. package/dist/cesium-map/settings/scene-modes.js +65 -65
  82. package/dist/cesium-map/settings/settings.css +52 -52
  83. package/dist/cesium-map/settings/settings.d.ts +23 -23
  84. package/dist/cesium-map/settings/settings.js +79 -79
  85. package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.d.ts +3 -3
  86. package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.js +245 -245
  87. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.d.ts +9 -9
  88. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.js +202 -202
  89. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.d.ts +50 -50
  90. package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.js +136 -136
  91. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.d.ts +2 -2
  92. package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.js +38 -38
  93. package/dist/cesium-map/tools/coordinates-tracker.tool.css +11 -11
  94. package/dist/cesium-map/tools/coordinates-tracker.tool.d.ts +7 -7
  95. package/dist/cesium-map/tools/coordinates-tracker.tool.js +86 -78
  96. package/dist/cesium-map/tools/draw/drawHelper.css +101 -101
  97. package/dist/cesium-map/tools/draw/drawHelper.d.ts +28 -28
  98. package/dist/cesium-map/tools/draw/drawHelper.js +1694 -1694
  99. package/dist/cesium-map/tools/geojson/geojson-to-primitive.d.ts +4 -4
  100. package/dist/cesium-map/tools/geojson/geojson-to-primitive.js +41 -41
  101. package/dist/cesium-map/tools/geojson/index.d.ts +2 -2
  102. package/dist/cesium-map/tools/geojson/index.js +14 -14
  103. package/dist/cesium-map/tools/geojson/point.geojson.d.ts +7 -3
  104. package/dist/cesium-map/tools/geojson/point.geojson.js +47 -21
  105. package/dist/cesium-map/tools/geojson/polygon.geojson.d.ts +3 -3
  106. package/dist/cesium-map/tools/geojson/polygon.geojson.js +24 -24
  107. package/dist/cesium-map/tools/geojson/rectangle.geojson.d.ts +3 -3
  108. package/dist/cesium-map/tools/geojson/rectangle.geojson.js +44 -44
  109. package/dist/cesium-map/tools/inspector.tool.d.ts +4 -4
  110. package/dist/cesium-map/tools/inspector.tool.js +33 -33
  111. package/dist/cesium-map/tools/scale-tracker.tool.css +16 -16
  112. package/dist/cesium-map/tools/scale-tracker.tool.d.ts +8 -8
  113. package/dist/cesium-map/tools/scale-tracker.tool.js +158 -158
  114. package/dist/cesium-map/tools/terranian-height.tool.d.ts +4 -4
  115. package/dist/cesium-map/tools/terranian-height.tool.js +114 -114
  116. package/dist/cssbaseline/cssbaseline.d.ts +5 -5
  117. package/dist/cssbaseline/cssbaseline.js +41 -41
  118. package/dist/cssbaseline/index.d.ts +1 -1
  119. package/dist/cssbaseline/index.js +6 -6
  120. package/dist/date-picker/date-picker.css +9 -9
  121. package/dist/date-picker/date-picker.d.ts +14 -14
  122. package/dist/date-picker/date-picker.js +78 -78
  123. package/dist/date-picker/index.d.ts +1 -1
  124. package/dist/date-picker/index.js +13 -13
  125. package/dist/date-range-picker/date-range-picker.css +9 -9
  126. package/dist/date-range-picker/date-range-picker.d.ts +26 -26
  127. package/dist/date-range-picker/date-range-picker.form-control.css +3 -3
  128. package/dist/date-range-picker/date-range-picker.form-control.d.ts +28 -28
  129. package/dist/date-range-picker/date-range-picker.form-control.js +95 -95
  130. package/dist/date-range-picker/date-range-picker.js +104 -104
  131. package/dist/date-range-picker/index.d.ts +2 -2
  132. package/dist/date-range-picker/index.js +14 -14
  133. package/dist/file-picker/file-picker.css +63 -63
  134. package/dist/file-picker/file-picker.d.ts +276 -276
  135. package/dist/file-picker/file-picker.js +151 -151
  136. package/dist/file-picker/fs-map.json +1556 -1556
  137. package/dist/file-picker/index.d.ts +2 -2
  138. package/dist/file-picker/index.js +14 -14
  139. package/dist/file-picker/localization.d.ts +11 -11
  140. package/dist/file-picker/localization.js +124 -124
  141. package/dist/index.d.ts +13 -13
  142. package/dist/index.js +25 -25
  143. package/dist/map-filter-container/container-map.css +5 -5
  144. package/dist/map-filter-container/container-map.d.ts +11 -11
  145. package/dist/map-filter-container/container-map.js +31 -31
  146. package/dist/map-filter-container/index.d.ts +1 -1
  147. package/dist/map-filter-container/index.js +13 -13
  148. package/dist/map-filter-container/map-filter-container.d.ts +9 -9
  149. package/dist/map-filter-container/map-filter-container.js +78 -78
  150. package/dist/map-filter-container/polygon-selection-ui.d.ts +12 -12
  151. package/dist/map-filter-container/polygon-selection-ui.js +62 -62
  152. package/dist/models/defaults.d.ts +28 -28
  153. package/dist/models/defaults.js +32 -32
  154. package/dist/models/enums.d.ts +14 -14
  155. package/dist/models/enums.js +20 -20
  156. package/dist/models/index.d.ts +1 -1
  157. package/dist/models/index.js +13 -13
  158. package/dist/ol-map/feature.d.ts +6 -6
  159. package/dist/ol-map/feature.js +20 -20
  160. package/dist/ol-map/index.d.ts +6 -6
  161. package/dist/ol-map/index.js +18 -18
  162. package/dist/ol-map/interactions/draw.d.ts +8 -8
  163. package/dist/ol-map/interactions/draw.js +44 -44
  164. package/dist/ol-map/interactions/index.d.ts +1 -1
  165. package/dist/ol-map/interactions/index.js +13 -13
  166. package/dist/ol-map/layers/index.d.ts +3 -3
  167. package/dist/ol-map/layers/index.js +15 -15
  168. package/dist/ol-map/layers/tile-layer.d.ts +9 -9
  169. package/dist/ol-map/layers/tile-layer.js +48 -48
  170. package/dist/ol-map/layers/vector-layer.d.ts +4 -4
  171. package/dist/ol-map/layers/vector-layer.js +48 -48
  172. package/dist/ol-map/layers/vector-tile-layer.d.ts +10 -10
  173. package/dist/ol-map/layers/vector-tile-layer.js +66 -66
  174. package/dist/ol-map/map.css +17 -17
  175. package/dist/ol-map/map.d.ts +14 -14
  176. package/dist/ol-map/map.js +117 -117
  177. package/dist/ol-map/source/index.d.ts +6 -6
  178. package/dist/ol-map/source/index.js +18 -18
  179. package/dist/ol-map/source/mvt.d.ts +11 -11
  180. package/dist/ol-map/source/mvt.js +37 -37
  181. package/dist/ol-map/source/osm.d.ts +2 -2
  182. package/dist/ol-map/source/osm.js +14 -14
  183. package/dist/ol-map/source/vector-source.d.ts +4 -4
  184. package/dist/ol-map/source/vector-source.js +45 -45
  185. package/dist/ol-map/source/wms.d.ts +17 -17
  186. package/dist/ol-map/source/wms.js +30 -30
  187. package/dist/ol-map/source/wmts.d.ts +21 -21
  188. package/dist/ol-map/source/wmts.js +59 -59
  189. package/dist/ol-map/source/xyz.d.ts +12 -12
  190. package/dist/ol-map/source/xyz.js +27 -27
  191. package/dist/ol-map/style.d.ts +4 -4
  192. package/dist/ol-map/style.js +22 -22
  193. package/dist/popover/index.d.ts +1 -1
  194. package/dist/popover/index.js +5 -5
  195. package/dist/popover/popover.d.ts +3 -3
  196. package/dist/popover/popover.js +35 -35
  197. package/dist/smart-table/__mock-data__/smartTableMocks.d.ts +7 -7
  198. package/dist/smart-table/__mock-data__/smartTableMocks.js +17 -17
  199. package/dist/smart-table/index.d.ts +2 -2
  200. package/dist/smart-table/index.js +14 -14
  201. package/dist/smart-table/smart-table-head.d.ts +11 -11
  202. package/dist/smart-table/smart-table-head.js +22 -22
  203. package/dist/smart-table/smart-table-row.d.ts +12 -12
  204. package/dist/smart-table/smart-table-row.js +46 -46
  205. package/dist/smart-table/smart-table-types.d.ts +9 -9
  206. package/dist/smart-table/smart-table-types.js +2 -2
  207. package/dist/smart-table/smart-table.d.ts +17 -17
  208. package/dist/smart-table/smart-table.js +51 -51
  209. package/dist/theme/index.d.ts +1 -1
  210. package/dist/theme/index.js +13 -13
  211. package/dist/theme/theme.d.ts +8 -8
  212. package/dist/theme/theme.js +124 -124
  213. package/dist/utils/map.d.ts +3 -3
  214. package/dist/utils/map.js +21 -21
  215. package/dist/utils/projections.d.ts +6 -6
  216. package/dist/utils/projections.js +10 -10
  217. package/dist/utils/story.d.ts +12 -12
  218. package/dist/utils/story.js +2 -2
  219. package/jest_html_reporters.html +78 -0
  220. package/package.json +3 -3
  221. package/public/index.html +43 -43
  222. package/public/manifest.json +25 -25
  223. package/public/robots.txt +3 -3
  224. package/src/index.tsx +9 -9
  225. package/src/lib/autocomplete/autocomplete.css +25 -25
  226. package/src/lib/autocomplete/autocomplete.stories.tsx +101 -101
  227. package/src/lib/autocomplete/autocomplete.tsx +681 -681
  228. package/src/lib/autocomplete/index.ts +1 -1
  229. package/src/lib/box/box.tsx +7 -7
  230. package/src/lib/box/index.ts +1 -1
  231. package/src/lib/cesium-map/context-menu.stories.tsx +444 -444
  232. package/src/lib/cesium-map/data-sources/custom.data-source.tsx +12 -12
  233. package/src/lib/cesium-map/data-sources/drawings.data-source.stories.tsx +161 -161
  234. package/src/lib/cesium-map/data-sources/drawings.data-source.tsx +213 -204
  235. package/src/lib/cesium-map/data-sources/index.ts +2 -2
  236. package/src/lib/cesium-map/entities/entity.description.tsx +19 -19
  237. package/src/lib/cesium-map/entities/entity.graphics.stories.tsx +48 -48
  238. package/src/lib/cesium-map/entities/entity.stories.tsx +146 -146
  239. package/src/lib/cesium-map/entities/entity.tsx +10 -10
  240. package/src/lib/cesium-map/entities/graphics/polygon.graphics.tsx +12 -12
  241. package/src/lib/cesium-map/entities/graphics/polyline.graphics.tsx +12 -12
  242. package/src/lib/cesium-map/entities/graphics/rectangle.graphics.tsx +12 -12
  243. package/src/lib/cesium-map/entities/index.ts +4 -4
  244. package/src/lib/cesium-map/index.ts +8 -8
  245. package/src/lib/cesium-map/layers/3d.tileset.stories.tsx +164 -164
  246. package/src/lib/cesium-map/layers/3d.tileset.tsx +51 -51
  247. package/src/lib/cesium-map/layers/3d.tileset.with.update.tsx +120 -120
  248. package/src/lib/cesium-map/layers/geojson.layer.stories.tsx +180 -119
  249. package/src/lib/cesium-map/layers/geojson.layer.tsx +12 -12
  250. package/src/lib/cesium-map/layers/imagery.layer.stories.tsx +39 -39
  251. package/src/lib/cesium-map/layers/imagery.layer.tsx +37 -37
  252. package/src/lib/cesium-map/layers/index.ts +7 -7
  253. package/src/lib/cesium-map/layers/layers.rect.stories.tsx +171 -171
  254. package/src/lib/cesium-map/layers/osm.layer.stories.tsx +40 -40
  255. package/src/lib/cesium-map/layers/osm.layer.tsx +22 -22
  256. package/src/lib/cesium-map/layers/wms.layer.stories.tsx +38 -38
  257. package/src/lib/cesium-map/layers/wms.layer.tsx +22 -22
  258. package/src/lib/cesium-map/layers/wmts.layer.stories.tsx +53 -53
  259. package/src/lib/cesium-map/layers/wmts.layer.tsx +22 -22
  260. package/src/lib/cesium-map/layers/xyz.layer.stories.tsx +37 -37
  261. package/src/lib/cesium-map/layers/xyz.layer.tsx +22 -22
  262. package/src/lib/cesium-map/layers-manager.stories.tsx +286 -286
  263. package/src/lib/cesium-map/layers-manager.ts +354 -354
  264. package/src/lib/cesium-map/map-legend/MapLegend.css +136 -135
  265. package/src/lib/cesium-map/map-legend/MapLegend.tsx +92 -92
  266. package/src/lib/cesium-map/map-legend/MapLegendList.tsx +47 -47
  267. package/src/lib/cesium-map/map-legend/MapLegendSidebar.tsx +55 -55
  268. package/src/lib/cesium-map/map-legend/MapLegendToggle.tsx +31 -31
  269. package/src/lib/cesium-map/map-legend/index.tsx +3 -3
  270. package/src/lib/cesium-map/map-legend/legends-sidebar.stories.tsx +201 -201
  271. package/src/lib/cesium-map/map.css +59 -59
  272. package/src/lib/cesium-map/map.stories.tsx +143 -143
  273. package/src/lib/cesium-map/map.tsx +459 -446
  274. package/src/lib/cesium-map/map.types.ts +11 -11
  275. package/src/lib/cesium-map/proxied.types.ts +58 -54
  276. package/src/lib/cesium-map/settings/base-maps.css +37 -37
  277. package/src/lib/cesium-map/settings/base-maps.tsx +94 -94
  278. package/src/lib/cesium-map/settings/scene-modes.css +19 -19
  279. package/src/lib/cesium-map/settings/scene-modes.tsx +100 -100
  280. package/src/lib/cesium-map/settings/settings.css +52 -52
  281. package/src/lib/cesium-map/settings/settings.stories.tsx +182 -182
  282. package/src/lib/cesium-map/settings/settings.tsx +141 -141
  283. package/src/lib/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.ts +243 -243
  284. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-decoder.ts +321 -321
  285. package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.ts +237 -237
  286. package/src/lib/cesium-map/terrain-providers/terrain-provider-heights-tool.stories.tsx +170 -170
  287. package/src/lib/cesium-map/terrain-providers/terrain-provider.stories.tsx +187 -187
  288. package/src/lib/cesium-map/tools/cesium/primitives-conversions.cesium.ts +15 -15
  289. package/src/lib/cesium-map/tools/coordinates-tracker.tool.css +11 -11
  290. package/src/lib/cesium-map/tools/coordinates-tracker.tool.tsx +81 -79
  291. package/src/lib/cesium-map/tools/draw/drawHelper.css +101 -101
  292. package/src/lib/cesium-map/tools/draw/drawHelper.ts +2116 -2116
  293. package/src/lib/cesium-map/tools/geojson/geojson-to-primitive.ts +54 -54
  294. package/src/lib/cesium-map/tools/geojson/index.ts +2 -2
  295. package/src/lib/cesium-map/tools/geojson/point.geojson.ts +63 -29
  296. package/src/lib/cesium-map/tools/geojson/polygon.geojson.ts +24 -24
  297. package/src/lib/cesium-map/tools/geojson/rectangle.geojson.ts +21 -21
  298. package/src/lib/cesium-map/tools/inspector.tool.tsx +15 -15
  299. package/src/lib/cesium-map/tools/scale-tracker.tool.css +16 -16
  300. package/src/lib/cesium-map/tools/scale-tracker.tool.tsx +192 -192
  301. package/src/lib/cesium-map/tools/terranian-height.tool.tsx +171 -171
  302. package/src/lib/cssbaseline/cssbaseline.tsx +19 -19
  303. package/src/lib/cssbaseline/index.ts +4 -4
  304. package/src/lib/date-picker/date-picker.css +9 -9
  305. package/src/lib/date-picker/date-picker.stories.tsx +130 -130
  306. package/src/lib/date-picker/date-picker.tsx +90 -90
  307. package/src/lib/date-picker/index.ts +1 -1
  308. package/src/lib/date-range-picker/date-range-picker.css +9 -9
  309. package/src/lib/date-range-picker/date-range-picker.form-control.css +3 -3
  310. package/src/lib/date-range-picker/date-range-picker.form-control.spec.tsx +58 -58
  311. package/src/lib/date-range-picker/date-range-picker.form-control.tsx +150 -150
  312. package/src/lib/date-range-picker/date-range-picker.stories.tsx +207 -207
  313. package/src/lib/date-range-picker/date-range-picker.tsx +156 -156
  314. package/src/lib/date-range-picker/index.ts +2 -2
  315. package/src/lib/file-picker/file-picker.css +63 -63
  316. package/src/lib/file-picker/file-picker.stories.tsx +447 -447
  317. package/src/lib/file-picker/file-picker.tsx +180 -180
  318. package/src/lib/file-picker/fs-map.json +1556 -1556
  319. package/src/lib/file-picker/index.ts +2 -2
  320. package/src/lib/file-picker/localization.ts +164 -164
  321. package/src/lib/index.ts +13 -13
  322. package/src/lib/map-filter-container/container-map.css +5 -5
  323. package/src/lib/map-filter-container/container-map.tsx +48 -48
  324. package/src/lib/map-filter-container/index.ts +1 -1
  325. package/src/lib/map-filter-container/map-filter-container.tsx +91 -91
  326. package/src/lib/map-filter-container/polygon-selection-ui.spec.tsx +119 -119
  327. package/src/lib/map-filter-container/polygon-selection-ui.tsx +111 -111
  328. package/src/lib/map-filter-container/stories/Map.stories.tsx +76 -76
  329. package/src/lib/models/defaults.ts +32 -32
  330. package/src/lib/models/enums.ts +16 -16
  331. package/src/lib/models/index.ts +1 -1
  332. package/src/lib/ol-map/feature.tsx +23 -23
  333. package/src/lib/ol-map/index.ts +6 -6
  334. package/src/lib/ol-map/interactions/draw.tsx +56 -56
  335. package/src/lib/ol-map/interactions/index.ts +1 -1
  336. package/src/lib/ol-map/layers/index.ts +3 -3
  337. package/src/lib/ol-map/layers/tile-layer.tsx +36 -36
  338. package/src/lib/ol-map/layers/vector-layer.tsx +32 -32
  339. package/src/lib/ol-map/layers/vector-tile-layer.tsx +56 -56
  340. package/src/lib/ol-map/map.css +17 -17
  341. package/src/lib/ol-map/map.tsx +137 -137
  342. package/src/lib/ol-map/source/index.ts +6 -6
  343. package/src/lib/ol-map/source/mvt.tsx +46 -46
  344. package/src/lib/ol-map/source/osm.tsx +13 -13
  345. package/src/lib/ol-map/source/stories/mvt.stories.tsx +68 -68
  346. package/src/lib/ol-map/source/stories/vector-source.stories.tsx +78 -78
  347. package/src/lib/ol-map/source/stories/wms.stories.tsx +51 -51
  348. package/src/lib/ol-map/source/stories/wmts.stories.tsx +72 -72
  349. package/src/lib/ol-map/source/stories/xyz.stories.tsx +53 -53
  350. package/src/lib/ol-map/source/vector-source.tsx +30 -30
  351. package/src/lib/ol-map/source/wms.tsx +40 -40
  352. package/src/lib/ol-map/source/wmts.tsx +82 -82
  353. package/src/lib/ol-map/source/xyz.tsx +33 -33
  354. package/src/lib/ol-map/stories/map.stories.tsx +60 -60
  355. package/src/lib/ol-map/style.ts +24 -24
  356. package/src/lib/popover/index.ts +1 -1
  357. package/src/lib/popover/popover.tsx +7 -7
  358. package/src/lib/smart-table/__mock-data__/smartTableMocks.ts +22 -22
  359. package/src/lib/smart-table/index.ts +2 -2
  360. package/src/lib/smart-table/smart-table-head.spec.tsx +116 -116
  361. package/src/lib/smart-table/smart-table-head.tsx +47 -47
  362. package/src/lib/smart-table/smart-table-row.spec.tsx +109 -109
  363. package/src/lib/smart-table/smart-table-row.tsx +78 -78
  364. package/src/lib/smart-table/smart-table-types.ts +10 -10
  365. package/src/lib/smart-table/smart-table.spec.tsx +116 -116
  366. package/src/lib/smart-table/smart-table.tsx +115 -115
  367. package/src/lib/smart-table/stories/SmartTable.stories.tsx +114 -114
  368. package/src/lib/theme/index.ts +1 -1
  369. package/src/lib/theme/theme.ts +123 -123
  370. package/src/lib/utils/map.ts +19 -19
  371. package/src/lib/utils/projections.ts +7 -7
  372. package/src/lib/utils/story.ts +11 -11
  373. package/src/react-app-env.d.ts +1 -1
  374. package/src/setupTests.ts +14 -14
  375. package/tsbuildconfig.json +37 -37
  376. package/tsconfig.json +26 -26
@@ -1,354 +1,354 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
- import {
3
- ImageryLayer,
4
- UrlTemplateImageryProvider,
5
- WebMapServiceImageryProvider,
6
- WebMapTileServiceImageryProvider,
7
- Event,
8
- } from 'cesium';
9
- import { get } from 'lodash';
10
- import { Feature, Point, Polygon } from 'geojson';
11
- import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
12
- import {
13
- RCesiumOSMLayerOptions,
14
- RCesiumWMSLayerOptions,
15
- RCesiumWMTSLayerOptions,
16
- RCesiumXYZLayerOptions,
17
- } from './layers';
18
- import { CesiumViewer } from './map';
19
- import { IBaseMap } from './settings/settings';
20
- import { pointToGeoJSON } from './tools/geojson/point.geojson';
21
- import { IMapLegend } from './map-legend';
22
-
23
- const INC = 1;
24
- const DEC = -1;
25
-
26
- export interface ICesiumImageryLayer extends InstanceType<typeof ImageryLayer> {
27
- meta?: Record<string, unknown>;
28
- }
29
-
30
- export type LayerType = 'OSM_LAYER' | 'WMTS_LAYER' | 'WMS_LAYER' | 'XYZ_LAYER';
31
-
32
- export interface IRasterLayer {
33
- id: string;
34
- type: LayerType;
35
- opacity: number;
36
- zIndex: number;
37
- show?: boolean;
38
- options:
39
- | RCesiumOSMLayerOptions
40
- | RCesiumWMSLayerOptions
41
- | RCesiumWMTSLayerOptions
42
- | RCesiumXYZLayerOptions;
43
- details?: Record<string, unknown>;
44
- }
45
-
46
- export interface IVectorLayer {
47
- id: string;
48
- opacity: number;
49
- zIndex: number;
50
- url: string;
51
- }
52
-
53
- export type LegendExtractor = (layers: (any & { meta: any })[]) => IMapLegend[];
54
-
55
- class LayerManager {
56
- public mapViewer: CesiumViewer;
57
-
58
- public legendsList: IMapLegend[];
59
- public layerUpdated: Event;
60
- private readonly layers: ICesiumImageryLayer[];
61
- private readonly legendsExtractor?: LegendExtractor;
62
-
63
- public constructor(
64
- mapViewer: CesiumViewer,
65
- legendsExtractor?: LegendExtractor,
66
- onLayersUpdate?: () => void
67
- ) {
68
- this.mapViewer = mapViewer;
69
- // eslint-disable-next-line
70
- this.layers = (this.mapViewer.imageryLayers as any)._layers;
71
- this.legendsList = [];
72
- this.legendsExtractor = legendsExtractor;
73
- this.layerUpdated = new Event();
74
- if (onLayersUpdate) {
75
- this.layerUpdated.addEventListener(onLayersUpdate, this);
76
- }
77
- this.mapViewer.imageryLayers.layerRemoved.addEventListener(() => {
78
- this.setLegends();
79
- this.layerUpdated.raiseEvent();
80
- });
81
- }
82
-
83
- /* eslint-disable */
84
- public addMetaToLayer(
85
- meta: any,
86
- layerPredicate: (layer: ImageryLayer, idx: number) => boolean
87
- ): void {
88
- const layer = this.layers.find(layerPredicate);
89
- if (layer) {
90
- layer.meta = meta;
91
- this.setLegends();
92
- this.layerUpdated.raiseEvent();
93
- }
94
- }
95
- /* eslint-enable */
96
-
97
- public setBaseMapLayers(baseMap: IBaseMap): void {
98
- const sortedBaseMapLayers = baseMap.baseRasteLayers.sort(
99
- (layer1, layer2) => layer1.zIndex - layer2.zIndex
100
- );
101
- sortedBaseMapLayers.forEach((layer, idx) => {
102
- this.addRasterLayer(layer, idx, baseMap.id);
103
- });
104
- }
105
-
106
- public addRasterLayer(
107
- layer: IRasterLayer,
108
- index: number,
109
- parentId: string
110
- ): void {
111
- let cesiumLayer: ICesiumImageryLayer | undefined;
112
- switch (layer.type) {
113
- case 'XYZ_LAYER':
114
- cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
115
- new UrlTemplateImageryProvider(
116
- layer.options as UrlTemplateImageryProvider.ConstructorOptions
117
- ),
118
- index
119
- );
120
- break;
121
- case 'WMS_LAYER':
122
- cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
123
- new WebMapServiceImageryProvider(
124
- layer.options as WebMapServiceImageryProvider.ConstructorOptions
125
- ),
126
- index
127
- );
128
- break;
129
- case 'WMTS_LAYER':
130
- cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
131
- new WebMapTileServiceImageryProvider(
132
- layer.options as WebMapTileServiceImageryProvider.ConstructorOptions
133
- ),
134
- index
135
- );
136
- break;
137
- case 'OSM_LAYER':
138
- break;
139
- }
140
- if (cesiumLayer) {
141
- cesiumLayer.alpha = layer.opacity;
142
- cesiumLayer.meta = {
143
- parentBasetMapId: parentId,
144
- ...layer,
145
- };
146
- if (layer.show !== undefined) {
147
- cesiumLayer.show = layer.show;
148
- }
149
- }
150
- }
151
-
152
- public removeLayer(layerId: string): void {
153
- const layer = this.findLayerById(layerId);
154
-
155
- if (layer) {
156
- this.mapViewer.imageryLayers.remove(layer, true);
157
- }
158
- }
159
-
160
- public removeBaseMapLayers(): void {
161
- const layerToDelete = this.layers.filter((layer) => {
162
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
163
- return parentId ? true : false;
164
- });
165
- layerToDelete.forEach((layer) => {
166
- this.mapViewer.imageryLayers.remove(layer, true);
167
- });
168
- // TODO: remove vector layers
169
- }
170
-
171
- // Remove all non base layers
172
- public removeNotBaseMapLayers(): void {
173
- const layerToDelete = this.layers.filter((layer) => {
174
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
175
- return parentId ? false : true;
176
- });
177
- layerToDelete.forEach((layer) => {
178
- this.mapViewer.imageryLayers.remove(layer, true);
179
- });
180
- // TODO: remove vector layers
181
- }
182
-
183
- public raise(layerId: string, positions = 1): void {
184
- const layer = this.findLayerById(layerId);
185
- const order = (layer?.meta as Record<string, unknown>).zIndex as number;
186
-
187
- if (layer) {
188
- for (let position = 0; position < positions; position++) {
189
- this.mapViewer.imageryLayers.raise(layer);
190
- }
191
- }
192
-
193
- this.updateLayersOrder(layerId, order, order + positions);
194
- }
195
-
196
- public lower(layerId: string, positions = 1): void {
197
- const layer = this.findLayerById(layerId);
198
- const order = (layer?.meta as Record<string, unknown>).zIndex as number;
199
- const lowerLimit = this.getBaseLayersCount();
200
- const layerIdx = this.mapViewer.imageryLayers.indexOf(
201
- layer as ImageryLayer
202
- );
203
-
204
- if (layerIdx - positions <= lowerLimit) {
205
- positions = layerIdx - lowerLimit;
206
- }
207
-
208
- if (layer) {
209
- for (let position = 0; position < positions; position++) {
210
- this.mapViewer.imageryLayers.lower(layer);
211
- }
212
- }
213
-
214
- this.updateLayersOrder(layerId, order, order - positions);
215
- }
216
-
217
- public raiseToTop(layerId: string): void {
218
- const layer = this.findLayerById(layerId);
219
- const order = (layer?.meta as Record<string, unknown>).zIndex as number;
220
-
221
- if (layer) {
222
- this.mapViewer.imageryLayers.raiseToTop(layer);
223
- }
224
-
225
- this.updateLayersOrder(
226
- layerId,
227
- order,
228
- this.mapViewer.imageryLayers.length - this.getBaseLayersCount() - 1
229
- );
230
- }
231
-
232
- public lowerToBottom(layerId: string): void {
233
- const layer = this.findLayerById(layerId);
234
- // const order = (layer?.meta as Record<string, unknown>).zIndex as number;
235
- const lowerLimit = this.getBaseLayersCount();
236
- const layerIdx = this.mapViewer.imageryLayers.indexOf(
237
- layer as ImageryLayer
238
- );
239
-
240
- this.lower(layerId, layerIdx - lowerLimit);
241
- // if (layer) {
242
- // this.mapViewer.imageryLayers.lowerToBottom(layer);
243
- // }
244
-
245
- // this.updateLayersOrder(layerId, order, 0);
246
- }
247
-
248
- public length(): number {
249
- return this.mapViewer.imageryLayers.length;
250
- }
251
-
252
- public show(layerId: string, isShow: boolean): void {
253
- const layer = this.get(layerId);
254
- if (layer !== undefined) {
255
- layer.show = isShow;
256
- }
257
- }
258
-
259
- public showAllNotBase(isShow: boolean): void {
260
- const nonBaseLayers = this.layers.filter((layer) => {
261
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
262
- return parentId ? false : true;
263
- });
264
- nonBaseLayers.forEach((layer: ICesiumImageryLayer) => {
265
- this.show(layer.meta?.id as string, isShow);
266
- });
267
- }
268
-
269
- public get(layerId: string): ICesiumImageryLayer | undefined {
270
- const layerInt = this.findLayerById(layerId);
271
-
272
- const layerIdx = this.mapViewer.imageryLayers.indexOf(
273
- layerInt as ImageryLayer
274
- );
275
-
276
- return layerIdx ? this.mapViewer.imageryLayers.get(layerIdx) : undefined;
277
- }
278
-
279
- public findLayerByPOI(
280
- x: number,
281
- y: number
282
- ): ICesiumImageryLayer[] | undefined {
283
- const position = pointToGeoJSON(this.mapViewer, x, y) as Feature<Point>;
284
-
285
- const nonBaseLayers = this.layers.filter((layer) => {
286
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
287
- return parentId ? false : true;
288
- });
289
-
290
- const selectedVisibleLayers = nonBaseLayers.filter((layer) => {
291
- const layerFootprint = get(layer.meta, 'details.footprint') as
292
- | Polygon
293
- | undefined;
294
- if (layerFootprint !== undefined) {
295
- const isInLayer = booleanPointInPolygon(position.geometry, {
296
- type: 'Feature',
297
- properties: {},
298
- geometry: layerFootprint,
299
- });
300
- return isInLayer && layer.show;
301
- } else {
302
- console.warn('CesiumImageryLayer has no defined footprint', layer.meta);
303
- return false;
304
- }
305
- });
306
-
307
- return selectedVisibleLayers.sort((layer1, layer2) => {
308
- // @ts-ignore
309
- return layer2.meta?.zIndex - layer1.meta?.zIndex;
310
- });
311
- }
312
-
313
- private setLegends(): void {
314
- if (typeof this.legendsExtractor !== 'undefined') {
315
- this.legendsList = this.legendsExtractor(this.layers);
316
- }
317
- }
318
-
319
- private getBaseLayersCount(): number {
320
- const baseLayers = this.layers.filter((layer) => {
321
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
322
- return parentId ? true : false;
323
- });
324
- return baseLayers.length;
325
- }
326
-
327
- private findLayerById(layerId: string): ICesiumImageryLayer | undefined {
328
- return this.layers.find((layer) => {
329
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
330
- return layer.meta !== undefined ? layer.meta.id === layerId : false;
331
- });
332
- }
333
-
334
- private updateLayersOrder(id: string, from: number, to: number): void {
335
- const move = from > to ? INC : DEC;
336
- const min = from < to ? from : to;
337
- const max = from < to ? to : from;
338
-
339
- this.layers.forEach((layer) => {
340
- const parentId = get(layer.meta, 'parentBasetMapId') as string;
341
- if (!parentId) {
342
- const layerOrder = layer.meta?.zIndex as number;
343
- (layer.meta as Record<string, unknown>).zIndex =
344
- layerOrder >= min && layerOrder <= max && layerOrder !== from
345
- ? layerOrder + move
346
- : layerOrder === from
347
- ? to
348
- : layerOrder;
349
- }
350
- });
351
- }
352
- }
353
-
354
- export default LayerManager;
1
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
+ import {
3
+ ImageryLayer,
4
+ UrlTemplateImageryProvider,
5
+ WebMapServiceImageryProvider,
6
+ WebMapTileServiceImageryProvider,
7
+ Event,
8
+ } from 'cesium';
9
+ import { get } from 'lodash';
10
+ import { Feature, Point, Polygon } from 'geojson';
11
+ import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
12
+ import {
13
+ RCesiumOSMLayerOptions,
14
+ RCesiumWMSLayerOptions,
15
+ RCesiumWMTSLayerOptions,
16
+ RCesiumXYZLayerOptions,
17
+ } from './layers';
18
+ import { CesiumViewer } from './map';
19
+ import { IBaseMap } from './settings/settings';
20
+ import { pointToGeoJSON } from './tools/geojson/point.geojson';
21
+ import { IMapLegend } from './map-legend';
22
+
23
+ const INC = 1;
24
+ const DEC = -1;
25
+
26
+ export interface ICesiumImageryLayer extends InstanceType<typeof ImageryLayer> {
27
+ meta?: Record<string, unknown>;
28
+ }
29
+
30
+ export type LayerType = 'OSM_LAYER' | 'WMTS_LAYER' | 'WMS_LAYER' | 'XYZ_LAYER';
31
+
32
+ export interface IRasterLayer {
33
+ id: string;
34
+ type: LayerType;
35
+ opacity: number;
36
+ zIndex: number;
37
+ show?: boolean;
38
+ options:
39
+ | RCesiumOSMLayerOptions
40
+ | RCesiumWMSLayerOptions
41
+ | RCesiumWMTSLayerOptions
42
+ | RCesiumXYZLayerOptions;
43
+ details?: Record<string, unknown>;
44
+ }
45
+
46
+ export interface IVectorLayer {
47
+ id: string;
48
+ opacity: number;
49
+ zIndex: number;
50
+ url: string;
51
+ }
52
+
53
+ export type LegendExtractor = (layers: (any & { meta: any })[]) => IMapLegend[];
54
+
55
+ class LayerManager {
56
+ public mapViewer: CesiumViewer;
57
+
58
+ public legendsList: IMapLegend[];
59
+ public layerUpdated: Event;
60
+ private readonly layers: ICesiumImageryLayer[];
61
+ private readonly legendsExtractor?: LegendExtractor;
62
+
63
+ public constructor(
64
+ mapViewer: CesiumViewer,
65
+ legendsExtractor?: LegendExtractor,
66
+ onLayersUpdate?: () => void
67
+ ) {
68
+ this.mapViewer = mapViewer;
69
+ // eslint-disable-next-line
70
+ this.layers = (this.mapViewer.imageryLayers as any)._layers;
71
+ this.legendsList = [];
72
+ this.legendsExtractor = legendsExtractor;
73
+ this.layerUpdated = new Event();
74
+ if (onLayersUpdate) {
75
+ this.layerUpdated.addEventListener(onLayersUpdate, this);
76
+ }
77
+ this.mapViewer.imageryLayers.layerRemoved.addEventListener(() => {
78
+ this.setLegends();
79
+ this.layerUpdated.raiseEvent();
80
+ });
81
+ }
82
+
83
+ /* eslint-disable */
84
+ public addMetaToLayer(
85
+ meta: any,
86
+ layerPredicate: (layer: ImageryLayer, idx: number) => boolean
87
+ ): void {
88
+ const layer = this.layers.find(layerPredicate);
89
+ if (layer) {
90
+ layer.meta = meta;
91
+ this.setLegends();
92
+ this.layerUpdated.raiseEvent();
93
+ }
94
+ }
95
+ /* eslint-enable */
96
+
97
+ public setBaseMapLayers(baseMap: IBaseMap): void {
98
+ const sortedBaseMapLayers = baseMap.baseRasteLayers.sort(
99
+ (layer1, layer2) => layer1.zIndex - layer2.zIndex
100
+ );
101
+ sortedBaseMapLayers.forEach((layer, idx) => {
102
+ this.addRasterLayer(layer, idx, baseMap.id);
103
+ });
104
+ }
105
+
106
+ public addRasterLayer(
107
+ layer: IRasterLayer,
108
+ index: number,
109
+ parentId: string
110
+ ): void {
111
+ let cesiumLayer: ICesiumImageryLayer | undefined;
112
+ switch (layer.type) {
113
+ case 'XYZ_LAYER':
114
+ cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
115
+ new UrlTemplateImageryProvider(
116
+ layer.options as UrlTemplateImageryProvider.ConstructorOptions
117
+ ),
118
+ index
119
+ );
120
+ break;
121
+ case 'WMS_LAYER':
122
+ cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
123
+ new WebMapServiceImageryProvider(
124
+ layer.options as WebMapServiceImageryProvider.ConstructorOptions
125
+ ),
126
+ index
127
+ );
128
+ break;
129
+ case 'WMTS_LAYER':
130
+ cesiumLayer = this.mapViewer.imageryLayers.addImageryProvider(
131
+ new WebMapTileServiceImageryProvider(
132
+ layer.options as WebMapTileServiceImageryProvider.ConstructorOptions
133
+ ),
134
+ index
135
+ );
136
+ break;
137
+ case 'OSM_LAYER':
138
+ break;
139
+ }
140
+ if (cesiumLayer) {
141
+ cesiumLayer.alpha = layer.opacity;
142
+ cesiumLayer.meta = {
143
+ parentBasetMapId: parentId,
144
+ ...layer,
145
+ };
146
+ if (layer.show !== undefined) {
147
+ cesiumLayer.show = layer.show;
148
+ }
149
+ }
150
+ }
151
+
152
+ public removeLayer(layerId: string): void {
153
+ const layer = this.findLayerById(layerId);
154
+
155
+ if (layer) {
156
+ this.mapViewer.imageryLayers.remove(layer, true);
157
+ }
158
+ }
159
+
160
+ public removeBaseMapLayers(): void {
161
+ const layerToDelete = this.layers.filter((layer) => {
162
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
163
+ return parentId ? true : false;
164
+ });
165
+ layerToDelete.forEach((layer) => {
166
+ this.mapViewer.imageryLayers.remove(layer, true);
167
+ });
168
+ // TODO: remove vector layers
169
+ }
170
+
171
+ // Remove all non base layers
172
+ public removeNotBaseMapLayers(): void {
173
+ const layerToDelete = this.layers.filter((layer) => {
174
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
175
+ return parentId ? false : true;
176
+ });
177
+ layerToDelete.forEach((layer) => {
178
+ this.mapViewer.imageryLayers.remove(layer, true);
179
+ });
180
+ // TODO: remove vector layers
181
+ }
182
+
183
+ public raise(layerId: string, positions = 1): void {
184
+ const layer = this.findLayerById(layerId);
185
+ const order = (layer?.meta as Record<string, unknown>).zIndex as number;
186
+
187
+ if (layer) {
188
+ for (let position = 0; position < positions; position++) {
189
+ this.mapViewer.imageryLayers.raise(layer);
190
+ }
191
+ }
192
+
193
+ this.updateLayersOrder(layerId, order, order + positions);
194
+ }
195
+
196
+ public lower(layerId: string, positions = 1): void {
197
+ const layer = this.findLayerById(layerId);
198
+ const order = (layer?.meta as Record<string, unknown>).zIndex as number;
199
+ const lowerLimit = this.getBaseLayersCount();
200
+ const layerIdx = this.mapViewer.imageryLayers.indexOf(
201
+ layer as ImageryLayer
202
+ );
203
+
204
+ if (layerIdx - positions <= lowerLimit) {
205
+ positions = layerIdx - lowerLimit;
206
+ }
207
+
208
+ if (layer) {
209
+ for (let position = 0; position < positions; position++) {
210
+ this.mapViewer.imageryLayers.lower(layer);
211
+ }
212
+ }
213
+
214
+ this.updateLayersOrder(layerId, order, order - positions);
215
+ }
216
+
217
+ public raiseToTop(layerId: string): void {
218
+ const layer = this.findLayerById(layerId);
219
+ const order = (layer?.meta as Record<string, unknown>).zIndex as number;
220
+
221
+ if (layer) {
222
+ this.mapViewer.imageryLayers.raiseToTop(layer);
223
+ }
224
+
225
+ this.updateLayersOrder(
226
+ layerId,
227
+ order,
228
+ this.mapViewer.imageryLayers.length - this.getBaseLayersCount() - 1
229
+ );
230
+ }
231
+
232
+ public lowerToBottom(layerId: string): void {
233
+ const layer = this.findLayerById(layerId);
234
+ // const order = (layer?.meta as Record<string, unknown>).zIndex as number;
235
+ const lowerLimit = this.getBaseLayersCount();
236
+ const layerIdx = this.mapViewer.imageryLayers.indexOf(
237
+ layer as ImageryLayer
238
+ );
239
+
240
+ this.lower(layerId, layerIdx - lowerLimit);
241
+ // if (layer) {
242
+ // this.mapViewer.imageryLayers.lowerToBottom(layer);
243
+ // }
244
+
245
+ // this.updateLayersOrder(layerId, order, 0);
246
+ }
247
+
248
+ public length(): number {
249
+ return this.mapViewer.imageryLayers.length;
250
+ }
251
+
252
+ public show(layerId: string, isShow: boolean): void {
253
+ const layer = this.get(layerId);
254
+ if (layer !== undefined) {
255
+ layer.show = isShow;
256
+ }
257
+ }
258
+
259
+ public showAllNotBase(isShow: boolean): void {
260
+ const nonBaseLayers = this.layers.filter((layer) => {
261
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
262
+ return parentId ? false : true;
263
+ });
264
+ nonBaseLayers.forEach((layer: ICesiumImageryLayer) => {
265
+ this.show(layer.meta?.id as string, isShow);
266
+ });
267
+ }
268
+
269
+ public get(layerId: string): ICesiumImageryLayer | undefined {
270
+ const layerInt = this.findLayerById(layerId);
271
+
272
+ const layerIdx = this.mapViewer.imageryLayers.indexOf(
273
+ layerInt as ImageryLayer
274
+ );
275
+
276
+ return layerIdx ? this.mapViewer.imageryLayers.get(layerIdx) : undefined;
277
+ }
278
+
279
+ public findLayerByPOI(
280
+ x: number,
281
+ y: number
282
+ ): ICesiumImageryLayer[] | undefined {
283
+ const position = pointToGeoJSON(this.mapViewer, x, y) as Feature<Point>;
284
+
285
+ const nonBaseLayers = this.layers.filter((layer) => {
286
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
287
+ return parentId ? false : true;
288
+ });
289
+
290
+ const selectedVisibleLayers = nonBaseLayers.filter((layer) => {
291
+ const layerFootprint = get(layer.meta, 'details.footprint') as
292
+ | Polygon
293
+ | undefined;
294
+ if (layerFootprint !== undefined) {
295
+ const isInLayer = booleanPointInPolygon(position.geometry, {
296
+ type: 'Feature',
297
+ properties: {},
298
+ geometry: layerFootprint,
299
+ });
300
+ return isInLayer && layer.show;
301
+ } else {
302
+ console.warn('CesiumImageryLayer has no defined footprint', layer.meta);
303
+ return false;
304
+ }
305
+ });
306
+
307
+ return selectedVisibleLayers.sort((layer1, layer2) => {
308
+ // @ts-ignore
309
+ return layer2.meta?.zIndex - layer1.meta?.zIndex;
310
+ });
311
+ }
312
+
313
+ private setLegends(): void {
314
+ if (typeof this.legendsExtractor !== 'undefined') {
315
+ this.legendsList = this.legendsExtractor(this.layers);
316
+ }
317
+ }
318
+
319
+ private getBaseLayersCount(): number {
320
+ const baseLayers = this.layers.filter((layer) => {
321
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
322
+ return parentId ? true : false;
323
+ });
324
+ return baseLayers.length;
325
+ }
326
+
327
+ private findLayerById(layerId: string): ICesiumImageryLayer | undefined {
328
+ return this.layers.find((layer) => {
329
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
330
+ return layer.meta !== undefined ? layer.meta.id === layerId : false;
331
+ });
332
+ }
333
+
334
+ private updateLayersOrder(id: string, from: number, to: number): void {
335
+ const move = from > to ? INC : DEC;
336
+ const min = from < to ? from : to;
337
+ const max = from < to ? to : from;
338
+
339
+ this.layers.forEach((layer) => {
340
+ const parentId = get(layer.meta, 'parentBasetMapId') as string;
341
+ if (!parentId) {
342
+ const layerOrder = layer.meta?.zIndex as number;
343
+ (layer.meta as Record<string, unknown>).zIndex =
344
+ layerOrder >= min && layerOrder <= max && layerOrder !== from
345
+ ? layerOrder + move
346
+ : layerOrder === from
347
+ ? to
348
+ : layerOrder;
349
+ }
350
+ });
351
+ }
352
+ }
353
+
354
+ export default LayerManager;