@igo2/geo 18.0.1-next.2 → 18.0.2
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/igo2-geo.mjs +5 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +234 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +272 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +19 -0
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +136 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +60 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +232 -0
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +24 -0
- package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
- package/esm2022/lib/catalog/catalog.module.mjs +26 -0
- package/esm2022/lib/catalog/index.mjs +6 -0
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
- package/esm2022/lib/catalog/shared/catalog.service.mjs +706 -0
- package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
- package/esm2022/lib/catalog/shared/index.mjs +5 -0
- package/esm2022/lib/datasource/index.mjs +3 -0
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +17 -0
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +441 -0
- package/esm2022/lib/datasource/shared/datasource.service.mjs +258 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +222 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +118 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +24 -0
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +42 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +52 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +70 -0
- package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +33 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +14 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +60 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +17 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +56 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +137 -0
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +170 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +227 -0
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +224 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +18 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +11 -0
- package/esm2022/lib/datasource/shared/index.mjs +6 -0
- package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
- package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
- package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
- package/esm2022/lib/datasource/utils/index.mjs +2 -0
- package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +246 -0
- package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +312 -0
- package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +192 -0
- package/esm2022/lib/directions/directions-results/index.mjs +2 -0
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -0
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +23 -0
- package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +159 -0
- package/esm2022/lib/directions/directions.component.mjs +437 -0
- package/esm2022/lib/directions/directions.module.mjs +46 -0
- package/esm2022/lib/directions/directions.provider.mjs +16 -0
- package/esm2022/lib/directions/index.mjs +8 -0
- package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
- package/esm2022/lib/directions/shared/directions.enum.mjs +72 -0
- package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
- package/esm2022/lib/directions/shared/directions.service.mjs +239 -0
- package/esm2022/lib/directions/shared/directions.utils.mjs +522 -0
- package/esm2022/lib/directions/shared/index.mjs +6 -0
- package/esm2022/lib/directions/shared/store.mjs +21 -0
- package/esm2022/lib/download/download-button/download-button.component.mjs +48 -0
- package/esm2022/lib/download/download-button/index.mjs +2 -0
- package/esm2022/lib/download/download.module.mjs +24 -0
- package/esm2022/lib/download/index.mjs +3 -0
- package/esm2022/lib/download/shared/download.interface.mjs +2 -0
- package/esm2022/lib/download/shared/download.service.mjs +67 -0
- package/esm2022/lib/download/shared/index.mjs +3 -0
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +42 -0
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +421 -0
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +28 -0
- package/esm2022/lib/draw/draw/draw.component.mjs +1136 -0
- package/esm2022/lib/draw/draw/draw.module.mjs +19 -0
- package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
- package/esm2022/lib/draw/index.mjs +3 -0
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
- package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
- package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
- package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
- package/esm2022/lib/draw/shared/index.mjs +5 -0
- package/esm2022/lib/environment/environment.interface.mjs +2 -0
- package/esm2022/lib/environment/index.mjs +2 -0
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +306 -0
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +56 -0
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +26 -0
- package/esm2022/lib/feature/feature-details/index.mjs +4 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +101 -0
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +19 -0
- package/esm2022/lib/feature/feature.module.mjs +26 -0
- package/esm2022/lib/feature/index.mjs +5 -0
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +28 -0
- package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
- package/esm2022/lib/feature/shared/feature.utils.mjs +332 -0
- package/esm2022/lib/feature/shared/index.mjs +8 -0
- package/esm2022/lib/feature/shared/store.mjs +143 -0
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +119 -0
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +99 -0
- package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +103 -0
- package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
- package/esm2022/lib/feature/shared/strategies/search.mjs +158 -0
- package/esm2022/lib/feature/shared/strategies/selection.mjs +385 -0
- package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
- package/esm2022/lib/filter/filter.module.mjs +131 -0
- package/esm2022/lib/filter/index.mjs +17 -0
- package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +141 -0
- package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +325 -0
- package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +787 -0
- package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +201 -0
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +665 -0
- package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +66 -0
- package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +244 -0
- package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +39 -0
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +32 -0
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +63 -0
- package/esm2022/lib/filter/shared/index.mjs +12 -0
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/ogc-filter.mjs +756 -0
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +47 -0
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
- package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +282 -0
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
- package/esm2022/lib/filter/shared/time-filter.service.mjs +107 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +875 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +191 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +120 -0
- package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +70 -0
- package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +537 -0
- package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +90 -0
- package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +39 -0
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +24 -0
- package/esm2022/lib/geo.module.mjs +63 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +559 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +170 -0
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +24 -0
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
- package/esm2022/lib/geometry/geometry.module.mjs +18 -0
- package/esm2022/lib/geometry/index.mjs +3 -0
- package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
- package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
- package/esm2022/lib/geometry/shared/controls/modify.mjs +538 -0
- package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +24 -0
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +113 -0
- package/esm2022/lib/geometry/shared/index.mjs +5 -0
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +49 -0
- package/esm2022/lib/import-export/export-button/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +876 -0
- package/esm2022/lib/import-export/import-export/index.mjs +2 -0
- package/esm2022/lib/import-export/import-export.module.mjs +31 -0
- package/esm2022/lib/import-export/index.mjs +5 -0
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +114 -0
- package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
- package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/export.service.mjs +378 -0
- package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
- package/esm2022/lib/import-export/shared/export.utils.mjs +51 -0
- package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
- package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
- package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
- package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
- package/esm2022/lib/import-export/shared/index.mjs +11 -0
- package/esm2022/lib/layer/index.mjs +16 -0
- 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/index.mjs +2 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +196 -0
- package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +287 -0
- package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +85 -0
- package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +104 -0
- package/esm2022/lib/layer/layer-list/index.mjs +2 -0
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +232 -0
- package/esm2022/lib/layer/layer-list-tool/index.mjs +4 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +92 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -0
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +61 -0
- 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 +26 -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 +107 -0
- package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
- package/esm2022/lib/layer/shared/index.mjs +6 -0
- 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.enums.mjs +2 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +315 -0
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +75 -0
- package/esm2022/lib/layer/shared/layers/index.mjs +18 -0
- 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 +7 -0
- package/esm2022/lib/layer/shared/layers/layer.mjs +178 -0
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
- 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.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +55 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +576 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +112 -0
- package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +54 -0
- package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
- package/esm2022/lib/layer/utils/index.mjs +6 -0
- package/esm2022/lib/layer/utils/layer.utils.mjs +57 -0
- package/esm2022/lib/layer/utils/outputLegend.mjs +32 -0
- package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
- package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +87 -0
- package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +122 -0
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +78 -0
- package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +73 -0
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/index.mjs +3 -0
- package/esm2022/lib/map/index.mjs +14 -0
- package/esm2022/lib/map/info-section/index.mjs +2 -0
- package/esm2022/lib/map/info-section/info-section.component.mjs +15 -0
- package/esm2022/lib/map/map-browser/index.mjs +2 -0
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +67 -0
- package/esm2022/lib/map/map-center/index.mjs +2 -0
- package/esm2022/lib/map/map-center/map-center.component.mjs +56 -0
- package/esm2022/lib/map/map.module.mjs +89 -0
- package/esm2022/lib/map/menu-button/index.mjs +2 -0
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +57 -0
- package/esm2022/lib/map/offline-button/index.mjs +2 -0
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +53 -0
- package/esm2022/lib/map/rotation-button/index.mjs +2 -0
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +58 -0
- package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
- package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
- package/esm2022/lib/map/shared/controllers/view.mjs +361 -0
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +481 -0
- package/esm2022/lib/map/shared/index.mjs +15 -0
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +238 -0
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +122 -0
- package/esm2022/lib/map/shared/map.abstract.mjs +24 -0
- package/esm2022/lib/map/shared/map.enums.mjs +6 -0
- package/esm2022/lib/map/shared/map.interface.mjs +2 -0
- package/esm2022/lib/map/shared/map.mjs +201 -0
- package/esm2022/lib/map/shared/map.service.mjs +29 -0
- package/esm2022/lib/map/shared/map.utils.mjs +455 -0
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +114 -0
- package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
- package/esm2022/lib/map/shared/projection.service.mjs +67 -0
- package/esm2022/lib/map/shared/projection.utils.mjs +122 -0
- package/esm2022/lib/map/swipe-control/index.mjs +2 -0
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +211 -0
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +112 -0
- package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +103 -0
- package/esm2022/lib/map/zoom-button/index.mjs +2 -0
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +35 -0
- package/esm2022/lib/measure/index.mjs +3 -0
- package/esm2022/lib/measure/measure.module.mjs +20 -0
- package/esm2022/lib/measure/measurer/index.mjs +6 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +40 -0
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +38 -0
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +143 -0
- package/esm2022/lib/measure/measurer/measurer.component.mjs +948 -0
- package/esm2022/lib/measure/measurer/measurer.module.mjs +20 -0
- package/esm2022/lib/measure/shared/index.mjs +4 -0
- package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
- package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
- package/esm2022/lib/metadata/index.mjs +4 -0
- package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +96 -0
- package/esm2022/lib/metadata/metadata.module.mjs +29 -0
- package/esm2022/lib/metadata/shared/index.mjs +3 -0
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
- package/esm2022/lib/metadata/shared/metadata.service.mjs +18 -0
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +130 -0
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +172 -0
- package/esm2022/lib/offline/geoDB/index.mjs +5 -0
- package/esm2022/lib/offline/index.mjs +6 -0
- package/esm2022/lib/offline/layerDB/index.mjs +3 -0
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +83 -0
- package/esm2022/lib/offline/offline.interface.mjs +2 -0
- package/esm2022/lib/offline/offline.provider.mjs +50 -0
- package/esm2022/lib/offline/shared/geo-network.service.mjs +79 -0
- package/esm2022/lib/offline/shared/index.mjs +2 -0
- package/esm2022/lib/overlay/index.mjs +2 -0
- package/esm2022/lib/overlay/shared/index.mjs +4 -0
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
- package/esm2022/lib/overlay/shared/overlay.mjs +139 -0
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
- package/esm2022/lib/print/index.mjs +4 -0
- package/esm2022/lib/print/print/print.component.mjs +116 -0
- package/esm2022/lib/print/print-form/index.mjs +2 -0
- package/esm2022/lib/print/print-form/print-form.component.mjs +320 -0
- package/esm2022/lib/print/print.module.mjs +20 -0
- package/esm2022/lib/print/shared/geopdf.mjs +68 -0
- package/esm2022/lib/print/shared/index.mjs +5 -0
- package/esm2022/lib/print/shared/print.interface.mjs +2 -0
- package/esm2022/lib/print/shared/print.service.mjs +1136 -0
- package/esm2022/lib/print/shared/print.type.mjs +30 -0
- package/esm2022/lib/query/index.mjs +2 -0
- package/esm2022/lib/query/query.module.mjs +27 -0
- package/esm2022/lib/query/shared/index.mjs +8 -0
- package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
- package/esm2022/lib/query/shared/query.directive.mjs +290 -0
- package/esm2022/lib/query/shared/query.enums.mjs +32 -0
- package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
- package/esm2022/lib/query/shared/query.service.mjs +753 -0
- package/esm2022/lib/query/shared/query.utils.mjs +45 -0
- package/esm2022/lib/search/index.mjs +10 -0
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +483 -0
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
- package/esm2022/lib/search/search-results/index.mjs +5 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +101 -0
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +433 -0
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +119 -0
- package/esm2022/lib/search/search-results/search-results.component.mjs +297 -0
- package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
- package/esm2022/lib/search/search-results/search-results.module.mjs +20 -0
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +118 -0
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +19 -0
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +264 -0
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +19 -0
- package/esm2022/lib/search/search.module.mjs +77 -0
- package/esm2022/lib/search/shared/index.mjs +10 -0
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +328 -0
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
- package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
- package/esm2022/lib/search/shared/search.enums.mjs +4 -0
- package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/search.provider.mjs +20 -0
- package/esm2022/lib/search/shared/search.service.mjs +149 -0
- package/esm2022/lib/search/shared/search.utils.mjs +92 -0
- package/esm2022/lib/search/shared/sources/cadastre.mjs +142 -0
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +32 -0
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/coordinates.mjs +168 -0
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +52 -0
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/icherche.mjs +816 -0
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +87 -0
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/ilayer.mjs +339 -0
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +58 -0
- package/esm2022/lib/search/shared/sources/index.mjs +23 -0
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +31 -0
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -0
- package/esm2022/lib/search/shared/sources/source.mjs +221 -0
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +454 -0
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +56 -0
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
- package/esm2022/lib/search/shared/sources/workspace.mjs +192 -0
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +31 -0
- package/esm2022/lib/style/index.mjs +5 -0
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +360 -0
- package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
- package/esm2022/lib/style/shared/feature/feature-style.mjs +162 -0
- package/esm2022/lib/style/shared/feature/index.mjs +2 -0
- package/esm2022/lib/style/shared/font.enum.mjs +17 -0
- package/esm2022/lib/style/shared/index.mjs +5 -0
- package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +39 -0
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
- package/esm2022/lib/style/shared/vector/index.mjs +4 -0
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/index.mjs +5 -0
- package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
- package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
- package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
- package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
- package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +193 -0
- package/esm2022/lib/style/style-modal/index.mjs +5 -0
- package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +142 -0
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
- package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
- package/esm2022/lib/style/style-service/draw-style.service.mjs +255 -0
- package/esm2022/lib/style/style-service/index.mjs +3 -0
- package/esm2022/lib/style/style-service/style.service.mjs +393 -0
- package/esm2022/lib/style/style.module.mjs +46 -0
- package/esm2022/lib/toast/index.mjs +2 -0
- package/esm2022/lib/toast/toast.component.mjs +99 -0
- package/esm2022/lib/toast/toast.module.mjs +24 -0
- package/esm2022/lib/utils/googleLinks.mjs +13 -0
- package/esm2022/lib/utils/id-generator.mjs +112 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/osmLinks.mjs +9 -0
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
- package/esm2022/lib/wkt/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/index.mjs +2 -0
- package/esm2022/lib/wkt/shared/wkt.service.mjs +235 -0
- package/esm2022/lib/wkt/wkt.module.mjs +25 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +36 -0
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +19 -0
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
- package/esm2022/lib/workspace/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +301 -0
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +720 -0
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +113 -0
- package/esm2022/lib/workspace/shared/index.mjs +8 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +121 -0
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +248 -0
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +188 -0
- package/esm2022/lib/workspace/widgets/index.mjs +4 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +48 -0
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +19 -0
- package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +172 -0
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +137 -0
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +19 -0
- package/esm2022/lib/workspace/workspace.module.mjs +32 -0
- package/esm2022/public_api.mjs +56 -0
- package/fesm2022/igo2-geo.mjs +717 -691
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
- package/lib/directions/shared/directions.service.d.ts +0 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
- package/lib/style/style-list/style-list.provider.d.ts +8 -1
- package/lib/style/style-list/style-list.service.d.ts +1 -1
- package/package.json +16 -14
- package/src/lib/layer/layer-list/layer-list.theme.scss +1 -2
- package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
- package/src/style/style.scss +1 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { TREE_SEPERATOR, Tree } from '@igo2/utils';
|
|
2
|
+
import { BehaviorSubject, combineLatest, debounceTime, map } from 'rxjs';
|
|
3
|
+
import { isBaseLayer, isLayerGroup, isLayerItem } from '../utils/layer.utils';
|
|
4
|
+
import { LayerSelectionModel } from './layer-selection';
|
|
5
|
+
import { isLayerLinked } from './layers/linked/linked-layer.utils';
|
|
6
|
+
// Below 10 is reserved for BaseLayer
|
|
7
|
+
const ZINDEX_MIN = 10;
|
|
8
|
+
/**
|
|
9
|
+
* We got four kind of layers
|
|
10
|
+
* TreeLayer: all layers to show in the layer manager
|
|
11
|
+
* Baselayer: Layer dedicated for the basemap
|
|
12
|
+
* SystemLayer: Every layer dedicated to good function of the map (Selection, hovering)
|
|
13
|
+
* OtherLayer: all remaining layer that is linked to another layer or simply not a systemLayer that need to be cleaned on map reset
|
|
14
|
+
*/
|
|
15
|
+
export class LayerController extends LayerSelectionModel {
|
|
16
|
+
_map;
|
|
17
|
+
tree;
|
|
18
|
+
/** Selection, Hovering, every internalLayer not in the tree is here */
|
|
19
|
+
_systemLayers = [];
|
|
20
|
+
/** LinkedLayer and other layer that are not in the previous category and not visible in tree */
|
|
21
|
+
_otherLayers = [];
|
|
22
|
+
layersFlattened = [];
|
|
23
|
+
_layers$ = new BehaviorSubject(undefined);
|
|
24
|
+
layers$ = this._layers$.asObservable();
|
|
25
|
+
layersFlattened$ = this._layers$
|
|
26
|
+
.asObservable()
|
|
27
|
+
.pipe(map(() => this.layersFlattened));
|
|
28
|
+
_baseLayers = [];
|
|
29
|
+
_baseLayers$ = new BehaviorSubject(undefined);
|
|
30
|
+
baseLayers$ = this._baseLayers$.asObservable();
|
|
31
|
+
baseLayerSelection;
|
|
32
|
+
/** All layers with the tree flattened */
|
|
33
|
+
all$;
|
|
34
|
+
constructor(_map, layers) {
|
|
35
|
+
super();
|
|
36
|
+
this._map = _map;
|
|
37
|
+
this.all$ = combineLatest([this.layersFlattened$, this.baseLayers$]).pipe(debounceTime(10), map(() => this.all));
|
|
38
|
+
this.tree = new Tree(layers, {
|
|
39
|
+
getChildren: (node) => isLayerGroup(node) && node.children,
|
|
40
|
+
getId: (node) => node.id,
|
|
41
|
+
getLevel: (node) => node.zIndex,
|
|
42
|
+
reverse: true
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
get all() {
|
|
46
|
+
return [
|
|
47
|
+
...this.baseLayers,
|
|
48
|
+
...this.layersFlattened,
|
|
49
|
+
...this._systemLayers,
|
|
50
|
+
...this._otherLayers
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
get baseLayers() {
|
|
54
|
+
return this._baseLayers;
|
|
55
|
+
}
|
|
56
|
+
get baseLayer() {
|
|
57
|
+
return this.baseLayers.find((layer) => layer.visible);
|
|
58
|
+
}
|
|
59
|
+
get treeLayers() {
|
|
60
|
+
return this.tree.data;
|
|
61
|
+
}
|
|
62
|
+
add(...layers) {
|
|
63
|
+
const offset = 0;
|
|
64
|
+
const addedLayers = layers
|
|
65
|
+
.map((layer) => this.handleAdd(layer, offset))
|
|
66
|
+
.filter(Boolean);
|
|
67
|
+
if (!addedLayers.length) {
|
|
68
|
+
this.notify();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this.tree.add(...addedLayers);
|
|
72
|
+
// Notify the layers change before the iteration on the addedLayer
|
|
73
|
+
// Because the Layer may have have LinkedLayer who need to find the parent.
|
|
74
|
+
this.layersFlattened = [...this.tree.flattened];
|
|
75
|
+
addedLayers.forEach((layer) => layer.add());
|
|
76
|
+
this.recalculateZindex();
|
|
77
|
+
this.notify();
|
|
78
|
+
}
|
|
79
|
+
selectBaseLayer(layer) {
|
|
80
|
+
if (!isBaseLayer(layer)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (this.baseLayerSelection) {
|
|
84
|
+
this.baseLayerSelection.visible = false;
|
|
85
|
+
}
|
|
86
|
+
layer.visible = true;
|
|
87
|
+
this.baseLayerSelection = layer;
|
|
88
|
+
this._map.viewController.olView.setMinZoom(layer.dataSource.options.minZoom || (this._map.options.view || {}).minZoom);
|
|
89
|
+
this._map.viewController.olView.setMaxZoom(layer.dataSource.options.maxZoom || (this._map.options.view || {}).maxZoom);
|
|
90
|
+
}
|
|
91
|
+
remove(...layers) {
|
|
92
|
+
const list = layers.reduce((list, layer) => {
|
|
93
|
+
if (this.isSelected(layer)) {
|
|
94
|
+
this.deselect(layer);
|
|
95
|
+
}
|
|
96
|
+
const result = this._remove(layer);
|
|
97
|
+
Array.isArray(result) ? list.push(...result) : list.push(result);
|
|
98
|
+
return list;
|
|
99
|
+
}, []);
|
|
100
|
+
this.tree.remove(...list);
|
|
101
|
+
this.notify();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Move a layer into the tree
|
|
105
|
+
* @param layer Layer to move
|
|
106
|
+
* @param beforeTo The index position to move inside a tree
|
|
107
|
+
*/
|
|
108
|
+
moveTo(beforeTo, ...layers) {
|
|
109
|
+
const movedLayers = this.tree.moveTo(beforeTo, ...layers);
|
|
110
|
+
if (!movedLayers?.length) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
return movedLayers;
|
|
114
|
+
}
|
|
115
|
+
moveBelow(layerRef, ...layers) {
|
|
116
|
+
const position = this.getPosition(layerRef, 'below');
|
|
117
|
+
const movedLayers = this.moveTo(position, ...layers);
|
|
118
|
+
this.handleMove(movedLayers, layerRef.parent);
|
|
119
|
+
}
|
|
120
|
+
moveAbove(layerRef, ...layers) {
|
|
121
|
+
const position = this.getPosition(layerRef);
|
|
122
|
+
const movedLayers = this.moveTo(position, ...layers);
|
|
123
|
+
this.handleMove(movedLayers, layerRef.parent);
|
|
124
|
+
}
|
|
125
|
+
moveInside(layerRef, ...layers) {
|
|
126
|
+
const position = this.getPosition(layerRef);
|
|
127
|
+
const movedLayers = this.moveTo(position.concat(0), ...layers);
|
|
128
|
+
this.handleMove(movedLayers, layerRef);
|
|
129
|
+
}
|
|
130
|
+
raise(...layers) {
|
|
131
|
+
const position = this.getPosition(layers[0]);
|
|
132
|
+
const nextPosition = this.findLowestVisiblePostion(position, -1);
|
|
133
|
+
this.moveTo(nextPosition, ...layers);
|
|
134
|
+
this.handleMove(layers, null, true);
|
|
135
|
+
}
|
|
136
|
+
lower(...layers) {
|
|
137
|
+
const position = this.getPosition(layers[layers.length - 1]);
|
|
138
|
+
const nextPosition = this.findLowestVisiblePostion(position, 2); // +2 because we use moveBefore
|
|
139
|
+
this.moveTo(nextPosition, ...layers);
|
|
140
|
+
this.handleMove(layers, null, true);
|
|
141
|
+
}
|
|
142
|
+
/** Reset all except SystemLayer */
|
|
143
|
+
reset() {
|
|
144
|
+
this.clearBaselayers();
|
|
145
|
+
this.clearTree();
|
|
146
|
+
this.clearOther();
|
|
147
|
+
this.clearSelection();
|
|
148
|
+
this.notify();
|
|
149
|
+
}
|
|
150
|
+
getById(id) {
|
|
151
|
+
return this.all.find((layer) => layer.id && layer.id === id);
|
|
152
|
+
}
|
|
153
|
+
getBySourceId(id) {
|
|
154
|
+
return this.all.find((layer) => layer.dataSource?.id && layer.dataSource.id === id);
|
|
155
|
+
}
|
|
156
|
+
getPosition(layer, type = 'above') {
|
|
157
|
+
const position = this.tree.getPosition(layer);
|
|
158
|
+
if (type === 'below') {
|
|
159
|
+
let index = position.pop();
|
|
160
|
+
return position.concat(++index);
|
|
161
|
+
}
|
|
162
|
+
return position;
|
|
163
|
+
}
|
|
164
|
+
getLayerRecipient(layer) {
|
|
165
|
+
return layer.parent
|
|
166
|
+
? this.tree.getChildren(layer.parent)
|
|
167
|
+
: [...this.treeLayers];
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* We got non visible layer in the tree like LinkedLayer. We want the next visible layer in tree
|
|
171
|
+
*/
|
|
172
|
+
findLowestVisiblePostion(position, increment) {
|
|
173
|
+
const index = position.pop();
|
|
174
|
+
const nextPosition = position.concat(index + increment);
|
|
175
|
+
const layer = this.tree.getNodeByPosition(nextPosition);
|
|
176
|
+
if (layer && !layer.showInLayerList) {
|
|
177
|
+
const nextIndex = increment > 1 ? 1 : increment;
|
|
178
|
+
return this.findLowestVisiblePostion(nextPosition, nextIndex);
|
|
179
|
+
}
|
|
180
|
+
return nextPosition;
|
|
181
|
+
}
|
|
182
|
+
handleMove(layers, parent, keepCurrentParent) {
|
|
183
|
+
if (!layers?.length) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
layers.forEach((layer) => {
|
|
187
|
+
layer.moveTo(keepCurrentParent ? layer.parent : parent);
|
|
188
|
+
});
|
|
189
|
+
this._internalMove();
|
|
190
|
+
}
|
|
191
|
+
_internalMove() {
|
|
192
|
+
this.recalculateZindex();
|
|
193
|
+
this.notify();
|
|
194
|
+
}
|
|
195
|
+
getBefore(layer) {
|
|
196
|
+
return this.treeLayers.find((layerTree) => layerTree.zIndex <= layer.zIndex);
|
|
197
|
+
}
|
|
198
|
+
/** Recursive */
|
|
199
|
+
recalculateZindex(minIndex = this.baseLayers.length, layers = this.treeLayers) {
|
|
200
|
+
return [...layers].reverse().reduce((previousZindex, layer) => {
|
|
201
|
+
let zIndex = ++previousZindex;
|
|
202
|
+
layer.zIndex = zIndex;
|
|
203
|
+
if (isLayerGroup(layer)) {
|
|
204
|
+
zIndex = this.recalculateZindex(zIndex, layer.children);
|
|
205
|
+
}
|
|
206
|
+
return zIndex;
|
|
207
|
+
}, minIndex);
|
|
208
|
+
}
|
|
209
|
+
handleAdd(layer, offset) {
|
|
210
|
+
const existingLayer = this.getById(layer.id);
|
|
211
|
+
if (existingLayer !== undefined) {
|
|
212
|
+
existingLayer.visible = true;
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const zIndex = this.getZindexOffset(layer, offset);
|
|
216
|
+
this.setZindex(layer, zIndex);
|
|
217
|
+
layer.init(this._map);
|
|
218
|
+
if (isBaseLayer(layer)) {
|
|
219
|
+
if (layer.visible) {
|
|
220
|
+
this.selectBaseLayer(layer);
|
|
221
|
+
}
|
|
222
|
+
this._baseLayers.push(layer);
|
|
223
|
+
}
|
|
224
|
+
else if (this.isOtherLayer(layer)) {
|
|
225
|
+
this._otherLayers.push(layer);
|
|
226
|
+
}
|
|
227
|
+
else if (this.isSystemLayer(layer) && !layer.showInLayerList) {
|
|
228
|
+
this._systemLayers.push(layer);
|
|
229
|
+
}
|
|
230
|
+
else if (layer.showInLayerList) {
|
|
231
|
+
return layer;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
this._otherLayers.push(layer);
|
|
235
|
+
}
|
|
236
|
+
const parent = layer.parentId
|
|
237
|
+
? this.getById(layer.parentId.split(TREE_SEPERATOR).pop())
|
|
238
|
+
: undefined;
|
|
239
|
+
layer.add(parent);
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
_remove(layer) {
|
|
243
|
+
if (isBaseLayer(layer)) {
|
|
244
|
+
this.removeBaselayer(layer);
|
|
245
|
+
}
|
|
246
|
+
else if (this.isOtherLayer(layer)) {
|
|
247
|
+
this.removeOtherLayer(layer);
|
|
248
|
+
}
|
|
249
|
+
else if (this.isSystemLayer(layer)) {
|
|
250
|
+
this.removeSystemLayer(layer);
|
|
251
|
+
}
|
|
252
|
+
layer.remove();
|
|
253
|
+
return layer;
|
|
254
|
+
}
|
|
255
|
+
removeBaselayer(layer) {
|
|
256
|
+
this.removeIn(layer, this._baseLayers);
|
|
257
|
+
}
|
|
258
|
+
removeSystemLayer(layer) {
|
|
259
|
+
this.removeIn(layer, this._systemLayers);
|
|
260
|
+
}
|
|
261
|
+
removeOtherLayer(layer) {
|
|
262
|
+
this.removeIn(layer, this._otherLayers);
|
|
263
|
+
}
|
|
264
|
+
removeIn(layer, store) {
|
|
265
|
+
const index = store.findIndex((sysLayer) => sysLayer.id === layer.id);
|
|
266
|
+
if (index === -1) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
store.splice(index, 1);
|
|
270
|
+
}
|
|
271
|
+
isSystemLayer(layer) {
|
|
272
|
+
return isLayerItem(layer) && layer.isIgoInternalLayer;
|
|
273
|
+
}
|
|
274
|
+
isOtherLayer(layer) {
|
|
275
|
+
return isLayerLinked(layer) && !layer.showInLayerList;
|
|
276
|
+
}
|
|
277
|
+
clearBaselayers() {
|
|
278
|
+
this.baseLayers.forEach((layer) => this._remove(layer));
|
|
279
|
+
this._baseLayers = [];
|
|
280
|
+
}
|
|
281
|
+
clearTree() {
|
|
282
|
+
this.treeLayers.forEach((layer) => this._remove(layer));
|
|
283
|
+
this.tree.clear();
|
|
284
|
+
}
|
|
285
|
+
clearSystems() {
|
|
286
|
+
this._systemLayers.forEach((layer) => this._remove(layer));
|
|
287
|
+
this._systemLayers = [];
|
|
288
|
+
}
|
|
289
|
+
clearOther() {
|
|
290
|
+
this._otherLayers.forEach((layer) => this._remove(layer));
|
|
291
|
+
this._otherLayers = [];
|
|
292
|
+
}
|
|
293
|
+
getZindexOffset(layer, previousOffset = 0) {
|
|
294
|
+
return layer.zIndex ? 0 : previousOffset++;
|
|
295
|
+
}
|
|
296
|
+
setZindex(layer, offset) {
|
|
297
|
+
if (isBaseLayer(layer)) {
|
|
298
|
+
return this.handleBaselayerZIndex(layer, offset);
|
|
299
|
+
}
|
|
300
|
+
if (layer.zIndex === undefined || layer.zIndex === 0) {
|
|
301
|
+
const maxZIndex = Math.max(ZINDEX_MIN, ...this.treeLayers.map((l) => l.zIndex));
|
|
302
|
+
layer.zIndex = maxZIndex + 1 + (offset ?? 0);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
handleBaselayerZIndex(layer, offset) {
|
|
306
|
+
const maxZIndex = Math.max(0, ...this.baseLayers.map((l) => l.zIndex));
|
|
307
|
+
const zIndex = maxZIndex + 1 + (offset ?? 0);
|
|
308
|
+
layer.zIndex = zIndex > ZINDEX_MIN ? ZINDEX_MIN : zIndex;
|
|
309
|
+
}
|
|
310
|
+
notify() {
|
|
311
|
+
this.layersFlattened = [...this.tree.flattened];
|
|
312
|
+
this._layers$.next([...this.treeLayers]);
|
|
313
|
+
this._baseLayers$.next([...this.baseLayers]);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC9sYXllci1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLFlBQVksRUFDWixHQUFHLEVBQ0osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUscUNBQXFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxtQkFBbUI7SUE0QjVDO0lBM0JGLElBQUksQ0FBaUI7SUFFN0IsdUVBQXVFO0lBQy9ELGFBQWEsR0FBZSxFQUFFLENBQUM7SUFFdkMsZ0dBQWdHO0lBQ3hGLFlBQVksR0FBZSxFQUFFLENBQUM7SUFFdEMsZUFBZSxHQUFlLEVBQUUsQ0FBQztJQUV6QixRQUFRLEdBQUcsSUFBSSxlQUFlLENBQXlCLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXZDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRO1NBQzdCLFlBQVksRUFBRTtTQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFFakMsV0FBVyxHQUFZLEVBQUUsQ0FB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ekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRSRUVfU0VQRVJBVE9SLCBUcmVlIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0eXBlIE1hcEJhc2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBpc0Jhc2VMYXllciwgaXNMYXllckdyb3VwLCBpc0xheWVySXRlbSB9IGZyb20gJy4uL3V0aWxzL2xheWVyLnV0aWxzJztcbmltcG9ydCB7IExheWVyU2VsZWN0aW9uTW9kZWwgfSBmcm9tICcuL2xheWVyLXNlbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IEFueUxheWVyIH0gZnJvbSAnLi9sYXllcnMvYW55LWxheWVyJztcbmltcG9ydCB0eXBlIHsgTGF5ZXIgfSBmcm9tICcuL2xheWVycy9sYXllcic7XG5pbXBvcnQgdHlwZSB7IExheWVyR3JvdXAgfSBmcm9tICcuL2xheWVycy9sYXllci1ncm91cCc7XG5pbXBvcnQgeyBpc0xheWVyTGlua2VkIH0gZnJvbSAnLi9sYXllcnMvbGlua2VkL2xpbmtlZC1sYXllci51dGlscyc7XG5cbi8vIEJlbG93IDEwIGlzIHJlc2VydmVkIGZvciBCYXNlTGF5ZXJcbmNvbnN0IFpJTkRFWF9NSU4gPSAxMDtcblxuLyoqXG4gKiBXZSBnb3QgZm91ciBraW5kIG9mIGxheWVyc1xuICogVHJlZUxheWVyOiBhbGwgbGF5ZXJzIHRvIHNob3cgaW4gdGhlIGxheWVyIG1hbmFnZXJcbiAqIEJhc2VsYXllcjogTGF5ZXIgZGVkaWNhdGVkIGZvciB0aGUgYmFzZW1hcFxuICogU3lzdGVtTGF5ZXI6IEV2ZXJ5IGxheWVyIGRlZGljYXRlZCB0byBnb29kIGZ1bmN0aW9uIG9mIHRoZSBtYXAgKFNlbGVjdGlvbiwgaG92ZXJpbmcpXG4gKiBPdGhlckxheWVyOiBhbGwgcmVtYWluaW5nIGxheWVyIHRoYXQgaXMgbGlua2VkIHRvIGFub3RoZXIgbGF5ZXIgb3Igc2ltcGx5IG5vdCBhIHN5c3RlbUxheWVyIHRoYXQgbmVlZCB0byBiZSBjbGVhbmVkIG9uIG1hcCByZXNldFxuICovXG5leHBvcnQgY2xhc3MgTGF5ZXJDb250cm9sbGVyIGV4dGVuZHMgTGF5ZXJTZWxlY3Rpb25Nb2RlbCB7XG4gIHByaXZhdGUgdHJlZTogVHJlZTxBbnlMYXllcj47XG5cbiAgLyoqIFNlbGVjdGlvbiwgSG92ZXJpbmcsIGV2ZXJ5IGludGVybmFsTGF5ZXIgbm90IGluIHRoZSB0cmVlIGlzIGhlcmUgKi9cbiAgcHJpdmF0ZSBfc3lzdGVtTGF5ZXJzOiBBbnlMYXllcltdID0gW107XG5cbiAgLyoqIExpbmtlZExheWVyIGFuZCBvdGhlciBsYXllciB0aGF0IGFyZSBub3QgaW4gdGhlIHByZXZpb3VzIGNhdGVnb3J5IGFuZCBub3QgdmlzaWJsZSBpbiB0cmVlICovXG4gIHByaXZhdGUgX290aGVyTGF5ZXJzOiBBbnlMYXllcltdID0gW107XG5cbiAgbGF5ZXJzRmxhdHRlbmVkOiBBbnlMYXllcltdID0gW107XG5cbiAgcHJpdmF0ZSBfbGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QW55TGF5ZXJbXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgbGF5ZXJzJCA9IHRoaXMuX2xheWVycyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgbGF5ZXJzRmxhdHRlbmVkJCA9IHRoaXMuX2xheWVycyRcbiAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAucGlwZShtYXAoKCkgPT4gdGhpcy5sYXllcnNGbGF0dGVuZWQpKTtcblxuICBwcml2YXRlIF9iYXNlTGF5ZXJzOiBMYXllcltdID0gW107XG4gIHByaXZhdGUgX2Jhc2VMYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBiYXNlTGF5ZXJzJCA9IHRoaXMuX2Jhc2VMYXllcnMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGJhc2VMYXllclNlbGVjdGlvbjogTGF5ZXI7XG5cbiAgLyoqIEFsbCBsYXllcnMgd2l0aCB0aGUgdHJlZSBmbGF0dGVuZWQgKi9cbiAgYWxsJDogT2JzZXJ2YWJsZTxBbnlMYXllcltdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9tYXA6IE1hcEJhc2UsXG4gICAgbGF5ZXJzOiBBbnlMYXllcltdXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFsbCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmxheWVyc0ZsYXR0ZW5lZCQsIHRoaXMuYmFzZUxheWVycyRdKS5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmFsbClcbiAgICApO1xuXG4gICAgdGhpcy50cmVlID0gbmV3IFRyZWUobGF5ZXJzLCB7XG4gICAgICBnZXRDaGlsZHJlbjogKG5vZGUpID0+IGlzTGF5ZXJHcm91cChub2RlKSAmJiBub2RlLmNoaWxkcmVuLFxuICAgICAgZ2V0SWQ6IChub2RlKSA9PiBub2RlLmlkLFxuICAgICAgZ2V0TGV2ZWw6IChub2RlKSA9PiBub2RlLnpJbmRleCxcbiAgICAgIHJldmVyc2U6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhbGwoKTogQW55TGF5ZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuYmFzZUxheWVycyxcbiAgICAgIC4uLnRoaXMubGF5ZXJzRmxhdHRlbmVkLFxuICAgICAgLi4udGhpcy5fc3lzdGVtTGF5ZXJzLFxuICAgICAgLi4udGhpcy5fb3RoZXJMYXllcnNcbiAgICBdO1xuICB9XG5cbiAgZ2V0IGJhc2VMYXllcnMoKTogcmVhZG9ubHkgTGF5ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Jhc2VMYXllcnM7XG4gIH1cblxuICBnZXQgYmFzZUxheWVyKCk6IExheWVyIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlTGF5ZXJzLmZpbmQoKGxheWVyKSA9PiBsYXllci52aXNpYmxlKTtcbiAgfVxuXG4gIGdldCB0cmVlTGF5ZXJzKCk6IHJlYWRvbmx5IEFueUxheWVyW10ge1xuICAgIHJldHVybiB0aGlzLnRyZWUuZGF0YTtcbiAgfVxuXG4gIGFkZCguLi5sYXllcnM6IEFueUxheWVyW10pOiB2b2lkIHtcbiAgICBjb25zdCBvZmZzZXQgPSAwO1xuXG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcbiAgICAgIC5tYXAoKGxheWVyKSA9PiB0aGlzLmhhbmRsZUFkZChsYXllciwgb2Zmc2V0KSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAoIWFkZGVkTGF5ZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5ub3RpZnkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyZWUuYWRkKC4uLmFkZGVkTGF5ZXJzKTtcblxuICAgIC8vIE5vdGlmeSB0aGUgbGF5ZXJzIGNoYW5nZSBiZWZvcmUgdGhlIGl0ZXJhdGlvbiBvbiB0aGUgYWRkZWRMYXllclxuICAgIC8vIEJlY2F1c2UgdGhlIExheWVyIG1heSBoYXZlIGhhdmUgTGlua2VkTGF5ZXIgd2hvIG5lZWQgdG8gZmluZCB0aGUgcGFyZW50LlxuICAgIHRoaXMubGF5ZXJzRmxhdHRlbmVkID0gWy4uLnRoaXMudHJlZS5mbGF0dGVuZWRdO1xuICAgIGFkZGVkTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiBsYXllci5hZGQoKSk7XG5cbiAgICB0aGlzLnJlY2FsY3VsYXRlWmluZGV4KCk7XG4gICAgdGhpcy5ub3RpZnkoKTtcbiAgfVxuXG4gIHNlbGVjdEJhc2VMYXllcihsYXllcjogTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoIWlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJhc2VMYXllclNlbGVjdGlvbikge1xuICAgICAgdGhpcy5iYXNlTGF5ZXJTZWxlY3Rpb24udmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxheWVyLnZpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuYmFzZUxheWVyU2VsZWN0aW9uID0gbGF5ZXI7XG5cbiAgICB0aGlzLl9tYXAudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldE1pblpvb20oXG4gICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMubWluWm9vbSB8fCAodGhpcy5fbWFwLm9wdGlvbnMudmlldyB8fCB7fSkubWluWm9vbVxuICAgICk7XG4gICAgdGhpcy5fbWFwLnZpZXdDb250cm9sbGVyLm9sVmlldy5zZXRNYXhab29tKFxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLm1heFpvb20gfHwgKHRoaXMuX21hcC5vcHRpb25zLnZpZXcgfHwge30pLm1heFpvb21cbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlKC4uLmxheWVyczogQW55TGF5ZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3QgPSBsYXllcnMucmVkdWNlKChsaXN0LCBsYXllcikgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChsYXllcikpIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdChsYXllcik7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9yZW1vdmUobGF5ZXIpO1xuICAgICAgQXJyYXkuaXNBcnJheShyZXN1bHQpID8gbGlzdC5wdXNoKC4uLnJlc3VsdCkgOiBsaXN0LnB1c2gocmVzdWx0KTtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sIFtdKTtcbiAgICB0aGlzLnRyZWUucmVtb3ZlKC4uLmxpc3QpO1xuXG4gICAgdGhpcy5ub3RpZnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGEgbGF5ZXIgaW50byB0aGUgdHJlZVxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gbW92ZVxuICAgKiBAcGFyYW0gYmVmb3JlVG8gVGhlIGluZGV4IHBvc2l0aW9uIHRvIG1vdmUgaW5zaWRlIGEgdHJlZVxuICAgKi9cbiAgbW92ZVRvKGJlZm9yZVRvOiBudW1iZXJbXSwgLi4ubGF5ZXJzOiBBbnlMYXllcltdKTogQW55TGF5ZXJbXSB7XG4gICAgY29uc3QgbW92ZWRMYXllcnMgPSB0aGlzLnRyZWUubW92ZVRvKGJlZm9yZVRvLCAuLi5sYXllcnMpO1xuICAgIGlmICghbW92ZWRMYXllcnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBtb3ZlZExheWVycztcbiAgfVxuXG4gIG1vdmVCZWxvdyhsYXllclJlZjogQW55TGF5ZXIgfCB1bmRlZmluZWQsIC4uLmxheWVyczogQW55TGF5ZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbihsYXllclJlZiwgJ2JlbG93Jyk7XG5cbiAgICBjb25zdCBtb3ZlZExheWVycyA9IHRoaXMubW92ZVRvKHBvc2l0aW9uLCAuLi5sYXllcnMpO1xuICAgIHRoaXMuaGFuZGxlTW92ZShtb3ZlZExheWVycywgbGF5ZXJSZWYucGFyZW50KTtcbiAgfVxuXG4gIG1vdmVBYm92ZShsYXllclJlZjogQW55TGF5ZXIgfCB1bmRlZmluZWQsIC4uLmxheWVyczogQW55TGF5ZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbihsYXllclJlZik7XG5cbiAgICBjb25zdCBtb3ZlZExheWVycyA9IHRoaXMubW92ZVRvKHBvc2l0aW9uLCAuLi5sYXllcnMpO1xuICAgIHRoaXMuaGFuZGxlTW92ZShtb3ZlZExheWVycywgbGF5ZXJSZWYucGFyZW50KTtcbiAgfVxuXG4gIG1vdmVJbnNpZGUobGF5ZXJSZWY6IExheWVyR3JvdXAsIC4uLmxheWVyczogQW55TGF5ZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbihsYXllclJlZik7XG5cbiAgICBjb25zdCBtb3ZlZExheWVycyA9IHRoaXMubW92ZVRvKHBvc2l0aW9uLmNvbmNhdCgwKSwgLi4ubGF5ZXJzKTtcbiAgICB0aGlzLmhhbmRsZU1vdmUobW92ZWRMYXllcnMsIGxheWVyUmVmKTtcbiAgfVxuXG4gIHJhaXNlKC4uLmxheWVyczogQW55TGF5ZXJbXSk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbihsYXllcnNbMF0pO1xuICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IHRoaXMuZmluZExvd2VzdFZpc2libGVQb3N0aW9uKHBvc2l0aW9uLCAtMSk7XG4gICAgdGhpcy5tb3ZlVG8obmV4dFBvc2l0aW9uLCAuLi5sYXllcnMpO1xuICAgIHRoaXMuaGFuZGxlTW92ZShsYXllcnMsIG51bGwsIHRydWUpO1xuICB9XG5cbiAgbG93ZXIoLi4ubGF5ZXJzOiBBbnlMYXllcltdKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uKGxheWVyc1tsYXllcnMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IHRoaXMuZmluZExvd2VzdFZpc2libGVQb3N0aW9uKHBvc2l0aW9uLCAyKTsgLy8gKzIgYmVjYXVzZSB3ZSB1c2UgbW92ZUJlZm9yZVxuICAgIHRoaXMubW92ZVRvKG5leHRQb3NpdGlvbiwgLi4ubGF5ZXJzKTtcbiAgICB0aGlzLmhhbmRsZU1vdmUobGF5ZXJzLCBudWxsLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBSZXNldCBhbGwgZXhjZXB0IFN5c3RlbUxheWVyICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJCYXNlbGF5ZXJzKCk7XG4gICAgdGhpcy5jbGVhclRyZWUoKTtcbiAgICB0aGlzLmNsZWFyT3RoZXIoKTtcbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG5cbiAgICB0aGlzLm5vdGlmeSgpO1xuICB9XG5cbiAgZ2V0QnlJZChpZDogc3RyaW5nKTogQW55TGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmFsbC5maW5kKChsYXllcikgPT4gbGF5ZXIuaWQgJiYgbGF5ZXIuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldEJ5U291cmNlSWQoaWQ6IHN0cmluZyk6IEFueUxheWVyIHtcbiAgICByZXR1cm4gdGhpcy5hbGwuZmluZChcbiAgICAgIChsYXllcikgPT4gbGF5ZXIuZGF0YVNvdXJjZT8uaWQgJiYgbGF5ZXIuZGF0YVNvdXJjZS5pZCA9PT0gaWRcbiAgICApO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24obGF5ZXI6IEFueUxheWVyLCB0eXBlOiAnYmVsb3cnIHwgJ2Fib3ZlJyA9ICdhYm92ZScpOiBudW1iZXJbXSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRyZWUuZ2V0UG9zaXRpb24obGF5ZXIpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdiZWxvdycpIHtcbiAgICAgIGxldCBpbmRleCA9IHBvc2l0aW9uLnBvcCgpO1xuICAgICAgcmV0dXJuIHBvc2l0aW9uLmNvbmNhdCgrK2luZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBnZXRMYXllclJlY2lwaWVudChsYXllcjogQW55TGF5ZXIpOiBBbnlMYXllcltdIHtcbiAgICByZXR1cm4gbGF5ZXIucGFyZW50XG4gICAgICA/IHRoaXMudHJlZS5nZXRDaGlsZHJlbihsYXllci5wYXJlbnQpXG4gICAgICA6IFsuLi50aGlzLnRyZWVMYXllcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFdlIGdvdCBub24gdmlzaWJsZSBsYXllciBpbiB0aGUgdHJlZSBsaWtlIExpbmtlZExheWVyLiBXZSB3YW50IHRoZSBuZXh0IHZpc2libGUgbGF5ZXIgaW4gdHJlZVxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kTG93ZXN0VmlzaWJsZVBvc3Rpb24oXG4gICAgcG9zaXRpb246IG51bWJlcltdLFxuICAgIGluY3JlbWVudDogbnVtYmVyXG4gICk6IG51bWJlcltdIHtcbiAgICBjb25zdCBpbmRleCA9IHBvc2l0aW9uLnBvcCgpO1xuICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uLmNvbmNhdChpbmRleCArIGluY3JlbWVudCk7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLnRyZWUuZ2V0Tm9kZUJ5UG9zaXRpb24obmV4dFBvc2l0aW9uKTtcbiAgICBpZiAobGF5ZXIgJiYgIWxheWVyLnNob3dJbkxheWVyTGlzdCkge1xuICAgICAgY29uc3QgbmV4dEluZGV4ID0gaW5jcmVtZW50ID4gMSA/IDEgOiBpbmNyZW1lbnQ7XG4gICAgICByZXR1cm4gdGhpcy5maW5kTG93ZXN0VmlzaWJsZVBvc3Rpb24obmV4dFBvc2l0aW9uLCBuZXh0SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dFBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNb3ZlKFxuICAgIGxheWVyczogQW55TGF5ZXJbXSxcbiAgICBwYXJlbnQ/OiBMYXllckdyb3VwLFxuICAgIGtlZXBDdXJyZW50UGFyZW50PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBpZiAoIWxheWVycz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICBsYXllci5tb3ZlVG8oa2VlcEN1cnJlbnRQYXJlbnQgPyBsYXllci5wYXJlbnQgOiBwYXJlbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuX2ludGVybmFsTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW50ZXJuYWxNb3ZlKCkge1xuICAgIHRoaXMucmVjYWxjdWxhdGVaaW5kZXgoKTtcbiAgICB0aGlzLm5vdGlmeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCZWZvcmUobGF5ZXI6IEFueUxheWVyKTogQW55TGF5ZXIge1xuICAgIHJldHVybiB0aGlzLnRyZWVMYXllcnMuZmluZChcbiAgICAgIChsYXllclRyZWUpID0+IGxheWVyVHJlZS56SW5kZXggPD0gbGF5ZXIuekluZGV4XG4gICAgKTtcbiAgfVxuXG4gIC8qKiBSZWN1cnNpdmUgKi9cbiAgcHJpdmF0ZSByZWNhbGN1bGF0ZVppbmRleChcbiAgICBtaW5JbmRleCA9IHRoaXMuYmFzZUxheWVycy5sZW5ndGgsXG4gICAgbGF5ZXJzID0gdGhpcy50cmVlTGF5ZXJzXG4gICkge1xuICAgIHJldHVybiBbLi4ubGF5ZXJzXS5yZXZlcnNlKCkucmVkdWNlKChwcmV2aW91c1ppbmRleCwgbGF5ZXIpID0+IHtcbiAgICAgIGxldCB6SW5kZXggPSArK3ByZXZpb3VzWmluZGV4O1xuICAgICAgbGF5ZXIuekluZGV4ID0gekluZGV4O1xuICAgICAgaWYgKGlzTGF5ZXJHcm91cChsYXllcikpIHtcbiAgICAgICAgekluZGV4ID0gdGhpcy5yZWNhbGN1bGF0ZVppbmRleCh6SW5kZXgsIGxheWVyLmNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHpJbmRleDtcbiAgICB9LCBtaW5JbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkZChsYXllcjogQW55TGF5ZXIsIG9mZnNldD86IG51bWJlcik6IEFueUxheWVyIHtcbiAgICBjb25zdCBleGlzdGluZ0xheWVyID0gdGhpcy5nZXRCeUlkKGxheWVyLmlkKTtcbiAgICBpZiAoZXhpc3RpbmdMYXllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBleGlzdGluZ0xheWVyLnZpc2libGUgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHpJbmRleCA9IHRoaXMuZ2V0WmluZGV4T2Zmc2V0KGxheWVyLCBvZmZzZXQpO1xuICAgIHRoaXMuc2V0WmluZGV4KGxheWVyLCB6SW5kZXgpO1xuXG4gICAgbGF5ZXIuaW5pdCh0aGlzLl9tYXApO1xuXG4gICAgaWYgKGlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgaWYgKGxheWVyLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RCYXNlTGF5ZXIobGF5ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fYmFzZUxheWVycy5wdXNoKGxheWVyKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPdGhlckxheWVyKGxheWVyKSkge1xuICAgICAgdGhpcy5fb3RoZXJMYXllcnMucHVzaChsYXllcik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3lzdGVtTGF5ZXIobGF5ZXIpICYmICFsYXllci5zaG93SW5MYXllckxpc3QpIHtcbiAgICAgIHRoaXMuX3N5c3RlbUxheWVycy5wdXNoKGxheWVyKTtcbiAgICB9IGVsc2UgaWYgKGxheWVyLnNob3dJbkxheWVyTGlzdCkge1xuICAgICAgcmV0dXJuIGxheWVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdGhlckxheWVycy5wdXNoKGxheWVyKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQ6IExheWVyR3JvdXAgfCB1bmRlZmluZWQgPSBsYXllci5wYXJlbnRJZFxuICAgICAgPyAodGhpcy5nZXRCeUlkKGxheWVyLnBhcmVudElkLnNwbGl0KFRSRUVfU0VQRVJBVE9SKS5wb3AoKSkgYXMgTGF5ZXJHcm91cClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGxheWVyLmFkZChwYXJlbnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlKGxheWVyOiBBbnlMYXllcik6IEFueUxheWVyIHwgQW55TGF5ZXJbXSB7XG4gICAgaWYgKGlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgdGhpcy5yZW1vdmVCYXNlbGF5ZXIobGF5ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc090aGVyTGF5ZXIobGF5ZXIpKSB7XG4gICAgICB0aGlzLnJlbW92ZU90aGVyTGF5ZXIobGF5ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1N5c3RlbUxheWVyKGxheWVyKSkge1xuICAgICAgdGhpcy5yZW1vdmVTeXN0ZW1MYXllcihsYXllcik7XG4gICAgfVxuXG4gICAgbGF5ZXIucmVtb3ZlKCk7XG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVCYXNlbGF5ZXIobGF5ZXI6IEFueUxheWVyKSB7XG4gICAgdGhpcy5yZW1vdmVJbihsYXllciwgdGhpcy5fYmFzZUxheWVycyk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVN5c3RlbUxheWVyKGxheWVyOiBBbnlMYXllcikge1xuICAgIHRoaXMucmVtb3ZlSW4obGF5ZXIsIHRoaXMuX3N5c3RlbUxheWVycyk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU90aGVyTGF5ZXIobGF5ZXI6IEFueUxheWVyKSB7XG4gICAgdGhpcy5yZW1vdmVJbihsYXllciwgdGhpcy5fb3RoZXJMYXllcnMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJbihsYXllcjogQW55TGF5ZXIsIHN0b3JlOiBBbnlMYXllcltdKSB7XG4gICAgY29uc3QgaW5kZXggPSBzdG9yZS5maW5kSW5kZXgoKHN5c0xheWVyKSA9PiBzeXNMYXllci5pZCA9PT0gbGF5ZXIuaWQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RvcmUuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTeXN0ZW1MYXllcihsYXllcjogQW55TGF5ZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLmlzSWdvSW50ZXJuYWxMYXllcjtcbiAgfVxuXG4gIHByaXZhdGUgaXNPdGhlckxheWVyKGxheWVyOiBBbnlMYXllcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0xheWVyTGlua2VkKGxheWVyKSAmJiAhbGF5ZXIuc2hvd0luTGF5ZXJMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckJhc2VsYXllcnMoKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB0aGlzLl9yZW1vdmUobGF5ZXIpKTtcbiAgICB0aGlzLl9iYXNlTGF5ZXJzID0gW107XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVHJlZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyZWVMYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHRoaXMuX3JlbW92ZShsYXllcikpO1xuICAgIHRoaXMudHJlZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclN5c3RlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3lzdGVtTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB0aGlzLl9yZW1vdmUobGF5ZXIpKTtcbiAgICB0aGlzLl9zeXN0ZW1MYXllcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJPdGhlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9vdGhlckxheWVycy5mb3JFYWNoKChsYXllcikgPT4gdGhpcy5fcmVtb3ZlKGxheWVyKSk7XG4gICAgdGhpcy5fb3RoZXJMYXllcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WmluZGV4T2Zmc2V0KGxheWVyOiBBbnlMYXllciwgcHJldmlvdXNPZmZzZXQgPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbGF5ZXIuekluZGV4ID8gMCA6IHByZXZpb3VzT2Zmc2V0Kys7XG4gIH1cblxuICBwcml2YXRlIHNldFppbmRleChsYXllcjogQW55TGF5ZXIsIG9mZnNldD86IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpc0Jhc2VMYXllcihsYXllcikpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUJhc2VsYXllclpJbmRleChsYXllciwgb2Zmc2V0KTtcbiAgICB9XG4gICAgaWYgKGxheWVyLnpJbmRleCA9PT0gdW5kZWZpbmVkIHx8IGxheWVyLnpJbmRleCA9PT0gMCkge1xuICAgICAgY29uc3QgbWF4WkluZGV4ID0gTWF0aC5tYXgoXG4gICAgICAgIFpJTkRFWF9NSU4sXG4gICAgICAgIC4uLnRoaXMudHJlZUxheWVycy5tYXAoKGwpID0+IGwuekluZGV4KVxuICAgICAgKTtcbiAgICAgIGxheWVyLnpJbmRleCA9IG1heFpJbmRleCArIDEgKyAob2Zmc2V0ID8/IDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQmFzZWxheWVyWkluZGV4KGxheWVyOiBMYXllciwgb2Zmc2V0PzogbnVtYmVyKSB7XG4gICAgY29uc3QgbWF4WkluZGV4ID0gTWF0aC5tYXgoMCwgLi4udGhpcy5iYXNlTGF5ZXJzLm1hcCgobCkgPT4gbC56SW5kZXgpKTtcblxuICAgIGNvbnN0IHpJbmRleCA9IG1heFpJbmRleCArIDEgKyAob2Zmc2V0ID8/IDApO1xuICAgIGxheWVyLnpJbmRleCA9IHpJbmRleCA+IFpJTkRFWF9NSU4gPyBaSU5ERVhfTUlOIDogekluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnkoKTogdm9pZCB7XG4gICAgdGhpcy5sYXllcnNGbGF0dGVuZWQgPSBbLi4udGhpcy50cmVlLmZsYXR0ZW5lZF07XG4gICAgdGhpcy5fbGF5ZXJzJC5uZXh0KFsuLi50aGlzLnRyZWVMYXllcnNdKTtcbiAgICB0aGlzLl9iYXNlTGF5ZXJzJC5uZXh0KFsuLi50aGlzLmJhc2VMYXllcnNdKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { isLayerGroup } from '../utils/layer.utils';
|
|
3
|
+
export class LayerSelectionModel {
|
|
4
|
+
selection = new SelectionModel(true);
|
|
5
|
+
descendantSelection = new SelectionModel(true);
|
|
6
|
+
get selected() {
|
|
7
|
+
return this.selection.selected;
|
|
8
|
+
}
|
|
9
|
+
get hasSelection() {
|
|
10
|
+
return this.selection.hasValue();
|
|
11
|
+
}
|
|
12
|
+
get isSelectionEmpty() {
|
|
13
|
+
return this.selection.isEmpty();
|
|
14
|
+
}
|
|
15
|
+
clearSelection() {
|
|
16
|
+
this.selection.clear();
|
|
17
|
+
this.descendantSelection.clear();
|
|
18
|
+
}
|
|
19
|
+
select(...layers) {
|
|
20
|
+
this.selection.select(...layers);
|
|
21
|
+
this.descendantSelection.select(...this.getDescendants(...layers));
|
|
22
|
+
}
|
|
23
|
+
deselect(...layers) {
|
|
24
|
+
this.selection.deselect(...layers);
|
|
25
|
+
this.descendantSelection.deselect(...this.getDescendants(...layers));
|
|
26
|
+
}
|
|
27
|
+
isSelected = (layer) => this.selection.isSelected(layer);
|
|
28
|
+
isDescendantSelection = (layer) => this.descendantSelection.isSelected(layer);
|
|
29
|
+
getDescendants(...layers) {
|
|
30
|
+
return layers.reduce((descendants, layer) => {
|
|
31
|
+
if (isLayerGroup(layer)) {
|
|
32
|
+
return descendants.concat(layer.descendants);
|
|
33
|
+
}
|
|
34
|
+
return descendants;
|
|
35
|
+
}, []);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItc2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvc2hhcmVkL2xheWVyLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsU0FBUyxHQUFHLElBQUksY0FBYyxDQUFXLElBQUksQ0FBQyxDQUFDO0lBQy9DLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFXLElBQUksQ0FBQyxDQUFDO0lBRWpFLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLE1BQWtCO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRyxNQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsVUFBVSxHQUFHLENBQUMsS0FBZSxFQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxxQkFBcUIsR0FBRyxDQUFDLEtBQWUsRUFBVyxFQUFFLENBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckMsY0FBYyxDQUFDLEdBQUcsTUFBa0I7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5cbmltcG9ydCB7IGlzTGF5ZXJHcm91cCB9IGZyb20gJy4uL3V0aWxzL2xheWVyLnV0aWxzJztcbmltcG9ydCB7IEFueUxheWVyIH0gZnJvbSAnLi9sYXllcnMvYW55LWxheWVyJztcblxuZXhwb3J0IGNsYXNzIExheWVyU2VsZWN0aW9uTW9kZWwge1xuICBwcml2YXRlIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxBbnlMYXllcj4odHJ1ZSk7XG4gIHByaXZhdGUgZGVzY2VuZGFudFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxBbnlMYXllcj4odHJ1ZSk7XG5cbiAgZ2V0IHNlbGVjdGVkKCk6IEFueUxheWVyW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZDtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmhhc1ZhbHVlKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3Rpb25FbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpO1xuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICB0aGlzLmRlc2NlbmRhbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgfVxuXG4gIHNlbGVjdCguLi5sYXllcnM6IEFueUxheWVyW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4ubGF5ZXJzKTtcbiAgICB0aGlzLmRlc2NlbmRhbnRTZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZ2V0RGVzY2VuZGFudHMoLi4ubGF5ZXJzKSk7XG4gIH1cblxuICBkZXNlbGVjdCguLi5sYXllcnM6IEFueUxheWVyW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5kZXNlbGVjdCguLi5sYXllcnMpO1xuICAgIHRoaXMuZGVzY2VuZGFudFNlbGVjdGlvbi5kZXNlbGVjdCguLi50aGlzLmdldERlc2NlbmRhbnRzKC4uLmxheWVycykpO1xuICB9XG5cbiAgaXNTZWxlY3RlZCA9IChsYXllcjogQW55TGF5ZXIpOiBib29sZWFuID0+IHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobGF5ZXIpO1xuICBpc0Rlc2NlbmRhbnRTZWxlY3Rpb24gPSAobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiA9PlxuICAgIHRoaXMuZGVzY2VuZGFudFNlbGVjdGlvbi5pc1NlbGVjdGVkKGxheWVyKTtcblxuICBwcml2YXRlIGdldERlc2NlbmRhbnRzKC4uLmxheWVyczogQW55TGF5ZXJbXSk6IEFueUxheWVyW10ge1xuICAgIHJldHVybiBsYXllcnMucmVkdWNlKChkZXNjZW5kYW50czogQW55TGF5ZXJbXSwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChpc0xheWVyR3JvdXAobGF5ZXIpKSB7XG4gICAgICAgIHJldHVybiBkZXNjZW5kYW50cy5jb25jYXQobGF5ZXIuZGVzY2VuZGFudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlc2NlbmRhbnRzO1xuICAgIH0sIFtdKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const LAYER = 'Layer';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9zaGFyZWQvbGF5ZXIuZW51bXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBMQVlFUiA9ICdMYXllcic7XG4iXX0=
|