@igo2/geo 18.0.0 → 18.0.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-geo.mjs +684 -709
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
- package/lib/style/style-list/style-list.provider.d.ts +1 -8
- package/lib/style/style-list/style-list.service.d.ts +1 -1
- package/package.json +15 -17
- package/src/lib/layer/layer-list/layer-list.theme.scss +2 -1
- package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
- package/src/style/style.scss +1 -1
- package/esm2022/igo2-geo.mjs +0 -5
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -234
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -272
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -246
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -19
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -136
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -60
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +0 -232
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +0 -24
- package/esm2022/lib/catalog/catalog-library/index.mjs +0 -4
- package/esm2022/lib/catalog/catalog.module.mjs +0 -26
- package/esm2022/lib/catalog/index.mjs +0 -6
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +0 -32
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +0 -16
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +0 -2
- package/esm2022/lib/catalog/shared/catalog.service.mjs +0 -706
- package/esm2022/lib/catalog/shared/catalogs.mjs +0 -75
- package/esm2022/lib/catalog/shared/index.mjs +0 -5
- package/esm2022/lib/datasource/index.mjs +0 -3
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +0 -17
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +0 -441
- package/esm2022/lib/datasource/shared/datasource.service.mjs +0 -258
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -222
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +0 -118
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -24
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +0 -3
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +0 -41
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +0 -52
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -70
- package/esm2022/lib/datasource/shared/datasources/index.mjs +0 -36
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -33
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +0 -14
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -60
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -17
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -56
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -137
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +0 -170
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +0 -227
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -224
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -18
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -11
- package/esm2022/lib/datasource/shared/index.mjs +0 -6
- package/esm2022/lib/datasource/shared/options/index.mjs +0 -5
- package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +0 -2
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +0 -15
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +0 -85
- package/esm2022/lib/datasource/shared/options/options.service.mjs +0 -3
- package/esm2022/lib/datasource/utils/index.mjs +0 -2
- package/esm2022/lib/datasource/utils/tilegrid.mjs +0 -20
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -246
- package/esm2022/lib/directions/directions-buttons/index.mjs +0 -2
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -312
- package/esm2022/lib/directions/directions-inputs/index.mjs +0 -2
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +0 -192
- package/esm2022/lib/directions/directions-results/index.mjs +0 -2
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +0 -5
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +0 -3
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +0 -23
- package/esm2022/lib/directions/directions-sources/index.mjs +0 -5
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +0 -159
- package/esm2022/lib/directions/directions.component.mjs +0 -437
- package/esm2022/lib/directions/directions.module.mjs +0 -46
- package/esm2022/lib/directions/directions.provider.mjs +0 -16
- package/esm2022/lib/directions/index.mjs +0 -8
- package/esm2022/lib/directions/shared/directions-source.service.mjs +0 -18
- package/esm2022/lib/directions/shared/directions.enum.mjs +0 -72
- package/esm2022/lib/directions/shared/directions.interface.mjs +0 -2
- package/esm2022/lib/directions/shared/directions.service.mjs +0 -239
- package/esm2022/lib/directions/shared/directions.utils.mjs +0 -522
- package/esm2022/lib/directions/shared/index.mjs +0 -6
- package/esm2022/lib/directions/shared/store.mjs +0 -21
- package/esm2022/lib/download/download-button/download-button.component.mjs +0 -48
- package/esm2022/lib/download/download-button/index.mjs +0 -2
- package/esm2022/lib/download/download.module.mjs +0 -24
- package/esm2022/lib/download/index.mjs +0 -3
- package/esm2022/lib/download/shared/download.interface.mjs +0 -2
- package/esm2022/lib/download/shared/download.service.mjs +0 -67
- package/esm2022/lib/download/shared/index.mjs +0 -3
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +0 -42
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +0 -421
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +0 -28
- package/esm2022/lib/draw/draw/draw.component.mjs +0 -1136
- package/esm2022/lib/draw/draw/draw.module.mjs +0 -19
- package/esm2022/lib/draw/drawingTool.module.mjs +0 -18
- package/esm2022/lib/draw/index.mjs +0 -3
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +0 -30
- package/esm2022/lib/draw/shared/draw.enum.mjs +0 -21
- package/esm2022/lib/draw/shared/draw.interface.mjs +0 -2
- package/esm2022/lib/draw/shared/draw.utils.mjs +0 -125
- package/esm2022/lib/draw/shared/index.mjs +0 -5
- package/esm2022/lib/environment/environment.interface.mjs +0 -2
- package/esm2022/lib/environment/index.mjs +0 -2
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +0 -306
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +0 -56
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +0 -26
- package/esm2022/lib/feature/feature-details/index.mjs +0 -4
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +0 -101
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +0 -19
- package/esm2022/lib/feature/feature.module.mjs +0 -26
- package/esm2022/lib/feature/index.mjs +0 -5
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +0 -28
- package/esm2022/lib/feature/shared/feature.enums.mjs +0 -9
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +0 -2
- package/esm2022/lib/feature/shared/feature.utils.mjs +0 -332
- package/esm2022/lib/feature/shared/index.mjs +0 -8
- package/esm2022/lib/feature/shared/store.mjs +0 -143
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +0 -216
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +0 -119
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +0 -99
- package/esm2022/lib/feature/shared/strategies/index.mjs +0 -8
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +0 -103
- package/esm2022/lib/feature/shared/strategies/loading.mjs +0 -136
- package/esm2022/lib/feature/shared/strategies/search.mjs +0 -158
- package/esm2022/lib/feature/shared/strategies/selection.mjs +0 -385
- package/esm2022/lib/feature/shared/strategies.utils.mjs +0 -37
- package/esm2022/lib/filter/filter.module.mjs +0 -131
- package/esm2022/lib/filter/index.mjs +0 -17
- package/esm2022/lib/filter/ogc-filter-button/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -141
- package/esm2022/lib/filter/ogc-filter-form/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -325
- package/esm2022/lib/filter/ogc-filter-selection/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -787
- package/esm2022/lib/filter/ogc-filter-time/index.mjs +0 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -201
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -665
- package/esm2022/lib/filter/ogc-filterable-form/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -66
- package/esm2022/lib/filter/ogc-filterable-item/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -244
- package/esm2022/lib/filter/ogc-filterable-list/index.mjs +0 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -39
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -32
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +0 -63
- package/esm2022/lib/filter/shared/index.mjs +0 -12
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +0 -30
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/ogc-filter.mjs +0 -756
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +0 -47
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +0 -23
- package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +0 -282
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +0 -13
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +0 -2
- package/esm2022/lib/filter/shared/time-filter.service.mjs +0 -107
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -875
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -191
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -120
- package/esm2022/lib/filter/time-filter-button/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -70
- package/esm2022/lib/filter/time-filter-form/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -537
- package/esm2022/lib/filter/time-filter-item/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -90
- package/esm2022/lib/filter/time-filter-list/index.mjs +0 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -39
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -24
- package/esm2022/lib/geo.module.mjs +0 -63
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -559
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -170
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -24
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +0 -4
- package/esm2022/lib/geometry/geometry.module.mjs +0 -18
- package/esm2022/lib/geometry/index.mjs +0 -3
- package/esm2022/lib/geometry/shared/controls/draw.mjs +0 -340
- package/esm2022/lib/geometry/shared/controls/index.mjs +0 -4
- package/esm2022/lib/geometry/shared/controls/modify.mjs +0 -538
- package/esm2022/lib/geometry/shared/controls/slice.mjs +0 -190
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +0 -24
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +0 -2
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +0 -113
- package/esm2022/lib/geometry/shared/index.mjs +0 -5
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +0 -49
- package/esm2022/lib/import-export/export-button/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +0 -876
- package/esm2022/lib/import-export/import-export/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export.module.mjs +0 -31
- package/esm2022/lib/import-export/index.mjs +0 -5
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +0 -114
- package/esm2022/lib/import-export/shared/export.errors.mjs +0 -15
- package/esm2022/lib/import-export/shared/export.interface.mjs +0 -2
- package/esm2022/lib/import-export/shared/export.service.mjs +0 -378
- package/esm2022/lib/import-export/shared/export.type.mjs +0 -13
- package/esm2022/lib/import-export/shared/export.utils.mjs +0 -51
- package/esm2022/lib/import-export/shared/import.errors.mjs +0 -39
- package/esm2022/lib/import-export/shared/import.interface.mjs +0 -2
- package/esm2022/lib/import-export/shared/import.service.mjs +0 -221
- package/esm2022/lib/import-export/shared/import.utils.mjs +0 -203
- package/esm2022/lib/import-export/shared/index.mjs +0 -11
- package/esm2022/lib/layer/index.mjs +0 -16
- package/esm2022/lib/layer/layer-group/index.mjs +0 -2
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +0 -103
- package/esm2022/lib/layer/layer-item/index.mjs +0 -2
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +0 -196
- package/esm2022/lib/layer/layer-legend/index.mjs +0 -2
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +0 -287
- package/esm2022/lib/layer/layer-legend-item/index.mjs +0 -2
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -85
- package/esm2022/lib/layer/layer-legend-list/index.mjs +0 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -54
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -104
- package/esm2022/lib/layer/layer-list/index.mjs +0 -2
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +0 -232
- package/esm2022/lib/layer/layer-list-tool/index.mjs +0 -4
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -92
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -7
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -61
- package/esm2022/lib/layer/layer-search/index.mjs +0 -2
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +0 -65
- package/esm2022/lib/layer/layer-unavailable/index.mjs +0 -3
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +0 -25
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +0 -35
- package/esm2022/lib/layer/layer-viewer/index.mjs +0 -3
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +0 -226
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +0 -2
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +0 -2
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +0 -207
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +0 -2
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +0 -83
- package/esm2022/lib/layer/layer.module.mjs +0 -107
- package/esm2022/lib/layer/shared/clusterParam.mjs +0 -2
- package/esm2022/lib/layer/shared/index.mjs +0 -6
- package/esm2022/lib/layer/shared/layer-controller.mjs +0 -316
- package/esm2022/lib/layer/shared/layer-selection.mjs +0 -38
- package/esm2022/lib/layer/shared/layer.enums.mjs +0 -2
- package/esm2022/lib/layer/shared/layer.service.mjs +0 -315
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +0 -75
- package/esm2022/lib/layer/shared/layers/index.mjs +0 -18
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +0 -199
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +0 -120
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +0 -7
- package/esm2022/lib/layer/shared/layers/layer.mjs +0 -178
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +0 -4
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +0 -12
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +0 -242
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +0 -70
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +0 -55
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +0 -576
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +0 -112
- package/esm2022/lib/layer/track-feature-button/index.mjs +0 -2
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -54
- package/esm2022/lib/layer/utils/image-watcher.mjs +0 -62
- package/esm2022/lib/layer/utils/index.mjs +0 -6
- package/esm2022/lib/layer/utils/layer.utils.mjs +0 -57
- package/esm2022/lib/layer/utils/outputLegend.mjs +0 -32
- package/esm2022/lib/layer/utils/tile-watcher.mjs +0 -52
- package/esm2022/lib/layer/utils/vector-watcher.mjs +0 -50
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -87
- package/esm2022/lib/map/baselayers-switcher/index.mjs +0 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -122
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +0 -78
- package/esm2022/lib/map/geolocate-button/index.mjs +0 -2
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +0 -73
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +0 -2
- package/esm2022/lib/map/home-extent-button/index.mjs +0 -3
- package/esm2022/lib/map/index.mjs +0 -14
- package/esm2022/lib/map/info-section/index.mjs +0 -2
- package/esm2022/lib/map/info-section/info-section.component.mjs +0 -15
- package/esm2022/lib/map/map-browser/index.mjs +0 -2
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +0 -67
- package/esm2022/lib/map/map-center/index.mjs +0 -2
- package/esm2022/lib/map/map-center/map-center.component.mjs +0 -56
- package/esm2022/lib/map/map.module.mjs +0 -89
- package/esm2022/lib/map/menu-button/index.mjs +0 -2
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +0 -57
- package/esm2022/lib/map/offline-button/index.mjs +0 -2
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +0 -53
- package/esm2022/lib/map/rotation-button/index.mjs +0 -2
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +0 -58
- package/esm2022/lib/map/shared/controllers/controller.mjs +0 -44
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +0 -8
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +0 -431
- package/esm2022/lib/map/shared/controllers/index.mjs +0 -5
- package/esm2022/lib/map/shared/controllers/view.mjs +0 -361
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +0 -481
- package/esm2022/lib/map/shared/index.mjs +0 -15
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +0 -238
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +0 -122
- package/esm2022/lib/map/shared/map.abstract.mjs +0 -24
- package/esm2022/lib/map/shared/map.enums.mjs +0 -6
- package/esm2022/lib/map/shared/map.interface.mjs +0 -2
- package/esm2022/lib/map/shared/map.mjs +0 -201
- package/esm2022/lib/map/shared/map.service.mjs +0 -29
- package/esm2022/lib/map/shared/map.utils.mjs +0 -455
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +0 -114
- package/esm2022/lib/map/shared/projection.interfaces.mjs +0 -2
- package/esm2022/lib/map/shared/projection.service.mjs +0 -67
- package/esm2022/lib/map/shared/projection.utils.mjs +0 -122
- package/esm2022/lib/map/swipe-control/index.mjs +0 -2
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +0 -211
- package/esm2022/lib/map/utils/index.mjs +0 -2
- package/esm2022/lib/map/utils/layer-watcher.mjs +0 -112
- package/esm2022/lib/map/wake-lock-button/index.mjs +0 -2
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
- package/esm2022/lib/map/zoom-button/index.mjs +0 -2
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +0 -35
- package/esm2022/lib/measure/index.mjs +0 -3
- package/esm2022/lib/measure/measure.module.mjs +0 -20
- package/esm2022/lib/measure/measurer/index.mjs +0 -6
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +0 -40
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +0 -38
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +0 -143
- package/esm2022/lib/measure/measurer/measurer.component.mjs +0 -948
- package/esm2022/lib/measure/measurer/measurer.module.mjs +0 -20
- package/esm2022/lib/measure/shared/index.mjs +0 -4
- package/esm2022/lib/measure/shared/measure.enum.mjs +0 -37
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +0 -2
- package/esm2022/lib/measure/shared/measure.utils.mjs +0 -497
- package/esm2022/lib/metadata/index.mjs +0 -4
- package/esm2022/lib/metadata/metadata-button/index.mjs +0 -2
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +0 -96
- package/esm2022/lib/metadata/metadata.module.mjs +0 -29
- package/esm2022/lib/metadata/shared/index.mjs +0 -3
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +0 -2
- package/esm2022/lib/metadata/shared/metadata.service.mjs +0 -18
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -130
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +0 -6
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +0 -2
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
- package/esm2022/lib/offline/geoDB/index.mjs +0 -5
- package/esm2022/lib/offline/index.mjs +0 -6
- package/esm2022/lib/offline/layerDB/index.mjs +0 -3
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +0 -2
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
- package/esm2022/lib/offline/offline.interface.mjs +0 -2
- package/esm2022/lib/offline/offline.provider.mjs +0 -50
- package/esm2022/lib/offline/shared/geo-network.service.mjs +0 -79
- package/esm2022/lib/offline/shared/index.mjs +0 -2
- package/esm2022/lib/overlay/index.mjs +0 -2
- package/esm2022/lib/overlay/shared/index.mjs +0 -4
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +0 -8
- package/esm2022/lib/overlay/shared/overlay.mjs +0 -139
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +0 -17
- package/esm2022/lib/print/index.mjs +0 -4
- package/esm2022/lib/print/print/print.component.mjs +0 -116
- package/esm2022/lib/print/print-form/index.mjs +0 -2
- package/esm2022/lib/print/print-form/print-form.component.mjs +0 -320
- package/esm2022/lib/print/print.module.mjs +0 -20
- package/esm2022/lib/print/shared/geopdf.mjs +0 -68
- package/esm2022/lib/print/shared/index.mjs +0 -5
- package/esm2022/lib/print/shared/print.interface.mjs +0 -2
- package/esm2022/lib/print/shared/print.service.mjs +0 -1136
- package/esm2022/lib/print/shared/print.type.mjs +0 -30
- package/esm2022/lib/query/index.mjs +0 -2
- package/esm2022/lib/query/query.module.mjs +0 -27
- package/esm2022/lib/query/shared/index.mjs +0 -8
- package/esm2022/lib/query/shared/query-search-source.mjs +0 -35
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +0 -22
- package/esm2022/lib/query/shared/query.directive.mjs +0 -290
- package/esm2022/lib/query/shared/query.enums.mjs +0 -32
- package/esm2022/lib/query/shared/query.interfaces.mjs +0 -2
- package/esm2022/lib/query/shared/query.service.mjs +0 -753
- package/esm2022/lib/query/shared/query.utils.mjs +0 -45
- package/esm2022/lib/search/index.mjs +0 -10
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +0 -483
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
- package/esm2022/lib/search/search-results/index.mjs +0 -5
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +0 -101
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +0 -433
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +0 -119
- package/esm2022/lib/search/search-results/search-results.component.mjs +0 -297
- package/esm2022/lib/search/search-results/search-results.directive.mjs +0 -7
- package/esm2022/lib/search/search-results/search-results.module.mjs +0 -20
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +0 -118
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +0 -19
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +0 -264
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -77
- package/esm2022/lib/search/shared/index.mjs +0 -10
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +0 -328
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +0 -20
- package/esm2022/lib/search/shared/search-source.service.mjs +0 -56
- package/esm2022/lib/search/shared/search.enums.mjs +0 -4
- package/esm2022/lib/search/shared/search.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/search.provider.mjs +0 -20
- package/esm2022/lib/search/shared/search.service.mjs +0 -149
- package/esm2022/lib/search/shared/search.utils.mjs +0 -92
- package/esm2022/lib/search/shared/sources/cadastre.mjs +0 -142
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +0 -32
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/coordinates.mjs +0 -168
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +0 -52
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +0 -32
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/icherche.mjs +0 -816
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +0 -87
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/ilayer.mjs +0 -339
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +0 -58
- package/esm2022/lib/search/shared/sources/index.mjs +0 -23
- package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/nominatim.mjs +0 -263
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +0 -31
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +0 -13
- package/esm2022/lib/search/shared/sources/source.mjs +0 -221
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +0 -454
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +0 -56
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
- package/esm2022/lib/search/shared/sources/workspace.mjs +0 -192
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +0 -31
- package/esm2022/lib/style/index.mjs +0 -5
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +0 -360
- package/esm2022/lib/style/shared/datasource/index.mjs +0 -2
- package/esm2022/lib/style/shared/feature/feature-style.mjs +0 -162
- package/esm2022/lib/style/shared/feature/index.mjs +0 -2
- package/esm2022/lib/style/shared/font.enum.mjs +0 -17
- package/esm2022/lib/style/shared/index.mjs +0 -5
- package/esm2022/lib/style/shared/overlay/index.mjs +0 -3
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -39
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +0 -78
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +0 -27
- package/esm2022/lib/style/shared/vector/index.mjs +0 -4
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +0 -2
- package/esm2022/lib/style/style-list/index.mjs +0 -5
- package/esm2022/lib/style/style-list/style-list.interface.mjs +0 -2
- package/esm2022/lib/style/style-list/style-list.module.mjs +0 -23
- package/esm2022/lib/style/style-list/style-list.provider.mjs +0 -21
- package/esm2022/lib/style/style-list/style-list.service.mjs +0 -52
- package/esm2022/lib/style/style-modal/drawing/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -193
- package/esm2022/lib/style/style-modal/index.mjs +0 -5
- package/esm2022/lib/style/style-modal/layer/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -142
- package/esm2022/lib/style/style-modal/layer-button/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
- package/esm2022/lib/style/style-modal/shared/index.mjs +0 -2
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
- package/esm2022/lib/style/style-service/draw-style.service.mjs +0 -255
- package/esm2022/lib/style/style-service/index.mjs +0 -3
- package/esm2022/lib/style/style-service/style.service.mjs +0 -393
- package/esm2022/lib/style/style.module.mjs +0 -46
- package/esm2022/lib/toast/index.mjs +0 -2
- package/esm2022/lib/toast/toast.component.mjs +0 -99
- package/esm2022/lib/toast/toast.module.mjs +0 -24
- package/esm2022/lib/utils/googleLinks.mjs +0 -13
- package/esm2022/lib/utils/id-generator.mjs +0 -112
- package/esm2022/lib/utils/index.mjs +0 -5
- package/esm2022/lib/utils/osmLinks.mjs +0 -9
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +0 -3
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +0 -2
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +0 -64
- package/esm2022/lib/wkt/index.mjs +0 -2
- package/esm2022/lib/wkt/shared/index.mjs +0 -2
- package/esm2022/lib/wkt/shared/wkt.service.mjs +0 -235
- package/esm2022/lib/wkt/wkt.module.mjs +0 -25
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -36
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -19
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +0 -3
- package/esm2022/lib/workspace/index.mjs +0 -8
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +0 -301
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +0 -720
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +0 -41
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +0 -113
- package/esm2022/lib/workspace/shared/index.mjs +0 -8
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +0 -41
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +0 -121
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +0 -248
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -188
- package/esm2022/lib/workspace/widgets/index.mjs +0 -4
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -48
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -19
- package/esm2022/lib/workspace/widgets/widgets.mjs +0 -15
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -172
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -137
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -19
- package/esm2022/lib/workspace/workspace.module.mjs +0 -32
- package/esm2022/public_api.mjs +0 -56
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { EntityStoreStrategy } from '@igo2/common/entity';
|
|
2
|
-
import { debounceTime } from 'rxjs';
|
|
3
|
-
/**
|
|
4
|
-
* This strategy maintain the store features updated while the map is scrolled.
|
|
5
|
-
* The features's state inside the map's resolution are tagged inMapResolution = true;
|
|
6
|
-
*/
|
|
7
|
-
export class FeatureStoreInMapResolutionStrategy extends EntityStoreStrategy {
|
|
8
|
-
options;
|
|
9
|
-
/**
|
|
10
|
-
* Subscription to the store's OL source changes
|
|
11
|
-
*/
|
|
12
|
-
stores$$ = new Map();
|
|
13
|
-
resolution$$ = [];
|
|
14
|
-
empty$$;
|
|
15
|
-
constructor(options) {
|
|
16
|
-
super(options);
|
|
17
|
-
this.options = options;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Bind this strategy to a store and start watching for Ol source changes
|
|
21
|
-
* @param store Feature store
|
|
22
|
-
*/
|
|
23
|
-
bindStore(store) {
|
|
24
|
-
super.bindStore(store);
|
|
25
|
-
if (this.active === true) {
|
|
26
|
-
this.watchStore(store);
|
|
27
|
-
}
|
|
28
|
-
this.empty$$ = store.empty$.subscribe(() => this.updateEntitiesInResolution(store, store.layer.map.viewController.getResolution()));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Unbind this strategy from a store and stop watching for Ol source changes
|
|
32
|
-
* @param store Feature store
|
|
33
|
-
*/
|
|
34
|
-
unbindStore(store) {
|
|
35
|
-
super.unbindStore(store);
|
|
36
|
-
if (this.active === true) {
|
|
37
|
-
this.unwatchStore(store);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Start watching all stores already bound to that strategy at once.
|
|
42
|
-
* @internal
|
|
43
|
-
*/
|
|
44
|
-
doActivate() {
|
|
45
|
-
this.stores.forEach((store) => this.watchStore(store));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Stop watching all stores bound to that strategy
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
doDeactivate() {
|
|
52
|
-
this.unwatchAll();
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Watch for a store's OL source changes
|
|
56
|
-
* @param store Feature store
|
|
57
|
-
*/
|
|
58
|
-
watchStore(store) {
|
|
59
|
-
if (this.stores$$.has(store)) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
this.updateEntitiesInResolution(store, store.layer.map.viewController.getResolution());
|
|
63
|
-
this.resolution$$.push(store.layer.map.viewController.resolution$
|
|
64
|
-
.pipe(debounceTime(250))
|
|
65
|
-
.subscribe((res) => {
|
|
66
|
-
this.updateEntitiesInResolution(store, res);
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
updateEntitiesInResolution(store, mapResolution) {
|
|
70
|
-
if (mapResolution > store.layer.minResolution &&
|
|
71
|
-
mapResolution < store.layer.maxResolution) {
|
|
72
|
-
store.state.updateAll({ inMapResolution: true });
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
store.state.updateAll({ inMapResolution: false });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Stop watching for a store's OL source changes
|
|
80
|
-
* @param store Feature store
|
|
81
|
-
*/
|
|
82
|
-
unwatchStore(store) {
|
|
83
|
-
const key = this.stores$$.get(store);
|
|
84
|
-
if (key !== undefined) {
|
|
85
|
-
this.stores$$.delete(store);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Stop watching for OL source changes in all stores.
|
|
90
|
-
*/
|
|
91
|
-
unwatchAll() {
|
|
92
|
-
this.stores$$.clear();
|
|
93
|
-
this.resolution$$.map((state) => state.unsubscribe());
|
|
94
|
-
if (this.empty$$) {
|
|
95
|
-
this.empty$$.unsubscribe();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWFwLXJlc29sdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9mZWF0dXJlL3NoYXJlZC9zdHJhdGVnaWVzL2luLW1hcC1yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxtQkFBbUI7SUFRcEQ7SUFQdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFDM0MsWUFBWSxHQUFtQixFQUFFLENBQUM7SUFDbEMsT0FBTyxDQUFlO0lBRTlCLFlBQXNCLE9BQW1EO1FBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURLLFlBQU8sR0FBUCxPQUFPLENBQTRDO0lBRXpFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsS0FBbUI7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDekMsSUFBSSxDQUFDLDBCQUEwQixDQUM3QixLQUFLLEVBQ0wsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUMvQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDTyxVQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssVUFBVSxDQUFDLEtBQW1CO1FBQ3BDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQywwQkFBMEIsQ0FDN0IsS0FBSyxFQUNMLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FDL0MsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVzthQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsYUFBcUI7UUFDN0QsSUFDRSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3pDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFDekMsQ0FBQztZQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLEtBQW1CO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVN0b3JlU3RyYXRlZ3kgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnLi4vZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcblxuLyoqXG4gKiBUaGlzIHN0cmF0ZWd5IG1haW50YWluIHRoZSBzdG9yZSBmZWF0dXJlcyB1cGRhdGVkIHdoaWxlIHRoZSBtYXAgaXMgc2Nyb2xsZWQuXG4gKiBUaGUgZmVhdHVyZXMncyBzdGF0ZSBpbnNpZGUgdGhlIG1hcCdzIHJlc29sdXRpb24gYXJlIHRhZ2dlZCBpbk1hcFJlc29sdXRpb24gPSB0cnVlO1xuICovXG5leHBvcnQgY2xhc3MgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgc3RvcmUncyBPTCBzb3VyY2UgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZXMkJCA9IG5ldyBNYXA8RmVhdHVyZVN0b3JlLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGVtcHR5JCQ6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGlzIHN0cmF0ZWd5IHRvIGEgc3RvcmUgYW5kIHN0YXJ0IHdhdGNoaW5nIGZvciBPbCBzb3VyY2UgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy53YXRjaFN0b3JlKHN0b3JlKTtcbiAgICB9XG4gICAgdGhpcy5lbXB0eSQkID0gc3RvcmUuZW1wdHkkLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy51cGRhdGVFbnRpdGllc0luUmVzb2x1dGlvbihcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIHN0b3JlLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGlzIHN0cmF0ZWd5IGZyb20gYSBzdG9yZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgT2wgc291cmNlIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHVuYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci51bmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnVud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdhdGNoaW5nIGFsbCBzdG9yZXMgYWxyZWFkeSBib3VuZCB0byB0aGF0IHN0cmF0ZWd5IGF0IG9uY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvQWN0aXZhdGUoKSB7XG4gICAgdGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IEZlYXR1cmVTdG9yZSkgPT4gdGhpcy53YXRjaFN0b3JlKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBhbGwgc3RvcmVzIGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3lcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9EZWFjdGl2YXRlKCkge1xuICAgIHRoaXMudW53YXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIGZvciBhIHN0b3JlJ3MgIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHdhdGNoU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIGlmICh0aGlzLnN0b3JlcyQkLmhhcyhzdG9yZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKFxuICAgICAgc3RvcmUsXG4gICAgICBzdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpXG4gICAgKTtcbiAgICB0aGlzLnJlc29sdXRpb24kJC5wdXNoKFxuICAgICAgc3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKHN0b3JlLCByZXMpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKHN0b3JlLCBtYXBSZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICBtYXBSZXNvbHV0aW9uID4gc3RvcmUubGF5ZXIubWluUmVzb2x1dGlvbiAmJlxuICAgICAgbWFwUmVzb2x1dGlvbiA8IHN0b3JlLmxheWVyLm1heFJlc29sdXRpb25cbiAgICApIHtcbiAgICAgIHN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7IGluTWFwUmVzb2x1dGlvbjogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcmUuc3RhdGUudXBkYXRlQWxsKHsgaW5NYXBSZXNvbHV0aW9uOiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgYSBzdG9yZSdzIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5zdG9yZXMkJC5nZXQoc3RvcmUpO1xuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdG9yZXMkJC5kZWxldGUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBPTCBzb3VyY2UgY2hhbmdlcyBpbiBhbGwgc3RvcmVzLlxuICAgKi9cbiAgcHJpdmF0ZSB1bndhdGNoQWxsKCkge1xuICAgIHRoaXMuc3RvcmVzJCQuY2xlYXIoKTtcbiAgICB0aGlzLnJlc29sdXRpb24kJC5tYXAoKHN0YXRlKSA9PiBzdGF0ZS51bnN1YnNjcmliZSgpKTtcbiAgICBpZiAodGhpcy5lbXB0eSQkKSB7XG4gICAgICB0aGlzLmVtcHR5JCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './in-map-extent';
|
|
2
|
-
export * from './in-map-resolution';
|
|
3
|
-
export * from './geo-properties';
|
|
4
|
-
export * from './loading';
|
|
5
|
-
export * from './loading-layer';
|
|
6
|
-
export * from './selection';
|
|
7
|
-
export * from './search';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9mZWF0dXJlL3NoYXJlZC9zdHJhdGVnaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luLW1hcC1leHRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbi1tYXAtcmVzb2x1dGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlby1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctbGF5ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gnO1xuIl19
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { EntityStoreStrategy } from '@igo2/common/entity';
|
|
2
|
-
import { ClusterDataSource } from '../../../datasource/shared/datasources/cluster-datasource';
|
|
3
|
-
/**
|
|
4
|
-
* This strategy loads a layer's features into it's store counterpart.
|
|
5
|
-
* The layer -> store binding is a one-way binding. That means any OL feature
|
|
6
|
-
* added to the layer will be added to the store but the opposite is false.
|
|
7
|
-
*
|
|
8
|
-
* Important: In it's current state, this strategy is to meant to be combined
|
|
9
|
-
* with a standard Loading strategy and it would probably cause recursion issues.
|
|
10
|
-
*/
|
|
11
|
-
export class FeatureStoreLoadingLayerStrategy extends EntityStoreStrategy {
|
|
12
|
-
options;
|
|
13
|
-
/**
|
|
14
|
-
* Subscription to the store's OL source changes
|
|
15
|
-
*/
|
|
16
|
-
stores$$ = new Map();
|
|
17
|
-
constructor(options) {
|
|
18
|
-
super(options);
|
|
19
|
-
this.options = options;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Bind this strategy to a store and start watching for Ol source changes
|
|
23
|
-
* @param store Feature store
|
|
24
|
-
*/
|
|
25
|
-
bindStore(store) {
|
|
26
|
-
super.bindStore(store);
|
|
27
|
-
if (this.active === true) {
|
|
28
|
-
this.watchStore(store);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Unbind this strategy from a store and stop watching for Ol source changes
|
|
33
|
-
* @param store Feature store
|
|
34
|
-
*/
|
|
35
|
-
unbindStore(store) {
|
|
36
|
-
super.unbindStore(store);
|
|
37
|
-
if (this.active === true) {
|
|
38
|
-
this.unwatchStore(store);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Start watching all stores already bound to that strategy at once.
|
|
43
|
-
* @internal
|
|
44
|
-
*/
|
|
45
|
-
doActivate() {
|
|
46
|
-
this.stores.forEach((store) => this.watchStore(store));
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Stop watching all stores bound to that strategy
|
|
50
|
-
* @internal
|
|
51
|
-
*/
|
|
52
|
-
doDeactivate() {
|
|
53
|
-
this.unwatchAll();
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Watch for a store's OL source changes
|
|
57
|
-
* @param store Feature store
|
|
58
|
-
*/
|
|
59
|
-
watchStore(store) {
|
|
60
|
-
if (this.stores$$.has(store)) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.onSourceChanges(store);
|
|
64
|
-
const olSource = store.layer.ol.getSource();
|
|
65
|
-
olSource.on('change', () => {
|
|
66
|
-
this.onSourceChanges(store);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Stop watching for a store's OL source changes
|
|
71
|
-
* @param store Feature store
|
|
72
|
-
*/
|
|
73
|
-
unwatchStore(store) {
|
|
74
|
-
const key = this.stores$$.get(store);
|
|
75
|
-
if (key !== undefined) {
|
|
76
|
-
this.stores$$.delete(store);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Stop watching for OL source changes in all stores.
|
|
81
|
-
*/
|
|
82
|
-
unwatchAll() {
|
|
83
|
-
this.stores$$.clear();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Load features from an OL source into a store or clear the store if the source is empty
|
|
87
|
-
* @param features Store filtered features
|
|
88
|
-
* @param store Feature store
|
|
89
|
-
*/
|
|
90
|
-
onSourceChanges(store) {
|
|
91
|
-
let olFeatures = store.layer.ol.getSource().getFeatures();
|
|
92
|
-
if (store.layer.dataSource instanceof ClusterDataSource) {
|
|
93
|
-
olFeatures = olFeatures.flatMap((cluster) => cluster.get('features'));
|
|
94
|
-
}
|
|
95
|
-
if (olFeatures.length === 0) {
|
|
96
|
-
store.clear();
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
store.setStoreOlFeatures(olFeatures);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1sYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZy1sYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUk5Rjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUFtQjtJQU1qRDtJQUx0Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUVuRCxZQUFzQixPQUFnRDtRQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUF5QztJQUV0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQW1CO1FBQzNCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBbUI7UUFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFlBQVk7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxVQUFVLENBQUMsS0FBbUI7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsS0FBbUI7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGVBQWUsQ0FBQyxLQUFtQjtRQUN6QyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUxRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDeEQsVUFBVSxHQUFJLFVBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDeEIsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5IH0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCB7IENsdXN0ZXJEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvY2x1c3Rlci1kYXRhc291cmNlJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJy4uL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi9zdG9yZSc7XG5cbi8qKlxuICogVGhpcyBzdHJhdGVneSBsb2FkcyBhIGxheWVyJ3MgZmVhdHVyZXMgaW50byBpdCdzIHN0b3JlIGNvdW50ZXJwYXJ0LlxuICogVGhlIGxheWVyIC0+IHN0b3JlIGJpbmRpbmcgaXMgYSBvbmUtd2F5IGJpbmRpbmcuIFRoYXQgbWVhbnMgYW55IE9MIGZlYXR1cmVcbiAqIGFkZGVkIHRvIHRoZSBsYXllciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdG9yZSBidXQgdGhlIG9wcG9zaXRlIGlzIGZhbHNlLlxuICpcbiAqIEltcG9ydGFudDogSW4gaXQncyBjdXJyZW50IHN0YXRlLCB0aGlzIHN0cmF0ZWd5IGlzIHRvIG1lYW50IHRvIGJlIGNvbWJpbmVkXG4gKiB3aXRoIGEgc3RhbmRhcmQgTG9hZGluZyBzdHJhdGVneSBhbmQgaXQgd291bGQgcHJvYmFibHkgY2F1c2UgcmVjdXJzaW9uIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5IGV4dGVuZHMgRW50aXR5U3RvcmVTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHN0b3JlJ3MgT0wgc291cmNlIGNoYW5nZXNcbiAgICovXG4gIHByaXZhdGUgc3RvcmVzJCQgPSBuZXcgTWFwPEZlYXR1cmVTdG9yZSwgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIE9sIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBiaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhpcyBzdHJhdGVneSBmcm9tIGEgc3RvcmUgYW5kIHN0b3Agd2F0Y2hpbmcgZm9yIE9sIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICB1bmJpbmRTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgc3VwZXIudW5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy51bndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB3YXRjaGluZyBhbGwgc3RvcmVzIGFscmVhZHkgYm91bmQgdG8gdGhhdCBzdHJhdGVneSBhdCBvbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0FjdGl2YXRlKCkge1xuICAgIHRoaXMuc3RvcmVzLmZvckVhY2goKHN0b3JlOiBGZWF0dXJlU3RvcmUpID0+IHRoaXMud2F0Y2hTdG9yZShzdG9yZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgYWxsIHN0b3JlcyBib3VuZCB0byB0aGF0IHN0cmF0ZWd5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvRGVhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLnVud2F0Y2hBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgYSBzdG9yZSdzICBPTCBzb3VyY2UgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgcHJpdmF0ZSB3YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAodGhpcy5zdG9yZXMkJC5oYXMoc3RvcmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vblNvdXJjZUNoYW5nZXMoc3RvcmUpO1xuICAgIGNvbnN0IG9sU291cmNlID0gc3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCk7XG4gICAgb2xTb3VyY2Uub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgIHRoaXMub25Tb3VyY2VDaGFuZ2VzKHN0b3JlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBhIHN0b3JlJ3MgT0wgc291cmNlIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgdW53YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlcyQkLmdldChzdG9yZSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0b3JlcyQkLmRlbGV0ZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgZm9yIE9MIHNvdXJjZSBjaGFuZ2VzIGluIGFsbCBzdG9yZXMuXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hBbGwoKSB7XG4gICAgdGhpcy5zdG9yZXMkJC5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZmVhdHVyZXMgZnJvbSBhbiBPTCBzb3VyY2UgaW50byBhICBzdG9yZSBvciBjbGVhciB0aGUgc3RvcmUgaWYgdGhlIHNvdXJjZSBpcyBlbXB0eVxuICAgKiBAcGFyYW0gZmVhdHVyZXMgU3RvcmUgZmlsdGVyZWQgZmVhdHVyZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgb25Tb3VyY2VDaGFuZ2VzKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBsZXQgb2xGZWF0dXJlcyA9IHN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLmdldEZlYXR1cmVzKCk7XG5cbiAgICBpZiAoc3RvcmUubGF5ZXIuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIENsdXN0ZXJEYXRhU291cmNlKSB7XG4gICAgICBvbEZlYXR1cmVzID0gKG9sRmVhdHVyZXMgYXMgYW55KS5mbGF0TWFwKChjbHVzdGVyOiBhbnkpID0+XG4gICAgICAgIGNsdXN0ZXIuZ2V0KCdmZWF0dXJlcycpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob2xGZWF0dXJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHN0b3JlLmNsZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlLnNldFN0b3JlT2xGZWF0dXJlcyhvbEZlYXR1cmVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { EntityStoreStrategy } from '@igo2/common/entity';
|
|
2
|
-
import { FeatureMotion } from '../feature.enums';
|
|
3
|
-
/**
|
|
4
|
-
* This strategy loads a store's features into it's layer counterpart.
|
|
5
|
-
* The store -> layer binding is a one-way binding. That means any entity
|
|
6
|
-
* added to the store will be added to the layer but the opposite is false.
|
|
7
|
-
*
|
|
8
|
-
* Important: This strategy observes filtered entities, not raw entities. This
|
|
9
|
-
* is not configurable yet.
|
|
10
|
-
*/
|
|
11
|
-
export class FeatureStoreLoadingStrategy extends EntityStoreStrategy {
|
|
12
|
-
options;
|
|
13
|
-
/**
|
|
14
|
-
* Subscription to the store's features
|
|
15
|
-
*/
|
|
16
|
-
stores$$ = new Map();
|
|
17
|
-
motion;
|
|
18
|
-
constructor(options) {
|
|
19
|
-
super(options);
|
|
20
|
-
this.options = options;
|
|
21
|
-
this.setMotion(options.motion);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Bind this strategy to a store and start watching for entities changes
|
|
25
|
-
* @param store Feature store
|
|
26
|
-
*/
|
|
27
|
-
bindStore(store) {
|
|
28
|
-
super.bindStore(store);
|
|
29
|
-
if (this.active === true) {
|
|
30
|
-
this.watchStore(store);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Unbind this strategy from a store and stop watching for entities changes
|
|
35
|
-
* @param store Feature store
|
|
36
|
-
*/
|
|
37
|
-
unbindStore(store) {
|
|
38
|
-
super.unbindStore(store);
|
|
39
|
-
if (this.active === true) {
|
|
40
|
-
this.unwatchStore(store);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Define the motion to apply on load
|
|
45
|
-
* @param motion Feature motion
|
|
46
|
-
*/
|
|
47
|
-
setMotion(motion) {
|
|
48
|
-
this.motion = motion;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Start watching all stores already bound to that strategy at once.
|
|
52
|
-
* @internal
|
|
53
|
-
*/
|
|
54
|
-
doActivate() {
|
|
55
|
-
this.stores.forEach((store) => this.watchStore(store));
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Stop watching all stores bound to that strategy
|
|
59
|
-
* @internal
|
|
60
|
-
*/
|
|
61
|
-
doDeactivate() {
|
|
62
|
-
this.unwatchAll();
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Watch for entities changes in a store.
|
|
66
|
-
* Important: Never observe a store's sorted entities. It makes no sense
|
|
67
|
-
* to display sorted entities (instead of unsorted) on a layer and it
|
|
68
|
-
* would potentially result in a lot of useless computation.
|
|
69
|
-
* @param store Feature store
|
|
70
|
-
*/
|
|
71
|
-
watchStore(store) {
|
|
72
|
-
if (this.stores$$.has(store)) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const subscription = store.view
|
|
76
|
-
.all$()
|
|
77
|
-
.subscribe((features) => this.onFeaturesChange(features, store));
|
|
78
|
-
this.stores$$.set(store, subscription);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Stop watching for entities changes in a store.
|
|
82
|
-
* @param store Feature store
|
|
83
|
-
*/
|
|
84
|
-
unwatchStore(store) {
|
|
85
|
-
const subscription = this.stores$$.get(store);
|
|
86
|
-
if (subscription !== undefined) {
|
|
87
|
-
subscription.unsubscribe();
|
|
88
|
-
this.stores$$.delete(store);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Stop watching for entities changes in all stores.
|
|
93
|
-
*/
|
|
94
|
-
unwatchAll() {
|
|
95
|
-
Array.from(this.stores$$.entries()).forEach((entries) => {
|
|
96
|
-
entries[1].unsubscribe();
|
|
97
|
-
});
|
|
98
|
-
this.stores$$.clear();
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Load features into a layer or clear the layer if the array of features is empty.
|
|
102
|
-
* @param features Store filtered features
|
|
103
|
-
* @param store Feature store
|
|
104
|
-
*/
|
|
105
|
-
onFeaturesChange(features, store) {
|
|
106
|
-
if (features.length === 0) {
|
|
107
|
-
store.clearLayer();
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
store.setLayerFeatures(features, this.selectMotion(store), this.options.viewScale, this.options.areaRatio, this.options.getFeatureId);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Selects the best motion
|
|
115
|
-
* @param store A FeatureStore to apply the motion
|
|
116
|
-
* @returns The motion selected
|
|
117
|
-
*/
|
|
118
|
-
selectMotion(store) {
|
|
119
|
-
if (this.motion !== undefined) {
|
|
120
|
-
return this.motion;
|
|
121
|
-
}
|
|
122
|
-
if (store.pristine === true) {
|
|
123
|
-
// If features have just been loaded into the store, move/zoom on them
|
|
124
|
-
return FeatureMotion.Default;
|
|
125
|
-
}
|
|
126
|
-
else if (store.count > store.view.count) {
|
|
127
|
-
// If features have been filtered, move/zoom on the remaining ones
|
|
128
|
-
return FeatureMotion.Default;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
// On insert, update or delete, do nothing
|
|
132
|
-
return FeatureMotion.None;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPakQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFRNUM7SUFQdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFakQsTUFBTSxDQUFnQjtJQUU5QixZQUFzQixPQUEyQztRQUMvRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUFvQztRQUUvRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQW1CO1FBQzNCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBbUI7UUFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FB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QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RvcmVTdHJhdGVneSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5T3B0aW9uc1xufSBmcm9tICcuLi9mZWF0dXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuXG4vKipcbiAqIFRoaXMgc3RyYXRlZ3kgbG9hZHMgYSBzdG9yZSdzIGZlYXR1cmVzIGludG8gaXQncyBsYXllciBjb3VudGVycGFydC5cbiAqIFRoZSBzdG9yZSAtPiBsYXllciBiaW5kaW5nIGlzIGEgb25lLXdheSBiaW5kaW5nLiBUaGF0IG1lYW5zIGFueSBlbnRpdHlcbiAqIGFkZGVkIHRvIHRoZSBzdG9yZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsYXllciBidXQgdGhlIG9wcG9zaXRlIGlzIGZhbHNlLlxuICpcbiAqIEltcG9ydGFudDogVGhpcyBzdHJhdGVneSBvYnNlcnZlcyBmaWx0ZXJlZCBlbnRpdGllcywgbm90IHJhdyBlbnRpdGllcy4gVGhpc1xuICogaXMgbm90IGNvbmZpZ3VyYWJsZSB5ZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kgZXh0ZW5kcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgc3RvcmUncyBmZWF0dXJlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZXMkJCA9IG5ldyBNYXA8RmVhdHVyZVN0b3JlLCBTdWJzY3JpcHRpb24+KCk7XG5cbiAgcHJpdmF0ZSBtb3Rpb246IEZlYXR1cmVNb3Rpb247XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLnNldE1vdGlvbihvcHRpb25zLm1vdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGlzIHN0cmF0ZWd5IHRvIGEgc3RvcmUgYW5kIHN0YXJ0IHdhdGNoaW5nIGZvciBlbnRpdGllcyBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBiaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhpcyBzdHJhdGVneSBmcm9tIGEgc3RvcmUgYW5kIHN0b3Agd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHVuYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci51bmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnVud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbW90aW9uIHRvIGFwcGx5IG9uIGxvYWRcbiAgICogQHBhcmFtIG1vdGlvbiBGZWF0dXJlIG1vdGlvblxuICAgKi9cbiAgc2V0TW90aW9uKG1vdGlvbjogRmVhdHVyZU1vdGlvbikge1xuICAgIHRoaXMubW90aW9uID0gbW90aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdhdGNoaW5nIGFsbCBzdG9yZXMgYWxyZWFkeSBib3VuZCB0byB0aGF0IHN0cmF0ZWd5IGF0IG9uY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvQWN0aXZhdGUoKSB7XG4gICAgdGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IEZlYXR1cmVTdG9yZSkgPT4gdGhpcy53YXRjaFN0b3JlKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBhbGwgc3RvcmVzIGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3lcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9EZWFjdGl2YXRlKCkge1xuICAgIHRoaXMudW53YXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIGZvciBlbnRpdGllcyBjaGFuZ2VzIGluIGEgc3RvcmUuXG4gICAqIEltcG9ydGFudDogTmV2ZXIgb2JzZXJ2ZSBhIHN0b3JlJ3Mgc29ydGVkIGVudGl0aWVzLiBJdCBtYWtlcyBubyBzZW5zZVxuICAgKiB0byBkaXNwbGF5IHNvcnRlZCBlbnRpdGllcyAoaW5zdGVhZCBvZiB1bnNvcnRlZCkgb24gYSBsYXllciBhbmQgaXRcbiAgICogd291bGQgcG90ZW50aWFsbHkgcmVzdWx0IGluIGEgbG90IG9mIHVzZWxlc3MgY29tcHV0YXRpb24uXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHdhdGNoU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIGlmICh0aGlzLnN0b3JlcyQkLmhhcyhzdG9yZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBzdG9yZS52aWV3XG4gICAgICAuYWxsJCgpXG4gICAgICAuc3Vic2NyaWJlKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PlxuICAgICAgICB0aGlzLm9uRmVhdHVyZXNDaGFuZ2UoZmVhdHVyZXMsIHN0b3JlKVxuICAgICAgKTtcbiAgICB0aGlzLnN0b3JlcyQkLnNldChzdG9yZSwgc3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBlbnRpdGllcyBjaGFuZ2VzIGluIGEgc3RvcmUuXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5zdG9yZXMkJC5nZXQoc3RvcmUpO1xuICAgIGlmIChzdWJzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN0b3JlcyQkLmRlbGV0ZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXMgaW4gYWxsIHN0b3Jlcy5cbiAgICovXG4gIHByaXZhdGUgdW53YXRjaEFsbCgpIHtcbiAgICBBcnJheS5mcm9tKHRoaXMuc3RvcmVzJCQuZW50cmllcygpKS5mb3JFYWNoKFxuICAgICAgKGVudHJpZXM6IFtGZWF0dXJlU3RvcmUsIFN1YnNjcmlwdGlvbl0pID0+IHtcbiAgICAgICAgZW50cmllc1sxXS51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5zdG9yZXMkJC5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZmVhdHVyZXMgaW50byBhIGxheWVyIG9yIGNsZWFyIHRoZSBsYXllciBpZiB0aGUgYXJyYXkgb2YgZmVhdHVyZXMgaXMgZW1wdHkuXG4gICAqIEBwYXJhbSBmZWF0dXJlcyBTdG9yZSBmaWx0ZXJlZCBmZWF0dXJlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvbkZlYXR1cmVzQ2hhbmdlKGZlYXR1cmVzOiBGZWF0dXJlW10sIHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdG9yZS5jbGVhckxheWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlLnNldExheWVyRmVhdHVyZXMoXG4gICAgICAgIGZlYXR1cmVzLFxuICAgICAgICB0aGlzLnNlbGVjdE1vdGlvbihzdG9yZSksXG4gICAgICAgIHRoaXMub3B0aW9ucy52aWV3U2NhbGUsXG4gICAgICAgIHRoaXMub3B0aW9ucy5hcmVhUmF0aW8sXG4gICAgICAgIHRoaXMub3B0aW9ucy5nZXRGZWF0dXJlSWRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGJlc3QgbW90aW9uXG4gICAqIEBwYXJhbSBzdG9yZSBBIEZlYXR1cmVTdG9yZSB0byBhcHBseSB0aGUgbW90aW9uXG4gICAqIEByZXR1cm5zIFRoZSBtb3Rpb24gc2VsZWN0ZWRcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0TW90aW9uKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAodGhpcy5tb3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubW90aW9uO1xuICAgIH1cblxuICAgIGlmIChzdG9yZS5wcmlzdGluZSA9PT0gdHJ1ZSkge1xuICAgICAgLy8gSWYgZmVhdHVyZXMgaGF2ZSBqdXN0IGJlZW4gbG9hZGVkIGludG8gdGhlIHN0b3JlLCBtb3ZlL3pvb20gb24gdGhlbVxuICAgICAgcmV0dXJuIEZlYXR1cmVNb3Rpb24uRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKHN0b3JlLmNvdW50ID4gc3RvcmUudmlldy5jb3VudCkge1xuICAgICAgLy8gSWYgZmVhdHVyZXMgaGF2ZSBiZWVuIGZpbHRlcmVkLCBtb3ZlL3pvb20gb24gdGhlIHJlbWFpbmluZyBvbmVzXG4gICAgICByZXR1cm4gRmVhdHVyZU1vdGlvbi5EZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbiBpbnNlcnQsIHVwZGF0ZSBvciBkZWxldGUsIGRvIG5vdGhpbmdcbiAgICAgIHJldHVybiBGZWF0dXJlTW90aW9uLk5vbmU7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { EntityStoreStrategy } from '@igo2/common/entity';
|
|
2
|
-
import { Document as FlexSearchDocument } from 'flexsearch';
|
|
3
|
-
import { skipWhile } from 'rxjs/operators';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* This strategy loads a layer's features's properties into a searchable index.
|
|
7
|
-
*/
|
|
8
|
-
export class FeatureStoreSearchIndexStrategy extends EntityStoreStrategy {
|
|
9
|
-
options;
|
|
10
|
-
/**
|
|
11
|
-
* Subscription to the store's OL source changes
|
|
12
|
-
*/
|
|
13
|
-
stores$$ = new Map();
|
|
14
|
-
constructor(options) {
|
|
15
|
-
super(options);
|
|
16
|
-
this.options = options;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Bind this strategy to a store and start watching for entities changes
|
|
20
|
-
* @param store Feature store
|
|
21
|
-
*/
|
|
22
|
-
bindStore(store) {
|
|
23
|
-
super.bindStore(store);
|
|
24
|
-
if (this.active === true) {
|
|
25
|
-
this.watchStore(store);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Unbind this strategy from a store and stop watching for entities changes
|
|
30
|
-
* @param store Feature store
|
|
31
|
-
*/
|
|
32
|
-
unbindStore(store) {
|
|
33
|
-
super.unbindStore(store);
|
|
34
|
-
if (this.active === true) {
|
|
35
|
-
this.unwatchStore(store);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Start watching all stores already bound to that strategy at once.
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
|
-
doActivate() {
|
|
43
|
-
this.stores.forEach((store) => this.watchStore(store));
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Stop watching all stores bound to that strategy
|
|
47
|
-
* @internal
|
|
48
|
-
*/
|
|
49
|
-
doDeactivate() {
|
|
50
|
-
this.unwatchAll();
|
|
51
|
-
}
|
|
52
|
-
initStoreSearchIndex(store) {
|
|
53
|
-
store.searchDocument = new FlexSearchDocument({ tokenize: 'full' });
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Watch for a store's entities changes
|
|
57
|
-
* @param store Feature store
|
|
58
|
-
*/
|
|
59
|
-
watchStore(store) {
|
|
60
|
-
if (this.stores$$.has(store)) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.initStoreSearchIndex(store);
|
|
64
|
-
store.entities$
|
|
65
|
-
.pipe(skipWhile((e) => !e.length))
|
|
66
|
-
.subscribe(() => this.onEntitiesChanges(store));
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Stop watching for a store's entities changes
|
|
70
|
-
* @param store Feature store
|
|
71
|
-
*/
|
|
72
|
-
unwatchStore(store) {
|
|
73
|
-
const key = this.stores$$.get(store);
|
|
74
|
-
if (key !== undefined) {
|
|
75
|
-
store.searchDocument = undefined;
|
|
76
|
-
this.stores$$.delete(store);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Stop watching for OL source changes in all stores.
|
|
81
|
-
*/
|
|
82
|
-
unwatchAll() {
|
|
83
|
-
this.stores$$.clear();
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Maintain searcahble index for every loaded entities
|
|
87
|
-
* @param store Feature store
|
|
88
|
-
*/
|
|
89
|
-
onEntitiesChanges(store) {
|
|
90
|
-
const ratio = this.options.percentDistinctValueRatio || 2;
|
|
91
|
-
const featuresProperties = [];
|
|
92
|
-
store.index.forEach((value, key) => {
|
|
93
|
-
const fp = value.properties;
|
|
94
|
-
fp.igoSearchID = key;
|
|
95
|
-
featuresProperties.push(fp);
|
|
96
|
-
});
|
|
97
|
-
const toIndex = [];
|
|
98
|
-
let columnsToNotIndex = [];
|
|
99
|
-
let contentToIndex = [];
|
|
100
|
-
if (this.options.sourceFields) {
|
|
101
|
-
columnsToNotIndex = this.options.sourceFields.filter((sf) => !sf.searchIndex?.enabled);
|
|
102
|
-
contentToIndex = this.options.sourceFields
|
|
103
|
-
.filter((sf) => sf.searchIndex?.enabled)
|
|
104
|
-
.map((sf2) => {
|
|
105
|
-
return Object.assign({}, { field: sf2.name, tokenize: 'full' }, sf2.searchIndex);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
if (featuresProperties.length) {
|
|
110
|
-
// THIS METHOD COMPUTE COLUMN DISTINCT VALUE TO FILTER WHICH COLUMN TO INDEX BASED ON A RATIO or discard float columns
|
|
111
|
-
const columns = Object.keys(featuresProperties[0]);
|
|
112
|
-
const columnsToIndex = [];
|
|
113
|
-
columnsToNotIndex = columns
|
|
114
|
-
.map((column) => {
|
|
115
|
-
const distinctValues = [
|
|
116
|
-
...new Set(featuresProperties.map((item) => item[column]))
|
|
117
|
-
];
|
|
118
|
-
// identify column to not index based on a ratio distinctValues/nb of features OR discart exclusive float column (ex: lat, long)
|
|
119
|
-
if ((distinctValues.length / featuresProperties.length) * 100 <=
|
|
120
|
-
ratio ||
|
|
121
|
-
distinctValues.every((n) => Number(n) === n && n % 1 !== 0)) {
|
|
122
|
-
columnsToNotIndex.push(column);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
columnsToIndex.push(column);
|
|
126
|
-
}
|
|
127
|
-
})
|
|
128
|
-
.filter((f) => f);
|
|
129
|
-
const keysToIndex = columnsToIndex.filter((f) => f !== 'igoSearchID');
|
|
130
|
-
contentToIndex = keysToIndex.map((key) => {
|
|
131
|
-
return { field: key, tokenize: 'full' };
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
store.index.forEach((value) => {
|
|
136
|
-
const propertiesToIndex = JSON.parse(JSON.stringify(value.properties));
|
|
137
|
-
columnsToNotIndex.map((c) => delete propertiesToIndex[c]);
|
|
138
|
-
if (Object.keys(propertiesToIndex).length) {
|
|
139
|
-
toIndex.push(propertiesToIndex);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
if (toIndex.length === 0) {
|
|
143
|
-
this.initStoreSearchIndex(store);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
store.searchDocument = new FlexSearchDocument({
|
|
147
|
-
document: {
|
|
148
|
-
id: 'igoSearchID',
|
|
149
|
-
index: contentToIndex
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
toIndex.map((i) => {
|
|
153
|
-
store.searchDocument.add(i.igoSearchID, i);
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFtQixRQUFRLElBQUksa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzNDOzs7R0FHRztBQUNILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxtQkFBbUI7SUFNaEQ7SUFMdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFFbkQsWUFBc0IsT0FBK0M7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREssWUFBTyxHQUFQLE9BQU8sQ0FBd0M7SUFFckUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxLQUFtQjtRQUMzQixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDTyxVQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENB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LENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5IH0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCB7IERvY3VtZW50T3B0aW9ucywgRG9jdW1lbnQgYXMgRmxleFNlYXJjaERvY3VtZW50IH0gZnJvbSAnZmxleHNlYXJjaCc7XG5pbXBvcnQgeyBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmVTdG9yZVNlYXJjaEluZGV4U3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnLi4vZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcblxuLyoqXG4gKlxuICogVGhpcyBzdHJhdGVneSBsb2FkcyBhIGxheWVyJ3MgZmVhdHVyZXMncyBwcm9wZXJ0aWVzIGludG8gYSBzZWFyY2hhYmxlIGluZGV4LlxuICovXG5leHBvcnQgY2xhc3MgRmVhdHVyZVN0b3JlU2VhcmNoSW5kZXhTdHJhdGVneSBleHRlbmRzIEVudGl0eVN0b3JlU3RyYXRlZ3kge1xuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBzdG9yZSdzIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIHN0b3JlcyQkID0gbmV3IE1hcDxGZWF0dXJlU3RvcmUsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRmVhdHVyZVN0b3JlU2VhcmNoSW5kZXhTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIGJpbmRTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgc3VwZXIuYmluZFN0b3JlKHN0b3JlKTtcbiAgICBpZiAodGhpcy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGlzIHN0cmF0ZWd5IGZyb20gYSBzdG9yZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgZW50aXRpZXMgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgdW5iaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLnVuYmluZFN0b3JlKHN0b3JlKTtcbiAgICBpZiAodGhpcy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMudW53YXRjaFN0b3JlKHN0b3JlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgd2F0Y2hpbmcgYWxsIHN0b3JlcyBhbHJlYWR5IGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3kgYXQgb25jZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9BY3RpdmF0ZSgpIHtcbiAgICB0aGlzLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogRmVhdHVyZVN0b3JlKSA9PiB0aGlzLndhdGNoU3RvcmUoc3RvcmUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGFsbCBzdG9yZXMgYm91bmQgdG8gdGhhdCBzdHJhdGVneVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0RlYWN0aXZhdGUoKSB7XG4gICAgdGhpcy51bndhdGNoQWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdG9yZVNlYXJjaEluZGV4KHN0b3JlKSB7XG4gICAgc3RvcmUuc2VhcmNoRG9jdW1lbnQgPSBuZXcgRmxleFNlYXJjaERvY3VtZW50KHsgdG9rZW5pemU6ICdmdWxsJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgYSBzdG9yZSdzIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgd2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgaWYgKHRoaXMuc3RvcmVzJCQuaGFzKHN0b3JlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluaXRTdG9yZVNlYXJjaEluZGV4KHN0b3JlKTtcblxuICAgIHN0b3JlLmVudGl0aWVzJFxuICAgICAgLnBpcGUoc2tpcFdoaWxlKChlKSA9PiAhZS5sZW5ndGgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRW50aXRpZXNDaGFuZ2VzKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgYSBzdG9yZSdzIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgdW53YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlcyQkLmdldChzdG9yZSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdG9yZS5zZWFyY2hEb2N1bWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmVzJCQuZGVsZXRlKHN0b3JlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgT0wgc291cmNlIGNoYW5nZXMgaW4gYWxsIHN0b3Jlcy5cbiAgICovXG4gIHByaXZhdGUgdW53YXRjaEFsbCgpIHtcbiAgICB0aGlzLnN0b3JlcyQkLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFpbnRhaW4gc2VhcmNhaGJsZSBpbmRleCBmb3IgZXZlcnkgbG9hZGVkIGVudGl0aWVzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIG9uRW50aXRpZXNDaGFuZ2VzKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMub3B0aW9ucy5wZXJjZW50RGlzdGluY3RWYWx1ZVJhdGlvIHx8IDI7XG4gICAgY29uc3QgZmVhdHVyZXNQcm9wZXJ0aWVzID0gW107XG4gICAgc3RvcmUuaW5kZXguZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZnAgPSB2YWx1ZS5wcm9wZXJ0aWVzO1xuICAgICAgZnAuaWdvU2VhcmNoSUQgPSBrZXk7XG4gICAgICBmZWF0dXJlc1Byb3BlcnRpZXMucHVzaChmcCk7XG4gICAgfSk7XG4gICAgY29uc3QgdG9JbmRleCA9IFtdO1xuICAgIGxldCBjb2x1bW5zVG9Ob3RJbmRleCA9IFtdO1xuICAgIGxldCBjb250ZW50VG9JbmRleCA9IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XG4gICAgICBjb2x1bW5zVG9Ob3RJbmRleCA9IHRoaXMub3B0aW9ucy5zb3VyY2VGaWVsZHMuZmlsdGVyKFxuICAgICAgICAoc2YpID0+ICFzZi5zZWFyY2hJbmRleD8uZW5hYmxlZFxuICAgICAgKTtcbiAgICAgIGNvbnRlbnRUb0luZGV4ID0gdGhpcy5vcHRpb25zLnNvdXJjZUZpZWxkc1xuICAgICAgICAuZmlsdGVyKChzZikgPT4gc2Yuc2VhcmNoSW5kZXg/LmVuYWJsZWQpXG4gICAgICAgIC5tYXAoKHNmMikgPT4ge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICB7IGZpZWxkOiBzZjIubmFtZSwgdG9rZW5pemU6ICdmdWxsJyB9LFxuICAgICAgICAgICAgc2YyLnNlYXJjaEluZGV4XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmZWF0dXJlc1Byb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRISVMgTUVUSE9EIENPTVBVVEUgQ09MVU1OIERJU1RJTkNUIFZBTFVFIFRPIEZJTFRFUiBXSElDSCBDT0xVTU4gVE8gSU5ERVggQkFTRUQgT04gQSBSQVRJTyBvciBkaXNjYXJkIGZsb2F0IGNvbHVtbnNcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IE9iamVjdC5rZXlzKGZlYXR1cmVzUHJvcGVydGllc1swXSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNUb0luZGV4ID0gW107XG4gICAgICAgIGNvbHVtbnNUb05vdEluZGV4ID0gY29sdW1uc1xuICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzdGluY3RWYWx1ZXMgPSBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoZmVhdHVyZXNQcm9wZXJ0aWVzLm1hcCgoaXRlbSkgPT4gaXRlbVtjb2x1bW5dKSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICAvLyBpZGVudGlmeSBjb2x1bW4gdG8gbm90IGluZGV4IGJhc2VkIG9uIGEgcmF0aW8gZGlzdGluY3RWYWx1ZXMvbmIgb2YgZmVhdHVyZXMgT1IgZGlzY2FydCBleGNsdXNpdmUgZmxvYXQgY29sdW1uIChleDogbGF0LCBsb25nKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoZGlzdGluY3RWYWx1ZXMubGVuZ3RoIC8gZmVhdHVyZXNQcm9wZXJ0aWVzLmxlbmd0aCkgKiAxMDAgPD1cbiAgICAgICAgICAgICAgICByYXRpbyB8fFxuICAgICAgICAgICAgICBkaXN0aW5jdFZhbHVlcy5ldmVyeSgobikgPT4gTnVtYmVyKG4pID09PSBuICYmIG4gJSAxICE9PSAwKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbHVtbnNUb05vdEluZGV4LnB1c2goY29sdW1uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbHVtbnNUb0luZGV4LnB1c2goY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYpO1xuICAgICAgICBjb25zdCBrZXlzVG9JbmRleCA9IGNvbHVtbnNUb0luZGV4LmZpbHRlcigoZikgPT4gZiAhPT0gJ2lnb1NlYXJjaElEJyk7XG4gICAgICAgIGNvbnRlbnRUb0luZGV4ID0ga2V5c1RvSW5kZXgubWFwKChrZXkpID0+IHtcbiAgICAgICAgICByZXR1cm4geyBmaWVsZDoga2V5LCB0b2tlbml6ZTogJ2Z1bGwnIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBzdG9yZS5pbmRleC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllc1RvSW5kZXggPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlLnByb3BlcnRpZXMpKTtcbiAgICAgIGNvbHVtbnNUb05vdEluZGV4Lm1hcCgoYykgPT4gZGVsZXRlIHByb3BlcnRpZXNUb0luZGV4W2NdKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhwcm9wZXJ0aWVzVG9JbmRleCkubGVuZ3RoKSB7XG4gICAgICAgIHRvSW5kZXgucHVzaChwcm9wZXJ0aWVzVG9JbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodG9JbmRleC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW5pdFN0b3JlU2VhcmNoSW5kZXgoc3RvcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdG9yZS5zZWFyY2hEb2N1bWVudCA9IG5ldyBGbGV4U2VhcmNoRG9jdW1lbnQoe1xuICAgICAgICBkb2N1bWVudDoge1xuICAgICAgICAgIGlkOiAnaWdvU2VhcmNoSUQnLFxuICAgICAgICAgIGluZGV4OiBjb250ZW50VG9JbmRleFxuICAgICAgICB9IGFzIERvY3VtZW50T3B0aW9uczxhbnk+XG4gICAgICB9KTtcbiAgICAgIHRvSW5kZXgubWFwKChpKSA9PiB7XG4gICAgICAgIHN0b3JlLnNlYXJjaERvY3VtZW50LmFkZChpLmlnb1NlYXJjaElELCBpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|