@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,444 +1,444 @@
1
- import React, { useLayoutEffect, useState } from 'react';
2
- import { Story, Meta } from '@storybook/react/types-6-0';
3
- import { Menu, MenuItem, MenuSurfaceAnchor } from '@map-colonies/react-core';
4
- import { Box } from '../box';
5
- import { CesiumMap, IContextMenuData, useCesiumMap } from './map';
6
- import { CesiumSceneMode } from './map.types';
7
- import { IRasterLayer } from './layers-manager';
8
-
9
- export default {
10
- title: 'Cesium Map',
11
- component: CesiumMap,
12
- parameters: {
13
- layout: 'fullscreen',
14
- },
15
- } as Meta;
16
-
17
- interface ILayersMozaikProps {
18
- layers: IRasterLayer[];
19
- }
20
-
21
- const mapDivStyle = {
22
- height: '90%',
23
- width: '100%',
24
- position: 'absolute' as const,
25
- };
26
-
27
- const BASE_MAPS = {
28
- maps: [
29
- {
30
- id: '1st',
31
- title: '1st Map Title',
32
- thumbnail:
33
- 'https://nsw.digitaltwin.terria.io/build/3456d1802ab2ef330ae2732387726771.png',
34
- baseRasteLayers: [
35
- {
36
- id: 'GOOGLE_TERRAIN',
37
- type: 'XYZ_LAYER',
38
- opacity: 1,
39
- zIndex: 0,
40
- options: {
41
- url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',
42
- layers: '',
43
- credit: 'GOOGLE',
44
- },
45
- },
46
- {
47
- id: 'INFRARED_RASTER',
48
- type: 'WMS_LAYER',
49
- opacity: 0.6,
50
- zIndex: 1,
51
- options: {
52
- url:
53
- 'https://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?',
54
- layers: 'goes_conus_ir',
55
- credit: 'Infrared data courtesy Iowa Environmental Mesonet',
56
- parameters: {
57
- transparent: 'true',
58
- format: 'image/png',
59
- },
60
- },
61
- },
62
- ],
63
- baseVectorLayers: [],
64
- },
65
- {
66
- id: '2nd',
67
- title: '2nd Map Title',
68
- isCurrent: true,
69
- thumbnail:
70
- 'https://nsw.digitaltwin.terria.io/build/efa2f6c408eb790753a9b5fb2f3dc678.png',
71
- baseRasteLayers: [
72
- {
73
- id: 'RADAR_RASTER',
74
- type: 'WMS_LAYER',
75
- opacity: 0.6,
76
- zIndex: 1,
77
- options: {
78
- url:
79
- 'https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?',
80
- layers: 'nexrad-n0r',
81
- credit: 'Radar data courtesy Iowa Environmental Mesonet',
82
- parameters: {
83
- transparent: 'true',
84
- format: 'image/png',
85
- },
86
- },
87
- },
88
- {
89
- id: 'GOOGLE_TERRAIN',
90
- type: 'XYZ_LAYER',
91
- opacity: 1,
92
- zIndex: 0,
93
- options: {
94
- url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',
95
- layers: '',
96
- credit: 'GOOGLE',
97
- },
98
- },
99
- {
100
- id: 'VECTOR_TILES_GPS',
101
- type: 'XYZ_LAYER',
102
- opacity: 1,
103
- zIndex: 2,
104
- options: {
105
- url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
106
- layers: '',
107
- credit: 'openstreetmap',
108
- },
109
- },
110
- ],
111
- baseVectorLayers: [],
112
- },
113
- {
114
- id: '3rd',
115
- title: '3rd Map Title',
116
- thumbnail:
117
- 'https://nsw.digitaltwin.terria.io/build/d8b97d3e38a0d43e5a06dea9aae17a3e.png',
118
- baseRasteLayers: [
119
- {
120
- id: 'VECTOR_TILES',
121
- type: 'XYZ_LAYER',
122
- opacity: 1,
123
- zIndex: 0,
124
- options: {
125
- url:
126
- 'https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=6170aad10dfd42a38d4d8c709a536f38',
127
- layers: '',
128
- credit: 'thunderforest',
129
- },
130
- },
131
- {
132
- id: 'VECTOR_TILES_GPS',
133
- type: 'XYZ_LAYER',
134
- opacity: 1,
135
- zIndex: 1,
136
- options: {
137
- url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
138
- layers: '',
139
- credit: 'openstreetmap',
140
- },
141
- },
142
- {
143
- id: 'WMTS_POPULATION_TILES',
144
- type: 'WMTS_LAYER',
145
- opacity: 0.4,
146
- zIndex: 2,
147
- options: {
148
- url:
149
- 'https://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_Density/MapServer/WMTS/',
150
- layer: 'USGSShadedReliefOnly',
151
- style: 'default',
152
- format: 'image/jpeg',
153
- tileMatrixSetID: 'default028mm',
154
- maximumLevel: 19,
155
- credit: 'U. S. Geological Survey',
156
- },
157
- },
158
- ],
159
- baseVectorLayers: [],
160
- },
161
- ],
162
- };
163
-
164
- const layers = [
165
- {
166
- id: '2_raster_ext',
167
- type: 'XYZ_LAYER',
168
- opacity: 1,
169
- zIndex: 0,
170
- show: false,
171
- options: {
172
- url:
173
- 'https://tiles.openaerialmap.org/5a9f90c42553e6000ce5ad6c/0/eee1a570-128e-4947-9ffa-1e69c1efab7c/{z}/{x}/{y}.png',
174
- },
175
- details: {
176
- footprint: {
177
- type: 'Polygon',
178
- coordinates: [
179
- [
180
- [34.8099445223518, 31.9061345394902],
181
- [34.8200994167574, 31.9061345394902],
182
- [34.8200994167574, 31.9106311613979],
183
- [34.8099445223518, 31.9106311613979],
184
- [34.8099445223518, 31.9061345394902],
185
- ],
186
- ],
187
- },
188
- },
189
- },
190
- {
191
- id: '3_raster_ext',
192
- type: 'XYZ_LAYER',
193
- opacity: 1,
194
- zIndex: 1,
195
- show: false,
196
- options: {
197
- url:
198
- 'https://tiles.openaerialmap.org/5a8316e22553e6000ce5ac7f/0/c3fcbe99-d339-41b6-8ec0-33d90ccca020/{z}/{x}/{y}.png',
199
- },
200
- details: {
201
- footprint: {
202
- type: 'Polygon',
203
- coordinates: [
204
- [
205
- [34.8106008249547, 31.9076273723004],
206
- [34.8137969069015, 31.9076273723004],
207
- [34.8137969069015, 31.9103791381117],
208
- [34.8106008249547, 31.9103791381117],
209
- [34.8106008249547, 31.9076273723004],
210
- ],
211
- ],
212
- },
213
- },
214
- },
215
- {
216
- id: '4_raster1_ext',
217
- type: 'XYZ_LAYER',
218
- opacity: 1,
219
- zIndex: 2,
220
- show: false,
221
- options: {
222
- url:
223
- 'https://tiles.openaerialmap.org/5a831b4a2553e6000ce5ac80/0/d02ddc76-9c2e-4994-97d4-a623eb371456/{z}/{x}/{y}.png',
224
- },
225
- details: {
226
- footprint: {
227
- type: 'Polygon',
228
- coordinates: [
229
- [
230
- [34.8043847068541, 31.9023297972932],
231
- [34.8142791322292, 31.9023297972932],
232
- [34.8142791322292, 31.9108796531516],
233
- [34.8043847068541, 31.9108796531516],
234
- [34.8043847068541, 31.9023297972932],
235
- ],
236
- ],
237
- },
238
- },
239
- },
240
- ];
241
-
242
- const ContextMenu: React.FC<IContextMenuData> = ({
243
- data,
244
- position,
245
- style,
246
- size,
247
- handleClose,
248
- }) => {
249
- const layerId =
250
- data[0]?.meta !== undefined
251
- ? ((data[0]?.meta as Record<string, unknown>).id as string)
252
- : '';
253
-
254
- const handleAction = (
255
- action: string,
256
- data: Record<string, unknown>[]
257
- ): void => {
258
- console.log(`ACTION: ${action}`);
259
- console.log('DATA:', data);
260
- console.log('SIZE:', size);
261
- };
262
-
263
- const emptyStyle = {
264
- left: `${position.x}px`,
265
- top: `${position.y}px`,
266
- };
267
-
268
- return (
269
- <>
270
- {data.length > 0 && (
271
- <Box
272
- style={{
273
- ...emptyStyle,
274
- ...style,
275
- background: 'var(--mdc-theme-surface)',
276
- position: 'absolute',
277
- borderRadius: '4px',
278
- padding: '12px',
279
- paddingBottom: '220px',
280
- }}
281
- >
282
- <h4>Actions on {layerId}:</h4>
283
- {data.length > 1 && (
284
- <h3>
285
- <span style={{ color: 'red' }}>{data.length}</span> layers
286
- overlapping
287
- </h3>
288
- )}
289
- <MenuSurfaceAnchor>
290
- <Menu
291
- open={true}
292
- onClose={(evt): void => handleClose()}
293
- style={{ width: '100%' }}
294
- >
295
- {['Top', 'Up', 'Down', 'Bottom'].map((action) => {
296
- return (
297
- <MenuItem key={`imageryMenuItemAction_${action}`}>
298
- <Box
299
- onClick={(evt): void => {
300
- handleAction(action, data);
301
- }}
302
- >
303
- {action}
304
- </Box>
305
- </MenuItem>
306
- );
307
- })}
308
- </Menu>
309
- </MenuSurfaceAnchor>
310
- </Box>
311
- )}
312
- {data.length === 0 && (
313
- <Box
314
- style={{
315
- ...emptyStyle,
316
- background: 'var(--mdc-theme-surface)',
317
- position: 'absolute',
318
- borderRadius: '4px',
319
- padding: '12px',
320
- }}
321
- >
322
- No data found
323
- </Box>
324
- )}
325
- </>
326
- );
327
- };
328
-
329
- const LayersMozaik: React.FC<ILayersMozaikProps> = (props) => {
330
- const mapViewer = useCesiumMap();
331
- const { layers } = props;
332
- const [selectedLayer, setSelectedLayer] = useState<string>(layers[0].id);
333
- const [times, setTimes] = useState<number>(1);
334
- const [allShow, setAllShow] = useState<boolean>(false);
335
-
336
- useLayoutEffect(() => {
337
- const sortedLayers = layers.sort(
338
- (layer1, layer2) => layer1.zIndex - layer2.zIndex
339
- );
340
- sortedLayers.forEach((layer, idx) => {
341
- mapViewer.layersManager?.addRasterLayer(layer, idx, '');
342
- });
343
- }, [layers, mapViewer]);
344
-
345
- const handleRaise = (): void => {
346
- mapViewer.layersManager?.raise(selectedLayer, times);
347
- };
348
-
349
- const handleLower = (): void => {
350
- mapViewer.layersManager?.lower(selectedLayer, times);
351
- };
352
-
353
- const handleRaiseToTop = (): void => {
354
- mapViewer.layersManager?.raiseToTop(selectedLayer);
355
- };
356
-
357
- const handleLowerToBottom = (): void => {
358
- mapViewer.layersManager?.lowerToBottom(selectedLayer);
359
- };
360
-
361
- const handleToglleAll = (): void => {
362
- mapViewer.layersManager?.showAllNotBase(!allShow);
363
- setAllShow(!allShow);
364
- };
365
-
366
- return (
367
- <>
368
- <select
369
- defaultValue={selectedLayer}
370
- onChange={(evt): void => {
371
- setSelectedLayer(evt.target.value);
372
- }}
373
- >
374
- {layers.map((layer) => (
375
- <option key={layer.id} defaultValue={layer.id}>
376
- {layer.id}
377
- </option>
378
- ))}
379
- </select>
380
- <input
381
- type="number"
382
- value={times}
383
- onChange={(evt): void => {
384
- setTimes(parseInt(evt.target.value));
385
- }}
386
- ></input>
387
- <button
388
- onClick={(): void => {
389
- handleRaise();
390
- }}
391
- >
392
- Raise
393
- </button>
394
- <button
395
- onClick={(): void => {
396
- handleLower();
397
- }}
398
- >
399
- Lower
400
- </button>
401
- <button
402
- onClick={(): void => {
403
- handleRaiseToTop();
404
- }}
405
- >
406
- RaiseToTop
407
- </button>
408
- <button
409
- onClick={(): void => {
410
- handleLowerToBottom();
411
- }}
412
- >
413
- LowerToBottom
414
- </button>
415
- <button
416
- onClick={(): void => {
417
- handleToglleAll();
418
- }}
419
- >
420
- Toggle All
421
- </button>
422
- </>
423
- );
424
- };
425
-
426
- export const MapWithContextMenu: Story = () => {
427
- const [center] = useState<[number, number]>([34.811, 31.908]);
428
- return (
429
- <div style={mapDivStyle}>
430
- <CesiumMap
431
- center={center}
432
- zoom={14}
433
- imageryProvider={false}
434
- sceneModes={[CesiumSceneMode.SCENE3D, CesiumSceneMode.COLUMBUS_VIEW]}
435
- baseMaps={BASE_MAPS}
436
- // @ts-ignore
437
- imageryContextMenu={<ContextMenu />}
438
- imageryContextMenuSize={{ height: 340, width: 200 }}
439
- >
440
- <LayersMozaik layers={layers} />
441
- </CesiumMap>
442
- </div>
443
- );
444
- };
1
+ import React, { useLayoutEffect, useState } from 'react';
2
+ import { Story, Meta } from '@storybook/react/types-6-0';
3
+ import { Menu, MenuItem, MenuSurfaceAnchor } from '@map-colonies/react-core';
4
+ import { Box } from '../box';
5
+ import { CesiumMap, IContextMenuData, useCesiumMap } from './map';
6
+ import { CesiumSceneMode } from './map.types';
7
+ import { IRasterLayer } from './layers-manager';
8
+
9
+ export default {
10
+ title: 'Cesium Map',
11
+ component: CesiumMap,
12
+ parameters: {
13
+ layout: 'fullscreen',
14
+ },
15
+ } as Meta;
16
+
17
+ interface ILayersMozaikProps {
18
+ layers: IRasterLayer[];
19
+ }
20
+
21
+ const mapDivStyle = {
22
+ height: '90%',
23
+ width: '100%',
24
+ position: 'absolute' as const,
25
+ };
26
+
27
+ const BASE_MAPS = {
28
+ maps: [
29
+ {
30
+ id: '1st',
31
+ title: '1st Map Title',
32
+ thumbnail:
33
+ 'https://nsw.digitaltwin.terria.io/build/3456d1802ab2ef330ae2732387726771.png',
34
+ baseRasteLayers: [
35
+ {
36
+ id: 'GOOGLE_TERRAIN',
37
+ type: 'XYZ_LAYER',
38
+ opacity: 1,
39
+ zIndex: 0,
40
+ options: {
41
+ url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',
42
+ layers: '',
43
+ credit: 'GOOGLE',
44
+ },
45
+ },
46
+ {
47
+ id: 'INFRARED_RASTER',
48
+ type: 'WMS_LAYER',
49
+ opacity: 0.6,
50
+ zIndex: 1,
51
+ options: {
52
+ url:
53
+ 'https://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?',
54
+ layers: 'goes_conus_ir',
55
+ credit: 'Infrared data courtesy Iowa Environmental Mesonet',
56
+ parameters: {
57
+ transparent: 'true',
58
+ format: 'image/png',
59
+ },
60
+ },
61
+ },
62
+ ],
63
+ baseVectorLayers: [],
64
+ },
65
+ {
66
+ id: '2nd',
67
+ title: '2nd Map Title',
68
+ isCurrent: true,
69
+ thumbnail:
70
+ 'https://nsw.digitaltwin.terria.io/build/efa2f6c408eb790753a9b5fb2f3dc678.png',
71
+ baseRasteLayers: [
72
+ {
73
+ id: 'RADAR_RASTER',
74
+ type: 'WMS_LAYER',
75
+ opacity: 0.6,
76
+ zIndex: 1,
77
+ options: {
78
+ url:
79
+ 'https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?',
80
+ layers: 'nexrad-n0r',
81
+ credit: 'Radar data courtesy Iowa Environmental Mesonet',
82
+ parameters: {
83
+ transparent: 'true',
84
+ format: 'image/png',
85
+ },
86
+ },
87
+ },
88
+ {
89
+ id: 'GOOGLE_TERRAIN',
90
+ type: 'XYZ_LAYER',
91
+ opacity: 1,
92
+ zIndex: 0,
93
+ options: {
94
+ url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',
95
+ layers: '',
96
+ credit: 'GOOGLE',
97
+ },
98
+ },
99
+ {
100
+ id: 'VECTOR_TILES_GPS',
101
+ type: 'XYZ_LAYER',
102
+ opacity: 1,
103
+ zIndex: 2,
104
+ options: {
105
+ url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
106
+ layers: '',
107
+ credit: 'openstreetmap',
108
+ },
109
+ },
110
+ ],
111
+ baseVectorLayers: [],
112
+ },
113
+ {
114
+ id: '3rd',
115
+ title: '3rd Map Title',
116
+ thumbnail:
117
+ 'https://nsw.digitaltwin.terria.io/build/d8b97d3e38a0d43e5a06dea9aae17a3e.png',
118
+ baseRasteLayers: [
119
+ {
120
+ id: 'VECTOR_TILES',
121
+ type: 'XYZ_LAYER',
122
+ opacity: 1,
123
+ zIndex: 0,
124
+ options: {
125
+ url:
126
+ 'https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=6170aad10dfd42a38d4d8c709a536f38',
127
+ layers: '',
128
+ credit: 'thunderforest',
129
+ },
130
+ },
131
+ {
132
+ id: 'VECTOR_TILES_GPS',
133
+ type: 'XYZ_LAYER',
134
+ opacity: 1,
135
+ zIndex: 1,
136
+ options: {
137
+ url: 'https://gps.tile.openstreetmap.org/lines/{z}/{x}/{y}.png',
138
+ layers: '',
139
+ credit: 'openstreetmap',
140
+ },
141
+ },
142
+ {
143
+ id: 'WMTS_POPULATION_TILES',
144
+ type: 'WMTS_LAYER',
145
+ opacity: 0.4,
146
+ zIndex: 2,
147
+ options: {
148
+ url:
149
+ 'https://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_Density/MapServer/WMTS/',
150
+ layer: 'USGSShadedReliefOnly',
151
+ style: 'default',
152
+ format: 'image/jpeg',
153
+ tileMatrixSetID: 'default028mm',
154
+ maximumLevel: 19,
155
+ credit: 'U. S. Geological Survey',
156
+ },
157
+ },
158
+ ],
159
+ baseVectorLayers: [],
160
+ },
161
+ ],
162
+ };
163
+
164
+ const layers = [
165
+ {
166
+ id: '2_raster_ext',
167
+ type: 'XYZ_LAYER',
168
+ opacity: 1,
169
+ zIndex: 0,
170
+ show: false,
171
+ options: {
172
+ url:
173
+ 'https://tiles.openaerialmap.org/5a9f90c42553e6000ce5ad6c/0/eee1a570-128e-4947-9ffa-1e69c1efab7c/{z}/{x}/{y}.png',
174
+ },
175
+ details: {
176
+ footprint: {
177
+ type: 'Polygon',
178
+ coordinates: [
179
+ [
180
+ [34.8099445223518, 31.9061345394902],
181
+ [34.8200994167574, 31.9061345394902],
182
+ [34.8200994167574, 31.9106311613979],
183
+ [34.8099445223518, 31.9106311613979],
184
+ [34.8099445223518, 31.9061345394902],
185
+ ],
186
+ ],
187
+ },
188
+ },
189
+ },
190
+ {
191
+ id: '3_raster_ext',
192
+ type: 'XYZ_LAYER',
193
+ opacity: 1,
194
+ zIndex: 1,
195
+ show: false,
196
+ options: {
197
+ url:
198
+ 'https://tiles.openaerialmap.org/5a8316e22553e6000ce5ac7f/0/c3fcbe99-d339-41b6-8ec0-33d90ccca020/{z}/{x}/{y}.png',
199
+ },
200
+ details: {
201
+ footprint: {
202
+ type: 'Polygon',
203
+ coordinates: [
204
+ [
205
+ [34.8106008249547, 31.9076273723004],
206
+ [34.8137969069015, 31.9076273723004],
207
+ [34.8137969069015, 31.9103791381117],
208
+ [34.8106008249547, 31.9103791381117],
209
+ [34.8106008249547, 31.9076273723004],
210
+ ],
211
+ ],
212
+ },
213
+ },
214
+ },
215
+ {
216
+ id: '4_raster1_ext',
217
+ type: 'XYZ_LAYER',
218
+ opacity: 1,
219
+ zIndex: 2,
220
+ show: false,
221
+ options: {
222
+ url:
223
+ 'https://tiles.openaerialmap.org/5a831b4a2553e6000ce5ac80/0/d02ddc76-9c2e-4994-97d4-a623eb371456/{z}/{x}/{y}.png',
224
+ },
225
+ details: {
226
+ footprint: {
227
+ type: 'Polygon',
228
+ coordinates: [
229
+ [
230
+ [34.8043847068541, 31.9023297972932],
231
+ [34.8142791322292, 31.9023297972932],
232
+ [34.8142791322292, 31.9108796531516],
233
+ [34.8043847068541, 31.9108796531516],
234
+ [34.8043847068541, 31.9023297972932],
235
+ ],
236
+ ],
237
+ },
238
+ },
239
+ },
240
+ ];
241
+
242
+ const ContextMenu: React.FC<IContextMenuData> = ({
243
+ data,
244
+ position,
245
+ style,
246
+ size,
247
+ handleClose,
248
+ }) => {
249
+ const layerId =
250
+ data[0]?.meta !== undefined
251
+ ? ((data[0]?.meta as Record<string, unknown>).id as string)
252
+ : '';
253
+
254
+ const handleAction = (
255
+ action: string,
256
+ data: Record<string, unknown>[]
257
+ ): void => {
258
+ console.log(`ACTION: ${action}`);
259
+ console.log('DATA:', data);
260
+ console.log('SIZE:', size);
261
+ };
262
+
263
+ const emptyStyle = {
264
+ left: `${position.x}px`,
265
+ top: `${position.y}px`,
266
+ };
267
+
268
+ return (
269
+ <>
270
+ {data.length > 0 && (
271
+ <Box
272
+ style={{
273
+ ...emptyStyle,
274
+ ...style,
275
+ background: 'var(--mdc-theme-surface)',
276
+ position: 'absolute',
277
+ borderRadius: '4px',
278
+ padding: '12px',
279
+ paddingBottom: '220px',
280
+ }}
281
+ >
282
+ <h4>Actions on {layerId}:</h4>
283
+ {data.length > 1 && (
284
+ <h3>
285
+ <span style={{ color: 'red' }}>{data.length}</span> layers
286
+ overlapping
287
+ </h3>
288
+ )}
289
+ <MenuSurfaceAnchor>
290
+ <Menu
291
+ open={true}
292
+ onClose={(evt): void => handleClose()}
293
+ style={{ width: '100%' }}
294
+ >
295
+ {['Top', 'Up', 'Down', 'Bottom'].map((action) => {
296
+ return (
297
+ <MenuItem key={`imageryMenuItemAction_${action}`}>
298
+ <Box
299
+ onClick={(evt): void => {
300
+ handleAction(action, data);
301
+ }}
302
+ >
303
+ {action}
304
+ </Box>
305
+ </MenuItem>
306
+ );
307
+ })}
308
+ </Menu>
309
+ </MenuSurfaceAnchor>
310
+ </Box>
311
+ )}
312
+ {data.length === 0 && (
313
+ <Box
314
+ style={{
315
+ ...emptyStyle,
316
+ background: 'var(--mdc-theme-surface)',
317
+ position: 'absolute',
318
+ borderRadius: '4px',
319
+ padding: '12px',
320
+ }}
321
+ >
322
+ No data found
323
+ </Box>
324
+ )}
325
+ </>
326
+ );
327
+ };
328
+
329
+ const LayersMozaik: React.FC<ILayersMozaikProps> = (props) => {
330
+ const mapViewer = useCesiumMap();
331
+ const { layers } = props;
332
+ const [selectedLayer, setSelectedLayer] = useState<string>(layers[0].id);
333
+ const [times, setTimes] = useState<number>(1);
334
+ const [allShow, setAllShow] = useState<boolean>(false);
335
+
336
+ useLayoutEffect(() => {
337
+ const sortedLayers = layers.sort(
338
+ (layer1, layer2) => layer1.zIndex - layer2.zIndex
339
+ );
340
+ sortedLayers.forEach((layer, idx) => {
341
+ mapViewer.layersManager?.addRasterLayer(layer, idx, '');
342
+ });
343
+ }, [layers, mapViewer]);
344
+
345
+ const handleRaise = (): void => {
346
+ mapViewer.layersManager?.raise(selectedLayer, times);
347
+ };
348
+
349
+ const handleLower = (): void => {
350
+ mapViewer.layersManager?.lower(selectedLayer, times);
351
+ };
352
+
353
+ const handleRaiseToTop = (): void => {
354
+ mapViewer.layersManager?.raiseToTop(selectedLayer);
355
+ };
356
+
357
+ const handleLowerToBottom = (): void => {
358
+ mapViewer.layersManager?.lowerToBottom(selectedLayer);
359
+ };
360
+
361
+ const handleToglleAll = (): void => {
362
+ mapViewer.layersManager?.showAllNotBase(!allShow);
363
+ setAllShow(!allShow);
364
+ };
365
+
366
+ return (
367
+ <>
368
+ <select
369
+ defaultValue={selectedLayer}
370
+ onChange={(evt): void => {
371
+ setSelectedLayer(evt.target.value);
372
+ }}
373
+ >
374
+ {layers.map((layer) => (
375
+ <option key={layer.id} defaultValue={layer.id}>
376
+ {layer.id}
377
+ </option>
378
+ ))}
379
+ </select>
380
+ <input
381
+ type="number"
382
+ value={times}
383
+ onChange={(evt): void => {
384
+ setTimes(parseInt(evt.target.value));
385
+ }}
386
+ ></input>
387
+ <button
388
+ onClick={(): void => {
389
+ handleRaise();
390
+ }}
391
+ >
392
+ Raise
393
+ </button>
394
+ <button
395
+ onClick={(): void => {
396
+ handleLower();
397
+ }}
398
+ >
399
+ Lower
400
+ </button>
401
+ <button
402
+ onClick={(): void => {
403
+ handleRaiseToTop();
404
+ }}
405
+ >
406
+ RaiseToTop
407
+ </button>
408
+ <button
409
+ onClick={(): void => {
410
+ handleLowerToBottom();
411
+ }}
412
+ >
413
+ LowerToBottom
414
+ </button>
415
+ <button
416
+ onClick={(): void => {
417
+ handleToglleAll();
418
+ }}
419
+ >
420
+ Toggle All
421
+ </button>
422
+ </>
423
+ );
424
+ };
425
+
426
+ export const MapWithContextMenu: Story = () => {
427
+ const [center] = useState<[number, number]>([34.811, 31.908]);
428
+ return (
429
+ <div style={mapDivStyle}>
430
+ <CesiumMap
431
+ center={center}
432
+ zoom={14}
433
+ imageryProvider={false}
434
+ sceneModes={[CesiumSceneMode.SCENE3D, CesiumSceneMode.COLUMBUS_VIEW]}
435
+ baseMaps={BASE_MAPS}
436
+ // @ts-ignore
437
+ imageryContextMenu={<ContextMenu />}
438
+ imageryContextMenuSize={{ height: 340, width: 200 }}
439
+ >
440
+ <LayersMozaik layers={layers} />
441
+ </CesiumMap>
442
+ </div>
443
+ );
444
+ };