@igo2/geo 18.0.0 → 18.0.1-next.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/fesm2022/igo2-geo.mjs +684 -709
- package/fesm2022/igo2-geo.mjs.map +1 -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 +1 -8
- package/lib/style/style-list/style-list.service.d.ts +1 -1
- package/package.json +15 -17
- package/src/lib/layer/layer-list/layer-list.theme.scss +2 -1
- package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
- package/src/style/style.scss +1 -1
- package/esm2022/igo2-geo.mjs +0 -5
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -234
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -272
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -246
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -19
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -136
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -60
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +0 -232
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +0 -24
- package/esm2022/lib/catalog/catalog-library/index.mjs +0 -4
- package/esm2022/lib/catalog/catalog.module.mjs +0 -26
- package/esm2022/lib/catalog/index.mjs +0 -6
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +0 -32
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +0 -16
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +0 -2
- package/esm2022/lib/catalog/shared/catalog.service.mjs +0 -706
- package/esm2022/lib/catalog/shared/catalogs.mjs +0 -75
- package/esm2022/lib/catalog/shared/index.mjs +0 -5
- package/esm2022/lib/datasource/index.mjs +0 -3
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +0 -17
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +0 -441
- package/esm2022/lib/datasource/shared/datasource.service.mjs +0 -258
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -222
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +0 -118
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -24
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +0 -3
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +0 -41
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +0 -52
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -70
- package/esm2022/lib/datasource/shared/datasources/index.mjs +0 -36
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -33
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +0 -14
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -60
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -17
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -56
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -137
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +0 -170
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +0 -227
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -224
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -18
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -11
- package/esm2022/lib/datasource/shared/index.mjs +0 -6
- package/esm2022/lib/datasource/shared/options/index.mjs +0 -5
- package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +0 -15
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +0 -85
- package/esm2022/lib/datasource/shared/options/options.service.mjs +0 -3
- package/esm2022/lib/datasource/utils/index.mjs +0 -2
- package/esm2022/lib/datasource/utils/tilegrid.mjs +0 -20
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -246
- package/esm2022/lib/directions/directions-buttons/index.mjs +0 -2
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -312
- package/esm2022/lib/directions/directions-inputs/index.mjs +0 -2
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +0 -192
- package/esm2022/lib/directions/directions-results/index.mjs +0 -2
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +0 -5
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +0 -3
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +0 -23
- package/esm2022/lib/directions/directions-sources/index.mjs +0 -5
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +0 -159
- package/esm2022/lib/directions/directions.component.mjs +0 -437
- package/esm2022/lib/directions/directions.module.mjs +0 -46
- package/esm2022/lib/directions/directions.provider.mjs +0 -16
- package/esm2022/lib/directions/index.mjs +0 -8
- package/esm2022/lib/directions/shared/directions-source.service.mjs +0 -18
- package/esm2022/lib/directions/shared/directions.enum.mjs +0 -72
- package/esm2022/lib/directions/shared/directions.interface.mjs +0 -2
- package/esm2022/lib/directions/shared/directions.service.mjs +0 -239
- package/esm2022/lib/directions/shared/directions.utils.mjs +0 -522
- package/esm2022/lib/directions/shared/index.mjs +0 -6
- package/esm2022/lib/directions/shared/store.mjs +0 -21
- package/esm2022/lib/download/download-button/download-button.component.mjs +0 -48
- package/esm2022/lib/download/download-button/index.mjs +0 -2
- package/esm2022/lib/download/download.module.mjs +0 -24
- package/esm2022/lib/download/index.mjs +0 -3
- package/esm2022/lib/download/shared/download.interface.mjs +0 -2
- package/esm2022/lib/download/shared/download.service.mjs +0 -67
- package/esm2022/lib/download/shared/index.mjs +0 -3
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +0 -42
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +0 -421
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +0 -28
- package/esm2022/lib/draw/draw/draw.component.mjs +0 -1136
- package/esm2022/lib/draw/draw/draw.module.mjs +0 -19
- package/esm2022/lib/draw/drawingTool.module.mjs +0 -18
- package/esm2022/lib/draw/index.mjs +0 -3
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +0 -30
- package/esm2022/lib/draw/shared/draw.enum.mjs +0 -21
- package/esm2022/lib/draw/shared/draw.interface.mjs +0 -2
- package/esm2022/lib/draw/shared/draw.utils.mjs +0 -125
- package/esm2022/lib/draw/shared/index.mjs +0 -5
- package/esm2022/lib/environment/environment.interface.mjs +0 -2
- package/esm2022/lib/environment/index.mjs +0 -2
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +0 -306
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +0 -56
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +0 -26
- package/esm2022/lib/feature/feature-details/index.mjs +0 -4
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +0 -101
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +0 -19
- package/esm2022/lib/feature/feature.module.mjs +0 -26
- package/esm2022/lib/feature/index.mjs +0 -5
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +0 -28
- package/esm2022/lib/feature/shared/feature.enums.mjs +0 -9
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +0 -2
- package/esm2022/lib/feature/shared/feature.utils.mjs +0 -332
- package/esm2022/lib/feature/shared/index.mjs +0 -8
- package/esm2022/lib/feature/shared/store.mjs +0 -143
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +0 -216
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +0 -119
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +0 -99
- package/esm2022/lib/feature/shared/strategies/index.mjs +0 -8
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +0 -103
- package/esm2022/lib/feature/shared/strategies/loading.mjs +0 -136
- package/esm2022/lib/feature/shared/strategies/search.mjs +0 -158
- package/esm2022/lib/feature/shared/strategies/selection.mjs +0 -385
- package/esm2022/lib/feature/shared/strategies.utils.mjs +0 -37
- package/esm2022/lib/filter/filter.module.mjs +0 -131
- package/esm2022/lib/filter/index.mjs +0 -17
- package/esm2022/lib/filter/ogc-filter-button/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -141
- package/esm2022/lib/filter/ogc-filter-form/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -325
- package/esm2022/lib/filter/ogc-filter-selection/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -787
- package/esm2022/lib/filter/ogc-filter-time/index.mjs +0 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -201
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -665
- package/esm2022/lib/filter/ogc-filterable-form/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -66
- package/esm2022/lib/filter/ogc-filterable-item/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -244
- package/esm2022/lib/filter/ogc-filterable-list/index.mjs +0 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -39
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -32
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +0 -63
- package/esm2022/lib/filter/shared/index.mjs +0 -12
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +0 -30
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/ogc-filter.mjs +0 -756
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +0 -47
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +0 -23
- package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +0 -282
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +0 -13
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/time-filter.service.mjs +0 -107
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -875
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -191
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -120
- package/esm2022/lib/filter/time-filter-button/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -70
- package/esm2022/lib/filter/time-filter-form/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -537
- package/esm2022/lib/filter/time-filter-item/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -90
- package/esm2022/lib/filter/time-filter-list/index.mjs +0 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -39
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -24
- package/esm2022/lib/geo.module.mjs +0 -63
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -559
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -170
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -24
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +0 -4
- package/esm2022/lib/geometry/geometry.module.mjs +0 -18
- package/esm2022/lib/geometry/index.mjs +0 -3
- package/esm2022/lib/geometry/shared/controls/draw.mjs +0 -340
- package/esm2022/lib/geometry/shared/controls/index.mjs +0 -4
- package/esm2022/lib/geometry/shared/controls/modify.mjs +0 -538
- package/esm2022/lib/geometry/shared/controls/slice.mjs +0 -190
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +0 -24
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +0 -2
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +0 -113
- package/esm2022/lib/geometry/shared/index.mjs +0 -5
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +0 -49
- package/esm2022/lib/import-export/export-button/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +0 -876
- package/esm2022/lib/import-export/import-export/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export.module.mjs +0 -31
- package/esm2022/lib/import-export/index.mjs +0 -5
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +0 -114
- package/esm2022/lib/import-export/shared/export.errors.mjs +0 -15
- package/esm2022/lib/import-export/shared/export.interface.mjs +0 -2
- package/esm2022/lib/import-export/shared/export.service.mjs +0 -378
- package/esm2022/lib/import-export/shared/export.type.mjs +0 -13
- package/esm2022/lib/import-export/shared/export.utils.mjs +0 -51
- package/esm2022/lib/import-export/shared/import.errors.mjs +0 -39
- package/esm2022/lib/import-export/shared/import.interface.mjs +0 -2
- package/esm2022/lib/import-export/shared/import.service.mjs +0 -221
- package/esm2022/lib/import-export/shared/import.utils.mjs +0 -203
- package/esm2022/lib/import-export/shared/index.mjs +0 -11
- package/esm2022/lib/layer/index.mjs +0 -16
- package/esm2022/lib/layer/layer-group/index.mjs +0 -2
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +0 -103
- package/esm2022/lib/layer/layer-item/index.mjs +0 -2
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +0 -196
- package/esm2022/lib/layer/layer-legend/index.mjs +0 -2
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +0 -287
- package/esm2022/lib/layer/layer-legend-item/index.mjs +0 -2
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -85
- package/esm2022/lib/layer/layer-legend-list/index.mjs +0 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -54
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -104
- package/esm2022/lib/layer/layer-list/index.mjs +0 -2
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +0 -232
- package/esm2022/lib/layer/layer-list-tool/index.mjs +0 -4
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -92
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -7
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -61
- package/esm2022/lib/layer/layer-search/index.mjs +0 -2
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +0 -65
- package/esm2022/lib/layer/layer-unavailable/index.mjs +0 -3
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +0 -25
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +0 -35
- package/esm2022/lib/layer/layer-viewer/index.mjs +0 -3
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +0 -226
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +0 -2
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +0 -2
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +0 -207
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +0 -2
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +0 -83
- package/esm2022/lib/layer/layer.module.mjs +0 -107
- package/esm2022/lib/layer/shared/clusterParam.mjs +0 -2
- package/esm2022/lib/layer/shared/index.mjs +0 -6
- package/esm2022/lib/layer/shared/layer-controller.mjs +0 -316
- package/esm2022/lib/layer/shared/layer-selection.mjs +0 -38
- package/esm2022/lib/layer/shared/layer.enums.mjs +0 -2
- package/esm2022/lib/layer/shared/layer.service.mjs +0 -315
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +0 -75
- package/esm2022/lib/layer/shared/layers/index.mjs +0 -18
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +0 -199
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +0 -120
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +0 -7
- package/esm2022/lib/layer/shared/layers/layer.mjs +0 -178
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +0 -4
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +0 -12
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +0 -242
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +0 -70
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +0 -55
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +0 -576
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +0 -112
- package/esm2022/lib/layer/track-feature-button/index.mjs +0 -2
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -54
- package/esm2022/lib/layer/utils/image-watcher.mjs +0 -62
- package/esm2022/lib/layer/utils/index.mjs +0 -6
- package/esm2022/lib/layer/utils/layer.utils.mjs +0 -57
- package/esm2022/lib/layer/utils/outputLegend.mjs +0 -32
- package/esm2022/lib/layer/utils/tile-watcher.mjs +0 -52
- package/esm2022/lib/layer/utils/vector-watcher.mjs +0 -50
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -87
- package/esm2022/lib/map/baselayers-switcher/index.mjs +0 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -122
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +0 -78
- package/esm2022/lib/map/geolocate-button/index.mjs +0 -2
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +0 -73
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +0 -2
- package/esm2022/lib/map/home-extent-button/index.mjs +0 -3
- package/esm2022/lib/map/index.mjs +0 -14
- package/esm2022/lib/map/info-section/index.mjs +0 -2
- package/esm2022/lib/map/info-section/info-section.component.mjs +0 -15
- package/esm2022/lib/map/map-browser/index.mjs +0 -2
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +0 -67
- package/esm2022/lib/map/map-center/index.mjs +0 -2
- package/esm2022/lib/map/map-center/map-center.component.mjs +0 -56
- package/esm2022/lib/map/map.module.mjs +0 -89
- package/esm2022/lib/map/menu-button/index.mjs +0 -2
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +0 -57
- package/esm2022/lib/map/offline-button/index.mjs +0 -2
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +0 -53
- package/esm2022/lib/map/rotation-button/index.mjs +0 -2
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +0 -58
- package/esm2022/lib/map/shared/controllers/controller.mjs +0 -44
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +0 -8
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +0 -431
- package/esm2022/lib/map/shared/controllers/index.mjs +0 -5
- package/esm2022/lib/map/shared/controllers/view.mjs +0 -361
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +0 -481
- package/esm2022/lib/map/shared/index.mjs +0 -15
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +0 -238
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +0 -122
- package/esm2022/lib/map/shared/map.abstract.mjs +0 -24
- package/esm2022/lib/map/shared/map.enums.mjs +0 -6
- package/esm2022/lib/map/shared/map.interface.mjs +0 -2
- package/esm2022/lib/map/shared/map.mjs +0 -201
- package/esm2022/lib/map/shared/map.service.mjs +0 -29
- package/esm2022/lib/map/shared/map.utils.mjs +0 -455
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +0 -114
- package/esm2022/lib/map/shared/projection.interfaces.mjs +0 -2
- package/esm2022/lib/map/shared/projection.service.mjs +0 -67
- package/esm2022/lib/map/shared/projection.utils.mjs +0 -122
- package/esm2022/lib/map/swipe-control/index.mjs +0 -2
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +0 -211
- package/esm2022/lib/map/utils/index.mjs +0 -2
- package/esm2022/lib/map/utils/layer-watcher.mjs +0 -112
- package/esm2022/lib/map/wake-lock-button/index.mjs +0 -2
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
- package/esm2022/lib/map/zoom-button/index.mjs +0 -2
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +0 -35
- package/esm2022/lib/measure/index.mjs +0 -3
- package/esm2022/lib/measure/measure.module.mjs +0 -20
- package/esm2022/lib/measure/measurer/index.mjs +0 -6
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +0 -40
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +0 -38
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +0 -143
- package/esm2022/lib/measure/measurer/measurer.component.mjs +0 -948
- package/esm2022/lib/measure/measurer/measurer.module.mjs +0 -20
- package/esm2022/lib/measure/shared/index.mjs +0 -4
- package/esm2022/lib/measure/shared/measure.enum.mjs +0 -37
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +0 -2
- package/esm2022/lib/measure/shared/measure.utils.mjs +0 -497
- package/esm2022/lib/metadata/index.mjs +0 -4
- package/esm2022/lib/metadata/metadata-button/index.mjs +0 -2
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +0 -96
- package/esm2022/lib/metadata/metadata.module.mjs +0 -29
- package/esm2022/lib/metadata/shared/index.mjs +0 -3
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +0 -2
- package/esm2022/lib/metadata/shared/metadata.service.mjs +0 -18
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -130
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +0 -6
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +0 -2
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
- package/esm2022/lib/offline/geoDB/index.mjs +0 -5
- package/esm2022/lib/offline/index.mjs +0 -6
- package/esm2022/lib/offline/layerDB/index.mjs +0 -3
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +0 -2
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
- package/esm2022/lib/offline/offline.interface.mjs +0 -2
- package/esm2022/lib/offline/offline.provider.mjs +0 -50
- package/esm2022/lib/offline/shared/geo-network.service.mjs +0 -79
- package/esm2022/lib/offline/shared/index.mjs +0 -2
- package/esm2022/lib/overlay/index.mjs +0 -2
- package/esm2022/lib/overlay/shared/index.mjs +0 -4
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +0 -8
- package/esm2022/lib/overlay/shared/overlay.mjs +0 -139
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +0 -17
- package/esm2022/lib/print/index.mjs +0 -4
- package/esm2022/lib/print/print/print.component.mjs +0 -116
- package/esm2022/lib/print/print-form/index.mjs +0 -2
- package/esm2022/lib/print/print-form/print-form.component.mjs +0 -320
- package/esm2022/lib/print/print.module.mjs +0 -20
- package/esm2022/lib/print/shared/geopdf.mjs +0 -68
- package/esm2022/lib/print/shared/index.mjs +0 -5
- package/esm2022/lib/print/shared/print.interface.mjs +0 -2
- package/esm2022/lib/print/shared/print.service.mjs +0 -1136
- package/esm2022/lib/print/shared/print.type.mjs +0 -30
- package/esm2022/lib/query/index.mjs +0 -2
- package/esm2022/lib/query/query.module.mjs +0 -27
- package/esm2022/lib/query/shared/index.mjs +0 -8
- package/esm2022/lib/query/shared/query-search-source.mjs +0 -35
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +0 -22
- package/esm2022/lib/query/shared/query.directive.mjs +0 -290
- package/esm2022/lib/query/shared/query.enums.mjs +0 -32
- package/esm2022/lib/query/shared/query.interfaces.mjs +0 -2
- package/esm2022/lib/query/shared/query.service.mjs +0 -753
- package/esm2022/lib/query/shared/query.utils.mjs +0 -45
- package/esm2022/lib/search/index.mjs +0 -10
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +0 -483
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
- package/esm2022/lib/search/search-results/index.mjs +0 -5
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +0 -101
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +0 -433
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +0 -119
- package/esm2022/lib/search/search-results/search-results.component.mjs +0 -297
- package/esm2022/lib/search/search-results/search-results.directive.mjs +0 -7
- package/esm2022/lib/search/search-results/search-results.module.mjs +0 -20
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +0 -118
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +0 -19
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +0 -264
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -77
- package/esm2022/lib/search/shared/index.mjs +0 -10
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +0 -328
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +0 -20
- package/esm2022/lib/search/shared/search-source.service.mjs +0 -56
- package/esm2022/lib/search/shared/search.enums.mjs +0 -4
- package/esm2022/lib/search/shared/search.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/search.provider.mjs +0 -20
- package/esm2022/lib/search/shared/search.service.mjs +0 -149
- package/esm2022/lib/search/shared/search.utils.mjs +0 -92
- package/esm2022/lib/search/shared/sources/cadastre.mjs +0 -142
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +0 -32
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/coordinates.mjs +0 -168
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +0 -52
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +0 -32
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/icherche.mjs +0 -816
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +0 -87
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/ilayer.mjs +0 -339
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +0 -58
- package/esm2022/lib/search/shared/sources/index.mjs +0 -23
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/nominatim.mjs +0 -263
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +0 -31
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +0 -13
- package/esm2022/lib/search/shared/sources/source.mjs +0 -221
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +0 -454
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +0 -56
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/workspace.mjs +0 -192
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +0 -31
- package/esm2022/lib/style/index.mjs +0 -5
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +0 -360
- package/esm2022/lib/style/shared/datasource/index.mjs +0 -2
- package/esm2022/lib/style/shared/feature/feature-style.mjs +0 -162
- package/esm2022/lib/style/shared/feature/index.mjs +0 -2
- package/esm2022/lib/style/shared/font.enum.mjs +0 -17
- package/esm2022/lib/style/shared/index.mjs +0 -5
- package/esm2022/lib/style/shared/overlay/index.mjs +0 -3
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -39
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +0 -78
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +0 -27
- package/esm2022/lib/style/shared/vector/index.mjs +0 -4
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +0 -2
- package/esm2022/lib/style/style-list/index.mjs +0 -5
- package/esm2022/lib/style/style-list/style-list.interface.mjs +0 -2
- package/esm2022/lib/style/style-list/style-list.module.mjs +0 -23
- package/esm2022/lib/style/style-list/style-list.provider.mjs +0 -21
- package/esm2022/lib/style/style-list/style-list.service.mjs +0 -52
- package/esm2022/lib/style/style-modal/drawing/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -193
- package/esm2022/lib/style/style-modal/index.mjs +0 -5
- package/esm2022/lib/style/style-modal/layer/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -142
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
- package/esm2022/lib/style/style-modal/shared/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
- package/esm2022/lib/style/style-service/draw-style.service.mjs +0 -255
- package/esm2022/lib/style/style-service/index.mjs +0 -3
- package/esm2022/lib/style/style-service/style.service.mjs +0 -393
- package/esm2022/lib/style/style.module.mjs +0 -46
- package/esm2022/lib/toast/index.mjs +0 -2
- package/esm2022/lib/toast/toast.component.mjs +0 -99
- package/esm2022/lib/toast/toast.module.mjs +0 -24
- package/esm2022/lib/utils/googleLinks.mjs +0 -13
- package/esm2022/lib/utils/id-generator.mjs +0 -112
- package/esm2022/lib/utils/index.mjs +0 -5
- package/esm2022/lib/utils/osmLinks.mjs +0 -9
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +0 -3
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +0 -2
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +0 -64
- package/esm2022/lib/wkt/index.mjs +0 -2
- package/esm2022/lib/wkt/shared/index.mjs +0 -2
- package/esm2022/lib/wkt/shared/wkt.service.mjs +0 -235
- package/esm2022/lib/wkt/wkt.module.mjs +0 -25
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -36
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -19
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +0 -3
- package/esm2022/lib/workspace/index.mjs +0 -8
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +0 -301
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +0 -720
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +0 -41
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +0 -113
- package/esm2022/lib/workspace/shared/index.mjs +0 -8
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +0 -41
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +0 -121
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +0 -248
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -188
- package/esm2022/lib/workspace/widgets/index.mjs +0 -4
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -48
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -19
- package/esm2022/lib/workspace/widgets/widgets.mjs +0 -15
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -172
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -137
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -19
- package/esm2022/lib/workspace/workspace.module.mjs +0 -32
- package/esm2022/public_api.mjs +0 -56
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
import * as oleasing from 'ol/easing';
|
|
2
|
-
import * as olproj from 'ol/proj';
|
|
3
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
5
|
-
import { MapViewAction } from '../map.enums';
|
|
6
|
-
import { getScaleFromResolution, viewStatesAreEqual } from '../map.utils';
|
|
7
|
-
import { MapController } from './controller';
|
|
8
|
-
/**
|
|
9
|
-
* Controller to handle map view interactions
|
|
10
|
-
*/
|
|
11
|
-
export class MapViewController extends MapController {
|
|
12
|
-
options;
|
|
13
|
-
/**
|
|
14
|
-
* Observable of the current rotation in radians
|
|
15
|
-
*/
|
|
16
|
-
rotation$ = new BehaviorSubject(0);
|
|
17
|
-
/**
|
|
18
|
-
* Observable of the current resolution
|
|
19
|
-
*/
|
|
20
|
-
resolution$ = new BehaviorSubject(undefined);
|
|
21
|
-
/**
|
|
22
|
-
* Observable of the current state
|
|
23
|
-
*/
|
|
24
|
-
state$ = new BehaviorSubject(undefined);
|
|
25
|
-
/**
|
|
26
|
-
* View Padding
|
|
27
|
-
* Values in the array are top, right, bottom and left padding.
|
|
28
|
-
*/
|
|
29
|
-
padding = [0, 0, 0, 0];
|
|
30
|
-
/**
|
|
31
|
-
* Max zoom after set extent
|
|
32
|
-
*/
|
|
33
|
-
maxZoomOnExtent = 19;
|
|
34
|
-
/**
|
|
35
|
-
* Max extent possible when zooming
|
|
36
|
-
*/
|
|
37
|
-
maxLayerZoomExtent;
|
|
38
|
-
/**
|
|
39
|
-
* Extent stream
|
|
40
|
-
*/
|
|
41
|
-
extent$ = new Subject();
|
|
42
|
-
/**
|
|
43
|
-
* Subscription to the movement stream
|
|
44
|
-
*/
|
|
45
|
-
extent$$;
|
|
46
|
-
/**
|
|
47
|
-
* History of states
|
|
48
|
-
*/
|
|
49
|
-
states = [];
|
|
50
|
-
/**
|
|
51
|
-
* Current state index
|
|
52
|
-
*/
|
|
53
|
-
stateIndex = 0;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the view controller should keep the view's state history
|
|
56
|
-
*/
|
|
57
|
-
get stateHistory() {
|
|
58
|
-
return this.options ? this.options.stateHistory === true : false;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* OL View
|
|
62
|
-
*/
|
|
63
|
-
get olView() {
|
|
64
|
-
return this.olMap.getView();
|
|
65
|
-
}
|
|
66
|
-
constructor(options) {
|
|
67
|
-
super();
|
|
68
|
-
this.options = options;
|
|
69
|
-
}
|
|
70
|
-
setPadding(padding) {
|
|
71
|
-
// Values in the array are top, right, bottom and left padding.
|
|
72
|
-
if (padding.top || padding.top === 0) {
|
|
73
|
-
this.padding[0] = padding.top;
|
|
74
|
-
}
|
|
75
|
-
if (padding.right || padding.right === 0) {
|
|
76
|
-
this.padding[1] = padding.right;
|
|
77
|
-
}
|
|
78
|
-
if (padding.bottom || padding.bottom === 0) {
|
|
79
|
-
this.padding[2] = padding.bottom;
|
|
80
|
-
}
|
|
81
|
-
if (padding.left || padding.left === 0) {
|
|
82
|
-
this.padding[3] = padding.left;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Add or remove this controller to/from a map.
|
|
87
|
-
* @param map OL Map
|
|
88
|
-
*/
|
|
89
|
-
setOlMap(olMap) {
|
|
90
|
-
super.setOlMap(olMap);
|
|
91
|
-
this.setupObservers();
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Observe move moveend and subscribe to the extent stream
|
|
95
|
-
*/
|
|
96
|
-
setupObservers() {
|
|
97
|
-
if (this.stateHistory === true) {
|
|
98
|
-
this.observerKeys.push(this.olMap.on('moveend', () => this.onMoveEnd()));
|
|
99
|
-
}
|
|
100
|
-
this.extent$$ = this.extent$
|
|
101
|
-
.pipe(debounceTime(25))
|
|
102
|
-
.subscribe((value) => {
|
|
103
|
-
this.setExtent(value.extent, value.action);
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
monitorRotation() {
|
|
107
|
-
this.observerKeys.push(this.olMap.getView().on('change:rotation', (evt) => {
|
|
108
|
-
this.rotation$.next(evt.target.getRotation());
|
|
109
|
-
}));
|
|
110
|
-
this.rotation$.next(this.getRotation());
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Teardown any observers
|
|
114
|
-
*/
|
|
115
|
-
teardownObservers() {
|
|
116
|
-
super.teardownObservers();
|
|
117
|
-
if (this.extent$$ !== undefined) {
|
|
118
|
-
this.extent$$.unsubscribe();
|
|
119
|
-
this.extent$$ = undefined;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Get the view's OL projection
|
|
124
|
-
* @returns OL projection
|
|
125
|
-
*/
|
|
126
|
-
getOlProjection() {
|
|
127
|
-
return this.olView.getProjection();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get the current map view center
|
|
131
|
-
* @param projection Output projection
|
|
132
|
-
* @returns Center
|
|
133
|
-
*/
|
|
134
|
-
getCenter(projection) {
|
|
135
|
-
let center = this.olView.getCenter();
|
|
136
|
-
if (projection && center) {
|
|
137
|
-
center = olproj.transform(center, this.getOlProjection(), projection);
|
|
138
|
-
}
|
|
139
|
-
return center;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Get the current view extent
|
|
143
|
-
* @param projection Output projection
|
|
144
|
-
* @returns Extent
|
|
145
|
-
*/
|
|
146
|
-
getExtent(projection) {
|
|
147
|
-
let extent = this.olView.calculateExtent(this.olMap.getSize());
|
|
148
|
-
if (projection && extent) {
|
|
149
|
-
extent = olproj.transformExtent(extent, this.getOlProjection(), projection);
|
|
150
|
-
}
|
|
151
|
-
return extent;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Get the current scale
|
|
155
|
-
* @param dpi Dot per inches
|
|
156
|
-
* @returns View scale
|
|
157
|
-
*/
|
|
158
|
-
getScale(dpi = 96) {
|
|
159
|
-
return getScaleFromResolution(this.getResolution(), this.getOlProjection().getUnits(), dpi);
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Get the current resolution
|
|
163
|
-
* @returns Projection denominator
|
|
164
|
-
*/
|
|
165
|
-
getResolution() {
|
|
166
|
-
return this.olView.getResolution();
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Get the current zoom level
|
|
170
|
-
* @returns Zoom level
|
|
171
|
-
*/
|
|
172
|
-
getZoom() {
|
|
173
|
-
return Math.round(this.olView.getZoom());
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Zoom in
|
|
177
|
-
*/
|
|
178
|
-
zoomIn() {
|
|
179
|
-
this.zoomTo(this.olView.getZoom() + 1);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Zoom out
|
|
183
|
-
*/
|
|
184
|
-
zoomOut() {
|
|
185
|
-
this.zoomTo(this.olView.getZoom() - 1);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Zoom to specific zoom level
|
|
189
|
-
* @param zoom Zoom level
|
|
190
|
-
*/
|
|
191
|
-
zoomTo(zoom) {
|
|
192
|
-
this.olView.cancelAnimations();
|
|
193
|
-
this.olView.animate({
|
|
194
|
-
zoom,
|
|
195
|
-
duration: 250,
|
|
196
|
-
easing: oleasing.easeOut
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Move to extent after a short delay (100ms) unless
|
|
201
|
-
* a new movement gets registered in the meantime.
|
|
202
|
-
* @param extent Extent to move to
|
|
203
|
-
*/
|
|
204
|
-
moveToExtent(extent) {
|
|
205
|
-
this.extent$.next({ extent, action: MapViewAction.Move });
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Zoom to extent after a short delay (100ms) unless
|
|
209
|
-
* a new movement gets registered in the meantime.
|
|
210
|
-
* @param extent Extent to zoom to
|
|
211
|
-
*/
|
|
212
|
-
zoomToExtent(extent) {
|
|
213
|
-
this.extent$.next({ extent, action: MapViewAction.Zoom });
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Return the current view rotation
|
|
217
|
-
* @returns Rotation angle in radians
|
|
218
|
-
*/
|
|
219
|
-
getRotation() {
|
|
220
|
-
return this.olView.getRotation();
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Reset the view rotation to 0
|
|
224
|
-
*/
|
|
225
|
-
resetRotation() {
|
|
226
|
-
this.olView.animate({ rotation: 0 });
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Whether the view has a previous state
|
|
230
|
-
* @returns True if the view has a previous state
|
|
231
|
-
*/
|
|
232
|
-
hasPreviousState() {
|
|
233
|
-
return this.states.length > 1 && this.stateIndex > 0;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Whether the view has a next state
|
|
237
|
-
* @returns True if the view has a next state
|
|
238
|
-
*/
|
|
239
|
-
hasNextState() {
|
|
240
|
-
return this.states.length > 1 && this.stateIndex < this.states.length - 1;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Restore the previous view state
|
|
244
|
-
*/
|
|
245
|
-
previousState() {
|
|
246
|
-
if (this.hasPreviousState()) {
|
|
247
|
-
this.setStateIndex(this.stateIndex - 1);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Restore the next view state
|
|
252
|
-
*/
|
|
253
|
-
nextState() {
|
|
254
|
-
if (this.hasNextState()) {
|
|
255
|
-
this.setStateIndex(this.stateIndex + 1);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Clear the state history
|
|
260
|
-
*/
|
|
261
|
-
clearStateHistory() {
|
|
262
|
-
this.states = [];
|
|
263
|
-
this.stateIndex = 0;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Update the the view to it's intial state
|
|
267
|
-
*/
|
|
268
|
-
setInitialState() {
|
|
269
|
-
if (this.states.length > 0) {
|
|
270
|
-
this.setStateIndex(0);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Move to the extent retrieved from the stream
|
|
275
|
-
* @param extent Extent
|
|
276
|
-
* @param action Either zoom or move
|
|
277
|
-
* @param animation With or without animation to the target extent.
|
|
278
|
-
*/
|
|
279
|
-
setExtent(extent, action, animation = true) {
|
|
280
|
-
const olView = this.olView;
|
|
281
|
-
olView.cancelAnimations();
|
|
282
|
-
const duration = animation ? 500 : 0;
|
|
283
|
-
const zoom = olView.getZoom();
|
|
284
|
-
const fromCenter = olView.getCenter();
|
|
285
|
-
const toCenter = [
|
|
286
|
-
extent[0] + (extent[2] - extent[0]) / 2,
|
|
287
|
-
extent[1] + (extent[3] - extent[1]) / 2
|
|
288
|
-
];
|
|
289
|
-
const distCenter = Math.sqrt(Math.pow(fromCenter[0] - toCenter[0], 2) +
|
|
290
|
-
Math.pow(fromCenter[1] - toCenter[1], 2));
|
|
291
|
-
const fromExtent = olView.calculateExtent();
|
|
292
|
-
const fromSize = Math.sqrt(Math.pow(fromExtent[2] - fromExtent[0], 2) +
|
|
293
|
-
Math.pow(fromExtent[3] - fromExtent[1], 2));
|
|
294
|
-
const toSize = Math.sqrt(Math.pow(extent[2] - extent[0], 2) + Math.pow(extent[3] - extent[1], 2));
|
|
295
|
-
const moySize = (toSize + fromSize) / 2;
|
|
296
|
-
const xSize = distCenter / moySize;
|
|
297
|
-
const maxZoom = action === MapViewAction.Move || zoom > this.maxZoomOnExtent
|
|
298
|
-
? zoom
|
|
299
|
-
: this.maxZoomOnExtent;
|
|
300
|
-
olView.fit(extent, {
|
|
301
|
-
size: this.olMap.getSize(),
|
|
302
|
-
maxZoom,
|
|
303
|
-
padding: this.padding,
|
|
304
|
-
duration: xSize > 4 ? 0 : duration,
|
|
305
|
-
callback: (isFinished) => {
|
|
306
|
-
if (!isFinished) {
|
|
307
|
-
olView.fit(extent, {
|
|
308
|
-
size: this.olMap.getSize(),
|
|
309
|
-
maxZoom,
|
|
310
|
-
padding: this.padding,
|
|
311
|
-
duration: xSize > 4 ? 0 : duration
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Set the view state index
|
|
319
|
-
* @param index State index
|
|
320
|
-
*/
|
|
321
|
-
setStateIndex(index) {
|
|
322
|
-
this.stateIndex = index;
|
|
323
|
-
this.setState(this.states[index]);
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Set the view state
|
|
327
|
-
* @param state View state
|
|
328
|
-
*/
|
|
329
|
-
setState(state) {
|
|
330
|
-
this.olView.animate({
|
|
331
|
-
resolution: state.resolution,
|
|
332
|
-
center: state.center,
|
|
333
|
-
duration: 0
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* On move end, get the view state and record it.
|
|
338
|
-
* @param event Map event
|
|
339
|
-
*/
|
|
340
|
-
onMoveEnd() {
|
|
341
|
-
const resolution = this.getResolution();
|
|
342
|
-
if (this.resolution$.value !== resolution) {
|
|
343
|
-
this.resolution$.next(resolution);
|
|
344
|
-
}
|
|
345
|
-
const state = {
|
|
346
|
-
resolution,
|
|
347
|
-
center: this.getCenter(),
|
|
348
|
-
zoom: this.getZoom()
|
|
349
|
-
};
|
|
350
|
-
if (this.stateHistory === true) {
|
|
351
|
-
const stateIndex = this.stateIndex;
|
|
352
|
-
const stateAtIndex = this.states.length === 0 ? undefined : this.states[stateIndex];
|
|
353
|
-
if (!viewStatesAreEqual(state, stateAtIndex)) {
|
|
354
|
-
this.states = this.states.slice(0, stateIndex + 1).concat([state]);
|
|
355
|
-
this.stateIndex = this.states.length - 1;
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
this.state$.next(state);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWtFOUI7SUFqRXBCOztPQUVHO0lBQ00sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0gsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ0gsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUVyQjs7T0FFRztJQUNILGtCQUFrQixDQUFZO0lBRTlCOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO0lBRTlFOztPQUVHO0lBQ0ssUUFBUSxDQUFl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QUMsT0FBTyxFQUFFO1NBQ3JCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xNYXAgZnJvbSAnb2wvTWFwJztcbmltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBPbFZpZXcgZnJvbSAnb2wvVmlldyc7XG5pbXBvcnQgKiBhcyBvbGVhc2luZyBmcm9tICdvbC9lYXNpbmcnO1xuaW1wb3J0IHsgRXZlbnRzS2V5IH0gZnJvbSAnb2wvZXZlbnRzJztcbmltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTWFwVmlld0FjdGlvbiB9IGZyb20gJy4uL21hcC5lbnVtcyc7XG5pbXBvcnQgeyBNYXBFeHRlbnQsIE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4uL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbiwgdmlld1N0YXRlc0FyZUVxdWFsIH0gZnJvbSAnLi4vbWFwLnV0aWxzJztcbmltcG9ydCB7IE1hcENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFZpZXdDb250cm9sbGVyT3B0aW9ucyB7XG4gIHN0YXRlSGlzdG9yeTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIE1hcFZpZXdDb250cm9sbGVyIGV4dGVuZHMgTWFwQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IHJvdGF0aW9uIGluIHJhZGlhbnNcbiAgICovXG4gIHJlYWRvbmx5IHJvdGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCByZXNvbHV0aW9uXG4gICAqL1xuICByZXNvbHV0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IHN0YXRlXG4gICAqL1xuICBzdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcFZpZXdTdGF0ZT4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogVmlldyBQYWRkaW5nXG4gICAqIFZhbHVlcyBpbiB0aGUgYXJyYXkgYXJlIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdCBwYWRkaW5nLlxuICAgKi9cbiAgcGFkZGluZyA9IFswLCAwLCAwLCAwXTtcblxuICAvKipcbiAgICogTWF4IHpvb20gYWZ0ZXIgc2V0IGV4dGVudFxuICAgKi9cbiAgbWF4Wm9vbU9uRXh0ZW50ID0gMTk7XG5cbiAgLyoqXG4gICAqIE1heCBleHRlbnQgcG9zc2libGUgd2hlbiB6b29taW5nXG4gICAqL1xuICBtYXhMYXllclpvb21FeHRlbnQ6IE1hcEV4dGVudDtcblxuICAvKipcbiAgICogRXh0ZW50IHN0cmVhbVxuICAgKi9cbiAgcHJpdmF0ZSBleHRlbnQkID0gbmV3IFN1YmplY3Q8eyBleHRlbnQ6IE1hcEV4dGVudDsgYWN0aW9uOiBNYXBWaWV3QWN0aW9uIH0+KCk7XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgbW92ZW1lbnQgc3RyZWFtXG4gICAqL1xuICBwcml2YXRlIGV4dGVudCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGVzXG4gICAqL1xuICBwcml2YXRlIHN0YXRlczogTWFwVmlld1N0YXRlW10gPSBbXTtcblxuICAvKipcbiAgICogQ3VycmVudCBzdGF0ZSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZUluZGV4ID0gMDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmlldyBjb250cm9sbGVyIHNob3VsZCBrZWVwIHRoZSB2aWV3J3Mgc3RhdGUgaGlzdG9yeVxuICAgKi9cbiAgZ2V0IHN0YXRlSGlzdG9yeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zID8gdGhpcy5vcHRpb25zLnN0YXRlSGlzdG9yeSA9PT0gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE9MIFZpZXdcbiAgICovXG4gIGdldCBvbFZpZXcoKTogT2xWaWV3IHtcbiAgICByZXR1cm4gdGhpcy5vbE1hcC5nZXRWaWV3KCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM/OiBNYXBWaWV3Q29udHJvbGxlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgc2V0UGFkZGluZyhwYWRkaW5nOiB7XG4gICAgdG9wPzogbnVtYmVyO1xuICAgIGJvdHRvbT86IG51bWJlcjtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHJpZ2h0PzogbnVtYmVyO1xuICB9KSB7XG4gICAgLy8gVmFsdWVzIGluIHRoZSBhcnJheSBhcmUgdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0IHBhZGRpbmcuXG4gICAgaWYgKHBhZGRpbmcudG9wIHx8IHBhZGRpbmcudG9wID09PSAwKSB7XG4gICAgICB0aGlzLnBhZGRpbmdbMF0gPSBwYWRkaW5nLnRvcDtcbiAgICB9XG4gICAgaWYgKHBhZGRpbmcucmlnaHQgfHwgcGFkZGluZy5yaWdodCA9PT0gMCkge1xuICAgICAgdGhpcy5wYWRkaW5nWzFdID0gcGFkZGluZy5yaWdodDtcbiAgICB9XG4gICAgaWYgKHBhZGRpbmcuYm90dG9tIHx8IHBhZGRpbmcuYm90dG9tID09PSAwKSB7XG4gICAgICB0aGlzLnBhZGRpbmdbMl0gPSBwYWRkaW5nLmJvdHRvbTtcbiAgICB9XG4gICAgaWYgKHBhZGRpbmcubGVmdCB8fCBwYWRkaW5nLmxlZnQgPT09IDApIHtcbiAgICAgIHRoaXMucGFkZGluZ1szXSA9IHBhZGRpbmcubGVmdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9yIHJlbW92ZSB0aGlzIGNvbnRyb2xsZXIgdG8vZnJvbSBhIG1hcC5cbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcbiAgICovXG4gIHNldE9sTWFwKG9sTWFwOiBPbE1hcCB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcbiAgICB0aGlzLnNldHVwT2JzZXJ2ZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogT2JzZXJ2ZSBtb3ZlIG1vdmVlbmQgYW5kIHN1YnNjcmliZSB0byB0aGUgZXh0ZW50IHN0cmVhbVxuICAgKi9cbiAgc2V0dXBPYnNlcnZlcnMoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGVIaXN0b3J5ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLm9ic2VydmVyS2V5cy5wdXNoKFxuICAgICAgICB0aGlzLm9sTWFwLm9uKCdtb3ZlZW5kJywgKCkgPT4gdGhpcy5vbk1vdmVFbmQoKSkgYXMgRXZlbnRzS2V5XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuZXh0ZW50JCQgPSB0aGlzLmV4dGVudCRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogeyBleHRlbnQ6IE1hcEV4dGVudDsgYWN0aW9uOiBNYXBWaWV3QWN0aW9uIH0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRFeHRlbnQodmFsdWUuZXh0ZW50LCB2YWx1ZS5hY3Rpb24pO1xuICAgICAgfSk7XG4gIH1cblxuICBtb25pdG9yUm90YXRpb24oKSB7XG4gICAgdGhpcy5vYnNlcnZlcktleXMucHVzaChcbiAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLm9uKCdjaGFuZ2U6cm90YXRpb24nLCAoZXZ0OiBPYmplY3RFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnJvdGF0aW9uJC5uZXh0KGV2dC50YXJnZXQuZ2V0Um90YXRpb24oKSk7XG4gICAgICB9KSBhcyBFdmVudHNLZXlcbiAgICApO1xuICAgIHRoaXMucm90YXRpb24kLm5leHQodGhpcy5nZXRSb3RhdGlvbigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZWFyZG93biBhbnkgb2JzZXJ2ZXJzXG4gICAqL1xuICB0ZWFyZG93bk9ic2VydmVycygpIHtcbiAgICBzdXBlci50ZWFyZG93bk9ic2VydmVycygpO1xuICAgIGlmICh0aGlzLmV4dGVudCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZXh0ZW50JCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuZXh0ZW50JCQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmlldydzIE9MIHByb2plY3Rpb25cbiAgICogQHJldHVybnMgT0wgcHJvamVjdGlvblxuICAgKi9cbiAgZ2V0T2xQcm9qZWN0aW9uKCk6IE9sUHJvamVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFByb2plY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbWFwIHZpZXcgY2VudGVyXG4gICAqIEBwYXJhbSBwcm9qZWN0aW9uIE91dHB1dCBwcm9qZWN0aW9uXG4gICAqIEByZXR1cm5zIENlbnRlclxuICAgKi9cbiAgZ2V0Q2VudGVyKHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBsZXQgY2VudGVyID0gdGhpcy5vbFZpZXcuZ2V0Q2VudGVyKCkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICBpZiAocHJvamVjdGlvbiAmJiBjZW50ZXIpIHtcbiAgICAgIGNlbnRlciA9IG9scHJvai50cmFuc2Zvcm0oY2VudGVyLCB0aGlzLmdldE9sUHJvamVjdGlvbigpLCBwcm9qZWN0aW9uKSBhcyBbXG4gICAgICAgIG51bWJlcixcbiAgICAgICAgbnVtYmVyXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gY2VudGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB2aWV3IGV4dGVudFxuICAgKiBAcGFyYW0gcHJvamVjdGlvbiBPdXRwdXQgcHJvamVjdGlvblxuICAgKiBAcmV0dXJucyBFeHRlbnRcbiAgICovXG4gIGdldEV4dGVudChwcm9qZWN0aW9uPzogc3RyaW5nIHwgT2xQcm9qZWN0aW9uKTogTWFwRXh0ZW50IHtcbiAgICBsZXQgZXh0ZW50ID0gdGhpcy5vbFZpZXcuY2FsY3VsYXRlRXh0ZW50KHRoaXMub2xNYXAuZ2V0U2l6ZSgpKTtcbiAgICBpZiAocHJvamVjdGlvbiAmJiBleHRlbnQpIHtcbiAgICAgIGV4dGVudCA9IG9scHJvai50cmFuc2Zvcm1FeHRlbnQoXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgdGhpcy5nZXRPbFByb2plY3Rpb24oKSxcbiAgICAgICAgcHJvamVjdGlvblxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVudCBhcyBNYXBFeHRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHNjYWxlXG4gICAqIEBwYXJhbSBkcGkgRG90IHBlciBpbmNoZXNcbiAgICogQHJldHVybnMgVmlldyBzY2FsZVxuICAgKi9cbiAgZ2V0U2NhbGUoZHBpID0gOTYpIHtcbiAgICByZXR1cm4gZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbihcbiAgICAgIHRoaXMuZ2V0UmVzb2x1dGlvbigpLFxuICAgICAgdGhpcy5nZXRPbFByb2plY3Rpb24oKS5nZXRVbml0cygpLFxuICAgICAgZHBpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgcmVzb2x1dGlvblxuICAgKiBAcmV0dXJucyBQcm9qZWN0aW9uIGRlbm9taW5hdG9yXG4gICAqL1xuICBnZXRSZXNvbHV0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJlc29sdXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgem9vbSBsZXZlbFxuICAgKiBAcmV0dXJucyBab29tIGxldmVsXG4gICAqL1xuICBnZXRab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5vbFZpZXcuZ2V0Wm9vbSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBab29tIGluXG4gICAqL1xuICB6b29tSW4oKSB7XG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpICsgMSk7XG4gIH1cblxuICAvKipcbiAgICogWm9vbSBvdXRcbiAgICovXG4gIHpvb21PdXQoKSB7XG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpIC0gMSk7XG4gIH1cblxuICAvKipcbiAgICogWm9vbSB0byBzcGVjaWZpYyB6b29tIGxldmVsXG4gICAqIEBwYXJhbSB6b29tIFpvb20gbGV2ZWxcbiAgICovXG4gIHpvb21Ubyh6b29tOiBudW1iZXIpIHtcbiAgICB0aGlzLm9sVmlldy5jYW5jZWxBbmltYXRpb25zKCk7XG4gICAgdGhpcy5vbFZpZXcuYW5pbWF0ZSh7XG4gICAgICB6b29tLFxuICAgICAgZHVyYXRpb246IDI1MCxcbiAgICAgIGVhc2luZzogb2xlYXNpbmcuZWFzZU91dFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdG8gZXh0ZW50IGFmdGVyIGEgc2hvcnQgZGVsYXkgKDEwMG1zKSB1bmxlc3NcbiAgICogYSBuZXcgbW92ZW1lbnQgZ2V0cyByZWdpc3RlcmVkIGluIHRoZSBtZWFudGltZS5cbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnQgdG8gbW92ZSB0b1xuICAgKi9cbiAgbW92ZVRvRXh0ZW50KGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcbiAgICB0aGlzLmV4dGVudCQubmV4dCh7IGV4dGVudCwgYWN0aW9uOiBNYXBWaWV3QWN0aW9uLk1vdmUgfSk7XG4gIH1cblxuICAvKipcbiAgICogWm9vbSB0byBleHRlbnQgYWZ0ZXIgYSBzaG9ydCBkZWxheSAoMTAwbXMpIHVubGVzc1xuICAgKiBhIG5ldyBtb3ZlbWVudCBnZXRzIHJlZ2lzdGVyZWQgaW4gdGhlIG1lYW50aW1lLlxuICAgKiBAcGFyYW0gZXh0ZW50IEV4dGVudCB0byB6b29tIHRvXG4gICAqL1xuICB6b29tVG9FeHRlbnQoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xuICAgIHRoaXMuZXh0ZW50JC5uZXh0KHsgZXh0ZW50LCBhY3Rpb246IE1hcFZpZXdBY3Rpb24uWm9vbSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmlldyByb3RhdGlvblxuICAgKiBAcmV0dXJucyBSb3RhdGlvbiBhbmdsZSBpbiByYWRpYW5zXG4gICAqL1xuICBnZXRSb3RhdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRSb3RhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSB2aWV3IHJvdGF0aW9uIHRvIDBcbiAgICovXG4gIHJlc2V0Um90YXRpb24oKSB7XG4gICAgdGhpcy5vbFZpZXcuYW5pbWF0ZSh7IHJvdGF0aW9uOiAwIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgcHJldmlvdXMgc3RhdGVcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBoYXMgYSBwcmV2aW91cyBzdGF0ZVxuICAgKi9cbiAgaGFzUHJldmlvdXNTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgbmV4dCBzdGF0ZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcbiAgICovXG4gIGhhc05leHRTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPCB0aGlzLnN0YXRlcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmUgdGhlIHByZXZpb3VzIHZpZXcgc3RhdGVcbiAgICovXG4gIHByZXZpb3VzU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXNTdGF0ZSgpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlSW5kZXgodGhpcy5zdGF0ZUluZGV4IC0gMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmUgdGhlIG5leHQgdmlldyBzdGF0ZVxuICAgKi9cbiAgbmV4dFN0YXRlKCkge1xuICAgIGlmICh0aGlzLmhhc05leHRTdGF0ZSgpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlSW5kZXgodGhpcy5zdGF0ZUluZGV4ICsgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBzdGF0ZSBoaXN0b3J5XG4gICAqL1xuICBjbGVhclN0YXRlSGlzdG9yeSgpIHtcbiAgICB0aGlzLnN0YXRlcyA9IFtdO1xuICAgIHRoaXMuc3RhdGVJbmRleCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0aGUgdmlldyB0byBpdCdzIGludGlhbCBzdGF0ZVxuICAgKi9cbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldFN0YXRlSW5kZXgoMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdG8gdGhlIGV4dGVudCByZXRyaWV2ZWQgZnJvbSB0aGUgc3RyZWFtXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50XG4gICAqIEBwYXJhbSBhY3Rpb24gRWl0aGVyIHpvb20gb3IgbW92ZVxuICAgKiBAcGFyYW0gYW5pbWF0aW9uIFdpdGggb3Igd2l0aG91dCBhbmltYXRpb24gdG8gdGhlIHRhcmdldCBleHRlbnQuXG4gICAqL1xuICBwcml2YXRlIHNldEV4dGVudChcbiAgICBleHRlbnQ6IE1hcEV4dGVudCxcbiAgICBhY3Rpb246IE1hcFZpZXdBY3Rpb24sXG4gICAgYW5pbWF0aW9uID0gdHJ1ZVxuICApIHtcbiAgICBjb25zdCBvbFZpZXcgPSB0aGlzLm9sVmlldztcbiAgICBvbFZpZXcuY2FuY2VsQW5pbWF0aW9ucygpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gYW5pbWF0aW9uID8gNTAwIDogMDtcbiAgICBjb25zdCB6b29tID0gb2xWaWV3LmdldFpvb20oKTtcblxuICAgIGNvbnN0IGZyb21DZW50ZXIgPSBvbFZpZXcuZ2V0Q2VudGVyKCk7XG4gICAgY29uc3QgdG9DZW50ZXIgPSBbXG4gICAgICBleHRlbnRbMF0gKyAoZXh0ZW50WzJdIC0gZXh0ZW50WzBdKSAvIDIsXG4gICAgICBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDJcbiAgICBdO1xuICAgIGNvbnN0IGRpc3RDZW50ZXIgPSBNYXRoLnNxcnQoXG4gICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzBdIC0gdG9DZW50ZXJbMF0sIDIpICtcbiAgICAgICAgTWF0aC5wb3coZnJvbUNlbnRlclsxXSAtIHRvQ2VudGVyWzFdLCAyKVxuICAgICk7XG4gICAgY29uc3QgZnJvbUV4dGVudCA9IG9sVmlldy5jYWxjdWxhdGVFeHRlbnQoKTtcbiAgICBjb25zdCBmcm9tU2l6ZSA9IE1hdGguc3FydChcbiAgICAgIE1hdGgucG93KGZyb21FeHRlbnRbMl0gLSBmcm9tRXh0ZW50WzBdLCAyKSArXG4gICAgICAgIE1hdGgucG93KGZyb21FeHRlbnRbM10gLSBmcm9tRXh0ZW50WzFdLCAyKVxuICAgICk7XG4gICAgY29uc3QgdG9TaXplID0gTWF0aC5zcXJ0KFxuICAgICAgTWF0aC5wb3coZXh0ZW50WzJdIC0gZXh0ZW50WzBdLCAyKSArIE1hdGgucG93KGV4dGVudFszXSAtIGV4dGVudFsxXSwgMilcbiAgICApO1xuICAgIGNvbnN0IG1veVNpemUgPSAodG9TaXplICsgZnJvbVNpemUpIC8gMjtcbiAgICBjb25zdCB4U2l6ZSA9IGRpc3RDZW50ZXIgLyBtb3lTaXplO1xuXG4gICAgY29uc3QgbWF4Wm9vbSA9XG4gICAgICBhY3Rpb24gPT09IE1hcFZpZXdBY3Rpb24uTW92ZSB8fCB6b29tID4gdGhpcy5tYXhab29tT25FeHRlbnRcbiAgICAgICAgPyB6b29tXG4gICAgICAgIDogdGhpcy5tYXhab29tT25FeHRlbnQ7XG5cbiAgICBvbFZpZXcuZml0KGV4dGVudCwge1xuICAgICAgc2l6ZTogdGhpcy5vbE1hcC5nZXRTaXplKCksXG4gICAgICBtYXhab29tLFxuICAgICAgcGFkZGluZzogdGhpcy5wYWRkaW5nLFxuICAgICAgZHVyYXRpb246IHhTaXplID4gNCA/IDAgOiBkdXJhdGlvbixcbiAgICAgIGNhbGxiYWNrOiAoaXNGaW5pc2hlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICBvbFZpZXcuZml0KGV4dGVudCwge1xuICAgICAgICAgICAgc2l6ZTogdGhpcy5vbE1hcC5nZXRTaXplKCksXG4gICAgICAgICAgICBtYXhab29tLFxuICAgICAgICAgICAgcGFkZGluZzogdGhpcy5wYWRkaW5nLFxuICAgICAgICAgICAgZHVyYXRpb246IHhTaXplID4gNCA/IDAgOiBkdXJhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2aWV3IHN0YXRlIGluZGV4XG4gICAqIEBwYXJhbSBpbmRleCBTdGF0ZSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTdGF0ZUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YXRlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGVzW2luZGV4XSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2aWV3IHN0YXRlXG4gICAqIEBwYXJhbSBzdGF0ZSBWaWV3IHN0YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFN0YXRlKHN0YXRlOiBNYXBWaWV3U3RhdGUpIHtcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcbiAgICAgIHJlc29sdXRpb246IHN0YXRlLnJlc29sdXRpb24sXG4gICAgICBjZW50ZXI6IHN0YXRlLmNlbnRlcixcbiAgICAgIGR1cmF0aW9uOiAwXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT24gbW92ZSBlbmQsIGdldCB0aGUgdmlldyBzdGF0ZSBhbmQgcmVjb3JkIGl0LlxuICAgKiBAcGFyYW0gZXZlbnQgTWFwIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uTW92ZUVuZCgpIHtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5nZXRSZXNvbHV0aW9uKCk7XG4gICAgaWYgKHRoaXMucmVzb2x1dGlvbiQudmFsdWUgIT09IHJlc29sdXRpb24pIHtcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQubmV4dChyZXNvbHV0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIHJlc29sdXRpb24sXG4gICAgICBjZW50ZXI6IHRoaXMuZ2V0Q2VudGVyKCksXG4gICAgICB6b29tOiB0aGlzLmdldFpvb20oKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdGF0ZUhpc3RvcnkgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IHN0YXRlSW5kZXggPSB0aGlzLnN0YXRlSW5kZXg7XG4gICAgICBjb25zdCBzdGF0ZUF0SW5kZXggPVxuICAgICAgICB0aGlzLnN0YXRlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlc1tzdGF0ZUluZGV4XTtcbiAgICAgIGlmICghdmlld1N0YXRlc0FyZUVxdWFsKHN0YXRlLCBzdGF0ZUF0SW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc3RhdGVzID0gdGhpcy5zdGF0ZXMuc2xpY2UoMCwgc3RhdGVJbmRleCArIDEpLmNvbmNhdChbc3RhdGVdKTtcbiAgICAgICAgdGhpcy5zdGF0ZUluZGV4ID0gdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgfVxufVxuIl19
|