@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,431 +0,0 @@
|
|
|
1
|
-
import olFeature from 'ol/Feature';
|
|
2
|
-
import olGeolocation from 'ol/Geolocation';
|
|
3
|
-
import { Point } from 'ol/geom';
|
|
4
|
-
import OlCircle from 'ol/geom/Circle';
|
|
5
|
-
import { fromCircle } from 'ol/geom/Polygon';
|
|
6
|
-
import * as olproj from 'ol/proj';
|
|
7
|
-
import * as olSphere from 'ol/sphere';
|
|
8
|
-
import * as olstyle from 'ol/style';
|
|
9
|
-
import { BehaviorSubject, interval } from 'rxjs';
|
|
10
|
-
import { switchMap } from 'rxjs/operators';
|
|
11
|
-
import { FeatureMotion } from '../../../feature/shared/feature.enums';
|
|
12
|
-
import { computeOlFeaturesExtent, featuresAreOutOfView, hideOlFeature, moveToOlFeatures } from '../../../feature/shared/feature.utils';
|
|
13
|
-
import { Overlay } from '../../../overlay/shared/overlay';
|
|
14
|
-
import { MapController } from './controller';
|
|
15
|
-
import { GeolocationOverlayType } from './geolocation.interface';
|
|
16
|
-
/**
|
|
17
|
-
* Controller to handle map view interactions
|
|
18
|
-
*/
|
|
19
|
-
export class MapGeolocationController extends MapController {
|
|
20
|
-
map;
|
|
21
|
-
options;
|
|
22
|
-
storageService;
|
|
23
|
-
configService;
|
|
24
|
-
arrowRotation;
|
|
25
|
-
subscriptions$$ = [];
|
|
26
|
-
geolocationOverlay;
|
|
27
|
-
positionFeatureStyle = new olstyle.Style({
|
|
28
|
-
image: new olstyle.Circle({
|
|
29
|
-
radius: 6,
|
|
30
|
-
fill: new olstyle.Fill({
|
|
31
|
-
color: '#3399CC'
|
|
32
|
-
}),
|
|
33
|
-
stroke: new olstyle.Stroke({
|
|
34
|
-
color: '#fff',
|
|
35
|
-
width: 2
|
|
36
|
-
})
|
|
37
|
-
})
|
|
38
|
-
});
|
|
39
|
-
accuracyFeatureStyle = new olstyle.Style({
|
|
40
|
-
stroke: new olstyle.Stroke({
|
|
41
|
-
color: 'rgba(120, 120, 120, 0.4)',
|
|
42
|
-
width: 1
|
|
43
|
-
}),
|
|
44
|
-
fill: new olstyle.Fill({
|
|
45
|
-
color: 'rgba(120, 120, 120, 0.4)'
|
|
46
|
-
})
|
|
47
|
-
});
|
|
48
|
-
get bufferStyle() {
|
|
49
|
-
return new olstyle.Style({
|
|
50
|
-
stroke: new olstyle.Stroke({ width: 2, color: this.buffer.bufferStroke }),
|
|
51
|
-
fill: new olstyle.Fill({ color: this.buffer.bufferFill }),
|
|
52
|
-
text: new olstyle.Text({
|
|
53
|
-
textAlign: 'left',
|
|
54
|
-
offsetX: 10,
|
|
55
|
-
offsetY: -10,
|
|
56
|
-
font: '12px Calibri,sans-serif',
|
|
57
|
-
text: this.buffer.showBufferRadius
|
|
58
|
-
? `${this.buffer.bufferRadius}m`
|
|
59
|
-
: '',
|
|
60
|
-
fill: new olstyle.Fill({ color: '#000' }),
|
|
61
|
-
stroke: new olstyle.Stroke({ color: '#fff', width: 3 })
|
|
62
|
-
})
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
get arrowStyle() {
|
|
66
|
-
return new olstyle.Style({
|
|
67
|
-
image: new olstyle.RegularShape({
|
|
68
|
-
radius: 5.5,
|
|
69
|
-
fill: new olstyle.Fill({
|
|
70
|
-
color: 'rgba(0, 132, 202)'
|
|
71
|
-
}),
|
|
72
|
-
stroke: new olstyle.Stroke({
|
|
73
|
-
color: '#fff',
|
|
74
|
-
width: 1.5
|
|
75
|
-
}),
|
|
76
|
-
points: 3,
|
|
77
|
-
displacement: [0, 9],
|
|
78
|
-
rotation: this.arrowRotation,
|
|
79
|
-
rotateWithView: true
|
|
80
|
-
})
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
geolocation;
|
|
84
|
-
/**
|
|
85
|
-
* Observable of the current emission interval of the position. In seconds
|
|
86
|
-
*/
|
|
87
|
-
emissionIntervalSeconds$ = new BehaviorSubject(5);
|
|
88
|
-
/**
|
|
89
|
-
* Observable of the current position
|
|
90
|
-
*/
|
|
91
|
-
position$ = new BehaviorSubject(undefined);
|
|
92
|
-
/**
|
|
93
|
-
* Observable of the tracking state
|
|
94
|
-
*/
|
|
95
|
-
tracking$ = new BehaviorSubject(undefined);
|
|
96
|
-
/**
|
|
97
|
-
* Observable of the follow position state
|
|
98
|
-
*/
|
|
99
|
-
followPosition$ = new BehaviorSubject(undefined);
|
|
100
|
-
lastPosition;
|
|
101
|
-
/**
|
|
102
|
-
* Whether the geolocate should show a buffer around the current position
|
|
103
|
-
*/
|
|
104
|
-
set buffer(value) {
|
|
105
|
-
this._buffer = value;
|
|
106
|
-
this.handleFeatureCreation(this.position$.value);
|
|
107
|
-
}
|
|
108
|
-
get buffer() {
|
|
109
|
-
return this._buffer;
|
|
110
|
-
}
|
|
111
|
-
_buffer;
|
|
112
|
-
/**
|
|
113
|
-
* Whether the geolocate controller accuracy threshold to store/show the position.
|
|
114
|
-
*/
|
|
115
|
-
set accuracyThreshold(value) {
|
|
116
|
-
this._accuracyThreshold = value;
|
|
117
|
-
this.handleFeatureCreation(this.position$.value);
|
|
118
|
-
}
|
|
119
|
-
get accuracyThreshold() {
|
|
120
|
-
return this._accuracyThreshold;
|
|
121
|
-
}
|
|
122
|
-
_accuracyThreshold;
|
|
123
|
-
get olGeolocation() {
|
|
124
|
-
return this.geolocation;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Whether the activate the geolocation.
|
|
128
|
-
*/
|
|
129
|
-
get tracking() {
|
|
130
|
-
return this.geolocation.getTracking();
|
|
131
|
-
}
|
|
132
|
-
set tracking(value) {
|
|
133
|
-
this.geolocation.setTracking(value || false);
|
|
134
|
-
this.tracking$.next(value);
|
|
135
|
-
if (this.storageService && value !== undefined) {
|
|
136
|
-
this.storageService.set('geolocation.tracking', value);
|
|
137
|
-
}
|
|
138
|
-
if (!value) {
|
|
139
|
-
this.position$.next(undefined);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Whether the activate the view tracking of the current position
|
|
144
|
-
*/
|
|
145
|
-
set followPosition(value) {
|
|
146
|
-
this._followPosition = value;
|
|
147
|
-
this.followPosition$.next(value);
|
|
148
|
-
if (this.configService?.getConfig('geolocate.followPosition') === false) {
|
|
149
|
-
this._followPosition = false;
|
|
150
|
-
this.followPosition$.next(false);
|
|
151
|
-
}
|
|
152
|
-
this.handleFeatureCreation(this.position$.value);
|
|
153
|
-
if (this.storageService && value !== undefined) {
|
|
154
|
-
this.storageService.set('geolocation.followPosition', value);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
get followPosition() {
|
|
158
|
-
return this._followPosition;
|
|
159
|
-
}
|
|
160
|
-
_followPosition;
|
|
161
|
-
constructor(map, options, storageService, configService) {
|
|
162
|
-
super();
|
|
163
|
-
this.map = map;
|
|
164
|
-
this.options = options;
|
|
165
|
-
this.storageService = storageService;
|
|
166
|
-
this.configService = configService;
|
|
167
|
-
this.geolocationOverlay = new Overlay(this.map);
|
|
168
|
-
this._followPosition =
|
|
169
|
-
this.options && this.options.followPosition
|
|
170
|
-
? this.options.followPosition
|
|
171
|
-
: false;
|
|
172
|
-
this._buffer =
|
|
173
|
-
this.options && this.options.buffer ? this.options.buffer : undefined;
|
|
174
|
-
this._accuracyThreshold =
|
|
175
|
-
this.options && this.options.accuracyThreshold
|
|
176
|
-
? this.options.accuracyThreshold
|
|
177
|
-
: 5000;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Add or remove this controller to/from a map.
|
|
181
|
-
* @param map OL Map
|
|
182
|
-
*/
|
|
183
|
-
setOlMap(olMap) {
|
|
184
|
-
super.setOlMap(olMap);
|
|
185
|
-
this.setupObservers();
|
|
186
|
-
}
|
|
187
|
-
deleteGeolocationFeatures() {
|
|
188
|
-
this.deleteFeatureByType(GeolocationOverlayType.Position);
|
|
189
|
-
this.deleteFeatureByType(GeolocationOverlayType.PositionDirection);
|
|
190
|
-
this.deleteFeatureByType(GeolocationOverlayType.Accuracy);
|
|
191
|
-
this.deleteFeatureByType(GeolocationOverlayType.Buffer);
|
|
192
|
-
}
|
|
193
|
-
setupObservers() {
|
|
194
|
-
this.tracking$.subscribe((tracking) => {
|
|
195
|
-
if (tracking) {
|
|
196
|
-
this.onPositionChange(true, true);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
this.deleteGeolocationFeatures();
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
this.geolocation = new olGeolocation({
|
|
203
|
-
// enableHighAccuracy must be set to true to have the heading value.
|
|
204
|
-
trackingOptions: {
|
|
205
|
-
enableHighAccuracy: true,
|
|
206
|
-
maximumAge: 10000,
|
|
207
|
-
timeout: 600000
|
|
208
|
-
},
|
|
209
|
-
projection: this.options.projection
|
|
210
|
-
});
|
|
211
|
-
let tracking = false;
|
|
212
|
-
this.subscriptions$$.push(this.emissionIntervalSeconds$
|
|
213
|
-
.pipe(switchMap((value) => interval(value * 1000)))
|
|
214
|
-
.subscribe(() => {
|
|
215
|
-
if (tracking === this.tracking) {
|
|
216
|
-
this.onPositionChange(true);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
tracking = this.tracking;
|
|
220
|
-
this.onPositionChange(true, true);
|
|
221
|
-
}
|
|
222
|
-
}));
|
|
223
|
-
this.geolocation.on('change', () => {
|
|
224
|
-
this.onPositionChange(false, false);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
updateArrowFeatureOrientation(position) {
|
|
228
|
-
const position4326 = olproj.transform(position.position, position.projection, 'EPSG:4326');
|
|
229
|
-
if (!this.lastPosition) {
|
|
230
|
-
this.lastPosition = { coordinates: position4326, dateTime: new Date() };
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
const arrowFeature = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
|
|
234
|
-
const isMoving = position?.speed > 1.25 &&
|
|
235
|
-
this.distanceBetweenPoints(this.lastPosition.coordinates, position4326) >
|
|
236
|
-
0.003;
|
|
237
|
-
if (position.accuracy <= this.accuracyThreshold && isMoving) {
|
|
238
|
-
// Calculate the heading using current position and last recorded
|
|
239
|
-
// because ol heading not returning right value
|
|
240
|
-
const dx = position4326[1] - this.lastPosition.coordinates[1];
|
|
241
|
-
const dy = position4326[0] - this.lastPosition.coordinates[0];
|
|
242
|
-
let theta = Math.atan2(dy, dx);
|
|
243
|
-
if (theta < 0)
|
|
244
|
-
theta = 2 * Math.PI + theta;
|
|
245
|
-
this.arrowRotation = theta;
|
|
246
|
-
if (arrowFeature) {
|
|
247
|
-
arrowFeature.setStyle(this.arrowStyle);
|
|
248
|
-
}
|
|
249
|
-
this.lastPosition = { coordinates: position4326, dateTime: new Date() };
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
if (arrowFeature &&
|
|
253
|
-
new Date().getTime() - this.lastPosition.dateTime.getTime() > 3000)
|
|
254
|
-
hideOlFeature(arrowFeature);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* @returns distance in km between coord1 and coord2
|
|
259
|
-
*/
|
|
260
|
-
distanceBetweenPoints(coord1, coord2) {
|
|
261
|
-
return olSphere.getDistance(coord1, coord2) / 1000;
|
|
262
|
-
}
|
|
263
|
-
addOnChangedListener(event) {
|
|
264
|
-
const listener = () => {
|
|
265
|
-
event(this.geolocation);
|
|
266
|
-
};
|
|
267
|
-
this.geolocation.on('change', listener);
|
|
268
|
-
return listener;
|
|
269
|
-
}
|
|
270
|
-
deleteChangedListener(event) {
|
|
271
|
-
this.geolocation.un('change', event);
|
|
272
|
-
}
|
|
273
|
-
updateGeolocationOptions(options) {
|
|
274
|
-
if (!options) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
// todo maybe a dedicated interface for geolocation should be defined instead of putting these inside the mapviewoptions?
|
|
278
|
-
let tracking = options.geolocate;
|
|
279
|
-
let followPosition = options.alwaysTracking;
|
|
280
|
-
if (this.storageService) {
|
|
281
|
-
const storedTracking = this.storageService.get('geolocation.tracking');
|
|
282
|
-
if (storedTracking !== null && storedTracking !== undefined) {
|
|
283
|
-
tracking = storedTracking;
|
|
284
|
-
}
|
|
285
|
-
const storedFollowPosition = this.storageService.get('geolocation.followPosition');
|
|
286
|
-
if (storedFollowPosition !== null && storedFollowPosition !== undefined) {
|
|
287
|
-
followPosition = storedFollowPosition;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
this.tracking = tracking;
|
|
291
|
-
this.followPosition = followPosition;
|
|
292
|
-
this.buffer = options.buffer;
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Teardown any observers
|
|
296
|
-
*/
|
|
297
|
-
teardownObservers() {
|
|
298
|
-
if (this.subscriptions$$.length) {
|
|
299
|
-
this.subscriptions$$.map((s) => s.unsubscribe());
|
|
300
|
-
}
|
|
301
|
-
super.teardownObservers();
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* On position change, get the position, show it on the map and record it.
|
|
305
|
-
* @param emitEvent Map event
|
|
306
|
-
*/
|
|
307
|
-
onPositionChange(emitEvent = false, zoomTo = false) {
|
|
308
|
-
if (!this.tracking) {
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
const geolocateProperties = this.geolocation.getProperties();
|
|
312
|
-
if (geolocateProperties.accuracy > this.accuracyThreshold) {
|
|
313
|
-
console.warn('Poor geolocation accuracy. No position are stored/shown');
|
|
314
|
-
this.position$.next(undefined);
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
const position = {
|
|
318
|
-
position: geolocateProperties.position,
|
|
319
|
-
projection: this.geolocation.getProjection().getCode(),
|
|
320
|
-
accuracy: geolocateProperties.accuracy,
|
|
321
|
-
altitude: geolocateProperties.altitude,
|
|
322
|
-
altitudeAccuracy: geolocateProperties.altitudeAccuracy,
|
|
323
|
-
heading: geolocateProperties.heading,
|
|
324
|
-
speed: geolocateProperties.speed,
|
|
325
|
-
enableHighAccuracy: geolocateProperties.trackingOptions
|
|
326
|
-
?.enableHighAccuracy
|
|
327
|
-
? true
|
|
328
|
-
: false,
|
|
329
|
-
timestamp: new Date()
|
|
330
|
-
};
|
|
331
|
-
this.handleFeatureCreation(position);
|
|
332
|
-
this.handleViewFromFeatures(position, zoomTo);
|
|
333
|
-
if (emitEvent) {
|
|
334
|
-
this.position$.next(position);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
getFeatureByType(type) {
|
|
338
|
-
return this.geolocationOverlay.dataSource.ol.getFeatureById(type);
|
|
339
|
-
}
|
|
340
|
-
deleteFeatureByType(type) {
|
|
341
|
-
const featureById = this.geolocationOverlay?.dataSource.ol.getFeatureById(type);
|
|
342
|
-
if (featureById) {
|
|
343
|
-
this.geolocationOverlay.dataSource.ol.removeFeature(featureById);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
handleFeatureCreation(position) {
|
|
347
|
-
if (!position || !position.position) {
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const positionGeometry = new Point(position.position);
|
|
351
|
-
const accuracyGeometry = fromCircle(new OlCircle(position.position, position.accuracy || 0));
|
|
352
|
-
let positionFeature = this.getFeatureByType(GeolocationOverlayType.Position);
|
|
353
|
-
let positionFeatureArrow = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
|
|
354
|
-
let accuracyFeature = this.getFeatureByType(GeolocationOverlayType.Accuracy);
|
|
355
|
-
const positionFeatureExists = positionFeature ? true : false;
|
|
356
|
-
const positionFeatureArrowExists = positionFeatureArrow ? true : false;
|
|
357
|
-
const accuracyFeatureExists = accuracyFeature ? true : false;
|
|
358
|
-
if (!positionFeatureArrowExists) {
|
|
359
|
-
positionFeatureArrow = new olFeature({
|
|
360
|
-
geometry: positionGeometry
|
|
361
|
-
});
|
|
362
|
-
positionFeatureArrow.setId(GeolocationOverlayType.PositionDirection);
|
|
363
|
-
hideOlFeature(positionFeatureArrow);
|
|
364
|
-
}
|
|
365
|
-
if (!positionFeatureExists) {
|
|
366
|
-
positionFeature = new olFeature({ geometry: positionGeometry });
|
|
367
|
-
positionFeature.setId(GeolocationOverlayType.Position);
|
|
368
|
-
positionFeature.setStyle(this.positionFeatureStyle);
|
|
369
|
-
}
|
|
370
|
-
if (!accuracyFeatureExists) {
|
|
371
|
-
accuracyFeature = new olFeature({ geometry: accuracyGeometry });
|
|
372
|
-
accuracyFeature.setId(GeolocationOverlayType.Accuracy);
|
|
373
|
-
accuracyFeature.setStyle(this.accuracyFeatureStyle);
|
|
374
|
-
}
|
|
375
|
-
if (positionGeometry) {
|
|
376
|
-
positionFeatureExists
|
|
377
|
-
? positionFeature.setGeometry(positionGeometry)
|
|
378
|
-
: this.geolocationOverlay.addOlFeature(positionFeature, FeatureMotion.None);
|
|
379
|
-
positionFeatureArrowExists
|
|
380
|
-
? positionFeatureArrow.setGeometry(positionGeometry)
|
|
381
|
-
: this.geolocationOverlay.addOlFeature(positionFeatureArrow, FeatureMotion.None);
|
|
382
|
-
this.updateArrowFeatureOrientation(position);
|
|
383
|
-
accuracyFeatureExists
|
|
384
|
-
? accuracyFeature.setGeometry(accuracyGeometry)
|
|
385
|
-
: this.geolocationOverlay.addOlFeature(accuracyFeature, FeatureMotion.None);
|
|
386
|
-
if (this.buffer) {
|
|
387
|
-
let bufferFeature = this.getFeatureByType(GeolocationOverlayType.Buffer);
|
|
388
|
-
const bufferFeatureExists = bufferFeature ? true : false;
|
|
389
|
-
const bufferGeometry = new OlCircle(position.position, this.buffer.bufferRadius);
|
|
390
|
-
if (!bufferFeatureExists) {
|
|
391
|
-
bufferFeature = new olFeature(bufferGeometry);
|
|
392
|
-
bufferFeature.setId(GeolocationOverlayType.Buffer);
|
|
393
|
-
bufferFeature.setStyle(this.positionFeatureStyle);
|
|
394
|
-
}
|
|
395
|
-
bufferFeature.setStyle(this.bufferStyle);
|
|
396
|
-
bufferFeatureExists
|
|
397
|
-
? bufferFeature.setGeometry(bufferGeometry)
|
|
398
|
-
: this.geolocationOverlay.addOlFeature(bufferFeature, FeatureMotion.None);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
handleViewFromFeatures(position, zoomTo = false) {
|
|
403
|
-
const positionFeature = this.getFeatureByType(GeolocationOverlayType.Position);
|
|
404
|
-
const positionFeatureArrow = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
|
|
405
|
-
const accuracyFeature = this.getFeatureByType(GeolocationOverlayType.Accuracy);
|
|
406
|
-
const bufferFeature = this.getFeatureByType(GeolocationOverlayType.Buffer);
|
|
407
|
-
const features = [
|
|
408
|
-
positionFeature,
|
|
409
|
-
positionFeatureArrow,
|
|
410
|
-
accuracyFeature,
|
|
411
|
-
bufferFeature
|
|
412
|
-
].filter((f) => f);
|
|
413
|
-
if (features.length > 0) {
|
|
414
|
-
const featuresExtent = computeOlFeaturesExtent(features, this.map.viewProjection);
|
|
415
|
-
const edgeRatios = position?.speed > 12.5
|
|
416
|
-
? [0.25, 0.25, 0.25, 0.25]
|
|
417
|
-
: [0.15, 0.1, 0.1, 0.1];
|
|
418
|
-
const areOutOfView = featuresAreOutOfView(this.map.getExtent(), featuresExtent, edgeRatios);
|
|
419
|
-
let motion = this.followPosition && areOutOfView
|
|
420
|
-
? FeatureMotion.Move
|
|
421
|
-
: FeatureMotion.None;
|
|
422
|
-
if (zoomTo) {
|
|
423
|
-
motion = FeatureMotion.Zoom;
|
|
424
|
-
}
|
|
425
|
-
motion !== FeatureMotion.None
|
|
426
|
-
? moveToOlFeatures(this.map.viewController, features, motion)
|
|
427
|
-
: undefined;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUErSi9DO0lBQ0E7SUFDQTtJQUNBO0lBaktGLGFBQWEsQ0FBUztJQUN0QixlQUFl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LFVBQVUsR0FDZCxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQ3BCLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztZQUNGLElBQUksTUFBTSxHQUNSLElBQUksQ0FBQyxjQUFjLElBQUksWUFBWTtnQkFDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2dCQUNwQixDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IG9sR2VvbG9jYXRpb24gZnJvbSAnb2wvR2VvbG9jYXRpb24nO1xuaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgeyBQb2ludCwgUG9seWdvbiB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0ICogYXMgb2xTcGhlcmUgZnJvbSAnb2wvc3BoZXJlJztcbmltcG9ydCAqIGFzIG9sc3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXG4gIGZlYXR1cmVzQXJlT3V0T2ZWaWV3LFxuICBoaWRlT2xGZWF0dXJlLFxuICBtb3ZlVG9PbEZlYXR1cmVzXG59IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUudXRpbHMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi4vbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IE1hcFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vbWFwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEdlb2xvY2F0aW9uQnVmZmVyLFxuICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLFxuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxuICBNYXBHZW9sb2NhdGlvblN0YXRlXG59IGZyb20gJy4vZ2VvbG9jYXRpb24uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xuICBwcml2YXRlIGFycm93Um90YXRpb246IG51bWJlcjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgZ2VvbG9jYXRpb25PdmVybGF5OiBPdmVybGF5O1xuICBwcml2YXRlIHBvc2l0aW9uRmVhdHVyZVN0eWxlOiBvbHN0eWxlLlN0eWxlIHwgb2xzdHlsZS5TdHlsZVtdID1cbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgcmFkaXVzOiA2LFxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICBjb2xvcjogJyMzMzk5Q0MnXG4gICAgICAgIH0pLFxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICB3aWR0aDogMlxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KTtcbiAgcHJpdmF0ZSBhY2N1cmFjeUZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XG4gICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KScsXG4gICAgICAgIHdpZHRoOiAxXG4gICAgICB9KSxcbiAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KSdcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgcHJpdmF0ZSBnZXQgYnVmZmVyU3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHsgd2lkdGg6IDIsIGNvbG9yOiB0aGlzLmJ1ZmZlci5idWZmZXJTdHJva2UgfSksXG4gICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHsgY29sb3I6IHRoaXMuYnVmZmVyLmJ1ZmZlckZpbGwgfSksXG4gICAgICB0ZXh0OiBuZXcgb2xzdHlsZS5UZXh0KHtcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgIG9mZnNldFg6IDEwLFxuICAgICAgICBvZmZzZXRZOiAtMTAsXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXG4gICAgICAgIHRleHQ6IHRoaXMuYnVmZmVyLnNob3dCdWZmZXJSYWRpdXNcbiAgICAgICAgICA/IGAke3RoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c31tYFxuICAgICAgICAgIDogJycsXG4gICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoeyBjb2xvcjogJyMwMDAnIH0pLFxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0pXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXJyb3dTdHlsZSgpOiBvbHN0eWxlLlN0eWxlIHtcbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XG4gICAgICAgIHJhZGl1czogNS41LFxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTMyLCAyMDIpJ1xuICAgICAgICB9KSxcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgICAgICAgd2lkdGg6IDEuNVxuICAgICAgICB9KSxcbiAgICAgICAgcG9pbnRzOiAzLFxuICAgICAgICBkaXNwbGFjZW1lbnQ6IFswLCA5XSxcbiAgICAgICAgcm90YXRpb246IHRoaXMuYXJyb3dSb3RhdGlvbixcbiAgICAgICAgcm90YXRlV2l0aFZpZXc6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlb2xvY2F0aW9uOiBvbEdlb2xvY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IGVtaXNzaW9uIGludGVydmFsIG9mIHRoZSBwb3NpdGlvbi4gSW4gc2Vjb25kc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVtaXNzaW9uSW50ZXJ2YWxTZWNvbmRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig1KTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwR2VvbG9jYXRpb25TdGF0ZT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSB0cmFja2luZyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYWNraW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGZvbGxvdyBwb3NpdGlvbiBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvbGxvd1Bvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIGxhc3RQb3NpdGlvbjogeyBjb29yZGluYXRlczogbnVtYmVyW107IGRhdGVUaW1lOiBEYXRlIH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdlb2xvY2F0ZSBzaG91bGQgc2hvdyBhIGJ1ZmZlciBhcm91bmQgdGhlIGN1cnJlbnQgcG9zaXRpb25cbiAgICovXG4gIHNldCBidWZmZXIodmFsdWU6IEdlb2xvY2F0aW9uQnVmZmVyKSB7XG4gICAgdGhpcy5fYnVmZmVyID0gdmFsdWU7XG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24odGhpcy5wb3NpdGlvbiQudmFsdWUpO1xuICB9XG4gIGdldCBidWZmZXIoKTogR2VvbG9jYXRpb25CdWZmZXIge1xuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XG4gIH1cbiAgcHJpdmF0ZSBfYnVmZmVyOiBHZW9sb2NhdGlvbkJ1ZmZlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2VvbG9jYXRlIGNvbnRyb2xsZXIgYWNjdXJhY3kgdGhyZXNob2xkIHRvIHN0b3JlL3Nob3cgdGhlIHBvc2l0aW9uLlxuICAgKi9cbiAgc2V0IGFjY3VyYWN5VGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9IHZhbHVlO1xuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY2N1cmFjeVRocmVzaG9sZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZDtcbiAgfVxuICBwcml2YXRlIF9hY2N1cmFjeVRocmVzaG9sZDtcblxuICBnZXQgb2xHZW9sb2NhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgZ2VvbG9jYXRpb24uXG4gICAqL1xuICBnZXQgdHJhY2tpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb24uZ2V0VHJhY2tpbmcoKTtcbiAgfVxuXG4gIHNldCB0cmFja2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZ2VvbG9jYXRpb24uc2V0VHJhY2tpbmcodmFsdWUgfHwgZmFsc2UpO1xuICAgIHRoaXMudHJhY2tpbmckLm5leHQodmFsdWUpO1xuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdnZW9sb2NhdGlvbi50cmFja2luZycsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgdmlldyB0cmFja2luZyBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxuICAgKi9cbiAgc2V0IGZvbGxvd1Bvc2l0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uJC5uZXh0KHZhbHVlKTtcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlPy5nZXRDb25maWcoJ2dlb2xvY2F0ZS5mb2xsb3dQb3NpdGlvbicpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZm9sbG93UG9zaXRpb24kLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2dlb2xvY2F0aW9uLmZvbGxvd1Bvc2l0aW9uJywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmb2xsb3dQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9sbG93UG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIF9mb2xsb3dQb3NpdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcDogTWFwQmFzZSxcbiAgICBwcml2YXRlIG9wdGlvbnM/OiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U/OiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U/OiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzLm1hcCk7XG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxuICAgICAgICA/IHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgdGhpcy5fYnVmZmVyID1cbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYnVmZmVyID8gdGhpcy5vcHRpb25zLmJ1ZmZlciA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9XG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXG4gICAgICAgIDogNTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgb3IgcmVtb3ZlIHRoaXMgY29udHJvbGxlciB0by9mcm9tIGEgbWFwLlxuICAgKiBAcGFyYW0gbWFwIE9MIE1hcFxuICAgKi9cbiAgc2V0T2xNYXAob2xNYXA6IE9sTWFwIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIuc2V0T2xNYXAob2xNYXApO1xuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpIHtcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb24pO1xuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5KTtcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xuICB9XG5cbiAgc2V0dXBPYnNlcnZlcnMoKSB7XG4gICAgdGhpcy50cmFja2luZyQuc3Vic2NyaWJlKCh0cmFja2luZykgPT4ge1xuICAgICAgaWYgKHRyYWNraW5nKSB7XG4gICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nZW9sb2NhdGlvbiA9IG5ldyBvbEdlb2xvY2F0aW9uKHtcbiAgICAgIC8vIGVuYWJsZUhpZ2hBY2N1cmFjeSBtdXN0IGJlIHNldCB0byB0cnVlIHRvIGhhdmUgdGhlIGhlYWRpbmcgdmFsdWUuXG4gICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlLFxuICAgICAgICBtYXhpbXVtQWdlOiAxMDAwMCxcbiAgICAgICAgdGltZW91dDogNjAwMDAwXG4gICAgICB9LFxuICAgICAgcHJvamVjdGlvbjogdGhpcy5vcHRpb25zLnByb2plY3Rpb25cbiAgICB9KTtcbiAgICBsZXQgdHJhY2tpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxuICAgICAgdGhpcy5lbWlzc2lvbkludGVydmFsU2Vjb25kcyRcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCh2YWx1ZSkgPT4gaW50ZXJ2YWwodmFsdWUgKiAxMDAwKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0cmFja2luZyA9PT0gdGhpcy50cmFja2luZykge1xuICAgICAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFja2luZyA9IHRoaXMudHJhY2tpbmc7XG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmdlb2xvY2F0aW9uLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UoZmFsc2UsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUFycm93RmVhdHVyZU9yaWVudGF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XG4gICAgY29uc3QgcG9zaXRpb240MzI2ID0gb2xwcm9qLnRyYW5zZm9ybShcbiAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24ucHJvamVjdGlvbixcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKTtcbiAgICBpZiAoIXRoaXMubGFzdFBvc2l0aW9uKSB7XG4gICAgICB0aGlzLmxhc3RQb3NpdGlvbiA9IHsgY29vcmRpbmF0ZXM6IHBvc2l0aW9uNDMyNiwgZGF0ZVRpbWU6IG5ldyBEYXRlKCkgfTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXJyb3dGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxuICAgICk7XG4gICAgY29uc3QgaXNNb3ZpbmcgPVxuICAgICAgcG9zaXRpb24/LnNwZWVkID4gMS4yNSAmJlxuICAgICAgdGhpcy5kaXN0YW5jZUJldHdlZW5Qb2ludHModGhpcy5sYXN0UG9zaXRpb24uY29vcmRpbmF0ZXMsIHBvc2l0aW9uNDMyNikgPlxuICAgICAgICAwLjAwMztcbiAgICBpZiAocG9zaXRpb24uYWNjdXJhY3kgPD0gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCAmJiBpc01vdmluZykge1xuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWFkaW5nIHVzaW5nIGN1cnJlbnQgcG9zaXRpb24gYW5kIGxhc3QgcmVjb3JkZWRcbiAgICAgIC8vIGJlY2F1c2Ugb2wgaGVhZGluZyBub3QgcmV0dXJuaW5nIHJpZ2h0IHZhbHVlXG4gICAgICBjb25zdCBkeCA9IHBvc2l0aW9uNDMyNlsxXSAtIHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzWzFdO1xuICAgICAgY29uc3QgZHkgPSBwb3NpdGlvbjQzMjZbMF0gLSB0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlc1swXTtcbiAgICAgIGxldCB0aGV0YSA9IE1hdGguYXRhbjIoZHksIGR4KTtcbiAgICAgIGlmICh0aGV0YSA8IDApIHRoZXRhID0gMiAqIE1hdGguUEkgKyB0aGV0YTtcbiAgICAgIHRoaXMuYXJyb3dSb3RhdGlvbiA9IHRoZXRhO1xuICAgICAgaWYgKGFycm93RmVhdHVyZSkge1xuICAgICAgICBhcnJvd0ZlYXR1cmUuc2V0U3R5bGUodGhpcy5hcnJvd1N0eWxlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdFBvc2l0aW9uID0geyBjb29yZGluYXRlczogcG9zaXRpb240MzI2LCBkYXRlVGltZTogbmV3IERhdGUoKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIGFycm93RmVhdHVyZSAmJlxuICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFBvc2l0aW9uLmRhdGVUaW1lLmdldFRpbWUoKSA+IDMwMDBcbiAgICAgIClcbiAgICAgICAgaGlkZU9sRmVhdHVyZShhcnJvd0ZlYXR1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBkaXN0YW5jZSBpbiBrbSBiZXR3ZWVuIGNvb3JkMSBhbmQgY29vcmQyXG4gICAqL1xuICBwcml2YXRlIGRpc3RhbmNlQmV0d2VlblBvaW50cyhjb29yZDE6IG51bWJlcltdLCBjb29yZDI6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gb2xTcGhlcmUuZ2V0RGlzdGFuY2UoY29vcmQxLCBjb29yZDIpIC8gMTAwMDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRPbkNoYW5nZWRMaXN0ZW5lcihldmVudDogKGdlbzogb2xHZW9sb2NhdGlvbikgPT4gYW55KSB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBldmVudCh0aGlzLmdlb2xvY2F0aW9uKTtcbiAgICB9O1xuICAgIHRoaXMuZ2VvbG9jYXRpb24ub24oJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gbGlzdGVuZXI7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQ2hhbmdlZExpc3RlbmVyKGV2ZW50OiAoKSA9PiBhbnkpIHtcbiAgICB0aGlzLmdlb2xvY2F0aW9uLnVuKCdjaGFuZ2UnLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlR2VvbG9jYXRpb25PcHRpb25zKG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHRvZG8gbWF5YmUgYSBkZWRpY2F0ZWQgaW50ZXJmYWNlIGZvciBnZW9sb2NhdGlvbiBzaG91bGQgYmUgZGVmaW5lZCBpbnN0ZWFkIG9mIHB1dHRpbmcgdGhlc2UgaW5zaWRlIHRoZSBtYXB2aWV3b3B0aW9ucz9cbiAgICBsZXQgdHJhY2tpbmcgPSBvcHRpb25zLmdlb2xvY2F0ZTtcbiAgICBsZXQgZm9sbG93UG9zaXRpb24gPSBvcHRpb25zLmFsd2F5c1RyYWNraW5nO1xuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBzdG9yZWRUcmFja2luZyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgICAnZ2VvbG9jYXRpb24udHJhY2tpbmcnXG4gICAgICApIGFzIGJvb2xlYW47XG4gICAgICBpZiAoc3RvcmVkVHJhY2tpbmcgIT09IG51bGwgJiYgc3RvcmVkVHJhY2tpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0cmFja2luZyA9IHN0b3JlZFRyYWNraW5nO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdG9yZWRGb2xsb3dQb3NpdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgICAnZ2VvbG9jYXRpb24uZm9sbG93UG9zaXRpb24nXG4gICAgICApIGFzIGJvb2xlYW47XG4gICAgICBpZiAoc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IG51bGwgJiYgc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb2xsb3dQb3NpdGlvbiA9IHN0b3JlZEZvbGxvd1Bvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnRyYWNraW5nID0gdHJhY2tpbmc7XG4gICAgdGhpcy5mb2xsb3dQb3NpdGlvbiA9IGZvbGxvd1Bvc2l0aW9uO1xuICAgIHRoaXMuYnVmZmVyID0gb3B0aW9ucy5idWZmZXI7XG4gIH1cblxuICAvKipcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xuICAgKi9cbiAgdGVhcmRvd25PYnNlcnZlcnMoKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucyQkLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICBzdXBlci50ZWFyZG93bk9ic2VydmVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHBvc2l0aW9uIGNoYW5nZSwgZ2V0IHRoZSBwb3NpdGlvbiwgc2hvdyBpdCBvbiB0aGUgbWFwIGFuZCByZWNvcmQgaXQuXG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgTWFwIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uUG9zaXRpb25DaGFuZ2UoZW1pdEV2ZW50ID0gZmFsc2UsIHpvb21UbyA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLnRyYWNraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlb2xvY2F0ZVByb3BlcnRpZXMgPSB0aGlzLmdlb2xvY2F0aW9uLmdldFByb3BlcnRpZXMoKTtcblxuICAgIGlmIChnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5ID4gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCkge1xuICAgICAgY29uc29sZS53YXJuKCdQb29yIGdlb2xvY2F0aW9uIGFjY3VyYWN5LiBObyBwb3NpdGlvbiBhcmUgc3RvcmVkL3Nob3duJyk7XG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUgPSB7XG4gICAgICBwb3NpdGlvbjogZ2VvbG9jYXRlUHJvcGVydGllcy5wb3NpdGlvbixcbiAgICAgIHByb2plY3Rpb246IHRoaXMuZ2VvbG9jYXRpb24uZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKSxcbiAgICAgIGFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5LFxuICAgICAgYWx0aXR1ZGU6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWx0aXR1ZGUsXG4gICAgICBhbHRpdHVkZUFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlQWNjdXJhY3ksXG4gICAgICBoZWFkaW5nOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmhlYWRpbmcsXG4gICAgICBzcGVlZDogZ2VvbG9jYXRlUHJvcGVydGllcy5zcGVlZCxcbiAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy50cmFja2luZ09wdGlvbnNcbiAgICAgICAgPy5lbmFibGVIaWdoQWNjdXJhY3lcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2UsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uKTtcbiAgICB0aGlzLmhhbmRsZVZpZXdGcm9tRmVhdHVyZXMocG9zaXRpb24sIHpvb21Ubyk7XG4gICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dChwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQnlUeXBlKHR5cGU6IEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUpOiBvbEZlYXR1cmU8R2VvbWV0cnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZCh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRmVhdHVyZUJ5VHlwZSh0eXBlOiBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlKSB7XG4gICAgY29uc3QgZmVhdHVyZUJ5SWQgPVxuICAgICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXk/LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQodHlwZSk7XG4gICAgaWYgKGZlYXR1cmVCeUlkKSB7XG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5kYXRhU291cmNlLm9sLnJlbW92ZUZlYXR1cmUoZmVhdHVyZUJ5SWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XG4gICAgaWYgKCFwb3NpdGlvbiB8fCAhcG9zaXRpb24ucG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb25HZW9tZXRyeSA9IG5ldyBQb2ludChwb3NpdGlvbi5wb3NpdGlvbik7XG4gICAgY29uc3QgYWNjdXJhY3lHZW9tZXRyeSA9IGZyb21DaXJjbGUoXG4gICAgICBuZXcgT2xDaXJjbGUocG9zaXRpb24ucG9zaXRpb24sIHBvc2l0aW9uLmFjY3VyYWN5IHx8IDApXG4gICAgKTtcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxuICAgICk7XG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxuICAgICk7XG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3lcbiAgICApO1xuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUV4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcbiAgICBjb25zdCBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZUFycm93ID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGNvbnN0IGFjY3VyYWN5RmVhdHVyZUV4aXN0cyA9IGFjY3VyYWN5RmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzKSB7XG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHtcbiAgICAgICAgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnlcbiAgICAgIH0pO1xuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3cuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvbik7XG4gICAgICBoaWRlT2xGZWF0dXJlKHBvc2l0aW9uRmVhdHVyZUFycm93KTtcbiAgICB9XG4gICAgaWYgKCFwb3NpdGlvbkZlYXR1cmVFeGlzdHMpIHtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHsgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnkgfSk7XG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0U3R5bGUodGhpcy5wb3NpdGlvbkZlYXR1cmVTdHlsZSk7XG4gICAgfVxuICAgIGlmICghYWNjdXJhY3lGZWF0dXJlRXhpc3RzKSB7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlPFBvbHlnb24+KHsgZ2VvbWV0cnk6IGFjY3VyYWN5R2VvbWV0cnkgfSk7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeSk7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0U3R5bGUodGhpcy5hY2N1cmFjeUZlYXR1cmVTdHlsZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uR2VvbWV0cnkpIHtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUV4aXN0c1xuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZS5zZXRHZW9tZXRyeShwb3NpdGlvbkdlb21ldHJ5KVxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcbiAgICAgICAgICAgIHBvc2l0aW9uRmVhdHVyZSxcbiAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxuICAgICAgICAgICk7XG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0c1xuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZUFycm93LnNldEdlb21ldHJ5KHBvc2l0aW9uR2VvbWV0cnkpXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxuICAgICAgICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3csXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICApO1xuICAgICAgdGhpcy51cGRhdGVBcnJvd0ZlYXR1cmVPcmllbnRhdGlvbihwb3NpdGlvbik7XG4gICAgICBhY2N1cmFjeUZlYXR1cmVFeGlzdHNcbiAgICAgICAgPyBhY2N1cmFjeUZlYXR1cmUuc2V0R2VvbWV0cnkoYWNjdXJhY3lHZW9tZXRyeSlcbiAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXG4gICAgICAgICAgICBhY2N1cmFjeUZlYXR1cmUsXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICApO1xuXG4gICAgICBpZiAodGhpcy5idWZmZXIpIHtcbiAgICAgICAgbGV0IGJ1ZmZlckZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYnVmZmVyRmVhdHVyZUV4aXN0cyA9IGJ1ZmZlckZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IGJ1ZmZlckdlb21ldHJ5ID0gbmV3IE9sQ2lyY2xlKFxuICAgICAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxuICAgICAgICAgIHRoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c1xuICAgICAgICApO1xuICAgICAgICBpZiAoIWJ1ZmZlckZlYXR1cmVFeGlzdHMpIHtcbiAgICAgICAgICBidWZmZXJGZWF0dXJlID0gbmV3IG9sRmVhdHVyZShidWZmZXJHZW9tZXRyeSk7XG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJGZWF0dXJlLnNldFN0eWxlKHRoaXMuYnVmZmVyU3R5bGUpO1xuICAgICAgICBidWZmZXJGZWF0dXJlRXhpc3RzXG4gICAgICAgICAgPyBidWZmZXJGZWF0dXJlLnNldEdlb21ldHJ5KGJ1ZmZlckdlb21ldHJ5KVxuICAgICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxuICAgICAgICAgICAgICBidWZmZXJGZWF0dXJlLFxuICAgICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhbmRsZVZpZXdGcm9tRmVhdHVyZXMocG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUsIHpvb21UbyA9IGZhbHNlKSB7XG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxuICAgICk7XG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlQXJyb3cgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXG4gICAgKTtcbiAgICBjb25zdCBhY2N1cmFjeUZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5XG4gICAgKTtcbiAgICBjb25zdCBidWZmZXJGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IFtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSxcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LFxuICAgICAgYWNjdXJhY3lGZWF0dXJlLFxuICAgICAgYnVmZmVyRmVhdHVyZVxuICAgIF0uZmlsdGVyKChmKSA9PiBmKTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmVhdHVyZXNFeHRlbnQgPSBjb21wdXRlT2xGZWF0dXJlc0V4dGVudChcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgIHRoaXMubWFwLnZpZXdQcm9qZWN0aW9uXG4gICAgICApO1xuICAgICAgY29uc3QgZWRnZVJhdGlvcyA9XG4gICAgICAgIHBvc2l0aW9uPy5zcGVlZCA+IDEyLjVcbiAgICAgICAgICA/IFswLjI1LCAwLjI1LCAwLjI1LCAwLjI1XVxuICAgICAgICAgIDogWzAuMTUsIDAuMSwgMC4xLCAwLjFdO1xuICAgICAgY29uc3QgYXJlT3V0T2ZWaWV3ID0gZmVhdHVyZXNBcmVPdXRPZlZpZXcoXG4gICAgICAgIHRoaXMubWFwLmdldEV4dGVudCgpLFxuICAgICAgICBmZWF0dXJlc0V4dGVudCxcbiAgICAgICAgZWRnZVJhdGlvc1xuICAgICAgKTtcbiAgICAgIGxldCBtb3Rpb24gPVxuICAgICAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uICYmIGFyZU91dE9mVmlld1xuICAgICAgICAgID8gRmVhdHVyZU1vdGlvbi5Nb3ZlXG4gICAgICAgICAgOiBGZWF0dXJlTW90aW9uLk5vbmU7XG4gICAgICBpZiAoem9vbVRvKSB7XG4gICAgICAgIG1vdGlvbiA9IEZlYXR1cmVNb3Rpb24uWm9vbTtcbiAgICAgIH1cbiAgICAgIG1vdGlvbiAhPT0gRmVhdHVyZU1vdGlvbi5Ob25lXG4gICAgICAgID8gbW92ZVRvT2xGZWF0dXJlcyh0aGlzLm1hcC52aWV3Q29udHJvbGxlciwgZmVhdHVyZXMsIG1vdGlvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './controller';
|
|
2
|
-
export * from './geolocation';
|
|
3
|
-
export * from './geolocation.interface';
|
|
4
|
-
export * from './view';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9sb2NhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xuIl19
|