@igo2/geo 1.14.2 → 1.14.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/esm2020/igo2-geo.mjs +4 -4
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +300 -300
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +305 -305
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -246
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +79 -79
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +208 -208
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +78 -78
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +216 -216
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +94 -94
- package/esm2020/lib/catalog/catalog.module.mjs +52 -52
- package/esm2020/lib/catalog/index.mjs +4 -4
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +94 -94
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +15 -15
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.service.mjs +605 -605
- package/esm2020/lib/catalog/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/datasource.module.mjs +21 -21
- package/esm2020/lib/datasource/index.mjs +2 -2
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +430 -430
- package/esm2020/lib/datasource/shared/datasource.service.mjs +235 -235
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +144 -144
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +108 -108
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +2 -2
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +28 -28
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +42 -42
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +56 -56
- package/esm2020/lib/datasource/shared/datasources/index.mjs +35 -35
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +27 -27
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +11 -11
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +48 -48
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +53 -53
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +71 -71
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +151 -151
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -205
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +206 -206
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +15 -15
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +8 -8
- package/esm2020/lib/datasource/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +14 -14
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +80 -80
- package/esm2020/lib/datasource/shared/options/options.service.mjs +2 -2
- package/esm2020/lib/datasource/utils/esri-style-generator.mjs +356 -356
- package/esm2020/lib/datasource/utils/index.mjs +2 -2
- package/esm2020/lib/datasource/utils/tilegrid.mjs +19 -19
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +223 -223
- package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +289 -289
- package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +195 -195
- package/esm2020/lib/directions/directions-results/index.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +2 -2
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +15 -15
- package/esm2020/lib/directions/directions-sources/index.mjs +4 -4
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +98 -98
- package/esm2020/lib/directions/directions.component.mjs +310 -310
- package/esm2020/lib/directions/directions.module.mjs +101 -101
- package/esm2020/lib/directions/index.mjs +6 -6
- package/esm2020/lib/directions/shared/directions-source.service.mjs +16 -16
- package/esm2020/lib/directions/shared/directions.enum.mjs +27 -27
- package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.service.mjs +28 -28
- package/esm2020/lib/directions/shared/directions.utils.mjs +508 -508
- package/esm2020/lib/directions/shared/index.mjs +5 -5
- package/esm2020/lib/directions/shared/store.mjs +23 -23
- package/esm2020/lib/download/download-button/download-button.component.mjs +60 -60
- package/esm2020/lib/download/download-button/index.mjs +1 -1
- package/esm2020/lib/download/download.module.mjs +41 -41
- package/esm2020/lib/download/index.mjs +2 -2
- package/esm2020/lib/download/shared/download.interface.mjs +1 -1
- package/esm2020/lib/download/shared/download.service.mjs +64 -64
- package/esm2020/lib/download/shared/index.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +54 -54
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +590 -590
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +47 -47
- package/esm2020/lib/draw/draw/draw.component.mjs +1298 -1298
- package/esm2020/lib/draw/draw/draw.module.mjs +112 -112
- package/esm2020/lib/draw/drawingTool.module.mjs +19 -19
- package/esm2020/lib/draw/index.mjs +2 -2
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +26 -26
- package/esm2020/lib/draw/shared/draw-style.service.mjs +189 -189
- package/esm2020/lib/draw/shared/draw.enum.mjs +36 -36
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +121 -121
- package/esm2020/lib/draw/shared/index.mjs +5 -5
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +404 -404
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +53 -53
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +47 -47
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +111 -111
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +33 -33
- package/esm2020/lib/feature/feature.module.mjs +27 -27
- package/esm2020/lib/feature/index.mjs +3 -3
- package/esm2020/lib/feature/shared/feature.enums.mjs +8 -8
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.utils.mjs +346 -346
- package/esm2020/lib/feature/shared/index.mjs +6 -6
- package/esm2020/lib/feature/shared/store.mjs +123 -123
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +112 -112
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +93 -93
- package/esm2020/lib/feature/shared/strategies/index.mjs +5 -5
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +103 -103
- package/esm2020/lib/feature/shared/strategies/loading.mjs +132 -132
- package/esm2020/lib/feature/shared/strategies/selection.mjs +369 -369
- package/esm2020/lib/feature/shared/strategies.utils.mjs +36 -36
- package/esm2020/lib/filter/filter.module.mjs +288 -288
- package/esm2020/lib/filter/index.mjs +15 -15
- package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +139 -139
- package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +644 -644
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1301 -1301
- package/esm2020/lib/filter/ogc-filter-time/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +176 -176
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +897 -897
- package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +58 -58
- package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +306 -306
- package/esm2020/lib/filter/ogc-filterable-list/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +43 -43
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +54 -54
- package/esm2020/lib/filter/shared/index.mjs +11 -11
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +71 -71
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +29 -29
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.mjs +691 -691
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +45 -45
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +22 -22
- package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +268 -268
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +12 -12
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.service.mjs +106 -106
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1088 -1088
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +207 -207
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +143 -143
- package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +77 -77
- package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +733 -733
- package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +118 -118
- package/esm2020/lib/filter/time-filter-list/index.mjs +2 -2
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +38 -38
- package/esm2020/lib/geo.module.mjs +101 -101
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +520 -520
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +188 -188
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +63 -63
- package/esm2020/lib/geometry/geometry.module.mjs +26 -26
- package/esm2020/lib/geometry/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/draw.mjs +313 -313
- package/esm2020/lib/geometry/shared/controls/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/modify.mjs +520 -520
- package/esm2020/lib/geometry/shared/controls/slice.mjs +176 -176
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +25 -25
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +121 -121
- package/esm2020/lib/geometry/shared/index.mjs +4 -4
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +63 -63
- package/esm2020/lib/import-export/export-button/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +1219 -1219
- package/esm2020/lib/import-export/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export.module.mjs +95 -95
- package/esm2020/lib/import-export/index.mjs +4 -4
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +134 -134
- package/esm2020/lib/import-export/shared/export.errors.mjs +14 -14
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +194 -194
- package/esm2020/lib/import-export/shared/export.type.mjs +3 -3
- package/esm2020/lib/import-export/shared/export.utils.mjs +54 -54
- package/esm2020/lib/import-export/shared/import.errors.mjs +38 -38
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +214 -214
- package/esm2020/lib/import-export/shared/import.utils.mjs +234 -234
- package/esm2020/lib/import-export/shared/index.mjs +10 -10
- package/esm2020/lib/import-export/style-list/index.mjs +4 -4
- package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.module.mjs +22 -22
- package/esm2020/lib/import-export/style-list/style-list.provider.mjs +20 -20
- package/esm2020/lib/import-export/style-list/style-list.service.mjs +50 -50
- package/esm2020/lib/layer/index.mjs +10 -10
- package/esm2020/lib/layer/layer-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +299 -299
- package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +387 -387
- package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +83 -83
- package/esm2020/lib/layer/layer-legend-list/index.mjs +2 -2
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +47 -47
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +194 -194
- package/esm2020/lib/layer/layer-list/index.mjs +3 -3
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +58 -58
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1008 -1008
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +18 -18
- package/esm2020/lib/layer/layer-list-tool/index.mjs +4 -4
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +164 -164
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +6 -6
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +21 -21
- package/esm2020/lib/layer/layer.module.mjs +184 -184
- package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2020/lib/layer/shared/index.mjs +6 -6
- package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
- package/esm2020/lib/layer/shared/layer.service.mjs +185 -185
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +67 -67
- package/esm2020/lib/layer/shared/layers/index.mjs +12 -12
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +17 -17
- package/esm2020/lib/layer/shared/layers/layer.mjs +163 -163
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +46 -46
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +377 -377
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +103 -103
- package/esm2020/lib/layer/shared/style.service.mjs +355 -355
- package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
- package/esm2020/lib/layer/style-modal/index.mjs +1 -1
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +287 -287
- package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +58 -58
- package/esm2020/lib/layer/utils/image-watcher.mjs +61 -61
- package/esm2020/lib/layer/utils/index.mjs +5 -5
- package/esm2020/lib/layer/utils/layer.utils.mjs +9 -9
- package/esm2020/lib/layer/utils/outputLegend.mjs +26 -26
- package/esm2020/lib/layer/utils/tile-watcher.mjs +49 -49
- package/esm2020/lib/layer/utils/vector-watcher.mjs +47 -47
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +19 -19
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +96 -96
- package/esm2020/lib/map/baselayers-switcher/index.mjs +2 -2
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +141 -142
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +78 -78
- package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
- package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +62 -62
- package/esm2020/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2020/lib/map/index.mjs +13 -13
- package/esm2020/lib/map/info-section/index.mjs +1 -1
- package/esm2020/lib/map/info-section/info-section.component.mjs +29 -29
- package/esm2020/lib/map/map-browser/index.mjs +1 -1
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +65 -65
- package/esm2020/lib/map/map-center/index.mjs +1 -1
- package/esm2020/lib/map/map-center/map-center.component.mjs +49 -49
- package/esm2020/lib/map/map.module.mjs +126 -126
- package/esm2020/lib/map/menu-button/index.mjs +1 -1
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +61 -61
- package/esm2020/lib/map/offline-button/index.mjs +1 -1
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +75 -75
- package/esm2020/lib/map/rotation-button/index.mjs +1 -1
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +69 -69
- package/esm2020/lib/map/shared/controllers/controller.mjs +41 -41
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +307 -307
- package/esm2020/lib/map/shared/controllers/index.mjs +3 -3
- package/esm2020/lib/map/shared/controllers/view.mjs +350 -350
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +502 -502
- package/esm2020/lib/map/shared/index.mjs +13 -13
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +237 -237
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +106 -106
- package/esm2020/lib/map/shared/map.enums.mjs +5 -5
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/map/shared/map.mjs +406 -406
- package/esm2020/lib/map/shared/map.service.mjs +28 -28
- package/esm2020/lib/map/shared/map.utils.mjs +462 -462
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +162 -162
- package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2020/lib/map/shared/projection.service.mjs +64 -64
- package/esm2020/lib/map/shared/projection.utils.mjs +63 -63
- package/esm2020/lib/map/swipe-control/index.mjs +1 -1
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +192 -192
- package/esm2020/lib/map/utils/layer-watcher.mjs +78 -78
- package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +113 -113
- package/esm2020/lib/map/zoom-button/index.mjs +1 -1
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +39 -39
- package/esm2020/lib/measure/index.mjs +3 -3
- package/esm2020/lib/measure/measure.module.mjs +19 -19
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +36 -36
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +179 -179
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +139 -139
- package/esm2020/lib/measure/measurer/measurer.component.mjs +1041 -1041
- package/esm2020/lib/measure/measurer/measurer.module.mjs +93 -93
- package/esm2020/lib/measure/shared/index.mjs +3 -3
- package/esm2020/lib/measure/shared/measure.enum.mjs +36 -36
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.utils.mjs +488 -488
- package/esm2020/lib/metadata/index.mjs +2 -2
- package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +133 -133
- package/esm2020/lib/metadata/metadata.module.mjs +54 -54
- package/esm2020/lib/metadata/shared/index.mjs +2 -2
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +18 -18
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +104 -104
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +5 -5
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +166 -166
- package/esm2020/lib/offline/geoDB/index.mjs +4 -4
- package/esm2020/lib/offline/index.mjs +2 -2
- package/esm2020/lib/offline/shared/geo-network.service.mjs +65 -65
- package/esm2020/lib/offline/shared/index.mjs +1 -1
- package/esm2020/lib/overlay/index.mjs +1 -1
- package/esm2020/lib/overlay/overlay.module.mjs +22 -22
- package/esm2020/lib/overlay/shared/index.mjs +6 -6
- package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +68 -68
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +32 -32
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +7 -7
- package/esm2020/lib/overlay/shared/overlay.mjs +129 -129
- package/esm2020/lib/overlay/shared/overlay.service.mjs +26 -26
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +102 -102
- package/esm2020/lib/print/index.mjs +3 -3
- package/esm2020/lib/print/print/print.component.mjs +125 -125
- package/esm2020/lib/print/print-form/index.mjs +1 -1
- package/esm2020/lib/print/print-form/print-form.component.mjs +427 -427
- package/esm2020/lib/print/print.module.mjs +64 -64
- package/esm2020/lib/print/shared/geopdf.mjs +57 -57
- package/esm2020/lib/print/shared/index.mjs +4 -4
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +933 -933
- package/esm2020/lib/print/shared/print.type.mjs +29 -29
- package/esm2020/lib/query/index.mjs +1 -1
- package/esm2020/lib/query/query.module.mjs +28 -28
- package/esm2020/lib/query/shared/index.mjs +6 -6
- package/esm2020/lib/query/shared/query-search-source.mjs +34 -34
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +21 -21
- package/esm2020/lib/query/shared/query.directive.mjs +260 -260
- package/esm2020/lib/query/shared/query.enums.mjs +29 -29
- package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +732 -732
- package/esm2020/lib/query/shared/query.utils.mjs +36 -36
- package/esm2020/lib/search/index.mjs +11 -11
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +511 -511
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +74 -74
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +34 -34
- package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +117 -117
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +370 -370
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +123 -123
- package/esm2020/lib/search/search-results/search-results.component.mjs +339 -339
- package/esm2020/lib/search/search-results/search-results.module.mjs +103 -103
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +122 -122
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +55 -55
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +441 -441
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +59 -59
- package/esm2020/lib/search/search.module.mjs +66 -66
- package/esm2020/lib/search/shared/index.mjs +8 -8
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +321 -321
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +19 -19
- package/esm2020/lib/search/shared/search-source.service.mjs +46 -46
- package/esm2020/lib/search/shared/search.enums.mjs +3 -3
- package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/search.service.mjs +120 -120
- package/esm2020/lib/search/shared/search.utils.mjs +90 -90
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.mjs +152 -152
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +766 -766
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +65 -65
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.mjs +319 -319
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/index.mjs +17 -17
- package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/nominatim.mjs +251 -251
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +22 -22
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.mjs +178 -178
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +424 -424
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +40 -40
- package/esm2020/lib/toast/index.mjs +1 -1
- package/esm2020/lib/toast/toast.component.mjs +112 -112
- package/esm2020/lib/toast/toast.module.mjs +44 -44
- package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
- package/esm2020/lib/utils/commonVectorStyle.mjs +74 -74
- package/esm2020/lib/utils/googleLinks.mjs +12 -12
- package/esm2020/lib/utils/id-generator.mjs +109 -109
- package/esm2020/lib/utils/index.mjs +5 -5
- package/esm2020/lib/utils/osmLinks.mjs +9 -9
- package/esm2020/lib/wkt/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/wkt.service.mjs +224 -224
- package/esm2020/lib/wkt/wkt.module.mjs +21 -21
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +47 -47
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +35 -35
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +2 -2
- package/esm2020/lib/workspace/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +279 -279
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +656 -656
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +259 -259
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +23 -23
- package/esm2020/lib/workspace/widgets/index.mjs +3 -3
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +46 -46
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +35 -35
- package/esm2020/lib/workspace/widgets/widgets.mjs +14 -14
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +132 -132
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +112 -112
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace.module.mjs +61 -61
- package/esm2020/public_api.mjs +54 -54
- package/fesm2015/igo2-geo.mjs +44986 -44986
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +43029 -43030
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +126 -126
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -80
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +105 -105
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +22 -22
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +45 -45
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +25 -25
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +65 -65
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +26 -26
- package/lib/catalog/catalog.module.d.ts +14 -14
- package/lib/catalog/index.d.ts +4 -4
- package/lib/catalog/shared/catalog.abstract.d.ts +50 -50
- package/lib/catalog/shared/catalog.enum.d.ts +14 -14
- package/lib/catalog/shared/catalog.interface.d.ts +66 -66
- package/lib/catalog/shared/catalog.service.d.ts +36 -36
- package/lib/catalog/shared/index.d.ts +4 -4
- package/lib/datasource/datasource.module.d.ts +8 -8
- package/lib/datasource/index.d.ts +2 -2
- package/lib/datasource/shared/capabilities.service.d.ts +37 -37
- package/lib/datasource/shared/datasource.service.d.ts +37 -37
- package/lib/datasource/shared/datasources/any-datasource.d.ts +16 -16
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +14 -14
- package/lib/datasource/shared/datasources/arcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/datasources/data.service.d.ts +3 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +100 -100
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +12 -12
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +18 -18
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/index.d.ts +35 -35
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/osm-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/tiledebug-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +9 -9
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/websocket-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs.service.d.ts +17 -17
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +31 -31
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +32 -32
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +41 -41
- package/lib/datasource/shared/datasources/wmts-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/xyz-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/index.d.ts +4 -4
- package/lib/datasource/shared/options/index.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.interface.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.providers.d.ts +10 -10
- package/lib/datasource/shared/options/options-api.service.d.ts +16 -16
- package/lib/datasource/shared/options/options.service.d.ts +6 -6
- package/lib/datasource/utils/esri-style-generator.d.ts +21 -21
- package/lib/datasource/utils/index.d.ts +2 -2
- package/lib/datasource/utils/tilegrid.d.ts +2 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +30 -30
- package/lib/directions/directions-buttons/index.d.ts +1 -1
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -45
- package/lib/directions/directions-inputs/index.d.ts +1 -1
- package/lib/directions/directions-results/directions-results.component.d.ts +30 -30
- package/lib/directions/directions-results/index.d.ts +1 -1
- package/lib/directions/directions-sources/directions-source.d.ts +7 -7
- package/lib/directions/directions-sources/directions-source.interface.d.ts +11 -11
- package/lib/directions/directions-sources/directions-source.provider.d.ts +11 -11
- package/lib/directions/directions-sources/index.d.ts +4 -4
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +23 -23
- package/lib/directions/directions.component.d.ts +56 -56
- package/lib/directions/directions.module.d.ts +26 -26
- package/lib/directions/index.d.ts +6 -6
- package/lib/directions/shared/directions-source.service.d.ts +11 -11
- package/lib/directions/shared/directions.enum.d.ts +22 -22
- package/lib/directions/shared/directions.interface.d.ts +126 -126
- package/lib/directions/shared/directions.service.d.ts +13 -13
- package/lib/directions/shared/directions.utils.d.ts +42 -42
- package/lib/directions/shared/index.d.ts +5 -5
- package/lib/directions/shared/store.d.ts +18 -18
- package/lib/download/download-button/download-button.component.d.ts +18 -18
- package/lib/download/download-button/index.d.ts +1 -1
- package/lib/download/download.module.d.ts +14 -14
- package/lib/download/index.d.ts +2 -2
- package/lib/download/shared/download.interface.d.ts +10 -10
- package/lib/download/shared/download.service.d.ts +11 -11
- package/lib/download/shared/index.d.ts +2 -2
- package/lib/draw/draw/draw-layer-popup.component.d.ts +14 -14
- package/lib/draw/draw/draw-popup.component.d.ts +63 -63
- package/lib/draw/draw/draw-shorcuts.component.d.ts +5 -5
- package/lib/draw/draw/draw.component.d.ts +239 -239
- package/lib/draw/draw/draw.module.d.ts +34 -34
- package/lib/draw/drawingTool.module.d.ts +7 -7
- package/lib/draw/index.d.ts +2 -2
- package/lib/draw/shared/draw-icon.service.d.ts +12 -12
- package/lib/draw/shared/draw-style.service.d.ts +36 -36
- package/lib/draw/shared/draw.enum.d.ts +32 -32
- package/lib/draw/shared/draw.interface.d.ts +40 -40
- package/lib/draw/shared/draw.utils.d.ts +35 -35
- package/lib/draw/shared/index.d.ts +5 -5
- package/lib/feature/feature-details/feature-details.component.d.ts +60 -60
- package/lib/feature/feature-details/feature-details.directive.d.ts +19 -19
- package/lib/feature/feature-details/feature-details.module.d.ts +15 -15
- package/lib/feature/feature-form/feature-form.component.d.ts +50 -50
- package/lib/feature/feature-form/feature-form.module.d.ts +12 -12
- package/lib/feature/feature.module.d.ts +9 -9
- package/lib/feature/index.d.ts +3 -3
- package/lib/feature/shared/feature.enums.d.ts +7 -7
- package/lib/feature/shared/feature.interfaces.d.ts +74 -74
- package/lib/feature/shared/feature.utils.d.ts +104 -104
- package/lib/feature/shared/index.d.ts +6 -6
- package/lib/feature/shared/store.d.ts +71 -71
- package/lib/feature/shared/strategies/in-map-extent.d.ts +52 -52
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +52 -52
- package/lib/feature/shared/strategies/index.d.ts +5 -5
- package/lib/feature/shared/strategies/loading-layer.d.ts +59 -59
- package/lib/feature/shared/strategies/loading.d.ts +75 -75
- package/lib/feature/shared/strategies/selection.d.ts +176 -176
- package/lib/feature/shared/strategies.utils.d.ts +17 -17
- package/lib/filter/filter.module.d.ts +53 -53
- package/lib/filter/index.d.ts +15 -15
- package/lib/filter/ogc-filter-button/index.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +20 -20
- package/lib/filter/ogc-filter-form/index.d.ts +1 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +65 -65
- package/lib/filter/ogc-filter-selection/index.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +93 -93
- package/lib/filter/ogc-filter-time/index.d.ts +2 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +39 -39
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +86 -86
- package/lib/filter/ogc-filterable-form/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +15 -15
- package/lib/filter/ogc-filterable-item/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +41 -41
- package/lib/filter/ogc-filterable-list/index.d.ts +2 -2
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +14 -14
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +10 -10
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +10 -10
- package/lib/filter/shared/index.d.ts +11 -11
- package/lib/filter/shared/ogc-filter-time.service.d.ts +19 -19
- package/lib/filter/shared/ogc-filter.d.ts +29 -29
- package/lib/filter/shared/ogc-filter.enum.d.ts +27 -27
- package/lib/filter/shared/ogc-filter.interface.d.ts +200 -200
- package/lib/filter/shared/ogc-filter.service.d.ts +11 -11
- package/lib/filter/shared/spatial-filter.enum.d.ts +19 -19
- package/lib/filter/shared/spatial-filter.interface.d.ts +10 -10
- package/lib/filter/shared/spatial-filter.service.d.ts +37 -37
- package/lib/filter/shared/time-filter.enum.d.ts +10 -10
- package/lib/filter/shared/time-filter.interface.d.ts +29 -29
- package/lib/filter/shared/time-filter.service.d.ts +11 -11
- package/lib/filter/spatial-filter/spatial-filter-item/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +166 -166
- package/lib/filter/spatial-filter/spatial-filter-list/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +58 -58
- package/lib/filter/spatial-filter/spatial-filter-type/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +45 -45
- package/lib/filter/time-filter-button/index.d.ts +1 -1
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +20 -20
- package/lib/filter/time-filter-form/index.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +77 -77
- package/lib/filter/time-filter-item/index.d.ts +1 -1
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +28 -28
- package/lib/filter/time-filter-list/index.d.ts +2 -2
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +14 -14
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +12 -12
- package/lib/geo.module.d.ts +28 -28
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +206 -206
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +88 -88
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +19 -19
- package/lib/geometry/geometry.module.d.ts +8 -8
- package/lib/geometry/index.d.ts +3 -3
- package/lib/geometry/shared/controls/draw.d.ts +150 -150
- package/lib/geometry/shared/controls/index.d.ts +3 -3
- package/lib/geometry/shared/controls/modify.d.ts +228 -228
- package/lib/geometry/shared/controls/slice.d.ts +99 -99
- package/lib/geometry/shared/geometry.errors.d.ts +11 -11
- package/lib/geometry/shared/geometry.interfaces.d.ts +13 -13
- package/lib/geometry/shared/geometry.utils.d.ts +45 -45
- package/lib/geometry/shared/index.d.ts +4 -4
- package/lib/import-export/export-button/export-button.component.d.ts +16 -16
- package/lib/import-export/export-button/index.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +104 -104
- package/lib/import-export/import-export/index.d.ts +1 -1
- package/lib/import-export/import-export.module.d.ts +26 -26
- package/lib/import-export/index.d.ts +4 -4
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +36 -36
- package/lib/import-export/shared/export.errors.d.ts +8 -8
- package/lib/import-export/shared/export.interface.d.ts +11 -11
- package/lib/import-export/shared/export.service.d.ts +30 -30
- package/lib/import-export/shared/export.type.d.ts +16 -16
- package/lib/import-export/shared/export.utils.d.ts +19 -19
- package/lib/import-export/shared/import.errors.d.ts +20 -20
- package/lib/import-export/shared/import.interface.d.ts +8 -8
- package/lib/import-export/shared/import.service.d.ts +31 -31
- package/lib/import-export/shared/import.utils.d.ts +18 -18
- package/lib/import-export/shared/index.d.ts +10 -10
- package/lib/import-export/style-list/index.d.ts +4 -4
- package/lib/import-export/style-list/style-list.interface.d.ts +6 -6
- package/lib/import-export/style-list/style-list.module.d.ts +8 -8
- package/lib/import-export/style-list/style-list.provider.d.ts +15 -15
- package/lib/import-export/style-list/style-list.service.d.ts +18 -18
- package/lib/layer/index.d.ts +10 -10
- package/lib/layer/layer-item/index.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +62 -62
- package/lib/layer/layer-legend/index.d.ts +1 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +90 -90
- package/lib/layer/layer-legend-item/index.d.ts +1 -1
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +22 -22
- package/lib/layer/layer-legend-list/index.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +16 -16
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +31 -31
- package/lib/layer/layer-list/index.d.ts +3 -3
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +19 -19
- package/lib/layer/layer-list/layer-list.component.d.ts +127 -127
- package/lib/layer/layer-list/layer-list.enum.d.ts +15 -15
- package/lib/layer/layer-list-tool/index.d.ts +4 -4
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +32 -32
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +5 -5
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +8 -8
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +14 -14
- package/lib/layer/layer.module.d.ts +36 -36
- package/lib/layer/shared/clusterParam.d.ts +13 -13
- package/lib/layer/shared/index.d.ts +6 -6
- package/lib/layer/shared/layer.enums.d.ts +1 -1
- package/lib/layer/shared/layer.service.d.ts +30 -30
- package/lib/layer/shared/layers/any-layer.d.ts +6 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +6 -6
- package/lib/layer/shared/layers/image-layer.d.ts +22 -22
- package/lib/layer/shared/layers/image-layer.interface.d.ts +19 -19
- package/lib/layer/shared/layers/index.d.ts +12 -12
- package/lib/layer/shared/layers/layer.d.ts +62 -62
- package/lib/layer/shared/layers/layer.interface.d.ts +109 -107
- package/lib/layer/shared/layers/tile-layer.d.ts +31 -31
- package/lib/layer/shared/layers/tile-layer.interface.d.ts +20 -20
- package/lib/layer/shared/layers/vector-layer.d.ts +78 -78
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +41 -41
- package/lib/layer/shared/layers/vectortile-layer.d.ts +28 -28
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +18 -18
- package/lib/layer/shared/style.service.d.ts +57 -57
- package/lib/layer/shared/vector-style.interface.d.ts +38 -38
- package/lib/layer/style-modal/index.d.ts +1 -1
- package/lib/layer/style-modal/style-modal.component.d.ts +42 -42
- package/lib/layer/track-feature-button/index.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +15 -15
- package/lib/layer/utils/image-watcher.d.ts +17 -17
- package/lib/layer/utils/index.d.ts +5 -5
- package/lib/layer/utils/layer.utils.d.ts +2 -2
- package/lib/layer/utils/outputLegend.d.ts +7 -7
- package/lib/layer/utils/tile-watcher.d.ts +14 -14
- package/lib/layer/utils/vector-watcher.d.ts +13 -13
- package/lib/map/baselayers-switcher/baselayers-switcher.animation.d.ts +2 -2
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +21 -21
- package/lib/map/baselayers-switcher/index.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +29 -29
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +22 -22
- package/lib/map/geolocate-button/index.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -20
- package/lib/map/home-extent-button/index.d.ts +1 -1
- package/lib/map/index.d.ts +13 -13
- package/lib/map/info-section/index.d.ts +1 -1
- package/lib/map/info-section/info-section.component.d.ts +7 -7
- package/lib/map/map-browser/index.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +25 -25
- package/lib/map/map-center/index.d.ts +1 -1
- package/lib/map/map-center/map-center.component.d.ts +31 -31
- package/lib/map/map.module.d.ts +28 -28
- package/lib/map/menu-button/index.d.ts +1 -1
- package/lib/map/menu-button/menu-button.component.d.ts +17 -17
- package/lib/map/offline-button/index.d.ts +1 -1
- package/lib/map/offline-button/offline-button.component.d.ts +23 -23
- package/lib/map/rotation-button/index.d.ts +1 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +17 -17
- package/lib/map/shared/controllers/controller.d.ts +29 -29
- package/lib/map/shared/controllers/geolocation.d.ts +112 -112
- package/lib/map/shared/controllers/index.d.ts +3 -3
- package/lib/map/shared/controllers/view.d.ts +200 -200
- package/lib/map/shared/hover-feature.directive.d.ts +132 -132
- package/lib/map/shared/index.d.ts +13 -13
- package/lib/map/shared/linkedLayers.utils.d.ts +17 -17
- package/lib/map/shared/map-pointer-position.directive.d.ts +71 -71
- package/lib/map/shared/map.d.ts +135 -135
- package/lib/map/shared/map.enums.d.ts +4 -4
- package/lib/map/shared/map.interface.d.ts +57 -57
- package/lib/map/shared/map.service.d.ts +19 -19
- package/lib/map/shared/map.utils.d.ts +90 -90
- package/lib/map/shared/mapOffline.directive.d.ts +21 -21
- package/lib/map/shared/projection.interfaces.d.ts +29 -29
- package/lib/map/shared/projection.service.d.ts +19 -19
- package/lib/map/shared/projection.utils.d.ts +19 -19
- package/lib/map/swipe-control/index.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +97 -97
- package/lib/map/utils/layer-watcher.d.ts +20 -20
- package/lib/map/wake-lock-button/index.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -30
- package/lib/map/zoom-button/index.d.ts +1 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +12 -12
- package/lib/measure/index.d.ts +3 -3
- package/lib/measure/measure.module.d.ts +7 -7
- package/lib/measure/measurer/measure-format.pipe.d.ts +15 -15
- package/lib/measure/measurer/measurer-dialog.component.d.ts +14 -14
- package/lib/measure/measurer/measurer-item.component.d.ts +66 -66
- package/lib/measure/measurer/measurer.component.d.ts +405 -405
- package/lib/measure/measurer/measurer.module.d.ts +25 -25
- package/lib/measure/shared/index.d.ts +3 -3
- package/lib/measure/shared/measure.enum.d.ts +33 -33
- package/lib/measure/shared/measure.interfaces.d.ts +21 -21
- package/lib/measure/shared/measure.utils.d.ts +180 -180
- package/lib/metadata/index.d.ts +2 -2
- package/lib/metadata/metadata-button/index.d.ts +1 -1
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +26 -26
- package/lib/metadata/metadata.module.d.ts +15 -15
- package/lib/metadata/shared/index.d.ts +2 -2
- package/lib/metadata/shared/metadata.interface.d.ts +13 -13
- package/lib/metadata/shared/metadata.service.d.ts +8 -8
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +14 -14
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -4
- package/lib/offline/geoDB/geoDB.interface.d.ts +19 -19
- package/lib/offline/geoDB/geoDB.service.d.ts +37 -37
- package/lib/offline/geoDB/index.d.ts +4 -4
- package/lib/offline/index.d.ts +2 -2
- package/lib/offline/shared/geo-network.service.d.ts +28 -28
- package/lib/offline/shared/index.d.ts +1 -1
- package/lib/overlay/index.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +9 -9
- package/lib/overlay/shared/index.d.ts +6 -6
- package/lib/overlay/shared/overlay-marker-style.utils.d.ts +11 -11
- package/lib/overlay/shared/overlay.d.ts +81 -81
- package/lib/overlay/shared/overlay.directive.d.ts +18 -18
- package/lib/overlay/shared/overlay.enum.d.ts +6 -6
- package/lib/overlay/shared/overlay.service.d.ts +14 -14
- package/lib/overlay/shared/overlay.utils.d.ts +17 -17
- package/lib/print/index.d.ts +3 -3
- package/lib/print/print/print.component.d.ts +35 -35
- package/lib/print/print-form/index.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +97 -97
- package/lib/print/print.module.d.ts +19 -19
- package/lib/print/shared/geopdf.d.ts +1 -1
- package/lib/print/shared/index.d.ts +4 -4
- package/lib/print/shared/print.interface.d.ts +22 -22
- package/lib/print/shared/print.service.d.ts +168 -168
- package/lib/print/shared/print.type.d.ts +45 -45
- package/lib/query/index.d.ts +1 -1
- package/lib/query/query.module.d.ts +11 -11
- package/lib/query/shared/index.d.ts +6 -6
- package/lib/query/shared/query-search-source.d.ts +17 -17
- package/lib/query/shared/query-search-source.providers.d.ts +17 -17
- package/lib/query/shared/query.directive.d.ts +105 -105
- package/lib/query/shared/query.enums.d.ts +26 -26
- package/lib/query/shared/query.interfaces.d.ts +35 -35
- package/lib/query/shared/query.service.d.ts +56 -56
- package/lib/query/shared/query.utils.d.ts +27 -27
- package/lib/search/index.d.ts +11 -11
- package/lib/search/search-bar/search-bar.component.d.ts +230 -230
- package/lib/search/search-bar/search-bar.module.d.ts +23 -23
- package/lib/search/search-bar/search-url-param.directive.d.ts +13 -13
- package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -32
- package/lib/search/search-results/search-results-add-button.component.d.ts +76 -76
- package/lib/search/search-results/search-results-item.component.d.ts +47 -47
- package/lib/search/search-results/search-results.component.d.ts +161 -161
- package/lib/search/search-results/search-results.module.d.ts +28 -28
- package/lib/search/search-selector/search-selector.component.d.ts +58 -58
- package/lib/search/search-selector/search-selector.module.d.ts +19 -19
- package/lib/search/search-settings/search-settings.component.d.ts +102 -102
- package/lib/search/search-settings/search-settings.module.d.ts +20 -20
- package/lib/search/search.module.d.ts +14 -14
- package/lib/search/shared/index.d.ts +8 -8
- package/lib/search/shared/search-pointer-summary.directive.d.ts +133 -133
- package/lib/search/shared/search-source-service.providers.d.ts +15 -15
- package/lib/search/shared/search-source.service.d.ts +32 -32
- package/lib/search/shared/search.enums.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +29 -29
- package/lib/search/shared/search.service.d.ts +53 -53
- package/lib/search/shared/search.utils.d.ts +39 -39
- package/lib/search/shared/sources/coordinates.d.ts +40 -40
- package/lib/search/shared/sources/coordinates.interfaces.d.ts +12 -12
- package/lib/search/shared/sources/coordinates.providers.d.ts +31 -31
- package/lib/search/shared/sources/icherche.d.ts +96 -96
- package/lib/search/shared/sources/icherche.interfaces.d.ts +30 -30
- package/lib/search/shared/sources/icherche.providers.d.ts +46 -46
- package/lib/search/shared/sources/ilayer.d.ts +55 -55
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/ilayer.providers.d.ts +31 -31
- package/lib/search/shared/sources/index.d.ts +17 -17
- package/lib/search/shared/sources/nominatim.d.ts +45 -45
- package/lib/search/shared/sources/nominatim.interfaces.d.ts +10 -10
- package/lib/search/shared/sources/nominatim.providers.d.ts +18 -18
- package/lib/search/shared/sources/source.d.ts +108 -108
- package/lib/search/shared/sources/source.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/storedqueries.d.ts +73 -73
- package/lib/search/shared/sources/storedqueries.interfaces.d.ts +42 -42
- package/lib/search/shared/sources/storedqueries.providers.d.ts +32 -32
- package/lib/toast/index.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +33 -33
- package/lib/toast/toast.module.d.ts +14 -14
- package/lib/utils/commonVectorStyle.d.ts +14 -14
- package/lib/utils/commonVectorStyle.interface.d.ts +16 -16
- package/lib/utils/googleLinks.d.ts +5 -5
- package/lib/utils/id-generator.d.ts +54 -54
- package/lib/utils/index.d.ts +5 -5
- package/lib/utils/osmLinks.d.ts +4 -4
- package/lib/wkt/index.d.ts +1 -1
- package/lib/wkt/shared/index.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +19 -19
- package/lib/wkt/wkt.module.d.ts +8 -8
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -23
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -14
- package/lib/workspace/confirmation-popup/index.d.ts +2 -2
- package/lib/workspace/index.d.ts +7 -7
- package/lib/workspace/shared/edition-workspace.d.ts +82 -82
- package/lib/workspace/shared/edition-workspace.service.d.ts +52 -52
- package/lib/workspace/shared/feature-workspace.d.ts +18 -18
- package/lib/workspace/shared/feature-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/index.d.ts +7 -7
- package/lib/workspace/shared/wfs-workspace.d.ts +18 -18
- package/lib/workspace/shared/wfs-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/wms-workspace.service.d.ts +22 -22
- package/lib/workspace/shared/workspace.utils.d.ts +10 -10
- package/lib/workspace/widgets/index.d.ts +3 -3
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +29 -29
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +14 -14
- package/lib/workspace/widgets/widgets.d.ts +9 -9
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +32 -32
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +11 -11
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +26 -26
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +11 -11
- package/lib/workspace/workspace.module.d.ts +14 -14
- package/package.json +4 -4
- package/public_api.d.ts +51 -51
|
@@ -1,356 +1,356 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as olstyle from 'ol/style';
|
|
3
|
-
import OlFeature from 'ol/Feature';
|
|
4
|
-
import { createOverlayMarkerStyle } from '../../overlay/shared/overlay-marker-style.utils';
|
|
5
|
-
import { getResolutionFromScale } from '../../map/shared/map.utils';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class StyleService {
|
|
8
|
-
/**
|
|
9
|
-
* Create a style based on a object as
|
|
10
|
-
* style: {
|
|
11
|
-
* "stroke": {
|
|
12
|
-
* "color": "blue",
|
|
13
|
-
* "lineDash": [10, 5]
|
|
14
|
-
* },
|
|
15
|
-
* "text": {
|
|
16
|
-
* "minScaleDenom": 50000,
|
|
17
|
-
* "maxScaleDenom": 200000,
|
|
18
|
-
* "minResolution": 100,
|
|
19
|
-
* "maxResolution": 400,
|
|
20
|
-
* "attribute": "THE COLUMN NAME TO RETRIEVE THE LABEL VALUE",
|
|
21
|
-
* "text": "MY HARCODED TEXT",
|
|
22
|
-
* "stroke": {
|
|
23
|
-
* "color": "blue",
|
|
24
|
-
* "width": 0.75
|
|
25
|
-
* },
|
|
26
|
-
* "fill": {
|
|
27
|
-
* "color": "black"
|
|
28
|
-
* },
|
|
29
|
-
* "font": "20px sans-serif",
|
|
30
|
-
* "overflow": true,
|
|
31
|
-
* "offsetX": 10,
|
|
32
|
-
* "offsetY": 20,
|
|
33
|
-
* "padding": [2.5, 2.5, 2.5, 2.5]
|
|
34
|
-
* },
|
|
35
|
-
* "width": 5
|
|
36
|
-
* }
|
|
37
|
-
*
|
|
38
|
-
* @param options
|
|
39
|
-
* @param feature feature to apply style on
|
|
40
|
-
* @param resolution current map resolution, to control label resolution range
|
|
41
|
-
* @returns
|
|
42
|
-
*/
|
|
43
|
-
createStyle(options, feature, resolution) {
|
|
44
|
-
if (!options) {
|
|
45
|
-
return createOverlayMarkerStyle();
|
|
46
|
-
}
|
|
47
|
-
if (typeof options === 'function' || options instanceof olstyle.Style) {
|
|
48
|
-
return options;
|
|
49
|
-
}
|
|
50
|
-
const parsedStyle = this.parseStyle('style', options);
|
|
51
|
-
if (parsedStyle.getText()) {
|
|
52
|
-
let labelMinResolution = 0;
|
|
53
|
-
let labelMaxResolution = Infinity;
|
|
54
|
-
if (options.text) {
|
|
55
|
-
const labelMinResolutionFromScale = options.text?.minScaleDenom ? getResolutionFromScale(Number(options.text.minScaleDenom)) : undefined;
|
|
56
|
-
const labelMaxResolutionFromScale = options.text?.maxScaleDenom ? getResolutionFromScale(Number(options.text.maxScaleDenom)) : undefined;
|
|
57
|
-
const minResolution = options.text?.minResolution ? options.text.minResolution : 0;
|
|
58
|
-
const maxResolution = options.text?.maxResolution ? options.text.maxResolution : Infinity;
|
|
59
|
-
labelMinResolution = labelMinResolutionFromScale || minResolution;
|
|
60
|
-
labelMaxResolution = labelMaxResolutionFromScale || maxResolution;
|
|
61
|
-
}
|
|
62
|
-
if (feature && resolution >= labelMinResolution && resolution <= labelMaxResolution) {
|
|
63
|
-
if (feature && options.text.attribute) {
|
|
64
|
-
parsedStyle.getText().setText(this.getLabel(feature, options.text.attribute));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
parsedStyle.setText();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return parsedStyle;
|
|
72
|
-
}
|
|
73
|
-
parseStyle(key, value) {
|
|
74
|
-
const styleOptions = {};
|
|
75
|
-
const olCls = this.getOlCls(key);
|
|
76
|
-
if (olCls && value instanceof Object) {
|
|
77
|
-
Object.keys(value).forEach(_key => {
|
|
78
|
-
const olKey = this.getOlKey(_key);
|
|
79
|
-
styleOptions[olKey] = this.parseStyle(_key, value[_key]);
|
|
80
|
-
});
|
|
81
|
-
return new olCls(styleOptions);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
return value;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
getOlKey(key) {
|
|
88
|
-
let olKey;
|
|
89
|
-
switch (key.toLowerCase()) {
|
|
90
|
-
case 'circle':
|
|
91
|
-
case 'regularshape':
|
|
92
|
-
case 'icon':
|
|
93
|
-
olKey = 'image';
|
|
94
|
-
break;
|
|
95
|
-
default:
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
return olKey || key;
|
|
99
|
-
}
|
|
100
|
-
getOlCls(key) {
|
|
101
|
-
let olCls = olstyle[key.charAt(0).toUpperCase() + key.slice(1)];
|
|
102
|
-
if (key === 'regularshape') {
|
|
103
|
-
olCls = olstyle.RegularShape;
|
|
104
|
-
}
|
|
105
|
-
if (key === 'backgroundFill') {
|
|
106
|
-
olCls = olstyle.Fill;
|
|
107
|
-
}
|
|
108
|
-
if (key === 'backgroundStroke') {
|
|
109
|
-
olCls = olstyle.Stroke;
|
|
110
|
-
}
|
|
111
|
-
return olCls;
|
|
112
|
-
}
|
|
113
|
-
createStyleByAttribute(feature, styleByAttribute, resolution) {
|
|
114
|
-
let style;
|
|
115
|
-
const type = styleByAttribute.type ? styleByAttribute.type : this.guessTypeFeature(feature);
|
|
116
|
-
const attribute = styleByAttribute.attribute;
|
|
117
|
-
const data = styleByAttribute.data;
|
|
118
|
-
const stroke = styleByAttribute.stroke;
|
|
119
|
-
const width = styleByAttribute.width;
|
|
120
|
-
const fill = styleByAttribute.fill;
|
|
121
|
-
const anchor = styleByAttribute.anchor;
|
|
122
|
-
const radius = styleByAttribute.radius;
|
|
123
|
-
const icon = styleByAttribute.icon;
|
|
124
|
-
const scale = styleByAttribute.scale;
|
|
125
|
-
const size = data ? data.length : 0;
|
|
126
|
-
const label = styleByAttribute.label ? styleByAttribute.label.attribute : undefined;
|
|
127
|
-
const labelMinResolutionFromScale = styleByAttribute.label?.minScaleDenom ? getResolutionFromScale(Number(styleByAttribute.label.minScaleDenom)) : undefined;
|
|
128
|
-
const labelMaxResolutionFromScale = styleByAttribute.label?.maxScaleDenom ? getResolutionFromScale(Number(styleByAttribute.label.maxScaleDenom)) : undefined;
|
|
129
|
-
const minResolution = styleByAttribute.label?.minResolution ? styleByAttribute.label.minResolution : 0;
|
|
130
|
-
const maxResolution = styleByAttribute.label?.maxResolution ? styleByAttribute.label.maxResolution : Infinity;
|
|
131
|
-
const labelMinResolution = labelMinResolutionFromScale || minResolution;
|
|
132
|
-
const labelMaxResolution = labelMaxResolutionFromScale || maxResolution;
|
|
133
|
-
let labelStyle = styleByAttribute.label?.style ? this.parseStyle('text', styleByAttribute.label.style) : undefined;
|
|
134
|
-
if (!labelStyle && label) {
|
|
135
|
-
labelStyle = new olstyle.Text();
|
|
136
|
-
}
|
|
137
|
-
const baseStyle = styleByAttribute.baseStyle;
|
|
138
|
-
if (labelStyle) {
|
|
139
|
-
if (resolution >= labelMinResolution && resolution <= labelMaxResolution) {
|
|
140
|
-
labelStyle.setText(this.getLabel(feature, label));
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
labelStyle.setText('');
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (type === 'circle') {
|
|
147
|
-
for (let i = 0; i < size; i++) {
|
|
148
|
-
const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
|
|
149
|
-
? feature.get(attribute)
|
|
150
|
-
: '';
|
|
151
|
-
if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
|
|
152
|
-
if (icon) {
|
|
153
|
-
style = [
|
|
154
|
-
new olstyle.Style({
|
|
155
|
-
image: new olstyle.Icon({
|
|
156
|
-
color: fill ? fill[i] : undefined,
|
|
157
|
-
src: icon[i],
|
|
158
|
-
scale: scale ? scale[i] : 1,
|
|
159
|
-
anchor: anchor ? anchor[i] : [0.5, 0.5]
|
|
160
|
-
}),
|
|
161
|
-
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
162
|
-
})
|
|
163
|
-
];
|
|
164
|
-
return style;
|
|
165
|
-
}
|
|
166
|
-
style = [
|
|
167
|
-
new olstyle.Style({
|
|
168
|
-
image: new olstyle.Circle({
|
|
169
|
-
radius: radius ? radius[i] : 4,
|
|
170
|
-
stroke: new olstyle.Stroke({
|
|
171
|
-
color: stroke ? stroke[i] : 'black',
|
|
172
|
-
width: width ? width[i] : 1
|
|
173
|
-
}),
|
|
174
|
-
fill: new olstyle.Fill({
|
|
175
|
-
color: fill ? fill[i] : 'black'
|
|
176
|
-
})
|
|
177
|
-
}),
|
|
178
|
-
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
179
|
-
})
|
|
180
|
-
];
|
|
181
|
-
return style;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
if (!feature.getStyle()) {
|
|
185
|
-
if (baseStyle) {
|
|
186
|
-
style = this.createStyle(baseStyle, feature, resolution);
|
|
187
|
-
if (labelStyle) {
|
|
188
|
-
style.setText(labelStyle);
|
|
189
|
-
}
|
|
190
|
-
return style;
|
|
191
|
-
}
|
|
192
|
-
style = [
|
|
193
|
-
new olstyle.Style({
|
|
194
|
-
image: new olstyle.Circle({
|
|
195
|
-
radius: 4,
|
|
196
|
-
stroke: new olstyle.Stroke({
|
|
197
|
-
color: 'black'
|
|
198
|
-
}),
|
|
199
|
-
fill: new olstyle.Fill({
|
|
200
|
-
color: '#bbbbf2'
|
|
201
|
-
})
|
|
202
|
-
})
|
|
203
|
-
})
|
|
204
|
-
];
|
|
205
|
-
return style;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
else if (type === 'regular') {
|
|
209
|
-
for (let i = 0; i < size; i++) {
|
|
210
|
-
const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
|
|
211
|
-
? feature.get(attribute)
|
|
212
|
-
: '';
|
|
213
|
-
if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
|
|
214
|
-
style = [
|
|
215
|
-
new olstyle.Style({
|
|
216
|
-
stroke: new olstyle.Stroke({
|
|
217
|
-
color: stroke ? stroke[i] : 'black',
|
|
218
|
-
width: width ? width[i] : 1
|
|
219
|
-
}),
|
|
220
|
-
fill: new olstyle.Fill({
|
|
221
|
-
color: fill ? fill[i] : 'rgba(255,255,255,0.4)'
|
|
222
|
-
}),
|
|
223
|
-
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
224
|
-
})
|
|
225
|
-
];
|
|
226
|
-
return style;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (feature instanceof OlFeature) {
|
|
230
|
-
if (!feature.getStyle()) {
|
|
231
|
-
if (baseStyle) {
|
|
232
|
-
style = this.createStyle(baseStyle, feature, resolution);
|
|
233
|
-
if (labelStyle) {
|
|
234
|
-
style.setText(labelStyle);
|
|
235
|
-
}
|
|
236
|
-
return style;
|
|
237
|
-
}
|
|
238
|
-
style = [
|
|
239
|
-
new olstyle.Style({
|
|
240
|
-
stroke: new olstyle.Stroke({
|
|
241
|
-
color: 'black'
|
|
242
|
-
}),
|
|
243
|
-
fill: new olstyle.Fill({
|
|
244
|
-
color: '#bbbbf2'
|
|
245
|
-
})
|
|
246
|
-
})
|
|
247
|
-
];
|
|
248
|
-
return style;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
createClusterStyle(feature, resolution, clusterParam = {}, layerStyle) {
|
|
254
|
-
let style;
|
|
255
|
-
const size = feature.get('features').length;
|
|
256
|
-
if (size !== 1) {
|
|
257
|
-
if (clusterParam.clusterRanges) {
|
|
258
|
-
for (const r of clusterParam.clusterRanges) {
|
|
259
|
-
if ((!r.minRadius || r.minRadius <= size) &&
|
|
260
|
-
(!r.maxRadius || r.maxRadius >= size)) {
|
|
261
|
-
style = this.createStyle(r.style);
|
|
262
|
-
if (r.showRange) {
|
|
263
|
-
const text = new olstyle.Text({
|
|
264
|
-
text: size.toString(),
|
|
265
|
-
fill: new olstyle.Fill({
|
|
266
|
-
color: '#fff'
|
|
267
|
-
})
|
|
268
|
-
});
|
|
269
|
-
style.setText(text);
|
|
270
|
-
}
|
|
271
|
-
if (r.dynamicRadius) {
|
|
272
|
-
let clusterRadius;
|
|
273
|
-
const radiusMin = style.getRadius();
|
|
274
|
-
clusterRadius = 5 * Math.log(size);
|
|
275
|
-
if (clusterRadius < radiusMin) {
|
|
276
|
-
clusterRadius = radiusMin;
|
|
277
|
-
}
|
|
278
|
-
style.image_.setRadius(clusterRadius);
|
|
279
|
-
}
|
|
280
|
-
break;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
if (!style) {
|
|
285
|
-
let clusterRadius;
|
|
286
|
-
if (clusterParam.radiusCalc) {
|
|
287
|
-
clusterRadius = clusterParam.radiusCalc(size);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
const radiusMin = 6;
|
|
291
|
-
clusterRadius = 5 * Math.log(size);
|
|
292
|
-
if (clusterRadius < radiusMin) {
|
|
293
|
-
clusterRadius = radiusMin;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
style = [
|
|
297
|
-
new olstyle.Style({
|
|
298
|
-
image: new olstyle.Circle({
|
|
299
|
-
radius: clusterRadius,
|
|
300
|
-
stroke: new olstyle.Stroke({
|
|
301
|
-
color: 'black'
|
|
302
|
-
}),
|
|
303
|
-
fill: new olstyle.Fill({
|
|
304
|
-
color: 'rgba(24, 134, 45, 0.5)'
|
|
305
|
-
})
|
|
306
|
-
}),
|
|
307
|
-
text: new olstyle.Text({
|
|
308
|
-
text: size.toString(),
|
|
309
|
-
fill: new olstyle.Fill({
|
|
310
|
-
color: '#fff'
|
|
311
|
-
})
|
|
312
|
-
})
|
|
313
|
-
})
|
|
314
|
-
];
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
style = this.createStyle(layerStyle, feature, resolution);
|
|
319
|
-
}
|
|
320
|
-
return style;
|
|
321
|
-
}
|
|
322
|
-
getLabel(feature, labelMatch) {
|
|
323
|
-
let label = labelMatch;
|
|
324
|
-
if (!label) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
|
|
328
|
-
labelToGet.forEach(v => {
|
|
329
|
-
label = label.replace(v[0], feature.get(v[1]));
|
|
330
|
-
});
|
|
331
|
-
// Nothing done? check feature's attribute
|
|
332
|
-
if (labelToGet.length === 0 && label === labelMatch) {
|
|
333
|
-
label = feature.get(labelMatch) || labelMatch;
|
|
334
|
-
}
|
|
335
|
-
return label;
|
|
336
|
-
}
|
|
337
|
-
guessTypeFeature(feature) {
|
|
338
|
-
switch (feature.getGeometry().getType()) {
|
|
339
|
-
case 'Point':
|
|
340
|
-
case 'MultiPoint':
|
|
341
|
-
case 'Circle':
|
|
342
|
-
return 'circle';
|
|
343
|
-
default:
|
|
344
|
-
return 'regular';
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
StyleService.ɵfac = function StyleService_Factory(t) { return new (t || StyleService)(); };
|
|
349
|
-
StyleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: StyleService, factory: StyleService.ɵfac, providedIn: 'root' });
|
|
350
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleService, [{
|
|
351
|
-
type: Injectable,
|
|
352
|
-
args: [{
|
|
353
|
-
providedIn: 'root'
|
|
354
|
-
}]
|
|
355
|
-
}], null, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as olstyle from 'ol/style';
|
|
3
|
+
import OlFeature from 'ol/Feature';
|
|
4
|
+
import { createOverlayMarkerStyle } from '../../overlay/shared/overlay-marker-style.utils';
|
|
5
|
+
import { getResolutionFromScale } from '../../map/shared/map.utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class StyleService {
|
|
8
|
+
/**
|
|
9
|
+
* Create a style based on a object as
|
|
10
|
+
* style: {
|
|
11
|
+
* "stroke": {
|
|
12
|
+
* "color": "blue",
|
|
13
|
+
* "lineDash": [10, 5]
|
|
14
|
+
* },
|
|
15
|
+
* "text": {
|
|
16
|
+
* "minScaleDenom": 50000,
|
|
17
|
+
* "maxScaleDenom": 200000,
|
|
18
|
+
* "minResolution": 100,
|
|
19
|
+
* "maxResolution": 400,
|
|
20
|
+
* "attribute": "THE COLUMN NAME TO RETRIEVE THE LABEL VALUE",
|
|
21
|
+
* "text": "MY HARCODED TEXT",
|
|
22
|
+
* "stroke": {
|
|
23
|
+
* "color": "blue",
|
|
24
|
+
* "width": 0.75
|
|
25
|
+
* },
|
|
26
|
+
* "fill": {
|
|
27
|
+
* "color": "black"
|
|
28
|
+
* },
|
|
29
|
+
* "font": "20px sans-serif",
|
|
30
|
+
* "overflow": true,
|
|
31
|
+
* "offsetX": 10,
|
|
32
|
+
* "offsetY": 20,
|
|
33
|
+
* "padding": [2.5, 2.5, 2.5, 2.5]
|
|
34
|
+
* },
|
|
35
|
+
* "width": 5
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* @param options
|
|
39
|
+
* @param feature feature to apply style on
|
|
40
|
+
* @param resolution current map resolution, to control label resolution range
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
createStyle(options, feature, resolution) {
|
|
44
|
+
if (!options) {
|
|
45
|
+
return createOverlayMarkerStyle();
|
|
46
|
+
}
|
|
47
|
+
if (typeof options === 'function' || options instanceof olstyle.Style) {
|
|
48
|
+
return options;
|
|
49
|
+
}
|
|
50
|
+
const parsedStyle = this.parseStyle('style', options);
|
|
51
|
+
if (parsedStyle.getText()) {
|
|
52
|
+
let labelMinResolution = 0;
|
|
53
|
+
let labelMaxResolution = Infinity;
|
|
54
|
+
if (options.text) {
|
|
55
|
+
const labelMinResolutionFromScale = options.text?.minScaleDenom ? getResolutionFromScale(Number(options.text.minScaleDenom)) : undefined;
|
|
56
|
+
const labelMaxResolutionFromScale = options.text?.maxScaleDenom ? getResolutionFromScale(Number(options.text.maxScaleDenom)) : undefined;
|
|
57
|
+
const minResolution = options.text?.minResolution ? options.text.minResolution : 0;
|
|
58
|
+
const maxResolution = options.text?.maxResolution ? options.text.maxResolution : Infinity;
|
|
59
|
+
labelMinResolution = labelMinResolutionFromScale || minResolution;
|
|
60
|
+
labelMaxResolution = labelMaxResolutionFromScale || maxResolution;
|
|
61
|
+
}
|
|
62
|
+
if (feature && resolution >= labelMinResolution && resolution <= labelMaxResolution) {
|
|
63
|
+
if (feature && options.text.attribute) {
|
|
64
|
+
parsedStyle.getText().setText(this.getLabel(feature, options.text.attribute));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
parsedStyle.setText();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return parsedStyle;
|
|
72
|
+
}
|
|
73
|
+
parseStyle(key, value) {
|
|
74
|
+
const styleOptions = {};
|
|
75
|
+
const olCls = this.getOlCls(key);
|
|
76
|
+
if (olCls && value instanceof Object) {
|
|
77
|
+
Object.keys(value).forEach(_key => {
|
|
78
|
+
const olKey = this.getOlKey(_key);
|
|
79
|
+
styleOptions[olKey] = this.parseStyle(_key, value[_key]);
|
|
80
|
+
});
|
|
81
|
+
return new olCls(styleOptions);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
getOlKey(key) {
|
|
88
|
+
let olKey;
|
|
89
|
+
switch (key.toLowerCase()) {
|
|
90
|
+
case 'circle':
|
|
91
|
+
case 'regularshape':
|
|
92
|
+
case 'icon':
|
|
93
|
+
olKey = 'image';
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
return olKey || key;
|
|
99
|
+
}
|
|
100
|
+
getOlCls(key) {
|
|
101
|
+
let olCls = olstyle[key.charAt(0).toUpperCase() + key.slice(1)];
|
|
102
|
+
if (key === 'regularshape') {
|
|
103
|
+
olCls = olstyle.RegularShape;
|
|
104
|
+
}
|
|
105
|
+
if (key === 'backgroundFill') {
|
|
106
|
+
olCls = olstyle.Fill;
|
|
107
|
+
}
|
|
108
|
+
if (key === 'backgroundStroke') {
|
|
109
|
+
olCls = olstyle.Stroke;
|
|
110
|
+
}
|
|
111
|
+
return olCls;
|
|
112
|
+
}
|
|
113
|
+
createStyleByAttribute(feature, styleByAttribute, resolution) {
|
|
114
|
+
let style;
|
|
115
|
+
const type = styleByAttribute.type ? styleByAttribute.type : this.guessTypeFeature(feature);
|
|
116
|
+
const attribute = styleByAttribute.attribute;
|
|
117
|
+
const data = styleByAttribute.data;
|
|
118
|
+
const stroke = styleByAttribute.stroke;
|
|
119
|
+
const width = styleByAttribute.width;
|
|
120
|
+
const fill = styleByAttribute.fill;
|
|
121
|
+
const anchor = styleByAttribute.anchor;
|
|
122
|
+
const radius = styleByAttribute.radius;
|
|
123
|
+
const icon = styleByAttribute.icon;
|
|
124
|
+
const scale = styleByAttribute.scale;
|
|
125
|
+
const size = data ? data.length : 0;
|
|
126
|
+
const label = styleByAttribute.label ? styleByAttribute.label.attribute : undefined;
|
|
127
|
+
const labelMinResolutionFromScale = styleByAttribute.label?.minScaleDenom ? getResolutionFromScale(Number(styleByAttribute.label.minScaleDenom)) : undefined;
|
|
128
|
+
const labelMaxResolutionFromScale = styleByAttribute.label?.maxScaleDenom ? getResolutionFromScale(Number(styleByAttribute.label.maxScaleDenom)) : undefined;
|
|
129
|
+
const minResolution = styleByAttribute.label?.minResolution ? styleByAttribute.label.minResolution : 0;
|
|
130
|
+
const maxResolution = styleByAttribute.label?.maxResolution ? styleByAttribute.label.maxResolution : Infinity;
|
|
131
|
+
const labelMinResolution = labelMinResolutionFromScale || minResolution;
|
|
132
|
+
const labelMaxResolution = labelMaxResolutionFromScale || maxResolution;
|
|
133
|
+
let labelStyle = styleByAttribute.label?.style ? this.parseStyle('text', styleByAttribute.label.style) : undefined;
|
|
134
|
+
if (!labelStyle && label) {
|
|
135
|
+
labelStyle = new olstyle.Text();
|
|
136
|
+
}
|
|
137
|
+
const baseStyle = styleByAttribute.baseStyle;
|
|
138
|
+
if (labelStyle) {
|
|
139
|
+
if (resolution >= labelMinResolution && resolution <= labelMaxResolution) {
|
|
140
|
+
labelStyle.setText(this.getLabel(feature, label));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
labelStyle.setText('');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (type === 'circle') {
|
|
147
|
+
for (let i = 0; i < size; i++) {
|
|
148
|
+
const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
|
|
149
|
+
? feature.get(attribute)
|
|
150
|
+
: '';
|
|
151
|
+
if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
|
|
152
|
+
if (icon) {
|
|
153
|
+
style = [
|
|
154
|
+
new olstyle.Style({
|
|
155
|
+
image: new olstyle.Icon({
|
|
156
|
+
color: fill ? fill[i] : undefined,
|
|
157
|
+
src: icon[i],
|
|
158
|
+
scale: scale ? scale[i] : 1,
|
|
159
|
+
anchor: anchor ? anchor[i] : [0.5, 0.5]
|
|
160
|
+
}),
|
|
161
|
+
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
162
|
+
})
|
|
163
|
+
];
|
|
164
|
+
return style;
|
|
165
|
+
}
|
|
166
|
+
style = [
|
|
167
|
+
new olstyle.Style({
|
|
168
|
+
image: new olstyle.Circle({
|
|
169
|
+
radius: radius ? radius[i] : 4,
|
|
170
|
+
stroke: new olstyle.Stroke({
|
|
171
|
+
color: stroke ? stroke[i] : 'black',
|
|
172
|
+
width: width ? width[i] : 1
|
|
173
|
+
}),
|
|
174
|
+
fill: new olstyle.Fill({
|
|
175
|
+
color: fill ? fill[i] : 'black'
|
|
176
|
+
})
|
|
177
|
+
}),
|
|
178
|
+
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
179
|
+
})
|
|
180
|
+
];
|
|
181
|
+
return style;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (!feature.getStyle()) {
|
|
185
|
+
if (baseStyle) {
|
|
186
|
+
style = this.createStyle(baseStyle, feature, resolution);
|
|
187
|
+
if (labelStyle) {
|
|
188
|
+
style.setText(labelStyle);
|
|
189
|
+
}
|
|
190
|
+
return style;
|
|
191
|
+
}
|
|
192
|
+
style = [
|
|
193
|
+
new olstyle.Style({
|
|
194
|
+
image: new olstyle.Circle({
|
|
195
|
+
radius: 4,
|
|
196
|
+
stroke: new olstyle.Stroke({
|
|
197
|
+
color: 'black'
|
|
198
|
+
}),
|
|
199
|
+
fill: new olstyle.Fill({
|
|
200
|
+
color: '#bbbbf2'
|
|
201
|
+
})
|
|
202
|
+
})
|
|
203
|
+
})
|
|
204
|
+
];
|
|
205
|
+
return style;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else if (type === 'regular') {
|
|
209
|
+
for (let i = 0; i < size; i++) {
|
|
210
|
+
const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
|
|
211
|
+
? feature.get(attribute)
|
|
212
|
+
: '';
|
|
213
|
+
if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
|
|
214
|
+
style = [
|
|
215
|
+
new olstyle.Style({
|
|
216
|
+
stroke: new olstyle.Stroke({
|
|
217
|
+
color: stroke ? stroke[i] : 'black',
|
|
218
|
+
width: width ? width[i] : 1
|
|
219
|
+
}),
|
|
220
|
+
fill: new olstyle.Fill({
|
|
221
|
+
color: fill ? fill[i] : 'rgba(255,255,255,0.4)'
|
|
222
|
+
}),
|
|
223
|
+
text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
|
|
224
|
+
})
|
|
225
|
+
];
|
|
226
|
+
return style;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (feature instanceof OlFeature) {
|
|
230
|
+
if (!feature.getStyle()) {
|
|
231
|
+
if (baseStyle) {
|
|
232
|
+
style = this.createStyle(baseStyle, feature, resolution);
|
|
233
|
+
if (labelStyle) {
|
|
234
|
+
style.setText(labelStyle);
|
|
235
|
+
}
|
|
236
|
+
return style;
|
|
237
|
+
}
|
|
238
|
+
style = [
|
|
239
|
+
new olstyle.Style({
|
|
240
|
+
stroke: new olstyle.Stroke({
|
|
241
|
+
color: 'black'
|
|
242
|
+
}),
|
|
243
|
+
fill: new olstyle.Fill({
|
|
244
|
+
color: '#bbbbf2'
|
|
245
|
+
})
|
|
246
|
+
})
|
|
247
|
+
];
|
|
248
|
+
return style;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
createClusterStyle(feature, resolution, clusterParam = {}, layerStyle) {
|
|
254
|
+
let style;
|
|
255
|
+
const size = feature.get('features').length;
|
|
256
|
+
if (size !== 1) {
|
|
257
|
+
if (clusterParam.clusterRanges) {
|
|
258
|
+
for (const r of clusterParam.clusterRanges) {
|
|
259
|
+
if ((!r.minRadius || r.minRadius <= size) &&
|
|
260
|
+
(!r.maxRadius || r.maxRadius >= size)) {
|
|
261
|
+
style = this.createStyle(r.style);
|
|
262
|
+
if (r.showRange) {
|
|
263
|
+
const text = new olstyle.Text({
|
|
264
|
+
text: size.toString(),
|
|
265
|
+
fill: new olstyle.Fill({
|
|
266
|
+
color: '#fff'
|
|
267
|
+
})
|
|
268
|
+
});
|
|
269
|
+
style.setText(text);
|
|
270
|
+
}
|
|
271
|
+
if (r.dynamicRadius) {
|
|
272
|
+
let clusterRadius;
|
|
273
|
+
const radiusMin = style.getRadius();
|
|
274
|
+
clusterRadius = 5 * Math.log(size);
|
|
275
|
+
if (clusterRadius < radiusMin) {
|
|
276
|
+
clusterRadius = radiusMin;
|
|
277
|
+
}
|
|
278
|
+
style.image_.setRadius(clusterRadius);
|
|
279
|
+
}
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (!style) {
|
|
285
|
+
let clusterRadius;
|
|
286
|
+
if (clusterParam.radiusCalc) {
|
|
287
|
+
clusterRadius = clusterParam.radiusCalc(size);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
const radiusMin = 6;
|
|
291
|
+
clusterRadius = 5 * Math.log(size);
|
|
292
|
+
if (clusterRadius < radiusMin) {
|
|
293
|
+
clusterRadius = radiusMin;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
style = [
|
|
297
|
+
new olstyle.Style({
|
|
298
|
+
image: new olstyle.Circle({
|
|
299
|
+
radius: clusterRadius,
|
|
300
|
+
stroke: new olstyle.Stroke({
|
|
301
|
+
color: 'black'
|
|
302
|
+
}),
|
|
303
|
+
fill: new olstyle.Fill({
|
|
304
|
+
color: 'rgba(24, 134, 45, 0.5)'
|
|
305
|
+
})
|
|
306
|
+
}),
|
|
307
|
+
text: new olstyle.Text({
|
|
308
|
+
text: size.toString(),
|
|
309
|
+
fill: new olstyle.Fill({
|
|
310
|
+
color: '#fff'
|
|
311
|
+
})
|
|
312
|
+
})
|
|
313
|
+
})
|
|
314
|
+
];
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
style = this.createStyle(layerStyle, feature, resolution);
|
|
319
|
+
}
|
|
320
|
+
return style;
|
|
321
|
+
}
|
|
322
|
+
getLabel(feature, labelMatch) {
|
|
323
|
+
let label = labelMatch;
|
|
324
|
+
if (!label) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
|
|
328
|
+
labelToGet.forEach(v => {
|
|
329
|
+
label = label.replace(v[0], feature.get(v[1]));
|
|
330
|
+
});
|
|
331
|
+
// Nothing done? check feature's attribute
|
|
332
|
+
if (labelToGet.length === 0 && label === labelMatch) {
|
|
333
|
+
label = feature.get(labelMatch) || labelMatch;
|
|
334
|
+
}
|
|
335
|
+
return label;
|
|
336
|
+
}
|
|
337
|
+
guessTypeFeature(feature) {
|
|
338
|
+
switch (feature.getGeometry().getType()) {
|
|
339
|
+
case 'Point':
|
|
340
|
+
case 'MultiPoint':
|
|
341
|
+
case 'Circle':
|
|
342
|
+
return 'circle';
|
|
343
|
+
default:
|
|
344
|
+
return 'regular';
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
StyleService.ɵfac = function StyleService_Factory(t) { return new (t || StyleService)(); };
|
|
349
|
+
StyleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: StyleService, factory: StyleService.ɵfac, providedIn: 'root' });
|
|
350
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleService, [{
|
|
351
|
+
type: Injectable,
|
|
352
|
+
args: [{
|
|
353
|
+
providedIn: 'root'
|
|
354
|
+
}]
|
|
355
|
+
}], null, null); })();
|
|
356
356
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC9zdHlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBSW5DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUtwRSxNQUFNLE9BQU8sWUFBWTtJQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtDRztJQUNILFdBQVcsQ0FBQyxPQUErQixFQUFFLE9BQStDLEVBQUUsVUFBbUI7UUFFL0csSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLE9BQU8sWUFBWSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3JFLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDekIsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7WUFDbEMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNoQixNQUFNLDJCQUEyQixHQUMvQixPQUFPLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxD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O1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBTztRQUM5QixRQUFRLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssWUFBWSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNILENBQUM7O3dFQS9XVSxZQUFZO2tFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZYLE1BQU07dUZBRVAsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgQ2x1c3RlclBhcmFtIH0gZnJvbSAnLi9jbHVzdGVyUGFyYW0nO1xuaW1wb3J0IHsgY3JlYXRlT3ZlcmxheU1hcmtlclN0eWxlIH0gZnJvbSAnLi4vLi4vb3ZlcmxheS9zaGFyZWQvb3ZlcmxheS1tYXJrZXItc3R5bGUudXRpbHMnO1xuaW1wb3J0IFJlbmRlckZlYXR1cmUgZnJvbSAnb2wvcmVuZGVyL0ZlYXR1cmUnO1xuaW1wb3J0IHsgZ2V0UmVzb2x1dGlvbkZyb21TY2FsZSB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwLnV0aWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3R5bGVTZXJ2aWNlIHtcbiAgcHVibGljIHN0eWxlOiBvbHN0eWxlLlN0eWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdHlsZSBiYXNlZCBvbiBhIG9iamVjdCBhc1xuICAgKiBzdHlsZToge1xuICAgKiAgICAgICBcInN0cm9rZVwiOiB7XG4gICAqICAgICAgICAgXCJjb2xvclwiOiBcImJsdWVcIixcbiAgICogICAgICAgICBcImxpbmVEYXNoXCI6IFsxMCwgNV1cbiAgICogICAgICAgfSxcbiAgICogICAgICAgXCJ0ZXh0XCI6IHtcbiAgICogICAgICAgICBcIm1pblNjYWxlRGVub21cIjogNTAwMDAsXG4gICAqICAgICAgICAgXCJtYXhTY2FsZURlbm9tXCI6IDIwMDAwMCxcbiAgICogICAgICAgICBcIm1pblJlc29sdXRpb25cIjogMTAwLFxuICAgKiAgICAgICAgIFwibWF4UmVzb2x1dGlvblwiOiA0MDAsXG4gICAqICAgICAgICAgXCJhdHRyaWJ1dGVcIjogXCJUSEUgQ09MVU1OIE5BTUUgVE8gUkVUUklFVkUgVEhFIExBQkVMIFZBTFVFXCIsXG4gICAqICAgICAgICAgXCJ0ZXh0XCI6IFwiTVkgSEFSQ09ERUQgVEVYVFwiLFxuICAgKiAgICAgICAgIFwic3Ryb2tlXCI6IHtcbiAgICogICAgICAgICAgIFwiY29sb3JcIjogXCJibHVlXCIsXG4gICAqICAgICAgICAgICBcIndpZHRoXCI6IDAuNzVcbiAgICogICAgICAgICB9LFxuICAgKiAgICAgICAgIFwiZmlsbFwiOiB7XG4gICAqICAgICAgICAgICBcImNvbG9yXCI6IFwiYmxhY2tcIlxuICAgKiAgICAgICAgIH0sXG4gICAqICAgICAgICAgXCJmb250XCI6IFwiMjBweCBzYW5zLXNlcmlmXCIsXG4gICAqICAgICAgICAgXCJvdmVyZmxvd1wiOiB0cnVlLFxuICAgKiAgICAgICAgIFwib2Zmc2V0WFwiOiAxMCxcbiAgICogICAgICAgICBcIm9mZnNldFlcIjogMjAsXG4gICAqICAgICAgICAgXCJwYWRkaW5nXCI6IFsyLjUsIDIuNSwgMi41LCAyLjVdXG4gICAqICAgICAgIH0sXG4gICAqICAgICAgIFwid2lkdGhcIjogNVxuICAgKiAgICAgfVxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcGFyYW0gZmVhdHVyZSBmZWF0dXJlIHRvIGFwcGx5IHN0eWxlIG9uXG4gICAqIEBwYXJhbSByZXNvbHV0aW9uIGN1cnJlbnQgbWFwIHJlc29sdXRpb24sIHRvIGNvbnRyb2wgbGFiZWwgcmVzb2x1dGlvbiByYW5nZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgY3JlYXRlU3R5bGUob3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgZmVhdHVyZT86IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIHJlc29sdXRpb24/OiBudW1iZXIpIHtcblxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgfHwgb3B0aW9ucyBpbnN0YW5jZW9mIG9sc3R5bGUuU3R5bGUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRTdHlsZSA9IHRoaXMucGFyc2VTdHlsZSgnc3R5bGUnLCBvcHRpb25zKTtcbiAgICBpZiAocGFyc2VkU3R5bGUuZ2V0VGV4dCgpKSB7XG4gICAgICBsZXQgbGFiZWxNaW5SZXNvbHV0aW9uID0gMDtcbiAgICAgIGxldCBsYWJlbE1heFJlc29sdXRpb24gPSBJbmZpbml0eTtcbiAgICAgIGlmIChvcHRpb25zLnRleHQpIHtcbiAgICAgICAgY29uc3QgbGFiZWxNaW5SZXNvbHV0aW9uRnJvbVNjYWxlID1cbiAgICAgICAgICBvcHRpb25zLnRleHQ/Lm1pblNjYWxlRGVub20gPyBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKE51bWJlcihvcHRpb25zLnRleHQubWluU2NhbGVEZW5vbSkpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsYWJlbE1heFJlc29sdXRpb25Gcm9tU2NhbGUgPVxuICAgICAgICAgIG9wdGlvbnMudGV4dD8ubWF4U2NhbGVEZW5vbSA/IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoTnVtYmVyKG9wdGlvbnMudGV4dC5tYXhTY2FsZURlbm9tKSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG1pblJlc29sdXRpb24gPSBvcHRpb25zLnRleHQ/Lm1pblJlc29sdXRpb24gPyBvcHRpb25zLnRleHQubWluUmVzb2x1dGlvbiA6IDA7XG4gICAgICAgIGNvbnN0IG1heFJlc29sdXRpb24gPSBvcHRpb25zLnRleHQ/Lm1heFJlc29sdXRpb24gPyBvcHRpb25zLnRleHQubWF4UmVzb2x1dGlvbiA6IEluZmluaXR5O1xuXG4gICAgICAgIGxhYmVsTWluUmVzb2x1dGlvbiA9IGxhYmVsTWluUmVzb2x1dGlvbkZyb21TY2FsZSB8fCBtaW5SZXNvbHV0aW9uO1xuICAgICAgICBsYWJlbE1heFJlc29sdXRpb24gPSBsYWJlbE1heFJlc29sdXRpb25Gcm9tU2NhbGUgfHwgbWF4UmVzb2x1dGlvbjtcbiAgICAgIH1cbiAgICAgIGlmIChmZWF0dXJlICYmIHJlc29sdXRpb24gPj0gbGFiZWxNaW5SZXNvbHV0aW9uICYmIHJlc29sdXRpb24gPD0gbGFiZWxNYXhSZXNvbHV0aW9uKSB7XG4gICAgICAgIGlmIChmZWF0dXJlICYmIG9wdGlvbnMudGV4dC5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICBwYXJzZWRTdHlsZS5nZXRUZXh0KCkuc2V0VGV4dCh0aGlzLmdldExhYmVsKGZlYXR1cmUsIG9wdGlvbnMudGV4dC5hdHRyaWJ1dGUpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkU3R5bGUuc2V0VGV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkU3R5bGU7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU3R5bGUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBzdHlsZU9wdGlvbnMgPSB7fTtcbiAgICBjb25zdCBvbENscyA9IHRoaXMuZ2V0T2xDbHMoa2V5KTtcblxuICAgIGlmIChvbENscyAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goX2tleSA9PiB7XG4gICAgICAgIGNvbnN0IG9sS2V5ID0gdGhpcy5nZXRPbEtleShfa2V5KTtcbiAgICAgICAgc3R5bGVPcHRpb25zW29sS2V5XSA9IHRoaXMucGFyc2VTdHlsZShfa2V5LCB2YWx1ZVtfa2V5XSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgb2xDbHMoc3R5bGVPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2xLZXkoa2V5OiBhbnkpIHtcbiAgICBsZXQgb2xLZXk7XG4gICAgc3dpdGNoIChrZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIGNhc2UgJ3JlZ3VsYXJzaGFwZSc6XG4gICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgb2xLZXkgPSAnaW1hZ2UnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvbEtleSB8fCBrZXk7XG4gIH1cblxuICBwcml2YXRlIGdldE9sQ2xzKGtleTogYW55KSB7XG4gICAgbGV0IG9sQ2xzID0gb2xzdHlsZVtrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSldO1xuICAgIGlmIChrZXkgPT09ICdyZWd1bGFyc2hhcGUnKSB7XG4gICAgICBvbENscyA9IG9sc3R5bGUuUmVndWxhclNoYXBlO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSAnYmFja2dyb3VuZEZpbGwnKSB7XG4gICAgICBvbENscyA9IG9sc3R5bGUuRmlsbDtcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ2JhY2tncm91bmRTdHJva2UnKSB7XG4gICAgICBvbENscyA9IG9sc3R5bGUuU3Ryb2tlO1xuICAgIH1cblxuICAgIHJldHVybiBvbENscztcbiAgfVxuXG4gIGNyZWF0ZVN0eWxlQnlBdHRyaWJ1dGUoZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5Piwgc3R5bGVCeUF0dHJpYnV0ZTogU3R5bGVCeUF0dHJpYnV0ZSwgcmVzb2x1dGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgc3R5bGU7XG4gICAgY29uc3QgdHlwZSA9IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA/IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA6IHRoaXMuZ3Vlc3NUeXBlRmVhdHVyZShmZWF0dXJlKTtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBzdHlsZUJ5QXR0cmlidXRlLmF0dHJpYnV0ZTtcbiAgICBjb25zdCBkYXRhID0gc3R5bGVCeUF0dHJpYnV0ZS5kYXRhO1xuICAgIGNvbnN0IHN0cm9rZSA9IHN0eWxlQnlBdHRyaWJ1dGUuc3Ryb2tlO1xuICAgIGNvbnN0IHdpZHRoID0gc3R5bGVCeUF0dHJpYnV0ZS53aWR0aDtcbiAgICBjb25zdCBmaWxsID0gc3R5bGVCeUF0dHJpYnV0ZS5maWxsO1xuICAgIGNvbnN0IGFuY2hvciA9IHN0eWxlQnlBdHRyaWJ1dGUuYW5jaG9yO1xuICAgIGNvbnN0IHJhZGl1cyA9IHN0eWxlQnlBdHRyaWJ1dGUucmFkaXVzO1xuICAgIGNvbnN0IGljb24gPSBzdHlsZUJ5QXR0cmlidXRlLmljb247XG4gICAgY29uc3Qgc2NhbGUgPSBzdHlsZUJ5QXR0cmlidXRlLnNjYWxlO1xuICAgIGNvbnN0IHNpemUgPSBkYXRhID8gZGF0YS5sZW5ndGggOiAwO1xuICAgIGNvbnN0IGxhYmVsID0gc3R5bGVCeUF0dHJpYnV0ZS5sYWJlbCA/IHN0eWxlQnlBdHRyaWJ1dGUubGFiZWwuYXR0cmlidXRlIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsTWluUmVzb2x1dGlvbkZyb21TY2FsZSA9XG4gICAgICBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsPy5taW5TY2FsZURlbm9tID8gZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShOdW1iZXIoc3R5bGVCeUF0dHJpYnV0ZS5sYWJlbC5taW5TY2FsZURlbm9tKSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGFiZWxNYXhSZXNvbHV0aW9uRnJvbVNjYWxlID1cbiAgICAgIHN0eWxlQnlBdHRyaWJ1dGUubGFiZWw/Lm1heFNjYWxlRGVub20gPyBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKE51bWJlcihzdHlsZUJ5QXR0cmlidXRlLmxhYmVsLm1heFNjYWxlRGVub20pKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaW5SZXNvbHV0aW9uID0gc3R5bGVCeUF0dHJpYnV0ZS5sYWJlbD8ubWluUmVzb2x1dGlvbiA/IHN0eWxlQnlBdHRyaWJ1dGUubGFiZWwubWluUmVzb2x1dGlvbiA6IDA7XG4gICAgY29uc3QgbWF4UmVzb2x1dGlvbiA9IHN0eWxlQnlBdHRyaWJ1dGUubGFiZWw/Lm1heFJlc29sdXRpb24gPyBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsLm1heFJlc29sdXRpb24gOiBJbmZpbml0eTtcblxuICAgIGNvbnN0IGxhYmVsTWluUmVzb2x1dGlvbiA9IGxhYmVsTWluUmVzb2x1dGlvbkZyb21TY2FsZSB8fCBtaW5SZXNvbHV0aW9uO1xuICAgIGNvbnN0IGxhYmVsTWF4UmVzb2x1dGlvbiA9IGxhYmVsTWF4UmVzb2x1dGlvbkZyb21TY2FsZSB8fCBtYXhSZXNvbHV0aW9uO1xuXG4gICAgbGV0IGxhYmVsU3R5bGUgPSBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsPy5zdHlsZSA/IHRoaXMucGFyc2VTdHlsZSgndGV4dCcsIHN0eWxlQnlBdHRyaWJ1dGUubGFiZWwuc3R5bGUpIDogdW5kZWZpbmVkO1xuICAgIGlmICghbGFiZWxTdHlsZSAmJiBsYWJlbCkge1xuICAgICAgICBsYWJlbFN0eWxlID0gbmV3IG9sc3R5bGUuVGV4dCgpO1xuICAgIH1cbiAgICBjb25zdCBiYXNlU3R5bGUgPSBzdHlsZUJ5QXR0cmlidXRlLmJhc2VTdHlsZTtcblxuICAgIGlmIChsYWJlbFN0eWxlKSB7XG4gICAgICBpZiAocmVzb2x1dGlvbiA+PSBsYWJlbE1pblJlc29sdXRpb24gJiYgcmVzb2x1dGlvbiA8PSBsYWJlbE1heFJlc29sdXRpb24pIHtcbiAgICAgICAgbGFiZWxTdHlsZS5zZXRUZXh0KHRoaXMuZ2V0TGFiZWwoZmVhdHVyZSwgbGFiZWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhYmVsU3R5bGUuc2V0VGV4dCgnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBjb25zdCB2YWwgPVxuICAgICAgICAgIHR5cGVvZiBmZWF0dXJlLmdldChhdHRyaWJ1dGUpICE9PSAndW5kZWZpbmVkJyAmJiBmZWF0dXJlLmdldChhdHRyaWJ1dGUpICE9PSBudWxsXG4gICAgICAgICAgICA/IGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIGlmICh2YWwgPT09IGRhdGFbaV0gfHwgdmFsLnRvU3RyaW5nKCkubWF0Y2gobmV3IFJlZ0V4cChkYXRhW2ldLCAnZ21pJykpKSB7XG4gICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIHN0eWxlID0gW1xuICAgICAgICAgICAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkljb24oe1xuICAgICAgICAgICAgICAgICAgY29sb3I6IGZpbGwgPyBmaWxsW2ldIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgc3JjOiBpY29uW2ldLFxuICAgICAgICAgICAgICAgICAgc2NhbGU6IHNjYWxlID8gc2NhbGVbaV0gOiAxLFxuICAgICAgICAgICAgICAgICAgYW5jaG9yOiBhbmNob3IgPyBhbmNob3JbaV0gOiBbMC41LCAwLjVdXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGV4dDogbGFiZWxTdHlsZSBpbnN0YW5jZW9mIG9sc3R5bGUuVGV4dCA/IGxhYmVsU3R5bGUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0eWxlID0gW1xuICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgICAgICAgICByYWRpdXM6IHJhZGl1cyA/IHJhZGl1c1tpXSA6IDQsXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgICAgICAgY29sb3I6IHN0cm9rZSA/IHN0cm9rZVtpXSA6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggPyB3aWR0aFtpXSA6IDFcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBmaWxsID8gZmlsbFtpXSA6ICdibGFjaydcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGV4dDogbGFiZWxTdHlsZSBpbnN0YW5jZW9mIG9sc3R5bGUuVGV4dCA/IGxhYmVsU3R5bGUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXTtcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghKGZlYXR1cmUgYXMgT2xGZWF0dXJlPE9sR2VvbWV0cnk+KS5nZXRTdHlsZSgpKSB7XG4gICAgICAgIGlmIChiYXNlU3R5bGUpIHtcbiAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoYmFzZVN0eWxlLCBmZWF0dXJlLCByZXNvbHV0aW9uKTtcbiAgICAgICAgICBpZiAobGFiZWxTdHlsZSkge1xuICAgICAgICAgICAgc3R5bGUuc2V0VGV4dChsYWJlbFN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlID0gW1xuICAgICAgICAgIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xuICAgICAgICAgICAgICByYWRpdXM6IDQsXG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2JsYWNrJ1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjYmJiYmYyJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncmVndWxhcicpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9XG4gICAgICAgIHR5cGVvZiBmZWF0dXJlLmdldChhdHRyaWJ1dGUpICE9PSAndW5kZWZpbmVkJyAmJiBmZWF0dXJlLmdldChhdHRyaWJ1dGUpICE9PSBudWxsXG4gICAgICAgICAgICA/IGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIGlmICh2YWwgPT09IGRhdGFbaV0gfHwgdmFsLnRvU3RyaW5nKCkubWF0Y2gobmV3IFJlZ0V4cChkYXRhW2ldLCAnZ21pJykpKSB7XG4gICAgICAgICAgc3R5bGUgPSBbXG4gICAgICAgICAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogc3Ryb2tlID8gc3Ryb2tlW2ldIDogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggPyB3aWR0aFtpXSA6IDFcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiBmaWxsID8gZmlsbFtpXSA6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB0ZXh0OiBsYWJlbFN0eWxlIGluc3RhbmNlb2Ygb2xzdHlsZS5UZXh0ID8gbGFiZWxTdHlsZSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdO1xuICAgICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBPbEZlYXR1cmUpIHtcbiAgICAgICAgaWYgKCFmZWF0dXJlLmdldFN0eWxlKCkpIHtcbiAgICAgICAgICBpZiAoYmFzZVN0eWxlKSB7XG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoYmFzZVN0eWxlLCBmZWF0dXJlLCByZXNvbHV0aW9uKTtcbiAgICAgICAgICAgIGlmIChsYWJlbFN0eWxlKSB7XG4gICAgICAgICAgICAgIHN0eWxlLnNldFRleHQobGFiZWxTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0eWxlID0gW1xuICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICdibGFjaydcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnI2JiYmJmMidcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXTtcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVDbHVzdGVyU3R5bGUoZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgcmVzb2x1dGlvbjogbnVtYmVyLCBjbHVzdGVyUGFyYW06IENsdXN0ZXJQYXJhbSA9IHt9LCBsYXllclN0eWxlKSB7XG4gICAgbGV0IHN0eWxlO1xuICAgIGNvbnN0IHNpemUgPSBmZWF0dXJlLmdldCgnZmVhdHVyZXMnKS5sZW5ndGg7XG4gICAgaWYgKHNpemUgIT09IDEpIHtcbiAgICAgIGlmIChjbHVzdGVyUGFyYW0uY2x1c3RlclJhbmdlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHIgb2YgY2x1c3RlclBhcmFtLmNsdXN0ZXJSYW5nZXMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoIXIubWluUmFkaXVzIHx8IHIubWluUmFkaXVzIDw9IHNpemUpICYmXG4gICAgICAgICAgICAoIXIubWF4UmFkaXVzIHx8IHIubWF4UmFkaXVzID49IHNpemUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoci5zdHlsZSkgYXMgb2xzdHlsZS5DaXJjbGU7XG5cbiAgICAgICAgICAgIGlmIChyLnNob3dSYW5nZSkge1xuICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gbmV3IG9sc3R5bGUuVGV4dCh7XG4gICAgICAgICAgICAgICAgdGV4dDogc2l6ZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0KHRleHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoci5keW5hbWljUmFkaXVzKSB7XG4gICAgICAgICAgICAgIGxldCBjbHVzdGVyUmFkaXVzOiBudW1iZXI7XG4gICAgICAgICAgICAgIGNvbnN0IHJhZGl1c01pbiA9IHN0eWxlLmdldFJhZGl1cygpO1xuICAgICAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gNSAqIE1hdGgubG9nKHNpemUpO1xuICAgICAgICAgICAgICBpZiAoY2x1c3RlclJhZGl1cyA8IHJhZGl1c01pbikge1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJSYWRpdXMgPSByYWRpdXNNaW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc3R5bGUuaW1hZ2VfLnNldFJhZGl1cyhjbHVzdGVyUmFkaXVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXN0eWxlKSB7XG4gICAgICAgIGxldCBjbHVzdGVyUmFkaXVzOiBudW1iZXI7XG4gICAgICAgIGlmIChjbHVzdGVyUGFyYW0ucmFkaXVzQ2FsYykge1xuICAgICAgICAgIGNsdXN0ZXJSYWRpdXMgPSBjbHVzdGVyUGFyYW0ucmFkaXVzQ2FsYyhzaXplKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByYWRpdXNNaW4gPSA2O1xuICAgICAgICAgIGNsdXN0ZXJSYWRpdXMgPSA1ICogTWF0aC5sb2coc2l6ZSk7XG4gICAgICAgICAgaWYgKGNsdXN0ZXJSYWRpdXMgPCByYWRpdXNNaW4pIHtcbiAgICAgICAgICAgIGNsdXN0ZXJSYWRpdXMgPSByYWRpdXNNaW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3R5bGUgPSBbXG4gICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkNpcmNsZSh7XG4gICAgICAgICAgICAgIHJhZGl1czogY2x1c3RlclJhZGl1cyxcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjQsIDEzNCwgNDUsIDAuNSknXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRleHQ6IG5ldyBvbHN0eWxlLlRleHQoe1xuICAgICAgICAgICAgICB0ZXh0OiBzaXplLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZidcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUgPSB0aGlzLmNyZWF0ZVN0eWxlKGxheWVyU3R5bGUsIGZlYXR1cmUsIHJlc29sdXRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGU7XG4gIH1cblxuICBnZXRMYWJlbChmZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcblxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLmdldCh2WzFdKSk7XG4gICAgfSk7XG5cbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5nZXQobGFiZWxNYXRjaCkgfHwgbGFiZWxNYXRjaDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIGd1ZXNzVHlwZUZlYXR1cmUoZmVhdHVyZSkge1xuICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSkge1xuICAgICAgY2FzZSAnUG9pbnQnOlxuICAgICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgICBjYXNlICdDaXJjbGUnOlxuICAgICAgICByZXR1cm4gJ2NpcmNsZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3JlZ3VsYXInO1xuICAgIH1cbiAgfVxufVxuIl19
|