@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,221 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { uuid } from '@igo2/utils';
|
|
5
|
+
import * as olformat from 'ol/format';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
|
+
import { ImportInvalidFileError, ImportOgreServerError, ImportSRSError, ImportSizeError, ImportUnreadableFileError } from './import.errors';
|
|
8
|
+
import { computeLayerTitleFromFile, getFileExtension } from './import.utils';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
import * as i2 from "@igo2/core/config";
|
|
12
|
+
export class ImportService {
|
|
13
|
+
http;
|
|
14
|
+
config;
|
|
15
|
+
static formatExtensionAssociation = {
|
|
16
|
+
GeoJSON: 'geojson',
|
|
17
|
+
GML: 'gml',
|
|
18
|
+
GPX: 'gpx',
|
|
19
|
+
KML: 'kml',
|
|
20
|
+
Shapefile: 'zip'
|
|
21
|
+
};
|
|
22
|
+
static allowedMimeTypes = [
|
|
23
|
+
'application/gml+xml',
|
|
24
|
+
'application/vnd.google-earth.kml+xml',
|
|
25
|
+
'application/gpx+xml',
|
|
26
|
+
'application/json'
|
|
27
|
+
];
|
|
28
|
+
static allowedZipMimeTypes = [
|
|
29
|
+
'application/zip',
|
|
30
|
+
'application/x-zip-compressed',
|
|
31
|
+
'application/x-zip'
|
|
32
|
+
];
|
|
33
|
+
static allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml', 'zip'];
|
|
34
|
+
ogreUrl;
|
|
35
|
+
clientSideFileSizeMax;
|
|
36
|
+
constructor(http, config) {
|
|
37
|
+
this.http = http;
|
|
38
|
+
this.config = config;
|
|
39
|
+
const importConfig = this.config.getConfig('importExport');
|
|
40
|
+
this.ogreUrl = importConfig.url;
|
|
41
|
+
const configFileSizeMb = importConfig.clientSideFileSizeMaxMb;
|
|
42
|
+
this.clientSideFileSizeMax =
|
|
43
|
+
(configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
|
|
44
|
+
if (importConfig.formats) {
|
|
45
|
+
ImportService.allowedExtensions = importConfig.formats
|
|
46
|
+
.map((format) => ImportService.formatExtensionAssociation[format])
|
|
47
|
+
.filter((e) => e);
|
|
48
|
+
if (ImportService.allowedExtensions.includes('geojson')) {
|
|
49
|
+
ImportService.allowedExtensions.push('json');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
import(file, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
|
|
54
|
+
return this.importAsync(file, projectionIn, projectionOut);
|
|
55
|
+
}
|
|
56
|
+
getFileImporter(file) {
|
|
57
|
+
const extension = getFileExtension(file);
|
|
58
|
+
const allowedExtensions = ImportService.allowedExtensions;
|
|
59
|
+
let zipMimeTypes = [];
|
|
60
|
+
if (allowedExtensions.includes('zip')) {
|
|
61
|
+
zipMimeTypes = ImportService.allowedZipMimeTypes;
|
|
62
|
+
}
|
|
63
|
+
const mimeType = file.type;
|
|
64
|
+
const allowedMimeTypes = [
|
|
65
|
+
...ImportService.allowedMimeTypes,
|
|
66
|
+
...zipMimeTypes
|
|
67
|
+
];
|
|
68
|
+
if (allowedMimeTypes.indexOf(mimeType) < 0 &&
|
|
69
|
+
allowedExtensions.indexOf(extension) < 0) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
else if (mimeType === 'application/json' ||
|
|
73
|
+
['json', 'geojson', 'kml', 'gpx'].indexOf(extension) >= 0) {
|
|
74
|
+
return this.importFile;
|
|
75
|
+
}
|
|
76
|
+
else if (this.ogreUrl !== undefined) {
|
|
77
|
+
return this.importFileWithOgre;
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
importAsync(file, projectionIn, projectionOut) {
|
|
82
|
+
const doImport = (observer) => {
|
|
83
|
+
if (file.size >= this.clientSideFileSizeMax) {
|
|
84
|
+
observer.error(new ImportSizeError());
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const importer = this.getFileImporter(file);
|
|
88
|
+
if (importer === undefined) {
|
|
89
|
+
observer.error(new ImportInvalidFileError());
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
importer.call(this, file, observer, projectionIn, projectionOut);
|
|
93
|
+
};
|
|
94
|
+
return new Observable(doImport);
|
|
95
|
+
}
|
|
96
|
+
importFile(file, observer, projectionIn, projectionOut) {
|
|
97
|
+
const reader = new FileReader();
|
|
98
|
+
reader.onload = (event) => {
|
|
99
|
+
try {
|
|
100
|
+
const features = this.parseFeaturesFromFile(file, event.target.result, projectionIn, projectionOut);
|
|
101
|
+
observer.next(features);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
observer.error(new ImportUnreadableFileError());
|
|
105
|
+
}
|
|
106
|
+
observer.complete();
|
|
107
|
+
};
|
|
108
|
+
reader.onerror = () => {
|
|
109
|
+
observer.error(new ImportUnreadableFileError());
|
|
110
|
+
};
|
|
111
|
+
reader.readAsText(file, 'UTF-8');
|
|
112
|
+
}
|
|
113
|
+
importFileWithOgre(file, observer, projectionIn, projectionOut) {
|
|
114
|
+
const url = `${this.ogreUrl}/convert`;
|
|
115
|
+
const formData = new FormData();
|
|
116
|
+
formData.append('upload', file);
|
|
117
|
+
formData.append('sourceSrs', projectionIn);
|
|
118
|
+
formData.append('targetSrs', projectionOut);
|
|
119
|
+
formData.append('formatOutput', 'GEOJSON');
|
|
120
|
+
formData.append('skipFailures', '');
|
|
121
|
+
this.http.post(url, formData, { headers: new HttpHeaders() }).subscribe((response) => {
|
|
122
|
+
if (response === null) {
|
|
123
|
+
observer.error(new ImportUnreadableFileError());
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const errors = response.errors || [];
|
|
127
|
+
if (errors.length > 0) {
|
|
128
|
+
observer.error(new ImportUnreadableFileError());
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const features = this.parseFeaturesFromGeoJSON(file, response, projectionOut);
|
|
132
|
+
observer.next(features);
|
|
133
|
+
observer.complete();
|
|
134
|
+
}
|
|
135
|
+
}, (error) => {
|
|
136
|
+
error.error.caught = true;
|
|
137
|
+
const errMsg = error.error.msg || '';
|
|
138
|
+
if (errMsg === 'No valid files found') {
|
|
139
|
+
observer.error(new ImportInvalidFileError());
|
|
140
|
+
}
|
|
141
|
+
else if (errMsg &&
|
|
142
|
+
errMsg.startWith('ERROR 1: Failed to process SRS definition')) {
|
|
143
|
+
observer.error(new ImportSRSError());
|
|
144
|
+
}
|
|
145
|
+
else if (error.status === 500) {
|
|
146
|
+
observer.error(new ImportOgreServerError());
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
observer.error(new ImportUnreadableFileError());
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
parseFeaturesFromFile(file, data, projectionIn, projectionOut) {
|
|
154
|
+
const extension = getFileExtension(file);
|
|
155
|
+
const mimeType = file.type;
|
|
156
|
+
const GeoJSON = new olformat.GeoJSON();
|
|
157
|
+
let format;
|
|
158
|
+
if (mimeType === 'application/vnd.google-earth.kml+xml') {
|
|
159
|
+
format = new olformat.KML();
|
|
160
|
+
}
|
|
161
|
+
else if (mimeType === 'application/gml+xml') {
|
|
162
|
+
format = new olformat.GML();
|
|
163
|
+
}
|
|
164
|
+
else if (mimeType === 'application/gpx+xml') {
|
|
165
|
+
format = new olformat.GPX();
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
switch (extension) {
|
|
169
|
+
case 'kml':
|
|
170
|
+
format = new olformat.KML();
|
|
171
|
+
break;
|
|
172
|
+
case 'gpx':
|
|
173
|
+
format = new olformat.GPX();
|
|
174
|
+
break;
|
|
175
|
+
case 'gml':
|
|
176
|
+
format = new olformat.GML();
|
|
177
|
+
break;
|
|
178
|
+
default:
|
|
179
|
+
format = GeoJSON;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const olFeatures = format.readFeatures(data, {
|
|
184
|
+
dataProjection: projectionIn,
|
|
185
|
+
featureProjection: projectionOut
|
|
186
|
+
});
|
|
187
|
+
const features = olFeatures.map((olFeature) => {
|
|
188
|
+
return Object.assign(GeoJSON.writeFeatureObject(olFeature), {
|
|
189
|
+
projection: projectionOut,
|
|
190
|
+
meta: {
|
|
191
|
+
id: uuid(),
|
|
192
|
+
title: computeLayerTitleFromFile(file)
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
return features;
|
|
197
|
+
}
|
|
198
|
+
parseFeaturesFromGeoJSON(file, data, projectionOut) {
|
|
199
|
+
const olFormat = new olformat.GeoJSON();
|
|
200
|
+
const olFeatures = olFormat.readFeatures(data);
|
|
201
|
+
const features = olFeatures.map((olFeature) => {
|
|
202
|
+
return Object.assign(olFormat.writeFeatureObject(olFeature), {
|
|
203
|
+
projection: projectionOut,
|
|
204
|
+
meta: {
|
|
205
|
+
id: uuid(),
|
|
206
|
+
title: computeLayerTitleFromFile(file)
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
return features;
|
|
211
|
+
}
|
|
212
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
213
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, providedIn: 'root' });
|
|
214
|
+
}
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, decorators: [{
|
|
216
|
+
type: Injectable,
|
|
217
|
+
args: [{
|
|
218
|
+
providedIn: 'root'
|
|
219
|
+
}]
|
|
220
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9pbXBvcnQtZXhwb3J0L3NoYXJlZC9pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbkMsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsZUFBZSxFQUNmLHlCQUF5QixFQUMxQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBSzdFLE1BQU0sT0FBTyxhQUFhO0lBNEJkO0lBQ0E7SUE1QlYsTUFBTSxDQUFDLDBCQUEwQixHQUFHO1FBQ2xDLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUM7SUFFRixNQUFNLENBQUMsZ0JBQWdCLEdBQUc7UUFDeEIscUJBQXFCO1FBQ3JCLHNDQUFzQztRQUN0QyxxQkFBcUI7UUFDckIsa0JBQWtCO0tBQ25CLENBQUM7SUFFRixNQUFNLENBQUMsbUJBQW1CLEdBQUc7UUFDM0IsaUJBQWlCO1FBQ2pCLDhCQUE4QjtRQUM5Qixt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LEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgKiBhcyBvbGZvcm1hdCBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBJbXBvcnRJbnZhbGlkRmlsZUVycm9yLFxuICBJbXBvcnRPZ3JlU2VydmVyRXJyb3IsXG4gIEltcG9ydFNSU0Vycm9yLFxuICBJbXBvcnRTaXplRXJyb3IsXG4gIEltcG9ydFVucmVhZGFibGVGaWxlRXJyb3Jcbn0gZnJvbSAnLi9pbXBvcnQuZXJyb3JzJztcbmltcG9ydCB7IEltcG9ydEV4cG9ydFNlcnZpY2VPcHRpb25zIH0gZnJvbSAnLi9pbXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbXB1dGVMYXllclRpdGxlRnJvbUZpbGUsIGdldEZpbGVFeHRlbnNpb24gfSBmcm9tICcuL2ltcG9ydC51dGlscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydFNlcnZpY2Uge1xuICBzdGF0aWMgZm9ybWF0RXh0ZW5zaW9uQXNzb2NpYXRpb24gPSB7XG4gICAgR2VvSlNPTjogJ2dlb2pzb24nLFxuICAgIEdNTDogJ2dtbCcsXG4gICAgR1BYOiAnZ3B4JyxcbiAgICBLTUw6ICdrbWwnLFxuICAgIFNoYXBlZmlsZTogJ3ppcCdcbiAgfTtcblxuICBzdGF0aWMgYWxsb3dlZE1pbWVUeXBlcyA9IFtcbiAgICAnYXBwbGljYXRpb24vZ21sK3htbCcsXG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCcsXG4gICAgJ2FwcGxpY2F0aW9uL2dweCt4bWwnLFxuICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICBdO1xuXG4gIHN0YXRpYyBhbGxvd2VkWmlwTWltZVR5cGVzID0gW1xuICAgICdhcHBsaWNhdGlvbi96aXAnLFxuICAgICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJyxcbiAgICAnYXBwbGljYXRpb24veC16aXAnXG4gIF07XG5cbiAgc3RhdGljIGFsbG93ZWRFeHRlbnNpb25zID0gWydnZW9qc29uJywgJ2ttbCcsICdncHgnLCAnanNvbicsICdnbWwnLCAnemlwJ107XG5cbiAgcHJpdmF0ZSBvZ3JlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgY2xpZW50U2lkZUZpbGVTaXplTWF4OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IGltcG9ydENvbmZpZyA9IHRoaXMuY29uZmlnLmdldENvbmZpZyhcbiAgICAgICdpbXBvcnRFeHBvcnQnXG4gICAgKSBhcyBJbXBvcnRFeHBvcnRTZXJ2aWNlT3B0aW9ucztcbiAgICB0aGlzLm9ncmVVcmwgPSBpbXBvcnRDb25maWcudXJsO1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGVTaXplTWIgPSBpbXBvcnRDb25maWcuY2xpZW50U2lkZUZpbGVTaXplTWF4TWI7XG4gICAgdGhpcy5jbGllbnRTaWRlRmlsZVNpemVNYXggPVxuICAgICAgKGNvbmZpZ0ZpbGVTaXplTWIgPyBjb25maWdGaWxlU2l6ZU1iIDogMzApICogTWF0aC5wb3coMTAyNCwgMik7XG4gICAgaWYgKGltcG9ydENvbmZpZy5mb3JtYXRzKSB7XG4gICAgICBJbXBvcnRTZXJ2aWNlLmFsbG93ZWRFeHRlbnNpb25zID0gaW1wb3J0Q29uZmlnLmZvcm1hdHNcbiAgICAgICAgLm1hcCgoZm9ybWF0KSA9PiBJbXBvcnRTZXJ2aWNlLmZvcm1hdEV4dGVuc2lvbkFzc29jaWF0aW9uW2Zvcm1hdF0pXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgICAgaWYgKEltcG9ydFNlcnZpY2UuYWxsb3dlZEV4dGVuc2lvbnMuaW5jbHVkZXMoJ2dlb2pzb24nKSkge1xuICAgICAgICBJbXBvcnRTZXJ2aWNlLmFsbG93ZWRFeHRlbnNpb25zLnB1c2goJ2pzb24nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbXBvcnQoXG4gICAgZmlsZTogRmlsZSxcbiAgICBwcm9qZWN0aW9uSW4gPSAnRVBTRzo0MzI2JyxcbiAgICBwcm9qZWN0aW9uT3V0ID0gJ0VQU0c6NDMyNidcbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHtcbiAgICByZXR1cm4gdGhpcy5pbXBvcnRBc3luYyhmaWxlLCBwcm9qZWN0aW9uSW4sIHByb2plY3Rpb25PdXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlSW1wb3J0ZXIoXG4gICAgZmlsZTogRmlsZVxuICApOiAoXG4gICAgZmlsZTogRmlsZSxcbiAgICBvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPixcbiAgICBwcm9qZWN0aW9uSW46IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uT3V0OiBzdHJpbmdcbiAgKSA9PiB2b2lkIHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUpO1xuICAgIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gSW1wb3J0U2VydmljZS5hbGxvd2VkRXh0ZW5zaW9ucztcbiAgICBsZXQgemlwTWltZVR5cGVzID0gW107XG4gICAgaWYgKGFsbG93ZWRFeHRlbnNpb25zLmluY2x1ZGVzKCd6aXAnKSkge1xuICAgICAgemlwTWltZVR5cGVzID0gSW1wb3J0U2VydmljZS5hbGxvd2VkWmlwTWltZVR5cGVzO1xuICAgIH1cbiAgICBjb25zdCBtaW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICBjb25zdCBhbGxvd2VkTWltZVR5cGVzID0gW1xuICAgICAgLi4uSW1wb3J0U2VydmljZS5hbGxvd2VkTWltZVR5cGVzLFxuICAgICAgLi4uemlwTWltZVR5cGVzXG4gICAgXTtcblxuICAgIGlmIChcbiAgICAgIGFsbG93ZWRNaW1lVHlwZXMuaW5kZXhPZihtaW1lVHlwZSkgPCAwICYmXG4gICAgICBhbGxvd2VkRXh0ZW5zaW9ucy5pbmRleE9mKGV4dGVuc2lvbikgPCAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtaW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nIHx8XG4gICAgICBbJ2pzb24nLCAnZ2VvanNvbicsICdrbWwnLCAnZ3B4J10uaW5kZXhPZihleHRlbnNpb24pID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmltcG9ydEZpbGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9ncmVVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW1wb3J0RmlsZVdpdGhPZ3JlO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGltcG9ydEFzeW5jKFxuICAgIGZpbGU6IEZpbGUsXG4gICAgcHJvamVjdGlvbkluOiBzdHJpbmcsXG4gICAgcHJvamVjdGlvbk91dDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZVtdPiB7XG4gICAgY29uc3QgZG9JbXBvcnQgPSAob2JzZXJ2ZXI6IE9ic2VydmVyPEZlYXR1cmVbXT4pID0+IHtcbiAgICAgIGlmIChmaWxlLnNpemUgPj0gdGhpcy5jbGllbnRTaWRlRmlsZVNpemVNYXgpIHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydFNpemVFcnJvcigpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW1wb3J0ZXIgPSB0aGlzLmdldEZpbGVJbXBvcnRlcihmaWxlKTtcbiAgICAgIGlmIChpbXBvcnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ic2VydmVyLmVycm9yKG5ldyBJbXBvcnRJbnZhbGlkRmlsZUVycm9yKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGltcG9ydGVyLmNhbGwodGhpcywgZmlsZSwgb2JzZXJ2ZXIsIHByb2plY3Rpb25JbiwgcHJvamVjdGlvbk91dCk7XG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShkb0ltcG9ydCk7XG4gIH1cblxuICBwcml2YXRlIGltcG9ydEZpbGUoXG4gICAgZmlsZTogRmlsZSxcbiAgICBvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPixcbiAgICBwcm9qZWN0aW9uSW46IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uT3V0OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLnBhcnNlRmVhdHVyZXNGcm9tRmlsZShcbiAgICAgICAgICBmaWxlLFxuICAgICAgICAgIGV2ZW50LnRhcmdldC5yZXN1bHQsXG4gICAgICAgICAgcHJvamVjdGlvbkluLFxuICAgICAgICAgIHByb2plY3Rpb25PdXRcbiAgICAgICAgKTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChmZWF0dXJlcyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydFVucmVhZGFibGVGaWxlRXJyb3IoKSk7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfTtcblxuICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydFVucmVhZGFibGVGaWxlRXJyb3IoKSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUsICdVVEYtOCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbXBvcnRGaWxlV2l0aE9ncmUoXG4gICAgZmlsZTogRmlsZSxcbiAgICBvYnNlcnZlcjogT2JzZXJ2ZXI8RmVhdHVyZVtdPixcbiAgICBwcm9qZWN0aW9uSW46IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uT3V0OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5vZ3JlVXJsfS9jb252ZXJ0YDtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgndXBsb2FkJywgZmlsZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdzb3VyY2VTcnMnLCBwcm9qZWN0aW9uSW4pO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgndGFyZ2V0U3JzJywgcHJvamVjdGlvbk91dCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtYXRPdXRwdXQnLCAnR0VPSlNPTicpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnc2tpcEZhaWx1cmVzJywgJycpO1xuXG4gICAgdGhpcy5odHRwLnBvc3QodXJsLCBmb3JtRGF0YSwgeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKSB9KS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2U6IHsgZXJyb3JzPzogc3RyaW5nW10gfSB8IG9iamVjdCB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBudWxsKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydFVucmVhZGFibGVGaWxlRXJyb3IoKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JzID0gKHJlc3BvbnNlIGFzIGFueSkuZXJyb3JzIHx8IFtdO1xuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgSW1wb3J0VW5yZWFkYWJsZUZpbGVFcnJvcigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMucGFyc2VGZWF0dXJlc0Zyb21HZW9KU09OKFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgcHJvamVjdGlvbk91dFxuICAgICAgICAgICk7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChmZWF0dXJlcyk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVyck1zZyA9IGVycm9yLmVycm9yLm1zZyB8fCAnJztcbiAgICAgICAgaWYgKGVyck1zZyA9PT0gJ05vIHZhbGlkIGZpbGVzIGZvdW5kJykge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKG5ldyBJbXBvcnRJbnZhbGlkRmlsZUVycm9yKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGVyck1zZyAmJlxuICAgICAgICAgIGVyck1zZy5zdGFydFdpdGgoJ0VSUk9SIDE6IEZhaWxlZCB0byBwcm9jZXNzIFNSUyBkZWZpbml0aW9uJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydFNSU0Vycm9yKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IobmV3IEltcG9ydE9ncmVTZXJ2ZXJFcnJvcigpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgSW1wb3J0VW5yZWFkYWJsZUZpbGVFcnJvcigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRmVhdHVyZXNGcm9tRmlsZShcbiAgICBmaWxlOiBGaWxlLFxuICAgIGRhdGE6IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uSW46IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uT3V0OiBzdHJpbmdcbiAgKTogRmVhdHVyZVtdIHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUpO1xuICAgIGNvbnN0IG1pbWVUeXBlID0gZmlsZS50eXBlO1xuXG4gICAgY29uc3QgR2VvSlNPTiA9IG5ldyBvbGZvcm1hdC5HZW9KU09OKCk7XG5cbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChtaW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCcpIHtcbiAgICAgIGZvcm1hdCA9IG5ldyBvbGZvcm1hdC5LTUwoKTtcbiAgICB9IGVsc2UgaWYgKG1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vZ21sK3htbCcpIHtcbiAgICAgIGZvcm1hdCA9IG5ldyBvbGZvcm1hdC5HTUwoKTtcbiAgICB9IGVsc2UgaWYgKG1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vZ3B4K3htbCcpIHtcbiAgICAgIGZvcm1hdCA9IG5ldyBvbGZvcm1hdC5HUFgoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChleHRlbnNpb24pIHtcbiAgICAgICAgY2FzZSAna21sJzpcbiAgICAgICAgICBmb3JtYXQgPSBuZXcgb2xmb3JtYXQuS01MKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2dweCc6XG4gICAgICAgICAgZm9ybWF0ID0gbmV3IG9sZm9ybWF0LkdQWCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnbWwnOlxuICAgICAgICAgIGZvcm1hdCA9IG5ldyBvbGZvcm1hdC5HTUwoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBmb3JtYXQgPSBHZW9KU09OO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9sRmVhdHVyZXMgPSBmb3JtYXQucmVhZEZlYXR1cmVzKGRhdGEsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uSW4sXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvbk91dFxuICAgIH0pO1xuICAgIGNvbnN0IGZlYXR1cmVzID0gb2xGZWF0dXJlcy5tYXAoKG9sRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+KSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihHZW9KU09OLndyaXRlRmVhdHVyZU9iamVjdChvbEZlYXR1cmUpLCB7XG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb25PdXQsXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICAgIHRpdGxlOiBjb21wdXRlTGF5ZXJUaXRsZUZyb21GaWxlKGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZlYXR1cmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUZlYXR1cmVzRnJvbUdlb0pTT04oXG4gICAgZmlsZTogRmlsZSxcbiAgICBkYXRhOiBvYmplY3QsXG4gICAgcHJvamVjdGlvbk91dDogc3RyaW5nXG4gICk6IEZlYXR1cmVbXSB7XG4gICAgY29uc3Qgb2xGb3JtYXQgPSBuZXcgb2xmb3JtYXQuR2VvSlNPTigpO1xuICAgIGNvbnN0IG9sRmVhdHVyZXMgPSBvbEZvcm1hdC5yZWFkRmVhdHVyZXMoZGF0YSk7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBvbEZlYXR1cmVzLm1hcCgob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9sRm9ybWF0LndyaXRlRmVhdHVyZU9iamVjdChvbEZlYXR1cmUpLCB7XG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb25PdXQsXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICAgIHRpdGxlOiBjb21wdXRlTGF5ZXJUaXRsZUZyb21GaWxlKGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZlYXR1cmVzIGFzIEZlYXR1cmVbXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { uuid } from '@igo2/utils';
|
|
2
|
+
import { first, of } from 'rxjs';
|
|
3
|
+
import { ClusterDataSource } from '../../datasource/shared/datasources/cluster-datasource';
|
|
4
|
+
import { FeatureDataSource } from '../../datasource/shared/datasources/feature-datasource';
|
|
5
|
+
import { computeOlFeaturesExtent, featureToOl, moveToOlFeatures } from '../../feature/shared/feature.utils';
|
|
6
|
+
import { VectorLayer } from '../../layer/shared/layers/vector-layer';
|
|
7
|
+
import { featureRandomStyle, featureRandomStyleFunction } from '../../style/shared/feature/feature-style';
|
|
8
|
+
export function addLayerAndFeaturesToMap(features, map, contextUri, layerTitle, layerService, storeToIdb = false) {
|
|
9
|
+
const olFeatures = features.map((feature) => featureToOl(feature, map.projection));
|
|
10
|
+
const id = uuid();
|
|
11
|
+
const sourceOptions = {
|
|
12
|
+
id,
|
|
13
|
+
type: 'vector',
|
|
14
|
+
queryable: true
|
|
15
|
+
};
|
|
16
|
+
const source = new FeatureDataSource(sourceOptions);
|
|
17
|
+
source.ol.addFeatures(olFeatures);
|
|
18
|
+
let randomStyle;
|
|
19
|
+
let editable = false;
|
|
20
|
+
if (olFeatures[0].getKeys().includes('_style') ||
|
|
21
|
+
olFeatures[0].getKeys().includes('_mapTitle')) {
|
|
22
|
+
randomStyle = featureRandomStyleFunction();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
randomStyle = featureRandomStyle();
|
|
26
|
+
editable = true;
|
|
27
|
+
}
|
|
28
|
+
const layer = layerService.createLayer({
|
|
29
|
+
id,
|
|
30
|
+
title: layerTitle,
|
|
31
|
+
workspace: { enabled: true, searchIndexEnabled: true },
|
|
32
|
+
isIgoInternalLayer: true,
|
|
33
|
+
source,
|
|
34
|
+
igoStyle: { editable },
|
|
35
|
+
idbInfo: { firstLoad: true, storeToIdb, contextUri: contextUri || '*' },
|
|
36
|
+
style: randomStyle
|
|
37
|
+
});
|
|
38
|
+
layer.setExtent(computeOlFeaturesExtent(olFeatures, map.viewProjection));
|
|
39
|
+
map.layerController.add(layer);
|
|
40
|
+
moveToOlFeatures(map.viewController, olFeatures);
|
|
41
|
+
return layer;
|
|
42
|
+
}
|
|
43
|
+
export function addLayerAndFeaturesStyledToMap(features, map, layerTitle, styleListService, styleService, layerId, imposedSourceOptions, imposedLayerOptions, zoomTo = true) {
|
|
44
|
+
const olFeatures = features.map((feature) => featureToOl(feature, map.projection));
|
|
45
|
+
let style;
|
|
46
|
+
let distance;
|
|
47
|
+
if (styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute')) {
|
|
48
|
+
const styleByAttribute = styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute');
|
|
49
|
+
style = (feature, resolution) => {
|
|
50
|
+
return styleService.createStyleByAttribute(feature, styleByAttribute, resolution);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
else if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {
|
|
54
|
+
const clusterParam = styleListService.getStyleList(layerTitle.toString() + '.clusterParam');
|
|
55
|
+
distance = styleListService.getStyleList(layerTitle.toString() + '.distance');
|
|
56
|
+
style = (feature, resolution) => {
|
|
57
|
+
const baseStyle = styleService.createStyle(styleListService.getStyleList(layerTitle.toString() + '.clusterStyle'), feature, resolution);
|
|
58
|
+
return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
else if (styleListService.getStyleList(layerTitle.toString() + '.style')) {
|
|
62
|
+
style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList(layerTitle.toString() + '.style'), feature, resolution);
|
|
63
|
+
}
|
|
64
|
+
else if (styleListService.getStyleList('default.clusterStyle') &&
|
|
65
|
+
features[0].geometry.type === 'Point') {
|
|
66
|
+
const clusterParam = styleListService.getStyleList('default.clusterParam');
|
|
67
|
+
distance = styleListService.getStyleList('default.distance');
|
|
68
|
+
style = (feature, resolution) => {
|
|
69
|
+
const baseStyle = styleService.createStyle(styleListService.getStyleList('default.clusterStyle'), feature, resolution);
|
|
70
|
+
return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList('default.style'), feature, resolution);
|
|
75
|
+
}
|
|
76
|
+
let source;
|
|
77
|
+
if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {
|
|
78
|
+
const sourceOptions = {
|
|
79
|
+
distance,
|
|
80
|
+
type: 'cluster',
|
|
81
|
+
queryable: true
|
|
82
|
+
};
|
|
83
|
+
source = new ClusterDataSource(Object.assign(sourceOptions, imposedSourceOptions));
|
|
84
|
+
source.ol.source.addFeatures(olFeatures);
|
|
85
|
+
}
|
|
86
|
+
else if (styleListService.getStyleList(layerTitle.toString())) {
|
|
87
|
+
const sourceOptions = {
|
|
88
|
+
type: 'vector',
|
|
89
|
+
queryable: true
|
|
90
|
+
};
|
|
91
|
+
source = new FeatureDataSource(Object.assign(sourceOptions, imposedSourceOptions));
|
|
92
|
+
source.ol.addFeatures(olFeatures);
|
|
93
|
+
}
|
|
94
|
+
else if (styleListService.getStyleList('default.clusterStyle') &&
|
|
95
|
+
features[0].geometry.type === 'Point') {
|
|
96
|
+
const sourceOptions = {
|
|
97
|
+
distance,
|
|
98
|
+
type: 'cluster',
|
|
99
|
+
queryable: true
|
|
100
|
+
};
|
|
101
|
+
source = new ClusterDataSource(Object.assign(sourceOptions, imposedSourceOptions));
|
|
102
|
+
source.ol.source.addFeatures(olFeatures);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const sourceOptions = {
|
|
106
|
+
type: 'vector',
|
|
107
|
+
queryable: true
|
|
108
|
+
};
|
|
109
|
+
source = new FeatureDataSource(Object.assign(sourceOptions, imposedSourceOptions));
|
|
110
|
+
source.ol.addFeatures(olFeatures);
|
|
111
|
+
}
|
|
112
|
+
const layer = new VectorLayer(Object.assign({
|
|
113
|
+
title: layerTitle,
|
|
114
|
+
id: layerId || uuid(),
|
|
115
|
+
isIgoInternalLayer: true,
|
|
116
|
+
source,
|
|
117
|
+
style
|
|
118
|
+
}, imposedLayerOptions));
|
|
119
|
+
map.layerController.add(layer);
|
|
120
|
+
if (zoomTo) {
|
|
121
|
+
moveToOlFeatures(map.viewController, olFeatures);
|
|
122
|
+
}
|
|
123
|
+
return layer;
|
|
124
|
+
}
|
|
125
|
+
function padTo2Digits(num) {
|
|
126
|
+
return num.toString().padStart(2, '0');
|
|
127
|
+
}
|
|
128
|
+
export function handleFileImportSuccess(file, features, map, contextUri, messageService, layerService, confirmDialogService, styleListService, styleService) {
|
|
129
|
+
if (features.length === 0) {
|
|
130
|
+
handleNothingToImportError(file, messageService);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
let layerTitle = computeLayerTitleFromFile(file);
|
|
134
|
+
const obs$ = confirmDialogService
|
|
135
|
+
? confirmDialogService.open('igo.geo.import.promptStoreToIdb')
|
|
136
|
+
: of(false);
|
|
137
|
+
obs$.pipe(first()).subscribe((confirm) => {
|
|
138
|
+
const d = new Date();
|
|
139
|
+
const dformat = [
|
|
140
|
+
d.getFullYear(),
|
|
141
|
+
padTo2Digits(d.getMonth() + 1),
|
|
142
|
+
padTo2Digits(d.getDate())
|
|
143
|
+
].join('/') +
|
|
144
|
+
' ' +
|
|
145
|
+
[padTo2Digits(d.getHours()), padTo2Digits(d.getMinutes())].join(':');
|
|
146
|
+
layerTitle = confirm ? `${layerTitle} (${dformat})` : layerTitle;
|
|
147
|
+
if (!styleListService) {
|
|
148
|
+
addLayerAndFeaturesToMap(features, map, contextUri, layerTitle, layerService, confirm);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
addLayerAndFeaturesStyledToMap(features, map, layerTitle, styleListService, styleService);
|
|
152
|
+
}
|
|
153
|
+
messageService.success('igo.geo.dropGeoFile.success.text', 'igo.geo.dropGeoFile.success.title', undefined, { value: layerTitle });
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
export function handleFileImportError(file, error, messageService, sizeMb) {
|
|
157
|
+
sizeMb = sizeMb ? sizeMb : 30;
|
|
158
|
+
const errMapping = {
|
|
159
|
+
'Invalid file': handleInvalidFileImportError,
|
|
160
|
+
'File is too large': handleSizeFileImportError,
|
|
161
|
+
'Failed to read file': handleUnreadbleFileImportError,
|
|
162
|
+
'Invalid SRS definition': handleSRSImportError,
|
|
163
|
+
'Error 500 with OGRE': handleOgreServerImportError
|
|
164
|
+
};
|
|
165
|
+
errMapping[error.message](file, error, messageService, sizeMb);
|
|
166
|
+
}
|
|
167
|
+
export function handleInvalidFileImportError(file, error, messageService) {
|
|
168
|
+
messageService.error('igo.geo.dropGeoFile.invalid.text', 'igo.geo.dropGeoFile.invalid.title', undefined, {
|
|
169
|
+
value: file.name,
|
|
170
|
+
mimeType: file.type
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
export function handleUnreadbleFileImportError(file, error, messageService) {
|
|
174
|
+
messageService.error('igo.geo.dropGeoFile.unreadable.text', 'igo.geo.dropGeoFile.unreadable.title', undefined, { value: file.name });
|
|
175
|
+
}
|
|
176
|
+
export function handleSizeFileImportError(file, error, messageService, sizeMb) {
|
|
177
|
+
messageService.error('igo.geo.dropGeoFile.tooLarge.text', 'igo.geo.dropGeoFile.tooLarge.title', undefined, {
|
|
178
|
+
value: file.name,
|
|
179
|
+
size: sizeMb
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
export function handleNothingToImportError(file, messageService) {
|
|
183
|
+
messageService.error('igo.geo.dropGeoFile.empty.text', 'igo.geo.dropGeoFile.empty.title', undefined, {
|
|
184
|
+
value: file.name,
|
|
185
|
+
mimeType: file.type
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export function handleSRSImportError(file, messageService) {
|
|
189
|
+
messageService.error('igo.geo.dropGeoFile.invalidSRS.text', 'igo.geo.dropGeoFile.invalidSRS.title', undefined, {
|
|
190
|
+
value: file.name,
|
|
191
|
+
mimeType: file.type
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
export function handleOgreServerImportError(file, error, messageService) {
|
|
195
|
+
messageService.error('igo.geo.dropGeoFile.ogreServer.text', 'igo.geo.dropGeoFile.ogreServer.title');
|
|
196
|
+
}
|
|
197
|
+
export function getFileExtension(file) {
|
|
198
|
+
return file.name.split('.').pop().toLowerCase();
|
|
199
|
+
}
|
|
200
|
+
export function computeLayerTitleFromFile(file) {
|
|
201
|
+
return file.name.substr(0, file.name.lastIndexOf('.'));
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9zaGFyZWQvaW1wb3J0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHM0YsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0sb0NBQW9DLENBQUM7QUFHNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3JFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzNCLE1BQU0sMENBQTBDLENBQUM7QUFLbEQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxRQUFtQixFQUNuQixHQUFXLEVBQ1gsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsWUFBMEIsRUFDMUIsVUFBVSxHQUFHLEtBQUs7SUFFbEIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUNuRCxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDckMsQ0FBQztJQUVGLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ2xCLE1BQU0sYUFBYSxHQUEwRDtRQUMzRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLFFBQVE7UUFDZCxTQUFTLEVBQUUsSUFBSTtLQUNoQixDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxhQUFh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QUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLElBQVUsRUFDVixLQUFZLEVBQ1osY0FBOEI7SUFFOUIsY0FBYyxDQUFDLEtBQUssQ0FDbEIscUNBQXFDLEVBQ3JDLHNDQUFzQyxDQUN2QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFVO0lBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpcm1EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2NvbmZpcm0tZGlhbG9nJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IGZpcnN0LCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2NsdXN0ZXItZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBDbHVzdGVyRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9jbHVzdGVyLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2ZlYXR1cmUtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBjb21wdXRlT2xGZWF0dXJlc0V4dGVudCxcbiAgZmVhdHVyZVRvT2wsXG4gIG1vdmVUb09sRmVhdHVyZXNcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS51dGlscyc7XG5pbXBvcnQgeyBDbHVzdGVyUGFyYW0gfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvY2x1c3RlclBhcmFtJztcbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllci5zZXJ2aWNlJztcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy92ZWN0b3ItbGF5ZXInO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBmZWF0dXJlUmFuZG9tU3R5bGUsXG4gIGZlYXR1cmVSYW5kb21TdHlsZUZ1bmN0aW9uXG59IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xuaW1wb3J0IHsgU3R5bGVCeUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC92ZWN0b3IvdmVjdG9yLXN0eWxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdHlsZUxpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtbGlzdC9zdHlsZS1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyQW5kRmVhdHVyZXNUb01hcChcbiAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcbiAgbWFwOiBJZ29NYXAsXG4gIGNvbnRleHRVcmk6IHN0cmluZyxcbiAgbGF5ZXJUaXRsZTogc3RyaW5nLFxuICBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgc3RvcmVUb0lkYiA9IGZhbHNlXG4pOiBWZWN0b3JMYXllciB7XG4gIGNvbnN0IG9sRmVhdHVyZXMgPSBmZWF0dXJlcy5tYXAoKGZlYXR1cmU6IEZlYXR1cmUpID0+XG4gICAgZmVhdHVyZVRvT2woZmVhdHVyZSwgbWFwLnByb2plY3Rpb24pXG4gICk7XG5cbiAgY29uc3QgaWQgPSB1dWlkKCk7XG4gIGNvbnN0IHNvdXJjZU9wdGlvbnM6IEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyAmIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zID0ge1xuICAgIGlkLFxuICAgIHR5cGU6ICd2ZWN0b3InLFxuICAgIHF1ZXJ5YWJsZTogdHJ1ZVxuICB9O1xuICBjb25zdCBzb3VyY2UgPSBuZXcgRmVhdHVyZURhdGFTb3VyY2Uoc291cmNlT3B0aW9ucyk7XG4gIHNvdXJjZS5vbC5hZGRGZWF0dXJlcyhvbEZlYXR1cmVzKTtcbiAgbGV0IHJhbmRvbVN0eWxlO1xuICBsZXQgZWRpdGFibGUgPSBmYWxzZTtcbiAgaWYgKFxuICAgIG9sRmVhdHVyZXNbMF0uZ2V0S2V5cygpLmluY2x1ZGVzKCdfc3R5bGUnKSB8fFxuICAgIG9sRmVhdHVyZXNbMF0uZ2V0S2V5cygpLmluY2x1ZGVzKCdfbWFwVGl0bGUnKVxuICApIHtcbiAgICByYW5kb21TdHlsZSA9IGZlYXR1cmVSYW5kb21TdHlsZUZ1bmN0aW9uKCk7XG4gIH0gZWxzZSB7XG4gICAgcmFuZG9tU3R5bGUgPSBmZWF0dXJlUmFuZG9tU3R5bGUoKTtcbiAgICBlZGl0YWJsZSA9IHRydWU7XG4gIH1cbiAgY29uc3QgbGF5ZXIgPSBsYXllclNlcnZpY2UuY3JlYXRlTGF5ZXIoe1xuICAgIGlkLFxuICAgIHRpdGxlOiBsYXllclRpdGxlLFxuICAgIHdvcmtzcGFjZTogeyBlbmFibGVkOiB0cnVlLCBzZWFyY2hJbmRleEVuYWJsZWQ6IHRydWUgfSxcbiAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgc291cmNlLFxuICAgIGlnb1N0eWxlOiB7IGVkaXRhYmxlIH0sXG4gICAgaWRiSW5mbzogeyBmaXJzdExvYWQ6IHRydWUsIHN0b3JlVG9JZGIsIGNvbnRleHRVcmk6IGNvbnRleHRVcmkgfHwgJyonIH0sXG4gICAgc3R5bGU6IHJhbmRvbVN0eWxlXG4gIH0pIGFzIFZlY3RvckxheWVyO1xuICBsYXllci5zZXRFeHRlbnQoY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQob2xGZWF0dXJlcywgbWFwLnZpZXdQcm9qZWN0aW9uKSk7XG4gIG1hcC5sYXllckNvbnRyb2xsZXIuYWRkKGxheWVyKTtcbiAgbW92ZVRvT2xGZWF0dXJlcyhtYXAudmlld0NvbnRyb2xsZXIsIG9sRmVhdHVyZXMpO1xuXG4gIHJldHVybiBsYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyQW5kRmVhdHVyZXNTdHlsZWRUb01hcChcbiAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcbiAgbWFwOiBJZ29NYXAsXG4gIGxheWVyVGl0bGU6IHN0cmluZyxcbiAgc3R5bGVMaXN0U2VydmljZTogU3R5bGVMaXN0U2VydmljZSxcbiAgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXG4gIGxheWVySWQ/OiBzdHJpbmcsXG4gIGltcG9zZWRTb3VyY2VPcHRpb25zPyxcbiAgaW1wb3NlZExheWVyT3B0aW9ucz8sXG4gIHpvb21UbyA9IHRydWVcbik6IFZlY3RvckxheWVyIHtcbiAgY29uc3Qgb2xGZWF0dXJlcyA9IGZlYXR1cmVzLm1hcCgoZmVhdHVyZTogRmVhdHVyZSkgPT5cbiAgICBmZWF0dXJlVG9PbChmZWF0dXJlLCBtYXAucHJvamVjdGlvbilcbiAgKTtcbiAgbGV0IHN0eWxlO1xuICBsZXQgZGlzdGFuY2U6IG51bWJlcjtcblxuICBpZiAoXG4gICAgc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QobGF5ZXJUaXRsZS50b1N0cmluZygpICsgJy5zdHlsZUJ5QXR0cmlidXRlJylcbiAgKSB7XG4gICAgY29uc3Qgc3R5bGVCeUF0dHJpYnV0ZTogU3R5bGVCeUF0dHJpYnV0ZSA9IHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KFxuICAgICAgbGF5ZXJUaXRsZS50b1N0cmluZygpICsgJy5zdHlsZUJ5QXR0cmlidXRlJ1xuICAgICk7XG5cbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlQnlBdHRyaWJ1dGUoXG4gICAgICAgIGZlYXR1cmUsXG4gICAgICAgIHN0eWxlQnlBdHRyaWJ1dGUsXG4gICAgICAgIHJlc29sdXRpb25cbiAgICAgICk7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChcbiAgICBzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJTdHlsZScpXG4gICkge1xuICAgIGNvbnN0IGNsdXN0ZXJQYXJhbTogQ2x1c3RlclBhcmFtID0gc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoXG4gICAgICBsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJQYXJhbSdcbiAgICApO1xuICAgIGRpc3RhbmNlID0gc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoXG4gICAgICBsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmRpc3RhbmNlJ1xuICAgICk7XG5cbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBiYXNlU3R5bGUgPSBzdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGUoXG4gICAgICAgIHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KGxheWVyVGl0bGUudG9TdHJpbmcoKSArICcuY2x1c3RlclN0eWxlJyksXG4gICAgICAgIGZlYXR1cmUsXG4gICAgICAgIHJlc29sdXRpb25cbiAgICAgICk7XG4gICAgICByZXR1cm4gc3R5bGVTZXJ2aWNlLmNyZWF0ZUNsdXN0ZXJTdHlsZShcbiAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgY2x1c3RlclBhcmFtLFxuICAgICAgICBiYXNlU3R5bGVcbiAgICAgICk7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLnN0eWxlJykpIHtcbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PlxuICAgICAgc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlKFxuICAgICAgICBzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLnN0eWxlJyksXG4gICAgICAgIGZlYXR1cmUsXG4gICAgICAgIHJlc29sdXRpb25cbiAgICAgICk7XG4gIH0gZWxzZSBpZiAoXG4gICAgc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoJ2RlZmF1bHQuY2x1c3RlclN0eWxlJykgJiZcbiAgICBmZWF0dXJlc1swXS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnXG4gICkge1xuICAgIGNvbnN0IGNsdXN0ZXJQYXJhbTogQ2x1c3RlclBhcmFtID0gc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoXG4gICAgICAnZGVmYXVsdC5jbHVzdGVyUGFyYW0nXG4gICAgKTtcbiAgICBkaXN0YW5jZSA9IHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KCdkZWZhdWx0LmRpc3RhbmNlJyk7XG5cbiAgICBzdHlsZSA9IChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBiYXNlU3R5bGUgPSBzdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGUoXG4gICAgICAgIHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KCdkZWZhdWx0LmNsdXN0ZXJTdHlsZScpLFxuICAgICAgICBmZWF0dXJlLFxuICAgICAgICByZXNvbHV0aW9uXG4gICAgICApO1xuICAgICAgcmV0dXJuIHN0eWxlU2VydmljZS5jcmVhdGVDbHVzdGVyU3R5bGUoXG4gICAgICAgIGZlYXR1cmUsXG4gICAgICAgIHJlc29sdXRpb24sXG4gICAgICAgIGNsdXN0ZXJQYXJhbSxcbiAgICAgICAgYmFzZVN0eWxlXG4gICAgICApO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT5cbiAgICAgIHN0eWxlU2VydmljZS5jcmVhdGVTdHlsZShcbiAgICAgICAgc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QoJ2RlZmF1bHQuc3R5bGUnKSxcbiAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgcmVzb2x1dGlvblxuICAgICAgKTtcbiAgfVxuXG4gIGxldCBzb3VyY2U7XG4gIGlmIChzdHlsZUxpc3RTZXJ2aWNlLmdldFN0eWxlTGlzdChsYXllclRpdGxlLnRvU3RyaW5nKCkgKyAnLmNsdXN0ZXJTdHlsZScpKSB7XG4gICAgY29uc3Qgc291cmNlT3B0aW9uczogQ2x1c3RlckRhdGFTb3VyY2VPcHRpb25zICYgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPVxuICAgICAge1xuICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgdHlwZTogJ2NsdXN0ZXInLFxuICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgIH07XG4gICAgc291cmNlID0gbmV3IENsdXN0ZXJEYXRhU291cmNlKFxuICAgICAgT2JqZWN0LmFzc2lnbihzb3VyY2VPcHRpb25zLCBpbXBvc2VkU291cmNlT3B0aW9ucylcbiAgICApO1xuICAgIHNvdXJjZS5vbC5zb3VyY2UuYWRkRmVhdHVyZXMob2xGZWF0dXJlcyk7XG4gIH0gZWxzZSBpZiAoc3R5bGVMaXN0U2VydmljZS5nZXRTdHlsZUxpc3QobGF5ZXJUaXRsZS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHNvdXJjZU9wdGlvbnM6IEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyAmIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zID1cbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3ZlY3RvcicsXG4gICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICBzb3VyY2UgPSBuZXcgRmVhdHVyZURhdGFTb3VyY2UoXG4gICAgICBPYmplY3QuYXNzaWduKHNvdXJjZU9wdGlvbnMsIGltcG9zZWRTb3VyY2VPcHRpb25zKVxuICAgICk7XG4gICAgc291cmNlLm9sLmFkZEZlYXR1cmVzKG9sRmVhdHVyZXMpO1xuICB9IGVsc2UgaWYgKFxuICAgIHN0eWxlTGlzdFNlcnZpY2UuZ2V0U3R5bGVMaXN0KCdkZWZhdWx0LmNsdXN0ZXJTdHlsZScpICYmXG4gICAgZmVhdHVyZXNbMF0uZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50J1xuICApIHtcbiAgICBjb25zdCBzb3VyY2VPcHRpb25zOiBDbHVzdGVyRGF0YVNvdXJjZU9wdGlvbnMgJiBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyA9XG4gICAgICB7XG4gICAgICAgIGRpc3RhbmNlLFxuICAgICAgICB0eXBlOiAnY2x1c3RlcicsXG4gICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZVxuICAgICAgfTtcbiAgICBzb3VyY2UgPSBuZXcgQ2x1c3RlckRhdGFTb3VyY2UoXG4gICAgICBPYmplY3QuYXNzaWduKHNvdXJjZU9wdGlvbnMsIGltcG9zZWRTb3VyY2VPcHRpb25zKVxuICAgICk7XG4gICAgc291cmNlLm9sLnNvdXJjZS5hZGRGZWF0dXJlcyhvbEZlYXR1cmVzKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzb3VyY2VPcHRpb25zOiBGZWF0dXJlRGF0YVNvdXJjZU9wdGlvbnMgJiBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyA9XG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd2ZWN0b3InLFxuICAgICAgICBxdWVyeWFibGU6IHRydWVcbiAgICAgIH07XG4gICAgc291cmNlID0gbmV3IEZlYXR1cmVEYXRhU291cmNlKFxuICAgICAgT2JqZWN0LmFzc2lnbihzb3VyY2VPcHRpb25zLCBpbXBvc2VkU291cmNlT3B0aW9ucylcbiAgICApO1xuICAgIHNvdXJjZS5vbC5hZGRGZWF0dXJlcyhvbEZlYXR1cmVzKTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKFxuICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBsYXllclRpdGxlLFxuICAgICAgICBpZDogbGF5ZXJJZCB8fCB1dWlkKCksXG4gICAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBzdHlsZVxuICAgICAgfSxcbiAgICAgIGltcG9zZWRMYXllck9wdGlvbnNcbiAgICApXG4gICk7XG4gIG1hcC5sYXllckNvbnRyb2xsZXIuYWRkKGxheWVyKTtcbiAgaWYgKHpvb21Ubykge1xuICAgIG1vdmVUb09sRmVhdHVyZXMobWFwLnZpZXdDb250cm9sbGVyLCBvbEZlYXR1cmVzKTtcbiAgfVxuICByZXR1cm4gbGF5ZXI7XG59XG5cbmZ1bmN0aW9uIHBhZFRvMkRpZ2l0cyhudW0pIHtcbiAgcmV0dXJuIG51bS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGaWxlSW1wb3J0U3VjY2VzcyhcbiAgZmlsZTogRmlsZSxcbiAgZmVhdHVyZXM6IEZlYXR1cmVbXSxcbiAgbWFwOiBJZ29NYXAsXG4gIGNvbnRleHRVcmk6IHN0cmluZyxcbiAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgY29uZmlybURpYWxvZ1NlcnZpY2U/OiBDb25maXJtRGlhbG9nU2VydmljZSxcbiAgc3R5bGVMaXN0U2VydmljZT86IFN0eWxlTGlzdFNlcnZpY2UsXG4gIHN0eWxlU2VydmljZT86IFN0eWxlU2VydmljZVxuKSB7XG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPT09IDApIHtcbiAgICBoYW5kbGVOb3RoaW5nVG9JbXBvcnRFcnJvcihmaWxlLCBtZXNzYWdlU2VydmljZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGxheWVyVGl0bGUgPSBjb21wdXRlTGF5ZXJUaXRsZUZyb21GaWxlKGZpbGUpO1xuXG4gIGNvbnN0IG9icyQgPSBjb25maXJtRGlhbG9nU2VydmljZVxuICAgID8gY29uZmlybURpYWxvZ1NlcnZpY2Uub3BlbignaWdvLmdlby5pbXBvcnQucHJvbXB0U3RvcmVUb0lkYicpXG4gICAgOiBvZihmYWxzZSk7XG5cbiAgb2JzJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoY29uZmlybSkgPT4ge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRmb3JtYXQgPVxuICAgICAgW1xuICAgICAgICBkLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIHBhZFRvMkRpZ2l0cyhkLmdldE1vbnRoKCkgKyAxKSxcbiAgICAgICAgcGFkVG8yRGlnaXRzKGQuZ2V0RGF0ZSgpKVxuICAgICAgXS5qb2luKCcvJykgK1xuICAgICAgJyAnICtcbiAgICAgIFtwYWRUbzJEaWdpdHMoZC5nZXRIb3VycygpKSwgcGFkVG8yRGlnaXRzKGQuZ2V0TWludXRlcygpKV0uam9pbignOicpO1xuXG4gICAgbGF5ZXJUaXRsZSA9IGNvbmZpcm0gPyBgJHtsYXllclRpdGxlfSAoJHtkZm9ybWF0fSlgIDogbGF5ZXJUaXRsZTtcbiAgICBpZiAoIXN0eWxlTGlzdFNlcnZpY2UpIHtcbiAgICAgIGFkZExheWVyQW5kRmVhdHVyZXNUb01hcChcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgIG1hcCxcbiAgICAgICAgY29udGV4dFVyaSxcbiAgICAgICAgbGF5ZXJUaXRsZSxcbiAgICAgICAgbGF5ZXJTZXJ2aWNlLFxuICAgICAgICBjb25maXJtXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRMYXllckFuZEZlYXR1cmVzU3R5bGVkVG9NYXAoXG4gICAgICAgIGZlYXR1cmVzLFxuICAgICAgICBtYXAsXG4gICAgICAgIGxheWVyVGl0bGUsXG4gICAgICAgIHN0eWxlTGlzdFNlcnZpY2UsXG4gICAgICAgIHN0eWxlU2VydmljZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgJ2lnby5nZW8uZHJvcEdlb0ZpbGUuc3VjY2Vzcy50ZXh0JyxcbiAgICAgICdpZ28uZ2VvLmRyb3BHZW9GaWxlLnN1Y2Nlc3MudGl0bGUnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgeyB2YWx1ZTogbGF5ZXJUaXRsZSB9XG4gICAgKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGaWxlSW1wb3J0RXJyb3IoXG4gIGZpbGU6IEZpbGUsXG4gIGVycm9yOiBFcnJvcixcbiAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICBzaXplTWI/OiBudW1iZXJcbikge1xuICBzaXplTWIgPSBzaXplTWIgPyBzaXplTWIgOiAzMDtcbiAgY29uc3QgZXJyTWFwcGluZyA9IHtcbiAgICAnSW52YWxpZCBmaWxlJzogaGFuZGxlSW52YWxpZEZpbGVJbXBvcnRFcnJvcixcbiAgICAnRmlsZSBpcyB0b28gbGFyZ2UnOiBoYW5kbGVTaXplRmlsZUltcG9ydEVycm9yLFxuICAgICdGYWlsZWQgdG8gcmVhZCBmaWxlJzogaGFuZGxlVW5yZWFkYmxlRmlsZUltcG9ydEVycm9yLFxuICAgICdJbnZhbGlkIFNSUyBkZWZpbml0aW9uJzogaGFuZGxlU1JTSW1wb3J0RXJyb3IsXG4gICAgJ0Vycm9yIDUwMCB3aXRoIE9HUkUnOiBoYW5kbGVPZ3JlU2VydmVySW1wb3J0RXJyb3JcbiAgfTtcbiAgZXJyTWFwcGluZ1tlcnJvci5tZXNzYWdlXShmaWxlLCBlcnJvciwgbWVzc2FnZVNlcnZpY2UsIHNpemVNYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVJbnZhbGlkRmlsZUltcG9ydEVycm9yKFxuICBmaWxlOiBGaWxlLFxuICBlcnJvcjogRXJyb3IsXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuKSB7XG4gIG1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICdpZ28uZ2VvLmRyb3BHZW9GaWxlLmludmFsaWQudGV4dCcsXG4gICAgJ2lnby5nZW8uZHJvcEdlb0ZpbGUuaW52YWxpZC50aXRsZScsXG4gICAgdW5kZWZpbmVkLFxuICAgIHtcbiAgICAgIHZhbHVlOiBmaWxlLm5hbWUsXG4gICAgICBtaW1lVHlwZTogZmlsZS50eXBlXG4gICAgfVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlVW5yZWFkYmxlRmlsZUltcG9ydEVycm9yKFxuICBmaWxlOiBGaWxlLFxuICBlcnJvcjogRXJyb3IsXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuKSB7XG4gIG1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICdpZ28uZ2VvLmRyb3BHZW9GaWxlLnVucmVhZGFibGUudGV4dCcsXG4gICAgJ2lnby5nZW8uZHJvcEdlb0ZpbGUudW5yZWFkYWJsZS50aXRsZScsXG4gICAgdW5kZWZpbmVkLFxuICAgIHsgdmFsdWU6IGZpbGUubmFtZSB9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVTaXplRmlsZUltcG9ydEVycm9yKFxuICBmaWxlOiBGaWxlLFxuICBlcnJvcjogRXJyb3IsXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgc2l6ZU1iOiBudW1iZXJcbikge1xuICBtZXNzYWdlU2VydmljZS5lcnJvcihcbiAgICAnaWdvLmdlby5kcm9wR2VvRmlsZS50b29MYXJnZS50ZXh0JyxcbiAgICAnaWdvLmdlby5kcm9wR2VvRmlsZS50b29MYXJnZS50aXRsZScsXG4gICAgdW5kZWZpbmVkLFxuICAgIHtcbiAgICAgIHZhbHVlOiBmaWxlLm5hbWUsXG4gICAgICBzaXplOiBzaXplTWJcbiAgICB9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVOb3RoaW5nVG9JbXBvcnRFcnJvcihcbiAgZmlsZTogRmlsZSxcbiAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4pIHtcbiAgbWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgJ2lnby5nZW8uZHJvcEdlb0ZpbGUuZW1wdHkudGV4dCcsXG4gICAgJ2lnby5nZW8uZHJvcEdlb0ZpbGUuZW1wdHkudGl0bGUnLFxuICAgIHVuZGVmaW5lZCxcbiAgICB7XG4gICAgICB2YWx1ZTogZmlsZS5uYW1lLFxuICAgICAgbWltZVR5cGU6IGZpbGUudHlwZVxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNSU0ltcG9ydEVycm9yKFxuICBmaWxlOiBGaWxlLFxuICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2Vcbikge1xuICBtZXNzYWdlU2VydmljZS5lcnJvcihcbiAgICAnaWdvLmdlby5kcm9wR2VvRmlsZS5pbnZhbGlkU1JTLnRleHQnLFxuICAgICdpZ28uZ2VvLmRyb3BHZW9GaWxlLmludmFsaWRTUlMudGl0bGUnLFxuICAgIHVuZGVmaW5lZCxcbiAgICB7XG4gICAgICB2YWx1ZTogZmlsZS5uYW1lLFxuICAgICAgbWltZVR5cGU6IGZpbGUudHlwZVxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU9ncmVTZXJ2ZXJJbXBvcnRFcnJvcihcbiAgZmlsZTogRmlsZSxcbiAgZXJyb3I6IEVycm9yLFxuICBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2Vcbikge1xuICBtZXNzYWdlU2VydmljZS5lcnJvcihcbiAgICAnaWdvLmdlby5kcm9wR2VvRmlsZS5vZ3JlU2VydmVyLnRleHQnLFxuICAgICdpZ28uZ2VvLmRyb3BHZW9GaWxlLm9ncmVTZXJ2ZXIudGl0bGUnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKGZpbGU6IEZpbGUpOiBzdHJpbmcge1xuICByZXR1cm4gZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVMYXllclRpdGxlRnJvbUZpbGUoZmlsZTogRmlsZSk6IHN0cmluZyB7XG4gIHJldHVybiBmaWxlLm5hbWUuc3Vic3RyKDAsIGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './drop-geo-file.directive';
|
|
2
|
+
export * from './export.errors';
|
|
3
|
+
export * from './export.interface';
|
|
4
|
+
export * from './export.service';
|
|
5
|
+
export * from './export.type';
|
|
6
|
+
export * from './export.utils';
|
|
7
|
+
export * from './import.errors';
|
|
8
|
+
export * from './import.interface';
|
|
9
|
+
export * from './import.service';
|
|
10
|
+
export * from './import.utils';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9pbXBvcnQtZXhwb3J0L3NoYXJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJvcC1nZW8tZmlsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBvcnQuZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0LnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBvcnQudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbXBvcnQuZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW1wb3J0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2ltcG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW1wb3J0LnV0aWxzJztcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './layer-group';
|
|
2
|
+
export * from './layer-item';
|
|
3
|
+
export * from './layer-legend-item';
|
|
4
|
+
export * from './layer-legend-list';
|
|
5
|
+
export * from './layer-legend';
|
|
6
|
+
export * from './layer-list-tool';
|
|
7
|
+
export * from './layer-list';
|
|
8
|
+
export * from './layer-search';
|
|
9
|
+
export * from './layer-unavailable';
|
|
10
|
+
export * from './layer-viewer-bottom-actions';
|
|
11
|
+
export * from './layer-viewer';
|
|
12
|
+
export * from './layer-visibility-button';
|
|
13
|
+
export * from './shared';
|
|
14
|
+
export * from './track-feature-button';
|
|
15
|
+
export * from './utils';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXllci1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9sYXllci1sZWdlbmQtaXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLWxlZ2VuZC1saXN0JztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItbGVnZW5kJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItbGlzdC10b29sJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItbGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXNlYXJjaCc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLXVuYXZhaWxhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItdmlld2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGF5ZXItdmlzaWJpbGl0eS1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFjay1mZWF0dXJlLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './layer-group.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1ncm91cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXllci1ncm91cC5jb21wb25lbnQnO1xuIl19
|