@map-colonies/react-components 3.12.2 → 3.12.3
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.
- package/.eslintignore +1 -1
- package/.storybook/main.js +13 -13
- package/.storybook/manager.js +6 -6
- package/.storybook/preview-head.html +21 -21
- package/.storybook/preview.js +18 -18
- package/.storybook/theme.js +9 -9
- package/CHANGELOG.md +828 -819
- package/README.md +53 -53
- package/dist/autocomplete/autocomplete.css +25 -25
- package/dist/autocomplete/autocomplete.d.ts +33 -33
- package/dist/autocomplete/autocomplete.js +478 -478
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.js +5 -5
- package/dist/box/box.d.ts +3 -3
- package/dist/box/box.js +35 -35
- package/dist/box/index.d.ts +1 -1
- package/dist/box/index.js +5 -5
- package/dist/cesium-map/data-sources/custom.data-source.d.ts +5 -5
- package/dist/cesium-map/data-sources/custom.data-source.js +23 -23
- package/dist/cesium-map/data-sources/drawings.data-source.d.ts +34 -34
- package/dist/cesium-map/data-sources/drawings.data-source.js +187 -187
- package/dist/cesium-map/data-sources/index.d.ts +2 -2
- package/dist/cesium-map/data-sources/index.js +14 -14
- package/dist/cesium-map/entities/entity.d.ts +5 -5
- package/dist/cesium-map/entities/entity.description.d.ts +6 -6
- package/dist/cesium-map/entities/entity.description.js +27 -27
- package/dist/cesium-map/entities/entity.js +23 -23
- package/dist/cesium-map/entities/graphics/polygon.graphics.d.ts +5 -5
- package/dist/cesium-map/entities/graphics/polygon.graphics.js +23 -23
- package/dist/cesium-map/entities/graphics/polyline.graphics.d.ts +5 -5
- package/dist/cesium-map/entities/graphics/polyline.graphics.js +23 -23
- package/dist/cesium-map/entities/graphics/rectangle.graphics.d.ts +5 -5
- package/dist/cesium-map/entities/graphics/rectangle.graphics.js +23 -23
- package/dist/cesium-map/entities/index.d.ts +4 -4
- package/dist/cesium-map/entities/index.js +16 -16
- package/dist/cesium-map/index.d.ts +8 -8
- package/dist/cesium-map/index.js +20 -20
- package/dist/cesium-map/layers/3d.tileset.d.ts +7 -7
- package/dist/cesium-map/layers/3d.tileset.js +43 -43
- package/dist/cesium-map/layers/3d.tileset.with.update.d.ts +6 -6
- package/dist/cesium-map/layers/3d.tileset.with.update.js +115 -115
- package/dist/cesium-map/layers/geojson.layer.d.ts +5 -5
- package/dist/cesium-map/layers/geojson.layer.js +23 -23
- package/dist/cesium-map/layers/imagery.layer.d.ts +6 -6
- package/dist/cesium-map/layers/imagery.layer.js +68 -68
- package/dist/cesium-map/layers/index.d.ts +7 -7
- package/dist/cesium-map/layers/index.js +19 -19
- package/dist/cesium-map/layers/osm.layer.d.ts +9 -9
- package/dist/cesium-map/layers/osm.layer.js +36 -36
- package/dist/cesium-map/layers/wms.layer.d.ts +9 -9
- package/dist/cesium-map/layers/wms.layer.js +36 -36
- package/dist/cesium-map/layers/wmts.layer.d.ts +9 -9
- package/dist/cesium-map/layers/wmts.layer.js +36 -36
- package/dist/cesium-map/layers/xyz.layer.d.ts +9 -9
- package/dist/cesium-map/layers/xyz.layer.js +36 -36
- package/dist/cesium-map/layers-manager.d.ts +55 -55
- package/dist/cesium-map/layers-manager.js +246 -246
- package/dist/cesium-map/map-legend/MapLegend.css +135 -135
- package/dist/cesium-map/map-legend/MapLegend.d.ts +15 -15
- package/dist/cesium-map/map-legend/MapLegend.js +57 -57
- package/dist/cesium-map/map-legend/MapLegendList.d.ts +13 -13
- package/dist/cesium-map/map-legend/MapLegendList.js +43 -43
- package/dist/cesium-map/map-legend/MapLegendSidebar.d.ts +16 -16
- package/dist/cesium-map/map-legend/MapLegendSidebar.js +20 -20
- package/dist/cesium-map/map-legend/MapLegendToggle.d.ts +7 -7
- package/dist/cesium-map/map-legend/MapLegendToggle.js +20 -20
- package/dist/cesium-map/map-legend/index.d.ts +3 -3
- package/dist/cesium-map/map-legend/index.js +14 -14
- package/dist/cesium-map/map.css +59 -59
- package/dist/cesium-map/map.d.ts +59 -59
- package/dist/cesium-map/map.js +305 -305
- package/dist/cesium-map/map.types.d.ts +8 -8
- package/dist/cesium-map/map.types.js +12 -12
- package/dist/cesium-map/proxied.types.d.ts +30 -30
- package/dist/cesium-map/proxied.types.js +132 -132
- package/dist/cesium-map/settings/base-maps.css +37 -37
- package/dist/cesium-map/settings/base-maps.d.ts +7 -7
- package/dist/cesium-map/settings/base-maps.js +78 -78
- package/dist/cesium-map/settings/scene-modes.css +19 -19
- package/dist/cesium-map/settings/scene-modes.d.ts +7 -7
- package/dist/cesium-map/settings/scene-modes.js +65 -65
- package/dist/cesium-map/settings/settings.css +52 -52
- package/dist/cesium-map/settings/settings.d.ts +23 -23
- package/dist/cesium-map/settings/settings.js +79 -79
- package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.d.ts +3 -3
- package/dist/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.js +245 -245
- package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.d.ts +9 -9
- package/dist/cesium-map/terrain-providers/custom/quantized-mesh-decoder.js +202 -202
- package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.d.ts +50 -50
- package/dist/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.js +136 -136
- package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.d.ts +2 -2
- package/dist/cesium-map/tools/cesium/primitives-conversions.cesium.js +38 -38
- package/dist/cesium-map/tools/coordinates-tracker.tool.css +11 -11
- package/dist/cesium-map/tools/coordinates-tracker.tool.d.ts +7 -7
- package/dist/cesium-map/tools/coordinates-tracker.tool.js +78 -78
- package/dist/cesium-map/tools/draw/drawHelper.css +101 -101
- package/dist/cesium-map/tools/draw/drawHelper.d.ts +28 -28
- package/dist/cesium-map/tools/draw/drawHelper.js +1694 -1694
- package/dist/cesium-map/tools/geojson/geojson-to-primitive.d.ts +4 -4
- package/dist/cesium-map/tools/geojson/geojson-to-primitive.js +41 -41
- package/dist/cesium-map/tools/geojson/index.d.ts +2 -2
- package/dist/cesium-map/tools/geojson/index.js +14 -14
- package/dist/cesium-map/tools/geojson/point.geojson.d.ts +3 -3
- package/dist/cesium-map/tools/geojson/point.geojson.js +21 -21
- package/dist/cesium-map/tools/geojson/polygon.geojson.d.ts +3 -3
- package/dist/cesium-map/tools/geojson/polygon.geojson.js +24 -24
- package/dist/cesium-map/tools/geojson/rectangle.geojson.d.ts +3 -3
- package/dist/cesium-map/tools/geojson/rectangle.geojson.js +44 -44
- package/dist/cesium-map/tools/inspector.tool.d.ts +4 -4
- package/dist/cesium-map/tools/inspector.tool.js +33 -33
- package/dist/cesium-map/tools/scale-tracker.tool.css +16 -16
- package/dist/cesium-map/tools/scale-tracker.tool.d.ts +8 -8
- package/dist/cesium-map/tools/scale-tracker.tool.js +158 -158
- package/dist/cesium-map/tools/terranian-height.tool.d.ts +4 -4
- package/dist/cesium-map/tools/terranian-height.tool.js +114 -114
- package/dist/cssbaseline/cssbaseline.d.ts +5 -5
- package/dist/cssbaseline/cssbaseline.js +41 -41
- package/dist/cssbaseline/index.d.ts +1 -1
- package/dist/cssbaseline/index.js +6 -6
- package/dist/date-picker/date-picker.css +9 -9
- package/dist/date-picker/date-picker.d.ts +14 -14
- package/dist/date-picker/date-picker.js +78 -78
- package/dist/date-picker/index.d.ts +1 -1
- package/dist/date-picker/index.js +13 -13
- package/dist/date-range-picker/date-range-picker.css +9 -9
- package/dist/date-range-picker/date-range-picker.d.ts +26 -26
- package/dist/date-range-picker/date-range-picker.form-control.css +3 -3
- package/dist/date-range-picker/date-range-picker.form-control.d.ts +28 -28
- package/dist/date-range-picker/date-range-picker.form-control.js +95 -95
- package/dist/date-range-picker/date-range-picker.js +104 -104
- package/dist/date-range-picker/index.d.ts +2 -2
- package/dist/date-range-picker/index.js +14 -14
- package/dist/file-picker/file-picker.css +63 -63
- package/dist/file-picker/file-picker.d.ts +276 -276
- package/dist/file-picker/file-picker.js +151 -151
- package/dist/file-picker/fs-map.json +1556 -1556
- package/dist/file-picker/index.d.ts +2 -2
- package/dist/file-picker/index.js +14 -14
- package/dist/file-picker/localization.d.ts +11 -11
- package/dist/file-picker/localization.js +124 -124
- package/dist/index.d.ts +13 -13
- package/dist/index.js +25 -25
- package/dist/map-filter-container/container-map.css +5 -5
- package/dist/map-filter-container/container-map.d.ts +11 -11
- package/dist/map-filter-container/container-map.js +31 -31
- package/dist/map-filter-container/index.d.ts +1 -1
- package/dist/map-filter-container/index.js +13 -13
- package/dist/map-filter-container/map-filter-container.d.ts +9 -9
- package/dist/map-filter-container/map-filter-container.js +78 -78
- package/dist/map-filter-container/polygon-selection-ui.d.ts +12 -12
- package/dist/map-filter-container/polygon-selection-ui.js +62 -62
- package/dist/models/defaults.d.ts +28 -28
- package/dist/models/defaults.js +32 -32
- package/dist/models/enums.d.ts +14 -14
- package/dist/models/enums.js +20 -20
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.js +13 -13
- package/dist/ol-map/feature.d.ts +6 -6
- package/dist/ol-map/feature.js +20 -20
- package/dist/ol-map/index.d.ts +6 -6
- package/dist/ol-map/index.js +18 -18
- package/dist/ol-map/interactions/draw.d.ts +8 -8
- package/dist/ol-map/interactions/draw.js +44 -44
- package/dist/ol-map/interactions/index.d.ts +1 -1
- package/dist/ol-map/interactions/index.js +13 -13
- package/dist/ol-map/layers/index.d.ts +3 -3
- package/dist/ol-map/layers/index.js +15 -15
- package/dist/ol-map/layers/tile-layer.d.ts +9 -9
- package/dist/ol-map/layers/tile-layer.js +48 -48
- package/dist/ol-map/layers/vector-layer.d.ts +4 -4
- package/dist/ol-map/layers/vector-layer.js +48 -48
- package/dist/ol-map/layers/vector-tile-layer.d.ts +10 -10
- package/dist/ol-map/layers/vector-tile-layer.js +66 -66
- package/dist/ol-map/map.css +17 -17
- package/dist/ol-map/map.d.ts +14 -14
- package/dist/ol-map/map.js +117 -117
- package/dist/ol-map/source/index.d.ts +6 -6
- package/dist/ol-map/source/index.js +18 -18
- package/dist/ol-map/source/mvt.d.ts +11 -11
- package/dist/ol-map/source/mvt.js +37 -37
- package/dist/ol-map/source/osm.d.ts +2 -2
- package/dist/ol-map/source/osm.js +14 -14
- package/dist/ol-map/source/vector-source.d.ts +4 -4
- package/dist/ol-map/source/vector-source.js +45 -45
- package/dist/ol-map/source/wms.d.ts +17 -17
- package/dist/ol-map/source/wms.js +30 -30
- package/dist/ol-map/source/wmts.d.ts +21 -21
- package/dist/ol-map/source/wmts.js +59 -59
- package/dist/ol-map/source/xyz.d.ts +12 -12
- package/dist/ol-map/source/xyz.js +27 -27
- package/dist/ol-map/style.d.ts +4 -4
- package/dist/ol-map/style.js +22 -22
- package/dist/popover/index.d.ts +1 -1
- package/dist/popover/index.js +5 -5
- package/dist/popover/popover.d.ts +3 -3
- package/dist/popover/popover.js +35 -35
- package/dist/smart-table/__mock-data__/smartTableMocks.d.ts +7 -7
- package/dist/smart-table/__mock-data__/smartTableMocks.js +17 -17
- package/dist/smart-table/index.d.ts +2 -2
- package/dist/smart-table/index.js +14 -14
- package/dist/smart-table/smart-table-head.d.ts +11 -11
- package/dist/smart-table/smart-table-head.js +22 -22
- package/dist/smart-table/smart-table-row.d.ts +12 -12
- package/dist/smart-table/smart-table-row.js +46 -46
- package/dist/smart-table/smart-table-types.d.ts +9 -9
- package/dist/smart-table/smart-table-types.js +2 -2
- package/dist/smart-table/smart-table.d.ts +17 -17
- package/dist/smart-table/smart-table.js +51 -51
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.js +13 -13
- package/dist/theme/theme.d.ts +8 -8
- package/dist/theme/theme.js +124 -124
- package/dist/utils/map.d.ts +3 -3
- package/dist/utils/map.js +21 -21
- package/dist/utils/projections.d.ts +6 -6
- package/dist/utils/projections.js +10 -10
- package/dist/utils/story.d.ts +12 -12
- package/dist/utils/story.js +2 -2
- package/package.json +3 -3
- package/public/index.html +43 -43
- package/public/manifest.json +25 -25
- package/public/robots.txt +3 -3
- package/src/index.tsx +9 -9
- package/src/lib/autocomplete/autocomplete.css +25 -25
- package/src/lib/autocomplete/autocomplete.stories.tsx +101 -101
- package/src/lib/autocomplete/autocomplete.tsx +681 -681
- package/src/lib/autocomplete/index.ts +1 -1
- package/src/lib/box/box.tsx +7 -7
- package/src/lib/box/index.ts +1 -1
- package/src/lib/cesium-map/context-menu.stories.tsx +444 -444
- package/src/lib/cesium-map/data-sources/custom.data-source.tsx +12 -12
- package/src/lib/cesium-map/data-sources/drawings.data-source.stories.tsx +161 -161
- package/src/lib/cesium-map/data-sources/drawings.data-source.tsx +204 -204
- package/src/lib/cesium-map/data-sources/index.ts +2 -2
- package/src/lib/cesium-map/entities/entity.description.tsx +19 -19
- package/src/lib/cesium-map/entities/entity.graphics.stories.tsx +48 -48
- package/src/lib/cesium-map/entities/entity.stories.tsx +146 -146
- package/src/lib/cesium-map/entities/entity.tsx +10 -10
- package/src/lib/cesium-map/entities/graphics/polygon.graphics.tsx +12 -12
- package/src/lib/cesium-map/entities/graphics/polyline.graphics.tsx +12 -12
- package/src/lib/cesium-map/entities/graphics/rectangle.graphics.tsx +12 -12
- package/src/lib/cesium-map/entities/index.ts +4 -4
- package/src/lib/cesium-map/index.ts +8 -8
- package/src/lib/cesium-map/layers/3d.tileset.stories.tsx +164 -164
- package/src/lib/cesium-map/layers/3d.tileset.tsx +51 -51
- package/src/lib/cesium-map/layers/3d.tileset.with.update.tsx +120 -120
- package/src/lib/cesium-map/layers/geojson.layer.stories.tsx +119 -119
- package/src/lib/cesium-map/layers/geojson.layer.tsx +12 -12
- package/src/lib/cesium-map/layers/imagery.layer.stories.tsx +39 -39
- package/src/lib/cesium-map/layers/imagery.layer.tsx +37 -37
- package/src/lib/cesium-map/layers/index.ts +7 -7
- package/src/lib/cesium-map/layers/layers.rect.stories.tsx +171 -171
- package/src/lib/cesium-map/layers/osm.layer.stories.tsx +40 -40
- package/src/lib/cesium-map/layers/osm.layer.tsx +22 -22
- package/src/lib/cesium-map/layers/wms.layer.stories.tsx +38 -38
- package/src/lib/cesium-map/layers/wms.layer.tsx +22 -22
- package/src/lib/cesium-map/layers/wmts.layer.stories.tsx +53 -53
- package/src/lib/cesium-map/layers/wmts.layer.tsx +22 -22
- package/src/lib/cesium-map/layers/xyz.layer.stories.tsx +37 -37
- package/src/lib/cesium-map/layers/xyz.layer.tsx +22 -22
- package/src/lib/cesium-map/layers-manager.stories.tsx +286 -286
- package/src/lib/cesium-map/layers-manager.ts +354 -354
- package/src/lib/cesium-map/map-legend/MapLegend.css +135 -135
- package/src/lib/cesium-map/map-legend/MapLegend.tsx +92 -92
- package/src/lib/cesium-map/map-legend/MapLegendList.tsx +47 -47
- package/src/lib/cesium-map/map-legend/MapLegendSidebar.tsx +55 -55
- package/src/lib/cesium-map/map-legend/MapLegendToggle.tsx +31 -31
- package/src/lib/cesium-map/map-legend/index.tsx +3 -3
- package/src/lib/cesium-map/map-legend/legends-sidebar.stories.tsx +201 -201
- package/src/lib/cesium-map/map.css +59 -59
- package/src/lib/cesium-map/map.stories.tsx +143 -143
- package/src/lib/cesium-map/map.tsx +446 -446
- package/src/lib/cesium-map/map.types.ts +11 -11
- package/src/lib/cesium-map/proxied.types.ts +54 -54
- package/src/lib/cesium-map/settings/base-maps.css +37 -37
- package/src/lib/cesium-map/settings/base-maps.tsx +94 -94
- package/src/lib/cesium-map/settings/scene-modes.css +19 -19
- package/src/lib/cesium-map/settings/scene-modes.tsx +100 -100
- package/src/lib/cesium-map/settings/settings.css +52 -52
- package/src/lib/cesium-map/settings/settings.stories.tsx +182 -182
- package/src/lib/cesium-map/settings/settings.tsx +141 -141
- package/src/lib/cesium-map/terrain-providers/custom/dummy-quantized-mesh-tile.ts +243 -243
- package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-decoder.ts +321 -321
- package/src/lib/cesium-map/terrain-providers/custom/quantized-mesh-terrain-provider.ts +237 -237
- package/src/lib/cesium-map/terrain-providers/terrain-provider-heights-tool.stories.tsx +170 -170
- package/src/lib/cesium-map/terrain-providers/terrain-provider.stories.tsx +187 -187
- package/src/lib/cesium-map/tools/cesium/primitives-conversions.cesium.ts +15 -15
- package/src/lib/cesium-map/tools/coordinates-tracker.tool.css +11 -11
- package/src/lib/cesium-map/tools/coordinates-tracker.tool.tsx +79 -79
- package/src/lib/cesium-map/tools/draw/drawHelper.css +101 -101
- package/src/lib/cesium-map/tools/draw/drawHelper.ts +2116 -2116
- package/src/lib/cesium-map/tools/geojson/geojson-to-primitive.ts +54 -54
- package/src/lib/cesium-map/tools/geojson/index.ts +2 -2
- package/src/lib/cesium-map/tools/geojson/point.geojson.ts +29 -29
- package/src/lib/cesium-map/tools/geojson/polygon.geojson.ts +24 -24
- package/src/lib/cesium-map/tools/geojson/rectangle.geojson.ts +21 -21
- package/src/lib/cesium-map/tools/inspector.tool.tsx +15 -15
- package/src/lib/cesium-map/tools/scale-tracker.tool.css +16 -16
- package/src/lib/cesium-map/tools/scale-tracker.tool.tsx +192 -192
- package/src/lib/cesium-map/tools/terranian-height.tool.tsx +171 -171
- package/src/lib/cssbaseline/cssbaseline.tsx +19 -19
- package/src/lib/cssbaseline/index.ts +4 -4
- package/src/lib/date-picker/date-picker.css +9 -9
- package/src/lib/date-picker/date-picker.stories.tsx +130 -130
- package/src/lib/date-picker/date-picker.tsx +90 -90
- package/src/lib/date-picker/index.ts +1 -1
- package/src/lib/date-range-picker/date-range-picker.css +9 -9
- package/src/lib/date-range-picker/date-range-picker.form-control.css +3 -3
- package/src/lib/date-range-picker/date-range-picker.form-control.spec.tsx +58 -58
- package/src/lib/date-range-picker/date-range-picker.form-control.tsx +150 -150
- package/src/lib/date-range-picker/date-range-picker.stories.tsx +207 -207
- package/src/lib/date-range-picker/date-range-picker.tsx +156 -156
- package/src/lib/date-range-picker/index.ts +2 -2
- package/src/lib/file-picker/file-picker.css +63 -63
- package/src/lib/file-picker/file-picker.stories.tsx +447 -447
- package/src/lib/file-picker/file-picker.tsx +180 -180
- package/src/lib/file-picker/fs-map.json +1556 -1556
- package/src/lib/file-picker/index.ts +2 -2
- package/src/lib/file-picker/localization.ts +164 -164
- package/src/lib/index.ts +13 -13
- package/src/lib/map-filter-container/container-map.css +5 -5
- package/src/lib/map-filter-container/container-map.tsx +48 -48
- package/src/lib/map-filter-container/index.ts +1 -1
- package/src/lib/map-filter-container/map-filter-container.tsx +91 -91
- package/src/lib/map-filter-container/polygon-selection-ui.spec.tsx +119 -119
- package/src/lib/map-filter-container/polygon-selection-ui.tsx +111 -111
- package/src/lib/map-filter-container/stories/Map.stories.tsx +76 -76
- package/src/lib/models/defaults.ts +32 -32
- package/src/lib/models/enums.ts +16 -16
- package/src/lib/models/index.ts +1 -1
- package/src/lib/ol-map/feature.tsx +23 -23
- package/src/lib/ol-map/index.ts +6 -6
- package/src/lib/ol-map/interactions/draw.tsx +56 -56
- package/src/lib/ol-map/interactions/index.ts +1 -1
- package/src/lib/ol-map/layers/index.ts +3 -3
- package/src/lib/ol-map/layers/tile-layer.tsx +36 -36
- package/src/lib/ol-map/layers/vector-layer.tsx +32 -32
- package/src/lib/ol-map/layers/vector-tile-layer.tsx +56 -56
- package/src/lib/ol-map/map.css +17 -17
- package/src/lib/ol-map/map.tsx +137 -137
- package/src/lib/ol-map/source/index.ts +6 -6
- package/src/lib/ol-map/source/mvt.tsx +46 -46
- package/src/lib/ol-map/source/osm.tsx +13 -13
- package/src/lib/ol-map/source/stories/mvt.stories.tsx +68 -68
- package/src/lib/ol-map/source/stories/vector-source.stories.tsx +78 -78
- package/src/lib/ol-map/source/stories/wms.stories.tsx +51 -51
- package/src/lib/ol-map/source/stories/wmts.stories.tsx +72 -72
- package/src/lib/ol-map/source/stories/xyz.stories.tsx +53 -53
- package/src/lib/ol-map/source/vector-source.tsx +30 -30
- package/src/lib/ol-map/source/wms.tsx +40 -40
- package/src/lib/ol-map/source/wmts.tsx +82 -82
- package/src/lib/ol-map/source/xyz.tsx +33 -33
- package/src/lib/ol-map/stories/map.stories.tsx +60 -60
- package/src/lib/ol-map/style.ts +24 -24
- package/src/lib/popover/index.ts +1 -1
- package/src/lib/popover/popover.tsx +7 -7
- package/src/lib/smart-table/__mock-data__/smartTableMocks.ts +22 -22
- package/src/lib/smart-table/index.ts +2 -2
- package/src/lib/smart-table/smart-table-head.spec.tsx +116 -116
- package/src/lib/smart-table/smart-table-head.tsx +47 -47
- package/src/lib/smart-table/smart-table-row.spec.tsx +109 -109
- package/src/lib/smart-table/smart-table-row.tsx +78 -78
- package/src/lib/smart-table/smart-table-types.ts +10 -10
- package/src/lib/smart-table/smart-table.spec.tsx +116 -116
- package/src/lib/smart-table/smart-table.tsx +115 -115
- package/src/lib/smart-table/stories/SmartTable.stories.tsx +114 -114
- package/src/lib/theme/index.ts +1 -1
- package/src/lib/theme/theme.ts +123 -123
- package/src/lib/utils/map.ts +19 -19
- package/src/lib/utils/projections.ts +7 -7
- package/src/lib/utils/story.ts +11 -11
- package/src/react-app-env.d.ts +1 -1
- package/src/setupTests.ts +14 -14
- package/tsbuildconfig.json +37 -37
- 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;
|