@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,1009 +1,1009 @@
|
|
|
1
|
-
import { Component, Input, ChangeDetectionStrategy, ContentChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
3
|
-
import { LayerListControlsEnum, LayerListDisplacement } from './layer-list.enum';
|
|
4
|
-
import { LayerListSelectVisibleEnum } from './layer-list.enum';
|
|
5
|
-
import { BehaviorSubject, ReplaySubject, EMPTY, timer } from 'rxjs';
|
|
6
|
-
import { debounce } from 'rxjs/operators';
|
|
7
|
-
import { LinkedProperties } from '../shared/layers/layer.interface';
|
|
8
|
-
import * as olextent from 'ol/extent';
|
|
9
|
-
import { getAllChildLayersByProperty, getRootParentByProperty } from '../../map/shared/linkedLayers.utils';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
const _c0 = ["igoLayerItemToolbar"];
|
|
12
|
-
function LayerListComponent_igo_layer_list_tool_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
14
|
-
i0.ɵɵelementStart(0, "igo-layer-list-tool", 6);
|
|
15
|
-
i0.ɵɵlistener("appliedFilterAndSort", function LayerListComponent_igo_layer_list_tool_1_Template_igo_layer_list_tool_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onAppliedFilterAndSortChange($event)); })("selection", function LayerListComponent_igo_layer_list_tool_1_Template_igo_layer_list_tool_selection_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.toggleSelectionMode($event)); });
|
|
16
|
-
i0.ɵɵelementEnd();
|
|
17
|
-
} if (rf & 2) {
|
|
18
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
|
-
i0.ɵɵproperty("layersAreAllVisible", ctx_r0.layersAreAllVisible)("term", ctx_r0.layerFilterAndSortOptions.keyword)("onlyVisible", ctx_r0.layerFilterAndSortOptions.onlyVisible)("sortAlpha", ctx_r0.layerFilterAndSortOptions.sortAlpha);
|
|
20
|
-
} }
|
|
21
|
-
function LayerListComponent_mat_list_item_3_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
23
|
-
i0.ɵɵelementStart(0, "mat-list-item", 7)(1, "mat-checkbox", 8);
|
|
24
|
-
i0.ɵɵlistener("change", function LayerListComponent_mat_list_item_3_Template_mat_checkbox_change_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.selectAll()); });
|
|
25
|
-
i0.ɵɵtext(2);
|
|
26
|
-
i0.ɵɵpipe(3, "translate");
|
|
27
|
-
i0.ɵɵpipe(4, "translate");
|
|
28
|
-
i0.ɵɵelementEnd()();
|
|
29
|
-
} if (rf & 2) {
|
|
30
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
|
-
i0.ɵɵadvance(1);
|
|
32
|
-
i0.ɵɵproperty("color", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0 ? "accent" : "primary")("checked", ctx_r1.selectAllCheck)("indeterminate", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0);
|
|
33
|
-
i0.ɵɵadvance(1);
|
|
34
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectAllCheck ? i0.ɵɵpipeBind1(3, 4, "igo.geo.layer.deselectAll") : i0.ɵɵpipeBind1(4, 6, "igo.geo.layer.selectAll"), " ");
|
|
35
|
-
} }
|
|
36
|
-
function LayerListComponent_ng_template_7_igo_layer_item_0_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
const _r15 = i0.ɵɵgetCurrentView();
|
|
38
|
-
i0.ɵɵelementStart(0, "igo-layer-item", 10);
|
|
39
|
-
i0.ɵɵlistener("action", function LayerListComponent_ng_template_7_igo_layer_item_0_Template_igo_layer_item_action_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.toggleLayerTool($event)); })("checkbox", function LayerListComponent_ng_template_7_igo_layer_item_0_Template_igo_layer_item_checkbox_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.layersCheck($event)); });
|
|
40
|
-
i0.ɵɵelementEnd();
|
|
41
|
-
} if (rf & 2) {
|
|
42
|
-
const layer_r11 = i0.ɵɵnextContext().$implicit;
|
|
43
|
-
const ctx_r13 = i0.ɵɵnextContext();
|
|
44
|
-
i0.ɵɵproperty("layer", layer_r11)("activeLayer", ctx_r13.activeLayer)("orderable", ctx_r13.orderable && !layer_r11.baseLayer)("lowerDisabled", ctx_r13.getLowerLayer().id === layer_r11.id)("raiseDisabled", ctx_r13.getUpperLayer().id === layer_r11.id)("queryBadge", ctx_r13.queryBadge)("expandLegendIfVisible", ctx_r13.expandLegendOfVisibleLayers)("updateLegendOnResolutionChange", ctx_r13.updateLegendOnResolutionChange)("toggleLegendOnVisibilityChange", ctx_r13.toggleLegendOnVisibilityChange)("selectionMode", ctx_r13.selection)("selectAll", ctx_r13.selectAllCheck)("layerCheck", layer_r11.options.check)("changeDetection", ctx_r13.layerItemChangeDetection$);
|
|
45
|
-
} }
|
|
46
|
-
function LayerListComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
i0.ɵɵtemplate(0, LayerListComponent_ng_template_7_igo_layer_item_0_Template, 1, 13, "igo-layer-item", 9);
|
|
48
|
-
} if (rf & 2) {
|
|
49
|
-
const layer_r11 = ctx.$implicit;
|
|
50
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
51
|
-
i0.ɵɵproperty("ngIf", !(ctx_r3.excludeBaseLayers && layer_r11.baseLayer));
|
|
52
|
-
} }
|
|
53
|
-
function LayerListComponent_igo_panel_9_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
-
const _r22 = i0.ɵɵgetCurrentView();
|
|
55
|
-
i0.ɵɵelementStart(0, "button", 26);
|
|
56
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.removeLayers()); });
|
|
57
|
-
i0.ɵɵpipe(1, "translate");
|
|
58
|
-
i0.ɵɵelement(2, "mat-icon", 27);
|
|
59
|
-
i0.ɵɵelementEnd();
|
|
60
|
-
} if (rf & 2) {
|
|
61
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.removeLayer"));
|
|
62
|
-
} }
|
|
63
|
-
function LayerListComponent_igo_panel_9_button_19_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
-
const _r24 = i0.ɵɵgetCurrentView();
|
|
65
|
-
i0.ɵɵelementStart(0, "button", 28);
|
|
66
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_button_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.zoomLayerExtents(ctx_r23.activeLayer)); });
|
|
67
|
-
i0.ɵɵpipe(1, "translate");
|
|
68
|
-
i0.ɵɵelement(2, "mat-icon", 29);
|
|
69
|
-
i0.ɵɵelementEnd();
|
|
70
|
-
} if (rf & 2) {
|
|
71
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayer"));
|
|
72
|
-
} }
|
|
73
|
-
const _c1 = function (a0) { return { layer: a0 }; };
|
|
74
|
-
function LayerListComponent_igo_panel_9_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
-
const _r26 = i0.ɵɵgetCurrentView();
|
|
76
|
-
i0.ɵɵelementStart(0, "igo-panel", 11)(1, "div", 12);
|
|
77
|
-
i0.ɵɵtemplate(2, LayerListComponent_igo_panel_9_button_2_Template, 3, 3, "button", 13);
|
|
78
|
-
i0.ɵɵelementStart(3, "button", 14);
|
|
79
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.moveActiveLayer(ctx_r25.activeLayer, ctx_r25.layerListDisplacement.Lower, true)); });
|
|
80
|
-
i0.ɵɵpipe(4, "translate");
|
|
81
|
-
i0.ɵɵpipe(5, "translate");
|
|
82
|
-
i0.ɵɵelement(6, "mat-icon", 15);
|
|
83
|
-
i0.ɵɵelementEnd();
|
|
84
|
-
i0.ɵɵelementStart(7, "button", 16);
|
|
85
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.moveActiveLayer(ctx_r27.activeLayer, ctx_r27.layerListDisplacement.Raise, true)); });
|
|
86
|
-
i0.ɵɵpipe(8, "translate");
|
|
87
|
-
i0.ɵɵpipe(9, "translate");
|
|
88
|
-
i0.ɵɵelement(10, "mat-icon", 17);
|
|
89
|
-
i0.ɵɵelementEnd();
|
|
90
|
-
i0.ɵɵelementStart(11, "button", 18);
|
|
91
|
-
i0.ɵɵpipe(12, "translate");
|
|
92
|
-
i0.ɵɵelement(13, "mat-icon", 19);
|
|
93
|
-
i0.ɵɵelementEnd();
|
|
94
|
-
i0.ɵɵelementStart(14, "mat-menu", 20, 21)(16, "div", 22)(17, "mat-slider", 23);
|
|
95
|
-
i0.ɵɵlistener("input", function LayerListComponent_igo_panel_9_Template_mat_slider_input_17_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.changeOpacity($event)); })("click", function LayerListComponent_igo_panel_9_Template_mat_slider_click_17_listener($event) { return $event.stopPropagation(); });
|
|
96
|
-
i0.ɵɵpipe(18, "translate");
|
|
97
|
-
i0.ɵɵelementEnd()()();
|
|
98
|
-
i0.ɵɵtemplate(19, LayerListComponent_igo_panel_9_button_19_Template, 3, 3, "button", 24);
|
|
99
|
-
i0.ɵɵelementContainer(20, 25);
|
|
100
|
-
i0.ɵɵprojection(21);
|
|
101
|
-
i0.ɵɵelementEnd()();
|
|
102
|
-
} if (rf & 2) {
|
|
103
|
-
const _r19 = i0.ɵɵreference(15);
|
|
104
|
-
const ctx_r4 = i0.ɵɵnextContext();
|
|
105
|
-
i0.ɵɵproperty("title", ctx_r4.activeLayer.title);
|
|
106
|
-
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵproperty("ngIf", ctx_r4.isLayerRemovable(ctx_r4.activeLayer));
|
|
108
|
-
i0.ɵɵadvance(1);
|
|
109
|
-
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(4, 20, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(5, 22, "igo.geo.layer.lowerLayer"))("disabled", ctx_r4.lowerDisabled);
|
|
110
|
-
i0.ɵɵadvance(3);
|
|
111
|
-
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.lowerDisabled);
|
|
112
|
-
i0.ɵɵadvance(1);
|
|
113
|
-
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(8, 24, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(9, 26, "igo.geo.layer.raiseLayer"))("disabled", ctx_r4.raiseDisabled);
|
|
114
|
-
i0.ɵɵadvance(3);
|
|
115
|
-
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.raiseDisabled);
|
|
116
|
-
i0.ɵɵadvance(1);
|
|
117
|
-
i0.ɵɵproperty("matMenuTriggerFor", _r19)("matTooltip", i0.ɵɵpipeBind1(12, 28, "igo.geo.layer.opacity"));
|
|
118
|
-
i0.ɵɵadvance(2);
|
|
119
|
-
i0.ɵɵproperty("matBadge", ctx_r4.badgeOpacity);
|
|
120
|
-
i0.ɵɵadvance(4);
|
|
121
|
-
i0.ɵɵproperty("min", 0)("max", 100)("value", ctx_r4.opacity)("matTooltip", i0.ɵɵpipeBind1(18, 30, "igo.geo.layer.opacity"));
|
|
122
|
-
i0.ɵɵadvance(2);
|
|
123
|
-
i0.ɵɵproperty("ngIf", ctx_r4.activeLayerExtentIsValid(ctx_r4.activeLayer));
|
|
124
|
-
i0.ɵɵadvance(1);
|
|
125
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.templateLayerToolbar)("ngTemplateOutletContext", i0.ɵɵpureFunction1(32, _c1, ctx_r4.activeLayer));
|
|
126
|
-
} }
|
|
127
|
-
function LayerListComponent_igo_panel_10_mat_slider_25_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
const _r34 = i0.ɵɵgetCurrentView();
|
|
129
|
-
i0.ɵɵelementStart(0, "mat-slider", 38);
|
|
130
|
-
i0.ɵɵlistener("ngModelChange", function LayerListComponent_igo_panel_10_mat_slider_25_Template_mat_slider_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.checkOpacity = $event); })("click", function LayerListComponent_igo_panel_10_mat_slider_25_Template_mat_slider_click_0_listener($event) { return $event.stopPropagation(); });
|
|
131
|
-
i0.ɵɵpipe(1, "translate");
|
|
132
|
-
i0.ɵɵelementEnd();
|
|
133
|
-
} if (rf & 2) {
|
|
134
|
-
const ctx_r31 = i0.ɵɵnextContext(2);
|
|
135
|
-
i0.ɵɵproperty("min", 0)("max", 100)("ngModel", ctx_r31.checkOpacity)("matTooltip", i0.ɵɵpipeBind1(1, 4, "igo.geo.layer.opacity"));
|
|
136
|
-
} }
|
|
137
|
-
function LayerListComponent_igo_panel_10_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
-
const _r37 = i0.ɵɵgetCurrentView();
|
|
139
|
-
i0.ɵɵelementStart(0, "button", 28);
|
|
140
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_button_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.zoomLayersExtents(ctx_r36.layersChecked)); });
|
|
141
|
-
i0.ɵɵpipe(1, "translate");
|
|
142
|
-
i0.ɵɵelement(2, "mat-icon", 39);
|
|
143
|
-
i0.ɵɵelementEnd();
|
|
144
|
-
} if (rf & 2) {
|
|
145
|
-
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayers"));
|
|
146
|
-
} }
|
|
147
|
-
function LayerListComponent_igo_panel_10_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
-
const _r39 = i0.ɵɵgetCurrentView();
|
|
149
|
-
i0.ɵɵelementStart(0, "igo-panel", 11);
|
|
150
|
-
i0.ɵɵpipe(1, "translate");
|
|
151
|
-
i0.ɵɵelementStart(2, "div", 30)(3, "button", 31);
|
|
152
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.removeLayers(ctx_r38.layersChecked)); });
|
|
153
|
-
i0.ɵɵpipe(4, "translate");
|
|
154
|
-
i0.ɵɵpipe(5, "translate");
|
|
155
|
-
i0.ɵɵelement(6, "mat-icon", 32);
|
|
156
|
-
i0.ɵɵelementEnd();
|
|
157
|
-
i0.ɵɵelementStart(7, "button", 33);
|
|
158
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r39); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.toggleVisibility(ctx_r40.layersChecked)); });
|
|
159
|
-
i0.ɵɵpipe(8, "translate");
|
|
160
|
-
i0.ɵɵpipe(9, "translate");
|
|
161
|
-
i0.ɵɵelement(10, "mat-icon", 34);
|
|
162
|
-
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(11, "button", 14);
|
|
164
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r39); const ctx_r41 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r41.lowerLayers(ctx_r41.layersChecked)); });
|
|
165
|
-
i0.ɵɵpipe(12, "translate");
|
|
166
|
-
i0.ɵɵpipe(13, "translate");
|
|
167
|
-
i0.ɵɵelement(14, "mat-icon", 15);
|
|
168
|
-
i0.ɵɵelementEnd();
|
|
169
|
-
i0.ɵɵelementStart(15, "button", 16);
|
|
170
|
-
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r39); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.raiseLayers(ctx_r42.layersChecked)); });
|
|
171
|
-
i0.ɵɵpipe(16, "translate");
|
|
172
|
-
i0.ɵɵpipe(17, "translate");
|
|
173
|
-
i0.ɵɵelement(18, "mat-icon", 17);
|
|
174
|
-
i0.ɵɵelementEnd();
|
|
175
|
-
i0.ɵɵelementStart(19, "button", 35);
|
|
176
|
-
i0.ɵɵpipe(20, "translate");
|
|
177
|
-
i0.ɵɵelement(21, "mat-icon", 36);
|
|
178
|
-
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(22, "mat-menu", 20, 21)(24, "div", 22);
|
|
180
|
-
i0.ɵɵtemplate(25, LayerListComponent_igo_panel_10_mat_slider_25_Template, 2, 6, "mat-slider", 37);
|
|
181
|
-
i0.ɵɵelementEnd()();
|
|
182
|
-
i0.ɵɵtemplate(26, LayerListComponent_igo_panel_10_button_26_Template, 3, 3, "button", 24);
|
|
183
|
-
i0.ɵɵelementEnd()();
|
|
184
|
-
} if (rf & 2) {
|
|
185
|
-
const _r30 = i0.ɵɵreference(23);
|
|
186
|
-
const ctx_r5 = i0.ɵɵnextContext();
|
|
187
|
-
i0.ɵɵproperty("title", i0.ɵɵpipeBind1(1, 21, "igo.geo.layer.tools"));
|
|
188
|
-
i0.ɵɵadvance(3);
|
|
189
|
-
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked) ? i0.ɵɵpipeBind1(4, 23, "igo.geo.layer.removeSelectedLayers") : i0.ɵɵpipeBind1(5, 25, "igo.geo.layer.removeSelectedLayersRestriction"));
|
|
190
|
-
i0.ɵɵadvance(3);
|
|
191
|
-
i0.ɵɵproperty("matBadge", "!")("matBadgeHidden", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked));
|
|
192
|
-
i0.ɵɵadvance(1);
|
|
193
|
-
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? i0.ɵɵpipeBind1(8, 27, "igo.geo.layer.showSelectedLayers") : i0.ɵɵpipeBind1(9, 29, "igo.geo.layer.hideSelectedLayers"));
|
|
194
|
-
i0.ɵɵadvance(3);
|
|
195
|
-
i0.ɵɵproperty("svgIcon", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? "eye-off" : "eye");
|
|
196
|
-
i0.ɵɵadvance(1);
|
|
197
|
-
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(12, 31, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(13, 33, "igo.geo.layer.lowerLayer"))("disabled", ctx_r5.lowerDisabledSelection);
|
|
198
|
-
i0.ɵɵadvance(3);
|
|
199
|
-
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.lowerDisabledSelection);
|
|
200
|
-
i0.ɵɵadvance(1);
|
|
201
|
-
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(16, 35, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(17, 37, "igo.geo.layer.raiseLayer"))("disabled", ctx_r5.raiseDisabledSelection);
|
|
202
|
-
i0.ɵɵadvance(3);
|
|
203
|
-
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.raiseDisabledSelection);
|
|
204
|
-
i0.ɵɵadvance(1);
|
|
205
|
-
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matMenuTriggerFor", _r30)("matTooltip", i0.ɵɵpipeBind1(20, 39, "igo.geo.layer.opacity"));
|
|
206
|
-
i0.ɵɵadvance(6);
|
|
207
|
-
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length);
|
|
208
|
-
i0.ɵɵadvance(1);
|
|
209
|
-
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length !== 0 && ctx_r5.activeLayersExtentAreValid(ctx_r5.layersChecked));
|
|
210
|
-
} }
|
|
211
|
-
const _c2 = [[["", "igoLayerItemToolbar", ""]]];
|
|
212
|
-
const _c3 = function (a0, a1, a2) { return { "igo-list-tools-multi": a0, "igo-list-tools-single": a1, "igo-list-no-tools": a2 }; };
|
|
213
|
-
const _c4 = ["[igoLayerItemToolbar]"];
|
|
214
|
-
// TODO: This class could use a clean up. Also, some methods could be moved ealsewhere
|
|
215
|
-
export class LayerListComponent {
|
|
216
|
-
constructor(elRef) {
|
|
217
|
-
this.elRef = elRef;
|
|
218
|
-
this.orderable = true;
|
|
219
|
-
this.thresholdToFilterAndSort = 5;
|
|
220
|
-
this.layers$ = new BehaviorSubject([]);
|
|
221
|
-
this.change$ = new ReplaySubject(1);
|
|
222
|
-
this.showToolbar$ = new BehaviorSubject(false);
|
|
223
|
-
this.hideSelectedLayers = true;
|
|
224
|
-
this.activeLayer$ = new BehaviorSubject(undefined);
|
|
225
|
-
this.layersChecked = [];
|
|
226
|
-
this.layerItemChangeDetection$ = new BehaviorSubject(undefined);
|
|
227
|
-
this.layersAreAllVisible = true;
|
|
228
|
-
this.ogcButton = true;
|
|
229
|
-
this.timeButton = true;
|
|
230
|
-
this.floatLabel = 'auto';
|
|
231
|
-
this.layerFilterAndSortOptions = {};
|
|
232
|
-
this.excludeBaseLayers = false;
|
|
233
|
-
this.toggleLegendOnVisibilityChange = false;
|
|
234
|
-
this.expandLegendOfVisibleLayers = false;
|
|
235
|
-
this.updateLegendOnResolutionChange = false;
|
|
236
|
-
this.queryBadge = false;
|
|
237
|
-
this.appliedFilterAndSort = new EventEmitter();
|
|
238
|
-
this._keyword = undefined;
|
|
239
|
-
this._onlyVisible = false;
|
|
240
|
-
this._sortedAlpha = false;
|
|
241
|
-
this.toggleOpacity = false;
|
|
242
|
-
this.selectAllCheck$ = new BehaviorSubject(undefined);
|
|
243
|
-
}
|
|
244
|
-
get map() {
|
|
245
|
-
return this._map;
|
|
246
|
-
}
|
|
247
|
-
set map(value) {
|
|
248
|
-
this._map = value;
|
|
249
|
-
}
|
|
250
|
-
set layers(value) {
|
|
251
|
-
this._layers = this.removeProblemLayerInList(value);
|
|
252
|
-
this.next();
|
|
253
|
-
}
|
|
254
|
-
get layers() {
|
|
255
|
-
return this._layers;
|
|
256
|
-
}
|
|
257
|
-
set activeLayer(value) {
|
|
258
|
-
this._activeLayer = value;
|
|
259
|
-
this.activeLayer$.next(value);
|
|
260
|
-
}
|
|
261
|
-
get activeLayer() {
|
|
262
|
-
return this._activeLayer;
|
|
263
|
-
}
|
|
264
|
-
get keyword() {
|
|
265
|
-
return this._keyword;
|
|
266
|
-
}
|
|
267
|
-
set keyword(value) {
|
|
268
|
-
this._keyword = value;
|
|
269
|
-
this.next();
|
|
270
|
-
}
|
|
271
|
-
get onlyVisible() {
|
|
272
|
-
return this._onlyVisible;
|
|
273
|
-
}
|
|
274
|
-
set onlyVisible(value) {
|
|
275
|
-
this._onlyVisible = value;
|
|
276
|
-
this.next();
|
|
277
|
-
}
|
|
278
|
-
get sortAlpha() {
|
|
279
|
-
return this._sortedAlpha;
|
|
280
|
-
}
|
|
281
|
-
set sortAlpha(value) {
|
|
282
|
-
this._sortedAlpha = value;
|
|
283
|
-
this.next();
|
|
284
|
-
}
|
|
285
|
-
get opacity() {
|
|
286
|
-
return Math.round(this.activeLayer$.getValue().opacity * 100);
|
|
287
|
-
}
|
|
288
|
-
set opacity(opacity) {
|
|
289
|
-
this.activeLayer$.getValue().opacity = opacity / 100;
|
|
290
|
-
}
|
|
291
|
-
get badgeOpacity() {
|
|
292
|
-
if (this.opacity === 100) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
return this.opacity;
|
|
296
|
-
}
|
|
297
|
-
get raiseDisabled() {
|
|
298
|
-
if (!this.orderable ||
|
|
299
|
-
this.activeLayer.baseLayer ||
|
|
300
|
-
this.getUpperLayer().id === this.activeLayer.id ||
|
|
301
|
-
this.isUpperBaselayer(this.activeLayer)) {
|
|
302
|
-
return true;
|
|
303
|
-
}
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
get lowerDisabled() {
|
|
307
|
-
if (!this.orderable ||
|
|
308
|
-
this.activeLayer.baseLayer ||
|
|
309
|
-
this.getLowerLayer().id === this.activeLayer.id ||
|
|
310
|
-
this.isLowerBaselayer(this.activeLayer)) {
|
|
311
|
-
return true;
|
|
312
|
-
}
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
get raiseDisabledSelection() {
|
|
316
|
-
if (this.layersChecked.length === 0 ||
|
|
317
|
-
!this.orderable ||
|
|
318
|
-
!this.raisableLayers(this.layersChecked) ||
|
|
319
|
-
this.selectAllCheck === true) {
|
|
320
|
-
return true;
|
|
321
|
-
}
|
|
322
|
-
return false;
|
|
323
|
-
}
|
|
324
|
-
get lowerDisabledSelection() {
|
|
325
|
-
if (this.layersChecked.length === 0 ||
|
|
326
|
-
!this.orderable ||
|
|
327
|
-
!this.lowerableLayers(this.layersChecked) ||
|
|
328
|
-
this.selectAllCheck === true) {
|
|
329
|
-
return true;
|
|
330
|
-
}
|
|
331
|
-
return false;
|
|
332
|
-
}
|
|
333
|
-
get checkOpacity() {
|
|
334
|
-
return this.layersCheckedOpacity() * 100;
|
|
335
|
-
}
|
|
336
|
-
set checkOpacity(opacity) {
|
|
337
|
-
for (const layer of this.layersChecked) {
|
|
338
|
-
layer.opacity = opacity / 100;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
get layerListDisplacement() {
|
|
342
|
-
return LayerListDisplacement;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
* Subscribe to the search term stream and trigger researches
|
|
346
|
-
* @internal
|
|
347
|
-
*/
|
|
348
|
-
ngOnInit() {
|
|
349
|
-
this.change$$ = this.change$
|
|
350
|
-
.pipe(debounce(() => {
|
|
351
|
-
return this.layers.length === 0 ? EMPTY : timer(50);
|
|
352
|
-
}))
|
|
353
|
-
.subscribe(() => {
|
|
354
|
-
this.showToolbar$.next(this.computeShowToolbar());
|
|
355
|
-
this.layers$.next(this.computeLayers(this.layers.slice(0)));
|
|
356
|
-
this.appliedFilterAndSort.emit({
|
|
357
|
-
keyword: this.keyword,
|
|
358
|
-
sortAlpha: this.sortAlpha,
|
|
359
|
-
onlyVisible: this.onlyVisible
|
|
360
|
-
});
|
|
361
|
-
});
|
|
362
|
-
this.selectAllCheck$$ = this.selectAllCheck$.subscribe((value) => {
|
|
363
|
-
this.selectAllCheck = value;
|
|
364
|
-
});
|
|
365
|
-
this.layers$$ = this.layers$.subscribe(() => {
|
|
366
|
-
if (this.layers) {
|
|
367
|
-
let checks = 0;
|
|
368
|
-
for (const layer of this.layers) {
|
|
369
|
-
layer.status$.subscribe(valStatus => {
|
|
370
|
-
if (valStatus === 0) {
|
|
371
|
-
this.map.removeLayer(layer);
|
|
372
|
-
}
|
|
373
|
-
});
|
|
374
|
-
if (layer.options.active) {
|
|
375
|
-
this.activeLayer = layer;
|
|
376
|
-
this.layerTool = true;
|
|
377
|
-
}
|
|
378
|
-
if (layer.options.check) {
|
|
379
|
-
checks += 1;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
if (this.excludeBaseLayers) {
|
|
383
|
-
this.selectAllCheck =
|
|
384
|
-
checks ===
|
|
385
|
-
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length
|
|
386
|
-
? true
|
|
387
|
-
: false;
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
this.selectAllCheck =
|
|
391
|
-
checks === this.layers.filter((lay) => lay.showInLayerList).length
|
|
392
|
-
? true
|
|
393
|
-
: false;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
});
|
|
397
|
-
}
|
|
398
|
-
ngOnDestroy() {
|
|
399
|
-
this.change$$.unsubscribe();
|
|
400
|
-
this.selectAllCheck$$.unsubscribe();
|
|
401
|
-
this.layers$$.unsubscribe();
|
|
402
|
-
}
|
|
403
|
-
activeLayerExtentIsValid(layer) {
|
|
404
|
-
let valid = false;
|
|
405
|
-
if (layer.options.showButtonZoomToExtent === false) {
|
|
406
|
-
return false;
|
|
407
|
-
}
|
|
408
|
-
const layerExtent = layer.options.extent;
|
|
409
|
-
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
410
|
-
if (layerExtent) {
|
|
411
|
-
if (maxLayerZoomExtent) {
|
|
412
|
-
valid = olextent.containsExtent(maxLayerZoomExtent, layerExtent);
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
valid = true;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
return valid;
|
|
419
|
-
}
|
|
420
|
-
activeLayersExtentAreValid(layers) {
|
|
421
|
-
let valid = false;
|
|
422
|
-
const layersExtent = olextent.createEmpty();
|
|
423
|
-
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
424
|
-
for (const layer of layers) {
|
|
425
|
-
const layerExtent = layer.options.extent;
|
|
426
|
-
if (layerExtent && !layerExtent.includes(Infinity)) {
|
|
427
|
-
olextent.extend(layersExtent, layerExtent);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
if (!olextent.isEmpty(layersExtent)) {
|
|
431
|
-
if (maxLayerZoomExtent) {
|
|
432
|
-
valid = (olextent.containsExtent(maxLayerZoomExtent, layersExtent));
|
|
433
|
-
}
|
|
434
|
-
else {
|
|
435
|
-
valid = true;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
return valid;
|
|
439
|
-
}
|
|
440
|
-
zoomLayerExtents(layer) {
|
|
441
|
-
this.map.viewController.zoomToExtent(layer.options.extent);
|
|
442
|
-
}
|
|
443
|
-
zoomLayersExtents(layers) {
|
|
444
|
-
const layersExtent = olextent.createEmpty();
|
|
445
|
-
for (const layer of layers) {
|
|
446
|
-
const layerExtent = layer.options.extent;
|
|
447
|
-
if (layerExtent) {
|
|
448
|
-
olextent.extend(layersExtent, layerExtent);
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
this.map.viewController.zoomToExtent(layersExtent);
|
|
452
|
-
}
|
|
453
|
-
changeOpacity(event) {
|
|
454
|
-
this.opacity = event.value;
|
|
455
|
-
}
|
|
456
|
-
clearKeyword() {
|
|
457
|
-
this.keyword = undefined;
|
|
458
|
-
}
|
|
459
|
-
getLowerLayer() {
|
|
460
|
-
return this.layers
|
|
461
|
-
.filter((l) => !l.baseLayer)
|
|
462
|
-
.reduce((prev, current) => {
|
|
463
|
-
return prev.zIndex < current.zIndex ? prev : current;
|
|
464
|
-
}, { zIndex: undefined, id: undefined });
|
|
465
|
-
}
|
|
466
|
-
isLowerBaselayer(layer) {
|
|
467
|
-
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
468
|
-
if (this.layers &&
|
|
469
|
-
this.layers[index + 1] &&
|
|
470
|
-
this.layers[index + 1].baseLayer === true) {
|
|
471
|
-
return true;
|
|
472
|
-
}
|
|
473
|
-
return false;
|
|
474
|
-
}
|
|
475
|
-
getUpperLayer() {
|
|
476
|
-
return this.layers
|
|
477
|
-
.filter((l) => !l.baseLayer)
|
|
478
|
-
.reduce((prev, current) => {
|
|
479
|
-
return prev.zIndex > current.zIndex ? prev : current;
|
|
480
|
-
}, { zIndex: undefined, id: undefined });
|
|
481
|
-
}
|
|
482
|
-
isUpperBaselayer(layer) {
|
|
483
|
-
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
484
|
-
if (this.layers &&
|
|
485
|
-
this.layers[index - 1] &&
|
|
486
|
-
this.layers[index - 1].baseLayer === true) {
|
|
487
|
-
return true;
|
|
488
|
-
}
|
|
489
|
-
return false;
|
|
490
|
-
}
|
|
491
|
-
moveActiveLayer(activeLayer, actiontype, fromUi = false) {
|
|
492
|
-
const sortedLayersToMove = [];
|
|
493
|
-
getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
494
|
-
let rootParentByProperty = getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
495
|
-
if (!rootParentByProperty) {
|
|
496
|
-
rootParentByProperty = activeLayer;
|
|
497
|
-
}
|
|
498
|
-
const layersToMove = [rootParentByProperty];
|
|
499
|
-
getAllChildLayersByProperty(this.map, rootParentByProperty, layersToMove, LinkedProperties.ZINDEX);
|
|
500
|
-
this.layers.map(layer => {
|
|
501
|
-
if (layersToMove.indexOf(layer) !== -1) {
|
|
502
|
-
sortedLayersToMove.push(layer);
|
|
503
|
-
}
|
|
504
|
-
});
|
|
505
|
-
if (actiontype === LayerListDisplacement.Raise) {
|
|
506
|
-
this.raiseLayers(sortedLayersToMove, fromUi);
|
|
507
|
-
}
|
|
508
|
-
else if (actiontype === LayerListDisplacement.Lower) {
|
|
509
|
-
this.lowerLayers(sortedLayersToMove, fromUi);
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
/*
|
|
513
|
-
* For selection mode disabled attribute
|
|
514
|
-
*/
|
|
515
|
-
raisableLayers(layers) {
|
|
516
|
-
let response = false;
|
|
517
|
-
let base = 0;
|
|
518
|
-
for (const layer of layers) {
|
|
519
|
-
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
520
|
-
const currentLayer = this.layers[mapIndex];
|
|
521
|
-
if (currentLayer.baseLayer) {
|
|
522
|
-
base += 1;
|
|
523
|
-
}
|
|
524
|
-
const previousLayer = this.layers[mapIndex - 1];
|
|
525
|
-
if (previousLayer &&
|
|
526
|
-
previousLayer.baseLayer !== true &&
|
|
527
|
-
!layers.find((lay) => previousLayer.id === lay.id) &&
|
|
528
|
-
currentLayer.baseLayer !== true) {
|
|
529
|
-
response = true;
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
533
|
-
base === this.layersChecked.length) {
|
|
534
|
-
response = false;
|
|
535
|
-
}
|
|
536
|
-
return response;
|
|
537
|
-
}
|
|
538
|
-
/*
|
|
539
|
-
* When multiple layers is selected but some may be allow to move
|
|
540
|
-
*/
|
|
541
|
-
raisableLayer(index) {
|
|
542
|
-
if (index < 1) {
|
|
543
|
-
return false;
|
|
544
|
-
}
|
|
545
|
-
if (this.layers[index - 1].options.check) {
|
|
546
|
-
return this.raisableLayer(index - 1);
|
|
547
|
-
}
|
|
548
|
-
return true;
|
|
549
|
-
}
|
|
550
|
-
raiseLayers(layers, fromUi = true) {
|
|
551
|
-
const layersToRaise = [];
|
|
552
|
-
for (const layer of layers) {
|
|
553
|
-
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
554
|
-
if (this.raisableLayer(index)) {
|
|
555
|
-
layersToRaise.push(layer);
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
this.map.raiseLayers(layersToRaise);
|
|
559
|
-
if (fromUi) {
|
|
560
|
-
setTimeout(() => {
|
|
561
|
-
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
562
|
-
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
563
|
-
let targetToScroll;
|
|
564
|
-
if (checkItems.length) {
|
|
565
|
-
targetToScroll = checkItems[0];
|
|
566
|
-
}
|
|
567
|
-
if (itemFocused.length) {
|
|
568
|
-
targetToScroll = itemFocused[0];
|
|
569
|
-
}
|
|
570
|
-
if (targetToScroll) {
|
|
571
|
-
scrollIntoView(targetToScroll, {
|
|
572
|
-
scrollMode: 'if-needed',
|
|
573
|
-
behavior: 'smooth',
|
|
574
|
-
block: 'end',
|
|
575
|
-
inline: 'nearest'
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
}, 100);
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
/*
|
|
582
|
-
* For selection mode disabled attribute
|
|
583
|
-
*/
|
|
584
|
-
lowerableLayers(layers) {
|
|
585
|
-
let response = false;
|
|
586
|
-
let base = 0;
|
|
587
|
-
for (const layer of layers) {
|
|
588
|
-
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
589
|
-
const currentLayer = this.layers[mapIndex];
|
|
590
|
-
if (currentLayer.baseLayer) {
|
|
591
|
-
base += 1;
|
|
592
|
-
}
|
|
593
|
-
const nextLayer = this.layers[mapIndex + 1];
|
|
594
|
-
if (nextLayer &&
|
|
595
|
-
nextLayer.baseLayer !== true &&
|
|
596
|
-
!layers.find((lay) => nextLayer.id === lay.id)) {
|
|
597
|
-
response = true;
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
601
|
-
base === this.layersChecked.length) {
|
|
602
|
-
response = false;
|
|
603
|
-
}
|
|
604
|
-
return response;
|
|
605
|
-
}
|
|
606
|
-
/*
|
|
607
|
-
* When multiple layers is selected but some may be allow to move
|
|
608
|
-
*/
|
|
609
|
-
lowerableLayer(index) {
|
|
610
|
-
if (index >
|
|
611
|
-
this.layers.filter((lay) => lay.baseLayer !== true).length - 2) {
|
|
612
|
-
return false;
|
|
613
|
-
}
|
|
614
|
-
if (this.layers[index + 1].options.check) {
|
|
615
|
-
return this.lowerableLayer(index + 1);
|
|
616
|
-
}
|
|
617
|
-
return true;
|
|
618
|
-
}
|
|
619
|
-
lowerLayers(layers, fromUi = true) {
|
|
620
|
-
const layersToLower = [];
|
|
621
|
-
for (const layer of layers) {
|
|
622
|
-
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
623
|
-
if (this.lowerableLayer(index)) {
|
|
624
|
-
layersToLower.push(layer);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
this.map.lowerLayers(layersToLower);
|
|
628
|
-
if (fromUi) {
|
|
629
|
-
setTimeout(() => {
|
|
630
|
-
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
631
|
-
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
632
|
-
let targetToScroll;
|
|
633
|
-
if (checkItems.length) {
|
|
634
|
-
targetToScroll = checkItems[checkItems.length - 1];
|
|
635
|
-
}
|
|
636
|
-
if (itemFocused.length) {
|
|
637
|
-
targetToScroll = itemFocused[0];
|
|
638
|
-
}
|
|
639
|
-
if (targetToScroll) {
|
|
640
|
-
scrollIntoView(targetToScroll, {
|
|
641
|
-
scrollMode: 'if-needed',
|
|
642
|
-
behavior: 'smooth',
|
|
643
|
-
block: 'end',
|
|
644
|
-
inline: 'nearest'
|
|
645
|
-
});
|
|
646
|
-
}
|
|
647
|
-
}, 100);
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
next() {
|
|
651
|
-
this.change$.next();
|
|
652
|
-
}
|
|
653
|
-
computeLayers(layers) {
|
|
654
|
-
let layersOut = this.filterLayers(layers);
|
|
655
|
-
if (this.sortAlpha) {
|
|
656
|
-
layersOut = this.sortLayersByTitle(layersOut);
|
|
657
|
-
}
|
|
658
|
-
else {
|
|
659
|
-
layersOut = this.sortLayersByZindex(layersOut);
|
|
660
|
-
}
|
|
661
|
-
return layersOut;
|
|
662
|
-
}
|
|
663
|
-
onKeywordChange(term) {
|
|
664
|
-
this.keyword = term;
|
|
665
|
-
}
|
|
666
|
-
onAppliedFilterAndSortChange(appliedFilter) {
|
|
667
|
-
this.keyword = appliedFilter.keyword;
|
|
668
|
-
this.onlyVisible = appliedFilter.onlyVisible;
|
|
669
|
-
this.sortAlpha = appliedFilter.sortAlpha;
|
|
670
|
-
}
|
|
671
|
-
filterLayers(layers) {
|
|
672
|
-
if (this.layerFilterAndSortOptions.showToolbar === LayerListControlsEnum.never) {
|
|
673
|
-
return layers;
|
|
674
|
-
}
|
|
675
|
-
if (!this.keyword && !this.onlyVisible) {
|
|
676
|
-
return layers;
|
|
677
|
-
}
|
|
678
|
-
const keepLayerIds = layers.map((layer) => layer.id);
|
|
679
|
-
layers.forEach((layer) => {
|
|
680
|
-
const layerOptions = layer.options || {};
|
|
681
|
-
const dataSourceOptions = layer.dataSource.options || {};
|
|
682
|
-
const metadata = layerOptions.metadata || {};
|
|
683
|
-
const keywords = metadata.keywordList || [];
|
|
684
|
-
const layerKeywords = keywords.map((kw) => {
|
|
685
|
-
return kw.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
686
|
-
});
|
|
687
|
-
if (this.keyword && layer.title) {
|
|
688
|
-
const localKeyword = this.keyword
|
|
689
|
-
.normalize('NFD')
|
|
690
|
-
.replace(/[\u0300-\u036f]/g, '');
|
|
691
|
-
const layerTitle = layer.title
|
|
692
|
-
.normalize('NFD')
|
|
693
|
-
.replace(/[\u0300-\u036f]/g, '');
|
|
694
|
-
const dataSourceType = dataSourceOptions.type || '';
|
|
695
|
-
const keywordRegex = new RegExp(localKeyword, 'gi');
|
|
696
|
-
const keywordInList = layerKeywords.find((kw) => keywordRegex.test(kw)) !==
|
|
697
|
-
undefined;
|
|
698
|
-
if (!keywordRegex.test(layerTitle) &&
|
|
699
|
-
!(this.keyword.toLowerCase() === dataSourceType.toLowerCase()) &&
|
|
700
|
-
!keywordInList) {
|
|
701
|
-
const index = keepLayerIds.indexOf(layer.id);
|
|
702
|
-
if (index > -1) {
|
|
703
|
-
keepLayerIds.splice(index, 1);
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
if (this.onlyVisible && layer.visible === false) {
|
|
708
|
-
const index = keepLayerIds.indexOf(layer.id);
|
|
709
|
-
if (index > -1) {
|
|
710
|
-
keepLayerIds.splice(index, 1);
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
});
|
|
714
|
-
return layers.filter((layer) => keepLayerIds.indexOf(layer.id) !== -1);
|
|
715
|
-
}
|
|
716
|
-
sortLayersByZindex(layers) {
|
|
717
|
-
return layers.sort((layer1, layer2) => layer2.zIndex - layer1.zIndex);
|
|
718
|
-
}
|
|
719
|
-
sortLayersByTitle(layers) {
|
|
720
|
-
return layers.sort((a, b) => {
|
|
721
|
-
if (this.normalize(a.title) < this.normalize(b.title)) {
|
|
722
|
-
return -1;
|
|
723
|
-
}
|
|
724
|
-
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
725
|
-
return 1;
|
|
726
|
-
}
|
|
727
|
-
return 0;
|
|
728
|
-
});
|
|
729
|
-
}
|
|
730
|
-
normalize(str) {
|
|
731
|
-
return str
|
|
732
|
-
.normalize('NFD')
|
|
733
|
-
.replace(/[\u0300-\u036f]/g, '')
|
|
734
|
-
.toLowerCase();
|
|
735
|
-
}
|
|
736
|
-
computeShowToolbar() {
|
|
737
|
-
switch (this.layerFilterAndSortOptions.showToolbar) {
|
|
738
|
-
case LayerListControlsEnum.always:
|
|
739
|
-
return true;
|
|
740
|
-
case LayerListControlsEnum.never:
|
|
741
|
-
return false;
|
|
742
|
-
default:
|
|
743
|
-
if (this.layers.length >= this.thresholdToFilterAndSort ||
|
|
744
|
-
this.keyword ||
|
|
745
|
-
this.onlyVisible) {
|
|
746
|
-
return true;
|
|
747
|
-
}
|
|
748
|
-
return false;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
toggleLayerTool(layer) {
|
|
752
|
-
this.toggleOpacity = false;
|
|
753
|
-
if (this.layerTool && layer === this.activeLayer) {
|
|
754
|
-
this.layerTool = false;
|
|
755
|
-
}
|
|
756
|
-
else {
|
|
757
|
-
this.layerTool = true;
|
|
758
|
-
}
|
|
759
|
-
for (const lay of this.layers) {
|
|
760
|
-
lay.options.active = false;
|
|
761
|
-
}
|
|
762
|
-
layer.options.active = true;
|
|
763
|
-
this.activeLayer = layer;
|
|
764
|
-
}
|
|
765
|
-
removeLayers(layers) {
|
|
766
|
-
if (layers && layers.length > 0) {
|
|
767
|
-
this.layersChecked = [];
|
|
768
|
-
for (const layer of layers) {
|
|
769
|
-
if (layer.options.removable !== false) {
|
|
770
|
-
layer.map.removeLayer(layer);
|
|
771
|
-
}
|
|
772
|
-
else {
|
|
773
|
-
this.layersChecked.push(layer);
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
else if (!layers && this.activeLayer.options.removable !== false) {
|
|
778
|
-
this.activeLayer.map.removeLayer(this.activeLayer);
|
|
779
|
-
this.layerTool = false;
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
toggleVisibility(layers) {
|
|
783
|
-
if (layers && layers.length > 0) {
|
|
784
|
-
for (const layer of layers) {
|
|
785
|
-
layer.visible = this.hideSelectedLayers;
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
this.layerItemChangeDetection$.next(true);
|
|
789
|
-
}
|
|
790
|
-
isLayerRemovable(layer) {
|
|
791
|
-
return layer.options.removable !== false;
|
|
792
|
-
}
|
|
793
|
-
isAllLayersRemovable(layers) {
|
|
794
|
-
return layers.every(l => this.isLayerRemovable(l));
|
|
795
|
-
}
|
|
796
|
-
get statusSelectedLayersCheck() {
|
|
797
|
-
let statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
798
|
-
let findTrue = false;
|
|
799
|
-
let findFalse = false;
|
|
800
|
-
if (this.layersChecked.length === 0) {
|
|
801
|
-
statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
802
|
-
}
|
|
803
|
-
else {
|
|
804
|
-
statusSelectedLayers = LayerListSelectVisibleEnum.MIXED;
|
|
805
|
-
this.hideSelectedLayers = false;
|
|
806
|
-
for (const layer2 of this.layersChecked) {
|
|
807
|
-
if (layer2.visible === true) {
|
|
808
|
-
findTrue = true;
|
|
809
|
-
}
|
|
810
|
-
if (layer2.visible === false) {
|
|
811
|
-
findFalse = true;
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
if (findTrue === true && findFalse === false) {
|
|
815
|
-
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_VISIBLE;
|
|
816
|
-
}
|
|
817
|
-
if (findTrue === false && findFalse === true) {
|
|
818
|
-
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_HIDDEN;
|
|
819
|
-
this.hideSelectedLayers = true;
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
return statusSelectedLayers;
|
|
823
|
-
}
|
|
824
|
-
layersCheck(event) {
|
|
825
|
-
event.layer.options.check = event.check;
|
|
826
|
-
if (event.check === true) {
|
|
827
|
-
const eventMapIndex = this.layers.findIndex((layer) => event.layer.id === layer.id);
|
|
828
|
-
for (const layer of this.layersChecked) {
|
|
829
|
-
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
830
|
-
if (eventMapIndex < mapIndex) {
|
|
831
|
-
this.layersChecked.splice(this.layersChecked.findIndex((lay) => layer.id === lay.id), 0, event.layer);
|
|
832
|
-
if (this.excludeBaseLayers) {
|
|
833
|
-
if (this.layersChecked.length ===
|
|
834
|
-
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
835
|
-
this.selectAllCheck = true;
|
|
836
|
-
}
|
|
837
|
-
else {
|
|
838
|
-
this.selectAllCheck = false;
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
else if (!this.excludeBaseLayers) {
|
|
842
|
-
if (this.layersChecked.length ===
|
|
843
|
-
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
844
|
-
this.selectAllCheck = true;
|
|
845
|
-
}
|
|
846
|
-
else {
|
|
847
|
-
this.selectAllCheck = false;
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
return;
|
|
851
|
-
}
|
|
852
|
-
}
|
|
853
|
-
this.layersChecked.push(event.layer);
|
|
854
|
-
}
|
|
855
|
-
else {
|
|
856
|
-
const index = this.layersChecked.findIndex((layer) => event.layer.id === layer.id);
|
|
857
|
-
this.layersChecked.splice(index, 1);
|
|
858
|
-
}
|
|
859
|
-
if (this.excludeBaseLayers) {
|
|
860
|
-
if (this.layersChecked.length ===
|
|
861
|
-
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
862
|
-
this.selectAllCheck = true;
|
|
863
|
-
}
|
|
864
|
-
else {
|
|
865
|
-
this.selectAllCheck = false;
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
else if (!this.excludeBaseLayers) {
|
|
869
|
-
if (this.layersChecked.length ===
|
|
870
|
-
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
871
|
-
this.selectAllCheck = true;
|
|
872
|
-
}
|
|
873
|
-
else {
|
|
874
|
-
this.selectAllCheck = false;
|
|
875
|
-
}
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
toggleSelectionMode(value) {
|
|
879
|
-
this.selection = value;
|
|
880
|
-
this.activeLayer = undefined;
|
|
881
|
-
if (value === true) {
|
|
882
|
-
this.layerTool = false;
|
|
883
|
-
for (const layer of this.layers) {
|
|
884
|
-
if (layer.options.check) {
|
|
885
|
-
this.layersChecked.push(layer);
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
layersCheckedOpacity() {
|
|
891
|
-
if (this.layersChecked.length > 1) {
|
|
892
|
-
return 1;
|
|
893
|
-
}
|
|
894
|
-
else {
|
|
895
|
-
const opacity = [];
|
|
896
|
-
for (const layer of this.layersChecked) {
|
|
897
|
-
opacity.push(layer.opacity);
|
|
898
|
-
}
|
|
899
|
-
return opacity;
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
selectAll() {
|
|
903
|
-
if (!this.selectAllCheck) {
|
|
904
|
-
for (const layer of this.layers) {
|
|
905
|
-
if (this.excludeBaseLayers &&
|
|
906
|
-
layer.baseLayer !== true &&
|
|
907
|
-
layer.showInLayerList) {
|
|
908
|
-
layer.options.check = true;
|
|
909
|
-
this.layersChecked.push(layer);
|
|
910
|
-
}
|
|
911
|
-
else if (!this.excludeBaseLayers && layer.showInLayerList) {
|
|
912
|
-
layer.options.check = true;
|
|
913
|
-
this.layersChecked.push(layer);
|
|
914
|
-
}
|
|
915
|
-
}
|
|
916
|
-
this.selectAllCheck$.next(true);
|
|
917
|
-
}
|
|
918
|
-
else {
|
|
919
|
-
for (const layer of this.layers) {
|
|
920
|
-
layer.options.check = false;
|
|
921
|
-
}
|
|
922
|
-
this.layersChecked = [];
|
|
923
|
-
this.selectAllCheck$.next(false);
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
|
-
isScrolledIntoView(elemSource, elem) {
|
|
927
|
-
const docViewTop = elemSource.scrollTop;
|
|
928
|
-
const docViewBottom = docViewTop + elemSource.clientHeight;
|
|
929
|
-
const elemTop = elem.offsetTop;
|
|
930
|
-
const elemBottom = elemTop + elem.clientHeight;
|
|
931
|
-
return elemBottom <= docViewBottom && elemTop >= docViewTop;
|
|
932
|
-
}
|
|
933
|
-
removeProblemLayerInList(layersList) {
|
|
934
|
-
for (const layer of layersList) {
|
|
935
|
-
if (layer.olLoadingProblem === true) {
|
|
936
|
-
this.map.removeLayer(layer);
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
return layersList;
|
|
940
|
-
}
|
|
941
|
-
}
|
|
942
|
-
LayerListComponent.ɵfac = function LayerListComponent_Factory(t) { return new (t || LayerListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
943
|
-
LayerListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerListComponent, selectors: [["igo-layer-list"]], contentQueries: function LayerListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
944
|
-
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
945
|
-
} if (rf & 2) {
|
|
946
|
-
let _t;
|
|
947
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateLayerToolbar = _t.first);
|
|
948
|
-
} }, inputs: { layersAreAllVisible: "layersAreAllVisible", ogcButton: "ogcButton", timeButton: "timeButton", map: "map", layers: "layers", floatLabel: "floatLabel", layerFilterAndSortOptions: "layerFilterAndSortOptions", excludeBaseLayers: "excludeBaseLayers", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", queryBadge: "queryBadge" }, outputs: { appliedFilterAndSort: "appliedFilterAndSort" }, ngContentSelectors: _c4, decls: 11, vars: 16, consts: [["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection", 4, "ngIf"], ["class", "select-all", 4, "ngIf"], [3, "ngClass", "navigation", "selection"], ["igoList", ""], ["ngFor", "", 3, "ngForOf"], ["class", "igo-layer-actions-container", 3, "title", 4, "ngIf"], ["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection"], [1, "select-all"], [1, "select-all-checkbox", "mat-subheading-2", 3, "color", "checked", "indeterminate", "change"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox", 4, "ngIf"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox"], [1, "igo-layer-actions-container", 3, "title"], [1, "igo-layer-button-group"], ["class", "delete-button", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "down-button", 3, "matTooltip", "disabled", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-down", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "up-button", 3, "matTooltip", "disabled", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-up", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "matMenuTriggerFor", "matTooltip"], ["matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "opacity", 3, "matBadge"], [1, "mat-menu-opacity-slider"], ["opacityMenu", "matMenu"], ["id", "opacity-menu"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "value", "matTooltip", "input", "click"], ["class", "zoomLayer-button", "color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoLayerItemToolbar", "", 3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "matTooltip", "click"], ["svgIcon", "delete"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "zoomLayer-button", 3, "matTooltip", "click"], ["matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "magnify-scan"], [1, "actions-buttons-multi"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "disabled", "matTooltip", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "delete", 3, "matBadge", "matBadgeHidden"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "eye-button", 3, "disabled", "matTooltip", "click"], [3, "svgIcon"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "disabled", "matMenuTriggerFor", "matTooltip"], ["svgIcon", "opacity"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click", 4, "ngIf"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click"], ["svgIcon", "magnify-scan"]], template: function LayerListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
949
|
-
i0.ɵɵprojectionDef(_c2);
|
|
950
|
-
i0.ɵɵelementStart(0, "mat-list");
|
|
951
|
-
i0.ɵɵtemplate(1, LayerListComponent_igo_layer_list_tool_1_Template, 1, 4, "igo-layer-list-tool", 0);
|
|
952
|
-
i0.ɵɵpipe(2, "async");
|
|
953
|
-
i0.ɵɵelementEnd();
|
|
954
|
-
i0.ɵɵtemplate(3, LayerListComponent_mat_list_item_3_Template, 5, 8, "mat-list-item", 1);
|
|
955
|
-
i0.ɵɵelement(4, "mat-divider");
|
|
956
|
-
i0.ɵɵelementStart(5, "igo-list", 2, 3);
|
|
957
|
-
i0.ɵɵtemplate(7, LayerListComponent_ng_template_7_Template, 1, 1, "ng-template", 4);
|
|
958
|
-
i0.ɵɵpipe(8, "async");
|
|
959
|
-
i0.ɵɵelementEnd();
|
|
960
|
-
i0.ɵɵtemplate(9, LayerListComponent_igo_panel_9_Template, 22, 34, "igo-panel", 5);
|
|
961
|
-
i0.ɵɵtemplate(10, LayerListComponent_igo_panel_10_Template, 27, 41, "igo-panel", 5);
|
|
962
|
-
} if (rf & 2) {
|
|
963
|
-
i0.ɵɵadvance(1);
|
|
964
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 8, ctx.showToolbar$));
|
|
965
|
-
i0.ɵɵadvance(2);
|
|
966
|
-
i0.ɵɵproperty("ngIf", ctx.selection);
|
|
967
|
-
i0.ɵɵadvance(2);
|
|
968
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(12, _c3, ctx.selection, ctx.layerTool && !ctx.selection, !ctx.layerTool && !ctx.selection))("navigation", false)("selection", false);
|
|
969
|
-
i0.ɵɵadvance(2);
|
|
970
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(8, 10, ctx.layers$));
|
|
971
|
-
i0.ɵɵadvance(2);
|
|
972
|
-
i0.ɵɵproperty("ngIf", !ctx.selection && ctx.layerTool && ctx.activeLayer);
|
|
973
|
-
i0.ɵɵadvance(1);
|
|
974
|
-
i0.ɵɵproperty("ngIf", ctx.selection && ctx.layers.length > 0);
|
|
975
|
-
} }, styles: ["[_nghost-%COMP%] .igo-list-no-tools[_ngcontent-%COMP%]{height:calc(100% - 57px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-single[_ngcontent-%COMP%]{height:calc(100% - 153px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-multi[_ngcontent-%COMP%]{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container[_ngcontent-%COMP%]{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{text-align:center}mat-list-item[_ngcontent-%COMP%] .mat-list-item-content{margin-bottom:10px}mat-checkbox[_ngcontent-%COMP%] .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider[_ngcontent-%COMP%]{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group[_ngcontent-%COMP%], .actions-buttons-multi[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar{height:4px}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-track, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group[_ngcontent-%COMP%]{padding-top:5px}[_nghost-%COMP%] igo-panel[_ngcontent-%COMP%]{height:auto;height:initial}#opacity-menu[_ngcontent-%COMP%]{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu[_ngcontent-%COMP%] .mat-menu-content[_ngcontent-%COMP%]:not(:empty){padding-top:20px}.select-all[_ngcontent-%COMP%] .mat-list-item-content{margin:0}"], changeDetection: 0 });
|
|
976
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListComponent, [{
|
|
977
|
-
type: Component,
|
|
978
|
-
args: [{ selector: 'igo-layer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list>\n <igo-layer-list-tool *ngIf=\"showToolbar$ | async\"\n floatLabel=\"auto\"\n [layersAreAllVisible]=\"layersAreAllVisible\"\n [term]=\"layerFilterAndSortOptions.keyword\"\n [onlyVisible]=\"layerFilterAndSortOptions.onlyVisible\"\n [sortAlpha]=\"layerFilterAndSortOptions.sortAlpha\"\n (appliedFilterAndSort)=\"onAppliedFilterAndSortChange($event)\"\n (selection)=\"toggleSelectionMode($event)\">\n </igo-layer-list-tool>\n</mat-list>\n\n<mat-list-item *ngIf=\"selection\" class=\"select-all\">\n <mat-checkbox\n class=\"select-all-checkbox mat-subheading-2\"\n [color]=\"!selectAllCheck && layersChecked.length > 0 ? 'accent' : 'primary'\"\n (change)=\"selectAll()\"\n [checked]=\"selectAllCheck\"\n [indeterminate]=\"!selectAllCheck && layersChecked.length > 0\"> {{selectAllCheck ? ('igo.geo.layer.deselectAll' | translate) : ('igo.geo.layer.selectAll' | translate)}}\n </mat-checkbox>\n</mat-list-item>\n<mat-divider></mat-divider>\n\n<igo-list #igoList [ngClass]=\"{'igo-list-tools-multi': selection, 'igo-list-tools-single': (layerTool && !selection), 'igo-list-no-tools': (!layerTool && !selection)}\" [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem\n [layer]=\"layer\"\n [activeLayer]=\"activeLayer\"\n [orderable]=\"orderable && !layer.baseLayer\"\n [lowerDisabled]=\"getLowerLayer().id === layer.id\"\n [raiseDisabled]=\"getUpperLayer().id === layer.id\"\n [queryBadge]=\"queryBadge\"\n [expandLegendIfVisible]=\"expandLegendOfVisibleLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [selectionMode]=\"selection\"\n [selectAll]=\"selectAllCheck\"\n [layerCheck]=\"layer.options.check\"\n [changeDetection]=\"layerItemChangeDetection$\"\n (action)=\"toggleLayerTool($event)\"\n (checkbox)=\"layersCheck($event)\">\n </igo-layer-item>\n </ng-template>\n</igo-list>\n\n<igo-panel *ngIf=\"!selection && layerTool && activeLayer\" class=\"igo-layer-actions-container\" [title]=\"activeLayer.title\">\n <div class=\"igo-layer-button-group\">\n <button\n *ngIf=\"isLayerRemovable(activeLayer)\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.removeLayer' | translate\"\n (click)=\"removeLayers()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Lower, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabled\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Raise, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabled\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <!-- <label>{{ 'igo.geo.layer.opacity' | translate }} </label> -->\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon [matBadge]=\"badgeOpacity\" matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [value]=\"opacity\"\n (input)=\"changeOpacity($event)\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n (click) = \"$event.stopPropagation()\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"activeLayerExtentIsValid(activeLayer)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayer' | translate\"\n (click)=\"zoomLayerExtents(activeLayer)\">\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n\n <ng-container igoLayerItemToolbar\n [ngTemplateOutlet]=\"templateLayerToolbar\"\n [ngTemplateOutletContext]=\"{layer: activeLayer}\">\n </ng-container>\n\n <ng-content select=\"[igoLayerItemToolbar]\"></ng-content>\n </div>\n</igo-panel>\n\n<igo-panel *ngIf=\"selection && layers.length > 0\" class=\"igo-layer-actions-container\" [title]=\"'igo.geo.layer.tools' | translate\">\n <div class=\"actions-buttons-multi\">\n <button\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"isAllLayersRemovable(layersChecked) ? ('igo.geo.layer.removeSelectedLayers' | translate) : 'igo.geo.layer.removeSelectedLayersRestriction' | translate\"\n (click)=\"removeLayers(layersChecked)\">\n <mat-icon [matBadge]=\"'!'\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"isAllLayersRemovable(layersChecked)\"\n svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"eye-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"statusSelectedLayersCheck === 'ALL_HIDDEN' ? ('igo.geo.layer.showSelectedLayers' | translate) : ('igo.geo.layer.hideSelectedLayers' | translate)\"\n (click)=\"toggleVisibility(layersChecked)\">\n <mat-icon\t[svgIcon]=\"(statusSelectedLayersCheck === 'ALL_HIDDEN') ? 'eye-off' : 'eye'\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabledSelection\"\n (click)=\"lowerLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabledSelection\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabledSelection\"\n (click)=\"raiseLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabledSelection\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider *ngIf=\"layersChecked.length\"\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [(ngModel)]=\"checkOpacity\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\"\n (click) = \"$event.stopPropagation()\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"layersChecked.length !== 0 && activeLayersExtentAreValid(layersChecked)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayers' | translate\"\n (click)=\"zoomLayersExtents(layersChecked)\">\n <mat-icon svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n </div>\n</igo-panel>\n", styles: [":host .igo-list-no-tools{height:calc(100% - 57px);padding-top:8px}:host .igo-list-tools-single{height:calc(100% - 153px);padding-top:8px}:host .igo-list-tools-multi{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container>div{text-align:center}mat-list-item ::ng-deep .mat-list-item-content{margin-bottom:10px}mat-checkbox ::ng-deep .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group,.actions-buttons-multi{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group::-webkit-scrollbar,.actions-buttons-multi::-webkit-scrollbar{height:4px}.igo-layer-button-group::-webkit-scrollbar-track,.actions-buttons-multi::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group::-webkit-scrollbar-thumb,.actions-buttons-multi::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group::-webkit-scrollbar-thumb:hover,.actions-buttons-multi::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group{padding-top:5px}:host igo-panel{height:auto;height:initial}#opacity-menu{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu .mat-menu-content:not(:empty){padding-top:20px}.select-all ::ng-deep .mat-list-item-content{margin:0}\n"] }]
|
|
979
|
-
}], function () { return [{ type: i0.ElementRef }]; }, { templateLayerToolbar: [{
|
|
980
|
-
type: ContentChild,
|
|
981
|
-
args: ['igoLayerItemToolbar', /* TODO: add static flag */ {}]
|
|
982
|
-
}], layersAreAllVisible: [{
|
|
983
|
-
type: Input
|
|
984
|
-
}], ogcButton: [{
|
|
985
|
-
type: Input
|
|
986
|
-
}], timeButton: [{
|
|
987
|
-
type: Input
|
|
988
|
-
}], map: [{
|
|
989
|
-
type: Input
|
|
990
|
-
}], layers: [{
|
|
991
|
-
type: Input
|
|
992
|
-
}], floatLabel: [{
|
|
993
|
-
type: Input
|
|
994
|
-
}], layerFilterAndSortOptions: [{
|
|
995
|
-
type: Input
|
|
996
|
-
}], excludeBaseLayers: [{
|
|
997
|
-
type: Input
|
|
998
|
-
}], toggleLegendOnVisibilityChange: [{
|
|
999
|
-
type: Input
|
|
1000
|
-
}], expandLegendOfVisibleLayers: [{
|
|
1001
|
-
type: Input
|
|
1002
|
-
}], updateLegendOnResolutionChange: [{
|
|
1003
|
-
type: Input
|
|
1004
|
-
}], queryBadge: [{
|
|
1005
|
-
type: Input
|
|
1006
|
-
}], appliedFilterAndSort: [{
|
|
1007
|
-
type: Output
|
|
1008
|
-
}] }); })();
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, ContentChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
3
|
+
import { LayerListControlsEnum, LayerListDisplacement } from './layer-list.enum';
|
|
4
|
+
import { LayerListSelectVisibleEnum } from './layer-list.enum';
|
|
5
|
+
import { BehaviorSubject, ReplaySubject, EMPTY, timer } from 'rxjs';
|
|
6
|
+
import { debounce } from 'rxjs/operators';
|
|
7
|
+
import { LinkedProperties } from '../shared/layers/layer.interface';
|
|
8
|
+
import * as olextent from 'ol/extent';
|
|
9
|
+
import { getAllChildLayersByProperty, getRootParentByProperty } from '../../map/shared/linkedLayers.utils';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
const _c0 = ["igoLayerItemToolbar"];
|
|
12
|
+
function LayerListComponent_igo_layer_list_tool_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
14
|
+
i0.ɵɵelementStart(0, "igo-layer-list-tool", 6);
|
|
15
|
+
i0.ɵɵlistener("appliedFilterAndSort", function LayerListComponent_igo_layer_list_tool_1_Template_igo_layer_list_tool_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onAppliedFilterAndSortChange($event)); })("selection", function LayerListComponent_igo_layer_list_tool_1_Template_igo_layer_list_tool_selection_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.toggleSelectionMode($event)); });
|
|
16
|
+
i0.ɵɵelementEnd();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
|
+
i0.ɵɵproperty("layersAreAllVisible", ctx_r0.layersAreAllVisible)("term", ctx_r0.layerFilterAndSortOptions.keyword)("onlyVisible", ctx_r0.layerFilterAndSortOptions.onlyVisible)("sortAlpha", ctx_r0.layerFilterAndSortOptions.sortAlpha);
|
|
20
|
+
} }
|
|
21
|
+
function LayerListComponent_mat_list_item_3_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
23
|
+
i0.ɵɵelementStart(0, "mat-list-item", 7)(1, "mat-checkbox", 8);
|
|
24
|
+
i0.ɵɵlistener("change", function LayerListComponent_mat_list_item_3_Template_mat_checkbox_change_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.selectAll()); });
|
|
25
|
+
i0.ɵɵtext(2);
|
|
26
|
+
i0.ɵɵpipe(3, "translate");
|
|
27
|
+
i0.ɵɵpipe(4, "translate");
|
|
28
|
+
i0.ɵɵelementEnd()();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵadvance(1);
|
|
32
|
+
i0.ɵɵproperty("color", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0 ? "accent" : "primary")("checked", ctx_r1.selectAllCheck)("indeterminate", !ctx_r1.selectAllCheck && ctx_r1.layersChecked.length > 0);
|
|
33
|
+
i0.ɵɵadvance(1);
|
|
34
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.selectAllCheck ? i0.ɵɵpipeBind1(3, 4, "igo.geo.layer.deselectAll") : i0.ɵɵpipeBind1(4, 6, "igo.geo.layer.selectAll"), " ");
|
|
35
|
+
} }
|
|
36
|
+
function LayerListComponent_ng_template_7_igo_layer_item_0_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
38
|
+
i0.ɵɵelementStart(0, "igo-layer-item", 10);
|
|
39
|
+
i0.ɵɵlistener("action", function LayerListComponent_ng_template_7_igo_layer_item_0_Template_igo_layer_item_action_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r14.toggleLayerTool($event)); })("checkbox", function LayerListComponent_ng_template_7_igo_layer_item_0_Template_igo_layer_item_checkbox_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.layersCheck($event)); });
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const layer_r11 = i0.ɵɵnextContext().$implicit;
|
|
43
|
+
const ctx_r13 = i0.ɵɵnextContext();
|
|
44
|
+
i0.ɵɵproperty("layer", layer_r11)("activeLayer", ctx_r13.activeLayer)("orderable", ctx_r13.orderable && !layer_r11.baseLayer)("lowerDisabled", ctx_r13.getLowerLayer().id === layer_r11.id)("raiseDisabled", ctx_r13.getUpperLayer().id === layer_r11.id)("queryBadge", ctx_r13.queryBadge)("expandLegendIfVisible", ctx_r13.expandLegendOfVisibleLayers)("updateLegendOnResolutionChange", ctx_r13.updateLegendOnResolutionChange)("toggleLegendOnVisibilityChange", ctx_r13.toggleLegendOnVisibilityChange)("selectionMode", ctx_r13.selection)("selectAll", ctx_r13.selectAllCheck)("layerCheck", layer_r11.options.check)("changeDetection", ctx_r13.layerItemChangeDetection$);
|
|
45
|
+
} }
|
|
46
|
+
function LayerListComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵtemplate(0, LayerListComponent_ng_template_7_igo_layer_item_0_Template, 1, 13, "igo-layer-item", 9);
|
|
48
|
+
} if (rf & 2) {
|
|
49
|
+
const layer_r11 = ctx.$implicit;
|
|
50
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
51
|
+
i0.ɵɵproperty("ngIf", !(ctx_r3.excludeBaseLayers && layer_r11.baseLayer));
|
|
52
|
+
} }
|
|
53
|
+
function LayerListComponent_igo_panel_9_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
55
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
56
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.removeLayers()); });
|
|
57
|
+
i0.ɵɵpipe(1, "translate");
|
|
58
|
+
i0.ɵɵelement(2, "mat-icon", 27);
|
|
59
|
+
i0.ɵɵelementEnd();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.removeLayer"));
|
|
62
|
+
} }
|
|
63
|
+
function LayerListComponent_igo_panel_9_button_19_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
65
|
+
i0.ɵɵelementStart(0, "button", 28);
|
|
66
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_button_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.zoomLayerExtents(ctx_r23.activeLayer)); });
|
|
67
|
+
i0.ɵɵpipe(1, "translate");
|
|
68
|
+
i0.ɵɵelement(2, "mat-icon", 29);
|
|
69
|
+
i0.ɵɵelementEnd();
|
|
70
|
+
} if (rf & 2) {
|
|
71
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayer"));
|
|
72
|
+
} }
|
|
73
|
+
const _c1 = function (a0) { return { layer: a0 }; };
|
|
74
|
+
function LayerListComponent_igo_panel_9_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
76
|
+
i0.ɵɵelementStart(0, "igo-panel", 11)(1, "div", 12);
|
|
77
|
+
i0.ɵɵtemplate(2, LayerListComponent_igo_panel_9_button_2_Template, 3, 3, "button", 13);
|
|
78
|
+
i0.ɵɵelementStart(3, "button", 14);
|
|
79
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.moveActiveLayer(ctx_r25.activeLayer, ctx_r25.layerListDisplacement.Lower, true)); });
|
|
80
|
+
i0.ɵɵpipe(4, "translate");
|
|
81
|
+
i0.ɵɵpipe(5, "translate");
|
|
82
|
+
i0.ɵɵelement(6, "mat-icon", 15);
|
|
83
|
+
i0.ɵɵelementEnd();
|
|
84
|
+
i0.ɵɵelementStart(7, "button", 16);
|
|
85
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_9_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.moveActiveLayer(ctx_r27.activeLayer, ctx_r27.layerListDisplacement.Raise, true)); });
|
|
86
|
+
i0.ɵɵpipe(8, "translate");
|
|
87
|
+
i0.ɵɵpipe(9, "translate");
|
|
88
|
+
i0.ɵɵelement(10, "mat-icon", 17);
|
|
89
|
+
i0.ɵɵelementEnd();
|
|
90
|
+
i0.ɵɵelementStart(11, "button", 18);
|
|
91
|
+
i0.ɵɵpipe(12, "translate");
|
|
92
|
+
i0.ɵɵelement(13, "mat-icon", 19);
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
i0.ɵɵelementStart(14, "mat-menu", 20, 21)(16, "div", 22)(17, "mat-slider", 23);
|
|
95
|
+
i0.ɵɵlistener("input", function LayerListComponent_igo_panel_9_Template_mat_slider_input_17_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.changeOpacity($event)); })("click", function LayerListComponent_igo_panel_9_Template_mat_slider_click_17_listener($event) { return $event.stopPropagation(); });
|
|
96
|
+
i0.ɵɵpipe(18, "translate");
|
|
97
|
+
i0.ɵɵelementEnd()()();
|
|
98
|
+
i0.ɵɵtemplate(19, LayerListComponent_igo_panel_9_button_19_Template, 3, 3, "button", 24);
|
|
99
|
+
i0.ɵɵelementContainer(20, 25);
|
|
100
|
+
i0.ɵɵprojection(21);
|
|
101
|
+
i0.ɵɵelementEnd()();
|
|
102
|
+
} if (rf & 2) {
|
|
103
|
+
const _r19 = i0.ɵɵreference(15);
|
|
104
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
105
|
+
i0.ɵɵproperty("title", ctx_r4.activeLayer.title);
|
|
106
|
+
i0.ɵɵadvance(2);
|
|
107
|
+
i0.ɵɵproperty("ngIf", ctx_r4.isLayerRemovable(ctx_r4.activeLayer));
|
|
108
|
+
i0.ɵɵadvance(1);
|
|
109
|
+
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(4, 20, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(5, 22, "igo.geo.layer.lowerLayer"))("disabled", ctx_r4.lowerDisabled);
|
|
110
|
+
i0.ɵɵadvance(3);
|
|
111
|
+
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.lowerDisabled);
|
|
112
|
+
i0.ɵɵadvance(1);
|
|
113
|
+
i0.ɵɵproperty("matTooltip", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? i0.ɵɵpipeBind1(8, 24, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(9, 26, "igo.geo.layer.raiseLayer"))("disabled", ctx_r4.raiseDisabled);
|
|
114
|
+
i0.ɵɵadvance(3);
|
|
115
|
+
i0.ɵɵproperty("matBadge", ctx_r4.sortAlpha || ctx_r4.onlyVisible || ctx_r4.keyword ? "!" : "")("matBadgeHidden", ctx_r4.raiseDisabled);
|
|
116
|
+
i0.ɵɵadvance(1);
|
|
117
|
+
i0.ɵɵproperty("matMenuTriggerFor", _r19)("matTooltip", i0.ɵɵpipeBind1(12, 28, "igo.geo.layer.opacity"));
|
|
118
|
+
i0.ɵɵadvance(2);
|
|
119
|
+
i0.ɵɵproperty("matBadge", ctx_r4.badgeOpacity);
|
|
120
|
+
i0.ɵɵadvance(4);
|
|
121
|
+
i0.ɵɵproperty("min", 0)("max", 100)("value", ctx_r4.opacity)("matTooltip", i0.ɵɵpipeBind1(18, 30, "igo.geo.layer.opacity"));
|
|
122
|
+
i0.ɵɵadvance(2);
|
|
123
|
+
i0.ɵɵproperty("ngIf", ctx_r4.activeLayerExtentIsValid(ctx_r4.activeLayer));
|
|
124
|
+
i0.ɵɵadvance(1);
|
|
125
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r4.templateLayerToolbar)("ngTemplateOutletContext", i0.ɵɵpureFunction1(32, _c1, ctx_r4.activeLayer));
|
|
126
|
+
} }
|
|
127
|
+
function LayerListComponent_igo_panel_10_mat_slider_25_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
129
|
+
i0.ɵɵelementStart(0, "mat-slider", 38);
|
|
130
|
+
i0.ɵɵlistener("ngModelChange", function LayerListComponent_igo_panel_10_mat_slider_25_Template_mat_slider_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.checkOpacity = $event); })("click", function LayerListComponent_igo_panel_10_mat_slider_25_Template_mat_slider_click_0_listener($event) { return $event.stopPropagation(); });
|
|
131
|
+
i0.ɵɵpipe(1, "translate");
|
|
132
|
+
i0.ɵɵelementEnd();
|
|
133
|
+
} if (rf & 2) {
|
|
134
|
+
const ctx_r31 = i0.ɵɵnextContext(2);
|
|
135
|
+
i0.ɵɵproperty("min", 0)("max", 100)("ngModel", ctx_r31.checkOpacity)("matTooltip", i0.ɵɵpipeBind1(1, 4, "igo.geo.layer.opacity"));
|
|
136
|
+
} }
|
|
137
|
+
function LayerListComponent_igo_panel_10_button_26_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
139
|
+
i0.ɵɵelementStart(0, "button", 28);
|
|
140
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_button_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.zoomLayersExtents(ctx_r36.layersChecked)); });
|
|
141
|
+
i0.ɵɵpipe(1, "translate");
|
|
142
|
+
i0.ɵɵelement(2, "mat-icon", 39);
|
|
143
|
+
i0.ɵɵelementEnd();
|
|
144
|
+
} if (rf & 2) {
|
|
145
|
+
i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.layer.zoomLayers"));
|
|
146
|
+
} }
|
|
147
|
+
function LayerListComponent_igo_panel_10_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
149
|
+
i0.ɵɵelementStart(0, "igo-panel", 11);
|
|
150
|
+
i0.ɵɵpipe(1, "translate");
|
|
151
|
+
i0.ɵɵelementStart(2, "div", 30)(3, "button", 31);
|
|
152
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.removeLayers(ctx_r38.layersChecked)); });
|
|
153
|
+
i0.ɵɵpipe(4, "translate");
|
|
154
|
+
i0.ɵɵpipe(5, "translate");
|
|
155
|
+
i0.ɵɵelement(6, "mat-icon", 32);
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
i0.ɵɵelementStart(7, "button", 33);
|
|
158
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r39); const ctx_r40 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r40.toggleVisibility(ctx_r40.layersChecked)); });
|
|
159
|
+
i0.ɵɵpipe(8, "translate");
|
|
160
|
+
i0.ɵɵpipe(9, "translate");
|
|
161
|
+
i0.ɵɵelement(10, "mat-icon", 34);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵelementStart(11, "button", 14);
|
|
164
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r39); const ctx_r41 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r41.lowerLayers(ctx_r41.layersChecked)); });
|
|
165
|
+
i0.ɵɵpipe(12, "translate");
|
|
166
|
+
i0.ɵɵpipe(13, "translate");
|
|
167
|
+
i0.ɵɵelement(14, "mat-icon", 15);
|
|
168
|
+
i0.ɵɵelementEnd();
|
|
169
|
+
i0.ɵɵelementStart(15, "button", 16);
|
|
170
|
+
i0.ɵɵlistener("click", function LayerListComponent_igo_panel_10_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r39); const ctx_r42 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r42.raiseLayers(ctx_r42.layersChecked)); });
|
|
171
|
+
i0.ɵɵpipe(16, "translate");
|
|
172
|
+
i0.ɵɵpipe(17, "translate");
|
|
173
|
+
i0.ɵɵelement(18, "mat-icon", 17);
|
|
174
|
+
i0.ɵɵelementEnd();
|
|
175
|
+
i0.ɵɵelementStart(19, "button", 35);
|
|
176
|
+
i0.ɵɵpipe(20, "translate");
|
|
177
|
+
i0.ɵɵelement(21, "mat-icon", 36);
|
|
178
|
+
i0.ɵɵelementEnd();
|
|
179
|
+
i0.ɵɵelementStart(22, "mat-menu", 20, 21)(24, "div", 22);
|
|
180
|
+
i0.ɵɵtemplate(25, LayerListComponent_igo_panel_10_mat_slider_25_Template, 2, 6, "mat-slider", 37);
|
|
181
|
+
i0.ɵɵelementEnd()();
|
|
182
|
+
i0.ɵɵtemplate(26, LayerListComponent_igo_panel_10_button_26_Template, 3, 3, "button", 24);
|
|
183
|
+
i0.ɵɵelementEnd()();
|
|
184
|
+
} if (rf & 2) {
|
|
185
|
+
const _r30 = i0.ɵɵreference(23);
|
|
186
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
187
|
+
i0.ɵɵproperty("title", i0.ɵɵpipeBind1(1, 21, "igo.geo.layer.tools"));
|
|
188
|
+
i0.ɵɵadvance(3);
|
|
189
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked) ? i0.ɵɵpipeBind1(4, 23, "igo.geo.layer.removeSelectedLayers") : i0.ɵɵpipeBind1(5, 25, "igo.geo.layer.removeSelectedLayersRestriction"));
|
|
190
|
+
i0.ɵɵadvance(3);
|
|
191
|
+
i0.ɵɵproperty("matBadge", "!")("matBadgeHidden", ctx_r5.isAllLayersRemovable(ctx_r5.layersChecked));
|
|
192
|
+
i0.ɵɵadvance(1);
|
|
193
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matTooltip", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? i0.ɵɵpipeBind1(8, 27, "igo.geo.layer.showSelectedLayers") : i0.ɵɵpipeBind1(9, 29, "igo.geo.layer.hideSelectedLayers"));
|
|
194
|
+
i0.ɵɵadvance(3);
|
|
195
|
+
i0.ɵɵproperty("svgIcon", ctx_r5.statusSelectedLayersCheck === "ALL_HIDDEN" ? "eye-off" : "eye");
|
|
196
|
+
i0.ɵɵadvance(1);
|
|
197
|
+
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(12, 31, "igo.geo.layer.filterLowerLayer") : i0.ɵɵpipeBind1(13, 33, "igo.geo.layer.lowerLayer"))("disabled", ctx_r5.lowerDisabledSelection);
|
|
198
|
+
i0.ɵɵadvance(3);
|
|
199
|
+
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.lowerDisabledSelection);
|
|
200
|
+
i0.ɵɵadvance(1);
|
|
201
|
+
i0.ɵɵproperty("matTooltip", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? i0.ɵɵpipeBind1(16, 35, "igo.geo.layer.filterRaiseLayer") : i0.ɵɵpipeBind1(17, 37, "igo.geo.layer.raiseLayer"))("disabled", ctx_r5.raiseDisabledSelection);
|
|
202
|
+
i0.ɵɵadvance(3);
|
|
203
|
+
i0.ɵɵproperty("matBadge", ctx_r5.sortAlpha || ctx_r5.onlyVisible || ctx_r5.keyword ? "!" : "")("matBadgeHidden", ctx_r5.raiseDisabledSelection);
|
|
204
|
+
i0.ɵɵadvance(1);
|
|
205
|
+
i0.ɵɵproperty("disabled", ctx_r5.layersChecked.length === 0)("matMenuTriggerFor", _r30)("matTooltip", i0.ɵɵpipeBind1(20, 39, "igo.geo.layer.opacity"));
|
|
206
|
+
i0.ɵɵadvance(6);
|
|
207
|
+
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length);
|
|
208
|
+
i0.ɵɵadvance(1);
|
|
209
|
+
i0.ɵɵproperty("ngIf", ctx_r5.layersChecked.length !== 0 && ctx_r5.activeLayersExtentAreValid(ctx_r5.layersChecked));
|
|
210
|
+
} }
|
|
211
|
+
const _c2 = [[["", "igoLayerItemToolbar", ""]]];
|
|
212
|
+
const _c3 = function (a0, a1, a2) { return { "igo-list-tools-multi": a0, "igo-list-tools-single": a1, "igo-list-no-tools": a2 }; };
|
|
213
|
+
const _c4 = ["[igoLayerItemToolbar]"];
|
|
214
|
+
// TODO: This class could use a clean up. Also, some methods could be moved ealsewhere
|
|
215
|
+
export class LayerListComponent {
|
|
216
|
+
constructor(elRef) {
|
|
217
|
+
this.elRef = elRef;
|
|
218
|
+
this.orderable = true;
|
|
219
|
+
this.thresholdToFilterAndSort = 5;
|
|
220
|
+
this.layers$ = new BehaviorSubject([]);
|
|
221
|
+
this.change$ = new ReplaySubject(1);
|
|
222
|
+
this.showToolbar$ = new BehaviorSubject(false);
|
|
223
|
+
this.hideSelectedLayers = true;
|
|
224
|
+
this.activeLayer$ = new BehaviorSubject(undefined);
|
|
225
|
+
this.layersChecked = [];
|
|
226
|
+
this.layerItemChangeDetection$ = new BehaviorSubject(undefined);
|
|
227
|
+
this.layersAreAllVisible = true;
|
|
228
|
+
this.ogcButton = true;
|
|
229
|
+
this.timeButton = true;
|
|
230
|
+
this.floatLabel = 'auto';
|
|
231
|
+
this.layerFilterAndSortOptions = {};
|
|
232
|
+
this.excludeBaseLayers = false;
|
|
233
|
+
this.toggleLegendOnVisibilityChange = false;
|
|
234
|
+
this.expandLegendOfVisibleLayers = false;
|
|
235
|
+
this.updateLegendOnResolutionChange = false;
|
|
236
|
+
this.queryBadge = false;
|
|
237
|
+
this.appliedFilterAndSort = new EventEmitter();
|
|
238
|
+
this._keyword = undefined;
|
|
239
|
+
this._onlyVisible = false;
|
|
240
|
+
this._sortedAlpha = false;
|
|
241
|
+
this.toggleOpacity = false;
|
|
242
|
+
this.selectAllCheck$ = new BehaviorSubject(undefined);
|
|
243
|
+
}
|
|
244
|
+
get map() {
|
|
245
|
+
return this._map;
|
|
246
|
+
}
|
|
247
|
+
set map(value) {
|
|
248
|
+
this._map = value;
|
|
249
|
+
}
|
|
250
|
+
set layers(value) {
|
|
251
|
+
this._layers = this.removeProblemLayerInList(value);
|
|
252
|
+
this.next();
|
|
253
|
+
}
|
|
254
|
+
get layers() {
|
|
255
|
+
return this._layers;
|
|
256
|
+
}
|
|
257
|
+
set activeLayer(value) {
|
|
258
|
+
this._activeLayer = value;
|
|
259
|
+
this.activeLayer$.next(value);
|
|
260
|
+
}
|
|
261
|
+
get activeLayer() {
|
|
262
|
+
return this._activeLayer;
|
|
263
|
+
}
|
|
264
|
+
get keyword() {
|
|
265
|
+
return this._keyword;
|
|
266
|
+
}
|
|
267
|
+
set keyword(value) {
|
|
268
|
+
this._keyword = value;
|
|
269
|
+
this.next();
|
|
270
|
+
}
|
|
271
|
+
get onlyVisible() {
|
|
272
|
+
return this._onlyVisible;
|
|
273
|
+
}
|
|
274
|
+
set onlyVisible(value) {
|
|
275
|
+
this._onlyVisible = value;
|
|
276
|
+
this.next();
|
|
277
|
+
}
|
|
278
|
+
get sortAlpha() {
|
|
279
|
+
return this._sortedAlpha;
|
|
280
|
+
}
|
|
281
|
+
set sortAlpha(value) {
|
|
282
|
+
this._sortedAlpha = value;
|
|
283
|
+
this.next();
|
|
284
|
+
}
|
|
285
|
+
get opacity() {
|
|
286
|
+
return Math.round(this.activeLayer$.getValue().opacity * 100);
|
|
287
|
+
}
|
|
288
|
+
set opacity(opacity) {
|
|
289
|
+
this.activeLayer$.getValue().opacity = opacity / 100;
|
|
290
|
+
}
|
|
291
|
+
get badgeOpacity() {
|
|
292
|
+
if (this.opacity === 100) {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
return this.opacity;
|
|
296
|
+
}
|
|
297
|
+
get raiseDisabled() {
|
|
298
|
+
if (!this.orderable ||
|
|
299
|
+
this.activeLayer.baseLayer ||
|
|
300
|
+
this.getUpperLayer().id === this.activeLayer.id ||
|
|
301
|
+
this.isUpperBaselayer(this.activeLayer)) {
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
get lowerDisabled() {
|
|
307
|
+
if (!this.orderable ||
|
|
308
|
+
this.activeLayer.baseLayer ||
|
|
309
|
+
this.getLowerLayer().id === this.activeLayer.id ||
|
|
310
|
+
this.isLowerBaselayer(this.activeLayer)) {
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
get raiseDisabledSelection() {
|
|
316
|
+
if (this.layersChecked.length === 0 ||
|
|
317
|
+
!this.orderable ||
|
|
318
|
+
!this.raisableLayers(this.layersChecked) ||
|
|
319
|
+
this.selectAllCheck === true) {
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
get lowerDisabledSelection() {
|
|
325
|
+
if (this.layersChecked.length === 0 ||
|
|
326
|
+
!this.orderable ||
|
|
327
|
+
!this.lowerableLayers(this.layersChecked) ||
|
|
328
|
+
this.selectAllCheck === true) {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
get checkOpacity() {
|
|
334
|
+
return this.layersCheckedOpacity() * 100;
|
|
335
|
+
}
|
|
336
|
+
set checkOpacity(opacity) {
|
|
337
|
+
for (const layer of this.layersChecked) {
|
|
338
|
+
layer.opacity = opacity / 100;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
get layerListDisplacement() {
|
|
342
|
+
return LayerListDisplacement;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Subscribe to the search term stream and trigger researches
|
|
346
|
+
* @internal
|
|
347
|
+
*/
|
|
348
|
+
ngOnInit() {
|
|
349
|
+
this.change$$ = this.change$
|
|
350
|
+
.pipe(debounce(() => {
|
|
351
|
+
return this.layers.length === 0 ? EMPTY : timer(50);
|
|
352
|
+
}))
|
|
353
|
+
.subscribe(() => {
|
|
354
|
+
this.showToolbar$.next(this.computeShowToolbar());
|
|
355
|
+
this.layers$.next(this.computeLayers(this.layers.slice(0)));
|
|
356
|
+
this.appliedFilterAndSort.emit({
|
|
357
|
+
keyword: this.keyword,
|
|
358
|
+
sortAlpha: this.sortAlpha,
|
|
359
|
+
onlyVisible: this.onlyVisible
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
this.selectAllCheck$$ = this.selectAllCheck$.subscribe((value) => {
|
|
363
|
+
this.selectAllCheck = value;
|
|
364
|
+
});
|
|
365
|
+
this.layers$$ = this.layers$.subscribe(() => {
|
|
366
|
+
if (this.layers) {
|
|
367
|
+
let checks = 0;
|
|
368
|
+
for (const layer of this.layers) {
|
|
369
|
+
layer.status$.subscribe(valStatus => {
|
|
370
|
+
if (valStatus === 0) {
|
|
371
|
+
this.map.removeLayer(layer);
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
if (layer.options.active) {
|
|
375
|
+
this.activeLayer = layer;
|
|
376
|
+
this.layerTool = true;
|
|
377
|
+
}
|
|
378
|
+
if (layer.options.check) {
|
|
379
|
+
checks += 1;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
if (this.excludeBaseLayers) {
|
|
383
|
+
this.selectAllCheck =
|
|
384
|
+
checks ===
|
|
385
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length
|
|
386
|
+
? true
|
|
387
|
+
: false;
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
this.selectAllCheck =
|
|
391
|
+
checks === this.layers.filter((lay) => lay.showInLayerList).length
|
|
392
|
+
? true
|
|
393
|
+
: false;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
ngOnDestroy() {
|
|
399
|
+
this.change$$.unsubscribe();
|
|
400
|
+
this.selectAllCheck$$.unsubscribe();
|
|
401
|
+
this.layers$$.unsubscribe();
|
|
402
|
+
}
|
|
403
|
+
activeLayerExtentIsValid(layer) {
|
|
404
|
+
let valid = false;
|
|
405
|
+
if (layer.options.showButtonZoomToExtent === false) {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
const layerExtent = layer.options.extent;
|
|
409
|
+
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
410
|
+
if (layerExtent) {
|
|
411
|
+
if (maxLayerZoomExtent) {
|
|
412
|
+
valid = olextent.containsExtent(maxLayerZoomExtent, layerExtent);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
valid = true;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return valid;
|
|
419
|
+
}
|
|
420
|
+
activeLayersExtentAreValid(layers) {
|
|
421
|
+
let valid = false;
|
|
422
|
+
const layersExtent = olextent.createEmpty();
|
|
423
|
+
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
424
|
+
for (const layer of layers) {
|
|
425
|
+
const layerExtent = layer.options.extent;
|
|
426
|
+
if (layerExtent && !layerExtent.includes(Infinity)) {
|
|
427
|
+
olextent.extend(layersExtent, layerExtent);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
if (!olextent.isEmpty(layersExtent)) {
|
|
431
|
+
if (maxLayerZoomExtent) {
|
|
432
|
+
valid = (olextent.containsExtent(maxLayerZoomExtent, layersExtent));
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
valid = true;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return valid;
|
|
439
|
+
}
|
|
440
|
+
zoomLayerExtents(layer) {
|
|
441
|
+
this.map.viewController.zoomToExtent(layer.options.extent);
|
|
442
|
+
}
|
|
443
|
+
zoomLayersExtents(layers) {
|
|
444
|
+
const layersExtent = olextent.createEmpty();
|
|
445
|
+
for (const layer of layers) {
|
|
446
|
+
const layerExtent = layer.options.extent;
|
|
447
|
+
if (layerExtent) {
|
|
448
|
+
olextent.extend(layersExtent, layerExtent);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
this.map.viewController.zoomToExtent(layersExtent);
|
|
452
|
+
}
|
|
453
|
+
changeOpacity(event) {
|
|
454
|
+
this.opacity = event.value;
|
|
455
|
+
}
|
|
456
|
+
clearKeyword() {
|
|
457
|
+
this.keyword = undefined;
|
|
458
|
+
}
|
|
459
|
+
getLowerLayer() {
|
|
460
|
+
return this.layers
|
|
461
|
+
.filter((l) => !l.baseLayer)
|
|
462
|
+
.reduce((prev, current) => {
|
|
463
|
+
return prev.zIndex < current.zIndex ? prev : current;
|
|
464
|
+
}, { zIndex: undefined, id: undefined });
|
|
465
|
+
}
|
|
466
|
+
isLowerBaselayer(layer) {
|
|
467
|
+
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
468
|
+
if (this.layers &&
|
|
469
|
+
this.layers[index + 1] &&
|
|
470
|
+
this.layers[index + 1].baseLayer === true) {
|
|
471
|
+
return true;
|
|
472
|
+
}
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
getUpperLayer() {
|
|
476
|
+
return this.layers
|
|
477
|
+
.filter((l) => !l.baseLayer)
|
|
478
|
+
.reduce((prev, current) => {
|
|
479
|
+
return prev.zIndex > current.zIndex ? prev : current;
|
|
480
|
+
}, { zIndex: undefined, id: undefined });
|
|
481
|
+
}
|
|
482
|
+
isUpperBaselayer(layer) {
|
|
483
|
+
const index = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
484
|
+
if (this.layers &&
|
|
485
|
+
this.layers[index - 1] &&
|
|
486
|
+
this.layers[index - 1].baseLayer === true) {
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
return false;
|
|
490
|
+
}
|
|
491
|
+
moveActiveLayer(activeLayer, actiontype, fromUi = false) {
|
|
492
|
+
const sortedLayersToMove = [];
|
|
493
|
+
getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
494
|
+
let rootParentByProperty = getRootParentByProperty(this.map, activeLayer, LinkedProperties.ZINDEX);
|
|
495
|
+
if (!rootParentByProperty) {
|
|
496
|
+
rootParentByProperty = activeLayer;
|
|
497
|
+
}
|
|
498
|
+
const layersToMove = [rootParentByProperty];
|
|
499
|
+
getAllChildLayersByProperty(this.map, rootParentByProperty, layersToMove, LinkedProperties.ZINDEX);
|
|
500
|
+
this.layers.map(layer => {
|
|
501
|
+
if (layersToMove.indexOf(layer) !== -1) {
|
|
502
|
+
sortedLayersToMove.push(layer);
|
|
503
|
+
}
|
|
504
|
+
});
|
|
505
|
+
if (actiontype === LayerListDisplacement.Raise) {
|
|
506
|
+
this.raiseLayers(sortedLayersToMove, fromUi);
|
|
507
|
+
}
|
|
508
|
+
else if (actiontype === LayerListDisplacement.Lower) {
|
|
509
|
+
this.lowerLayers(sortedLayersToMove, fromUi);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
/*
|
|
513
|
+
* For selection mode disabled attribute
|
|
514
|
+
*/
|
|
515
|
+
raisableLayers(layers) {
|
|
516
|
+
let response = false;
|
|
517
|
+
let base = 0;
|
|
518
|
+
for (const layer of layers) {
|
|
519
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
520
|
+
const currentLayer = this.layers[mapIndex];
|
|
521
|
+
if (currentLayer.baseLayer) {
|
|
522
|
+
base += 1;
|
|
523
|
+
}
|
|
524
|
+
const previousLayer = this.layers[mapIndex - 1];
|
|
525
|
+
if (previousLayer &&
|
|
526
|
+
previousLayer.baseLayer !== true &&
|
|
527
|
+
!layers.find((lay) => previousLayer.id === lay.id) &&
|
|
528
|
+
currentLayer.baseLayer !== true) {
|
|
529
|
+
response = true;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
533
|
+
base === this.layersChecked.length) {
|
|
534
|
+
response = false;
|
|
535
|
+
}
|
|
536
|
+
return response;
|
|
537
|
+
}
|
|
538
|
+
/*
|
|
539
|
+
* When multiple layers is selected but some may be allow to move
|
|
540
|
+
*/
|
|
541
|
+
raisableLayer(index) {
|
|
542
|
+
if (index < 1) {
|
|
543
|
+
return false;
|
|
544
|
+
}
|
|
545
|
+
if (this.layers[index - 1].options.check) {
|
|
546
|
+
return this.raisableLayer(index - 1);
|
|
547
|
+
}
|
|
548
|
+
return true;
|
|
549
|
+
}
|
|
550
|
+
raiseLayers(layers, fromUi = true) {
|
|
551
|
+
const layersToRaise = [];
|
|
552
|
+
for (const layer of layers) {
|
|
553
|
+
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
554
|
+
if (this.raisableLayer(index)) {
|
|
555
|
+
layersToRaise.push(layer);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
this.map.raiseLayers(layersToRaise);
|
|
559
|
+
if (fromUi) {
|
|
560
|
+
setTimeout(() => {
|
|
561
|
+
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
562
|
+
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
563
|
+
let targetToScroll;
|
|
564
|
+
if (checkItems.length) {
|
|
565
|
+
targetToScroll = checkItems[0];
|
|
566
|
+
}
|
|
567
|
+
if (itemFocused.length) {
|
|
568
|
+
targetToScroll = itemFocused[0];
|
|
569
|
+
}
|
|
570
|
+
if (targetToScroll) {
|
|
571
|
+
scrollIntoView(targetToScroll, {
|
|
572
|
+
scrollMode: 'if-needed',
|
|
573
|
+
behavior: 'smooth',
|
|
574
|
+
block: 'end',
|
|
575
|
+
inline: 'nearest'
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
}, 100);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
/*
|
|
582
|
+
* For selection mode disabled attribute
|
|
583
|
+
*/
|
|
584
|
+
lowerableLayers(layers) {
|
|
585
|
+
let response = false;
|
|
586
|
+
let base = 0;
|
|
587
|
+
for (const layer of layers) {
|
|
588
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
589
|
+
const currentLayer = this.layers[mapIndex];
|
|
590
|
+
if (currentLayer.baseLayer) {
|
|
591
|
+
base += 1;
|
|
592
|
+
}
|
|
593
|
+
const nextLayer = this.layers[mapIndex + 1];
|
|
594
|
+
if (nextLayer &&
|
|
595
|
+
nextLayer.baseLayer !== true &&
|
|
596
|
+
!layers.find((lay) => nextLayer.id === lay.id)) {
|
|
597
|
+
response = true;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
if ((this.layersChecked.length === 1 && this.layersChecked[0].baseLayer) ||
|
|
601
|
+
base === this.layersChecked.length) {
|
|
602
|
+
response = false;
|
|
603
|
+
}
|
|
604
|
+
return response;
|
|
605
|
+
}
|
|
606
|
+
/*
|
|
607
|
+
* When multiple layers is selected but some may be allow to move
|
|
608
|
+
*/
|
|
609
|
+
lowerableLayer(index) {
|
|
610
|
+
if (index >
|
|
611
|
+
this.layers.filter((lay) => lay.baseLayer !== true).length - 2) {
|
|
612
|
+
return false;
|
|
613
|
+
}
|
|
614
|
+
if (this.layers[index + 1].options.check) {
|
|
615
|
+
return this.lowerableLayer(index + 1);
|
|
616
|
+
}
|
|
617
|
+
return true;
|
|
618
|
+
}
|
|
619
|
+
lowerLayers(layers, fromUi = true) {
|
|
620
|
+
const layersToLower = [];
|
|
621
|
+
for (const layer of layers) {
|
|
622
|
+
const index = this.layers.findIndex((lay) => lay.id === layer.id);
|
|
623
|
+
if (this.lowerableLayer(index)) {
|
|
624
|
+
layersToLower.push(layer);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
this.map.lowerLayers(layersToLower);
|
|
628
|
+
if (fromUi) {
|
|
629
|
+
setTimeout(() => {
|
|
630
|
+
const checkItems = this.elRef.nativeElement.getElementsByClassName('mat-checkbox-checked');
|
|
631
|
+
const itemFocused = this.elRef.nativeElement.getElementsByClassName('igo-layer-item-focused');
|
|
632
|
+
let targetToScroll;
|
|
633
|
+
if (checkItems.length) {
|
|
634
|
+
targetToScroll = checkItems[checkItems.length - 1];
|
|
635
|
+
}
|
|
636
|
+
if (itemFocused.length) {
|
|
637
|
+
targetToScroll = itemFocused[0];
|
|
638
|
+
}
|
|
639
|
+
if (targetToScroll) {
|
|
640
|
+
scrollIntoView(targetToScroll, {
|
|
641
|
+
scrollMode: 'if-needed',
|
|
642
|
+
behavior: 'smooth',
|
|
643
|
+
block: 'end',
|
|
644
|
+
inline: 'nearest'
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
}, 100);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
next() {
|
|
651
|
+
this.change$.next();
|
|
652
|
+
}
|
|
653
|
+
computeLayers(layers) {
|
|
654
|
+
let layersOut = this.filterLayers(layers);
|
|
655
|
+
if (this.sortAlpha) {
|
|
656
|
+
layersOut = this.sortLayersByTitle(layersOut);
|
|
657
|
+
}
|
|
658
|
+
else {
|
|
659
|
+
layersOut = this.sortLayersByZindex(layersOut);
|
|
660
|
+
}
|
|
661
|
+
return layersOut;
|
|
662
|
+
}
|
|
663
|
+
onKeywordChange(term) {
|
|
664
|
+
this.keyword = term;
|
|
665
|
+
}
|
|
666
|
+
onAppliedFilterAndSortChange(appliedFilter) {
|
|
667
|
+
this.keyword = appliedFilter.keyword;
|
|
668
|
+
this.onlyVisible = appliedFilter.onlyVisible;
|
|
669
|
+
this.sortAlpha = appliedFilter.sortAlpha;
|
|
670
|
+
}
|
|
671
|
+
filterLayers(layers) {
|
|
672
|
+
if (this.layerFilterAndSortOptions.showToolbar === LayerListControlsEnum.never) {
|
|
673
|
+
return layers;
|
|
674
|
+
}
|
|
675
|
+
if (!this.keyword && !this.onlyVisible) {
|
|
676
|
+
return layers;
|
|
677
|
+
}
|
|
678
|
+
const keepLayerIds = layers.map((layer) => layer.id);
|
|
679
|
+
layers.forEach((layer) => {
|
|
680
|
+
const layerOptions = layer.options || {};
|
|
681
|
+
const dataSourceOptions = layer.dataSource.options || {};
|
|
682
|
+
const metadata = layerOptions.metadata || {};
|
|
683
|
+
const keywords = metadata.keywordList || [];
|
|
684
|
+
const layerKeywords = keywords.map((kw) => {
|
|
685
|
+
return kw.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
686
|
+
});
|
|
687
|
+
if (this.keyword && layer.title) {
|
|
688
|
+
const localKeyword = this.keyword
|
|
689
|
+
.normalize('NFD')
|
|
690
|
+
.replace(/[\u0300-\u036f]/g, '');
|
|
691
|
+
const layerTitle = layer.title
|
|
692
|
+
.normalize('NFD')
|
|
693
|
+
.replace(/[\u0300-\u036f]/g, '');
|
|
694
|
+
const dataSourceType = dataSourceOptions.type || '';
|
|
695
|
+
const keywordRegex = new RegExp(localKeyword, 'gi');
|
|
696
|
+
const keywordInList = layerKeywords.find((kw) => keywordRegex.test(kw)) !==
|
|
697
|
+
undefined;
|
|
698
|
+
if (!keywordRegex.test(layerTitle) &&
|
|
699
|
+
!(this.keyword.toLowerCase() === dataSourceType.toLowerCase()) &&
|
|
700
|
+
!keywordInList) {
|
|
701
|
+
const index = keepLayerIds.indexOf(layer.id);
|
|
702
|
+
if (index > -1) {
|
|
703
|
+
keepLayerIds.splice(index, 1);
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
if (this.onlyVisible && layer.visible === false) {
|
|
708
|
+
const index = keepLayerIds.indexOf(layer.id);
|
|
709
|
+
if (index > -1) {
|
|
710
|
+
keepLayerIds.splice(index, 1);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
return layers.filter((layer) => keepLayerIds.indexOf(layer.id) !== -1);
|
|
715
|
+
}
|
|
716
|
+
sortLayersByZindex(layers) {
|
|
717
|
+
return layers.sort((layer1, layer2) => layer2.zIndex - layer1.zIndex);
|
|
718
|
+
}
|
|
719
|
+
sortLayersByTitle(layers) {
|
|
720
|
+
return layers.sort((a, b) => {
|
|
721
|
+
if (this.normalize(a.title) < this.normalize(b.title)) {
|
|
722
|
+
return -1;
|
|
723
|
+
}
|
|
724
|
+
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
725
|
+
return 1;
|
|
726
|
+
}
|
|
727
|
+
return 0;
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
normalize(str) {
|
|
731
|
+
return str
|
|
732
|
+
.normalize('NFD')
|
|
733
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
734
|
+
.toLowerCase();
|
|
735
|
+
}
|
|
736
|
+
computeShowToolbar() {
|
|
737
|
+
switch (this.layerFilterAndSortOptions.showToolbar) {
|
|
738
|
+
case LayerListControlsEnum.always:
|
|
739
|
+
return true;
|
|
740
|
+
case LayerListControlsEnum.never:
|
|
741
|
+
return false;
|
|
742
|
+
default:
|
|
743
|
+
if (this.layers.length >= this.thresholdToFilterAndSort ||
|
|
744
|
+
this.keyword ||
|
|
745
|
+
this.onlyVisible) {
|
|
746
|
+
return true;
|
|
747
|
+
}
|
|
748
|
+
return false;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
toggleLayerTool(layer) {
|
|
752
|
+
this.toggleOpacity = false;
|
|
753
|
+
if (this.layerTool && layer === this.activeLayer) {
|
|
754
|
+
this.layerTool = false;
|
|
755
|
+
}
|
|
756
|
+
else {
|
|
757
|
+
this.layerTool = true;
|
|
758
|
+
}
|
|
759
|
+
for (const lay of this.layers) {
|
|
760
|
+
lay.options.active = false;
|
|
761
|
+
}
|
|
762
|
+
layer.options.active = true;
|
|
763
|
+
this.activeLayer = layer;
|
|
764
|
+
}
|
|
765
|
+
removeLayers(layers) {
|
|
766
|
+
if (layers && layers.length > 0) {
|
|
767
|
+
this.layersChecked = [];
|
|
768
|
+
for (const layer of layers) {
|
|
769
|
+
if (layer.options.removable !== false) {
|
|
770
|
+
layer.map.removeLayer(layer);
|
|
771
|
+
}
|
|
772
|
+
else {
|
|
773
|
+
this.layersChecked.push(layer);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
else if (!layers && this.activeLayer.options.removable !== false) {
|
|
778
|
+
this.activeLayer.map.removeLayer(this.activeLayer);
|
|
779
|
+
this.layerTool = false;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
toggleVisibility(layers) {
|
|
783
|
+
if (layers && layers.length > 0) {
|
|
784
|
+
for (const layer of layers) {
|
|
785
|
+
layer.visible = this.hideSelectedLayers;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
this.layerItemChangeDetection$.next(true);
|
|
789
|
+
}
|
|
790
|
+
isLayerRemovable(layer) {
|
|
791
|
+
return layer.options.removable !== false;
|
|
792
|
+
}
|
|
793
|
+
isAllLayersRemovable(layers) {
|
|
794
|
+
return layers.every(l => this.isLayerRemovable(l));
|
|
795
|
+
}
|
|
796
|
+
get statusSelectedLayersCheck() {
|
|
797
|
+
let statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
798
|
+
let findTrue = false;
|
|
799
|
+
let findFalse = false;
|
|
800
|
+
if (this.layersChecked.length === 0) {
|
|
801
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.NULL;
|
|
802
|
+
}
|
|
803
|
+
else {
|
|
804
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.MIXED;
|
|
805
|
+
this.hideSelectedLayers = false;
|
|
806
|
+
for (const layer2 of this.layersChecked) {
|
|
807
|
+
if (layer2.visible === true) {
|
|
808
|
+
findTrue = true;
|
|
809
|
+
}
|
|
810
|
+
if (layer2.visible === false) {
|
|
811
|
+
findFalse = true;
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
if (findTrue === true && findFalse === false) {
|
|
815
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_VISIBLE;
|
|
816
|
+
}
|
|
817
|
+
if (findTrue === false && findFalse === true) {
|
|
818
|
+
statusSelectedLayers = LayerListSelectVisibleEnum.ALL_HIDDEN;
|
|
819
|
+
this.hideSelectedLayers = true;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
return statusSelectedLayers;
|
|
823
|
+
}
|
|
824
|
+
layersCheck(event) {
|
|
825
|
+
event.layer.options.check = event.check;
|
|
826
|
+
if (event.check === true) {
|
|
827
|
+
const eventMapIndex = this.layers.findIndex((layer) => event.layer.id === layer.id);
|
|
828
|
+
for (const layer of this.layersChecked) {
|
|
829
|
+
const mapIndex = this.layers.findIndex((lay) => layer.id === lay.id);
|
|
830
|
+
if (eventMapIndex < mapIndex) {
|
|
831
|
+
this.layersChecked.splice(this.layersChecked.findIndex((lay) => layer.id === lay.id), 0, event.layer);
|
|
832
|
+
if (this.excludeBaseLayers) {
|
|
833
|
+
if (this.layersChecked.length ===
|
|
834
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
835
|
+
this.selectAllCheck = true;
|
|
836
|
+
}
|
|
837
|
+
else {
|
|
838
|
+
this.selectAllCheck = false;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
else if (!this.excludeBaseLayers) {
|
|
842
|
+
if (this.layersChecked.length ===
|
|
843
|
+
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
844
|
+
this.selectAllCheck = true;
|
|
845
|
+
}
|
|
846
|
+
else {
|
|
847
|
+
this.selectAllCheck = false;
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
this.layersChecked.push(event.layer);
|
|
854
|
+
}
|
|
855
|
+
else {
|
|
856
|
+
const index = this.layersChecked.findIndex((layer) => event.layer.id === layer.id);
|
|
857
|
+
this.layersChecked.splice(index, 1);
|
|
858
|
+
}
|
|
859
|
+
if (this.excludeBaseLayers) {
|
|
860
|
+
if (this.layersChecked.length ===
|
|
861
|
+
this.layers.filter((lay) => lay.baseLayer !== true && lay.showInLayerList).length) {
|
|
862
|
+
this.selectAllCheck = true;
|
|
863
|
+
}
|
|
864
|
+
else {
|
|
865
|
+
this.selectAllCheck = false;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
else if (!this.excludeBaseLayers) {
|
|
869
|
+
if (this.layersChecked.length ===
|
|
870
|
+
this.layers.filter((lay) => lay.showInLayerList).length) {
|
|
871
|
+
this.selectAllCheck = true;
|
|
872
|
+
}
|
|
873
|
+
else {
|
|
874
|
+
this.selectAllCheck = false;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
toggleSelectionMode(value) {
|
|
879
|
+
this.selection = value;
|
|
880
|
+
this.activeLayer = undefined;
|
|
881
|
+
if (value === true) {
|
|
882
|
+
this.layerTool = false;
|
|
883
|
+
for (const layer of this.layers) {
|
|
884
|
+
if (layer.options.check) {
|
|
885
|
+
this.layersChecked.push(layer);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
layersCheckedOpacity() {
|
|
891
|
+
if (this.layersChecked.length > 1) {
|
|
892
|
+
return 1;
|
|
893
|
+
}
|
|
894
|
+
else {
|
|
895
|
+
const opacity = [];
|
|
896
|
+
for (const layer of this.layersChecked) {
|
|
897
|
+
opacity.push(layer.opacity);
|
|
898
|
+
}
|
|
899
|
+
return opacity;
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
selectAll() {
|
|
903
|
+
if (!this.selectAllCheck) {
|
|
904
|
+
for (const layer of this.layers) {
|
|
905
|
+
if (this.excludeBaseLayers &&
|
|
906
|
+
layer.baseLayer !== true &&
|
|
907
|
+
layer.showInLayerList) {
|
|
908
|
+
layer.options.check = true;
|
|
909
|
+
this.layersChecked.push(layer);
|
|
910
|
+
}
|
|
911
|
+
else if (!this.excludeBaseLayers && layer.showInLayerList) {
|
|
912
|
+
layer.options.check = true;
|
|
913
|
+
this.layersChecked.push(layer);
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
this.selectAllCheck$.next(true);
|
|
917
|
+
}
|
|
918
|
+
else {
|
|
919
|
+
for (const layer of this.layers) {
|
|
920
|
+
layer.options.check = false;
|
|
921
|
+
}
|
|
922
|
+
this.layersChecked = [];
|
|
923
|
+
this.selectAllCheck$.next(false);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
isScrolledIntoView(elemSource, elem) {
|
|
927
|
+
const docViewTop = elemSource.scrollTop;
|
|
928
|
+
const docViewBottom = docViewTop + elemSource.clientHeight;
|
|
929
|
+
const elemTop = elem.offsetTop;
|
|
930
|
+
const elemBottom = elemTop + elem.clientHeight;
|
|
931
|
+
return elemBottom <= docViewBottom && elemTop >= docViewTop;
|
|
932
|
+
}
|
|
933
|
+
removeProblemLayerInList(layersList) {
|
|
934
|
+
for (const layer of layersList) {
|
|
935
|
+
if (layer.olLoadingProblem === true) {
|
|
936
|
+
this.map.removeLayer(layer);
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
return layersList;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
LayerListComponent.ɵfac = function LayerListComponent_Factory(t) { return new (t || LayerListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
943
|
+
LayerListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerListComponent, selectors: [["igo-layer-list"]], contentQueries: function LayerListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
944
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
945
|
+
} if (rf & 2) {
|
|
946
|
+
let _t;
|
|
947
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateLayerToolbar = _t.first);
|
|
948
|
+
} }, inputs: { layersAreAllVisible: "layersAreAllVisible", ogcButton: "ogcButton", timeButton: "timeButton", map: "map", layers: "layers", floatLabel: "floatLabel", layerFilterAndSortOptions: "layerFilterAndSortOptions", excludeBaseLayers: "excludeBaseLayers", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", queryBadge: "queryBadge" }, outputs: { appliedFilterAndSort: "appliedFilterAndSort" }, ngContentSelectors: _c4, decls: 11, vars: 16, consts: [["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection", 4, "ngIf"], ["class", "select-all", 4, "ngIf"], [3, "ngClass", "navigation", "selection"], ["igoList", ""], ["ngFor", "", 3, "ngForOf"], ["class", "igo-layer-actions-container", 3, "title", 4, "ngIf"], ["floatLabel", "auto", 3, "layersAreAllVisible", "term", "onlyVisible", "sortAlpha", "appliedFilterAndSort", "selection"], [1, "select-all"], [1, "select-all-checkbox", "mat-subheading-2", 3, "color", "checked", "indeterminate", "change"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox", 4, "ngIf"], ["igoListItem", "", 3, "layer", "activeLayer", "orderable", "lowerDisabled", "raiseDisabled", "queryBadge", "expandLegendIfVisible", "updateLegendOnResolutionChange", "toggleLegendOnVisibilityChange", "selectionMode", "selectAll", "layerCheck", "changeDetection", "action", "checkbox"], [1, "igo-layer-actions-container", 3, "title"], [1, "igo-layer-button-group"], ["class", "delete-button", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "down-button", 3, "matTooltip", "disabled", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-down", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "up-button", 3, "matTooltip", "disabled", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "arrow-up", 3, "matBadge", "matBadgeHidden"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "matMenuTriggerFor", "matTooltip"], ["matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "opacity", 3, "matBadge"], [1, "mat-menu-opacity-slider"], ["opacityMenu", "matMenu"], ["id", "opacity-menu"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "value", "matTooltip", "input", "click"], ["class", "zoomLayer-button", "color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoLayerItemToolbar", "", 3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "matTooltip", "click"], ["svgIcon", "delete"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "zoomLayer-button", 3, "matTooltip", "click"], ["matBadgeColor", "primary", "matBadgeSize", "medium", "svgIcon", "magnify-scan"], [1, "actions-buttons-multi"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "delete-button", 3, "disabled", "matTooltip", "click"], ["matBadgeColor", "warn", "matBadgeSize", "medium", "svgIcon", "delete", 3, "matBadge", "matBadgeHidden"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "eye-button", 3, "disabled", "matTooltip", "click"], [3, "svgIcon"], ["color", "primary", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "opacity-button", 3, "disabled", "matMenuTriggerFor", "matTooltip"], ["svgIcon", "opacity"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click", 4, "ngIf"], ["id", "opacity-slider", "color", "primary", "thumbLabel", "", "tickInterval", "5", "step", "5", "matTooltipShowDelay", "500", "tooltip-position", "below", 3, "min", "max", "ngModel", "matTooltip", "ngModelChange", "click"], ["svgIcon", "magnify-scan"]], template: function LayerListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
949
|
+
i0.ɵɵprojectionDef(_c2);
|
|
950
|
+
i0.ɵɵelementStart(0, "mat-list");
|
|
951
|
+
i0.ɵɵtemplate(1, LayerListComponent_igo_layer_list_tool_1_Template, 1, 4, "igo-layer-list-tool", 0);
|
|
952
|
+
i0.ɵɵpipe(2, "async");
|
|
953
|
+
i0.ɵɵelementEnd();
|
|
954
|
+
i0.ɵɵtemplate(3, LayerListComponent_mat_list_item_3_Template, 5, 8, "mat-list-item", 1);
|
|
955
|
+
i0.ɵɵelement(4, "mat-divider");
|
|
956
|
+
i0.ɵɵelementStart(5, "igo-list", 2, 3);
|
|
957
|
+
i0.ɵɵtemplate(7, LayerListComponent_ng_template_7_Template, 1, 1, "ng-template", 4);
|
|
958
|
+
i0.ɵɵpipe(8, "async");
|
|
959
|
+
i0.ɵɵelementEnd();
|
|
960
|
+
i0.ɵɵtemplate(9, LayerListComponent_igo_panel_9_Template, 22, 34, "igo-panel", 5);
|
|
961
|
+
i0.ɵɵtemplate(10, LayerListComponent_igo_panel_10_Template, 27, 41, "igo-panel", 5);
|
|
962
|
+
} if (rf & 2) {
|
|
963
|
+
i0.ɵɵadvance(1);
|
|
964
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 8, ctx.showToolbar$));
|
|
965
|
+
i0.ɵɵadvance(2);
|
|
966
|
+
i0.ɵɵproperty("ngIf", ctx.selection);
|
|
967
|
+
i0.ɵɵadvance(2);
|
|
968
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(12, _c3, ctx.selection, ctx.layerTool && !ctx.selection, !ctx.layerTool && !ctx.selection))("navigation", false)("selection", false);
|
|
969
|
+
i0.ɵɵadvance(2);
|
|
970
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(8, 10, ctx.layers$));
|
|
971
|
+
i0.ɵɵadvance(2);
|
|
972
|
+
i0.ɵɵproperty("ngIf", !ctx.selection && ctx.layerTool && ctx.activeLayer);
|
|
973
|
+
i0.ɵɵadvance(1);
|
|
974
|
+
i0.ɵɵproperty("ngIf", ctx.selection && ctx.layers.length > 0);
|
|
975
|
+
} }, styles: ["[_nghost-%COMP%] .igo-list-no-tools[_ngcontent-%COMP%]{height:calc(100% - 57px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-single[_ngcontent-%COMP%]{height:calc(100% - 153px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-multi[_ngcontent-%COMP%]{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container[_ngcontent-%COMP%]{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{text-align:center}mat-list-item[_ngcontent-%COMP%] .mat-list-item-content{margin-bottom:10px}mat-checkbox[_ngcontent-%COMP%] .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider[_ngcontent-%COMP%]{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group[_ngcontent-%COMP%], .actions-buttons-multi[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar{height:4px}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-track, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group[_ngcontent-%COMP%]{padding-top:5px}[_nghost-%COMP%] igo-panel[_ngcontent-%COMP%]{height:auto;height:initial}#opacity-menu[_ngcontent-%COMP%]{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu[_ngcontent-%COMP%] .mat-menu-content[_ngcontent-%COMP%]:not(:empty){padding-top:20px}.select-all[_ngcontent-%COMP%] .mat-list-item-content{margin:0}"], changeDetection: 0 });
|
|
976
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListComponent, [{
|
|
977
|
+
type: Component,
|
|
978
|
+
args: [{ selector: 'igo-layer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list>\n <igo-layer-list-tool *ngIf=\"showToolbar$ | async\"\n floatLabel=\"auto\"\n [layersAreAllVisible]=\"layersAreAllVisible\"\n [term]=\"layerFilterAndSortOptions.keyword\"\n [onlyVisible]=\"layerFilterAndSortOptions.onlyVisible\"\n [sortAlpha]=\"layerFilterAndSortOptions.sortAlpha\"\n (appliedFilterAndSort)=\"onAppliedFilterAndSortChange($event)\"\n (selection)=\"toggleSelectionMode($event)\">\n </igo-layer-list-tool>\n</mat-list>\n\n<mat-list-item *ngIf=\"selection\" class=\"select-all\">\n <mat-checkbox\n class=\"select-all-checkbox mat-subheading-2\"\n [color]=\"!selectAllCheck && layersChecked.length > 0 ? 'accent' : 'primary'\"\n (change)=\"selectAll()\"\n [checked]=\"selectAllCheck\"\n [indeterminate]=\"!selectAllCheck && layersChecked.length > 0\"> {{selectAllCheck ? ('igo.geo.layer.deselectAll' | translate) : ('igo.geo.layer.selectAll' | translate)}}\n </mat-checkbox>\n</mat-list-item>\n<mat-divider></mat-divider>\n\n<igo-list #igoList [ngClass]=\"{'igo-list-tools-multi': selection, 'igo-list-tools-single': (layerTool && !selection), 'igo-list-no-tools': (!layerTool && !selection)}\" [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem\n [layer]=\"layer\"\n [activeLayer]=\"activeLayer\"\n [orderable]=\"orderable && !layer.baseLayer\"\n [lowerDisabled]=\"getLowerLayer().id === layer.id\"\n [raiseDisabled]=\"getUpperLayer().id === layer.id\"\n [queryBadge]=\"queryBadge\"\n [expandLegendIfVisible]=\"expandLegendOfVisibleLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [selectionMode]=\"selection\"\n [selectAll]=\"selectAllCheck\"\n [layerCheck]=\"layer.options.check\"\n [changeDetection]=\"layerItemChangeDetection$\"\n (action)=\"toggleLayerTool($event)\"\n (checkbox)=\"layersCheck($event)\">\n </igo-layer-item>\n </ng-template>\n</igo-list>\n\n<igo-panel *ngIf=\"!selection && layerTool && activeLayer\" class=\"igo-layer-actions-container\" [title]=\"activeLayer.title\">\n <div class=\"igo-layer-button-group\">\n <button\n *ngIf=\"isLayerRemovable(activeLayer)\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.removeLayer' | translate\"\n (click)=\"removeLayers()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Lower, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabled\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Raise, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabled\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <!-- <label>{{ 'igo.geo.layer.opacity' | translate }} </label> -->\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon [matBadge]=\"badgeOpacity\" matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [value]=\"opacity\"\n (input)=\"changeOpacity($event)\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n (click) = \"$event.stopPropagation()\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"activeLayerExtentIsValid(activeLayer)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayer' | translate\"\n (click)=\"zoomLayerExtents(activeLayer)\">\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n\n <ng-container igoLayerItemToolbar\n [ngTemplateOutlet]=\"templateLayerToolbar\"\n [ngTemplateOutletContext]=\"{layer: activeLayer}\">\n </ng-container>\n\n <ng-content select=\"[igoLayerItemToolbar]\"></ng-content>\n </div>\n</igo-panel>\n\n<igo-panel *ngIf=\"selection && layers.length > 0\" class=\"igo-layer-actions-container\" [title]=\"'igo.geo.layer.tools' | translate\">\n <div class=\"actions-buttons-multi\">\n <button\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"isAllLayersRemovable(layersChecked) ? ('igo.geo.layer.removeSelectedLayers' | translate) : 'igo.geo.layer.removeSelectedLayersRestriction' | translate\"\n (click)=\"removeLayers(layersChecked)\">\n <mat-icon [matBadge]=\"'!'\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"isAllLayersRemovable(layersChecked)\"\n svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"eye-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"statusSelectedLayersCheck === 'ALL_HIDDEN' ? ('igo.geo.layer.showSelectedLayers' | translate) : ('igo.geo.layer.hideSelectedLayers' | translate)\"\n (click)=\"toggleVisibility(layersChecked)\">\n <mat-icon\t[svgIcon]=\"(statusSelectedLayersCheck === 'ALL_HIDDEN') ? 'eye-off' : 'eye'\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabledSelection\"\n (click)=\"lowerLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabledSelection\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabledSelection\"\n (click)=\"raiseLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabledSelection\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider *ngIf=\"layersChecked.length\"\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [(ngModel)]=\"checkOpacity\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\"\n (click) = \"$event.stopPropagation()\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"layersChecked.length !== 0 && activeLayersExtentAreValid(layersChecked)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayers' | translate\"\n (click)=\"zoomLayersExtents(layersChecked)\">\n <mat-icon svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n </div>\n</igo-panel>\n", styles: [":host .igo-list-no-tools{height:calc(100% - 57px);padding-top:8px}:host .igo-list-tools-single{height:calc(100% - 153px);padding-top:8px}:host .igo-list-tools-multi{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container>div{text-align:center}mat-list-item ::ng-deep .mat-list-item-content{margin-bottom:10px}mat-checkbox ::ng-deep .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group,.actions-buttons-multi{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group::-webkit-scrollbar,.actions-buttons-multi::-webkit-scrollbar{height:4px}.igo-layer-button-group::-webkit-scrollbar-track,.actions-buttons-multi::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group::-webkit-scrollbar-thumb,.actions-buttons-multi::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group::-webkit-scrollbar-thumb:hover,.actions-buttons-multi::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group{padding-top:5px}:host igo-panel{height:auto;height:initial}#opacity-menu{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu .mat-menu-content:not(:empty){padding-top:20px}.select-all ::ng-deep .mat-list-item-content{margin:0}\n"] }]
|
|
979
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { templateLayerToolbar: [{
|
|
980
|
+
type: ContentChild,
|
|
981
|
+
args: ['igoLayerItemToolbar', /* TODO: add static flag */ {}]
|
|
982
|
+
}], layersAreAllVisible: [{
|
|
983
|
+
type: Input
|
|
984
|
+
}], ogcButton: [{
|
|
985
|
+
type: Input
|
|
986
|
+
}], timeButton: [{
|
|
987
|
+
type: Input
|
|
988
|
+
}], map: [{
|
|
989
|
+
type: Input
|
|
990
|
+
}], layers: [{
|
|
991
|
+
type: Input
|
|
992
|
+
}], floatLabel: [{
|
|
993
|
+
type: Input
|
|
994
|
+
}], layerFilterAndSortOptions: [{
|
|
995
|
+
type: Input
|
|
996
|
+
}], excludeBaseLayers: [{
|
|
997
|
+
type: Input
|
|
998
|
+
}], toggleLegendOnVisibilityChange: [{
|
|
999
|
+
type: Input
|
|
1000
|
+
}], expandLegendOfVisibleLayers: [{
|
|
1001
|
+
type: Input
|
|
1002
|
+
}], updateLegendOnResolutionChange: [{
|
|
1003
|
+
type: Input
|
|
1004
|
+
}], queryBadge: [{
|
|
1005
|
+
type: Input
|
|
1006
|
+
}], appliedFilterAndSort: [{
|
|
1007
|
+
type: Output
|
|
1008
|
+
}] }); })();
|
|
1009
1009
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1saXN0L2xheWVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGlzdC9sYXllci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixZQUFZLEVBR1osTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLGNBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUd4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixLQUFLLEVBQ0wsS0FBSyxFQUNOLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztJQ25DekcsOENBTzRDO0lBRDFDLGdPQUF3QixlQUFBLDJDQUFvQyxDQUFBLElBQUMsNkxBQ2hELGVBQUEsa0NBQTJCLENBQUEsSUFEcUI7SUFFL0QsaUJBQXNCOzs7SUFOcEIsZ0VBQTJDLGtEQUFBLDZEQUFBLHlEQUFBOzs7O0lBUy9DLHdDQUFvRCxzQkFBQTtJQUloRCxr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UUFzQjVELGVBQTRDO1FBQTVDLHlFQUE0QztRQTZGNUMsZUFBb0M7UUFBcEMsNkRBQW9DOzt1RkQ5Rm5DLGtCQUFrQjtjQU45QixTQUFTOzJCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzZEQXlCL0Msb0JBQW9CO2tCQURuQixZQUFZO21CQUFDLHFCQUFxQixFQUFFLDJCQUEyQixDQUFDLEVBQUU7WUFHMUQsbUJBQW1CO2tCQUEzQixLQUFLO1lBRUcsU0FBUztrQkFBakIsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFHRixHQUFHO2tCQUROLEtBQUs7WUFVRixNQUFNO2tCQURULEtBQUs7WUFtQkcsVUFBVTtrQkFBbEIsS0FBSztZQUVHLHlCQUF5QjtrQkFBakMsS0FBSztZQUVHLGlCQUFpQjtrQkFBekIsS0FBSztZQUVHLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLDJCQUEyQjtrQkFBbkMsS0FBSztZQUVHLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFFSSxvQkFBb0I7a0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29udGVudENoaWxkLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCBzY3JvbGxJbnRvVmlldyBmcm9tICdzY3JvbGwtaW50by12aWV3LWlmLW5lZWRlZCc7XG5cbmltcG9ydCB7IEZsb2F0TGFiZWxUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBMYXllckxpc3RDb250cm9sc0VudW0sIExheWVyTGlzdERpc3BsYWNlbWVudCB9IGZyb20gJy4vbGF5ZXItbGlzdC5lbnVtJztcbmltcG9ydCB7IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtIH0gZnJvbSAnLi9sYXllci1saXN0LmVudW0nO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIEVNUFRZLFxuICB0aW1lclxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTWV0YWRhdGFPcHRpb25zLFxuICBNZXRhZGF0YUxheWVyT3B0aW9uc1xufSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyB9IGZyb20gJy4uL2xheWVyLWxpc3QtdG9vbC9sYXllci1saXN0LXRvb2wuaW50ZXJmYWNlJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQgeyBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWF0U2xpZGVyQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCAqIGFzIG9sZXh0ZW50IGZyb20gJ29sL2V4dGVudCc7XG5pbXBvcnQgeyBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHksIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5IH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMnO1xuXG4vLyBUT0RPOiBUaGlzIGNsYXNzIGNvdWxkIHVzZSBhIGNsZWFuIHVwLiBBbHNvLCBzb21lIG1ldGhvZHMgY291bGQgYmUgbW92ZWQgZWFsc2V3aGVyZVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWxheWVyLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xheWVyLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBvcmRlcmFibGUgPSB0cnVlO1xuICB0aHJlc2hvbGRUb0ZpbHRlckFuZFNvcnQgPSA1O1xuXG4gIGxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcblxuICBzaG93VG9vbGJhciQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBsYXllclRvb2w6IGJvb2xlYW47XG5cbiAgcHVibGljIGhpZGVTZWxlY3RlZExheWVyczogYm9vbGVhbiA9IHRydWU7XG4gIGFjdGl2ZUxheWVyJDogQmVoYXZpb3JTdWJqZWN0PExheWVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICBsYXllcnNDaGVja2VkOiBMYXllcltdID0gW107XG4gIHB1YmxpYyBzZWxlY3Rpb246IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBjaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGxheWVycyQkOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBsYXllckl0ZW1DaGFuZ2VEZXRlY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIEBDb250ZW50Q2hpbGQoJ2lnb0xheWVySXRlbVRvb2xiYXInLCAvKiBUT0RPOiBhZGQgc3RhdGljIGZsYWcgKi8ge30pXG4gIHRlbXBsYXRlTGF5ZXJUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIGxheWVyc0FyZUFsbFZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLl9tYXA7XG4gIH1cbiAgc2V0IG1hcCh2YWx1ZTogSWdvTWFwKSB7XG4gICAgdGhpcy5fbWFwID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfbWFwOiBJZ29NYXA7XG5cbiAgQElucHV0KClcbiAgc2V0IGxheWVycyh2YWx1ZTogTGF5ZXJbXSkge1xuICAgIHRoaXMuX2xheWVycyA9IHRoaXMucmVtb3ZlUHJvYmxlbUxheWVySW5MaXN0KHZhbHVlKTtcbiAgICB0aGlzLm5leHQoKTtcbiAgfVxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xuICAgIHJldHVybiB0aGlzLl9sYXllcnM7XG4gIH1cbiAgcHJpdmF0ZSBfbGF5ZXJzOiBMYXllcltdO1xuXG4gIHNldCBhY3RpdmVMYXllcih2YWx1ZTogTGF5ZXIpIHtcbiAgICB0aGlzLl9hY3RpdmVMYXllciA9IHZhbHVlO1xuICAgIHRoaXMuYWN0aXZlTGF5ZXIkLm5leHQodmFsdWUpO1xuICB9XG4gIGdldCBhY3RpdmVMYXllcigpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUxheWVyO1xuICB9XG4gIHByaXZhdGUgX2FjdGl2ZUxheWVyOiBMYXllcjtcblxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcblxuICBASW5wdXQoKSBsYXllckZpbHRlckFuZFNvcnRPcHRpb25zOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMgPSB7fTtcblxuICBASW5wdXQoKSBleGNsdWRlQmFzZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYXBwbGllZEZpbHRlckFuZFNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVyTGlzdENvbnRyb2xzT3B0aW9ucz4oKTtcblxuICBnZXQga2V5d29yZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9rZXl3b3JkO1xuICB9XG4gIHNldCBrZXl3b3JkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9rZXl3b3JkID0gdmFsdWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfa2V5d29yZCA9IHVuZGVmaW5lZDtcblxuICBnZXQgb25seVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29ubHlWaXNpYmxlO1xuICB9XG4gIHNldCBvbmx5VmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX29ubHlWaXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfb25seVZpc2libGUgPSBmYWxzZTtcblxuICBnZXQgc29ydEFscGhhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0ZWRBbHBoYTtcbiAgfVxuICBzZXQgc29ydEFscGhhKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc29ydGVkQWxwaGEgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9zb3J0ZWRBbHBoYSA9IGZhbHNlO1xuXG4gIGdldCBvcGFjaXR5KCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMuYWN0aXZlTGF5ZXIkLmdldFZhbHVlKCkub3BhY2l0eSAqIDEwMCk7XG4gIH1cbiAgc2V0IG9wYWNpdHkob3BhY2l0eTogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVMYXllciQuZ2V0VmFsdWUoKS5vcGFjaXR5ID0gb3BhY2l0eSAvIDEwMDtcbiAgfVxuXG4gIGdldCBiYWRnZU9wYWNpdHkoKSB7XG4gICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gMTAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wYWNpdHk7XG4gIH1cblxuICBnZXQgcmFpc2VEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5vcmRlcmFibGUgfHxcbiAgICAgIHRoaXMuYWN0aXZlTGF5ZXIuYmFzZUxheWVyIHx8XG4gICAgICB0aGlzLmdldFVwcGVyTGF5ZXIoKS5pZCA9PT0gdGhpcy5hY3RpdmVMYXllci5pZCB8fFxuICAgICAgdGhpcy5pc1VwcGVyQmFzZWxheWVyKHRoaXMuYWN0aXZlTGF5ZXIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxvd2VyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMub3JkZXJhYmxlIHx8XG4gICAgICB0aGlzLmFjdGl2ZUxheWVyLmJhc2VMYXllciB8fFxuICAgICAgdGhpcy5nZXRMb3dlckxheWVyKCkuaWQgPT09IHRoaXMuYWN0aXZlTGF5ZXIuaWQgfHxcbiAgICAgIHRoaXMuaXNMb3dlckJhc2VsYXllcih0aGlzLmFjdGl2ZUxheWVyKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCByYWlzZURpc2FibGVkU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgICF0aGlzLm9yZGVyYWJsZSB8fFxuICAgICAgIXRoaXMucmFpc2FibGVMYXllcnModGhpcy5sYXllcnNDaGVja2VkKSB8fFxuICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9PT0gdHJ1ZVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBsb3dlckRpc2FibGVkU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgICF0aGlzLm9yZGVyYWJsZSB8fFxuICAgICAgIXRoaXMubG93ZXJhYmxlTGF5ZXJzKHRoaXMubGF5ZXJzQ2hlY2tlZCkgfHxcbiAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgY2hlY2tPcGFjaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmxheWVyc0NoZWNrZWRPcGFjaXR5KCkgKiAxMDA7XG4gIH1cbiAgc2V0IGNoZWNrT3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xuICAgICAgbGF5ZXIub3BhY2l0eSA9IG9wYWNpdHkgLyAxMDA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxheWVyTGlzdERpc3BsYWNlbWVudCgpOiB0eXBlb2YgTGF5ZXJMaXN0RGlzcGxhY2VtZW50IHtcbiAgICByZXR1cm4gTGF5ZXJMaXN0RGlzcGxhY2VtZW50O1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU9wYWNpdHkgPSBmYWxzZTtcblxuICBwdWJsaWMgc2VsZWN0QWxsQ2hlY2s6IGJvb2xlYW47XG4gIHB1YmxpYyBzZWxlY3RBbGxDaGVjayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgc2VsZWN0QWxsQ2hlY2skJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIHNlYXJjaCB0ZXJtIHN0cmVhbSBhbmQgdHJpZ2dlciByZXNlYXJjaGVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UkJCA9IHRoaXMuY2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllcnMubGVuZ3RoID09PSAwID8gRU1QVFkgOiB0aW1lcig1MCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhciQubmV4dCh0aGlzLmNvbXB1dGVTaG93VG9vbGJhcigpKTtcbiAgICAgICAgdGhpcy5sYXllcnMkLm5leHQodGhpcy5jb21wdXRlTGF5ZXJzKHRoaXMubGF5ZXJzLnNsaWNlKDApKSk7XG4gICAgICAgIHRoaXMuYXBwbGllZEZpbHRlckFuZFNvcnQuZW1pdCh7XG4gICAgICAgICAga2V5d29yZDogdGhpcy5rZXl3b3JkLFxuICAgICAgICAgIHNvcnRBbHBoYTogdGhpcy5zb3J0QWxwaGEsXG4gICAgICAgICAgb25seVZpc2libGU6IHRoaXMub25seVZpc2libGVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2skJCA9IHRoaXMuc2VsZWN0QWxsQ2hlY2skLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLmxheWVycyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmxheWVycykge1xuICAgICAgICBsZXQgY2hlY2tzID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xuICAgICAgICAgIGxheWVyLnN0YXR1cyQuc3Vic2NyaWJlKHZhbFN0YXR1cyA9PiB7XG4gICAgICAgICAgICBpZiAodmFsU3RhdHVzID09PSAwKSB7XG4gICAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobGF5ZXIub3B0aW9ucy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXIgPSBsYXllcjtcbiAgICAgICAgICAgIHRoaXMubGF5ZXJUb29sID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxheWVyLm9wdGlvbnMuY2hlY2spIHtcbiAgICAgICAgICAgIGNoZWNrcyArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5leGNsdWRlQmFzZUxheWVycykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPVxuICAgICAgICAgICAgY2hlY2tzID09PVxuICAgICAgICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxheSkgPT4gbGF5LmJhc2VMYXllciAhPT0gdHJ1ZSAmJiBsYXkuc2hvd0luTGF5ZXJMaXN0XG4gICAgICAgICAgICAgICkubGVuZ3RoXG4gICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPVxuICAgICAgICAgICAgY2hlY2tzID09PSB0aGlzLmxheWVycy5maWx0ZXIoKGxheSkgPT4gbGF5LnNob3dJbkxheWVyTGlzdCkubGVuZ3RoXG4gICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zZWxlY3RBbGxDaGVjayQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5sYXllcnMkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYWN0aXZlTGF5ZXJFeHRlbnRJc1ZhbGlkKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgIGlmIChsYXllci5vcHRpb25zLnNob3dCdXR0b25ab29tVG9FeHRlbnQgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG4gICAgY29uc3QgbWF4TGF5ZXJab29tRXh0ZW50ID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50O1xuXG4gICAgaWYgKGxheWVyRXh0ZW50KSB7XG4gICAgICBpZiAobWF4TGF5ZXJab29tRXh0ZW50KSB7XG4gICAgICAgIHZhbGlkID0gb2xleHRlbnQuY29udGFpbnNFeHRlbnQobWF4TGF5ZXJab29tRXh0ZW50LCBsYXllckV4dGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIGFjdGl2ZUxheWVyc0V4dGVudEFyZVZhbGlkKGxheWVyczogTGF5ZXJbXSk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XG4gICAgY29uc3QgbWF4TGF5ZXJab29tRXh0ZW50ID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50O1xuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCAmJiAhbGF5ZXJFeHRlbnQuaW5jbHVkZXMoSW5maW5pdHkpKSB7XG4gICAgICAgIG9sZXh0ZW50LmV4dGVuZChsYXllcnNFeHRlbnQsIGxheWVyRXh0ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9sZXh0ZW50LmlzRW1wdHkobGF5ZXJzRXh0ZW50KSkge1xuICAgICAgaWYgKG1heExheWVyWm9vbUV4dGVudCkge1xuICAgICAgICB2YWxpZCA9IChvbGV4dGVudC5jb250YWluc0V4dGVudChtYXhMYXllclpvb21FeHRlbnQsIGxheWVyc0V4dGVudCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICB6b29tTGF5ZXJFeHRlbnRzKGxheWVyOiBMYXllcikge1xuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChsYXllci5vcHRpb25zLmV4dGVudCk7XG4gIH1cblxuICB6b29tTGF5ZXJzRXh0ZW50cyhsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCBsYXllcnNFeHRlbnQgPSBvbGV4dGVudC5jcmVhdGVFbXB0eSgpIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCkge1xuICAgICAgICBvbGV4dGVudC5leHRlbmQobGF5ZXJzRXh0ZW50LCBsYXllckV4dGVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChsYXllcnNFeHRlbnQpO1xuICB9XG5cbiAgY2hhbmdlT3BhY2l0eShldmVudDogTWF0U2xpZGVyQ2hhbmdlwqApe1xuICAgIHRoaXMub3BhY2l0eSA9IGV2ZW50LnZhbHVlO1xuICB9XG5cbiAgY2xlYXJLZXl3b3JkKCkge1xuICAgIHRoaXMua2V5d29yZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldExvd2VyTGF5ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzXG4gICAgICAuZmlsdGVyKChsKSA9PiAhbC5iYXNlTGF5ZXIpXG4gICAgICAucmVkdWNlKFxuICAgICAgICAocHJldiwgY3VycmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmV2LnpJbmRleCA8IGN1cnJlbnQuekluZGV4ID8gcHJldiA6IGN1cnJlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHsgekluZGV4OiB1bmRlZmluZWQsIGlkOiB1bmRlZmluZWQgfVxuICAgICAgKTtcbiAgfVxuXG4gIGlzTG93ZXJCYXNlbGF5ZXIobGF5ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleCgobGF5KSA9PiBsYXllci5pZCA9PT0gbGF5LmlkKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmxheWVycyAmJlxuICAgICAgdGhpcy5sYXllcnNbaW5kZXggKyAxXSAmJlxuICAgICAgdGhpcy5sYXllcnNbaW5kZXggKyAxXS5iYXNlTGF5ZXIgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRVcHBlckxheWVyKCkge1xuICAgIHJldHVybiB0aGlzLmxheWVyc1xuICAgICAgLmZpbHRlcigobCkgPT4gIWwuYmFzZUxheWVyKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJldi56SW5kZXggPiBjdXJyZW50LnpJbmRleCA/IHByZXYgOiBjdXJyZW50O1xuICAgICAgICB9LFxuICAgICAgICB7IHpJbmRleDogdW5kZWZpbmVkLCBpZDogdW5kZWZpbmVkIH1cbiAgICAgICk7XG4gIH1cblxuICBpc1VwcGVyQmFzZWxheWVyKGxheWVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5ZXIuaWQgPT09IGxheS5pZCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sYXllcnMgJiZcbiAgICAgIHRoaXMubGF5ZXJzW2luZGV4IC0gMV0gJiZcbiAgICAgIHRoaXMubGF5ZXJzW2luZGV4IC0gMV0uYmFzZUxheWVyID09PSB0cnVlXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbW92ZUFjdGl2ZUxheWVyKGFjdGl2ZUxheWVyOiBMYXllciwgYWN0aW9udHlwZTogTGF5ZXJMaXN0RGlzcGxhY2VtZW50LCBmcm9tVWk6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRlZExheWVyc1RvTW92ZSA9IFtdO1xuICAgIGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KHRoaXMubWFwLGFjdGl2ZUxheWVyLExpbmtlZFByb3BlcnRpZXMuWklOREVYKTtcbiAgICBsZXQgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eSh0aGlzLm1hcCxhY3RpdmVMYXllcixMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCk7XG4gICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xuICAgICAgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBhY3RpdmVMYXllcjtcbiAgICB9XG4gICAgY29uc3QgbGF5ZXJzVG9Nb3ZlID0gW3Jvb3RQYXJlbnRCeVByb3BlcnR5XTtcbiAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkodGhpcy5tYXAsIHJvb3RQYXJlbnRCeVByb3BlcnR5LCBsYXllcnNUb01vdmUsIExpbmtlZFByb3BlcnRpZXMuWklOREVYKTtcblxuICAgIHRoaXMubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAobGF5ZXJzVG9Nb3ZlLmluZGV4T2YobGF5ZXIpICE9PSAtMSkge1xuICAgICAgICBzb3J0ZWRMYXllcnNUb01vdmUucHVzaChsYXllcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWN0aW9udHlwZSA9PT0gTGF5ZXJMaXN0RGlzcGxhY2VtZW50LlJhaXNlKSB7XG4gICAgICB0aGlzLnJhaXNlTGF5ZXJzKHNvcnRlZExheWVyc1RvTW92ZSwgZnJvbVVpKTtcbiAgICB9IGVsc2UgaWYgKGFjdGlvbnR5cGUgPT09IExheWVyTGlzdERpc3BsYWNlbWVudC5Mb3dlcikge1xuICAgICAgdGhpcy5sb3dlckxheWVycyhzb3J0ZWRMYXllcnNUb01vdmUsIGZyb21VaSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogRm9yIHNlbGVjdGlvbiBtb2RlIGRpc2FibGVkIGF0dHJpYnV0ZVxuICAgKi9cbiAgcmFpc2FibGVMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgbGV0IHJlc3BvbnNlID0gZmFsc2U7XG4gICAgbGV0IGJhc2UgPSAwO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICBjb25zdCBtYXBJbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleCgobGF5KSA9PiBsYXllci5pZCA9PT0gbGF5LmlkKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRMYXllciA9IHRoaXMubGF5ZXJzW21hcEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50TGF5ZXIuYmFzZUxheWVyKSB7XG4gICAgICAgIGJhc2UgKz0gMTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldmlvdXNMYXllciA9IHRoaXMubGF5ZXJzW21hcEluZGV4IC0gMV07XG4gICAgICBpZiAoXG4gICAgICAgIHByZXZpb3VzTGF5ZXIgJiZcbiAgICAgICAgcHJldmlvdXNMYXllci5iYXNlTGF5ZXIgIT09IHRydWUgJiZcbiAgICAgICAgIWxheWVycy5maW5kKChsYXkpID0+IHByZXZpb3VzTGF5ZXIuaWQgPT09IGxheS5pZCkgJiZcbiAgICAgICAgY3VycmVudExheWVyLmJhc2VMYXllciAhPT0gdHJ1ZVxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmxheWVyc0NoZWNrZWRbMF0uYmFzZUxheWVyKSB8fFxuICAgICAgYmFzZSA9PT0gdGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aFxuICAgICkge1xuICAgICAgcmVzcG9uc2UgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgLypcbiAgICogV2hlbiBtdWx0aXBsZSBsYXllcnMgaXMgc2VsZWN0ZWQgYnV0IHNvbWUgbWF5IGJlIGFsbG93IHRvIG1vdmVcbiAgICovXG4gIHJhaXNhYmxlTGF5ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA8IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYXllcnNbaW5kZXggLSAxXS5vcHRpb25zLmNoZWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYWlzYWJsZUxheWVyKGluZGV4IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmFpc2VMYXllcnMobGF5ZXJzOiBMYXllcltdLCBmcm9tVWk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3QgbGF5ZXJzVG9SYWlzZSA9IFtdO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleCgobGF5KSA9PiBsYXkuaWQgPT09IGxheWVyLmlkKTtcbiAgICAgIGlmICh0aGlzLnJhaXNhYmxlTGF5ZXIoaW5kZXgpKSB7XG4gICAgICAgIGxheWVyc1RvUmFpc2UucHVzaChsYXllcik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubWFwLnJhaXNlTGF5ZXJzKGxheWVyc1RvUmFpc2UpO1xuICAgIGlmIChmcm9tVWkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja0l0ZW1zID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hdC1jaGVja2JveC1jaGVja2VkJyk7XG4gICAgICAgIGNvbnN0IGl0ZW1Gb2N1c2VkID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1sYXllci1pdGVtLWZvY3VzZWQnKTtcbiAgICAgICAgbGV0IHRhcmdldFRvU2Nyb2xsO1xuICAgICAgICBpZiAoY2hlY2tJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICB0YXJnZXRUb1Njcm9sbCA9IGNoZWNrSXRlbXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW1Gb2N1c2VkLmxlbmd0aCkge1xuICAgICAgICAgIHRhcmdldFRvU2Nyb2xsID0gaXRlbUZvY3VzZWRbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldFRvU2Nyb2xsKSB7XG4gICAgICAgICAgc2Nyb2xsSW50b1ZpZXcodGFyZ2V0VG9TY3JvbGwsIHtcbiAgICAgICAgICAgIHNjcm9sbE1vZGU6ICdpZi1uZWVkZWQnLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICAgICAgYmxvY2s6ICdlbmQnLFxuICAgICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cbiAgLypcbiAgICogRm9yIHNlbGVjdGlvbiBtb2RlIGRpc2FibGVkIGF0dHJpYnV0ZVxuICAgKi9cbiAgbG93ZXJhYmxlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIGxldCByZXNwb25zZSA9IGZhbHNlO1xuICAgIGxldCBiYXNlID0gMDtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgY29uc3QgbWFwSW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5ZXIuaWQgPT09IGxheS5pZCk7XG4gICAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmxheWVyc1ttYXBJbmRleF07XG4gICAgICBpZiAoY3VycmVudExheWVyLmJhc2VMYXllcikge1xuICAgICAgICBiYXNlICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRMYXllciA9IHRoaXMubGF5ZXJzW21hcEluZGV4ICsgMV07XG4gICAgICBpZiAoXG4gICAgICAgIG5leHRMYXllciAmJlxuICAgICAgICBuZXh0TGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlICYmXG4gICAgICAgICFsYXllcnMuZmluZCgobGF5KSA9PiBuZXh0TGF5ZXIuaWQgPT09IGxheS5pZClcbiAgICAgICkge1xuICAgICAgICByZXNwb25zZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09IDEgJiYgdGhpcy5sYXllcnNDaGVja2VkWzBdLmJhc2VMYXllcikgfHxcbiAgICAgIGJhc2UgPT09IHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJlc3BvbnNlID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qXG4gICAqIFdoZW4gbXVsdGlwbGUgbGF5ZXJzIGlzIHNlbGVjdGVkIGJ1dCBzb21lIG1heSBiZSBhbGxvdyB0byBtb3ZlXG4gICAqL1xuICBsb3dlcmFibGVMYXllcihpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKFxuICAgICAgaW5kZXggPlxuICAgICAgdGhpcy5sYXllcnMuZmlsdGVyKChsYXkpID0+IGxheS5iYXNlTGF5ZXIgIT09IHRydWUpLmxlbmd0aCAtIDJcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYXllcnNbaW5kZXggKyAxXS5vcHRpb25zLmNoZWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb3dlcmFibGVMYXllcihpbmRleCArIDEpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxvd2VyTGF5ZXJzKGxheWVyczogTGF5ZXJbXSwgZnJvbVVpOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGxheWVyc1RvTG93ZXIgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XG4gICAgICBpZiAodGhpcy5sb3dlcmFibGVMYXllcihpbmRleCkpIHtcbiAgICAgICAgbGF5ZXJzVG9Mb3dlci5wdXNoKGxheWVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tYXAubG93ZXJMYXllcnMobGF5ZXJzVG9Mb3dlcik7XG4gICAgaWYgKGZyb21VaSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrSXRlbXMgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWF0LWNoZWNrYm94LWNoZWNrZWQnKTtcbiAgICAgICAgY29uc3QgaXRlbUZvY3VzZWQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLWxheWVyLWl0ZW0tZm9jdXNlZCcpO1xuICAgICAgICBsZXQgdGFyZ2V0VG9TY3JvbGw7XG4gICAgICAgIGlmIChjaGVja0l0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIHRhcmdldFRvU2Nyb2xsID0gY2hlY2tJdGVtc1tjaGVja0l0ZW1zLmxlbmd0aC0xXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbUZvY3VzZWQubGVuZ3RoKSB7XG4gICAgICAgICAgdGFyZ2V0VG9TY3JvbGwgPSBpdGVtRm9jdXNlZFswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0VG9TY3JvbGwpIHtcbiAgICAgICAgICBzY3JvbGxJbnRvVmlldyh0YXJnZXRUb1Njcm9sbCwge1xuICAgICAgICAgICAgc2Nyb2xsTW9kZTogJ2lmLW5lZWRlZCcsXG4gICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICBibG9jazogJ2VuZCcsXG4gICAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0J1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIG5leHQoKSB7XG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUxheWVycyhsYXllcnM6IExheWVyW10pOiBMYXllcltdIHtcbiAgICBsZXQgbGF5ZXJzT3V0ID0gdGhpcy5maWx0ZXJMYXllcnMobGF5ZXJzKTtcbiAgICBpZiAodGhpcy5zb3J0QWxwaGEpIHtcbiAgICAgIGxheWVyc091dCA9IHRoaXMuc29ydExheWVyc0J5VGl0bGUobGF5ZXJzT3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5ZXJzT3V0ID0gdGhpcy5zb3J0TGF5ZXJzQnlaaW5kZXgobGF5ZXJzT3V0KTtcbiAgICB9XG4gICAgcmV0dXJuIGxheWVyc091dDtcbiAgfVxuXG4gIG9uS2V5d29yZENoYW5nZSh0ZXJtKSB7XG4gICAgdGhpcy5rZXl3b3JkID0gdGVybTtcbiAgfVxuXG4gIG9uQXBwbGllZEZpbHRlckFuZFNvcnRDaGFuZ2UoYXBwbGllZEZpbHRlcjogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zKSB7XG4gICAgdGhpcy5rZXl3b3JkID0gYXBwbGllZEZpbHRlci5rZXl3b3JkO1xuICAgIHRoaXMub25seVZpc2libGUgPSBhcHBsaWVkRmlsdGVyLm9ubHlWaXNpYmxlO1xuICAgIHRoaXMuc29ydEFscGhhID0gYXBwbGllZEZpbHRlci5zb3J0QWxwaGE7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckxheWVycyhsYXllcnM6IExheWVyW10pOiBMYXllcltdIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPT09IExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlclxuICAgICkge1xuICAgICAgcmV0dXJuIGxheWVycztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmtleXdvcmQgJiYgIXRoaXMub25seVZpc2libGUpIHtcbiAgICAgIHJldHVybiBsYXllcnM7XG4gICAgfVxuXG4gICAgY29uc3Qga2VlcExheWVySWRzID0gbGF5ZXJzLm1hcCgobGF5ZXI6IExheWVyKSA9PiBsYXllci5pZCk7XG5cbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXI6IExheWVyKSA9PiB7XG4gICAgICBjb25zdCBsYXllck9wdGlvbnMgPSAobGF5ZXIub3B0aW9ucyBhcyBNZXRhZGF0YUxheWVyT3B0aW9ucykgfHwge307XG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyB8fCB7fTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gbGF5ZXJPcHRpb25zLm1ldGFkYXRhIHx8ICh7fSBhcyBNZXRhZGF0YU9wdGlvbnMpO1xuICAgICAgY29uc3Qga2V5d29yZHMgPSBtZXRhZGF0YS5rZXl3b3JkTGlzdCB8fCBbXTtcbiAgICAgIGNvbnN0IGxheWVyS2V5d29yZHMgPSBrZXl3b3Jkcy5tYXAoKGt3OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGt3Lm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmtleXdvcmQgJiYgbGF5ZXIudGl0bGUpIHtcbiAgICAgICAgY29uc3QgbG9jYWxLZXl3b3JkID0gdGhpcy5rZXl3b3JkXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xuICAgICAgICBjb25zdCBsYXllclRpdGxlID0gbGF5ZXIudGl0bGVcbiAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VUeXBlID0gZGF0YVNvdXJjZU9wdGlvbnMudHlwZSB8fCAnJztcbiAgICAgICAgY29uc3Qga2V5d29yZFJlZ2V4ID0gbmV3IFJlZ0V4cChsb2NhbEtleXdvcmQsICdnaScpO1xuICAgICAgICBjb25zdCBrZXl3b3JkSW5MaXN0ID1cbiAgICAgICAgICBsYXllcktleXdvcmRzLmZpbmQoKGt3OiBzdHJpbmcpID0+IGtleXdvcmRSZWdleC50ZXN0KGt3KSkgIT09XG4gICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWtleXdvcmRSZWdleC50ZXN0KGxheWVyVGl0bGUpICYmXG4gICAgICAgICAgISh0aGlzLmtleXdvcmQudG9Mb3dlckNhc2UoKSA9PT0gZGF0YVNvdXJjZVR5cGUudG9Mb3dlckNhc2UoKSkgJiZcbiAgICAgICAgICAha2V5d29yZEluTGlzdFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGtlZXBMYXllcklkcy5pbmRleE9mKGxheWVyLmlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAga2VlcExheWVySWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9ubHlWaXNpYmxlICYmIGxheWVyLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0ga2VlcExheWVySWRzLmluZGV4T2YobGF5ZXIuaWQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgIGtlZXBMYXllcklkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbGF5ZXJzLmZpbHRlcihcbiAgICAgIChsYXllcjogTGF5ZXIpID0+IGtlZXBMYXllcklkcy5pbmRleE9mKGxheWVyLmlkKSAhPT0gLTFcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlaaW5kZXgobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsYXllcjEsIGxheWVyMikgPT4gbGF5ZXIyLnpJbmRleCAtIGxheWVyMS56SW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0TGF5ZXJzQnlUaXRsZShsYXllcnM6IExheWVyW10pIHtcbiAgICByZXR1cm4gbGF5ZXJzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA8IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA+IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXG4gICAgICAudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZVNob3dUb29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5sYXllckZpbHRlckFuZFNvcnRPcHRpb25zLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmxheWVycy5sZW5ndGggPj0gdGhpcy50aHJlc2hvbGRUb0ZpbHRlckFuZFNvcnQgfHxcbiAgICAgICAgICB0aGlzLmtleXdvcmQgfHxcbiAgICAgICAgICB0aGlzLm9ubHlWaXNpYmxlXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMYXllclRvb2wobGF5ZXIpIHtcbiAgICB0aGlzLnRvZ2dsZU9wYWNpdHkgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5sYXllclRvb2wgJiYgbGF5ZXIgPT09IHRoaXMuYWN0aXZlTGF5ZXIpIHtcbiAgICAgIHRoaXMubGF5ZXJUb29sID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGF5ZXJUb29sID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGxheSBvZiB0aGlzLmxheWVycykge1xuICAgICAgbGF5Lm9wdGlvbnMuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGxheWVyLm9wdGlvbnMuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZUxheWVyID0gbGF5ZXI7XG4gIH1cblxuICByZW1vdmVMYXllcnMobGF5ZXJzPzogTGF5ZXJbXSkge1xuICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZCA9IFtdO1xuICAgICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgaWYgKGxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZSkge1xuICAgICAgICAgIGxheWVyLm1hcC5yZW1vdmVMYXllcihsYXllcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sYXllcnNDaGVja2VkLnB1c2gobGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghbGF5ZXJzICYmIHRoaXMuYWN0aXZlTGF5ZXIub3B0aW9ucy5yZW1vdmFibGUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFjdGl2ZUxheWVyLm1hcC5yZW1vdmVMYXllcih0aGlzLmFjdGl2ZUxheWVyKTtcbiAgICAgIHRoaXMubGF5ZXJUb29sID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlVmlzaWJpbGl0eShsYXllcnM/OiBMYXllcltdKSB7XG4gICAgaWYgKGxheWVycyAmJiBsYXllcnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgbGF5ZXIudmlzaWJsZSA9IHRoaXMuaGlkZVNlbGVjdGVkTGF5ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxheWVySXRlbUNoYW5nZURldGVjdGlvbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGlzTGF5ZXJSZW1vdmFibGUobGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZTtcbiAgfVxuXG4gIGlzQWxsTGF5ZXJzUmVtb3ZhYmxlKGxheWVyczogTGF5ZXJbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsYXllcnMuZXZlcnkobCA9PiB0aGlzLmlzTGF5ZXJSZW1vdmFibGUobCkpO1xuICB9XG5cbiAgZ2V0IHN0YXR1c1NlbGVjdGVkTGF5ZXJzQ2hlY2soKTogTGF5ZXJMaXN0U2VsZWN0VmlzaWJsZUVudW0ge1xuICAgIGxldCBzdGF0dXNTZWxlY3RlZExheWVyczogTGF5ZXJMaXN0U2VsZWN0VmlzaWJsZUVudW0gPVxuICAgICAgTGF5ZXJMaXN0U2VsZWN0VmlzaWJsZUVudW0uTlVMTDtcbiAgICBsZXQgZmluZFRydWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgZmluZEZhbHNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnMgPSBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5OVUxMO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXNTZWxlY3RlZExheWVycyA9IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtLk1JWEVEO1xuICAgICAgdGhpcy5oaWRlU2VsZWN0ZWRMYXllcnMgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBsYXllcjIgb2YgdGhpcy5sYXllcnNDaGVja2VkKSB7XG4gICAgICAgIGlmIChsYXllcjIudmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGZpbmRUcnVlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGF5ZXIyLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgZmluZEZhbHNlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluZFRydWUgPT09IHRydWUgJiYgZmluZEZhbHNlID09PSBmYWxzZSkge1xuICAgICAgICBzdGF0dXNTZWxlY3RlZExheWVycyA9IExheWVyTGlzdFNlbGVjdFZpc2libGVFbnVtLkFMTF9WSVNJQkxFO1xuICAgICAgfVxuICAgICAgaWYgKGZpbmRUcnVlID09PSBmYWxzZSAmJiBmaW5kRmFsc2UgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdHVzU2VsZWN0ZWRMYXllcnMgPSBMYXllckxpc3RTZWxlY3RWaXNpYmxlRW51bS5BTExfSElEREVOO1xuICAgICAgICB0aGlzLmhpZGVTZWxlY3RlZExheWVycyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c1NlbGVjdGVkTGF5ZXJzO1xuICB9XG5cbiAgbGF5ZXJzQ2hlY2soZXZlbnQ6IHsgbGF5ZXI6IExheWVyOyBjaGVjazogYm9vbGVhbiB9KSB7XG4gICAgZXZlbnQubGF5ZXIub3B0aW9ucy5jaGVjayA9IGV2ZW50LmNoZWNrO1xuICAgIGlmIChldmVudC5jaGVjayA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgZXZlbnRNYXBJbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleChcbiAgICAgICAgKGxheWVyKSA9PiBldmVudC5sYXllci5pZCA9PT0gbGF5ZXIuaWRcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xuICAgICAgICBjb25zdCBtYXBJbmRleCA9IHRoaXMubGF5ZXJzLmZpbmRJbmRleCgobGF5KSA9PiBsYXllci5pZCA9PT0gbGF5LmlkKTtcbiAgICAgICAgaWYgKGV2ZW50TWFwSW5kZXggPCBtYXBJbmRleCkge1xuICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5zcGxpY2UoXG4gICAgICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQuZmluZEluZGV4KChsYXkpID0+IGxheWVyLmlkID09PSBsYXkuaWQpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGV2ZW50LmxheWVyXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGF5KSA9PiBsYXkuYmFzZUxheWVyICE9PSB0cnVlICYmIGxheS5zaG93SW5MYXllckxpc3RcbiAgICAgICAgICAgICAgKS5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5sZW5ndGggPT09XG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLmZpbHRlcigobGF5KSA9PiBsYXkuc2hvd0luTGF5ZXJMaXN0KS5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2sgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxheWVyc0NoZWNrZWQucHVzaChldmVudC5sYXllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnNDaGVja2VkLmZpbmRJbmRleChcbiAgICAgICAgKGxheWVyKSA9PiBldmVudC5sYXllci5pZCA9PT0gbGF5ZXIuaWRcbiAgICAgICk7XG4gICAgICB0aGlzLmxheWVyc0NoZWNrZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leGNsdWRlQmFzZUxheWVycykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQubGVuZ3RoID09PVxuICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheSkgPT4gbGF5LmJhc2VMYXllciAhPT0gdHJ1ZSAmJiBsYXkuc2hvd0luTGF5ZXJMaXN0XG4gICAgICAgICkubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghdGhpcy5leGNsdWRlQmFzZUxheWVycykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQubGVuZ3RoID09PVxuICAgICAgICB0aGlzLmxheWVycy5maWx0ZXIoKGxheSkgPT4gbGF5LnNob3dJbkxheWVyTGlzdCkubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVjayA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2VsZWN0aW9uTW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5hY3RpdmVMYXllciA9IHVuZGVmaW5lZDtcbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMubGF5ZXJUb29sID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG4gICAgICAgIGlmIChsYXllci5vcHRpb25zLmNoZWNrKSB7XG4gICAgICAgICAgdGhpcy5sYXllcnNDaGVja2VkLnB1c2gobGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGF5ZXJzQ2hlY2tlZE9wYWNpdHkoKTogYW55IHtcbiAgICBpZiAodGhpcy5sYXllcnNDaGVja2VkLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gW107XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzQ2hlY2tlZCkge1xuICAgICAgICBvcGFjaXR5LnB1c2gobGF5ZXIub3BhY2l0eSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3BhY2l0eTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RBbGwoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdEFsbENoZWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzICYmXG4gICAgICAgICAgbGF5ZXIuYmFzZUxheWVyICE9PSB0cnVlICYmXG4gICAgICAgICAgbGF5ZXIuc2hvd0luTGF5ZXJMaXN0XG4gICAgICAgICkge1xuICAgICAgICAgIGxheWVyLm9wdGlvbnMuY2hlY2sgPSB0cnVlO1xuICAgICAgICAgIHRoaXMubGF5ZXJzQ2hlY2tlZC5wdXNoKGxheWVyKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5leGNsdWRlQmFzZUxheWVycyAmJiBsYXllci5zaG93SW5MYXllckxpc3QpIHtcbiAgICAgICAgICBsYXllci5vcHRpb25zLmNoZWNrID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxheWVyc0NoZWNrZWQucHVzaChsYXllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2skLm5leHQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcbiAgICAgICAgbGF5ZXIub3B0aW9ucy5jaGVjayA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXllcnNDaGVja2VkID0gW107XG4gICAgICB0aGlzLnNlbGVjdEFsbENoZWNrJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBpc1Njcm9sbGVkSW50b1ZpZXcoZWxlbVNvdXJjZSwgZWxlbSkge1xuICAgIGNvbnN0IGRvY1ZpZXdUb3AgPSBlbGVtU291cmNlLnNjcm9sbFRvcDtcbiAgICBjb25zdCBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIGVsZW1Tb3VyY2UuY2xpZW50SGVpZ2h0O1xuXG4gICAgY29uc3QgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wO1xuICAgIGNvbnN0IGVsZW1Cb3R0b20gPSBlbGVtVG9wICsgZWxlbS5jbGllbnRIZWlnaHQ7XG4gICAgcmV0dXJuIGVsZW1Cb3R0b20gPD0gZG9jVmlld0JvdHRvbSAmJiBlbGVtVG9wID49IGRvY1ZpZXdUb3A7XG4gIH1cblxuICByZW1vdmVQcm9ibGVtTGF5ZXJJbkxpc3QobGF5ZXJzTGlzdDogTGF5ZXJbXSk6IExheWVyW10ge1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzTGlzdCkge1xuICAgICAgaWYgKGxheWVyLm9sTG9hZGluZ1Byb2JsZW0gPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIobGF5ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGF5ZXJzTGlzdDtcbiAgfVxufVxuIiwiPG1hdC1saXN0PlxuICA8aWdvLWxheWVyLWxpc3QtdG9vbCAqbmdJZj1cInNob3dUb29sYmFyJCB8IGFzeW5jXCJcbiAgICBmbG9hdExhYmVsPVwiYXV0b1wiXG4gICAgW2xheWVyc0FyZUFsbFZpc2libGVdPVwibGF5ZXJzQXJlQWxsVmlzaWJsZVwiXG4gICAgW3Rlcm1dPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucy5rZXl3b3JkXCJcbiAgICBbb25seVZpc2libGVdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucy5vbmx5VmlzaWJsZVwiXG4gICAgW3NvcnRBbHBoYV09XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zLnNvcnRBbHBoYVwiXG4gICAgKGFwcGxpZWRGaWx0ZXJBbmRTb3J0KT1cIm9uQXBwbGllZEZpbHRlckFuZFNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHNlbGVjdGlvbik9XCJ0b2dnbGVTZWxlY3Rpb25Nb2RlKCRldmVudClcIj5cbiAgPC9pZ28tbGF5ZXItbGlzdC10b29sPlxuPC9tYXQtbGlzdD5cblxuPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJzZWxlY3Rpb25cIiBjbGFzcz1cInNlbGVjdC1hbGxcIj5cbiAgPG1hdC1jaGVja2JveFxuICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveCBtYXQtc3ViaGVhZGluZy0yXCJcbiAgICBbY29sb3JdPVwiIXNlbGVjdEFsbENoZWNrICYmIGxheWVyc0NoZWNrZWQubGVuZ3RoID4gMCA/ICdhY2NlbnQnIDogJ3ByaW1hcnknXCJcbiAgICAoY2hhbmdlKT1cInNlbGVjdEFsbCgpXCJcbiAgICBbY2hlY2tlZF09XCJzZWxlY3RBbGxDaGVja1wiXG4gICAgW2luZGV0ZXJtaW5hdGVdPVwiIXNlbGVjdEFsbENoZWNrICYmIGxheWVyc0NoZWNrZWQubGVuZ3RoID4gMFwiPiB7e3NlbGVjdEFsbENoZWNrID8gKCdpZ28uZ2VvLmxheWVyLmRlc2VsZWN0QWxsJyB8IHRyYW5zbGF0ZSkgOiAoJ2lnby5nZW8ubGF5ZXIuc2VsZWN0QWxsJyB8IHRyYW5zbGF0ZSl9fVxuICA8L21hdC1jaGVja2JveD5cbjwvbWF0LWxpc3QtaXRlbT5cbjxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG48aWdvLWxpc3QgI2lnb0xpc3QgW25nQ2xhc3NdPVwieydpZ28tbGlzdC10b29scy1tdWx0aSc6IHNlbGVjdGlvbiwgJ2lnby1saXN0LXRvb2xzLXNpbmdsZSc6IChsYXllclRvb2wgJiYgIXNlbGVjdGlvbiksICdpZ28tbGlzdC1uby10b29scyc6ICghbGF5ZXJUb29sICYmICFzZWxlY3Rpb24pfVwiIFtuYXZpZ2F0aW9uXT1cImZhbHNlXCIgW3NlbGVjdGlvbl09XCJmYWxzZVwiPlxuICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWxheWVyIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJsYXllcnMkIHwgYXN5bmNcIj5cbiAgICA8aWdvLWxheWVyLWl0ZW0gKm5nSWY9XCIhKGV4Y2x1ZGVCYXNlTGF5ZXJzICYmIGxheWVyLmJhc2VMYXllcilcIlxuICAgICAgaWdvTGlzdEl0ZW1cbiAgICAgIFtsYXllcl09XCJsYXllclwiXG4gICAgICBbYWN0aXZlTGF5ZXJdPVwiYWN0aXZlTGF5ZXJcIlxuICAgICAgW29yZGVyYWJsZV09XCJvcmRlcmFibGUgJiYgIWxheWVyLmJhc2VMYXllclwiXG4gICAgICBbbG93ZXJEaXNhYmxlZF09XCJnZXRMb3dlckxheWVyKCkuaWQgPT09IGxheWVyLmlkXCJcbiAgICAgIFtyYWlzZURpc2FibGVkXT1cImdldFVwcGVyTGF5ZXIoKS5pZCA9PT0gbGF5ZXIuaWRcIlxuICAgICAgW3F1ZXJ5QmFkZ2VdPVwicXVlcnlCYWRnZVwiXG4gICAgICBbZXhwYW5kTGVnZW5kSWZWaXNpYmxlXT1cImV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc1wiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXG4gICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25cIlxuICAgICAgW3NlbGVjdEFsbF09XCJzZWxlY3RBbGxDaGVja1wiXG4gICAgICBbbGF5ZXJDaGVja109XCJsYXllci5vcHRpb25zLmNoZWNrXCJcbiAgICAgIFtjaGFuZ2VEZXRlY3Rpb25dPVwibGF5ZXJJdGVtQ2hhbmdlRGV0ZWN0aW9uJFwiXG4gICAgICAoYWN0aW9uKT1cInRvZ2dsZUxheWVyVG9vbCgkZXZlbnQpXCJcbiAgICAgIChjaGVja2JveCk9XCJsYXllcnNDaGVjaygkZXZlbnQpXCI+XG4gICAgPC9pZ28tbGF5ZXItaXRlbT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaWdvLWxpc3Q+XG5cbjxpZ28tcGFuZWwgKm5nSWY9XCIhc2VsZWN0aW9uICYmIGxheWVyVG9vbCAmJiBhY3RpdmVMYXllclwiIGNsYXNzPVwiaWdvLWxheWVyLWFjdGlvbnMtY29udGFpbmVyXCIgW3RpdGxlXT1cImFjdGl2ZUxheWVyLnRpdGxlXCI+XG4gIDxkaXYgY2xhc3M9XCJpZ28tbGF5ZXItYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJpc0xheWVyUmVtb3ZhYmxlKGFjdGl2ZUxheWVyKVwiXG4gICAgICBjbGFzcz1cImRlbGV0ZS1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIucmVtb3ZlTGF5ZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmVMYXllcnMoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJkZWxldGVcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJkb3duLWJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCIoc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmQpID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlckxvd2VyTGF5ZXInIHwgdHJhbnNsYXRlKSA6ICgnaWdvLmdlby5sYXllci5sb3dlckxheWVyJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgW2Rpc2FibGVkXT1cImxvd2VyRGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cIm1vdmVBY3RpdmVMYXllcihhY3RpdmVMYXllcixsYXllckxpc3REaXNwbGFjZW1lbnQuTG93ZXIsIHRydWUpXCI+XG4gICAgICA8bWF0LWljb24gW21hdEJhZGdlXT1cIihzb3J0QWxwaGEgfHwgb25seVZpc2libGUgfHwga2V5d29yZCkgPyAnIScgOiAnJ1wiIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCIgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCIgW21hdEJhZGdlSGlkZGVuXT1cImxvd2VyRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIHN2Z0ljb249XCJhcnJvdy1kb3duXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwidXAtYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIihzb3J0QWxwaGEgfHwgb25seVZpc2libGUgfHwga2V5d29yZCkgPyAoJ2lnby5nZW8ubGF5ZXIuZmlsdGVyUmFpc2VMYXllcicgfCB0cmFuc2xhdGUpIDogKCdpZ28uZ2VvLmxheWVyLnJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicmFpc2VEaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwibW92ZUFjdGl2ZUxheWVyKGFjdGl2ZUxheWVyLGxheWVyTGlzdERpc3BsYWNlbWVudC5SYWlzZSwgdHJ1ZSlcIj5cbiAgICAgIDxtYXQtaWNvbiBbbWF0QmFkZ2VdPVwiKHNvcnRBbHBoYSB8fCBvbmx5VmlzaWJsZSB8fCBrZXl3b3JkKSA/ICchJyA6ICcnXCIgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIiBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIiBbbWF0QmFkZ2VIaWRkZW5dPVwicmFpc2VEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgc3ZnSWNvbj1cImFycm93LXVwXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDwhLS0gPGxhYmVsPnt7ICdpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlIH19IDwvbGFiZWw+IC0tPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwib3BhY2l0eS1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wYWNpdHlNZW51XCJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8bWF0LWljb24gW21hdEJhZGdlXT1cImJhZGdlT3BhY2l0eVwiIG1hdEJhZGdlQ29sb3I9XCJwcmltYXJ5XCIgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCIgc3ZnSWNvbj1cIm9wYWNpdHlcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG1hdC1tZW51ICNvcGFjaXR5TWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm1hdC1tZW51LW9wYWNpdHktc2xpZGVyXCI+XG4gICAgICA8ZGl2IGlkPVwib3BhY2l0eS1tZW51XCI+XG4gICAgICAgIDxtYXQtc2xpZGVyXG4gICAgICAgICAgaWQ9XCJvcGFjaXR5LXNsaWRlclwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICB0aHVtYkxhYmVsXG4gICAgICAgICAgdGlja0ludGVydmFsPVwiNVwiXG4gICAgICAgICAgc3RlcD1cIjVcIlxuICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgW21heF09XCIxMDBcIlxuICAgICAgICAgIFt2YWx1ZV09XCJvcGFjaXR5XCJcbiAgICAgICAgICAoaW5wdXQpPVwiY2hhbmdlT3BhY2l0eSgkZXZlbnQpXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5vcGFjaXR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKSA9IFwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgPC9tYXQtc2xpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbWVudT5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiYWN0aXZlTGF5ZXJFeHRlbnRJc1ZhbGlkKGFjdGl2ZUxheWVyKVwiXG4gICAgICBjbGFzcz1cInpvb21MYXllci1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIuem9vbUxheWVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwiem9vbUxheWVyRXh0ZW50cyhhY3RpdmVMYXllcilcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRCYWRnZUNvbG9yPVwicHJpbWFyeVwiIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiIHN2Z0ljb249XCJtYWduaWZ5LXNjYW5cIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciBpZ29MYXllckl0ZW1Ub29sYmFyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZUxheWVyVG9vbGJhclwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2xheWVyOiBhY3RpdmVMYXllcn1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ29MYXllckl0ZW1Ub29sYmFyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2lnby1wYW5lbD5cblxuPGlnby1wYW5lbCAqbmdJZj1cInNlbGVjdGlvbiAmJiBsYXllcnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiaWdvLWxheWVyLWFjdGlvbnMtY29udGFpbmVyXCIgW3RpdGxlXT1cIidpZ28uZ2VvLmxheWVyLnRvb2xzJyB8IHRyYW5zbGF0ZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1idXR0b25zLW11bHRpXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFtkaXNhYmxlZF09XCJsYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJpc0FsbExheWVyc1JlbW92YWJsZShsYXllcnNDaGVja2VkKSA/ICgnaWdvLmdlby5sYXllci5yZW1vdmVTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpIDogJ2lnby5nZW8ubGF5ZXIucmVtb3ZlU2VsZWN0ZWRMYXllcnNSZXN0cmljdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cInJlbW92ZUxheWVycyhsYXllcnNDaGVja2VkKVwiPlxuICAgICAgPG1hdC1pY29uIFttYXRCYWRnZV09XCInISdcIiBtYXRCYWRnZUNvbG9yPVwid2FyblwiIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiIFttYXRCYWRnZUhpZGRlbl09XCJpc0FsbExheWVyc1JlbW92YWJsZShsYXllcnNDaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgc3ZnSWNvbj1cImRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImV5ZS1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW2Rpc2FibGVkXT1cImxheWVyc0NoZWNrZWQubGVuZ3RoID09PSAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cInN0YXR1c1NlbGVjdGVkTGF5ZXJzQ2hlY2sgPT09ICdBTExfSElEREVOJyA/ICgnaWdvLmdlby5sYXllci5zaG93U2VsZWN0ZWRMYXllcnMnIHwgdHJhbnNsYXRlKSA6ICgnaWdvLmdlby5sYXllci5oaWRlU2VsZWN0ZWRMYXllcnMnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eShsYXllcnNDaGVja2VkKVwiPlxuICAgICAgPG1hdC1pY29uXHRbc3ZnSWNvbl09XCIoc3RhdHVzU2VsZWN0ZWRMYXllcnNDaGVjayA9PT0gJ0FMTF9ISURERU4nKSA/ICdleWUtb2ZmJyA6ICdleWUnXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZG93bi1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiKHNvcnRBbHBoYSB8fCBvbmx5VmlzaWJsZSB8fCBrZXl3b3JkKSA/ICgnaWdvLmdlby5sYXllci5maWx0ZXJMb3dlckxheWVyJyB8IHRyYW5zbGF0ZSkgOiAoJ2lnby5nZW8ubGF5ZXIubG93ZXJMYXllcicgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJsb3dlckRpc2FibGVkU2VsZWN0aW9uXCJcbiAgICAgIChjbGljayk9XCJsb3dlckxheWVycyhsYXllcnNDaGVja2VkKVwiPlxuICAgICAgPG1hdC1pY29uIFttYXRCYWRnZV09XCIoc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmQpID8gJyEnIDogJydcIiBtYXRCYWRnZUNvbG9yPVwid2FyblwiIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiIFttYXRCYWRnZUhpZGRlbl09XCJsb3dlckRpc2FibGVkU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBzdmdJY29uPVwiYXJyb3ctZG93blwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInVwLWJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCIoc29ydEFscGhhIHx8IG9ubHlWaXNpYmxlIHx8IGtleXdvcmQpID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlclJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKSA6ICgnaWdvLmdlby5sYXllci5yYWlzZUxheWVyJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgW2Rpc2FibGVkXT1cInJhaXNlRGlzYWJsZWRTZWxlY3Rpb25cIlxuICAgICAgKGNsaWNrKT1cInJhaXNlTGF5ZXJzKGxheWVyc0NoZWNrZWQpXCI+XG4gICAgICA8bWF0LWljb24gW21hdEJhZGdlXT1cIihzb3J0QWxwaGEgfHwgb25seVZpc2libGUgfHwga2V5d29yZCkgPyAnIScgOiAnJ1wiIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCIgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCIgW21hdEJhZGdlSGlkZGVuXT1cInJhaXNlRGlzYWJsZWRTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgIHN2Z0ljb249XCJhcnJvdy11cFwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cIm9wYWNpdHktYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFtkaXNhYmxlZF09XCJsYXllcnNDaGVja2VkLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3BhY2l0eU1lbnVcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIub3BhY2l0eScgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib3BhY2l0eVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8bWF0LW1lbnUgI29wYWNpdHlNZW51PVwibWF0TWVudVwiICBjbGFzcz1cIm1hdC1tZW51LW9wYWNpdHktc2xpZGVyXCI+XG4gICAgICA8ZGl2IGlkPVwib3BhY2l0eS1tZW51XCI+XG4gICAgICAgIDxtYXQtc2xpZGVyICpuZ0lmPVwibGF5ZXJzQ2hlY2tlZC5sZW5ndGhcIlxuICAgICAgICAgIGlkPVwib3BhY2l0eS1zbGlkZXJcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgdGh1bWJMYWJlbFxuICAgICAgICAgIHRpY2tJbnRlcnZhbD1cIjVcIlxuICAgICAgICAgIHN0ZXA9XCI1XCJcbiAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgIFttYXhdPVwiMTAwXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrT3BhY2l0eVwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIub3BhY2l0eScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgKGNsaWNrKSA9IFwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDwvbWF0LXNsaWRlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8YnV0dG9uXG4gICAgKm5nSWY9XCJsYXllcnNDaGVja2VkLmxlbmd0aCAhPT0gMCAmJiBhY3RpdmVMYXllcnNFeHRlbnRBcmVWYWxpZChsYXllcnNDaGVja2VkKVwiXG4gICAgICBjbGFzcz1cInpvb21MYXllci1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIuem9vbUxheWVycycgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cInpvb21MYXllcnNFeHRlbnRzKGxheWVyc0NoZWNrZWQpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hZ25pZnktc2NhblwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9pZ28tcGFuZWw+XG4iXX0=
|