@igo2/geo 18.0.0-next.8 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +4 -6
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +13 -10
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +151 -102
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +177 -83
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +93 -44
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions.component.mjs +55 -31
- package/esm2022/lib/directions/shared/directions.enum.mjs +51 -7
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +122 -96
- package/esm2022/lib/directions/shared/directions.utils.mjs +281 -318
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +8 -20
- package/esm2022/lib/download/shared/download.service.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +1 -1
- package/esm2022/lib/draw/draw/draw.component.mjs +5 -12
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +2 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +5 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +1 -1
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +8 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -8
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -8
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +13 -10
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +4 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +5 -16
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -17
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +23 -12
- package/esm2022/lib/import-export/shared/export.service.mjs +7 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
- package/esm2022/lib/layer/index.mjs +10 -5
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +61 -128
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +5 -8
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -6
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +14 -21
- package/esm2022/lib/layer/layer-list/index.mjs +1 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +176 -775
- package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +51 -84
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +56 -16
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +51 -33
- package/esm2022/lib/layer/shared/index.mjs +2 -1
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +56 -14
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
- package/esm2022/lib/layer/shared/layers/layer.mjs +113 -113
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +9 -3
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
- package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -6
- package/esm2022/lib/map/map-center/map-center.component.mjs +1 -2
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +1 -9
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
- package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
- package/esm2022/lib/map/shared/map.mjs +7 -243
- package/esm2022/lib/map/shared/map.service.mjs +1 -1
- package/esm2022/lib/map/shared/map.utils.mjs +3 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -5
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +1 -3
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +7 -25
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -18
- package/esm2022/lib/offline/offline.provider.mjs +10 -11
- package/esm2022/lib/print/shared/print.service.mjs +3 -3
- package/esm2022/lib/query/shared/query.directive.mjs +9 -5
- package/esm2022/lib/query/shared/query.service.mjs +7 -7
- package/esm2022/lib/query/shared/query.utils.mjs +5 -1
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +15 -9
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +1 -10
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -17
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +17 -2
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +22 -4
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +6 -2
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +4 -3
- package/fesm2022/igo2-geo.mjs +22502 -21440
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/capabilities.service.d.ts +7 -2
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +6 -6
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +57 -20
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +115 -13
- package/lib/directions/directions-results/directions-results.component.d.ts +50 -16
- package/lib/directions/directions-sources/directions-source.d.ts +2 -2
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +2 -2
- package/lib/directions/directions.component.d.ts +5 -5
- package/lib/directions/shared/directions.enum.d.ts +42 -1
- package/lib/directions/shared/directions.interface.d.ts +50 -25
- package/lib/directions/shared/directions.service.d.ts +46 -8
- package/lib/directions/shared/directions.utils.d.ts +102 -23
- package/lib/directions/shared/store.d.ts +3 -3
- package/lib/download/download-button/download-button.component.d.ts +4 -8
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/draw/shared/draw.utils.d.ts +2 -1
- package/lib/environment/environment.interface.d.ts +2 -0
- package/lib/feature/shared/feature-store.utils.d.ts +1 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
- package/lib/import-export/export-button/export-button.component.d.ts +3 -7
- package/lib/import-export/import-export/import-export.component.d.ts +1 -2
- package/lib/import-export/shared/export.service.d.ts +2 -2
- package/lib/layer/index.d.ts +9 -4
- package/lib/layer/layer-group/index.d.ts +1 -0
- package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
- package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
- package/lib/layer/layer-list/index.d.ts +0 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
- package/lib/layer/layer-list-tool/index.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
- package/lib/layer/layer-search/index.d.ts +1 -0
- package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
- package/lib/layer/layer-unavailable/index.d.ts +2 -0
- package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
- package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
- package/lib/layer/layer-viewer/index.d.ts +2 -0
- package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
- package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
- package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
- package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
- package/lib/layer/layer-visibility-button/index.d.ts +1 -0
- package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
- package/lib/layer/layer.module.d.ts +18 -6
- package/lib/layer/shared/index.d.ts +1 -0
- package/lib/layer/shared/layer-controller.d.ts +81 -0
- package/lib/layer/shared/layer-selection.d.ts +14 -0
- package/lib/layer/shared/layer.service.d.ts +12 -3
- package/lib/layer/shared/layers/any-layer.d.ts +3 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
- package/lib/layer/shared/layers/image-layer.d.ts +5 -2
- package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
- package/lib/layer/shared/layers/index.d.ts +5 -0
- package/lib/layer/shared/layers/layer-base.d.ts +75 -0
- package/lib/layer/shared/layers/layer-group.d.ts +32 -0
- package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
- package/lib/layer/shared/layers/layer.d.ts +27 -44
- package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
- package/lib/layer/shared/layers/linked/index.d.ts +3 -0
- package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
- package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
- package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
- package/lib/layer/shared/layers/vector-layer.d.ts +7 -3
- package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
- package/lib/layer/utils/layer.utils.d.ts +12 -2
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/shared/controllers/geolocation.interface.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +0 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
- package/lib/map/shared/map.abstract.d.ts +12 -29
- package/lib/map/shared/map.d.ts +10 -85
- package/lib/map/shared/map.service.d.ts +1 -1
- package/lib/map/shared/map.utils.d.ts +5 -3
- package/lib/map/utils/index.d.ts +1 -0
- package/lib/map/utils/layer-watcher.d.ts +18 -8
- package/lib/measure/measurer/measurer.component.d.ts +0 -8
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
- package/lib/offline/offline.provider.d.ts +1 -1
- package/lib/query/shared/query.service.d.ts +1 -1
- package/lib/query/shared/query.utils.d.ts +2 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/locale/en.geo.json +106 -89
- package/locale/fr.geo.json +105 -89
- package/package.json +5 -5
- package/src/geo-theme.scss +1 -1
- package/src/lib/directions/directions-inputs/directions-inputs.theming.scss +21 -0
- package/src/lib/directions/directions.theming.scss +2 -0
- package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
- package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
- package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
- package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
- package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
- package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
- package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
- package/src/lib/layer/layer.theming.scss +14 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
- package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
5
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
8
|
+
import { BehaviorSubject, EMPTY, combineLatest, timer } from 'rxjs';
|
|
9
|
+
import { debounce, debounceTime } from 'rxjs/operators';
|
|
10
|
+
import { LayerListComponent } from '../layer-list';
|
|
11
|
+
import { LayerListToolComponent } from '../layer-list-tool';
|
|
12
|
+
import { LayerListControlsEnum } from '../layer-list-tool/layer-list-tool.interface';
|
|
13
|
+
import { LayerUnavailableListComponent } from '../layer-unavailable';
|
|
14
|
+
import { LayerViewerBottomActionsComponent } from '../layer-viewer-bottom-actions';
|
|
15
|
+
import { LayerService } from '../shared/layer.service';
|
|
16
|
+
import { isLayerGroup, isLayerItem, sortLayersByZindex } from '../utils/layer.utils';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../shared/layer.service";
|
|
19
|
+
import * as i2 from "@angular/material/button";
|
|
20
|
+
import * as i3 from "@angular/material/checkbox";
|
|
21
|
+
import * as i4 from "@angular/material/divider";
|
|
22
|
+
import * as i5 from "@angular/material/icon";
|
|
23
|
+
import * as i6 from "@ngx-translate/core";
|
|
24
|
+
export class LayerViewerComponent {
|
|
25
|
+
cdr;
|
|
26
|
+
layerService;
|
|
27
|
+
layers;
|
|
28
|
+
baselayers;
|
|
29
|
+
keyword$ = new BehaviorSubject(undefined);
|
|
30
|
+
mode;
|
|
31
|
+
isDragDropDisabled;
|
|
32
|
+
map;
|
|
33
|
+
options;
|
|
34
|
+
isDesktop;
|
|
35
|
+
excludeBaseLayers;
|
|
36
|
+
appliedFilterAndSort = new EventEmitter();
|
|
37
|
+
customBottomActions;
|
|
38
|
+
get layerViewerOptions() {
|
|
39
|
+
return {
|
|
40
|
+
...this.options,
|
|
41
|
+
mode: this.mode
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
get layerController() {
|
|
45
|
+
return this.map.layerController;
|
|
46
|
+
}
|
|
47
|
+
get unavailableLayers() {
|
|
48
|
+
return this.layerService.unavailableLayers;
|
|
49
|
+
}
|
|
50
|
+
constructor(cdr, layerService) {
|
|
51
|
+
this.cdr = cdr;
|
|
52
|
+
this.layerService = layerService;
|
|
53
|
+
}
|
|
54
|
+
isLayerItem = isLayerItem;
|
|
55
|
+
/**
|
|
56
|
+
* Subscribe to the search term stream and trigger researches
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
const baseObs$ = [
|
|
61
|
+
this.layerController.layers$,
|
|
62
|
+
this.keyword$
|
|
63
|
+
];
|
|
64
|
+
const otherObs$ = [];
|
|
65
|
+
if (!this.excludeBaseLayers) {
|
|
66
|
+
otherObs$.push(this.layerController.baseLayers$);
|
|
67
|
+
}
|
|
68
|
+
combineLatest([...baseObs$, ...otherObs$])
|
|
69
|
+
.pipe(debounceTime(10))
|
|
70
|
+
.subscribe(([layers, keyword, baselayers]) => {
|
|
71
|
+
if (layers) {
|
|
72
|
+
this.layers = this.computeLayers(layers, keyword);
|
|
73
|
+
}
|
|
74
|
+
if (baselayers) {
|
|
75
|
+
const baselayersInViewer = baselayers.filter((layer) => layer.showInLayerList);
|
|
76
|
+
this.baselayers = this.computeLayers(baselayersInViewer, keyword);
|
|
77
|
+
}
|
|
78
|
+
this.cdr.markForCheck();
|
|
79
|
+
});
|
|
80
|
+
this.keyword$
|
|
81
|
+
.pipe(debounce(() => {
|
|
82
|
+
return this.layers?.length === 0 ? EMPTY : timer(50);
|
|
83
|
+
}))
|
|
84
|
+
.subscribe((keyword) => {
|
|
85
|
+
this.isDragDropDisabled = !!keyword;
|
|
86
|
+
this.appliedFilterAndSort.emit({
|
|
87
|
+
keyword
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
clearKeyword() {
|
|
92
|
+
this.keyword$.next(undefined);
|
|
93
|
+
}
|
|
94
|
+
onVisibilityOnlyChange() {
|
|
95
|
+
this.layers = this.computeLayers([...this.layerController.treeLayers], this.keyword$.value);
|
|
96
|
+
}
|
|
97
|
+
onLayerChange() {
|
|
98
|
+
// Trigger change detection for component using layers
|
|
99
|
+
this.layers = [...this.layers];
|
|
100
|
+
}
|
|
101
|
+
onSearchChange(value) {
|
|
102
|
+
this.keyword$.next(value);
|
|
103
|
+
}
|
|
104
|
+
toggleSelectionMode(active) {
|
|
105
|
+
if (!active) {
|
|
106
|
+
this.layerController.clearSelection();
|
|
107
|
+
}
|
|
108
|
+
this.mode = active ? 'selection' : undefined;
|
|
109
|
+
}
|
|
110
|
+
toggleAllRows() {
|
|
111
|
+
const isAllSelected = this.isAllSelected();
|
|
112
|
+
this.layerController.clearSelection();
|
|
113
|
+
if (isAllSelected) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.layerController.select(...this.layerController.treeLayers);
|
|
117
|
+
}
|
|
118
|
+
isAllSelected() {
|
|
119
|
+
const numSelected = this.layerController.selected.length;
|
|
120
|
+
const numRows = this.layerController.treeLayers.length;
|
|
121
|
+
return (numSelected >= numRows &&
|
|
122
|
+
this.layerController.treeLayers.every((layer) => this.layerController.isSelected(layer)));
|
|
123
|
+
}
|
|
124
|
+
isScrolledIntoView(elemSource, elem) {
|
|
125
|
+
const docViewTop = elemSource.scrollTop;
|
|
126
|
+
const docViewBottom = docViewTop + elemSource.clientHeight;
|
|
127
|
+
const elemTop = elem.offsetTop;
|
|
128
|
+
const elemBottom = elemTop + elem.clientHeight;
|
|
129
|
+
return elemBottom <= docViewBottom && elemTop >= docViewTop;
|
|
130
|
+
}
|
|
131
|
+
createGroup(group) {
|
|
132
|
+
this.map.layerController.add(group);
|
|
133
|
+
this.cdr.markForCheck();
|
|
134
|
+
}
|
|
135
|
+
computeLayers(layers, keyword) {
|
|
136
|
+
const layersOut = this.filterLayers([...layers], keyword);
|
|
137
|
+
return sortLayersByZindex(layersOut, 'desc');
|
|
138
|
+
}
|
|
139
|
+
filterLayers(layers, keyword) {
|
|
140
|
+
if (this.options?.filterAndSortOptions?.showToolbar ===
|
|
141
|
+
LayerListControlsEnum.never) {
|
|
142
|
+
return layers;
|
|
143
|
+
}
|
|
144
|
+
if (keyword) {
|
|
145
|
+
layers = this.filterSearch(keyword, layers);
|
|
146
|
+
}
|
|
147
|
+
return layers;
|
|
148
|
+
}
|
|
149
|
+
/** Recursive */
|
|
150
|
+
filterSearch(value, layers) {
|
|
151
|
+
if (!value) {
|
|
152
|
+
return layers;
|
|
153
|
+
}
|
|
154
|
+
return [...layers].reduce((results, layer) => {
|
|
155
|
+
const clonedLayer = layer.clone();
|
|
156
|
+
if (isLayerGroup(clonedLayer)) {
|
|
157
|
+
if (this.layerHasTerm(value, clonedLayer)) {
|
|
158
|
+
return results.concat(clonedLayer);
|
|
159
|
+
}
|
|
160
|
+
clonedLayer.children = this.filterSearch(value, [
|
|
161
|
+
...clonedLayer.children
|
|
162
|
+
]);
|
|
163
|
+
if (clonedLayer.children.length) {
|
|
164
|
+
return results.concat(clonedLayer);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (this.layerHasTerm(value, clonedLayer)) {
|
|
168
|
+
return results.concat(clonedLayer);
|
|
169
|
+
}
|
|
170
|
+
return results;
|
|
171
|
+
}, []);
|
|
172
|
+
}
|
|
173
|
+
layerHasTerm(term, layer) {
|
|
174
|
+
const metadata = layer.options.metadata ?? {};
|
|
175
|
+
const keywords = metadata.keywordList || [];
|
|
176
|
+
const layerKeywords = keywords.map((kw) => {
|
|
177
|
+
return kw.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
178
|
+
});
|
|
179
|
+
const localKeyword = this.normalizeString(term);
|
|
180
|
+
const layerTitle = this.normalizeString(layer.title);
|
|
181
|
+
const dataSourceType = isLayerGroup(layer)
|
|
182
|
+
? ''
|
|
183
|
+
: layer.dataSource.options.type || '';
|
|
184
|
+
const keywordRegex = new RegExp(localKeyword, 'gi');
|
|
185
|
+
const keywordInList = layerKeywords.find((kw) => keywordRegex.test(kw)) !== undefined;
|
|
186
|
+
return (keywordRegex.test(layerTitle) ||
|
|
187
|
+
term.toLowerCase() === dataSourceType.toLowerCase() ||
|
|
188
|
+
keywordInList);
|
|
189
|
+
}
|
|
190
|
+
normalizeString(value) {
|
|
191
|
+
return value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
192
|
+
}
|
|
193
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LayerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerViewerComponent, isStandalone: true, selector: "igo-layer-viewer", inputs: { map: "map", options: "options", isDesktop: "isDesktop", excludeBaseLayers: "excludeBaseLayers" }, outputs: { appliedFilterAndSort: "appliedFilterAndSort" }, queries: [{ propertyName: "customBottomActions", first: true, predicate: ["customBottomActions"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<igo-layer-list-tool\n floatLabel=\"auto\"\n [viewerOptions]=\"layerViewerOptions\"\n [term]=\"options?.filterAndSortOptions?.keyword\"\n [mode]=\"mode\"\n (addedLayer)=\"createGroup($event)\"\n (modeChange)=\"toggleSelectionMode($event)\"\n (searchChange)=\"onSearchChange($event)\"\n (visibilityOnlyChange)=\"onVisibilityOnlyChange()\"\n>\n</igo-layer-list-tool>\n\n<ng-container *ngIf=\"mode === 'selection'\">\n <mat-divider></mat-divider>\n <div class=\"header-item active-background\">\n <mat-checkbox\n class=\"select-all-checkbox\"\n [color]=\"isAllSelected() ? 'primary' : 'accent'\"\n (change)=\"toggleAllRows()\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"!isAllSelected() && layerController.selected.length > 0\"\n >\n {{\n isAllSelected()\n ? ('igo.geo.layer.deselectAll' | translate)\n : ('igo.geo.layer.selectAll' | translate)\n }}\n </mat-checkbox>\n\n <button mat-icon-button color=\"warn\" (click)=\"toggleSelectionMode(false)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n</ng-container>\n<mat-divider></mat-divider>\n\n<div class=\"layer-view\">\n <ng-container\n *ngIf=\"\n layers?.length > 0 ||\n unavailableLayers?.length > 0 ||\n baselayers?.length > 0;\n else showEmptyList\n \"\n >\n <div class=\"layer-list-container\">\n <igo-layer-unavailable-list\n *ngIf=\"unavailableLayers?.length\"\n [layersOptions]=\"unavailableLayers\"\n ></igo-layer-unavailable-list>\n\n <igo-layer-list\n [controller]=\"map.layerController\"\n [layers]=\"layers\"\n [viewerOptions]=\"layerViewerOptions\"\n [isDragDropDisabled]=\"isDragDropDisabled\"\n [isDesktop]=\"isDesktop\"\n ></igo-layer-list>\n\n <div *ngIf=\"!excludeBaseLayers && baselayers?.length\">\n <mat-divider></mat-divider>\n <igo-layer-list\n [controller]=\"map.layerController\"\n [layers]=\"baselayers\"\n [viewerOptions]=\"layerViewerOptions\"\n [isDragDropDisabled]=\"true\"\n [isDesktop]=\"isDesktop\"\n ></igo-layer-list>\n </div>\n </div>\n </ng-container>\n\n <ng-template #showEmptyList>\n <ng-content select=\"[emptyList]\"></ng-content>\n </ng-template>\n</div>\n\n<igo-layer-viewer-bottom-actions\n *ngIf=\"layerController.hasSelection\"\n [map]=\"map\"\n [viewerOptions]=\"layerViewerOptions\"\n [controller]=\"layerController\"\n [searchTerm]=\"keyword$.value\"\n (layerChange)=\"onLayerChange()\"\n>\n <ng-container\n *ngIf=\"\n layerController.selected.length === 1 &&\n isLayerItem(layerController.selected[0])\n \"\n [ngTemplateOutlet]=\"customBottomActions\"\n [ngTemplateOutletContext]=\"{ layer: layerController.selected[0] }\"\n ></ng-container>\n</igo-layer-viewer-bottom-actions>\n\n<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:column;height:100%}.layer-view{display:flex;flex-direction:column;flex:1;overflow-y:auto}.layer-list-container{position:relative;display:flex;flex-direction:column;flex:1;overflow-x:hidden}.header-item{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 16px}.header-item mat-checkbox{margin-left:-16px}::ng-deep .layer-indicator{color:#00000061!important}::ng-deep .layer-indicator igo-icon,::ng-deep .layer-indicator.mdc-icon-button{display:flex;align-items:center;justify-content:center}::ng-deep .layer-indicator mat-icon{height:18px;width:18px;font-size:18px;font-variation-settings:\"fill\" 0}::ng-deep .layer-indicator mat-icon ::ng-deep svg{height:18px;width:18px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LayerListComponent, selector: "igo-layer-list", inputs: ["controller", "layers", "isDesktop", "isDragDropDisabled", "selectAll", "viewerOptions"], outputs: ["activeChange"] }, { kind: "component", type: LayerUnavailableListComponent, selector: "igo-layer-unavailable-list", inputs: ["layersOptions"] }, { kind: "component", type: LayerViewerBottomActionsComponent, selector: "igo-layer-viewer-bottom-actions", inputs: ["map", "controller", "searchTerm", "viewerOptions"], outputs: ["layerChange"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "component", type: LayerListToolComponent, selector: "igo-layer-list-tool", inputs: ["mode", "viewerOptions", "floatLabel", "onlyVisible", "term"], outputs: ["searchChange", "visibilityOnlyChange", "modeChange", "addedLayer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
|
+
}
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerViewerComponent, decorators: [{
|
|
197
|
+
type: Component,
|
|
198
|
+
args: [{ selector: 'igo-layer-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
199
|
+
NgIf,
|
|
200
|
+
NgTemplateOutlet,
|
|
201
|
+
MatButtonModule,
|
|
202
|
+
MatCheckboxModule,
|
|
203
|
+
MatDividerModule,
|
|
204
|
+
MatIconModule,
|
|
205
|
+
LayerListComponent,
|
|
206
|
+
LayerUnavailableListComponent,
|
|
207
|
+
LayerViewerBottomActionsComponent,
|
|
208
|
+
IgoLanguageModule,
|
|
209
|
+
LayerListToolComponent
|
|
210
|
+
], standalone: true, template: "<igo-layer-list-tool\n floatLabel=\"auto\"\n [viewerOptions]=\"layerViewerOptions\"\n [term]=\"options?.filterAndSortOptions?.keyword\"\n [mode]=\"mode\"\n (addedLayer)=\"createGroup($event)\"\n (modeChange)=\"toggleSelectionMode($event)\"\n (searchChange)=\"onSearchChange($event)\"\n (visibilityOnlyChange)=\"onVisibilityOnlyChange()\"\n>\n</igo-layer-list-tool>\n\n<ng-container *ngIf=\"mode === 'selection'\">\n <mat-divider></mat-divider>\n <div class=\"header-item active-background\">\n <mat-checkbox\n class=\"select-all-checkbox\"\n [color]=\"isAllSelected() ? 'primary' : 'accent'\"\n (change)=\"toggleAllRows()\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"!isAllSelected() && layerController.selected.length > 0\"\n >\n {{\n isAllSelected()\n ? ('igo.geo.layer.deselectAll' | translate)\n : ('igo.geo.layer.selectAll' | translate)\n }}\n </mat-checkbox>\n\n <button mat-icon-button color=\"warn\" (click)=\"toggleSelectionMode(false)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n</ng-container>\n<mat-divider></mat-divider>\n\n<div class=\"layer-view\">\n <ng-container\n *ngIf=\"\n layers?.length > 0 ||\n unavailableLayers?.length > 0 ||\n baselayers?.length > 0;\n else showEmptyList\n \"\n >\n <div class=\"layer-list-container\">\n <igo-layer-unavailable-list\n *ngIf=\"unavailableLayers?.length\"\n [layersOptions]=\"unavailableLayers\"\n ></igo-layer-unavailable-list>\n\n <igo-layer-list\n [controller]=\"map.layerController\"\n [layers]=\"layers\"\n [viewerOptions]=\"layerViewerOptions\"\n [isDragDropDisabled]=\"isDragDropDisabled\"\n [isDesktop]=\"isDesktop\"\n ></igo-layer-list>\n\n <div *ngIf=\"!excludeBaseLayers && baselayers?.length\">\n <mat-divider></mat-divider>\n <igo-layer-list\n [controller]=\"map.layerController\"\n [layers]=\"baselayers\"\n [viewerOptions]=\"layerViewerOptions\"\n [isDragDropDisabled]=\"true\"\n [isDesktop]=\"isDesktop\"\n ></igo-layer-list>\n </div>\n </div>\n </ng-container>\n\n <ng-template #showEmptyList>\n <ng-content select=\"[emptyList]\"></ng-content>\n </ng-template>\n</div>\n\n<igo-layer-viewer-bottom-actions\n *ngIf=\"layerController.hasSelection\"\n [map]=\"map\"\n [viewerOptions]=\"layerViewerOptions\"\n [controller]=\"layerController\"\n [searchTerm]=\"keyword$.value\"\n (layerChange)=\"onLayerChange()\"\n>\n <ng-container\n *ngIf=\"\n layerController.selected.length === 1 &&\n isLayerItem(layerController.selected[0])\n \"\n [ngTemplateOutlet]=\"customBottomActions\"\n [ngTemplateOutletContext]=\"{ layer: layerController.selected[0] }\"\n ></ng-container>\n</igo-layer-viewer-bottom-actions>\n\n<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:column;height:100%}.layer-view{display:flex;flex-direction:column;flex:1;overflow-y:auto}.layer-list-container{position:relative;display:flex;flex-direction:column;flex:1;overflow-x:hidden}.header-item{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 16px}.header-item mat-checkbox{margin-left:-16px}::ng-deep .layer-indicator{color:#00000061!important}::ng-deep .layer-indicator igo-icon,::ng-deep .layer-indicator.mdc-icon-button{display:flex;align-items:center;justify-content:center}::ng-deep .layer-indicator mat-icon{height:18px;width:18px;font-size:18px;font-variation-settings:\"fill\" 0}::ng-deep .layer-indicator mat-icon ::ng-deep svg{height:18px;width:18px}\n"] }]
|
|
211
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.LayerService }], propDecorators: { map: [{
|
|
212
|
+
type: Input,
|
|
213
|
+
args: [{ required: true }]
|
|
214
|
+
}], options: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], isDesktop: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}], excludeBaseLayers: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], appliedFilterAndSort: [{
|
|
221
|
+
type: Output
|
|
222
|
+
}], customBottomActions: [{
|
|
223
|
+
type: ContentChild,
|
|
224
|
+
args: ['customBottomActions', { read: TemplateRef }]
|
|
225
|
+
}] } });
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLXZpZXdlci9sYXllci12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItdmlld2VyL2xheWVyLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sRUFDTCxxQkFBcUIs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RUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUdQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IExheWVyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2xheWVyLWxpc3QnO1xuaW1wb3J0IHsgTGF5ZXJMaXN0VG9vbENvbXBvbmVudCB9IGZyb20gJy4uL2xheWVyLWxpc3QtdG9vbCc7XG5pbXBvcnQge1xuICBMYXllckxpc3RDb250cm9sc0VudW0sXG4gIExheWVyTGlzdENvbnRyb2xzT3B0aW9uc1xufSBmcm9tICcuLi9sYXllci1saXN0LXRvb2wvbGF5ZXItbGlzdC10b29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMYXllclVuYXZhaWxhYmxlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2xheWVyLXVuYXZhaWxhYmxlJztcbmltcG9ydCB7IExheWVyVmlld2VyQm90dG9tQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucyc7XG5pbXBvcnQgeyBMYXllckNvbnRyb2xsZXIgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQW55TGF5ZXIsXG4gIEltYWdlTGF5ZXJPcHRpb25zLFxuICBMYXllckdyb3VwLFxuICBMYXllck9wdGlvbnNCYXNlXG59IGZyb20gJy4uL3NoYXJlZC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgaXNMYXllckdyb3VwLFxuICBpc0xheWVySXRlbSxcbiAgc29ydExheWVyc0J5WmluZGV4XG59IGZyb20gJy4uL3V0aWxzL2xheWVyLnV0aWxzJztcbmltcG9ydCB7IExheWVyVG9vbE1vZGUsIExheWVyVmlld2VyT3B0aW9ucyB9IGZyb20gJy4vbGF5ZXItdmlld2VyLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1sYXllci12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTGF5ZXJMaXN0Q29tcG9uZW50LFxuICAgIExheWVyVW5hdmFpbGFibGVMaXN0Q29tcG9uZW50LFxuICAgIExheWVyVmlld2VyQm90dG9tQWN0aW9uc0NvbXBvbmVudCxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBMYXllckxpc3RUb29sQ29tcG9uZW50XG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBsYXllcnM6IEFueUxheWVyW107XG4gIGJhc2VsYXllcnM6IEFueUxheWVyW107XG4gIGtleXdvcmQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIG1vZGU6IExheWVyVG9vbE1vZGU7XG4gIGlzRHJhZ0Ryb3BEaXNhYmxlZDogYm9vbGVhbjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtYXA6IE1hcEJhc2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IExheWVyVmlld2VyT3B0aW9ucztcbiAgQElucHV0KCkgaXNEZXNrdG9wOiBib29sZWFuO1xuICBASW5wdXQoKSBleGNsdWRlQmFzZUxheWVyczogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgYXBwbGllZEZpbHRlckFuZFNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPExheWVyTGlzdENvbnRyb2xzT3B0aW9ucz4oKTtcblxuICBAQ29udGVudENoaWxkKCdjdXN0b21Cb3R0b21BY3Rpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21Cb3R0b21BY3Rpb25zOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBnZXQgbGF5ZXJWaWV3ZXJPcHRpb25zKCk6IExheWVyVmlld2VyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgIH07XG4gIH1cblxuICBnZXQgbGF5ZXJDb250cm9sbGVyKCkge1xuICAgIHJldHVybiB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIgYXMgTGF5ZXJDb250cm9sbGVyO1xuICB9XG5cbiAgZ2V0IHVuYXZhaWxhYmxlTGF5ZXJzKCk6IExheWVyT3B0aW9uc0Jhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJTZXJ2aWNlLnVuYXZhaWxhYmxlTGF5ZXJzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2VcbiAgKSB7fVxuXG4gIGlzTGF5ZXJJdGVtID0gaXNMYXllckl0ZW07XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc2VhcmNoIHRlcm0gc3RyZWFtIGFuZCB0cmlnZ2VyIHJlc2VhcmNoZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBiYXNlT2JzJDogW09ic2VydmFibGU8QW55TGF5ZXJbXT4sIE9ic2VydmFibGU8c3RyaW5nPl0gPSBbXG4gICAgICB0aGlzLmxheWVyQ29udHJvbGxlci5sYXllcnMkLFxuICAgICAgdGhpcy5rZXl3b3JkJFxuICAgIF07XG5cbiAgICBjb25zdCBvdGhlck9icyQ6IE9ic2VydmFibGU8QW55TGF5ZXJbXT5bXSA9IFtdO1xuICAgIGlmICghdGhpcy5leGNsdWRlQmFzZUxheWVycykge1xuICAgICAgb3RoZXJPYnMkLnB1c2godGhpcy5sYXllckNvbnRyb2xsZXIuYmFzZUxheWVycyQpO1xuICAgIH1cblxuICAgIGNvbWJpbmVMYXRlc3QoWy4uLmJhc2VPYnMkLCAuLi5vdGhlck9icyRdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsYXllcnMsIGtleXdvcmQsIGJhc2VsYXllcnNdKSA9PiB7XG4gICAgICAgIGlmIChsYXllcnMpIHtcbiAgICAgICAgICB0aGlzLmxheWVycyA9IHRoaXMuY29tcHV0ZUxheWVycyhsYXllcnMsIGtleXdvcmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJhc2VsYXllcnMpIHtcbiAgICAgICAgICBjb25zdCBiYXNlbGF5ZXJzSW5WaWV3ZXIgPSBiYXNlbGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChsYXllcikgPT4gbGF5ZXIuc2hvd0luTGF5ZXJMaXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmJhc2VsYXllcnMgPSB0aGlzLmNvbXB1dGVMYXllcnMoYmFzZWxheWVyc0luVmlld2VyLCBrZXl3b3JkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5rZXl3b3JkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllcnM/Lmxlbmd0aCA9PT0gMCA/IEVNUFRZIDogdGltZXIoNTApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoa2V5d29yZCkgPT4ge1xuICAgICAgICB0aGlzLmlzRHJhZ0Ryb3BEaXNhYmxlZCA9ICEha2V5d29yZDtcbiAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyQW5kU29ydC5lbWl0KHtcbiAgICAgICAgICBrZXl3b3JkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBjbGVhcktleXdvcmQoKSB7XG4gICAgdGhpcy5rZXl3b3JkJC5uZXh0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBvblZpc2liaWxpdHlPbmx5Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMubGF5ZXJzID0gdGhpcy5jb21wdXRlTGF5ZXJzKFxuICAgICAgWy4uLnRoaXMubGF5ZXJDb250cm9sbGVyLnRyZWVMYXllcnNdLFxuICAgICAgdGhpcy5rZXl3b3JkJC52YWx1ZVxuICAgICk7XG4gIH1cblxuICBvbkxheWVyQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgY29tcG9uZW50IHVzaW5nIGxheWVyc1xuICAgIHRoaXMubGF5ZXJzID0gWy4uLnRoaXMubGF5ZXJzXTtcbiAgfVxuXG4gIG9uU2VhcmNoQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLmtleXdvcmQkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0aW9uTW9kZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgdGhpcy5sYXllckNvbnRyb2xsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgdGhpcy5tb2RlID0gYWN0aXZlID8gJ3NlbGVjdGlvbicgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGVBbGxSb3dzKCkge1xuICAgIGNvbnN0IGlzQWxsU2VsZWN0ZWQgPSB0aGlzLmlzQWxsU2VsZWN0ZWQoKTtcbiAgICB0aGlzLmxheWVyQ29udHJvbGxlci5jbGVhclNlbGVjdGlvbigpO1xuICAgIGlmIChpc0FsbFNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGF5ZXJDb250cm9sbGVyLnNlbGVjdCguLi50aGlzLmxheWVyQ29udHJvbGxlci50cmVlTGF5ZXJzKTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLmxheWVyQ29udHJvbGxlci5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMubGF5ZXJDb250cm9sbGVyLnRyZWVMYXllcnMubGVuZ3RoO1xuICAgIHJldHVybiAoXG4gICAgICBudW1TZWxlY3RlZCA+PSBudW1Sb3dzICYmXG4gICAgICB0aGlzLmxheWVyQ29udHJvbGxlci50cmVlTGF5ZXJzLmV2ZXJ5KChsYXllcikgPT5cbiAgICAgICAgdGhpcy5sYXllckNvbnRyb2xsZXIuaXNTZWxlY3RlZChsYXllcilcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgaXNTY3JvbGxlZEludG9WaWV3KGVsZW1Tb3VyY2UsIGVsZW0pIHtcbiAgICBjb25zdCBkb2NWaWV3VG9wID0gZWxlbVNvdXJjZS5zY3JvbGxUb3A7XG4gICAgY29uc3QgZG9jVmlld0JvdHRvbSA9IGRvY1ZpZXdUb3AgKyBlbGVtU291cmNlLmNsaWVudEhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1Ub3AgPSBlbGVtLm9mZnNldFRvcDtcbiAgICBjb25zdCBlbGVtQm90dG9tID0gZWxlbVRvcCArIGVsZW0uY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBlbGVtQm90dG9tIDw9IGRvY1ZpZXdCb3R0b20gJiYgZWxlbVRvcCA+PSBkb2NWaWV3VG9wO1xuICB9XG5cbiAgY3JlYXRlR3JvdXAoZ3JvdXA6IExheWVyR3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuYWRkKGdyb3VwKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUxheWVycyhsYXllcnM6IEFueUxheWVyW10sIGtleXdvcmQ6IHN0cmluZyk6IEFueUxheWVyW10ge1xuICAgIGNvbnN0IGxheWVyc091dCA9IHRoaXMuZmlsdGVyTGF5ZXJzKFsuLi5sYXllcnNdLCBrZXl3b3JkKTtcbiAgICByZXR1cm4gc29ydExheWVyc0J5WmluZGV4KGxheWVyc091dCwgJ2Rlc2MnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTGF5ZXJzKGxheWVyczogQW55TGF5ZXJbXSwga2V5d29yZDogc3RyaW5nKTogQW55TGF5ZXJbXSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zPy5maWx0ZXJBbmRTb3J0T3B0aW9ucz8uc2hvd1Rvb2xiYXIgPT09XG4gICAgICBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXJcbiAgICApIHtcbiAgICAgIHJldHVybiBsYXllcnM7XG4gICAgfVxuXG4gICAgaWYgKGtleXdvcmQpIHtcbiAgICAgIGxheWVycyA9IHRoaXMuZmlsdGVyU2VhcmNoKGtleXdvcmQsIGxheWVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIC8qKiBSZWN1cnNpdmUgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJTZWFyY2godmFsdWU6IHN0cmluZywgbGF5ZXJzOiBBbnlMYXllcltdKTogQW55TGF5ZXJbXSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIGxheWVycztcbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLmxheWVyc10ucmVkdWNlKChyZXN1bHRzOiBBbnlMYXllcltdLCBsYXllcikgPT4ge1xuICAgICAgY29uc3QgY2xvbmVkTGF5ZXI6IEFueUxheWVyID0gbGF5ZXIuY2xvbmUoKSBhcyBBbnlMYXllcjtcbiAgICAgIGlmIChpc0xheWVyR3JvdXAoY2xvbmVkTGF5ZXIpKSB7XG4gICAgICAgIGlmICh0aGlzLmxheWVySGFzVGVybSh2YWx1ZSwgY2xvbmVkTGF5ZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdHMuY29uY2F0KGNsb25lZExheWVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNsb25lZExheWVyLmNoaWxkcmVuID0gdGhpcy5maWx0ZXJTZWFyY2godmFsdWUsIFtcbiAgICAgICAgICAuLi5jbG9uZWRMYXllci5jaGlsZHJlblxuICAgICAgICBdKTtcbiAgICAgICAgaWYgKGNsb25lZExheWVyLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHRzLmNvbmNhdChjbG9uZWRMYXllcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGF5ZXJIYXNUZXJtKHZhbHVlLCBjbG9uZWRMYXllcikpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuY29uY2F0KGNsb25lZExheWVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgbGF5ZXJIYXNUZXJtKHRlcm06IHN0cmluZywgbGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSAobGF5ZXIub3B0aW9ucyBhcyBJbWFnZUxheWVyT3B0aW9ucykubWV0YWRhdGEgPz8ge307XG4gICAgY29uc3Qga2V5d29yZHMgPSBtZXRhZGF0YS5rZXl3b3JkTGlzdCB8fCBbXTtcbiAgICBjb25zdCBsYXllcktleXdvcmRzID0ga2V5d29yZHMubWFwKChrdzogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4ga3cubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2NhbEtleXdvcmQgPSB0aGlzLm5vcm1hbGl6ZVN0cmluZyh0ZXJtKTtcbiAgICBjb25zdCBsYXllclRpdGxlID0gdGhpcy5ub3JtYWxpemVTdHJpbmcobGF5ZXIudGl0bGUpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2VUeXBlID0gaXNMYXllckdyb3VwKGxheWVyKVxuICAgICAgPyAnJ1xuICAgICAgOiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMudHlwZSB8fCAnJztcbiAgICBjb25zdCBrZXl3b3JkUmVnZXggPSBuZXcgUmVnRXhwKGxvY2FsS2V5d29yZCwgJ2dpJyk7XG4gICAgY29uc3Qga2V5d29yZEluTGlzdCA9XG4gICAgICBsYXllcktleXdvcmRzLmZpbmQoKGt3OiBzdHJpbmcpID0+IGtleXdvcmRSZWdleC50ZXN0KGt3KSkgIT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKFxuICAgICAga2V5d29yZFJlZ2V4LnRlc3QobGF5ZXJUaXRsZSkgfHxcbiAgICAgIHRlcm0udG9Mb3dlckNhc2UoKSA9PT0gZGF0YVNvdXJjZVR5cGUudG9Mb3dlckNhc2UoKSB8fFxuICAgICAga2V5d29yZEluTGlzdFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVN0cmluZyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gIH1cbn1cbiIsIjxpZ28tbGF5ZXItbGlzdC10b29sXG4gIGZsb2F0TGFiZWw9XCJhdXRvXCJcbiAgW3ZpZXdlck9wdGlvbnNdPVwibGF5ZXJWaWV3ZXJPcHRpb25zXCJcbiAgW3Rlcm1dPVwib3B0aW9ucz8uZmlsdGVyQW5kU29ydE9wdGlvbnM/LmtleXdvcmRcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgKGFkZGVkTGF5ZXIpPVwiY3JlYXRlR3JvdXAoJGV2ZW50KVwiXG4gIChtb2RlQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbk1vZGUoJGV2ZW50KVwiXG4gIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICh2aXNpYmlsaXR5T25seUNoYW5nZSk9XCJvblZpc2liaWxpdHlPbmx5Q2hhbmdlKClcIlxuPlxuPC9pZ28tbGF5ZXItbGlzdC10b29sPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdGlvbidcIj5cbiAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItaXRlbSBhY3RpdmUtYmFja2dyb3VuZFwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICBbY29sb3JdPVwiaXNBbGxTZWxlY3RlZCgpID8gJ3ByaW1hcnknIDogJ2FjY2VudCdcIlxuICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxSb3dzKClcIlxuICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgIFtpbmRldGVybWluYXRlXT1cIiFpc0FsbFNlbGVjdGVkKCkgJiYgbGF5ZXJDb250cm9sbGVyLnNlbGVjdGVkLmxlbmd0aCA+IDBcIlxuICAgID5cbiAgICAgIHt7XG4gICAgICAgIGlzQWxsU2VsZWN0ZWQoKVxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmRlc2VsZWN0QWxsJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5zZWxlY3RBbGwnIHwgdHJhbnNsYXRlKVxuICAgICAgfX1cbiAgICA8L21hdC1jaGVja2JveD5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25Nb2RlKGZhbHNlKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG48ZGl2IGNsYXNzPVwibGF5ZXItdmlld1wiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGxheWVycz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICB1bmF2YWlsYWJsZUxheWVycz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICBiYXNlbGF5ZXJzPy5sZW5ndGggPiAwO1xuICAgICAgZWxzZSBzaG93RW1wdHlMaXN0XG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsYXllci1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgPGlnby1sYXllci11bmF2YWlsYWJsZS1saXN0XG4gICAgICAgICpuZ0lmPVwidW5hdmFpbGFibGVMYXllcnM/Lmxlbmd0aFwiXG4gICAgICAgIFtsYXllcnNPcHRpb25zXT1cInVuYXZhaWxhYmxlTGF5ZXJzXCJcbiAgICAgID48L2lnby1sYXllci11bmF2YWlsYWJsZS1saXN0PlxuXG4gICAgICA8aWdvLWxheWVyLWxpc3RcbiAgICAgICAgW2NvbnRyb2xsZXJdPVwibWFwLmxheWVyQ29udHJvbGxlclwiXG4gICAgICAgIFtsYXllcnNdPVwibGF5ZXJzXCJcbiAgICAgICAgW3ZpZXdlck9wdGlvbnNdPVwibGF5ZXJWaWV3ZXJPcHRpb25zXCJcbiAgICAgICAgW2lzRHJhZ0Ryb3BEaXNhYmxlZF09XCJpc0RyYWdEcm9wRGlzYWJsZWRcIlxuICAgICAgICBbaXNEZXNrdG9wXT1cImlzRGVza3RvcFwiXG4gICAgICA+PC9pZ28tbGF5ZXItbGlzdD5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFleGNsdWRlQmFzZUxheWVycyAmJiBiYXNlbGF5ZXJzPy5sZW5ndGhcIj5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgIDxpZ28tbGF5ZXItbGlzdFxuICAgICAgICAgIFtjb250cm9sbGVyXT1cIm1hcC5sYXllckNvbnRyb2xsZXJcIlxuICAgICAgICAgIFtsYXllcnNdPVwiYmFzZWxheWVyc1wiXG4gICAgICAgICAgW3ZpZXdlck9wdGlvbnNdPVwibGF5ZXJWaWV3ZXJPcHRpb25zXCJcbiAgICAgICAgICBbaXNEcmFnRHJvcERpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCJcbiAgICAgICAgPjwvaWdvLWxheWVyLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlMaXN0PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbXB0eUxpc3RdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxpZ28tbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zXG4gICpuZ0lmPVwibGF5ZXJDb250cm9sbGVyLmhhc1NlbGVjdGlvblwiXG4gIFttYXBdPVwibWFwXCJcbiAgW3ZpZXdlck9wdGlvbnNdPVwibGF5ZXJWaWV3ZXJPcHRpb25zXCJcbiAgW2NvbnRyb2xsZXJdPVwibGF5ZXJDb250cm9sbGVyXCJcbiAgW3NlYXJjaFRlcm1dPVwia2V5d29yZCQudmFsdWVcIlxuICAobGF5ZXJDaGFuZ2UpPVwib25MYXllckNoYW5nZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBsYXllckNvbnRyb2xsZXIuc2VsZWN0ZWQubGVuZ3RoID09PSAxICYmXG4gICAgICBpc0xheWVySXRlbShsYXllckNvbnRyb2xsZXIuc2VsZWN0ZWRbMF0pXG4gICAgXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21Cb3R0b21BY3Rpb25zXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsYXllcjogbGF5ZXJDb250cm9sbGVyLnNlbGVjdGVkWzBdIH1cIlxuICA+PC9uZy1jb250YWluZXI+XG48L2lnby1sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnM+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItdmlld2VyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLXZpZXdlci9sYXllci12aWV3ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXllckxpc3RDb250cm9sc09wdGlvbnMgfSBmcm9tICcuLi9sYXllci1saXN0LXRvb2wvbGF5ZXItbGlzdC10b29sLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJDb25maWcge1xuICBncm91cD86IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgbWF4SGllcmFyY2h5TGV2ZWw/OiBudW1iZXI7XG4gICAgY2FuQ3JlYXRlPzogYm9vbGVhbjtcbiAgICBjYW5SZW5hbWU/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExheWVyVmlld2VyT3B0aW9ucyBleHRlbmRzIExheWVyQ29uZmlnIHtcbiAgbW9kZT86IExheWVyVG9vbE1vZGU7XG4gIHF1ZXJ5QmFkZ2U/OiBib29sZWFuO1xuICBsZWdlbmQ/OiBQYXJ0aWFsPFZpZXdlckxlZ2VuZE9wdGlvbnM+O1xuICBmaWx0ZXJBbmRTb3J0T3B0aW9ucz86IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIFZpZXdlckxlZ2VuZE9wdGlvbnMge1xuICBzaG93T25WaXNpYmlsaXR5Q2hhbmdlOiBib29sZWFuO1xuICB1cGRhdGVPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW47XG4gIHNob3dGb3JWaXNpYmxlTGF5ZXJzOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBMYXllclRvb2xNb2RlID0gJ3NlbGVjdGlvbic7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './layer-viewer-bottom-actions.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudCc7XG4iXX0=
|
package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { MatBadgeModule } from '@angular/material/badge';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
8
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
|
+
import { FormDialogService } from '@igo2/common/form';
|
|
10
|
+
import { PanelComponent } from '@igo2/common/panel';
|
|
11
|
+
import { IgoLanguageModule } from '@igo2/core/language';
|
|
12
|
+
import * as olextent from 'ol/extent';
|
|
13
|
+
import { LayerListToolService } from '../layer-list-tool';
|
|
14
|
+
import { LayerController } from '../shared/layer-controller';
|
|
15
|
+
import { LinkedProperties, isLayerLinked, isLayerLinkedTogether } from '../shared/layers/linked';
|
|
16
|
+
import { isBaseLayer, isLayerGroup, isLayerItem } from '../utils/layer.utils';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../layer-list-tool";
|
|
19
|
+
import * as i2 from "@angular/material/button";
|
|
20
|
+
import * as i3 from "@angular/material/tooltip";
|
|
21
|
+
import * as i4 from "@angular/material/icon";
|
|
22
|
+
import * as i5 from "@angular/material/badge";
|
|
23
|
+
import * as i6 from "@angular/material/menu";
|
|
24
|
+
import * as i7 from "@angular/material/slider";
|
|
25
|
+
import * as i8 from "@ngx-translate/core";
|
|
26
|
+
export class LayerViewerBottomActionsComponent {
|
|
27
|
+
layerListToolService;
|
|
28
|
+
orderable = true;
|
|
29
|
+
map;
|
|
30
|
+
controller;
|
|
31
|
+
searchTerm;
|
|
32
|
+
viewerOptions;
|
|
33
|
+
layerChange = new EventEmitter();
|
|
34
|
+
get layersFlattened() {
|
|
35
|
+
return this.controller.layersFlattened;
|
|
36
|
+
}
|
|
37
|
+
get hasMultipleSelection() {
|
|
38
|
+
return this.controller.selected.length > 1;
|
|
39
|
+
}
|
|
40
|
+
get selected() {
|
|
41
|
+
return this.controller.selected;
|
|
42
|
+
}
|
|
43
|
+
get opacity() {
|
|
44
|
+
return Math.round(this.selected[0].opacity * 100);
|
|
45
|
+
}
|
|
46
|
+
set opacity(opacity) {
|
|
47
|
+
this.selected[0].opacity = opacity / 100;
|
|
48
|
+
}
|
|
49
|
+
get allSelectionVisibilityHidden() {
|
|
50
|
+
return this.controller.selected.every((layer) => !layer.visible);
|
|
51
|
+
}
|
|
52
|
+
get isSelectionRaisable() {
|
|
53
|
+
return this.controller.selected.every((layer) => this.isRaisable(layer));
|
|
54
|
+
}
|
|
55
|
+
get isSelectionLowerable() {
|
|
56
|
+
return this.controller.selected.every((layer) => this.isLowerable(layer));
|
|
57
|
+
}
|
|
58
|
+
get canRename() {
|
|
59
|
+
if (!this.viewerOptions.group.canRename || this.selected.length > 1) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const layer = this.selected[0];
|
|
63
|
+
return isLayerGroup(layer);
|
|
64
|
+
}
|
|
65
|
+
constructor(layerListToolService) {
|
|
66
|
+
this.layerListToolService = layerListToolService;
|
|
67
|
+
}
|
|
68
|
+
isLayerItem = isLayerItem;
|
|
69
|
+
handleRename() {
|
|
70
|
+
const layer = this.selected[0];
|
|
71
|
+
this.layerListToolService.renameGroup(layer).subscribe((name) => {
|
|
72
|
+
if (!name) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
layer.title = name;
|
|
76
|
+
this.layerChange.emit();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
isLayersRemovable(layers) {
|
|
80
|
+
if (layers.length === 1) {
|
|
81
|
+
return this.isLayerRemovable(layers[0]);
|
|
82
|
+
}
|
|
83
|
+
return layers?.every((l) => this.isLayerRemovable(l));
|
|
84
|
+
}
|
|
85
|
+
removeLayers() {
|
|
86
|
+
this.controller.remove(...this.selected);
|
|
87
|
+
this.controller.clearSelection();
|
|
88
|
+
}
|
|
89
|
+
isExtentsValid() {
|
|
90
|
+
let valid = false;
|
|
91
|
+
const layersExtent = olextent.createEmpty();
|
|
92
|
+
const maxLayerZoomExtent = this.map.viewController.maxLayerZoomExtent;
|
|
93
|
+
if (this.selected.some((layer) => isLayerItem(layer) && layer.options.showButtonZoomToExtent === false)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
for (const layer of this.selected) {
|
|
97
|
+
const layerExtent = layer.options.extent;
|
|
98
|
+
if (layerExtent && !layerExtent.includes(Infinity)) {
|
|
99
|
+
olextent.extend(layersExtent, layerExtent);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (!olextent.isEmpty(layersExtent)) {
|
|
103
|
+
if (maxLayerZoomExtent) {
|
|
104
|
+
valid = olextent.containsExtent(maxLayerZoomExtent, layersExtent);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
valid = true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return valid;
|
|
111
|
+
}
|
|
112
|
+
zoomLayersExtents() {
|
|
113
|
+
const layersExtent = olextent.createEmpty();
|
|
114
|
+
for (const layer of this.selected) {
|
|
115
|
+
const layerExtent = layer.options.extent;
|
|
116
|
+
if (layerExtent) {
|
|
117
|
+
olextent.extend(layersExtent, layerExtent);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this.map.viewController.zoomToExtent(layersExtent);
|
|
121
|
+
}
|
|
122
|
+
raiseSelection() {
|
|
123
|
+
this.map.layerController.raise(...this.selected);
|
|
124
|
+
}
|
|
125
|
+
lowerSelection() {
|
|
126
|
+
this.map.layerController.lower(...this.selected);
|
|
127
|
+
}
|
|
128
|
+
changeOpacity(event) {
|
|
129
|
+
this.opacity = event.value;
|
|
130
|
+
}
|
|
131
|
+
toggleSelectionVisibility() {
|
|
132
|
+
this.selected.forEach((layer) => {
|
|
133
|
+
layer.visible = !layer.visible;
|
|
134
|
+
});
|
|
135
|
+
this.layerChange.emit();
|
|
136
|
+
}
|
|
137
|
+
isLowerable(layer) {
|
|
138
|
+
if (isBaseLayer(layer)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const recipient = this.getRecipientOfVisibleLayer(layer);
|
|
142
|
+
const index = recipient.findIndex((lay) => lay.id === layer.id);
|
|
143
|
+
if (index >= recipient.length - 1) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (isLayerLinked(layer)) {
|
|
147
|
+
const layerBelow = recipient[index + 1];
|
|
148
|
+
return !isLayerLinkedTogether(layer, layerBelow, this.controller.layersFlattened, LinkedProperties.ZINDEX);
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
isRaisable(layer) {
|
|
153
|
+
if (isBaseLayer(layer)) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const recipient = this.getRecipientOfVisibleLayer(layer);
|
|
157
|
+
const index = recipient.findIndex((lay) => lay.id === layer.id);
|
|
158
|
+
if (index <= 0) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
if (isLayerLinked(layer)) {
|
|
162
|
+
const layerAbove = recipient[index - 1];
|
|
163
|
+
return !isLayerLinkedTogether(layer, layerAbove, this.controller.layersFlattened, LinkedProperties.ZINDEX);
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
getRecipientOfVisibleLayer(layer) {
|
|
168
|
+
return [...this.controller.getLayerRecipient(layer)].filter((layer) => layer.showInLayerList);
|
|
169
|
+
}
|
|
170
|
+
isLayerRemovable(layer) {
|
|
171
|
+
if (isLayerGroup(layer)) {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
return layer.options.removable !== false;
|
|
175
|
+
}
|
|
176
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerViewerBottomActionsComponent, deps: [{ token: i1.LayerListToolService }], target: i0.ɵɵFactoryTarget.Component });
|
|
177
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerViewerBottomActionsComponent, isStandalone: true, selector: "igo-layer-viewer-bottom-actions", inputs: { map: "map", controller: "controller", searchTerm: "searchTerm", viewerOptions: "viewerOptions" }, outputs: { layerChange: "layerChange" }, providers: [LayerListToolService, FormDialogService], ngImport: i0, template: "<igo-panel\n class=\"igo-layer-actions-container\"\n [title]=\"\n hasMultipleSelection\n ? ('igo.geo.layer.tools' | translate)\n : selected[0].title\n \"\n>\n <div class=\"igo-layer-button-group\">\n <button\n *ngIf=\"isLayersRemovable(selected)\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n (hasMultipleSelection\n ? isLayersRemovable(selected)\n ? ('igo.geo.layer.removeSelectedLayers' | translate)\n : ('igo.geo.layer.removeSelectedLayersRestriction' | translate)\n : 'igo.geo.layer.removeLayer'\n ) | translate\n \"\n (click)=\"removeLayers()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"'!'\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!hasMultipleSelection || isLayersRemovable(selected)\"\n >delete</mat-icon\n >\n </button>\n\n <button\n *ngIf=\"hasMultipleSelection\"\n class=\"eye-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"selected.length === 0\"\n [matTooltip]=\"\n allSelectionVisibilityHidden\n ? ('igo.geo.layer.showSelectedLayers' | translate)\n : ('igo.geo.layer.hideSelectedLayers' | translate)\n \"\n (click)=\"toggleSelectionVisibility()\"\n >\n <mat-icon>{{\n allSelectionVisibilityHidden ? 'visibility_off' : 'visibility'\n }}</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]=\"\n searchTerm\n ? ('igo.geo.layer.filterLowerLayer' | translate)\n : ('igo.geo.layer.lowerLayer' | translate)\n \"\n [disabled]=\"!isSelectionLowerable\"\n (click)=\"lowerSelection()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"searchTerm ? '!' : ''\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!isSelectionLowerable\"\n >arrow_downward</mat-icon\n >\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]=\"\n searchTerm\n ? ('igo.geo.layer.filterRaiseLayer' | translate)\n : ('igo.geo.layer.raiseLayer' | translate)\n \"\n [disabled]=\"!isSelectionRaisable\"\n (click)=\"raiseSelection()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"searchTerm ? '!' : ''\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!isSelectionRaisable\"\n >arrow_upward</mat-icon\n >\n </button>\n\n <ng-container *ngIf=\"controller.selected.length === 1\">\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 >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"opacity === 100 ? null : opacity\"\n matBadgeColor=\"primary\"\n matBadgeSize=\"medium\"\n >opacity</mat-icon\n >\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"panel-opacity-menu\">\n <mat-slider\n id=\"opacity-slider\"\n color=\"primary\"\n discrete\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n (click)=\"$event.stopPropagation()\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\"\n #ngSlider\n ><input\n matSliderThumb\n [value]=\"opacity\"\n (input)=\"\n changeOpacity({\n source: ngSliderThumb,\n parent: ngSlider,\n value: ngSliderThumb.value\n })\n \"\n #ngSliderThumb=\"matSliderThumb\"\n />\n </mat-slider>\n </mat-menu>\n </ng-container>\n\n <button\n *ngIf=\"isExtentsValid()\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n (hasMultipleSelection\n ? 'igo.geo.layer.zoomLayers'\n : 'igo.geo.layer.zoomLayer'\n ) | translate\n \"\n (click)=\"zoomLayersExtents()\"\n >\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\"\n >frame_inspect</mat-icon\n >\n </button>\n\n <button\n *ngIf=\"canRename\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.group.rename' | translate\"\n (click)=\"handleRename()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n\n <ng-content></ng-content>\n </div>\n</igo-panel>\n", styles: [".igo-layer-actions-container{padding:0 6px 0 4px}.igo-layer-actions-container>div{text-align:center}.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:4px}igo-panel{height:unset}::ng-deep .panel-opacity-menu{overflow:visible!important}::ng-deep .panel-opacity-menu #opacity-slider{margin:0 16px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i5.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i7.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i7.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }] });
|
|
178
|
+
}
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerViewerBottomActionsComponent, decorators: [{
|
|
180
|
+
type: Component,
|
|
181
|
+
args: [{ selector: 'igo-layer-viewer-bottom-actions', standalone: true, imports: [
|
|
182
|
+
NgIf,
|
|
183
|
+
NgTemplateOutlet,
|
|
184
|
+
MatButtonModule,
|
|
185
|
+
MatTooltipModule,
|
|
186
|
+
MatIconModule,
|
|
187
|
+
MatBadgeModule,
|
|
188
|
+
MatMenuModule,
|
|
189
|
+
MatSliderModule,
|
|
190
|
+
IgoLanguageModule,
|
|
191
|
+
PanelComponent
|
|
192
|
+
], providers: [LayerListToolService, FormDialogService], template: "<igo-panel\n class=\"igo-layer-actions-container\"\n [title]=\"\n hasMultipleSelection\n ? ('igo.geo.layer.tools' | translate)\n : selected[0].title\n \"\n>\n <div class=\"igo-layer-button-group\">\n <button\n *ngIf=\"isLayersRemovable(selected)\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n (hasMultipleSelection\n ? isLayersRemovable(selected)\n ? ('igo.geo.layer.removeSelectedLayers' | translate)\n : ('igo.geo.layer.removeSelectedLayersRestriction' | translate)\n : 'igo.geo.layer.removeLayer'\n ) | translate\n \"\n (click)=\"removeLayers()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"'!'\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!hasMultipleSelection || isLayersRemovable(selected)\"\n >delete</mat-icon\n >\n </button>\n\n <button\n *ngIf=\"hasMultipleSelection\"\n class=\"eye-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"selected.length === 0\"\n [matTooltip]=\"\n allSelectionVisibilityHidden\n ? ('igo.geo.layer.showSelectedLayers' | translate)\n : ('igo.geo.layer.hideSelectedLayers' | translate)\n \"\n (click)=\"toggleSelectionVisibility()\"\n >\n <mat-icon>{{\n allSelectionVisibilityHidden ? 'visibility_off' : 'visibility'\n }}</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]=\"\n searchTerm\n ? ('igo.geo.layer.filterLowerLayer' | translate)\n : ('igo.geo.layer.lowerLayer' | translate)\n \"\n [disabled]=\"!isSelectionLowerable\"\n (click)=\"lowerSelection()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"searchTerm ? '!' : ''\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!isSelectionLowerable\"\n >arrow_downward</mat-icon\n >\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]=\"\n searchTerm\n ? ('igo.geo.layer.filterRaiseLayer' | translate)\n : ('igo.geo.layer.raiseLayer' | translate)\n \"\n [disabled]=\"!isSelectionRaisable\"\n (click)=\"raiseSelection()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"searchTerm ? '!' : ''\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\"\n [matBadgeHidden]=\"!isSelectionRaisable\"\n >arrow_upward</mat-icon\n >\n </button>\n\n <ng-container *ngIf=\"controller.selected.length === 1\">\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 >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"opacity === 100 ? null : opacity\"\n matBadgeColor=\"primary\"\n matBadgeSize=\"medium\"\n >opacity</mat-icon\n >\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"panel-opacity-menu\">\n <mat-slider\n id=\"opacity-slider\"\n color=\"primary\"\n discrete\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n (click)=\"$event.stopPropagation()\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\"\n #ngSlider\n ><input\n matSliderThumb\n [value]=\"opacity\"\n (input)=\"\n changeOpacity({\n source: ngSliderThumb,\n parent: ngSlider,\n value: ngSliderThumb.value\n })\n \"\n #ngSliderThumb=\"matSliderThumb\"\n />\n </mat-slider>\n </mat-menu>\n </ng-container>\n\n <button\n *ngIf=\"isExtentsValid()\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n (hasMultipleSelection\n ? 'igo.geo.layer.zoomLayers'\n : 'igo.geo.layer.zoomLayer'\n ) | translate\n \"\n (click)=\"zoomLayersExtents()\"\n >\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\"\n >frame_inspect</mat-icon\n >\n </button>\n\n <button\n *ngIf=\"canRename\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.group.rename' | translate\"\n (click)=\"handleRename()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n\n <ng-content></ng-content>\n </div>\n</igo-panel>\n", styles: [".igo-layer-actions-container{padding:0 6px 0 4px}.igo-layer-actions-container>div{text-align:center}.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:4px}igo-panel{height:unset}::ng-deep .panel-opacity-menu{overflow:visible!important}::ng-deep .panel-opacity-menu #opacity-slider{margin:0 16px}\n"] }]
|
|
193
|
+
}], ctorParameters: () => [{ type: i1.LayerListToolService }], propDecorators: { map: [{
|
|
194
|
+
type: Input,
|
|
195
|
+
args: [{ required: true }]
|
|
196
|
+
}], controller: [{
|
|
197
|
+
type: Input,
|
|
198
|
+
args: [{ required: true }]
|
|
199
|
+
}], searchTerm: [{
|
|
200
|
+
type: Input,
|
|
201
|
+
args: [{ required: true }]
|
|
202
|
+
}], viewerOptions: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}], layerChange: [{
|
|
205
|
+
type: Output
|
|
206
|
+
}] } });
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENB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QUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLDBCQzVDdEQsNHhLQTJMQSxrNkJEMUpJLElBQUksNEZBRUosZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsY0FBYywyUEFDZCxhQUFhLHltQkFDYixlQUFlLGthQUNmLGlCQUFpQiw0RkFDakIsY0FBYzs7NEZBSUwsaUNBQWlDO2tCQW5CN0MsU0FBUzsrQkFDRSxpQ0FBaUMsY0FHL0IsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGNBQWM7cUJBQ2YsYUFDVSxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDO3lGQUt6QixHQUFHO3NCQUE3QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0U2xpZGVyQ2hhbmdlLCBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBGb3JtRGlhbG9nU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9mb3JtJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3BhbmVsJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCAqIGFzIG9sZXh0ZW50IGZyb20gJ29sL2V4dGVudCc7XG5cbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IExheWVyTGlzdFRvb2xTZXJ2aWNlIH0gZnJvbSAnLi4vbGF5ZXItbGlzdC10b29sJztcbmltcG9ydCB7IExheWVyVmlld2VyT3B0aW9ucyB9IGZyb20gJy4uL2xheWVyLXZpZXdlci9sYXllci12aWV3ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyQ29udHJvbGxlciB9IGZyb20gJy4uL3NoYXJlZC9sYXllci1jb250cm9sbGVyJztcbmltcG9ydCB0eXBlIHsgQW55TGF5ZXIsIExheWVyR3JvdXAgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzJztcbmltcG9ydCB7XG4gIExpbmtlZFByb3BlcnRpZXMsXG4gIGlzTGF5ZXJMaW5rZWQsXG4gIGlzTGF5ZXJMaW5rZWRUb2dldGhlclxufSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xpbmtlZCc7XG5pbXBvcnQgeyBpc0Jhc2VMYXllciwgaXNMYXllckdyb3VwLCBpc0xheWVySXRlbSB9IGZyb20gJy4uL3V0aWxzL2xheWVyLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWxheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0U2xpZGVyTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlLFxuICAgIFBhbmVsQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0xheWVyTGlzdFRvb2xTZXJ2aWNlLCBGb3JtRGlhbG9nU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJWaWV3ZXJCb3R0b21BY3Rpb25zQ29tcG9uZW50IHtcbiAgb3JkZXJhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtYXA6IE1hcEJhc2U7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbnRyb2xsZXI6IExheWVyQ29udHJvbGxlcjtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSB2aWV3ZXJPcHRpb25zOiBMYXllclZpZXdlck9wdGlvbnM7XG5cbiAgQE91dHB1dCgpIGxheWVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdldCBsYXllcnNGbGF0dGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5sYXllcnNGbGF0dGVuZWQ7XG4gIH1cblxuICBnZXQgaGFzTXVsdGlwbGVTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0ZWQ7XG4gIH1cblxuICBnZXQgb3BhY2l0eSgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNlbGVjdGVkWzBdLm9wYWNpdHkgKiAxMDApO1xuICB9XG4gIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRbMF0ub3BhY2l0eSA9IG9wYWNpdHkgLyAxMDA7XG4gIH1cblxuICBnZXQgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNlbGVjdGVkLmV2ZXJ5KChsYXllcikgPT4gIWxheWVyLnZpc2libGUpO1xuICB9XG5cbiAgZ2V0IGlzU2VsZWN0aW9uUmFpc2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5ldmVyeSgobGF5ZXIpID0+IHRoaXMuaXNSYWlzYWJsZShsYXllcikpO1xuICB9XG4gIGdldCBpc1NlbGVjdGlvbkxvd2VyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNlbGVjdGVkLmV2ZXJ5KChsYXllcikgPT4gdGhpcy5pc0xvd2VyYWJsZShsYXllcikpO1xuICB9XG5cbiAgZ2V0IGNhblJlbmFtZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmlld2VyT3B0aW9ucy5ncm91cC5jYW5SZW5hbWUgfHwgdGhpcy5zZWxlY3RlZC5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLnNlbGVjdGVkWzBdO1xuICAgIHJldHVybiBpc0xheWVyR3JvdXAobGF5ZXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYXllckxpc3RUb29sU2VydmljZTogTGF5ZXJMaXN0VG9vbFNlcnZpY2UpIHt9XG5cbiAgaXNMYXllckl0ZW0gPSBpc0xheWVySXRlbTtcblxuICBoYW5kbGVSZW5hbWUoKTogdm9pZCB7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLnNlbGVjdGVkWzBdIGFzIExheWVyR3JvdXA7XG4gICAgdGhpcy5sYXllckxpc3RUb29sU2VydmljZS5yZW5hbWVHcm91cChsYXllcikuc3Vic2NyaWJlKChuYW1lKSA9PiB7XG4gICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGF5ZXIudGl0bGUgPSBuYW1lO1xuICAgICAgdGhpcy5sYXllckNoYW5nZS5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0xheWVyc1JlbW92YWJsZShsYXllcnM6IEFueUxheWVyW10pOiBib29sZWFuIHtcbiAgICBpZiAobGF5ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNMYXllclJlbW92YWJsZShsYXllcnNbMF0pO1xuICAgIH1cbiAgICByZXR1cm4gbGF5ZXJzPy5ldmVyeSgobCkgPT4gdGhpcy5pc0xheWVyUmVtb3ZhYmxlKGwpKTtcbiAgfVxuXG4gIHJlbW92ZUxheWVycygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIucmVtb3ZlKC4uLnRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMuY29udHJvbGxlci5jbGVhclNlbGVjdGlvbigpO1xuICB9XG5cbiAgaXNFeHRlbnRzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgY29uc3QgbGF5ZXJzRXh0ZW50ID0gb2xleHRlbnQuY3JlYXRlRW1wdHkoKTtcbiAgICBjb25zdCBtYXhMYXllclpvb21FeHRlbnQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5tYXhMYXllclpvb21FeHRlbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZC5zb21lKFxuICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLm9wdGlvbnMuc2hvd0J1dHRvblpvb21Ub0V4dGVudCA9PT0gZmFsc2VcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCAmJiAhbGF5ZXJFeHRlbnQuaW5jbHVkZXMoSW5maW5pdHkpKSB7XG4gICAgICAgIG9sZXh0ZW50LmV4dGVuZChsYXllcnNFeHRlbnQsIGxheWVyRXh0ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9sZXh0ZW50LmlzRW1wdHkobGF5ZXJzRXh0ZW50KSkge1xuICAgICAgaWYgKG1heExheWVyWm9vbUV4dGVudCkge1xuICAgICAgICB2YWxpZCA9IG9sZXh0ZW50LmNvbnRhaW5zRXh0ZW50KG1heExheWVyWm9vbUV4dGVudCwgbGF5ZXJzRXh0ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG4gIHpvb21MYXllcnNFeHRlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XG5cbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCkge1xuICAgICAgICBvbGV4dGVudC5leHRlbmQobGF5ZXJzRXh0ZW50LCBsYXllckV4dGVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcbiAgICAgIGxheWVyc0V4dGVudCBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICAgICk7XG4gIH1cblxuICByYWlzZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIucmFpc2UoLi4udGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBsb3dlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIubG93ZXIoLi4udGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBjaGFuZ2VPcGFjaXR5KGV2ZW50OiBNYXRTbGlkZXJDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvblZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgbGF5ZXIudmlzaWJsZSA9ICFsYXllci52aXNpYmxlO1xuICAgIH0pO1xuICAgIHRoaXMubGF5ZXJDaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xvd2VyYWJsZShsYXllcjogQW55TGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoaXNCYXNlTGF5ZXIobGF5ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY2lwaWVudCA9IHRoaXMuZ2V0UmVjaXBpZW50T2ZWaXNpYmxlTGF5ZXIobGF5ZXIpO1xuICAgIGNvbnN0IGluZGV4ID0gcmVjaXBpZW50LmZpbmRJbmRleCgobGF5KSA9PiBsYXkuaWQgPT09IGxheWVyLmlkKTtcbiAgICBpZiAoaW5kZXggPj0gcmVjaXBpZW50Lmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNMYXllckxpbmtlZChsYXllcikpIHtcbiAgICAgIGNvbnN0IGxheWVyQmVsb3cgPSByZWNpcGllbnRbaW5kZXggKyAxXTtcbiAgICAgIHJldHVybiAhaXNMYXllckxpbmtlZFRvZ2V0aGVyKFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJCZWxvdyxcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLmxheWVyc0ZsYXR0ZW5lZCxcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlzUmFpc2FibGUobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmdldFJlY2lwaWVudE9mVmlzaWJsZUxheWVyKGxheWVyKTtcbiAgICBjb25zdCBpbmRleCA9IHJlY2lwaWVudC5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XG4gICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNMYXllckxpbmtlZChsYXllcikpIHtcbiAgICAgIGNvbnN0IGxheWVyQWJvdmUgPSByZWNpcGllbnRbaW5kZXggLSAxXTtcbiAgICAgIHJldHVybiAhaXNMYXllckxpbmtlZFRvZ2V0aGVyKFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJBYm92ZSxcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLmxheWVyc0ZsYXR0ZW5lZCxcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldFJlY2lwaWVudE9mVmlzaWJsZUxheWVyKGxheWVyOiBBbnlMYXllcik6IEFueUxheWVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5jb250cm9sbGVyLmdldExheWVyUmVjaXBpZW50KGxheWVyKV0uZmlsdGVyKFxuICAgICAgKGxheWVyKSA9PiBsYXllci5zaG93SW5MYXllckxpc3RcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xheWVyUmVtb3ZhYmxlKGxheWVyOiBBbnlMYXllcik6IGJvb2xlYW4ge1xuICAgIGlmIChpc0xheWVyR3JvdXAobGF5ZXIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZTtcbiAgfVxufVxuIiwiPGlnby1wYW5lbFxuICBjbGFzcz1cImlnby1sYXllci1hY3Rpb25zLWNvbnRhaW5lclwiXG4gIFt0aXRsZV09XCJcbiAgICBoYXNNdWx0aXBsZVNlbGVjdGlvblxuICAgICAgPyAoJ2lnby5nZW8ubGF5ZXIudG9vbHMnIHwgdHJhbnNsYXRlKVxuICAgICAgOiBzZWxlY3RlZFswXS50aXRsZVxuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaWdvLWxheWVyLWJ1dHRvbi1ncm91cFwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNMYXllcnNSZW1vdmFibGUoc2VsZWN0ZWQpXCJcbiAgICAgIGNsYXNzPVwiZGVsZXRlLWJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgKGhhc011bHRpcGxlU2VsZWN0aW9uXG4gICAgICAgICAgPyBpc0xheWVyc1JlbW92YWJsZShzZWxlY3RlZClcbiAgICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnJlbW92ZVNlbGVjdGVkTGF5ZXJzJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLnJlbW92ZVNlbGVjdGVkTGF5ZXJzUmVzdHJpY3Rpb24nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogJ2lnby5nZW8ubGF5ZXIucmVtb3ZlTGF5ZXInXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwicmVtb3ZlTGF5ZXJzKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgW21hdEJhZGdlXT1cIichJ1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiFoYXNNdWx0aXBsZVNlbGVjdGlvbiB8fCBpc0xheWVyc1JlbW92YWJsZShzZWxlY3RlZClcIlxuICAgICAgICA+ZGVsZXRlPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJoYXNNdWx0aXBsZVNlbGVjdGlvblwiXG4gICAgICBjbGFzcz1cImV5ZS1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlblxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnNob3dTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIuaGlkZVNlbGVjdGVkTGF5ZXJzJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uVmlzaWJpbGl0eSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+e3tcbiAgICAgICAgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlbiA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eSdcbiAgICAgIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZG93bi1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIHNlYXJjaFRlcm1cbiAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5maWx0ZXJMb3dlckxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5sb3dlckxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzU2VsZWN0aW9uTG93ZXJhYmxlXCJcbiAgICAgIChjbGljayk9XCJsb3dlclNlbGVjdGlvbigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgIFttYXRCYWRnZV09XCJzZWFyY2hUZXJtID8gJyEnIDogJydcIlxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXG4gICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhaXNTZWxlY3Rpb25Mb3dlcmFibGVcIlxuICAgICAgICA+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uXG4gICAgICA+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInVwLWJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgc2VhcmNoVGVybVxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlclJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLnJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNTZWxlY3Rpb25SYWlzYWJsZVwiXG4gICAgICAoY2xpY2spPVwicmFpc2VTZWxlY3Rpb24oKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICBbbWF0QmFkZ2VdPVwic2VhcmNoVGVybSA/ICchJyA6ICcnXCJcbiAgICAgICAgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIWlzU2VsZWN0aW9uUmFpc2FibGVcIlxuICAgICAgICA+YXJyb3dfdXB3YXJkPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2xsZXIuc2VsZWN0ZWQubGVuZ3RoID09PSAxXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwib3BhY2l0eS1idXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcGFjaXR5TWVudVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgW21hdEJhZGdlXT1cIm9wYWNpdHkgPT09IDEwMCA/IG51bGwgOiBvcGFjaXR5XCJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgICA+b3BhY2l0eTwvbWF0LWljb25cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxtYXQtbWVudSAjb3BhY2l0eU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwYW5lbC1vcGFjaXR5LW1lbnVcIj5cbiAgICAgICAgPG1hdC1zbGlkZXJcbiAgICAgICAgICBpZD1cIm9wYWNpdHktc2xpZGVyXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIGRpc2NyZXRlXG4gICAgICAgICAgc3RlcD1cIjVcIlxuICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgW21heF09XCIxMDBcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICNuZ1NsaWRlclxuICAgICAgICAgID48aW5wdXRcbiAgICAgICAgICAgIG1hdFNsaWRlclRodW1iXG4gICAgICAgICAgICBbdmFsdWVdPVwib3BhY2l0eVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwiXG4gICAgICAgICAgICAgIGNoYW5nZU9wYWNpdHkoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogbmdTbGlkZXJUaHVtYixcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG5nU2xpZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZ1NsaWRlclRodW1iLnZhbHVlXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI25nU2xpZGVyVGh1bWI9XCJtYXRTbGlkZXJUaHVtYlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtc2xpZGVyPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNFeHRlbnRzVmFsaWQoKVwiXG4gICAgICBjbGFzcz1cInpvb21MYXllci1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIChoYXNNdWx0aXBsZVNlbGVjdGlvblxuICAgICAgICAgID8gJ2lnby5nZW8ubGF5ZXIuem9vbUxheWVycydcbiAgICAgICAgICA6ICdpZ28uZ2VvLmxheWVyLnpvb21MYXllcidcbiAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJ6b29tTGF5ZXJzRXh0ZW50cygpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gbWF0QmFkZ2VDb2xvcj1cInByaW1hcnlcIiBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxuICAgICAgICA+ZnJhbWVfaW5zcGVjdDwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuUmVuYW1lXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLmdyb3VwLnJlbmFtZScgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVJlbmFtZSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9pZ28tcGFuZWw+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './layer-visibility-button.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci12aXNpYmlsaXR5LWJ1dHRvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXllci12aXNpYmlsaXR5LWJ1dHRvbi5jb21wb25lbnQnO1xuIl19
|