@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,56 @@
|
|
|
1
|
+
import { FeatureDataSource } from './feature-datasource';
|
|
2
|
+
export class WebSocketDataSource extends FeatureDataSource {
|
|
3
|
+
ws;
|
|
4
|
+
createOlSource() {
|
|
5
|
+
this.createWebSocket();
|
|
6
|
+
this.options.format = this.getSourceFormatFromOptions(this.options);
|
|
7
|
+
return super.createOlSource();
|
|
8
|
+
}
|
|
9
|
+
createWebSocket() {
|
|
10
|
+
this.ws = new WebSocket(this.options.url);
|
|
11
|
+
this.ws.onmessage = this.onMessage.bind(this);
|
|
12
|
+
if (this.options.onclose) {
|
|
13
|
+
this.ws.onclose = this.onClose.bind(this);
|
|
14
|
+
}
|
|
15
|
+
if (this.options.onerror) {
|
|
16
|
+
this.ws.onerror = this.onError.bind(this);
|
|
17
|
+
}
|
|
18
|
+
if (this.options.onopen) {
|
|
19
|
+
this.ws.onopen = this.onOpen.bind(this);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
onMessage(event) {
|
|
23
|
+
const featureAdded = this.options.format.readFeature(event.data);
|
|
24
|
+
switch (this.options.onmessage) {
|
|
25
|
+
case 'update': {
|
|
26
|
+
// ol don't add if same ID
|
|
27
|
+
const featureToRemove = this.ol.getFeatureById(featureAdded.getId());
|
|
28
|
+
if (featureToRemove) {
|
|
29
|
+
this.ol.removeFeature(featureToRemove);
|
|
30
|
+
}
|
|
31
|
+
this.ol.addFeature(featureAdded);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'delete':
|
|
35
|
+
this.ol.clear(true);
|
|
36
|
+
this.ol.addFeature(featureAdded);
|
|
37
|
+
break;
|
|
38
|
+
case 'add':
|
|
39
|
+
default:
|
|
40
|
+
this.ol.addFeature(featureAdded);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
onClose() {
|
|
44
|
+
// thrown message to user
|
|
45
|
+
}
|
|
46
|
+
onError() {
|
|
47
|
+
// thrown message to user
|
|
48
|
+
}
|
|
49
|
+
onOpen() {
|
|
50
|
+
// thrown message to user ?
|
|
51
|
+
}
|
|
52
|
+
onUnwatch() {
|
|
53
|
+
this.ws.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZWJzb2NrZXQtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBQ2pELEVBQUUsQ0FBWTtJQUdYLGNBQWM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNiLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDbEQsS0FBSyxDQUFDLElBQUksQ0FDRSxDQUFDO1FBRWYsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9CLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCwwQkFBMEI7Z0JBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxLQUFLLENBQUM7WUFDWDtnQkFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCx5QkFBeUI7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCx5QkFBeUI7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDSiwyQkFBMkI7SUFDN0IsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi9mZWF0dXJlLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgV2ViU29ja2V0RGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3dlYnNvY2tldC1kYXRhc291cmNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREYXRhU291cmNlIGV4dGVuZHMgRmVhdHVyZURhdGFTb3VyY2Uge1xuICBwdWJsaWMgd3M6IFdlYlNvY2tldDtcbiAgZGVjbGFyZSBwdWJsaWMgb3B0aW9uczogV2ViU29ja2V0RGF0YVNvdXJjZU9wdGlvbnM7XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU9sU291cmNlKCk6IG9sU291cmNlVmVjdG9yIHtcbiAgICB0aGlzLmNyZWF0ZVdlYlNvY2tldCgpO1xuICAgIHRoaXMub3B0aW9ucy5mb3JtYXQgPSB0aGlzLmdldFNvdXJjZUZvcm1hdEZyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7XG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZU9sU291cmNlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdlYlNvY2tldCgpIHtcbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh0aGlzLm9wdGlvbnMudXJsKTtcbiAgICB0aGlzLndzLm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlLmJpbmQodGhpcyk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm9uY2xvc2UpIHtcbiAgICAgIHRoaXMud3Mub25jbG9zZSA9IHRoaXMub25DbG9zZS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMub25lcnJvcikge1xuICAgICAgdGhpcy53cy5vbmVycm9yID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbm9wZW4pIHtcbiAgICAgIHRoaXMud3Mub25vcGVuID0gdGhpcy5vbk9wZW4uYmluZCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBmZWF0dXJlQWRkZWQgPSB0aGlzLm9wdGlvbnMuZm9ybWF0LnJlYWRGZWF0dXJlKFxuICAgICAgZXZlbnQuZGF0YVxuICAgICkgYXMgb2xGZWF0dXJlO1xuXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMub25tZXNzYWdlKSB7XG4gICAgICBjYXNlICd1cGRhdGUnOiB7XG4gICAgICAgIC8vIG9sIGRvbid0IGFkZCBpZiBzYW1lIElEXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUb1JlbW92ZSA9IHRoaXMub2wuZ2V0RmVhdHVyZUJ5SWQoZmVhdHVyZUFkZGVkLmdldElkKCkpO1xuICAgICAgICBpZiAoZmVhdHVyZVRvUmVtb3ZlKSB7XG4gICAgICAgICAgdGhpcy5vbC5yZW1vdmVGZWF0dXJlKGZlYXR1cmVUb1JlbW92ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbC5hZGRGZWF0dXJlKGZlYXR1cmVBZGRlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5vbC5jbGVhcih0cnVlKTtcbiAgICAgICAgdGhpcy5vbC5hZGRGZWF0dXJlKGZlYXR1cmVBZGRlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMub2wuYWRkRmVhdHVyZShmZWF0dXJlQWRkZWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgLy8gdGhyb3duIG1lc3NhZ2UgdG8gdXNlclxuICB9XG5cbiAgb25FcnJvcigpIHtcbiAgICAvLyB0aHJvd24gbWVzc2FnZSB0byB1c2VyXG4gIH1cblxuICBvbk9wZW4oKSB7XG4gICAgLy8gdGhyb3duIG1lc3NhZ2UgdG8gdXNlciA/XG4gIH1cblxuICBwdWJsaWMgb25VbndhdGNoKCkge1xuICAgIHRoaXMud3MuY2xvc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9nY0ZpbHRlcnNPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi9mZWF0dXJlLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXRlNEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyB7XG4gIC8vIHR5cGU/OiAnd2ZzJztcbiAgcGFyYW1zOiBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtczsgLy8gVXNlZCBieSB1c2VyXG4gIHBhcmFtc1dGUz86IFdGU0RhdGFTb3VyY2VPcHRpb25zUGFyYW1zOyAvLyBVc2VkIGJ5IGNvZGVcbiAgdXJsV2ZzPzogc3RyaW5nOyAvLyBVc2VkIGJ5IGNvZGVcbiAgb2djRmlsdGVycz86IE9nY0ZpbHRlcnNPcHRpb25zO1xufVxuXG4vLyBUT0RPOiBBcmUgdGhvc2UgV0ZTIHByb3RvY29sIHBhcmFtcyBvciBzb21ldGhpbmcgZWxzZT8gVGhpcyBpcyBub3QgY2xlYXJcbmV4cG9ydCBpbnRlcmZhY2UgV0ZTRGF0YVNvdXJjZU9wdGlvbnNQYXJhbXMge1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBmZWF0dXJlVHlwZXM6IHN0cmluZztcbiAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZztcbiAgbWF4RmVhdHVyZXM/OiBudW1iZXI7XG4gIG91dHB1dEZvcm1hdDogc3RyaW5nO1xuICBvdXRwdXRGb3JtYXREb3dubG9hZD86IHN0cmluZztcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgeG1sRmlsdGVyPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as OlLoadingStrategy from 'ol/loadingstrategy';
|
|
2
|
+
import * as OlProj from 'ol/proj';
|
|
3
|
+
import olProjection from 'ol/proj/Projection';
|
|
4
|
+
import olSourceVector from 'ol/source/Vector';
|
|
5
|
+
import { catchError, map } from 'rxjs';
|
|
6
|
+
import { OgcFilterWriter } from '../../../filter/shared/ogc-filter';
|
|
7
|
+
import { DataSource } from './datasource';
|
|
8
|
+
import { buildUrl, checkWfsParams, defaultFieldNameGeometry, defaultMaxFeatures, getFormatFromOptions } from './wms-wfs.utils';
|
|
9
|
+
export class WFSDataSource extends DataSource {
|
|
10
|
+
options;
|
|
11
|
+
wfsService;
|
|
12
|
+
authInterceptor;
|
|
13
|
+
set ogcFilters(value) {
|
|
14
|
+
this.options.ogcFilters = value;
|
|
15
|
+
}
|
|
16
|
+
get ogcFilters() {
|
|
17
|
+
return this.options.ogcFilters;
|
|
18
|
+
}
|
|
19
|
+
get saveableOptions() {
|
|
20
|
+
const baseOptions = super.saveableOptions;
|
|
21
|
+
return {
|
|
22
|
+
...baseOptions,
|
|
23
|
+
params: this.options.params
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
constructor(options, wfsService, authInterceptor) {
|
|
27
|
+
super(checkWfsParams(options, 'wfs'));
|
|
28
|
+
this.options = options;
|
|
29
|
+
this.wfsService = wfsService;
|
|
30
|
+
this.authInterceptor = authInterceptor;
|
|
31
|
+
const ogcFilters = this.options
|
|
32
|
+
.ogcFilters;
|
|
33
|
+
const fieldNameGeometry = this.options.paramsWFS.fieldNameGeometry || defaultFieldNameGeometry;
|
|
34
|
+
const ogcFilterWriter = new OgcFilterWriter();
|
|
35
|
+
this.options.ogcFilters =
|
|
36
|
+
ogcFilterWriter.defineOgcFiltersDefaultOptions(ogcFilters, fieldNameGeometry);
|
|
37
|
+
if (this.options.ogcFilters.enabled &&
|
|
38
|
+
this.options.ogcFilters.editable &&
|
|
39
|
+
(options.sourceFields || []).filter((sf) => !sf.values).length > 0) {
|
|
40
|
+
this.wfsService.getSourceFieldsFromWFS(this.options);
|
|
41
|
+
}
|
|
42
|
+
if (ogcFilters?.pushButtons) {
|
|
43
|
+
ogcFilters.pushButtons.selectorType = 'pushButton';
|
|
44
|
+
}
|
|
45
|
+
if (ogcFilters?.checkboxes) {
|
|
46
|
+
ogcFilters.checkboxes.selectorType = 'checkbox';
|
|
47
|
+
}
|
|
48
|
+
if (ogcFilters?.radioButtons) {
|
|
49
|
+
ogcFilters.radioButtons.selectorType = 'radioButton';
|
|
50
|
+
}
|
|
51
|
+
if (ogcFilters?.select) {
|
|
52
|
+
ogcFilters.select.selectorType = 'select';
|
|
53
|
+
}
|
|
54
|
+
if (ogcFilters?.autocomplete) {
|
|
55
|
+
ogcFilters.autocomplete.selectorType = 'autocomplete';
|
|
56
|
+
}
|
|
57
|
+
this.setOgcFilters(this.options.ogcFilters, true);
|
|
58
|
+
}
|
|
59
|
+
createOlSource() {
|
|
60
|
+
const vectorSource = new olSourceVector({
|
|
61
|
+
format: getFormatFromOptions(this.options),
|
|
62
|
+
strategy: OlLoadingStrategy.bbox
|
|
63
|
+
});
|
|
64
|
+
return vectorSource;
|
|
65
|
+
}
|
|
66
|
+
setOgcFilters(ogcFilters, triggerEvent = false) {
|
|
67
|
+
this.ogcFilters = ogcFilters;
|
|
68
|
+
if (triggerEvent) {
|
|
69
|
+
this.ol.notify('ogcFilters', this.ogcFilters);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
onUnwatch() {
|
|
73
|
+
// empty
|
|
74
|
+
}
|
|
75
|
+
fetchFeatures({ extent, projection, httpClient }) {
|
|
76
|
+
const paramsWFS = this.options.paramsWFS;
|
|
77
|
+
const wfsProj = paramsWFS.srsName
|
|
78
|
+
? new olProjection({ code: paramsWFS.srsName })
|
|
79
|
+
: projection;
|
|
80
|
+
const currentExtent = extent
|
|
81
|
+
? OlProj.transformExtent(extent, projection, wfsProj)
|
|
82
|
+
: undefined;
|
|
83
|
+
const ogcFilters = this.ogcFilters;
|
|
84
|
+
paramsWFS.srsName = paramsWFS.srsName || projection.getCode();
|
|
85
|
+
let url = buildUrl(this.options, currentExtent, wfsProj, ogcFilters);
|
|
86
|
+
// Exportation want to fetch without extent/bbox restrictions
|
|
87
|
+
if (!extent && url.includes('bbox')) {
|
|
88
|
+
const [baseUrl, params] = url.split('?');
|
|
89
|
+
const paramSegments = params.split('&');
|
|
90
|
+
const paramsWithoutBbox = paramSegments.filter((segment) => !segment.includes('bbox'));
|
|
91
|
+
url = `${baseUrl}?${paramsWithoutBbox.join('&')}`;
|
|
92
|
+
}
|
|
93
|
+
let startIndex = 0;
|
|
94
|
+
if (paramsWFS.version === '2.0.0' &&
|
|
95
|
+
paramsWFS.maxFeatures > defaultMaxFeatures) {
|
|
96
|
+
const nbOfFeature = 1000;
|
|
97
|
+
while (startIndex < paramsWFS.maxFeatures) {
|
|
98
|
+
let alteredUrl = url.replace('count=' + paramsWFS.maxFeatures, 'count=' + nbOfFeature);
|
|
99
|
+
alteredUrl = alteredUrl.replace('startIndex=0', '0');
|
|
100
|
+
alteredUrl += '&startIndex=' + startIndex;
|
|
101
|
+
alteredUrl.replace(/&&/g, '&');
|
|
102
|
+
return this._fetchFeatures(wfsProj, alteredUrl, {
|
|
103
|
+
extent: currentExtent,
|
|
104
|
+
projection,
|
|
105
|
+
httpClient
|
|
106
|
+
}).pipe(map((res) => {
|
|
107
|
+
startIndex += nbOfFeature;
|
|
108
|
+
return res;
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return this._fetchFeatures(wfsProj, url, {
|
|
114
|
+
extent: currentExtent,
|
|
115
|
+
projection,
|
|
116
|
+
httpClient
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_fetchFeatures(featureProjection, url, { extent, projection, httpClient }) {
|
|
121
|
+
return httpClient.get(url, { responseType: 'text' }).pipe(map((response) => {
|
|
122
|
+
return this._parseXmlFeatures(response, projection, featureProjection);
|
|
123
|
+
}), catchError((e) => {
|
|
124
|
+
if (extent)
|
|
125
|
+
this.ol.removeLoadedExtent(extent);
|
|
126
|
+
throw e;
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
_parseXmlFeatures(xml, dataProjection, featureProjection) {
|
|
130
|
+
const features = this.ol.getFormat().readFeatures(xml, {
|
|
131
|
+
dataProjection,
|
|
132
|
+
featureProjection
|
|
133
|
+
});
|
|
134
|
+
return features;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZnMtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssaUJBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsT0FBTyxFQUNMLFFBQVEsRUFDUixjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDckIsTUFBTSxpQkFBaUIsQ0FBQztBQVF6QixNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFtQmxDO0lBQ0c7SUFDRjtJQWxCVixJQUFJLFVBQVUsQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsT0FBMEMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFRLElBQUksQ0FBQyxPQUEwQyxDQUFDLFVBQVUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDMUMsT0FBTztZQUNMLEdBQUcsV0FBVztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxZ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LElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLEdBQVcsRUFDWCxjQUE0QixFQUM1QixpQkFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3JELGNBQWM7WUFDZCxpQkFBaUI7U0FDbEIsQ0FBNEIsQ0FBQztRQUM5QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgKiBhcyBPbExvYWRpbmdTdHJhdGVneSBmcm9tICdvbC9sb2FkaW5nc3RyYXRlZ3knO1xuaW1wb3J0ICogYXMgT2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuaW1wb3J0IG9sU291cmNlVmVjdG9yIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT2djRmlsdGVyV3JpdGVyIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyJztcbmltcG9ydCB7XG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgT2djRmlsdGVyc09wdGlvbnNcbn0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi9kYXRhc291cmNlJztcbmltcG9ydCB7IFdGU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi93ZnMtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV0ZTU2VydmljZSB9IGZyb20gJy4vd2ZzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgYnVpbGRVcmwsXG4gIGNoZWNrV2ZzUGFyYW1zLFxuICBkZWZhdWx0RmllbGROYW1lR2VvbWV0cnksXG4gIGRlZmF1bHRNYXhGZWF0dXJlcyxcbiAgZ2V0Rm9ybWF0RnJvbU9wdGlvbnNcbn0gZnJvbSAnLi93bXMtd2ZzLnV0aWxzJztcblxuaW50ZXJmYWNlIEZldGNoRmVhdHVyZU9wdGlvbnMge1xuICBleHRlbnQ6IEV4dGVudDtcbiAgcHJvamVjdGlvbjogb2xQcm9qZWN0aW9uO1xuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xufVxuXG5leHBvcnQgY2xhc3MgV0ZTRGF0YVNvdXJjZSBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBkZWNsYXJlIHB1YmxpYyBvbDogb2xTb3VyY2VWZWN0b3I7XG5cbiAgc2V0IG9nY0ZpbHRlcnModmFsdWU6IE9nY0ZpbHRlcnNPcHRpb25zKSB7XG4gICAgKHRoaXMub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnMgPSB2YWx1ZTtcbiAgfVxuICBnZXQgb2djRmlsdGVycygpOiBPZ2NGaWx0ZXJzT3B0aW9ucyB7XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzO1xuICB9XG5cbiAgZ2V0IHNhdmVhYmxlT3B0aW9ucygpOiBQYXJ0aWFsPFdGU0RhdGFTb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgYmFzZU9wdGlvbnMgPSBzdXBlci5zYXZlYWJsZU9wdGlvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgcGFyYW1zOiB0aGlzLm9wdGlvbnMucGFyYW1zXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyxcbiAgICBwcm90ZWN0ZWQgd2ZzU2VydmljZTogV0ZTU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhJbnRlcmNlcHRvcj86IEF1dGhJbnRlcmNlcHRvclxuICApIHtcbiAgICBzdXBlcihjaGVja1dmc1BhcmFtcyhvcHRpb25zLCAnd2ZzJykpO1xuXG4gICAgY29uc3Qgb2djRmlsdGVycyA9ICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKVxuICAgICAgLm9nY0ZpbHRlcnM7XG4gICAgY29uc3QgZmllbGROYW1lR2VvbWV0cnkgPVxuICAgICAgdGhpcy5vcHRpb25zLnBhcmFtc1dGUy5maWVsZE5hbWVHZW9tZXRyeSB8fCBkZWZhdWx0RmllbGROYW1lR2VvbWV0cnk7XG4gICAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzID1cbiAgICAgIG9nY0ZpbHRlcldyaXRlci5kZWZpbmVPZ2NGaWx0ZXJzRGVmYXVsdE9wdGlvbnMoXG4gICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICApO1xuICAgIGlmIChcbiAgICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzLmVuYWJsZWQgJiZcbiAgICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzLmVkaXRhYmxlICYmXG4gICAgICAob3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgW10pLmZpbHRlcigoc2YpID0+ICFzZi52YWx1ZXMpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMud2ZzU2VydmljZS5nZXRTb3VyY2VGaWVsZHNGcm9tV0ZTKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKG9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zLnNlbGVjdG9yVHlwZSA9ICdwdXNoQnV0dG9uJztcbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnM/LmNoZWNrYm94ZXMpIHtcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcy5zZWxlY3RvclR5cGUgPSAnY2hlY2tib3gnO1xuICAgIH1cbiAgICBpZiAob2djRmlsdGVycz8ucmFkaW9CdXR0b25zKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucy5zZWxlY3RvclR5cGUgPSAncmFkaW9CdXR0b24nO1xuICAgIH1cbiAgICBpZiAob2djRmlsdGVycz8uc2VsZWN0KSB7XG4gICAgICBvZ2NGaWx0ZXJzLnNlbGVjdC5zZWxlY3RvclR5cGUgPSAnc2VsZWN0JztcbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSkge1xuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUuc2VsZWN0b3JUeXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRPZ2NGaWx0ZXJzKFxuICAgICAgKHRoaXMub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnMsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVPbFNvdXJjZSgpOiBvbFNvdXJjZVZlY3RvciB7XG4gICAgY29uc3QgdmVjdG9yU291cmNlID0gbmV3IG9sU291cmNlVmVjdG9yKHtcbiAgICAgIGZvcm1hdDogZ2V0Rm9ybWF0RnJvbU9wdGlvbnModGhpcy5vcHRpb25zKSxcbiAgICAgIHN0cmF0ZWd5OiBPbExvYWRpbmdTdHJhdGVneS5iYm94XG4gICAgfSk7XG4gICAgcmV0dXJuIHZlY3RvclNvdXJjZTtcbiAgfVxuXG4gIHNldE9nY0ZpbHRlcnMob2djRmlsdGVyczogT2djRmlsdGVyc09wdGlvbnMsIHRyaWdnZXJFdmVudCA9IGZhbHNlKSB7XG4gICAgdGhpcy5vZ2NGaWx0ZXJzID0gb2djRmlsdGVycztcbiAgICBpZiAodHJpZ2dlckV2ZW50KSB7XG4gICAgICB0aGlzLm9sLm5vdGlmeSgnb2djRmlsdGVycycsIHRoaXMub2djRmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVW53YXRjaCgpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZmV0Y2hGZWF0dXJlcyh7XG4gICAgZXh0ZW50LFxuICAgIHByb2plY3Rpb24sXG4gICAgaHR0cENsaWVudFxuICB9OiBGZXRjaEZlYXR1cmVPcHRpb25zKTogT2JzZXJ2YWJsZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXT4ge1xuICAgIGNvbnN0IHBhcmFtc1dGUyA9IHRoaXMub3B0aW9ucy5wYXJhbXNXRlM7XG4gICAgY29uc3Qgd2ZzUHJvaiA9IHBhcmFtc1dGUy5zcnNOYW1lXG4gICAgICA/IG5ldyBvbFByb2plY3Rpb24oeyBjb2RlOiBwYXJhbXNXRlMuc3JzTmFtZSB9KVxuICAgICAgOiBwcm9qZWN0aW9uO1xuXG4gICAgY29uc3QgY3VycmVudEV4dGVudCA9IGV4dGVudFxuICAgICAgPyBPbFByb2oudHJhbnNmb3JtRXh0ZW50KGV4dGVudCwgcHJvamVjdGlvbiwgd2ZzUHJvailcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9nY0ZpbHRlcnMgPSB0aGlzLm9nY0ZpbHRlcnM7XG5cbiAgICBwYXJhbXNXRlMuc3JzTmFtZSA9IHBhcmFtc1dGUy5zcnNOYW1lIHx8IHByb2plY3Rpb24uZ2V0Q29kZSgpO1xuICAgIGxldCB1cmwgPSBidWlsZFVybCh0aGlzLm9wdGlvbnMsIGN1cnJlbnRFeHRlbnQsIHdmc1Byb2osIG9nY0ZpbHRlcnMpO1xuXG4gICAgLy8gRXhwb3J0YXRpb24gd2FudCB0byBmZXRjaCB3aXRob3V0IGV4dGVudC9iYm94IHJlc3RyaWN0aW9uc1xuICAgIGlmICghZXh0ZW50ICYmIHVybC5pbmNsdWRlcygnYmJveCcpKSB7XG4gICAgICBjb25zdCBbYmFzZVVybCwgcGFyYW1zXSA9IHVybC5zcGxpdCgnPycpO1xuICAgICAgY29uc3QgcGFyYW1TZWdtZW50cyA9IHBhcmFtcy5zcGxpdCgnJicpO1xuICAgICAgY29uc3QgcGFyYW1zV2l0aG91dEJib3ggPSBwYXJhbVNlZ21lbnRzLmZpbHRlcihcbiAgICAgICAgKHNlZ21lbnQpID0+ICFzZWdtZW50LmluY2x1ZGVzKCdiYm94JylcbiAgICAgICk7XG4gICAgICB1cmwgPSBgJHtiYXNlVXJsfT8ke3BhcmFtc1dpdGhvdXRCYm94LmpvaW4oJyYnKX1gO1xuICAgIH1cblxuICAgIGxldCBzdGFydEluZGV4ID0gMDtcbiAgICBpZiAoXG4gICAgICBwYXJhbXNXRlMudmVyc2lvbiA9PT0gJzIuMC4wJyAmJlxuICAgICAgcGFyYW1zV0ZTLm1heEZlYXR1cmVzID4gZGVmYXVsdE1heEZlYXR1cmVzXG4gICAgKSB7XG4gICAgICBjb25zdCBuYk9mRmVhdHVyZSA9IDEwMDA7XG4gICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IHBhcmFtc1dGUy5tYXhGZWF0dXJlcykge1xuICAgICAgICBsZXQgYWx0ZXJlZFVybCA9IHVybC5yZXBsYWNlKFxuICAgICAgICAgICdjb3VudD0nICsgcGFyYW1zV0ZTLm1heEZlYXR1cmVzLFxuICAgICAgICAgICdjb3VudD0nICsgbmJPZkZlYXR1cmVcbiAgICAgICAgKTtcbiAgICAgICAgYWx0ZXJlZFVybCA9IGFsdGVyZWRVcmwucmVwbGFjZSgnc3RhcnRJbmRleD0wJywgJzAnKTtcbiAgICAgICAgYWx0ZXJlZFVybCArPSAnJnN0YXJ0SW5kZXg9JyArIHN0YXJ0SW5kZXg7XG4gICAgICAgIGFsdGVyZWRVcmwucmVwbGFjZSgvJiYvZywgJyYnKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGZWF0dXJlcyh3ZnNQcm9qLCBhbHRlcmVkVXJsLCB7XG4gICAgICAgICAgZXh0ZW50OiBjdXJyZW50RXh0ZW50LFxuICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgaHR0cENsaWVudFxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgICBzdGFydEluZGV4ICs9IG5iT2ZGZWF0dXJlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGZWF0dXJlcyh3ZnNQcm9qLCB1cmwsIHtcbiAgICAgICAgZXh0ZW50OiBjdXJyZW50RXh0ZW50LFxuICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICBodHRwQ2xpZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9mZXRjaEZlYXR1cmVzKFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBvbFByb2plY3Rpb24sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBleHRlbnQsIHByb2plY3Rpb24sIGh0dHBDbGllbnQgfTogRmV0Y2hGZWF0dXJlT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdPiB7XG4gICAgcmV0dXJuIGh0dHBDbGllbnQuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VYbWxGZWF0dXJlcyhyZXNwb25zZSwgcHJvamVjdGlvbiwgZmVhdHVyZVByb2plY3Rpb24pO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgIGlmIChleHRlbnQpIHRoaXMub2wucmVtb3ZlTG9hZGVkRXh0ZW50KGV4dGVudCk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVhtbEZlYXR1cmVzKFxuICAgIHhtbDogc3RyaW5nLFxuICAgIGRhdGFQcm9qZWN0aW9uOiBvbFByb2plY3Rpb24sXG4gICAgZmVhdHVyZVByb2plY3Rpb246IG9sUHJvamVjdGlvblxuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLm9sLmdldEZvcm1hdCgpLnJlYWRGZWF0dXJlcyh4bWwsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgICAgZmVhdHVyZVByb2plY3Rpb25cbiAgICB9KSBhcyBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXTtcbiAgICByZXR1cm4gZmVhdHVyZXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Observable, combineLatest, of } from 'rxjs';
|
|
4
|
+
import { concatMap } from 'rxjs/operators';
|
|
5
|
+
import { DataService } from './data.service';
|
|
6
|
+
import { defaultEpsg, defaultMaxFeatures, formatWFSQueryString, getFormatFromOptions, gmlRegex } from './wms-wfs.utils';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
export class WFSService extends DataService {
|
|
10
|
+
http;
|
|
11
|
+
constructor(http) {
|
|
12
|
+
super();
|
|
13
|
+
this.http = http;
|
|
14
|
+
}
|
|
15
|
+
getData() {
|
|
16
|
+
console.log('This is defining a data service.');
|
|
17
|
+
return 'This is defining a data service.';
|
|
18
|
+
}
|
|
19
|
+
getSourceFieldsFromWFS(dataSourceOptions) {
|
|
20
|
+
if (!dataSourceOptions.sourceFields ||
|
|
21
|
+
dataSourceOptions.sourceFields.length === 0) {
|
|
22
|
+
dataSourceOptions.sourceFields = [];
|
|
23
|
+
this.defineFieldAndValuefromWFS(dataSourceOptions).subscribe((getfeatureSourceField) => {
|
|
24
|
+
dataSourceOptions.sourceFields = getfeatureSourceField;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.defineFieldAndValuefromWFS(dataSourceOptions).subscribe((getfeatureSourceField) => {
|
|
29
|
+
dataSourceOptions.sourceFields.forEach((sourcefield) => {
|
|
30
|
+
if (sourcefield.alias === undefined) {
|
|
31
|
+
sourcefield.alias = sourcefield.name; // to allow only a list of sourcefield with names
|
|
32
|
+
}
|
|
33
|
+
if (sourcefield.values === undefined ||
|
|
34
|
+
sourcefield.values.length === 0) {
|
|
35
|
+
sourcefield.values = getfeatureSourceField.find((sf) => sf.name === sourcefield.name).values;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
wfsGetFeature(dataSourceOptions, nb = defaultMaxFeatures, epsgCode = defaultEpsg, propertyName, startIndex = 0, forceDefaultOutputFormat = false) {
|
|
42
|
+
const queryStringValues = formatWFSQueryString(dataSourceOptions, nb, epsgCode, propertyName, startIndex, forceDefaultOutputFormat);
|
|
43
|
+
const baseUrl = queryStringValues.find((f) => f.name === 'getfeature').value;
|
|
44
|
+
const outputFormat = dataSourceOptions.paramsWFS.outputFormat;
|
|
45
|
+
if (forceDefaultOutputFormat ||
|
|
46
|
+
gmlRegex.test(outputFormat) ||
|
|
47
|
+
!outputFormat) {
|
|
48
|
+
return this.http.get(baseUrl, { responseType: 'text' });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return this.http.get(baseUrl);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
defineFieldAndValuefromWFS(dataSourceOptions) {
|
|
55
|
+
return new Observable((d) => {
|
|
56
|
+
const sourceFields = [];
|
|
57
|
+
let fieldList;
|
|
58
|
+
let fieldListWoGeom;
|
|
59
|
+
let fieldListWoGeomStr;
|
|
60
|
+
let effectiveOlFormats;
|
|
61
|
+
const olFormats = getFormatFromOptions(dataSourceOptions);
|
|
62
|
+
const gmlDataSourceOptions = JSON.parse(JSON.stringify(dataSourceOptions));
|
|
63
|
+
delete gmlDataSourceOptions.paramsWFS.outputFormat;
|
|
64
|
+
delete gmlDataSourceOptions.formatOptions;
|
|
65
|
+
effectiveOlFormats = getFormatFromOptions(gmlDataSourceOptions);
|
|
66
|
+
let sourceFieldsToRetrieveValues = dataSourceOptions.sourceFields
|
|
67
|
+
?.filter((f) => !f.values)
|
|
68
|
+
.map((f) => f.name);
|
|
69
|
+
// Validate if the service manage no outputformat (wfs 1.0.0 and GML is the default return)
|
|
70
|
+
this.wfsGetFeature(dataSourceOptions, 1, undefined, undefined, 0, true)
|
|
71
|
+
.pipe(concatMap((res) => String(res).toLowerCase().includes('exception')
|
|
72
|
+
? of(false)
|
|
73
|
+
: of(true)), concatMap((allowGml) => {
|
|
74
|
+
// If the service return GML (return no exception)
|
|
75
|
+
return this.wfsGetFeature(dataSourceOptions, 1).pipe(concatMap((firstFeature) => {
|
|
76
|
+
const features = olFormats.readFeatures(firstFeature);
|
|
77
|
+
fieldList = features[0].getKeys();
|
|
78
|
+
if (dataSourceOptions.sourceFields ||
|
|
79
|
+
dataSourceOptions.sourceFields.length === 0) {
|
|
80
|
+
sourceFieldsToRetrieveValues = fieldList;
|
|
81
|
+
}
|
|
82
|
+
fieldListWoGeom = fieldList.filter((field) => sourceFieldsToRetrieveValues.includes(field) &&
|
|
83
|
+
field !== features[0].getGeometryName() &&
|
|
84
|
+
!field.match(/boundedby/gi));
|
|
85
|
+
fieldListWoGeomStr = fieldListWoGeom.join(',');
|
|
86
|
+
const processingArray = [];
|
|
87
|
+
let startIndex = 0;
|
|
88
|
+
// If the service do not allow gml return, dice the call in multiple
|
|
89
|
+
// calls by increment of chunkSize with the original outputFormat
|
|
90
|
+
if (!allowGml &&
|
|
91
|
+
dataSourceOptions.paramsWFS.version === '2.0.0' &&
|
|
92
|
+
dataSourceOptions.paramsWFS.maxFeatures > defaultMaxFeatures) {
|
|
93
|
+
const chunkSize = 1000;
|
|
94
|
+
while (startIndex < dataSourceOptions.paramsWFS.maxFeatures) {
|
|
95
|
+
processingArray.push(this.wfsGetFeature(dataSourceOptions, chunkSize, dataSourceOptions.paramsWFS.srsName, fieldListWoGeomStr, startIndex));
|
|
96
|
+
startIndex += chunkSize;
|
|
97
|
+
}
|
|
98
|
+
effectiveOlFormats = olFormats;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
processingArray.push(this.wfsGetFeature(dataSourceOptions, dataSourceOptions.paramsWFS.maxFeatures ||
|
|
102
|
+
defaultMaxFeatures, dataSourceOptions.paramsWFS.srsName, fieldListWoGeomStr, 0, true));
|
|
103
|
+
}
|
|
104
|
+
return combineLatest(processingArray);
|
|
105
|
+
}));
|
|
106
|
+
}))
|
|
107
|
+
.subscribe((results) => {
|
|
108
|
+
let mfeatures = [];
|
|
109
|
+
results.map((result) => {
|
|
110
|
+
const loopFeatures = effectiveOlFormats.readFeatures(result);
|
|
111
|
+
mfeatures = mfeatures.concat(loopFeatures);
|
|
112
|
+
});
|
|
113
|
+
this.built_properties_value(mfeatures).forEach((element) => {
|
|
114
|
+
sourceFields.push(element);
|
|
115
|
+
});
|
|
116
|
+
d.next(sourceFields);
|
|
117
|
+
d.complete();
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
built_properties_value(features) {
|
|
122
|
+
if (features.length === 0) {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
const kv = Object.assign({}, features[0].getProperties());
|
|
126
|
+
delete kv[features[0].getGeometryName()];
|
|
127
|
+
delete kv.boundedBy;
|
|
128
|
+
const sourceFields = [];
|
|
129
|
+
for (const property in kv) {
|
|
130
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
131
|
+
if (kv.hasOwnProperty(property)) {
|
|
132
|
+
const fieldType = typeof features[0].get(property) === 'object'
|
|
133
|
+
? undefined
|
|
134
|
+
: typeof features[0].get(property);
|
|
135
|
+
sourceFields.push({
|
|
136
|
+
name: property,
|
|
137
|
+
alias: property,
|
|
138
|
+
type: fieldType,
|
|
139
|
+
values: [kv[property]]
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
features.every((element) => {
|
|
144
|
+
const featureProperties = element.getProperties();
|
|
145
|
+
for (const key in featureProperties) {
|
|
146
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
147
|
+
if (featureProperties.hasOwnProperty(key) && key in kv) {
|
|
148
|
+
sourceFields
|
|
149
|
+
.filter((f) => f.name === key)
|
|
150
|
+
.forEach((v) => {
|
|
151
|
+
if (v.values.indexOf(featureProperties[key]) === -1) {
|
|
152
|
+
v.values.push(featureProperties[key]);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
});
|
|
159
|
+
return sourceFields;
|
|
160
|
+
}
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
162
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, providedIn: 'root' });
|
|
163
|
+
}
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, decorators: [{
|
|
165
|
+
type: Injectable,
|
|
166
|
+
args: [{
|
|
167
|
+
providedIn: 'root'
|
|
168
|
+
}]
|
|
169
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDVCxNQUFNLGlCQUFpQixDQUFDOzs7QUFLekIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBQ3JCO0lBQXBCLFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUVwQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNoRCxPQUFPLGtDQUFrQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsaUJBQThEO1FBRTlELElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO1lBQy9CLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUMzQyxDQUFDO1lBQ0QsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENB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QUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ3hDLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzt3R0EzTlUsVUFBVTs0R0FBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBXRlNEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4vd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi93bXMtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEVwc2csXG4gIGRlZmF1bHRNYXhGZWF0dXJlcyxcbiAgZm9ybWF0V0ZTUXVlcnlTdHJpbmcsXG4gIGdldEZvcm1hdEZyb21PcHRpb25zLFxuICBnbWxSZWdleFxufSBmcm9tICcuL3dtcy13ZnMudXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXRlNTZXJ2aWNlIGV4dGVuZHMgRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0RGF0YSgpIHtcbiAgICBjb25zb2xlLmxvZygnVGhpcyBpcyBkZWZpbmluZyBhIGRhdGEgc2VydmljZS4nKTtcbiAgICByZXR1cm4gJ1RoaXMgaXMgZGVmaW5pbmcgYSBkYXRhIHNlcnZpY2UuJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRTb3VyY2VGaWVsZHNGcm9tV0ZTKFxuICAgIGRhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zXG4gICkge1xuICAgIGlmIChcbiAgICAgICFkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMgfHxcbiAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcyA9IFtdO1xuICAgICAgdGhpcy5kZWZpbmVGaWVsZEFuZFZhbHVlZnJvbVdGUyhkYXRhU291cmNlT3B0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgICAoZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkKSA9PiB7XG4gICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMuc291cmNlRmllbGRzID0gZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmluZUZpZWxkQW5kVmFsdWVmcm9tV0ZTKGRhdGFTb3VyY2VPcHRpb25zKS5zdWJzY3JpYmUoXG4gICAgICAgIChnZXRmZWF0dXJlU291cmNlRmllbGQpID0+IHtcbiAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMuZm9yRWFjaCgoc291cmNlZmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3VyY2VmaWVsZC5hbGlhcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHNvdXJjZWZpZWxkLmFsaWFzID0gc291cmNlZmllbGQubmFtZTsgLy8gdG8gYWxsb3cgb25seSBhIGxpc3Qgb2Ygc291cmNlZmllbGQgd2l0aCBuYW1lc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzb3VyY2VmaWVsZC52YWx1ZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICBzb3VyY2VmaWVsZC52YWx1ZXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc291cmNlZmllbGQudmFsdWVzID0gZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgKHNmKSA9PiBzZi5uYW1lID09PSBzb3VyY2VmaWVsZC5uYW1lXG4gICAgICAgICAgICAgICkudmFsdWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2ZzR2V0RmVhdHVyZShcbiAgICBkYXRhU291cmNlT3B0aW9uczogV0ZTRGF0YVNvdXJjZU9wdGlvbnMgfCBXTVNEYXRhU291cmNlT3B0aW9ucyxcbiAgICBuYjogbnVtYmVyID0gZGVmYXVsdE1heEZlYXR1cmVzLFxuICAgIGVwc2dDb2RlOiBzdHJpbmcgPSBkZWZhdWx0RXBzZyxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgc3RhcnRJbmRleCA9IDAsXG4gICAgZm9yY2VEZWZhdWx0T3V0cHV0Rm9ybWF0ID0gZmFsc2VcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZ1ZhbHVlcyA9IGZvcm1hdFdGU1F1ZXJ5U3RyaW5nKFxuICAgICAgZGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICBuYixcbiAgICAgIGVwc2dDb2RlLFxuICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgc3RhcnRJbmRleCxcbiAgICAgIGZvcmNlRGVmYXVsdE91dHB1dEZvcm1hdFxuICAgICk7XG4gICAgY29uc3QgYmFzZVVybCA9IHF1ZXJ5U3RyaW5nVmFsdWVzLmZpbmQoXG4gICAgICAoZikgPT4gZi5uYW1lID09PSAnZ2V0ZmVhdHVyZSdcbiAgICApLnZhbHVlO1xuICAgIGNvbnN0IG91dHB1dEZvcm1hdCA9IGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5vdXRwdXRGb3JtYXQ7XG4gICAgaWYgKFxuICAgICAgZm9yY2VEZWZhdWx0T3V0cHV0Rm9ybWF0IHx8XG4gICAgICBnbWxSZWdleC50ZXN0KG91dHB1dEZvcm1hdCkgfHxcbiAgICAgICFvdXRwdXRGb3JtYXRcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwpO1xuICAgIH1cbiAgfVxuXG4gIGRlZmluZUZpZWxkQW5kVmFsdWVmcm9tV0ZTKFxuICAgIGRhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VGaWVsZHMgPSBbXTtcbiAgICAgIGxldCBmaWVsZExpc3Q7XG4gICAgICBsZXQgZmllbGRMaXN0V29HZW9tO1xuICAgICAgbGV0IGZpZWxkTGlzdFdvR2VvbVN0cjtcbiAgICAgIGxldCBlZmZlY3RpdmVPbEZvcm1hdHM7XG5cbiAgICAgIGNvbnN0IG9sRm9ybWF0cyA9IGdldEZvcm1hdEZyb21PcHRpb25zKGRhdGFTb3VyY2VPcHRpb25zKTtcbiAgICAgIGNvbnN0IGdtbERhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zID1cbiAgICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhU291cmNlT3B0aW9ucykpO1xuICAgICAgZGVsZXRlIGdtbERhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5vdXRwdXRGb3JtYXQ7XG4gICAgICBkZWxldGUgKGdtbERhdGFTb3VyY2VPcHRpb25zIGFzIFdGU0RhdGFTb3VyY2VPcHRpb25zKS5mb3JtYXRPcHRpb25zO1xuXG4gICAgICBlZmZlY3RpdmVPbEZvcm1hdHMgPSBnZXRGb3JtYXRGcm9tT3B0aW9ucyhnbWxEYXRhU291cmNlT3B0aW9ucyk7XG4gICAgICBsZXQgc291cmNlRmllbGRzVG9SZXRyaWV2ZVZhbHVlcyA9IGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkc1xuICAgICAgICA/LmZpbHRlcigoZikgPT4gIWYudmFsdWVzKVxuICAgICAgICAubWFwKChmKSA9PiBmLm5hbWUpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBpZiB0aGUgc2VydmljZSBtYW5hZ2Ugbm8gb3V0cHV0Zm9ybWF0ICh3ZnMgMS4wLjAgYW5kIEdNTCBpcyB0aGUgZGVmYXVsdCByZXR1cm4pXG4gICAgICB0aGlzLndmc0dldEZlYXR1cmUoZGF0YVNvdXJjZU9wdGlvbnMsIDEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAwLCB0cnVlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoKHJlcykgPT5cbiAgICAgICAgICAgIFN0cmluZyhyZXMpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2V4Y2VwdGlvbicpXG4gICAgICAgICAgICAgID8gb2YoZmFsc2UpXG4gICAgICAgICAgICAgIDogb2YodHJ1ZSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGNvbmNhdE1hcCgoYWxsb3dHbWwpID0+IHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBzZXJ2aWNlIHJldHVybiBHTUwgKHJldHVybiBubyBleGNlcHRpb24pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ZnNHZXRGZWF0dXJlKGRhdGFTb3VyY2VPcHRpb25zLCAxKS5waXBlKFxuICAgICAgICAgICAgICBjb25jYXRNYXAoKGZpcnN0RmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gb2xGb3JtYXRzLnJlYWRGZWF0dXJlcyhmaXJzdEZlYXR1cmUpO1xuICAgICAgICAgICAgICAgIGZpZWxkTGlzdCA9IGZlYXR1cmVzWzBdLmdldEtleXMoKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMgfHxcbiAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkc1RvUmV0cmlldmVWYWx1ZXMgPSBmaWVsZExpc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpZWxkTGlzdFdvR2VvbSA9IGZpZWxkTGlzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAoZmllbGQpID0+XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkc1RvUmV0cmlldmVWYWx1ZXMuaW5jbHVkZXMoZmllbGQpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkICE9PSBmZWF0dXJlc1swXS5nZXRHZW9tZXRyeU5hbWUoKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZmllbGQubWF0Y2goL2JvdW5kZWRieS9naSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZpZWxkTGlzdFdvR2VvbVN0ciA9IGZpZWxkTGlzdFdvR2VvbS5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2luZ0FycmF5ID0gW107XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzZXJ2aWNlIGRvIG5vdCBhbGxvdyBnbWwgcmV0dXJuLCBkaWNlIHRoZSBjYWxsIGluIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgLy8gY2FsbHMgYnkgaW5jcmVtZW50IG9mIGNodW5rU2l6ZSB3aXRoIHRoZSBvcmlnaW5hbCBvdXRwdXRGb3JtYXRcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhYWxsb3dHbWwgJiZcbiAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy52ZXJzaW9uID09PSAnMi4wLjAnICYmXG4gICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5wYXJhbXNXRlMubWF4RmVhdHVyZXMgPiBkZWZhdWx0TWF4RmVhdHVyZXNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IDEwMDA7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5tYXhGZWF0dXJlcykge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nQXJyYXkucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndmc0dldEZlYXR1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5zcnNOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRMaXN0V29HZW9tU3RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBlZmZlY3RpdmVPbEZvcm1hdHMgPSBvbEZvcm1hdHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdBcnJheS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLndmc0dldEZlYXR1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMucGFyYW1zV0ZTLm1heEZlYXR1cmVzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF4RmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMucGFyYW1zV0ZTLnNyc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGRMaXN0V29HZW9tU3RyLFxuICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwcm9jZXNzaW5nQXJyYXkpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICBsZXQgbWZlYXR1cmVzOiBvbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSA9IFtdO1xuICAgICAgICAgIHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvb3BGZWF0dXJlcyA9IGVmZmVjdGl2ZU9sRm9ybWF0cy5yZWFkRmVhdHVyZXMocmVzdWx0KTtcbiAgICAgICAgICAgIG1mZWF0dXJlcyA9IG1mZWF0dXJlcy5jb25jYXQobG9vcEZlYXR1cmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJ1aWx0X3Byb3BlcnRpZXNfdmFsdWUobWZlYXR1cmVzKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBzb3VyY2VGaWVsZHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm5leHQoc291cmNlRmllbGRzKTtcbiAgICAgICAgICBkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsdF9wcm9wZXJ0aWVzX3ZhbHVlKGZlYXR1cmVzOiBvbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGt2ID0gT2JqZWN0LmFzc2lnbih7fSwgZmVhdHVyZXNbMF0uZ2V0UHJvcGVydGllcygpKTtcbiAgICBkZWxldGUga3ZbZmVhdHVyZXNbMF0uZ2V0R2VvbWV0cnlOYW1lKCldO1xuICAgIGRlbGV0ZSBrdi5ib3VuZGVkQnk7XG4gICAgY29uc3Qgc291cmNlRmllbGRzID0gW107XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBrdikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgaWYgKGt2Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPVxuICAgICAgICAgIHR5cGVvZiBmZWF0dXJlc1swXS5nZXQocHJvcGVydHkpID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdHlwZW9mIGZlYXR1cmVzWzBdLmdldChwcm9wZXJ0eSk7XG4gICAgICAgIHNvdXJjZUZpZWxkcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBwcm9wZXJ0eSxcbiAgICAgICAgICBhbGlhczogcHJvcGVydHksXG4gICAgICAgICAgdHlwZTogZmllbGRUeXBlLFxuICAgICAgICAgIHZhbHVlczogW2t2W3Byb3BlcnR5XV1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZlYXR1cmVzLmV2ZXJ5KChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBmZWF0dXJlUHJvcGVydGllcyA9IGVsZW1lbnQuZ2V0UHJvcGVydGllcygpO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmVhdHVyZVByb3BlcnRpZXMpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICBpZiAoZmVhdHVyZVByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgaW4ga3YpIHtcbiAgICAgICAgICBzb3VyY2VGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYubmFtZSA9PT0ga2V5KVxuICAgICAgICAgICAgLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHYudmFsdWVzLmluZGV4T2YoZmVhdHVyZVByb3BlcnRpZXNba2V5XSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdi52YWx1ZXMucHVzaChmZWF0dXJlUHJvcGVydGllc1trZXldKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3VyY2VGaWVsZHM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlcnZlclR5cGUgfSBmcm9tICdvbC9zb3VyY2Uvd21zJztcblxuaW1wb3J0IHR5cGUgeyBPZ2NGaWx0ZXJzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgdHlwZSB7IFRpbWVGaWx0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC90aW1lLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4vZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtcyB9IGZyb20gJy4vd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXTVNEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgLy8gdHlwZT86ICd3bXMnO1xuICBwYXJhbXNXRlM/OiBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtczsgLy8gZm9yIHdtcyBsaW5rZWQgd2l0aCB3ZnNcbiAgdXJsV2ZzPzogc3RyaW5nOyAvLyBpZiB1cmwgZm9yIGxpbmtlZCB3ZnMgZGlmZmVyIGZyb20gdGhlIHVybCBmb3Igd21zLlxuICB1cmw6IHN0cmluZztcbiAgcGFyYW1zOiBXTVNEYXRhU291cmNlT3B0aW9uc1BhcmFtcztcbiAgY3Jvc3NPcmlnaW4/OiBzdHJpbmc7XG4gIHByb2plY3Rpb24/OiBzdHJpbmc7XG4gIHJlc29sdXRpb25zPzogbnVtYmVyW107XG4gIHNlcnZlclR5cGU/OiBTZXJ2ZXJUeXBlO1xuICByYXRpbz86IG51bWJlcjtcbiAgcmVmcmVzaEludGVydmFsU2VjPzogbnVtYmVyO1xuICBjb250ZW50RGVwZW5kZW50TGVnZW5kPzogYm9vbGVhbjtcbiAgZXhjbHVkZUF0dHJpYnV0ZT86IHN0cmluZ1tdO1xuICBvZ2NGaWx0ZXJzPzogT2djRmlsdGVyc09wdGlvbnM7XG4gIHRpbWVGaWx0ZXI/OiBUaW1lRmlsdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXTVNEYXRhU291cmNlT3B0aW9uc1BhcmFtcyB7XG4gIExBWUVSUzogc3RyaW5nO1xuICBWRVJTSU9OPzogc3RyaW5nO1xuICBUSU1FPzogc3RyaW5nO1xuICBGRUFUVVJFX0NPVU5UPzogbnVtYmVyO1xuICBGSUxURVI/OiBzdHJpbmc7XG4gIElORk9fRk9STUFUPzogc3RyaW5nO1xuICBEUEk/OiBudW1iZXI7XG4gIE1BUF9SRVNPTFVUSU9OPzogbnVtYmVyO1xuICBGT1JNQVRfT1BUSU9OUz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zIGV4dGVuZHMgV01TRGF0YVNvdXJjZU9wdGlvbnMge1xuICB0aW1lRmlsdGVyYWJsZT86IGJvb2xlYW47XG4gIHRpbWVGaWx0ZXI/OiBUaW1lRmlsdGVyT3B0aW9ucztcbn1cbiJdfQ==
|